智能合约是否接收、持有和发送不同种类的 ERC-20 代币
Is smart contract receive, hold and send different kinds of ERC-20 tokens
我正在使用 solidity 创建智能合约并将其发布到孟买测试网络。
现在,当我在客户端使用以太币和元掩码与合约交互时,它会自动使用 MATIC 代币。
我希望智能合约能够接收不同种类的 ERC-20 代币,然后能够转移它们。
const parsedAmount = ethers.utils.parseUnits(amount.toString(), 'ether');
const contract = await tokenContract.createTransfer({ value: parsedAmount });
比如我希望能够发送如图所示的test token
我已经在线搜索并阅读了文档,但找不到该问题的答案...
如果需要,我会添加您认为可以澄清这个问题的任何信息!
提前致谢:)
ERC-20 standard 没有定义任何方式让接收合约知道不是由接收方发起的传输。它“仅”发出一个事件,但无法从链上读取该事件。
所有 ERC-20 余额都存储在相应的代币合约中。例如,如果一个地址持有 10 个 USDC,则此信息存储在 USDC 合约中——无论持有者是最终用户地址还是合约。
将这两件事结合在一起,您可以向 USDC(或任何其他 ERC-20)代币合约发送交易,调用 transfer()
函数,接收方是您的合约。这将有效地将 USDC 从用户转移到您的合约地址。
const usdcContract = new ethers.Contract(usdcAddress, usdcAbi, metamaskSigner);
const to = "0x123..."; // your contract address
const amount = "1000000"; // 1 token with six decimals
await usdcContract.transfer(to, amount);
我正在使用 solidity 创建智能合约并将其发布到孟买测试网络。
现在,当我在客户端使用以太币和元掩码与合约交互时,它会自动使用 MATIC 代币。
我希望智能合约能够接收不同种类的 ERC-20 代币,然后能够转移它们。
const parsedAmount = ethers.utils.parseUnits(amount.toString(), 'ether');
const contract = await tokenContract.createTransfer({ value: parsedAmount });
比如我希望能够发送如图所示的test token
我已经在线搜索并阅读了文档,但找不到该问题的答案...
如果需要,我会添加您认为可以澄清这个问题的任何信息!
提前致谢:)
ERC-20 standard 没有定义任何方式让接收合约知道不是由接收方发起的传输。它“仅”发出一个事件,但无法从链上读取该事件。
所有 ERC-20 余额都存储在相应的代币合约中。例如,如果一个地址持有 10 个 USDC,则此信息存储在 USDC 合约中——无论持有者是最终用户地址还是合约。
将这两件事结合在一起,您可以向 USDC(或任何其他 ERC-20)代币合约发送交易,调用 transfer()
函数,接收方是您的合约。这将有效地将 USDC 从用户转移到您的合约地址。
const usdcContract = new ethers.Contract(usdcAddress, usdcAbi, metamaskSigner);
const to = "0x123..."; // your contract address
const amount = "1000000"; // 1 token with six decimals
await usdcContract.transfer(to, amount);