ERC20トークンで実装すべきメソッドとイベントの解説




 

ERC20トークンでは下記の8個のメソッドと2個のイベントの実装が仕様で決められています。下記GitHubの内容を和訳した内容になります。

eip-20-token-standard:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md

メソッド

name

トークンの名称を返します。

オプション – このメソッドを使用してユーザビリティを向上させることができますが、インタフェースや他のコントラクトではこれらの値が存在するとは限りません。

function name() constant returns (string name)

symbol

トークンのシンボルを返します。例えばETHのようなアルファベット3文字などを設定します。

オプション – このメソッドを使用してユーザビリティを向上させることができますが、インタフェースや他のコントラクトではこれらの値が存在するとは限りません。

function symbol() constant returns (string symbol)

decimals

トークンが使用する小数点以下の桁数を返します。例えば8を指定した場合、トークン量を100000000で除算してユーザ表現を得ることを意味する。

オプション – このメソッドを使用してユーザビリティを向上させることができますが、インタフェースや他のコントラクトではこれらの値が存在するとは限りません。

function decimals() constant returns (uint8 decimals)function decimals() constant returns (uint8 decimals)

totalSupply

発行済トークン数を返します。

function totalSupply() constant returns (uint256 totalSupply)

balanceOf

_ownerというアドレスの別のアカウントの残高を返します。

function balanceOf(address _owner) constant returns (uint256 balance)

transfer

_value分のトークンを_toに転送し、Transferイベントを発生させなければなりません。 _fromのアドレスに十分なトークンがない場合は、関数はスローしなければならない。 0の値の転送は、通常の転送として扱われなければならず、転送イベントを発生させなければならない。

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

transferFrom

トークンの_value量をアドレス_fromからアドレス_toに転送し、Transferイベントを発生させなければなりません。

transferFromメソッドは、ワークフローを取り消すために使用され、契約が代理でトークンを転送できるようにします。これは、例えば、契約があなたのためにトークンを転送すること、および/またはサブカードで料金を請求するために使用できます。 _fromアカウントが何らかの仕組みを介して意図的にメッセージの送信者を承認していない限り、throwしなければなりません。 0の値の転送は、通常の転送として扱われなければならず、転送イベントを発生させなければならない。

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

approve

_spenderが_value分まで複数回あなたの口座から退出することを許可します。この関数を再度呼び出すと、現在の余裕が_valueで上書きされます。

注:ここで説明し、ここで説明するような攻撃ベクトルを防ぐために、クライアントは、同じ払い人の別の値に設定する前に、最初に余裕を0に設定するようにユーザーインターフェイスを作成する必要があります。今まで契約していた契約との下位互換性を保つために、契約自体がそれを強制すべきではありません

function approve(address _spender, uint256 _value) returns (bool success)

allowance

_spenderが引き続き_ownerから引き出すことができる量を返します。

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

Events

Transfer

ゼロ値転送を含むトークンが転送されたときにトリガする必要があります。

新しいトークンを作成するトークン契約は、_fromアドレスが0x0に設定されたTransferイベントを、トークンが作成されたときにトリガすべきである。

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

Approval

承認に成功した呼び出し(アドレス_spender、uint256 _value)をトリガしなければならない。

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

おすすめ書籍

Ethereumを使ったDApps開発を学びたいなら今だとこの1冊が1番良いです!開発環境の構築から使うべきツール、フレームワーク、実装方法・注意点まで網羅的に解説されている書籍なのでおすすめです。出版も2018年1月ということでかなり新しい本で、DMM Bitcoinを作っているネクストカレンシー所属の方が書いているので信頼できます。

ビットコインとブロックチェーンの詳細をしっかりと学びたい方にはこちらの書籍が非常におすすめです。ウォレットの仕組み、楕円曲線暗号、P2Pプロトコル、公開鍵暗号などビットコインを支える技術について詳細に解説されています。また、サンプルコードを通して実際に手を動かして学べるので非常に濃い内容となっています。

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です