Slide 1

Slide 1 text

Powered by DMM Blockchain Labs 1 なぜBlockchainは
 Rustを選ぶのか


Slide 2

Slide 2 text

自己紹介 - About me
 @ DMM.com Jikyung Kim(金 志京) ・DMM.com Blockchain Engineer ・Blockchain研究・開発 ・スニーカー、ロードバイク @jkcomment 2

Slide 3

Slide 3 text

書籍紹介 - Publishing
 @ DMM.com 3

Slide 4

Slide 4 text

Agenda
 @ DMM.com ● Rustの現状 ● なぜBlockchainはRustを選ぶのか ● まとめ 4

Slide 5

Slide 5 text

Rustの現状
 5

Slide 6

Slide 6 text

Rust?
 @ DMM.com ● Rustとは? ○ システムプログラミング言語 ○ 安全性(型安全、メモリ安全) ○ 速度(C, C++並) ○ コンパイラが優秀 ○ FireFox, Dropbox, Dwango etc... 6

Slide 7

Slide 7 text

Rust?
 @ DMM.com ● Stack Overflow 2018年の調査結果でRustが一番好きな言語に! 7

Slide 8

Slide 8 text

Rustの現状
 @ DMM.com 8

Slide 9

Slide 9 text

Rustの現状
 @ DMM.com 9 Rustやめますか!

Slide 10

Slide 10 text

Rustの現状
 @ DMM.com ● Rust実装の有名なサービスがまだない(少ない) ● Rust実装の有名なOSSプロジェクトがまだない ● システム系 + 組み込み系はC言語1強 ● 学習コストが高い ● なんか難しそうー 10

Slide 11

Slide 11 text

なぜBlockchainは
 Rustを選ぶのか
 11

Slide 12

Slide 12 text

Blockchainとは
 @ DMM.com ● Blockchain? ○ P2Pで形成されたネットワーク上で動作する分散型台帳システム ○ 「ブロック」と呼ばれるデータの単位を一定時間ごとに生成し、チェーン のように連結していくことによりデータを保管する ○ 取引情報やブロックはハッシュ関数で暗号化される 12

Slide 13

Slide 13 text

Blockchain Nodeの実装例
 @ DMM.com ● C++: bitcoin, EOS, Zilliqa ● Go: Ethereum, Klaytn, Quorum 13

Slide 14

Slide 14 text

Blockchain Nodeの実装例
 @ DMM.com ● C++: bitcoin, EOS, Zilliqa ● Go: Ethereum, Klaytn, Quorum ● Rust: Ethereum(Parity), Polkadot(Substrate), Holochain, NEAR, Grin, Conflux, CodeChain, Purple Protocol, Enigma(core), zero-chain, Plasm, Edgeware… 14

Slide 15

Slide 15 text

なぜRustなのか
 @ DMM.com ● なぜ!? 15

Slide 16

Slide 16 text

なぜRustなのか
 @ DMM.com ● なぜ!? 16 特に理由はない

Slide 17

Slide 17 text

なぜRustなのか① - 性能
 @ DMM.com ● 理由は様々 ○ Memory Safety ○ Concurrency ○ Fast 17

Slide 18

Slide 18 text

なぜRustなのか② - モジュール
 @ DMM.com ● Blockchainにおける必要な処理 ○ Networking(P2P) ○ Cryptography ○ Consensus ○ Storage ○ etc 18

Slide 19

Slide 19 text

なぜRustなのか② - モジュール
 @ DMM.com ● Blockchainにおける必要な処理 ○ Networking(P2P) ○ Cryptography ○ Consensus ○ Storage ○ etc 19

Slide 20

Slide 20 text

なぜRustなのか② - モジュール(Networking)
 @ DMM.com ● Networking(P2P) ○ BlockchainはP2Pでネットワークを形成する ○ P2P(Peer to Peer)? ■ 対等の者同士が対等な立場で相互にやり取りをおこなう ■ 実現するために必要な機能が多い ● Transport, Discovery, Peer Routing, NAT越えなど 20

Slide 21

Slide 21 text

なぜRustなのか② - モジュール(Networking)
 @ DMM.com ● libp2p ○ p2pアプリケーションを実現するために必要なモジュールを提供 21

Slide 22

Slide 22 text

なぜRustなのか② - モジュール(Cryptography)
 @ DMM.com ● Cryptography ○ 暗号化関連のモジュールが豊富 22

Slide 23

Slide 23 text

なぜRustなのか③ - wasm
 @ DMM.com ● wasmとは? ○ WebAssembly ● 他の言語でも書けるじゃん? ○ Go/C#の場合、runtimeのライブラリが大きすぎてバイナリのサイズが 大きくなるし、C/C++の場合、wasmへのプロセスが面倒 ○ Rustはバイナリが小さい、楽、wasmにしてもメモリ安全 23

Slide 24

Slide 24 text

なぜRustなのか④ - Substrate
 @ DMM.com 24

Slide 25

Slide 25 text

なぜRustなのか④ - Substrate
 @ DMM.com ● Substrateとは? ○ Parity社が開発したBlockchain Framework ○ 誰でも簡単(?)に独自のBlockchainが作れる ○ Substrateベースのプロジェクトが増えている ■ zero-chain, Plasm, Edgeware, shasper, ChainX... 25

Slide 26

Slide 26 text

BlockchainにおけるRustの悪い使い方
 @ DMM.com ● マクロが便利なのはわかりますが、、、 ○ コードが理解しづらい ○ コンパイルエラーは展開後のコードで起こり原因が分かりづらい ● トレイト地獄 ● match地獄 26

Slide 27

Slide 27 text

Blockchain以外のRustの使い道
 @ DMM.com ● システムプログラミング言語なのでOSが作れる ● Webアプリケーション開発もイケる ○ Rocket, Iron, actix-webなど ● フロントエンド開発もできるぞ!(feat. wasm) 27

Slide 28

Slide 28 text

番外編① - 個人的にRustが良いと思う理由
 @ DMM.com ● オブジェクト指向言語好きじゃない ● 速さ = 正義 ● 堅牢さ = 正義 28

Slide 29

Slide 29 text

番外編② - 個人的にRustで苦労した話
 @ DMM.com ● 関数型言語がわからず。。。 ○ Haskellを勉強しますた ● 国内だと情報が少ない ○ 最近本が色々出始めてますね!嬉しい! 29

Slide 30

Slide 30 text

まとめ
 30

Slide 31

Slide 31 text

まとめ
 @ DMM.com ● BlockchainでRustが選ばれる理由は特にない ○ RustはBlockchainでよく選ばれているのは事実 ■ RustはBlockchainと相性が良い!(かも) ● Blockchain以外でもRustは全然イケる! ● ものづくりは楽しむべき。Rustで楽しんで行きましょう! ○ Blockchain楽しいですよ:D 31

Slide 32

Slide 32 text

参考
 @ DMM.com 32 https://insights.stackoverflow.com/survey/2018#most-loved-dreaded-and-wanted https://www.parity.io/why-rust/ https://lib.rs/cryptography https://www.parity.io/wasm-smart-contract-development/ https://github.com/WebAssembly/meetings/blob/master/2018/CG-04.md#webassembly-in-blockchain https://github.com/paritytech/substrate https://grin-tech.org/ https://libp2p.io/implementations/ https://github.com/libp2p/specs https://github.com/rust-in-blockchain/awesome-blockchain-rust https://github.com/klaytn/klaytn https://github.com/libra/libra https://github.com/substrate-developer-hub/awesome-substrate https://github.com/darwinia-network/darwinia-appchain https://github.com/servo/servo https://github.com/actix https://github.com/SergioBenitez/Rocket https://github.com/libp2p/rust-libp2p https://github.com/rust-lang/book

Slide 33

Slide 33 text

Thank you for the attention.
 Powered by DMM Blockchain Labs 33