gpt4 book ai didi

javascript - 如何将 ERC20 代币发送到智能合约余额?

转载 作者:行者123 更新时间:2023-12-04 11:26:17 27 4
gpt4 key购买 nike

我正在尝试构建一个智能合约并继承一些功能来交换 ERC20 代币,
这是我的问题?
问题一:
是否可以将 ERC20 代币转入智能合约余额? ,
请举个例子,
即我们可以创建一个函数将 ETH 发送到智能合约

function contribute() external payable {}

//It will allow us to send ETH to smart contract balance,but how to send,for example, "BAND" token
//to smart contract balance?
问题 B:
如果 A 是可能的, 如何获取合约的代币余额?
即我们可以从这个函数中获取合约 ETH 余额:
// Get ETH balance
function getBalance() external view returns(uint) {
return address(this).balance;
}

// How to return contract's BAND balance, if A is possible ...
问题 C:
如果“A”是可能的,如何使用 Uniswap 或 Sushiswap API 与 BAND/ETH 流动性池进行交换,
使用 NodeJS 在服务器端进程上处理该进程是否更好,或者以稳固的方式实现它?

完整的智能合约代码:
pragma solidity ^0.5.11; 

contract SwapTest {
address public manager;

constructor() public {
manager = msg.sender;
}

modifier OnlyManager() {
require(msg.sender == manager);
_;
}

// Add funds to contract
function contribute() external payable {}


// Get ETH balance
function getBalance() external view returns(uint) {
return address(this).balance;
}

// Send provided amount of WEI to recipient
function sendEther (address payable recipient, uint weiAmount) external OnlyManager{
recipient.transfer(weiAmount);
}

// Send contract balance to recipient
function withdrawBalance (address payable recipient) external OnlyManager{
recipient.transfer(address(this).balance);
}
}
期待你们的回音,
提前致谢。

最佳答案

在处理外部合约时首先包含一个接口(interface)定义,这样就可以调用合约的函数。

interface ERC20 {
function balanceOf(address owner) external view returns (unit);
function allowance(address owner, address spender) external view returns (unit);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
}
答:代币可以直接转入合约地址,无需指定额外功能。虽然,根据您的用例,您也可以编写一个将 token 传输给自身的函数。
function transferToMe(address _owner, address _token, unit _amount) public {
ERC20(_token).transferFrom(_owner, address(this), _amount);
}
乙:你可以使用这个:
function getBalanceOfToken(address _address) public view returns (unit) {
return ERC20(_address).balanceOf(address(this));
}
联系人:如果您需要您的合约能够交换代币,您需要包含相应的功能。请参阅 Uniswap 或 Sushiswap 文档,因为它们对此进行了深入描述。

关于javascript - 如何将 ERC20 代币发送到智能合约余额?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65846335/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com