Asked Aug 31st, 2020 12:28 PM 111 0 3
  • 111 0 3
0

Làm sao để lấy balanceOf , transfer và transferFrom và các thuộc tính của token ERC20 đã có sẵn

Share
  • 111 0 3

Chào mọi người, Mn cho mình hỏi, mình muốn thêm 1 token ERC20 đã có sẵn vào trong smart contract đang viết thì làm như thế nào ah.

3 ANSWERS


Answered Aug 31st, 2020 2:32 PM
+2

Tiêu đề và nội dung hỏi của bạn mình thấy ko ăn khớp với nhau lắm. Nếu như bạn muốn gọi hàm trong contract của các token ERC-20 (như Chainlink, Band, ...) thì bạn có thể dùng web3.js, truyền địa chỉ và ABI của contract cần gọi vào

Share
Duy Hung Le @duyhung_2201
Aug 31st, 2020 2:43 PM
Aug 31st, 2020 3:57 PM

Mình muốn add token ERC20 (chainlink, band) vào trong smart contract đang viết luôn anh. Nhận và chuyển token ERC 20(chainlink, band..) đó thông qua smart contract

0
| Reply
Share
Aug 31st, 2020 4:21 PM

@quyphan, thế thì có hơi chút phức tạp, bạn phải import file smart contract của token ERC-20 đó vào contract của bạn, sau đó bạn tạo 1 instance contract với địa chỉ trên mạng (main hoặc test). Từ instance đó có thể gọi đến các hàm trong contract để gửi, check số dư token đó

TokenContract tokenContract = TokenContract(address);
tokenContract.transfer(_to, _value)
0
| Reply
Share
Sep 1st, 2020 9:54 AM

dạ, em cảm ơn anh ah

0
| Reply
Share
Sep 3rd, 2020 10:25 AM

Em kiểm tra trên Ropsten hàm : IERC20(0x25d6c0CbA54b36FAd609425F12e0FCeB3cdFd79C).safeTransferFrom(msg.sender, address(this), amount); thì báo lỗi: Fail with error 'SafeERC20: low-level call failed' là sao vậy anh. https://ropsten.etherscan.io/tx/0xe909d506a4934fa296cc83f1bd8feef32f014f2279d3517d6486ec7737eebd01

0
| Reply
Share
Answered Aug 31st, 2020 2:44 PM
0

Mình chưa rõ lắm câu hỏi của bạn, nhưng theo mình hiểu là bạn đag muốn gọi các hàm từ contract của ERC20 từ smart contract bạn đang viết. Cách phổ biến nhất là dùng ABI của contract ERC20 để gọi các hàm, ngoài ra vẫn còn cách khác, bạn có thể tham khảo ở medium

Share
Aug 31st, 2020 3:58 PM

Mình muốn add token ERC20 (chainlink, band) vào trong smart contract đang viết luôn anh. Nhận và chuyển token ERC 20(chainlink, band..) đó thông qua smart contract

0
| Reply
Share
Answered Nov 3rd, 2020 9:00 AM
0

Không biết bác đã có câu trả lời chưa. Theo em thì chỉ cần tạo thêm 1 interface

pragma solidity 0.4.25;

contract IERC20 {
    function transfer(address to, uint256 value) public returns (bool);

    function approve(address spender, uint256 value) public returns (bool);

    function transferFrom(address from, address to, uint256 value) public returns (bool);

    function balanceOf(address who) public view returns (uint256);

    function allowance(address owner, address spender) public view returns (uint256);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

Rồi sau đó dùng chỗ nào thì gọi thôi

     IERC20 public tokenAbcxyz= IERC20(0xEFbFc735105cca5B9a6449C499214F74dB321AA9);

Lưu ý địa chỉ đưa vào phải có dạng chữ hoa + chữ thường, nếu không nó sẽ warning invalid checksum.

Share