Quiero que los usuarios vengan y acumulen tokens en mi sitio web. Seguí los documentos de Solana y encontré el siguiente código en la sección del cliente Javascript.
var web3Connection = new web3.Connection( web3.clusterApiUrl("devnet"), 'confirmed', ); // Generate a new wallet keypair and airdrop SOL var fromWallet = web3.Keypair.generate(); var fromAirdropSignature = await web3Connection.requestAirdrop( fromWallet.publicKey, web3.LAMPORTS_PER_SOL, ); //wait for airdrop confirmation await web3Connection.confirmTransaction(fromAirdropSignature); //create new token mint let mint = await splToken.Token.createMint( web3Connection, fromWallet, fromWallet.publicKey, null, 9, splToken.TOKEN_PROGRAM_ID, );Por favor, corríjame si está mal. Creo que, idealmente, debería crear la billetera y el par de claves desde CLI y luego usarlos a través de variables env o alguna configuración segura en código para acuñar, transferir. etc.
Si lo anterior es correcto, ¿cómo puedo crear el objeto web3.Keypair con mis valores secretos y clave pública existentes en lugar de generar uno aleatorio?
Puede crear una instancia de Keypair usando fromSecretKey y pasando la matriz de bytes de su archivo de keypair: https://solana-labs.github.io/solana-web3.js/classes/Keypair.html#fromSecretKey
Hay un buen ejemplo que hace exactamente eso: https://github.com/solana-labs/solana/blob/b16f2da44414be6f211352ed336812131622bae7/docs/src/developing/clients/javascript-reference.md#example-usage-2
Cree un nuevo archivo para generar la clave pública, llámelo createKey.js (o relacionado). Usa este sencillo código:
const fs = require('fs') const anchor = require('@project-serum/anchor') const account = anchor.web3.Keypair.generate() fs.writeFileSync('./keypair.json', JSON.stringify(account)) Dentro de su cliente de JavaScript, puede extraer esta clave utilizando el método fromSecretKey .
import keyPair from './keypair.json'; const tempArraySecret = Object.values(keyPair._keypair.secretKey); const secret = new Uint8Array(tempArraySecret) const account = web3.Keypair.fromSecretKey(secret);