#ERCとは#
ERCはEIP(Ethereum Improvement Proposal)の1種です。EIPとはEthereumのシステム改善提案のことを意味します。
EIPは以下のリポジトリでまとめられており、プルリクエストを送ることで提案を行うことができます。
https://github.com/ethereum/EIPs
一方でERCはEthereum Request for Commentの略でEthereumのアプリケーションレベルのスタンダードや規則を規定する提案書を指します。コントラクトに関わる提案はここに含まれます。
#ERC20について#
ERC20以下にEIPとして取り込まれています。
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
ERC20はEthereunmのトークンのinterfaceの標準を定めたものです。
多くのトークンに共通する標準的なインターフェースを定めることで、ウォレットやDEXなど、Ethereum上でトークンが共通して利用できるようにすることを目指しています。
ERC20に準拠したトークンを作成する際には以下のメソッドを記述する必要があります。
トークンの供給量を返す
function totalSupply() view returns (uint256 totalSupply)
あるアドレスの残高を返す
function balanceOf(address _owner) view returns (uint256 balance)
あるアドレスに指定した量を送金
function transfer(address _to, uint256 _value) returns (bool success)
あるアドレスから別のaddressに指定した量を送金
function transferFrom(address _from, address _to, uint256 _value) returns (bool success)
_spenderがアカウントから_valueの量まで複数回引き出すことを許可します。
function approve(address _spender, uint256 _value) returns (bool success)
_spenderが_ownerから引き出せる量を返します.
function allowance(address _owner, address _spender) view returns (uint256 remaining)
Eventとして以下の2つを実装
event Transfer(address indexed _from, address indexed _to, uint256 _value)
event Approval(address indexed _owner, address indexed _spender, uint256 _value)
オプショナルで以下の3つのメソッドもあります。
function name() view returns (string name)
function symbol() view returns (string symbol)
function decimals() view returns (uint8 decimals)