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. Compare of Libra and Ethereum


    2019.08.29


    View Slide

  2. 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 あり あり

    View Slide

  3. 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: 不明?

    View Slide

  4. Copyright © 2019 chaintope Inc. All rights reserved.
    Transaction Structure

    4
    ● Libraではscript(payloadに格納される)に宛先のModule
    などが入るので、transaction自体には宛先フィールドは
    持っていない。

    ● Libraではscriptで送金を表すので、transactionには送金
    額を表すフィールドを持たない。

    ● Ethereumよりも、Libraのほうがscriptを載せられるため、
    transactionの表現力は柔軟。(Ethereumはデータしか載
    せられない)


    View Slide

  5. 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はそれぞれのアカウント
    自体にリソースが補完される。

    View Slide

  6. Copyright © 2019 chaintope Inc. All rights reserved.
    Libra Account access path image

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


    View Slide

  7. 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のデプロイが必須。

    View Slide

  8. 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と同
    様の手順で計算される。

    View Slide

  9. 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を持つ。

    View Slide

  10. 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を定義可能
    (フルオープン状態)

    View Slide

  11. 株式会社chaintope
    代表取締役社長 正田英樹
    福岡県飯塚市幸袋560-8
    [email protected]
    11

    View Slide