我需要创建一个智能契约,其中我的每个令牌将被交换为1个usdt,也就是说,一个人将1个usdt发送到该函数,而他将一个令牌添加到他的资产负债表中。我该怎么做呢?对于eth来说,这很简单,但是usdt对我来说是一个挑战。有人举过例子吗?我如何在这个网络上进行测试?
发布于 2021-02-22 04:28:03
对于ERC20,通常的方法是要求用户批准您的合同。
你必须从前端开始做这样的事情。
// USDT parameters
const erc20Token = new web3.eth.Contract(USDT_ABI, USDT_ADDRESS)
// Contract that will receive USDT
const recipient = new web3.eth.Contract(RECIPIENT_ABI, RECIPIENT_ADDRESS)
// Require user approval
await erc20Token.approve(AMOUNT, RECIPIENT_ADDRESS).send({from: USER_ADDRESS})
// Call function on recipient to retrieve USDT
await recipient.deposit(AMOUNT).send({from: USER_ADDRESS})Smart合同
contract Recipient {
// USDT token
IERC20 usdt = IERC20(USDT_ADDRESS);
// Token to send for USDT
IERC20 token = IERC20(token);
function deposit(uint256 amount) public {
// Transfer amount USDT tokens from msg.sender to contract
usdt.transferFrom(msg.sender, address(this), amount);
// Send amount tokens to msg.sender
token.transfer(msg.sender, amount);
}
}https://ethereum.stackexchange.com/questions/93770
复制相似问题