![](/img/trans.png)
[英]Send token from owner account from nodejs backend (Custom ERC20 token)
[英]Why do I get Sender's Account Does Not Exist when I send ERC20 Token from a new account with tokens?
我像这样创建我的钱包
const wallet = ethers.Wallet.createRandom()
我使用元掩码将 RIF 令牌发送到公共地址。 我确认了账户的新余额,它是准确的,ERC20 交易成功了。
当我尝试从该钱包发送一些 RIF 令牌时,如下所示:
const connectedWallet = await wallet.connect(provider)
const contract = new ethers.Contract(
process.env.CONTRACT_ADDRESS,
rifContractAbi,
onlineWallet,
)
await contract.transfer(to, tokens)
我收到以下错误:
error: Error: processing response error (body="{\"jsonrpc\":\"2.0\",\"id\":246,\"error\":{\"code\":-32010,\"message\":\"the sender account doesn't exist\"}}\n", error={"code":-32010}, requestBody="{\"method\":\"eth_sendRawTransaction\",\"params\":[\"0xf8a8808403e252e08290999419f64674d8a5b4e652319f5e239efd3bc969a1fe80b844a9059cbb00000000000000000000000010d158b42bfbf39641896ad8b8fd9cf7078d2f4e0000000000000000000000000000000000000000000000000de0b483f7abe82062a0175a2b6e35c1ff301ff45341bf5a63a3895a63404c78b6644cd2f8dee5b9a030a010fbbd608476a555bccd9f3ccf67ceac46183f1be4a82b14a46bbb78ba312fc9\"],\"id\":246,\"jsonrpc\":\"2.0\"}", requestMethod="POST", url="https://public-node.testnet.rsk.co", code=SERVER_ERROR, version=web/5.7.0)
一旦我向该帐户发送了一些 RBTC,交易就会生效。
为了成功转移 ERC20 代币,执行交易的 EOA 需要满足 3 个条件:
// assuming that values for `CONTRACT_ADDRESS` and `CONTRACT_ABI` are set
const wallet = ethers.Wallet.createRandom();
const fungibleToken = new ethers.Contract(
CONTRACT_ADDRESS,
CONTRACT_ABI,
wallet,
);
如果执行了上述操作,则立即执行以下操作:
// assuming that values for `toAddress` and `transferAmount` are set
await fungibleToken.transfer(toAddress, transferAmount);
...您尚未满足上述条件(1)和(2)。 因此,(3)也将被拒绝。
检查您是否满足条件(1):
const tokenCount = await fungibleToken.balanceOf(wallet.getAddress());
console.log('sufficient token balance:', tokenCount > transferAmount);
如果此值不足,并且您在 RSK 测试网上,可以访问faucet.rifos.org
获取一些tRIF
代币。
检查您是否满足条件(2):
// assuming value of `ERC20_TRANSFER_GAS_ESTIMATE` is set
const rbtcBalance = await wallet.getBalance();
console.log('sufficient token balance:', rbtcBalance > ERC20_TRANSFER_GAS_ESTIMATE);
通过使用气体估计方法设置ERC20_TRANSFER_GAS_ESTIMATE
的值,甚至将其值硬编码为安全的高估(例如1e6
)
如果此值不足,并且您在 RSK 测试网上,可以访问faucet.rsk.co
获取一些tRBTC
加密货币。
满足上述条件后,您随后再次执行以下操作:
// assuming that values for `toAddress` and `transferAmount` are set
await fungibleToken.transfer(toAddress, transferAmount);
...转移应该成功。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.