プログラミングのゴミ箱

日々の学習の中で知らなかったことについて、調べたことを解説します。

Ethereum入門読んでみた②

この記事は前回の記事の続きです。
chanichiwasshoi.hateblo.jp
以下の記事を読んだ備忘録的なところを書いていきます。
Ethereumとは - Ethereum入門

Ethereumとは

Ethereumが登場する以前のブロックチェーンアプリ開発方法は主に次の2つであった。

しかし、独自に新たなブロックチェーンを開発するのはコストが掛かりすぎるし、ビットコイン上にサービスを作るとビットコインの設計による制限を受ける(ブロックの生成間隔が遅い。取引に関するデータしか扱えない など)。
そこで、誰でも簡単に分散アプリの開発が出来ることを目標に作られたのがEthereum。

Bitcoinとの違い

アカウント

 Bitcoinでは個人のデータをUTXOという形で管理していたが、Ethereumではアカウントという形で管理している。UTXOとの違いはUTXOはトランザクションの履歴を保存おり、その履歴から現在保有しているBitcoinの量を計算していたが、アカウントでは現在保有しているEthereumの量を直接管理しており、残高計算のコストがほぼ0になっている。
 アカウントは20Byteのアドレスにより参照されており、主に以下の4つのフィールドを持つ。

  • nonce: そのアカウントが送信した累積トランザクション
  • ether balance: そのアカウントが所有するether量
  • contract code: コントラクト・コード
  • storage: そのアカウントが保持する任意のデータ

 アカウントには「Externally Owned Account(EOA)」,「Contract」という2つのタイプが存在する。ContractはEOAが発信するトランザクションをトリガに、コントラクト・コードを実行する。

EOAはユーザーにより生成されるが、ContractはEOAにより生成される。

トランザクション

Ethereumのトランザクションは主に以下の情報を含む。

  • ether送金額
  • 相手先アドレス
  • 送信アカウント署名
  • 任意データ
  • STARTGAS値
  • GASPRICE値

 任意データは、送り先がContractである場合にそのコントラクト・コードに引き渡すデータを格納する。
 STARTGAS値と、GASPRICE値は、トランザクションの手数料として支払うetherの量を規定する情報。Ethereumでは実行するコードの量に応じて手数料を払う仕組みにすることで、システムが止まってしまうような致命的なコードが実行されることを避ける様になっている。
 手数料の支払いにはgasという単位を使用し、STARTGAS値がトランザクションで支払う最大のgas量。GASPRICE値がgasと内部通貨etherとの交換レートを表している。