我开始对Web3的开发感兴趣,我想在这段旅程中得到一些建议来帮助我。好吧,在这个令人惊叹的教程之后,我在Solana区块链上创建了一个代币,我对Web3前端开发有以下问题:
- 一旦用户在幻影上验证
- 有可能获得用户钱包上的代币数量吗
- 假设我的代币不在交易所,但我有100个单位,我想把50个单位转移到另一个钱包,这可能发生吗
最后一件很重要的事,我想知道哪些技术、文章、网站等可以帮助我建立这个平台,并了解这些主题?
一旦用户连接到Phantom,是否可以获取其钱包地址?
是的!使用钱包适配器,您可以检索连接的公钥并获取连接的令牌地址。
示例:
const { connection } = useConnection();
const { publicKey } = useWallet();
const tokenAccounts = await connection.getParsedTokenAccountsByOwner(publicKey, { programId: TOKEN_PROGRAM_ID });
是否可以获取用户钱包中的代币数量?
如果您console.log以上示例:
const tokenAccounts = await connection.getParsedTokenAccountsByOwner(new PublicKey('Ccyrkw1FdRVsfnt7qptyUXqyffq3i59GSPN1EULqZN6i'), { programId: TOKEN_PROGRAM_ID });
tokenAccounts.value.forEach((accountInfo) => {
console.log(`pubkey: ${accountInfo.pubkey.toBase58()}`)
console.log(`mint: ${accountInfo.account.data["parsed"]["info"]["mint"]}`);
console.log(`owner: ${accountInfo.account.data["parsed"]["info"]["owner"]}`);
console.log(`decimals: ${accountInfo.account.data["parsed"]["info"]["tokenAmount"]["decimals"]}`);
console.log(`amount: ${accountInfo.account.data["parsed"]["info"]["tokenAmount"]["amount"]}`);
console.log("====================")
});
/*
pubkey: ArbSRRSPZ5SqXjyjcip3UUZ55Eqn5AkCP4dHZNRrKBhz
mint: 8HGyAAB1yoM1ttS7pXjHMa3dukTFGQggnFFH3hJZgzQh
owner: Ccyrkw1FdRVsfnt7qptyUXqyffq3i59GSPN1EULqZN6i
decimals: 6
amount: 875471
====================
pubkey: 6JbMNzmX7QrxUEL5RT9TczvTuCjXPFTDRWgCs88atmV8
mint: 4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R
owner: Ccyrkw1FdRVsfnt7qptyUXqyffq3i59GSPN1EULqZN6i
decimals: 6
amount: 330108
====================
pubkey: 9xqnnfeonbsEGSPgF5Wd7bf9RqXy4KP22bdaGmZbHGwp
mint: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
owner: Ccyrkw1FdRVsfnt7qptyUXqyffq3i59GSPN1EULqZN6i
decimals: 6
amount: 199497145
====================
*/
假设我的代币不在交易所,但我有100个单位,我想把50个单位转移到另一个钱包,这可能发生吗?
是的,您也可以在钱包之间转移代币。
let tx = new Transaction().add(
createTransferCheckedInstruction(
tokenAccountXPubkey, // from (should be a token account)
mintPubkey, // mint
tokenAccountYPubkey, // to (should be a token account)
alice.publicKey, // from's owner
50e8, // amount, if your deciamls is 8, send 10^8 for 1 token
8 // decimals
)
);
await sendAndConfirmTransaction(connection, tx, [alice]);
我想知道哪些技术、文章、网站等可以帮助我构建它,并了解这些主题?
索拉纳食谱上有很多很棒的材料和例子。否则,我会参考其他用户给出的答案。
一旦用户在Phantom上进行身份验证,是否可以获取其钱包地址?
是的!这是可能的。与元任务类似,您可以参考phantom SDK来获取用户的公共钱包地址
关于转账,这是可能的,但您必须使用metaplex
将代币从一个钱包转移到另一个钱包。
是否可以获取用户钱包中的代币数量?
为此,您必须进行一些研发,因为列出用户的所有钱包代币是一种隐私问题。
对于Web3.js资源,您可以参考
- 构建空间
- 索拉纳实验室Github Repo
- Chainlink教程
- Youtube频道:-Dapps Academy
- https://dev.to/jebitokdev/getting-started-with-web3-communities-and-resources-kce