今日はEthereumトークンコントラクトの共通規格である「ERC20」について解説していきます。
Contents
ERC20とはトークンコントラクトの一種である
ERC20はトークンコントラクトの一種です。
トークンコントラクトとは「ユーザーのアドレスとその残高を紐づけた対応表」を持ったスマートコントラクトのことを意味します。
この対応表はSolidity上だとこのような形で定義されます。
「mapping(address => uint256)」
トークンコントラクトではトークンをやり取りするために必要となる、以下のような機能が搭載されています。
- トークンの発行
- トークンの購入
- トークンの送信
- トークンの受け取り
- etc…
Webアプリで例えると「アドレス」「残高」テーブルがあって、トークンをやり取りするための処理がアプリに記載されているようなイメージです。
スマートコントラクト上でこれが実装されたものをトークンコントラクトと言い、ERC20はこのトークンコントラクトの一種となります。
ERC20の名前の由来
ちょっと本題とは話がズレますが、ここでERC20の名前の由来を説明します。
Ethereumプロジェクトはコミュニティが運営していて、システムや運用面、ユーザー方針など様々な内容がコミュニティ内で検討されています。
その中からさらに議論が交わされ、採択されたものがEthereumへ実装されることになります。
その議論のことを「ERC(Ethereum Requests for Comments)」と言い、議論のあと採択された内容については「EIP(Ethereum Improvement Proposal)」へ記載されます。
ERCのあとにくる数字は議論された内容の順番を意味しており、ERC20であれば20番目に議論されたもの、ERC223であれば223番目に議論されたということになります。
EIPの具体的な内容はgithub上へ詳しく記載されています。
→ EIPをもっと知る
なぜERC20が使われるようになったのか
ERC20トークンはEthereumのトークンコントラクトに共通規格を設けるために提案されたもので、既存のトークンコントラクトの中では最も使われている規格です。
ERC20はただのトークンコントラクトなので、その規格を使わずともEthereum上へトークンコントラクトを開発すれば、誰でも独自のトークンを発行することが可能です。
しかし、ここまでERC20が利用されている理由はなぜなのでしょうか。
その理由について解説していきます。
トークンは規格ごとにウォレット上で管理される
トークンの管理はウォレットと呼ばれる秘密鍵を保管した箱を用いて行われます。
ウォレットはトークンの規格に合わせて開発されるため、トークンの規格が異なるとウォレットの構造も異なるものとなります。
BitcoinのウォレットへEthereumを入れることができないのと同じ原理ですね。
10万個以上もトークンが存在している今、それらすべてのトークンを手にするためには同じ数だけのウォレットを用意する必要があります。
仮にすべてのトークンを所有したとして、10万個以上のウォレットアプリを用意するのは現実的ではありません。
この問題を解決するために生まれたのがERC20です。
ERC20という共通企画を設けたことによって、ERC20規格に対応したウォレット1つで複数のトークンを管理できるようになったのです。
ユーザーの管理の手間が省けるようになっただけでなく、トークンの発行者もウォレットアプリを用意する必要がなくなり、開発コストが抑えられるようになっています。
- 1つのウォレットへ複数のトークンを格納できるようになった
- ユーザーのトークン管理コストが格段に減った
- トークン発行者はウォレットアプリを開発する必要がなくなった
ERC20トークンを利用したプロジェクト
ERC20トークンは今最も主流なトークンです。
有名ドコロだと以下のようなICOで使われています。
- OmiseGo
- Augur
- TRON
- Binance Coin
- Loom
ERC20が使われているトークンを検索できるサイトもあるので、興味があればこちらを見てみてください。
→ https://etherscan.io/tokens
ERC20トークンの実装について
追記します