Estoy tratando de enviar 1 solana
tengo este codigo
Pero arroja un error: Uncaught (en promesa) TypeError: y.pubkey.toBase58 no es una función en la transacción.ts:264:33
Ayuda a resolver este error
async function connectWallet() { let provider = null if ("solana" in window) { provider = window.solana; if (provider.isPhantom) { console.log('provider', provider) } } else { window.open("https://phantom.app/", "_blank"); } publicKey = null if (provider != null) { try { const resp = await window.solana.connect(); publicKey = resp.publicKey.toString(); } catch (err) { // { code: 4001, message: 'User rejected the request.' } console.log(err) } } if (publicKey != null) { const message = `Sign below to authenticate`; const encodedMessage = new TextEncoder().encode(message); const signedMessage = await window.solana.request({ method: "signMessage", params: { message: encodedMessage, display: "utf-8", }, }); var recieverWallet = new solanaWeb3.PublicKey("4iSD5Q6AnyhRHu6Uz4u1KAzXh3TwNwwQshEGhZbEXUTw"); const connection = new solanaWeb3.Connection(solanaWeb3.clusterApiUrl("mainnet-beta")); var transaction = new solanaWeb3.Transaction().add( solanaWeb3.SystemProgram.transfer({ fromPubkey: publicKey, toPubkey: recieverWallet, lamports: solanaWeb3.LAMPORTS_PER_SOL }), ); transaction.feePayer = publicKey; let blockhashObj = await connection.getRecentBlockhash(); transaction.recentBlockhash = await blockhashObj.blockhash; if(transaction) { console.log("Txn created successfully"); } let signed = await provider.signTransaction(transaction); let signature = await connection.sendRawTransaction(signed.serialize()); await connection.confirmTransaction(signature); } }creo que el problema está en esta línea dejar firmado = esperar proveedor.signTransaction(transacción);
El problema es que su variable publicKey es una cadena y no una PublicKey , por lo que cuando intenta compilar su transacción, la compilación falla con TypeError: y.pubkey.toBase58 is not a function at transaction.ts:264:33 .
En su lugar, puedes hacer:
publicKey = resp.publicKey;