テクノロジー

いまさら聞けないERC20トークン

nano's icon'
  • nano
  • 2020/05/02 16:11

ERC20についてsolidityの実装と一緒にどんなものなのかをまとめます。

ERCというのは"Ethereum Request for Comments"の略です。多くのプロトコルがRFC (Request For Comments)というアイデアと実装コードを付けたものを提案してそれをみんなで評価し、評価が良ければ実装という形で新しい機能を追加していきます。ERCはそれのイーサリアム版ですね。ちなみに現在ではEIP (Ethereum Improvement Proposal)と名前を変えています。番号は提案された順なのでたまたま20ですね。

ERC20はトークン基準の提案でした、つまりこういう機能を持ったトークン基準を作ればEthereumでいい感じに運用できるやろ!みたいなことです。提案者の片方はEthereumの開発主導でもあるVitalik Buterinですね。そもそもトークンって何?な人はこちら

要するに、ここにある関数を実装してるトークンならイーサリアムのWalletや取引所で扱える、逆に言えばこのインターフェースさえ実装してくれたらどんな名前の誰が発行したトークンでもいろんな場所で取引できるようになる、という最低限?の基準です。

Content image

 

以下はsolidityの実装ガイドラインです(ALISさんのコード埋め込みSolidity未対応なんや😭😭)。

Method

name : (オプショナル)トークンの名前です、なくてもいいんや

function name() public view returns (string)

symbol:(オプショナル)トークンのシンボルですね、ETHとか、なくてもいいんや

function symbol() public view returns (string)

decimals:(オプショナル)トークンの桁数ですね、ここにある桁数分割ってユーザには表示します

function decimals() public view returns (uint8)

totalSupply:トークンの総供給量を返します

function totalSupply() public view returns (uint256)

balanceOf:引数にアドレス_ownerを取り、_ownerアドレスにある子のトークンの残高を返します

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

transfer:引数にアドレス_toと数値_valueを取り、_to のアドレスに_value分だけトークンを送ります。Transferというイベントを発火する必要があります、もし送信主のアカウントが_value以下の残高しかなければ何かのメッセージをTHROWする必要があります。成功したかどうかの真偽値を返します。

function transfer(address _to, uint256 _value) public returns (bool success)

transfarFrom:引数にアドレス_toとアドレス_fromと数値_valueを取り、_fromアドレスから_toアドレスに_value分のトークンを送ります。送信するアドレスを自分以外のアドレスにできます。引き下ろしに使えます。成功したかどうかの真偽値を返します。

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)

approve:引数にアドレス_spenderと数値_valueを取ります。アドレス_spenderが自分のアドレスから_value分のトークンをほかの場所に移すことを許可します。_valueより小さい値なら複数回のトランザクションも可能です。

function approve(address _spender, uint26 _value) public returns (bool success)

allowance:引数にアドレス_spenderとアドレス_ownerを取ります。_spenderが_ownerから引き下ろせるこのトークンの量を返します

function allowance(address _spender, address _owner) returns (uint256 remaining)

Event

Transfer:トークンが送信されたときに発火する必要があります、送信されるトークンの量がゼロでも発火される必要があります。変数としてアドレス_fromとアドレス_toと数値_valueがあります。新しいトークンを発行(mint)するときにもこのイベントが発火する必要があり、その場合には_fromに0x0(ゼロアドレス)が入ります。

event Transfer(address indexed _from, address indexed _to, uint256 _value)

Approval:approve関数がsuccessしたときに発火します。変数としてアドレス_ownerとアドレス_spenderと数値_valueがあります。

event Approval(address indexed _owner, address indexed _spender, uint256 _value)

これらの関数とイベントのうちオプショナルなもの以外はすべて実装してやっとERC20トークン基準を満たしたトークンといえるわけですね。

こう見ると実際価値の交換に必要な処理(Method)と記録に残しておくべきデータ(Event)がわかりやすく、綺麗に抽出されててすごいですね。

実際ERC20トークンを実装したトークンのスマートコントラクトの例はオープンツェッペリンさんやコンセンシスさんが出していたりします。

 

Article tip 0人がサポートしています
獲得ALIS: Article like 19.41 ALIS Article tip 0.00 ALIS
nano's icon'
  • nano
  • @cryptoMedNano
コンピュータサイエンス専攻じゃないけどITに興味がある学生。英語、中国語もサポートしています。

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
テクノロジー

iOS15 配信開始!!

Like token Tip token
7.20 ALIS
Eye catch
クリプト

Uniswap v3を完全に理解した

Like token Tip token
18.92 ALIS
Eye catch
他カテゴリ

ALISのシステム概観

Like token Tip token
5.00 ALIS
Eye catch
クリプト

NFT解体新書・デジタルデータをNFTで販売するときのすべて【実証実験・共有レポート】

Like token Tip token
120.79 ALIS
Eye catch
テクノロジー

彼女でも分かるように解説:ディープフェイク

Like token Tip token
32.10 ALIS
Eye catch
テクノロジー

オープンソースプロジェクトに参加して自己肯定感を高める

Like token Tip token
85.05 ALIS
Eye catch
他カテゴリ

機械学習を体験してみよう!(難易度低)

Like token Tip token
69.82 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

Like token Tip token
38.31 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

Like token Tip token
61.20 ALIS
Eye catch
クリプト

17万円のPCでTwitterやってるのはもったいないのでETHマイニングを始めた話

Like token Tip token
46.60 ALIS
Eye catch
クリプト

スーパーコンピュータ「京」でマイニングしたら

Like token Tip token
1.06k ALIS
Eye catch
クリプト

Bitcoinの価値の源泉は、PoWによる電気代ではなくて"競争原理"だった。

Like token Tip token
159.32 ALIS