zoukankan      html  css  js  c++  java
  • 实现代币ERC721功能

    首先ERC721的标准:

    contract ERC721 {

      event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);

      event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);

      function balanceOf(address _owner) public view returns (uint256 _balance);

      function ownerOf(uint256 _tokenId) public view returns (address _owner);

      function transfer(address _to, uint256 _tokenId) public;

      function approve(address _to, uint256 _tokenId) public;

      function takeOwnership(uint256 _tokenId) public;

    }

    1.调查代币

      balanceOf:

        function balanceOf(address _owner) public view returns(uint256 _balance)

        //这个函数的功能是传入地址参数,返回代币数量

      ownerOf:

        function ownerOf(uint256 _tokenId) public view returns(address _owner);

        //传入代币(token)的ID而返回拥有者的address

    2.转移代币:

      ERC721有三种函数关于转移代币:

    方法一:直接转移

      function transfer(address _to,uint256 _tokenId) public;

        将想转移的代币_tokenId转移到_to地址中

    方法二:

    function approve(address _to,uint256 _tokenId) public;

    function takeOwnership(uint256 _tokenId) public;

      代币拥有者先调用approve,传入相同的参数后,该合约会存储谁被允许提取代币,

    然后存储到一个mapping(uint256=> address)中,然后调用takeOwnershi时合约会检查msg.sender

    查看是否有批准来提取代币。

    这里使用私有函数来实现方法1使用//方便自己

    function _transfer(address _from, address _to, uint256 _tokenId) private {
    ownerZombieCount[_to]++;
    ownerZombieCount[_from]--;
    zombieToOwner[_tokenId] = _to;
    Transfer(_from, _to, _tokenId);
    再修改transfer函数的内容,只需要在transfei中使用_transfer就行了
    }
     
      实现批准approve函数:
      步骤:
        1,作为所有者,用新主人的address和交易的_tokenId来调用approve
        2.接受者通过takeOwnership来获得代币
         //在这两者之间需要一个数据结构来存储什么人被批准获取什么代币

      首先建立一个映射来使得查找代币和对应人的地址,再转接,同样的这也需要ERC721的event监听

      再实现takeOwnership函数,用来检测是否确保msg.sender被批准来提取代币了,确认后就是用_transfer函数

    来提取 

  • 相关阅读:
    Global Citizenship
    Eng Stu
    说说
    C#编程远程控制机械手臂
    切割系统
    C#编码 画图控件
    编程Sourceforge
    C#编程线程
    空间点的几何关系
    一台普通电脑通过设置连接到公司网络
  • 原文地址:https://www.cnblogs.com/beautiful7/p/12422965.html
Copyright © 2011-2022 走看看