CryptoZombies 5


ERC20, ERC721


タグ:いくつかの共通の規則に従うスマートな規則

ERC 721規格


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;
}

に約束

  • 契約は、多数の契約を継承することができる.
  • 
    contract SatoshiNakamoto is NickSzabo, HalFinney {
      // 오 이런, 이 세계의 비밀이 밝혀졌군!
    }

    balanceOf

    function balanceOf(address _owner) public view returns (uint256 _balance);
    addressを受信し、その値にどれだけのタグがあるかを返します.
    クリプトン星ゾンビではゾンビを意味し、あるプレイヤーがどれだけゾンビを持っているかを意味します.

    ownerOf


    マークID(クリプトンゾンビではゾンビID)を受信し、そのIDを持つ人のアドレスを返します.
      function ownerOf(uint256 _tokenId) public view returns (address _owner);

    改造する


    私たちのコードで使用するmodifierの名前はトークン標準関数の名前と同じなので、変更する必要があります.
    ERC 721トークン基準を使用すると、他の請負業者も私たちのオファーに正しい名前で定義された関数があり、正常に動作することを望んでいます.
    これにより,他の請負業者が我々の内部実装ロジックを知らなくても,トークン標準関数を介して我々と通信することができる.
  • マッピング:エンティティ内の構造化データを格納する別の方法
    (key - value)
  • ERC 721伝送路織物


    ERC 721を伝送する方法は2つある.
  • transfer
    トークンの所有者はtransfer関数を呼び出し、トランスポートオブジェクトのaddressとトランスポートするtokenIdを呼び出します.
  • function transfer(address _to, uint256 _tokenId) public;
  • approve
    上記の情報を使用してapprove関数を呼び出し、見積書でタグを使用できるようにした人を保存します.(第2期)
  • function approve(address _to, uint256 _tokenId) public;
    function takeOwnership(uint256 _tokenId) public;
    approve方式では、2回の関数呼び出しが発生するため、関数呼び出しの間に誰が何を承認したかを格納するデータ構造が必要です.
    takeOwnership関数でmsg.Senderがトークンを持つことが承認されたことを確認し、確認後にtransferを呼び出す

    ライブラリ(Library)


    エンティティ内の特殊なタイプの規則
    この機能は、基本(ネイティブ)データ型に関数を貼り付ける場合に便利です.
    キーワード
  • の使用を許可:ライブラリ内のメソッドを他のデータ型に適用できます.
  • キーワード
  • を使用すると、関数を適用すると、引数が自動的に渡されます.
  • SafeMath


    オーバーフローやバックフローなどの問題を防止するライブラリ.
    一般的には、基本的な数学演算よりもSafeMathの方が安全です.

    assert


    requireに似た条件を満たさないと、エラーが発生します.
    違いは、require関数が失敗すると、残りのガスが返されます.
  • assertはそうではありません.(これは、コードの重大なエラーの実行時に使用される理由であり、ほとんどがrequireを使用しています.)