EIPとERC
EIPとは、Ethereumシステム改善提案の仕組み。
EIP(Ethereum Improvement Proposals)Ethereum改善提案(https://github.com/ethereum/EIPs/tree/master/EIPS)のことです。
EIPには、以下の3種類が有り新しい機能の提案や問題の収集 Ethereum設計上の決定を文書化しています。
- A Standard Track EIP 実装に影響を与える変更を記述。
Core、Networking、Interface 、ERCにわかれます。(ERCに続く番号は、EIPでで提出されたERCの順番を表す。)
- A Meta EIP イーサリアムの記法を記載
- An Informational EIP 設計上の問題・一般的なガイドライン・イーサリアムコミュニティの情報を提供
このA Standard Track EIP上で提出される改善案をERC(Ethereum Request for Comment)と呼び、Ethereumコミュニティ内で採択されるとEIPとなります。
EIP Status
出典 Ethereum Improvement Proposals (EIPs) https://eips.ethereum.org/
- Draft 変更中のEIP
- Last Call レビューの準備ができているEIP
- Accepted -少なくとも2週間ラストコールされているコアEIPと技術的な変更が作成者によって対処済のEIP
- Final (non-Core) 少なくとも2週間ラストコールされ要求された技術的な変更が著者により対処済のEIP
- Final (Core) コア開発者が将来のハードフォークで実装およびリリースを決定したりすでにハードフォークでリリースされているEIP。
ERC20
The ERC20 Standard(https://docs.ethhub.io/guides/a-straightforward-guide-erc20-tokens/)
トークンを発行するための規格 出典 eip-20.md https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md Solidity 0.4.17(またはそれ以上)の構文を使用。
- Original proposal from Vitalik Buterin: https://github.com/ethereum/wiki/wiki/Standardized_Contract_APIs/499c882f3ec123537fc2fccd57eaa29e6032fe4a
- Reddit discussion: https://www.reddit.com/r/ethereum/comments/3n8fkn/lets_talk_about_the_coin_standard/
- Original Issue #20: https://github.com/ethereum/EIPs/issues/20
// ---------------------------------------------------------------------------- // ERC Token Standard #20 Interface // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md // ---------------------------------------------------------------------------- contract ERC20Interface { function totalSupply() public constant returns (uint); function balanceOf(address tokenOwner) public constant returns (uint balance); function allowance(address tokenOwner, address spender) public constant returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success); function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); }
ERC721(Non-Fungible Token Standard)
希少性や独自性を持つNFT(Non-Fungible Token)
出典 EIP-721: ERC-721 Non-Fungible Token Standard
(https://eips.ethereum.org/EIPS/eip-721)
ERC721は、希少性や独自性を持つNFT(Non-Fungible Token)です。
(ERC20は、どのトークンも同じ価値を持ちます。)
これに対し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; } }interface ERC165 { /// @notice Query if a contract implements an interface /// @param interfaceID The interface identifier, as specified in ERC-165 /// @dev Interface identification is specified in ERC-165. This function /// uses less than 30,000 gas. /// @return `true` if the contract implements `interfaceID` and /// `interfaceID` is not 0xffffffff, `false` otherwise function supportsInterface(bytes4 interfaceID) external view returns (bool); }ERC165
ERC165はスマートコントラクトがどのインタフェースを実装するかを公開し発見する標準的なメソッドを作成します。
コントラクトがどんなインターフェースを実装しているのかを確認できるようにするためのインターフェース【参考】Ethereum2.0