ERC721分析

2018-11-07  本文已影响0人  2020同舟共济

ERC721是什么?

ERC是Ethereum非同质化代币(no-fungible token)。官方详细介绍
什么叫同质化同质化的意思就是本质上是一样的,没有什么区别,就像RMB一样,你的100元和我的100元购买力没什么区别。(收藏币除外)。非同质化,就是本质不是一样的。比如:

关键函数分析

safeTransferFrom vs transferFrom 与区别

function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;
function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;

safeTransferFrom(address _from, address _to, uinit256 _tokenId, bytes data)

注意:接收地址,分为两种钱包地址和合约地址。
因为没有人拥有合约地址的私钥,所以转入合约地址,不做特殊处理,就会丢失代币。

怎么识别address是合约地址,并检查返回值?

function _checkOnERC721Received(
    address from,
    address to,
    uint256 tokenId,
    bytes _data
  )
    internal
    returns (bool)
  {
    if (!to.isContract()) {
      return true;
    }
    bytes4 retval = IERC721Receiver(to).onERC721Received(
      msg.sender, from, tokenId, _data);
    return (retval == _ERC721_RECEIVED);
  }

onERC721Received实现介绍 //TODO

参考

上一篇 下一篇

猜你喜欢

热点阅读