Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Compare of Libra and Ethereum

Compare of Libra and Ethereum

For clarify to differ of Ethereum and Libra.

nakajo2011

August 29, 2019
Tweet

More Decks by nakajo2011

Other Decks in Programming

Transcript

  1. Copyright © 2019 chaintope Inc. All rights reserved. Abstract Comparison


    2 
 Ethereum Libra UTXO/アカウント アカウントモデル アカウントモデル 楕円曲線 secp256k-1 Ed25519 コンセンサス Proof-of-Work -> Proof-of-Stake Libra BFT(HotStuff ex) state data model Patricia merkle tree Account path and Merkle tree VM チューリング性 チューリング完全 チューリング完全 基礎通貨 ETH なし コントラクト スマートコントラクト Module state data スマートコントラクトに定義された任意のデー タ Moduleに定義されたResource (Resource自体は内部に任意の データ構造を保有可能) gas model あり あり
  2. Copyright © 2019 chaintope Inc. All rights reserved. Transaction Structure


    3 
 Ethereum Libra to: 宛先アドレス sender: sender authentication key value: 送信ETH量 sequence number gas: gas limit expiration time gas price: 1gasあたりに支払う手数料価格 max gas amount: Ethereumでいうgas limit nonce: sequence no gas unit price: Ethereumでいうgas price data: data payload payload: Ethereumでいうdata 署名 sender signature sender public key unknown field: 予約フィールド? cached_size: 不明?
  3. Copyright © 2019 chaintope Inc. All rights reserved. Transaction Structure


    4 • Libraではscript(payloadに格納される)に宛先のModule などが入るので、transaction自体には宛先フィールドは 持っていない。
 • Libraではscriptで送金を表すので、transactionには送金 額を表すフィールドを持たない。
 • Ethereumよりも、Libraのほうがscriptを載せられるため、 transactionの表現力は柔軟。(Ethereumはデータしか載 せられない)

  4. Copyright © 2019 chaintope Inc. All rights reserved. Account(World State)

    Structure
 5 
 Ethereum Libra nonce Modules balance Resources code hash stateRoot • Ethereumは1つのアカウントに1つのコードしかもてないが、Libraではアカウ ントに複数のモジュールがぶら下がる。 • Libraではあるアカウントに対してリソースがぶら下がる。Ethereumではコント ラクトの状態はコントラクトアカウントに紐づくが、Libraはそれぞれのアカウント 自体にリソースが補完される。 •
  5. Copyright © 2019 chaintope Inc. All rights reserved. Libra Account

    access path image
 6 accountの下に保存されるmodulesとresourcesの例。これらの値を /accesspath/0x56.Currency.T のpath形式で保存する。

  6. Copyright © 2019 chaintope Inc. All rights reserved. Account creation


    7 
 Ethereum Libra ETH or codeが初めて記録された時点で、 Account Stateが作成される。 AccountはLibraAccountという特別なModuleをデ プロイすることで作成される。 Accountの作成には すでにAccountを保有している人の協力が必要。 (テストネットでは権限アカウントがおり、そのアカ ウントから新しいアカウントが作成されている) アカウントの作成には、作成先の公開鍵アドレス を指定する。このアカウントの状態を操作するた めには対応する秘密鍵が必要となる。 Libraでは基本的に何かしらの Moduleを作成しな い限りstateの保存ができない。そのため、 Accountを作成=Moduleのデプロイが必須。
  7. Copyright © 2019 chaintope Inc. All rights reserved. Gas computation


    8 Ethereum Libra gas代、つまり手数料はTransactionに指定された gasLimit * gasPriceから算出され、ETHで支払われ る。これらの計算はnodeがvmの起動した結果として 消費したgas量を元に計算される。 gas limit - used gasの差分(つまり未使用分の gas = お釣り)はアカ ウントに返却される。 vm実行時にgas usedが計算される。このgasを 何で支払うのかはLibraAccountの実装次第であ る。つまり、gas代を支払わないというのも理論上 可能。またどのコインで支払うかも LibraAccount 次第。 とはいえ、現状はstdlibとしてあらかじめ用意され たLibraAccountが展開されるため、 0x0.LibraCoin.Tでgas代を支払う必要がある。 この時のgas代の算出については Ethereumと同 様の手順で計算される。
  8. Copyright © 2019 chaintope Inc. All rights reserved. Base Assets


    9 Ethereum Libra ETHがベースアセット。つまり Ethereumネットワーク 上での基軸通貨。 Ethereumではスマートコントラクトを展開せずとも ETHの送金は行える。 ベースアセットは存在しない。最初のリリースでは 0x0.LibraCoin.Tをベースアセットのように扱う が、これ以外のアセットもリソースとして任意に定 義可能。 LibraではModuleを展開しないと送金も行えな い。基本的にリソースを扱うためには必ずそのリ ソースの操作を定義した Moduleを展開する必要 がある。 各アカウントはModuleを介してリソースを操作す る。また、任意のリソースを保存するためにも、 Moduleが必要となる。 現状のLibraでは0x0.LibraCoint(Module)と 0x0.LibraCoint.T(Resource)が展開されており、 アカウントを作成すると LibraAccountが展開され る。LibraAccountが0x0.LibraCoint.Tの保有と操 作を行うためのmethodを持つ。
  9. Copyright © 2019 chaintope Inc. All rights reserved. VM publishment


    10 Ethereum Libra 任意のアカウントが任意のスマートコントラクトを展 開可能。 stdlibにあらかじめ定義されている Moduleのみが 展開可能。 また、同様に、Transactionのscriptとして指定で きるものもstdlibにあらかじめ定義されているもの のみ。 Libraではこの制限を段階的に解放する仕組みが すでに実装されている。以下の3段階で順次オー プンにしていく。 1. 制限状態(現状) 2. 任意のtransaction scriptを定義可能 (Moduleはまだ制限された状態) 3. 任意のModuleおよび、scriptを定義可能 (フルオープン状態)