发布于10月24日10月24日 管理员 课后练习通过curl和wscat命令行来模拟一个监视钱包动作提示:创建一个新账号实时展示余额变化列出已知SPL-Token的余额实时展示SPL-Token余额变化创建账号我们复用前面的账号SOL账号: Czorr4y9oFvE3VdfCLVFuKDYxaNUG1iyQomR7kMZUuziSPL-Token(Mint Account): 7vtXvye2ECB1T5Se8E1KebNfmV7t4VkaULDjf2v1xpA9Token Account: EZhhUANUMKsRhRMArczio1kLc9axefTUAh5xofGX35AK订阅SOL余额变化这个其实已经在课上演示过了。详情可以查看视频录像以及教程中的"订阅Account变化"章节展示SPL-Token变化早期的钱包是通过官方的 token-list 来获得 已知的SPL-Token,现在则通过Metaplex的FT标准查询。除此之外还可以通过订阅Token合约管理的账户变化 来判断是否有Owner为自己的 Token Account被创建。这里我们假设第一种情况,钱包只维护知名token或者用户自己添加的Token,比如上面的 "7vtXvye2ECB1T5Se8E1KebNfmV7t4VkaULDjf2v1xpA9"我们首先获取这个SPL-Token下我们有多少 Token Account:Copycurl https://api.devnet.solana.com -X POST -H "Content-Type: application/json" -d ' { "jsonrpc": "2.0", "id": 1, "method": "getTokenAccountsByOwner", "params": [ "Czorr4y9oFvE3VdfCLVFuKDYxaNUG1iyQomR7kMZUuzi", { "mint": "7vtXvye2ECB1T5Se8E1KebNfmV7t4VkaULDjf2v1xpA9" }, { "encoding": "jsonParsed" } ] } '这里根据结果发现只有一个 "EZhhUANUMKsRhRMArczio1kLc9axefTUAh5xofGX35AK"那么我们只需要按照教程里面,订阅这个Account的变化就可以了。如果有多个,那么就订阅多个。 在重复对其他 SPL-Token做同样操作,既可以完成SPL-Token钱包的功能。首先建立websocket链接,并发起对这个Account的订阅:Copywscat -c wscat -c wss://api.devnet.solana.com --proxy=http://127.0.0.1:1087 Connected (press CTRL+C to quit) > {"jsonrpc":"2.0","id":1,"method":"accountSubscribe","params":["EZhhUANUMKsRhRMArczio1kLc9axefTUAh5xofGX35AK",{"encoding":"jsonParsed","commitment":"finalized"}]}然后再另一个终端,用"spl-token"命令行来进行转账:Copyspl-token transfer --fund-recipient 7vtXvye2ECB1T5Se8E1KebNfmV7t4VkaULDjf2v1xpA9 1 BBy1K96Y3bohNeiZTHuQyB53LcfZv6NWCSWqQp89TiVu Transfer 1 tokens Sender: EZhhUANUMKsRhRMArczio1kLc9axefTUAh5xofGX35AK Recipient: BBy1K96Y3bohNeiZTHuQyB53LcfZv6NWCSWqQp89TiVu Recipient associated token account: H1jfKknnnyfFGYPVRd4ZHwUbXLF4PbFSWSH6wMJq6EK9 Signature: 3paamDSKFk5depKufcDjmJ8wc3eXte3qcgtitFu4TyDi8z9GTXMrLGEgPHgQMnAzFBXYoWxyF5JFzA54Fjvi2ZUK接着我们就可以在前面的监听中收到:Copy< {"jsonrpc":"2.0","method":"accountNotification","params":{"result":{"context":{"slot":236334118},"value":{"lamports":2039280,"data":{"program":"spl-token","parsed":{"info":{"isNative":false,"mint":"7vtXvye2ECB1T5Se8E1KebNfmV7t4VkaULDjf2v1xpA9","owner":"Czorr4y9oFvE3VdfCLVFuKDYxaNUG1iyQomR7kMZUuzi","state":"initialized","tokenAmount":{"amount":"92000000000","decimals":9,"uiAmount":92.0,"uiAmountString":"92"}},"type":"account"},"space":165},"owner":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA","executable":false,"rentEpoch":0,"space":165}},"subscription":18067841}}可以看到当前余额为92了。我们在用"balance"确认下Copyspl-token balance 7vtXvye2ECB1T5Se8E1KebNfmV7t4VkaULDjf2v1xpA9 92
创建帐户或登录后发表意见