我想开发索拉纳,但是.我喜欢了解我在做什么。我看了一下文档,我无法理解solana-keygen
是如何工作的。我非常努力地从同样的记忆中复制同样的公共演讲,但似乎没有什么效果。有人知道地址是如何产生的吗?如果您有私钥,则无需使用@solana/web3库即可获得公共密钥。
import * as Bip39 from 'bip39'
import { Keypair } from "@solana/web3.js";
const seed: Buffer Bip39.mnemonicToSeedSync("title spell imitate observe kidney ready interest border inject quiz misery motor")
const derivedSeed = ed25519.derivePath("m/44'/501'/0'/0'", seed.toString('hex')).key;
const keyPair = Keypair.fromSeed(derivedSeed)
console.log(keyPair.publicKey.toString())
这段代码运行良好,所以如果我转到https://solflare.com/access
并尝试插入mnemonic
,我可以看到地址。
但是,事实上,solana-keygen
把这个地址还给了我:nsaayLiawKPiui9fWYCpRdYkdKeqj2fNn9u8LjauEkn
这是一个样品钱包。可以自由地用这个参数进行实验。
,请不要资助这个钱包。
怎么可能得到solana-keygen
给我的同一个地址呢?
我已经尝试在ed25519, pbkd2,
上传递所有可能的参数,但是在这个过程中我似乎遗漏了一些东西。
发布于 2022-06-14 15:13:56
var bip39 = require('bip39');
var ed25519 = require('ed25519-hd-key');
var solanaWeb3 = require("@solana/web3.js");
从助记符中获得主种子:
masterSeed = bip39.mnemonicToSeedSync(seedPhrase, passPhrase);
获取派生的Solana地址种子:
var index = 0;
var derivedPath = "m/44'/501'/" + index +"'/0'";
const derivedSeed = ed25519HdKey.derivePath(derivedPath, masterSeed.toString('hex')).key;
拿上键盘:
keypair = solanaWeb3.Keypair.fromSeed(derivedSeed);
拿到钱包地址和密匙:
walletAddr = keypair.publicKey.toBase58();
secretKey = keypair.secretKey;
注意:若要在浏览器中运行此操作,请按以下方式使用browserify:
例如:
创建一个文件,bip39-input.js
var bip39 = require('bip39');
创建浏览器化包:
browserify bip39-input.js -r bip39 -s bip39 \
--exclude=./wordlists/english.json \
--exclude=./wordlists/japanese.json \
--exclude=./wordlists/spanish.json \
--exclude=./wordlists/italian.json \
--exclude=./wordlists/french.json \
--exclude=./wordlists/korean.json \
--exclude=./wordlists/czech.json \
--exclude=./wordlists/portuguese.json \
--exclude=./wordlists/chinese_traditional.json \
-o bip39-bundle.js
将bip39-bundle.js
文件放置在script
标记中。
发布于 2022-01-26 03:51:59
其实我以前也遇到过同样的问题。我现在还没搞清楚。但我用另一种方法来解决问题。基本上,我使用solana-keygen recover 'prompt://?key=0/0' -o file.json
将键盘恢复为json。然后打开文件,将私钥复制回代码,并使用let secretKey = Uint8Array.from(private key)
进行解压缩。您可以从我的博客https://medium.com/@lianxiongdi/solana-web3-tutorial-2-connect-your-web3-program-to-wallet-39b335f4b4b中找到详细信息。
发布于 2022-11-05 14:24:55
您的问题是,solana-keygen new
不使用ed25519HdKey派生路径,它只是从种子中分割出32个字节,然后从种子中生成键盘。别担心,我和你一样遇到了同样的麻烦。
import bip39 from 'bip39'
import solanaWeb3, { Keypair } from '@solana/web3.js'
async function getKeyCreatedBySolanaKeygenFromMnemonic(mnemonic, password) {
const pass = ''
const seed = await bip39.mnemonicToSeed(mnemonic, pass)
let derivedSeed = seed.subarray(0, 32);
const kp = Keypair.fromSeed(derivedSeed);
return kp;
}
async function main() {
const mnemonic = "title spell imitate observe kidney ready interest border inject quiz misery motor"
const kp = await getKeyCreatedBySolanaKeygenFromMnemonic(mnemonic);
console.log('Public key derived from solana-keygen new mnemonic:', kp.publicKey.toBase58())
}
main();
输出:从solana派生的公钥-keygen新助记符:nsaayLiawKPiui9fWYCpRdYkdKeqj2fNn9u8LjauEkn
https://stackoverflow.com/questions/70708923
复制相似问题