【发布时间】:2023-02-01 20:31:44
【问题描述】:
我正在尝试在我的应用程序中为 phantom 实现 sendtransaction。
这是我的代码:
sendTransaction(amount, depositWallet) { (async () => {
try {
const resp = await window.solana.connect();
this.wallet = resp;
this.signInTransactionAndSendMoney(amount, depositWallet);
console.log(amount, depositWallet)
} catch (err) {
console.log(err);
}
})();
},
signInTransactionAndSendMoney(amount, depositWallet) {
(async () => {
try {
const network = "https://api.mainnet-beta.solana.com";
const connection = new solanaWeb3.Connection(network);
const candidate = amount * solanaWeb3.LAMPORTS_PER_SOL;
const destPubkey = new solanaWeb3.PublicKey(depositWallet);
const instruction = solanaWeb3.SystemProgram.transfer({
fromPubkey: this.wallet.publicKey,
toPubkey: destPubkey,
lamports: candidate,
});
const trans = await this.setWalletTransaction(instruction, connection);
const signature = await this.signAndSendTransaction(this.wallet, trans, connection);
} catch (err) {
console.log(err);
}
})();
},
async setWalletTransaction(instruction, connection) {
const transaction = new solanaWeb3.Transaction();
transaction.add(instruction);
transaction.feePayer = this.wallet.publicKey;
const hash = await connection.getLatestBlockhash();
console.log(hash)
transaction.recentBlockhash = hash.blockhash;
return transaction;
},
async signAndSendTransaction(wallet, transaction, connection) {
// Sign transaction, broadcast, and confirm
const { signature } = await window.solana.signAndSendTransaction(transaction);
await connection.confirmTransaction(signature);
return signature;
},
但是当我尝试发送交易时我收到一个错误错误:无法获取最近的区块哈希:错误:403:{“jsonrpc”:“2.0”,“错误”:{“代码”:403,“消息”:“访问禁止,请联系您的应用程序开发人员或 support@rpcpool.com。"}, "id": "001d039f-ad38-4942-a379-5db2f7951ebf" }
【问题讨论】:
-
与缓冲区有什么关系吗?我用 import * as buffer from "buffer" 修复了它; window.Buffer = 缓冲区.Buffer;