【发布时间】:2021-10-19 23:05:27
【问题描述】:
我与 Phantom 钱包建立了连接。
我希望 phantom_balance() 返回余额或包含余额的数据。
json-rpc 格式是否有错误?
我在catch() 上遇到以下JsonRpcEngine 故障。
Phantom - RPC Error: JsonRpcEngine: Response has no error or result for request:
{
"jsonrpc": "2.0",
"id": 1161935556,
"method": "getBalance",
"params": [
"iQKBP3tSX6g3j6pS6g3LuzhoqTQKBP3tSX6g33tSX6g3j6pS6g"
]
}
这里是js
// get wallet provider, phantom
const get_provider = () => {
if ("solana" in window) {
const provider = window.solana;
if (provider.isPhantom) {
return provider;
}
}
window.open("https://phantom.app/", "_blank");
};
// async get wallet balance
async function phantom_balance() {
// alt window.solana
const phantom = get_provider();
console.log("Still Connected: " + phantom.isConnected);
if (phantom.isConnected !== false) {
const wallet_address = phantom.publicKey.toString();
console.log("Getting Balance For: " + wallet_address);
// json-rpc request (ERROR!)
const balance = await phantom.request({
method: "getBalance",
params: [wallet_address]
})
.then(function(data) {
console.log(data);
}).catch(function(e) {
console.log(e);
});
}
}
我也尝试了以下方法并收到错误消息,提示 phantom.getBalance() 不是函数。
const balance = await phantom.getBalance(wallet_address)
.then(function(data) {
console.log(data);
}).catch(function(e) {
console.log(e);
});
我目前没有在文档头部包含任何<script>。根据 Phantom 文档,他们将window.solana 注入到文档中(这也暴露了 RPC 接口)。也许我仍然需要 web3 才能访问 window.solana.getBalance(wallet_address) 和/或 RPC 方法 window.solana.request(method: "getBalance") ??
【问题讨论】:
-
您是否尝试读取给定公钥的 SOL 令牌?如果是这样,您可以使用
connection.getBalance()阅读它。文档here -
我已更新问题以包含您的建议。
标签: javascript async-await json-rpc solana phantom-wallet