Estoy trabajando con solana y phantom wallet. Tengo una wallet con clave pública y tengo su frase secreta compuesta por 12 wordw. cuando genero pares de claves a partir de la frase secreta que uso:
const getKeyPair = (mnemomic) => { const seed = bip39.mnemonicToSeedSync(mnemomic).slice(0, 32); const Keypair = web3.Keypair.fromSeed(seed); return Keypair; };el par de claves generado tiene publicKey y privateKey , pero cuando reviso mi saldo usando la clave pública generada, encuentro que el saldo siempre es 0, incluso cuando trato de lanzar soles usando mi código, no entra en la cuenta.
Pero si verifico usando mi clave pública de la billetera fantasma, obtengo los soles que tengo y si quiero lanzar soles desde el aire, también proceden normalmente.
¿Por qué mi clave pública generada no es la misma que la de la billetera fantasma?
Primero, necesitamos generar la clave pública y la clave privada a partir de la frase semilla usando este comando:
solana-keygen recupera 'prompt:?key=0/0' -o phantom_wallet.json
observación: nuestra cuenta puede tener muchas billeteras, el comando anterior accede a la primera billetera, si necesitamos acceder a la billetera número 10, por ejemplo, debemos cambiar el 'prompt:?key=0/0' a 'prompt:?key=10/ 0' "solo cambia el primer 0"
a continuación, esto generará una clave pública "se escribirá en la consola" y un archivo json con clave secreta contiene una matriz de 64 elementos que es la clave secreta . ahora para generar los KEYPAIRS en solana web3 javascript SDK hacemos lo siguiente:
let seed = Uint8Array.from( process.env.REACT_APP_OUR_SECRET_KEY.split(",") ).slice(0, 32); // create keypairs let KEYPAIRS = web3.Keypair.fromSeed(seed);IMPORTANTE: en los archivos .env REACT_APP_OUR_SECRET_KEY se almacena sin corchetes [] ejemplo: 15,320,52,... como vemos una tabla sin corchetes []
solana-keygen recover 'prompt:?key=0/0' -o phantom_wallet.json