Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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!

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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 ● 研究開発を通したコミュニティへの貢献

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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と近い

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 15 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Vyper tools ● は の ● 様々なエディタプラグイン ○ ● というツールが 互換の を作ってくれる ● は開発中 ● 的な はない ○ というシンプルなコンパイラ アプリはある

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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関数で無限ループが使えなかったため ● 実装の違いは生まれた→主に「現状の」 の制約によるもの ○ 元々 コントラクトでは継承が無く、 も だけ → のデザイン原則による 実装に悪影響はなさそう ● 各種ビルトイン関数で実装が減った ■ 不要 ■ デコード、バイト列のスライスの関数も実装不要 ※詳しい実装の違いは の記事をご覧ください で を実装しました

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 22 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Contribution ● 開発がてら少しだけコントリビュート ○ ドキュメント修正プルリク バグの報告 ○ ■ 定数の導入 ■ 型のみを論理値として使う ■ 時間に関するビルトイン定数 ● の反響 ○ 界ではそこそこ? ■ リポジトリに入ることに ○ 署名からアドレスを取得する関数の導入が決定

Slide 23

Slide 23 text

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