Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
177 views
in Technique[技术] by (71.8m points)

javascript - How to send ERC20 token to smart contract balance?

I'm trying to build a smart contract and inherit some functions to swap ERC20 tokens,

Here are my questions?

Question A: Is it possible to transfer ERC20 token to smart contract balance?, Please provide an example, i.e. We can create a function to send ETH to smart contract

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?

Question B: If A is possible, how to get contract's token balance? i.e. We can get the contract ETH balance from this function:

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

// How to return contract's BAND balance, if A is possible ...

Question C:

If "A" is possible, How to make a swap to BAND/ETH liquidity pool, using Uniswap or Sushiswap API, Is it better to handle that process on server side proccesses using NodeJS, or implement it in solidity?


Full smart contract code:

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);
}

}

Looking forward to hearing back from you guys, Thanks in advance.

question from:https://stackoverflow.com/questions/65846335/how-to-send-erc20-token-to-smart-contract-balance

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

When dealing with external contracts first include an interface definition, so you can call the contract's functions.

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); 
}

A: Tokens can be transferred directly to the contract's address, no additional functions need to be specified. Although, depending on your use case you can also write a function that will transfer tokens to itself.

function transferToMe(address _owner, address _token, unit _amount) public {
  ERC20(_token).transferFrom(_owner, address(this), _amount);
}

B: You can use this:

function getBalanceOfToken(address _address) public view returns (unit) {
  return ERC20(_address).balanceOf(address(this));
}

C: If you need your contract to be able to swap tokens you need to include the corresponding functions. Please refer to the Uniswap or Sushiswap documentation as they describe this in-depth.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...