Slide 1

Slide 1 text

Rustで実装された Libra Move言語とは cipepser 2019/7/30 Roppongi.rs #1

Slide 2

Slide 2 text

自己紹介 ● cipepser(さいぺ) ● Fintertech株式会社 ● Rust歴: 1年半くらい ● 経歴 ○ SIerで証券系システムのネットワーク設計、構築 ● 最近の趣味プロジェクト ○ 自作Protocol Buffersデコーダ(Golang) ○ Monkey言語のRust実装 ■ Lexerまでは実装済み。AST設計中。 ■ コンパイラとVMの実装までやりきりたい

Slide 3

Slide 3 text

本日の内容 ● Libraとは ● Move言語とは ● ブロックチェーン上にアセットを載せる難しさ ● 既存のブロックチェーン言語の課題 ● Moveの設計 ● Moveに触るには

Slide 4

Slide 4 text

Libraとは ● 2019年6月にFacebookが発表した金融プラットフォーム ● ミッション「多くの人びとに力を与える、シンプルで国境のないグローバルな通貨と 金融インフラになる」 ● BFTモデルのLibra Blockchainが基盤 ● とにかくメンバーが強い 1) The Libra Whitepaper - Blockchain, Association, Reserve | Libra https://libra.org/ja-JP/white-paper/#introduction 2) Facebook’s cryptocurrency partners revealed—we obtained the entire list of inaugural backers - The Block https://www.theblockcrypto.com/2019/06/14/facebooks-cryptocurrency-partners-revealed-we-obtained-the-entire-list-of-inaugural-backers/

Slide 5

Slide 5 text

Move言語とは ● Libraでスマートコントラクトを書く言語 ● Move自体はRustで実装されている ○ 安全とセキュリティを重視 ● 静的型付けのバイトコード言語 ○ VMで実行 ○ bytecode verifierによるチェック

Slide 6

Slide 6 text

デジタル・アセットをオープンシステムに載せる難しさ ● Scarcity(希少性) ○ 無から有を生み出せないこと ○ 複製できないこと ● Access control ○ 所有者だけがアセットをコントロールできること

Slide 7

Slide 7 text

既存のブロックチェーン言語の課題 ● 資産を直接エンコードできない ○ 資産をIntegerで表現 ○ 型がない ○ エラーハンドリングはどうやって? ● Scarcityの実装が開発者に委ねられる ○ 言語のサポートなしに、注意深く実装しなければならない ● Access controlが柔軟でない ○ 署名スキームベースが主流

Slide 8

Slide 8 text

Moveの設計 ● first-class assets ○ resource typeを定義できる(資産を表現) ○ コピーと破棄は明示的に行う( copy/move) ● flexibility ○ Move言語: modules/resources/produres ○ オブジェクト指向言語 : classes/objects/methods ● safety ○ bytecode verifierによるoff-chain解析 ● verfiability ○ 動的ディスパッチを行わない ■ コールグラフが複雑にならない ○ mutabilityの制限(valueの変更はreference経由。Rustの所有権システムの力を借りる) ○ モジュール化によるデータ抽象化

Slide 9

Slide 9 text

Moveにふれるには ● Githubで公開されている ○ https://github.com/libra/libra/tree/master/language ● 社内ブログもご一読ください ○ Facebook libraのMove言語でスマートコントラクトを書いてみる ■ https://note.mu/fintertech/n/n3334c5a021e9 ● とはいえ、まだまだ発展途上 ○ 現時点ではLibra Blockchainにデプロイできない ■ ローカルでのテストはできる ○ ドキュメントや開発ツールも揃っていない ■ コードハイライトやsuggestionが早く欲しい ■ buitlinsの一覧はWPのappendixに載ってる ○ CollectionやGenericsも将来対応するらしい( WPより) ■ 今はByteArrayとStructくらい