如何在 Solana(客户端,JS)中获取对以前创建的 Token 的引用

Posted

技术标签:

【中文标题】如何在 Solana(客户端,JS)中获取对以前创建的 Token 的引用【英文标题】:How to get a reference to a former created Token in Solana (client side, JS) 【发布时间】:2021-12-10 05:47:02 【问题描述】:

我能够创建一个令牌并将其铸造成一个 spl 帐户地址。 但是当我重新启动我的程序时,我如何获得对那个 Token 的引用,以便我再次铸币?

const web3 = require("@solana/web3.js");
const splToken = require('@solana/spl-token');
const  PublicKey, Keypair, Transaction, SystemProgram, LAMPORTS_PER_SOL, sendAndConfirmTransaction, clusterApiUrl  = require("@solana/web3.js");

let secretKey = Uint8Array.from([233, 65, 11, rest of my secret]);
let fromWindowsWallet = Keypair.fromSecretKey(secretKey);

let connection = new web3.Connection(clusterApiUrl('devnet'));

(async () => 
    //create my new token mint
     let SWAB = await splToken.Token.createMint(
         connection,
         fromWindowsWallet,
         fromWindowsWallet.publicKey,
         fromWindowsWallet.publicKey,
         2,
         splToken.TOKEN_PROGRAM_ID,
     );
    console.log(SWAB.publicKey) // -> PublicKey 
                      _bn: <BN: 2643549b60882496a15407c2f1a6139dd2c4128879480b1d56fdd464550db22b>
  
// ... continue with that Token SWAB

所以当我重新启动程序时,我如何才能再次获得对 Token SWAB 的引用?我试过了:

let pubKey = new PublicKey("<BN: 6ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9>");
let SWAB = new splToken.Token(
        connection,
        pubKey,
        splToken.TOKEN_PROGRAM_ID,
        fromWindowsWallet
    )

但会抛出:错误:非 base58 字符

【问题讨论】:

【参考方案1】:

创建令牌后,我可以通过以下方式获取 pubKey:

console.log(SWAB.publicKey.toBase58())  // 3aN3KP6kQdBvTHTeK785Uuykddram97B844RoJc19VNS

然后我可以像这样获得对 Token 的引用并继续铸造:

let pubKey = new PublicKey('3aN3KP6kQdBvTHTeK785Uuykddram97B844RoJc19VNS');
let SWAB = new splToken.Token(
        connection,
        pubKey,
        splToken.TOKEN_PROGRAM_ID,
        fromWindowsWallet
    )

connectionfromWindowsWallet 在我的问题代码中定义)

【讨论】:

以上是关于如何在 Solana(客户端,JS)中获取对以前创建的 Token 的引用的主要内容,如果未能解决你的问题,请参考以下文章

如何获取在与@solana/web3.js 的交易中转移的自定义令牌数量?

如何在 SOLANA 上使用 web3 js 从令牌地址获取元数据

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

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

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

如何使用 @solana/web3.js 从 Solana 中的自定义令牌中删除铸币权限?