Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Plasma Implementation in Vyper
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ryuya Nakamura
August 30, 2018
Programming
450
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Plasma Implementation in Vyper
@blockchain.tokyo #11
Ryuya Nakamura
August 30, 2018
More Decks by Ryuya Nakamura
See All by Ryuya Nakamura
本当に「時間がなかった」のか?
nrryuya
0
470
「弁護士バイアス」とその対処法
nrryuya
2
1.7k
AIオンボーディングとAIプロセスマイニング
nrryuya
5
3.4k
アルファを作る人になる
nrryuya
0
570
学生時代のキャリア探索の心がけ
nrryuya
0
400
フィードバックされやすい人になろう
nrryuya
36
25k
間違いが許されなくてもLLMが使えるユースケースとは @GenAI Playground Meetup #01
nrryuya
13
6.5k
20240725 LLMによるDXのビジョンと、今何からやるべきか @Azure OpenAI Service Dev Day
nrryuya
4
2.8k
「知的単純作業」を自動化する、地に足の着いた大規模言語モデル (LLM) の活用
nrryuya
9
13k
Other Decks in Programming
See All in Programming
Hono + Inertia + React で LP を構築した話
oukayuka
2
190
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
160
typoなんかねぇよ
raspython3
0
620
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
570
源内ハンズオン概要編
hideg
0
230
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
230
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
270
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
740
仕様駆動開発の消費期限
watany
20
9.1k
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
860
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
520
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
560
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
670
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
490
A Soul's Torment
seathinner
6
3.5k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
510
For a Future-Friendly Web
brad_frost
183
10k
A Modern Web Designer's Workflow
chriscoyier
698
190k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
370
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
420
Transcript
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
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
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!
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
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
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
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 • 研究開発を通したコミュニティへの貢献
CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights
reserved. 8 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 2. Vyper
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
CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights
reserved. 10 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Vyper Community • 氏 の人 が開 発の中心 • のレスは早い • 隔週でオンライン
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と近い
CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights
reserved. 12 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. example: ERC20 in Vyper ↓ ↓ ↓
CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights
reserved. 13 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Vyper features デザイン原則に基づいた、 と異なる特徴 • コンパイル時の決定性 ◦ なし ▪ ループはあるが には整数リテラルしか渡せない ◦ 配列のインデックスもリテラルのみ • オーバーフロー防止 ◦ 普通の演算子がオーバーフローを対策しているので、 不要 ◦ の指数に変数は渡せない • コンパクトなコンパイラ ◦ 実装のコンパイラ ◦ を中間言語に利用
CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights
reserved. 14 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. What Vyper DOES NOT provide... デザイン原則から意図的に持たない機能 • の定義 ◦ 関数実行の前後に任意の処理を入れられて複雑、大抵は関数実行前に何か を確認する処理→シンプルに で代用 • コントラクトの継承 ◦ プログラムを読むのに複数ファイルを行き来しなくてはならない • インラインアセンブリ ◦ スタックマシンを意識して するのは本当に大変。。。 基本は改「善」と思うが、継承・無限ループが無いのはどうなんだ。。。
CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights
reserved. 15 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Vyper tools • は の • 様々なエディタプラグイン ◦ • というツールが 互換の を作ってくれる • は開発中 • 的な はない ◦ というシンプルなコンパイラ アプリはある
CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights
reserved. 16 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 3. Plasma MVP in Vyper
CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights
reserved. 17 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Plasma MVP in Vyper 目的 ①自分たちで を知るため 実際に使ってみて良し悪しを理解する 開発状況やコミュニティについて知る ② コミュニティのため まだ色々な仕様が議論中→実装例が求められている コントラクトは様々なロジックが必要 マークルプルーフ、署名検証、優先度つきキュー →ちょうど良いのでは?
CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights
reserved. 18 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Plasma MVP in Vyper 実装したコントラクトは二つだけ • コントラクト ◦ チェーンとのやりとり ◦ ライブラリ呼び出しが まだ 無いので 関数としてここに実装 ▪ 署名検証 • コントラクト ◦ 優先度つきキュー
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関数で無限ループが使えなかったため • 実装の違いは生まれた→主に「現状の」 の制約によるもの ◦ 元々 コントラクトでは継承が無く、 も だけ → のデザイン原則による 実装に悪影響はなさそう • 各種ビルトイン関数で実装が減った ▪ 不要 ▪ デコード、バイト列のスライスの関数も実装不要 ※詳しい実装の違いは の記事をご覧ください で を実装しました
CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights
reserved. 20 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Hard things ①デバッグ • デバッガがない • そもそもコントラクトは デバッグができない ◦ も したら発行されない • でひたすらビルド デプロイ • コードをコメントアウトしながら の位置を探す
CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights
reserved. 21 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Hard things ② デコーダーのデプロイ • の 関数はオンチェーンのコントラクトを する仕組み ◦ や の みたいな • など 環境で使うは事前にデプロイが必要 • を実装しました ※ ドキュメントに書いてあるアドレス・ データは使えない(?)
CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights
reserved. 22 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Contribution • 開発がてら少しだけコントリビュート ◦ ドキュメント修正プルリク バグの報告 ◦ ▪ 定数の導入 ▪ 型のみを論理値として使う ▪ 時間に関するビルトイン定数 • の反響 ◦ 界ではそこそこ? ▪ リポジトリに入ることに ◦ 署名からアドレスを取得する関数の導入が決定
CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights
reserved. 23 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Summary • は書き 読みやすくて素敵! • 新しい言語を作っていくのは楽しい • 今後も やっていきたい ◦ の 対応 間違いのご指摘やご意見は までお願いします