Tự học Solidity bài 39: ERC721 Transfer Logic - Logic chuyển đổi chủ sở hữu trong ERC21 ngôn ngữ SOLIDITY
ERC721 Transfer Logic
Tự học Solidity: Logic chuyển đổi chủ sở hữu trong ERC21 ngôn ngữ SOLIDITY
Logic chuyển đổi chủ sở hữu
Bây giờ chúng ta sẽ tiếp tục triển khai ERC721 của mình bằng cách xem xét việc chuyển quyền sở hữu từ người này sang người khác.
Lưu ý rằng thông số ERC721 có 2 cách khác nhau để chuyển mã thông báo:
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
Cách đầu tiên là chủ sở hữu mã thông báo gọi transferFrom với địa chỉ của anh ta là tham số _from, địa chỉ anh ta muốn chuyển đến làm tham số _to và _tokenId của mã thông báo mà anh ta muốn chuyển.
và
function approve(address _approved, uint256 _tokenId) external payable;
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
Cách thứ hai là chủ sở hữu mã thông báo gọi đến hàm approve xin chấp thuận trước với địa chỉ mà anh ta muốn chuyển đến và _tokenID. Sau đó thì Contract sẽ ghi nhớ địa chỉ của một hoặc nhiều địa chỉ được chấp thuận lấy mã thông báo, thường là trong một mapping (uint256 => address).
Bước 2, khi chủ sở hữu hoặc địa chỉ được phê duyệt gọi transferFrom, Contract sẽ kiểm tra xem msg.sender đó là đúng là chủ sở hữu hay được chủ sở hữu chấp thuận thì sẽ chuyển mã thông báo cho anh ta.
Lưu ý rằng cả hai phương thức đều chứa cùng một logic transferFrom. Trong trường hợp thứ nhất, người gửi mã thông báo gọi hàm transferFrom luôn. Còn ở trường hợp thứ hai, chủ sở hữu hoặc người nhận phải chấp thuận việc nhận thì sau đó mới gửi mã thông báo.
Thực hành luôn cho nhớ lâu bạn nhé
Nếu bạn chưa biết cách TẠO FILE, COMPILER và DEPLOY thì hãy xem lại trong bài giới thiệu nhé. Có hướng dẫn chi tiết ở đó.
BÀI TIẾP THEO: BÀI SỐ 40
HỌC TỪ ĐẦU: BÀI SỐ 1