$30 off During Our Annual Pro Sale. View Details »

Plasma Implementation in Vyper

Plasma Implementation in Vyper

@blockchain.tokyo #11

Ryuya Nakamura

August 30, 2018
Tweet

More Decks by Ryuya Nakamura

Other Decks in Programming

Transcript

  1. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    1
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    Plasma Implementation in Vyper
    Aug-2018
    @veryNR

    View Slide

  2. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    2
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    自己紹介
    ● LayerX Inc.
    ○ Engineer/Researcher
    ● Interests
    ○ Plasma
    ○ State Channel
    ○ Vyper
    Twitter: @veryNR
    GitHub: nrryuya
    Ryuya Nakamura

    View Slide

  3. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    3
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    Plasma implementation in Vyper!
    https://github.com/LayerXcom/plasma-mvp-vyper
    Issues & pull requests are welcome!

    View Slide

  4. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    4
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    1:About LayerX R&D Team
    2:Vyper
    Agenda
    3:Plasma MVP in Vyper

    View Slide

  5. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    5
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    1. About LayerX R&D Team

    View Slide

  6. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    6
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    About LayerX R&D Team

    Ryuya Nakamura
    ● Ex data engineer @Gunosy
    ● Twitter: veryNR
    ● GitHub: nrryuya

    Osuke Sudo
    ● Owner of the blog “Zoom”
    ● Twitter: zoom_zoomzo
    ● GitHub: osuketh

    View Slide

  7. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    7
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    About LayerX R&D Team
    ポリシー
    ● 新技術にコミット
    ● キャッチアップで終わらない
    ● 全てオープンにやる
    リサーチテーマ
    ● Plasma
    ● State Channel
    ● Vyper
    ● Automatic code audit
    ● BLS signature
    ● DEX, Protocols for financial derivatives

    研究開発を通したコミュニティへの貢献

    View Slide

  8. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    8
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    2. Vyper

    View Slide

  9. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    9
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    ● PythonライクなEVM向けスマートコントラクト言語
    ● 元々はVitalikが開発した言語
    ○ Casper FFGのコントラクトをVyperで書いたりしてた
    ● Ethereum Foundationのgrant programにある
    ● ベータ版なので本番ではまだ使われていない はず
    ● 公開されている実装例




    ■ っぽい で、 もらってた
    Vyper

    View Slide

  10. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    10
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    Vyper Community
    ● 氏 の人 が開
    発の中心
    ● のレスは早い
    ● 隔週でオンライン

    View Slide

  11. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    11
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    Vyper
    デザイン原則(公式ドキュメントより)
    ● Security:
    ○ 安全なスマートコントラクトを自然に開発できるように
    ● Language and compiler simplicity:
    ○ 言語とコンパイラの実装をシンプルに
    ● Auditablity:
    ○ コードは最大限human-readableに
    ○ 読み手のシンプルさ > 書き手のシンプルさ
    →Pythonと近い

    View Slide

  12. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    12
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    example: ERC20 in Vyper



    View Slide

  13. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    13
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    Vyper features
    デザイン原則に基づいた、 と異なる特徴
    ● コンパイル時の決定性
    ○ なし
    ■ ループはあるが には整数リテラルしか渡せない
    ○ 配列のインデックスもリテラルのみ
    ● オーバーフロー防止
    ○ 普通の演算子がオーバーフローを対策しているので、 不要
    ○ の指数に変数は渡せない
    ● コンパクトなコンパイラ
    ○ 実装のコンパイラ
    ○ を中間言語に利用

    View Slide

  14. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    14
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    What Vyper DOES NOT provide...
    デザイン原則から意図的に持たない機能
    ● の定義
    ○ 関数実行の前後に任意の処理を入れられて複雑、大抵は関数実行前に何か
    を確認する処理→シンプルに で代用
    ● コントラクトの継承
    ○ プログラムを読むのに複数ファイルを行き来しなくてはならない
    ● インラインアセンブリ
    ○ スタックマシンを意識して するのは本当に大変。。。
    基本は改「善」と思うが、継承・無限ループが無いのはどうなんだ。。。

    View Slide

  15. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    15
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    Vyper tools
    ● は の
    ● 様々なエディタプラグイン

    ● というツールが 互換の を作ってくれる
    ● は開発中
    ● 的な はない
    ○ というシンプルなコンパイラ アプリはある

    View Slide

  16. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    16
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    3. Plasma MVP in Vyper

    View Slide

  17. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    17
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    Plasma MVP in Vyper
    目的
    ①自分たちで を知るため
    実際に使ってみて良し悪しを理解する
    開発状況やコミュニティについて知る
    ② コミュニティのため
    まだ色々な仕様が議論中→実装例が求められている
    コントラクトは様々なロジックが必要
    マークルプルーフ、署名検証、優先度つきキュー
    →ちょうど良いのでは?

    View Slide

  18. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    18
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    Plasma MVP in Vyper
    実装したコントラクトは二つだけ
    ● コントラクト
    ○ チェーンとのやりとり
    ○ ライブラリ呼び出しが まだ 無いので 関数としてここに実装
    ■ 署名検証
    ● コントラクト
    ○ 優先度つきキュー

    View Slide

  19. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    19
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    Plasma MVP in Vyper
    ● 仕様に関してSolidity実装と違いはほぼ生まれなかった
    ○ priority queueのサイズに制約を加える必要はあった
    ○ finalizeExit関数で無限ループが使えなかったため
    ● 実装の違いは生まれた→主に「現状の」 の制約によるもの
    ○ 元々 コントラクトでは継承が無く、 も だけ
    → のデザイン原則による 実装に悪影響はなさそう
    ● 各種ビルトイン関数で実装が減った
    ■ 不要
    ■ デコード、バイト列のスライスの関数も実装不要
    ※詳しい実装の違いは の記事をご覧ください
    で を実装しました

    View Slide

  20. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    20
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    Hard things
    ①デバッグ
    ● デバッガがない
    ● そもそもコントラクトは デバッグができない
    ○ も したら発行されない
    ● でひたすらビルド デプロイ
    ● コードをコメントアウトしながら の位置を探す

    View Slide

  21. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    21
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    Hard things
    ② デコーダーのデプロイ
    ● の 関数はオンチェーンのコントラクトを する仕組み
    ○ や の みたいな
    ● など 環境で使うは事前にデプロイが必要
    ● を実装しました
    ※ ドキュメントに書いてあるアドレス・ データは使えない(?)

    View Slide

  22. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    22
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    Contribution
    ● 開発がてら少しだけコントリビュート
    ○ ドキュメント修正プルリク バグの報告

    ■ 定数の導入
    ■ 型のみを論理値として使う
    ■ 時間に関するビルトイン定数
    ● の反響
    ○ 界ではそこそこ?
    ■ リポジトリに入ることに
    ○ 署名からアドレスを取得する関数の導入が決定

    View Slide

  23. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    23
    CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved.
    Summary
    ● は書き 読みやすくて素敵!
    ● 新しい言語を作っていくのは楽しい
    ● 今後も やっていきたい
    ○ の 対応
    間違いのご指摘やご意見は までお願いします

    View Slide