下面的Vanilla JS示例通过Phantom钱包连接和断开Solana区块链。
它会成功连接并获取公有地址。
尝试使用JSON-RPC请求获取钱包余额和帐户信息时失败。
如果有人能帮我们解决这个问题,我们将为那些喜欢尽可能保留它的人提供一些基本的例子。
连接功能:
// 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函数:
// 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:
发布于 2021-11-18 17:32:00
它不使用JSON-RPC API,但我在下面的代码中获取Devnet
上的Solana (Phantom) Wallet Balance。
provider = window.solana;
connection = new solanaWeb3.Connection(solanaWeb3.clusterApiUrl('devnet'), 'confirmed');
// After Connecting
connection.getBalance(provider.publicKey).then(function(value) { console.log(value); })
https://stackoverflow.com/questions/69609838
复制相似问题