Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
480
「弁護士バイアス」とその対処法
nrryuya
2
1.7k
AIオンボーディングとAIプロセスマイニング
nrryuya
6
3.5k
アルファを作る人になる
nrryuya
0
570
学生時代のキャリア探索の心がけ
nrryuya
0
400
フィードバックされやすい人になろう
nrryuya
37
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
Building an Out-of-Order CPU
latte72
1
790
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
290
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
370
AIエージェント時代のコードレビューを設計する
nogu66
6
2.7k
iOSDC2026登壇資料.pdf
riofujimon
0
170
一人だけ、Kiroが静止する日
hideg
0
120
XHTMLが残したもの
yosuke_furukawa
PRO
2
810
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
150
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
180
Are APIs Still Relevant in the AI Era?
soyuka
0
260
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
430
Heart of Swift Concurrency
koher
0
890
Featured
See All Featured
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
990
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
690
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
My Coaching Mixtape
mlcsv
0
320
Leo the Paperboy
mayatellez
10
2.3k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
520
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
530
Abbi's Birthday
coloredviolet
4
10k
HDC tutorial
michielstock
2
870
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 • は書き 読みやすくて素敵! • 新しい言語を作っていくのは楽しい • 今後も やっていきたい ◦ の 対応 間違いのご指摘やご意見は までお願いします