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
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
440
「弁護士バイアス」とその対処法
nrryuya
2
1.6k
AIオンボーディングとAIプロセスマイニング
nrryuya
5
3.1k
アルファを作る人になる
nrryuya
0
540
学生時代のキャリア探索の心がけ
nrryuya
0
380
フィードバックされやすい人になろう
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
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
190
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
13
6.2k
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
400
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
230
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
210
Agentic UI
manfredsteyer
PRO
0
190
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
220
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
260
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
1
110
Oxcを導入して開発体験が向上した話
yug1224
4
340
AIで効率化できた業務・日常
ochtum
0
140
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
740
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
870
Optimizing for Happiness
mojombo
378
71k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
We Are The Robots
honzajavorek
0
250
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
210
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Crafting Experiences
bethany
1
190
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
400
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 • は書き 読みやすくて素敵! • 新しい言語を作っていくのは楽しい • 今後も やっていきたい ◦ の 対応 間違いのご指摘やご意見は までお願いします