【问题标题】:How to get Solana Account Info and-or SOL Balance using Vanilla JS and JSON-RPC via Phantom wallet integration?如何通过 Phantom 钱包集成使用 Vanilla JS 和 JSON-RPC 获取 Solana 帐户信息和/或 SOL 余额?
【发布时间】:2021-12-05 03:23:02
【问题描述】:

以下 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 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:

【问题讨论】:

    标签: javascript web3 json-rpc solana


    【解决方案1】:

    它不使用 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); })
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 2023-02-25
      • 2022-09-23
      • 2022-11-11
      相关资源
      最近更新 更多