gpt4 book ai didi

javascript - 如何通过 Phantom 钱包集成使用 Vanilla JS 和 JSON-RPC 获取 Solana 帐户信息和/或 SOL 余额?

转载 作者:行者123 更新时间:2023-12-03 08:15:19 103 4
gpt4 key购买 nike

以下 Vanilla JS 示例通过 Phantom 钱包连接到 Solana 区 block 链并断开连接。

连接成功并获取公共(public)地址。

尝试使用 JSON-RPC 请求获取钱包余额和帐户信息时失败。

如果有人可以帮助解决这个问题,我们将为我们这些希望尽可能保持 Vanilla 风格的人提供一些基本示例。

连接功能:

// Connect Phantom
function phantom_connect() {

// Check for Solana & Phantom
var provider = () => {
if ("solana" in window) {
var provider = window.solana;
if (provider.isPhantom) {
return provider;
} else {
return false;
}
}
window.open("https://phantom.app", "_blank");
};

var phantom = provider();

if (phantom !== false) {

console.log("Phantom Wallet Found, Connecting..");

try {

// Connect to Solana
var connect_wallet = phantom.connect();

// After Connecting
phantom.on("connect", () => {

// Check Connection
console.log("Phantom Connected: " + phantom.isConnected);

// Get Wallet Address
var wallet_address = phantom.publicKey.toString();
console.log("Solana Wallet Address: " + wallet_address);


// ********** THIS FAILS **********
// Get Account Info
var account = phantom.request({
"jsonrpc": "2.0",
"id": 1,
"method": "getAccountInfo",
"params": [wallet_address, {
"encoding": "jsonParsed"
}]
});
console.log("Solana Account Info:");
console.log(account);
// ********************************


// ********** THIS FAILS **********
// Get Wallet Balance
var balance = phantom.request({
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": [wallet_address]
});
console.log("Solana Wallet Balance:");
console.log(balance);
// ********************************


});
//

} catch (err) {
console.log("Connection Cancelled!");
}
}

}

断开连接功能:

// Disconnect Phantom
function phantom_disconnect() {
window.solana.request({
method: "disconnect"
});
window.solana.on('disconnect', () => {
console.log("Phantom Disconnected!");
});
}

控制台在 getBalance 和 getAccountInfo 上显示 -32603 错误。

RPC Error: JsonRpcEngine: Response has no error or result for request:

最佳答案

它不使用 JSON-RPC API,但我在下面放置了代码以在 Devnet 上获取 Solana(Phantom)钱包余额。

provider = window.solana;
connection = new solanaWeb3.Connection(solanaWeb3.clusterApiUrl('devnet'), 'confirmed');
// After Connecting
connection.getBalance(provider.publicKey).then(function(value) { console.log(value); })

关于javascript - 如何通过 Phantom 钱包集成使用 Vanilla JS 和 JSON-RPC 获取 Solana 帐户信息和/或 SOL 余额?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69609838/

103 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com