如何获取Solana devnet环境中可使用的测试USDC?
Solana Devnet 测试USDC获取方法
你已经掌握devnet SOL领取、SPL代币转账逻辑的话,获取测试USDC没有额外门槛,核心就是先创建对应USDC的关联代币账户,再通过测试网铸币渠道领币即可。
基础信息
Devnet上部署的USDC SPL代币铸币地址固定为:
4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU
所有操作前请确保你的钱包内至少有0.1个devnet SOL,用来支付链上交易手续费,你之前写的SOL申领代码可以直接复用
方法一:代码自动申领(适配开发场景)
先安装依赖:
npm install @solana/web3.js @solana/spl-token
完整可运行代码如下,逻辑里已经自动处理了关联代币账户创建、交易确认的步骤:
const { Connection, Keypair, PublicKey } = require('@solana/web3.js'); const { getOrCreateAssociatedTokenAccount, mintTo } = require('@solana/spl-token'); // 初始化devnet连接 const connection = new Connection('https://api.devnet.solana.com', 'confirmed'); // 替换为你自己的钱包密钥对 const wallet = Keypair.fromSecretKey(/* 你的钱包私钥Uint8Array */); // Devnet USDC铸币地址 const USDC_MINT = new PublicKey('4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU'); // 申领数量:USDC为6位精度,10 * 10**6 代表10个USDC,单次申领不要超过1000枚,否则会被节点拒绝 const CLAIM_AMOUNT = 10 * 10 ** 6; async function claimDevnetUSDC() { // 第一步:获取/创建当前钱包对应USDC的关联代币账户(ATA),没有这个账户代币无法到账 const usdcTokenAccount = await getOrCreateAssociatedTokenAccount( connection, wallet, // 支付账户创建手续费的钱包 USDC_MINT, wallet.publicKey // 代币账户归属的钱包地址 ); console.log('你的USDC关联账户地址:', usdcTokenAccount.address.toBase58()); // 第二步:铸测试USDC到你的关联账户 const txSignature = await mintTo( connection, wallet, USDC_MINT, usdcTokenAccount.address, wallet, // Devnet下测试代币铸币权限对所有用户开放,直接用当前钱包签名即可 CLAIM_AMOUNT ); // 第三步:确认交易上链 const latestBlockHash = await connection.getLatestBlockhash(); await connection.confirmTransaction({ blockhash: latestBlockHash.blockhash, lastValidBlockHeight: latestBlockHash.lastValidBlockHeight, signature: txSignature, }); console.log(`USDC申领成功,交易哈希: ${txSignature}`); } claimDevnetUSDC();
方法二:网页水龙头手动申领(适配快速测试场景)
如果不需要写代码,可以直接用公开的Solana Devnet SPL代币水龙头手动领:
- 先把你的Phantom、Solflare等钱包切换到Devnet网络
- 打开Devnet SPL代币水龙头页面,连接钱包
- 在代币列表中选择USDC,输入要领取的数量(一般单次上限为10~100枚)
- 点击申领,等待链上确认后即可在钱包中看到测试USDC
常见踩坑点
- 不要直接往普通SOL地址转USDC,必须先创建对应币种的关联代币账户,否则代币会永久丢失
- 单次申领USDC数量不要过大,超过测试网限额的交易会被节点直接拒绝
- 如果出现铸币失败的情况,可以先去Solana区块浏览器查询当前USDC铸币地址的权限配置,Devnet偶尔会重置测试合约,重置后替换为最新公布的铸币地址即可
内容的提问来源于stack exchange,提问作者mikemaccana
相关产品推荐
相关产品推荐

