Yêu cầu Aug 31st, 2020 12:28 p.m. 561 0 3
  • 561 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

Chia sẻ
  • 561 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 CÂU TRẢ LỜI


Đã trả lời Aug 31st, 2020 2:32 p.m.
+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

Chia sẻ
Avatar Duy Hung Le @duyhung_2201
Aug 31st, 2020 2:43 p.m.
Aug 31st, 2020 3:57 p.m.

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

Aug 31st, 2020 4:21 p.m.

@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)
Sep 1st, 2020 9:54 a.m.

dạ, em cảm ơn anh ah

Sep 3rd, 2020 10:25 a.m.

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

Đã trả lời Aug 31st, 2020 2:44 p.m.
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

Chia sẻ
Aug 31st, 2020 3:58 p.m.

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

Đã trả lời Nov 3rd, 2020 9:00 a.m.
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.

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí