I am trying to send 1 solana
I have this code
But it throws an error: Uncaught (in promise) TypeError: y.pubkey.toBase58 is not a function at transaction.ts:264:33
Help solve this 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);
}
}
i think the problem is in this line let signed = await provider.signTransaction(transaction);
The problem is that your publicKey
variable is a string and not a PublicKey
, so when trying to compile your transaction, the compilation fails with the TypeError: y.pubkey.toBase58 is not a function at transaction.ts:264:33
.
Instead, you can do:
publicKey = resp.publicKey;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.