ERC20を理解する

この記事は、読者が少なくとも次の概念にすでに精通していることを前提としています:イーサリアムブロックチェーン、dapps、イーサリアム、スマートコントラクト & ICO.

簡単に要約すると、イーサリアムブロックチェーンは分散型のオープンソースブロックチェーンベースのコンピューティングプラットフォームです。このコンピューティングプラットフォームであるイーサリアムネットワークは、スマートコントラクトという名前のコードのチャンクで実行される分散型アプリケーション(dapps)をホストします。イーサリアムネットワーク上のすべてのトランザクション、およびスマートコントラクトを実行するためのコンピューティングコストは、イーサリアム暗号通貨イーサリアムで支払われます.

これらのdapp(分散型アプリ)のすべてではありませんが、一部は追加のdapp内通貨を必要とします—これらのdappはトークンという名前の新しい通貨を導入し、イニシャルコインオファリング(ICO)を通じて資金を調達します.

イーサリアムブロックチェーンプラットフォームは、作成、メンテナンスが必要なものを含む、あらゆる種類のdappを奨励するように構築されています & デジタル資産の譲渡。これらのdapp固有のEthereumトークンは、次のような意味のあるユースケースを持つdappのネットワークを作成するために実装できます。 請求書ファクタリング, ブラウザ全体の支払い, & 暗号通貨デビットカード.

前述のすべてのアイデアは、非常に一般的なトークンプログラミング標準に準拠した現在ライブのイーサリアムベースのdappトークンです。実際、デプロイされたすべてのイーサリアムトークンの99%は、この標準であるERC20標準に準拠しています。.

Ethereum Requests for Commentの略であるERC20トークン標準は、すべてのイーサリアムベースのトークンが従うことが期待されるプログラミング「ルール」の標準セットです。. 開発者はこれらの6つの機能に同意しました & イーサリアムネットワークを介して通信する際に予想される動作を正規化するための最小限の実行可能なトークンとしての2つのイベント—このプロトコルを確立することにより、イーサリアム開発者は外部のスマートコントラクトを簡単に操作できます.

Solidityの紹介

最も人気のあるイーサリアムが クライアント 現在、 GoogleのGO, 開発者に優しいスマートコントラクト言語の選択肢は豊富です。開発者は、次のような言語から選択できます ヴァイパー,, & 堅牢性.

この記事の残りの部分では、ハイライトします & ウォークスルーSolidity構文.

Solidityは、スマートコントラクトの実装に使用される高レベルのコントラクト指向プログラミング言語です。 Solidity構文は、プログラミングに精通している人にとっては、Javascript、Pythonのミッシュマッシュです。, & Cの概念;静的に型付けされ、継承をサポートします & 最初からたくさんのライブラリがあります。 Solidityの詳細については、次のドキュメントを参照してください。 https://solidity.readthedocs.io/en/develop/#

ERC20インターフェースのチュートリアル

正確に何を掘り下げるかをもう少し深く掘り下げていきます & この標準がイーサリアムネットワーク全体にどのように実装されているか—前述のように、これについては特にSolidity構文で説明します.

イーサリアムランドでは、すべてが始まります & で終わる 契約. Solidityのドキュメントでは、契約を「コードのコレクション( 機能) & データ(その 状態)イーサリアムブロックチェーンの特定のアドレスに存在します。」イーサリアムコントラクトは継承をサポートしているため、コントラクトは別のコントラクトのインスタンスになることができます.

このロジックに従って、厳密に継承に使用される抽象コントラクトを、新しいコントラクトを定義することでフェイルセーフとして使用することもできます。 しなければならない コンパイルするために含まれています。これらの抽象的な契約は、としても知られています インターフェイス契約.

これは、ERC20インスタンスであるトークンコントラクトは、以下がないとコンパイルされないことを意味します。対照的に、これはイーサリアム開発者がどの機能を知っているかを意味します & ERC20トークンと対話するときに期待できる動作.

ERC20標準は、合計6つの実行可能関数を含むインターフェースコントラクトです。 & 2つのロギングイベント.

手当

Allowance機能を使用すると、2つのアドレスで繰り返し単方向転送を作成できます。ウォレットアドレス tokenOwner & 2番目 財布の消費者 は、繰り返しトランザクションを実行する2つのウォレットとして定義されます。具体的には、ウォレットの消費者は撤退します いくつか ウォレットtokenOwnerからの金額 いくつか 間隔–これらは両方とも後で決定される変数です.

承認する

承認機能については、アローワンス機能を参照してください。この機能では、2つのアドレスを一方向に繰り返し撤回することができます。承認関数は、適切な名前が付けられており、ウォレットの所有者に、アローワンスのコンテキストで自分に代わって行われるトランザクションを「承認」するように要求する単純な標準関数です。この関数には、消費者の住所という2つの入力が必要です。 & 送信されるトークンの量。出力は、承認が提供されたか拒否されたかを示すパブリックブール値を返します.

BalanceOf

BalanceOfは、単一のアドレス入力パラメーター(アドレスtokenOwner)を受け入れる直感的な関数です。 & 単一のパブリック定数(uintバランス)を返します。返されるuint定数、balanceは、クエリされたアドレスが保持するトークンの量を表します—覚えておいてください、ブロックチェーン上のトランザクションは通常パブリックであり、Ethereumも例外ではありません.

TotalSupply

totalSupply関数は、名前から推測できるように、ライブのイーサリアムネットワークへのデプロイの最初の瞬間に1回だけ実行される匿名のコンストラクター関数です。この関数は、パブリック定数totalSupplyの割り当てられていない整数(uint)を返します。これは、契約期間の残りの期間のトークンの合計供給量として機能します。このtotalSupply定数は通常、変数のハードコーディングまたはオリジンウォレットからの資金調達の2つの方法のいずれかで定義されます。.

転送

伝達関数は、ERC20トークンのコア関数です。それは定義します & 直接実装 ウォレット所有者からピアへ トークン転送。ウォレットの所有者がこの呼び出しを行うため、必要なパラメーターは2つだけです。受信者のアドレス & 送信されるトークンの量。これらの2つのパラメーターは通常、(アドレス先)として初期化されます。 & (uintトークン)。転送の戻り値は、受信者(「宛先」アドレス)が送信されたトークンを受信したかどうかを確認する単なるブール値です。.

からの転送

TransferFrom関数は スマートコントラクト 渡されたパラメータで転送を実行するには ウォレットの所有者に代わって. 前のものと慎重に区別する Transfer関数。前の関数は 財布の所有者 トークンをアドレスに直接送信する。この からの転送 を可能にします スマートコントラクト 取引所での注文の履行、タイムリーな資金の解放、運が左右するゲームでの賞金の支払いなど、ウォレットの所有者に代わってトークンを送信するため.

ザ・ からの転送 関数には、ウォレットの所有者のアドレス、レシーバーのウォレットのアドレスの3つの入力パラメーターがあります。, & 送信されたトークンの量。多くの場合、次の構文で初期化されます:(アドレスfrom、アドレスto、uintトークン)。関数の出力は、転送の出力とまったく同じです。トランザクションの成功または失敗の詳細を示す単一のパブリックブール値です。.

概要

上記の6つの機能は、現在稼働中のすべてのERC20トークンの99%に見られる6つのコア機能です。いくつかの例外を除いて(ゴーレムを見て)、イーサリアムの開発者は、内部契約を開発するとき、または実際に外部の公共契約とやり取りするときに、これらのコア機能を完全に期待できることを知って安心できます。.