尝试发送 USDC 时无法获取钱包签名者 @solana-labs/web3.js

Posted

技术标签:

【中文标题】尝试发送 USDC 时无法获取钱包签名者 @solana-labs/web3.js【英文标题】:Can't get wallet signer @solana-labs/web3.js while trying to send USDC 【发布时间】:2021-12-28 01:59:23 【问题描述】:

我正在尝试根据此线程中的答案发送 USDC - How to send USDC-SPL using @solana-labs/web3.js 但他在回答中使用了私钥,我似乎无法找到真正钱包的签名者。我不断收到这样的错误:

“WalletAdapter”类型的参数不可分配给“Signer”类型的参数。 “WalletAdapter”类型中缺少属性“secretKey”,但在“Signer”类型中是必需的。

我的代码:

var connection = new web3.Connection(web3.clusterApiUrl("devnet"));
    // Construct wallet keypairs
    var fromWallet = wallet;
    var toWallet =to;
    // Construct my token class
    
    var USDC_pubkey = new web3.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
    var USDC_Token = new splToken.Token(
      connection,
      USDC_pubkey,
      splToken.TOKEN_PROGRAM_ID,
      fromWallet
    );

【问题讨论】:

【参考方案1】:

根据设计,钱包不允许 dapp 直接访问钱包的私钥。否则,恶意 dapp 很容易收集其所有用户的私钥并窃取他们的资金。

相反,钱包提供了一个用于签署交易的接口。从您的代码 sn-p 中,不清楚您使用的是哪个钱包,但您可能希望使用 solana-labs/wallet-adapter 包来处理这些连接。您可以按照https://github.com/solana-labs/wallet-adapter/ 的步骤使用任何钱包设置您的 dapp!

【讨论】:

以上是关于尝试发送 USDC 时无法获取钱包签名者 @solana-labs/web3.js的主要内容,如果未能解决你的问题,请参考以下文章

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

从 Trezor 硬件钱包发送签名交易

使用 Trezor(硬件钱包)将签名交易发送到 Ropsten 或 Truffle 开发网络

FileCoin 挖矿教程之三:发送与接收 FIL

如何使用现有钱包签署使用节点 JS 脚本运行的 solana 交易?

如何使用 Solana keygen 中的密钥来使用网络钱包?