Upgrade to Pro — share decks privately, control downloads, hide ads and more …

なぜBlockchainはRustを選ぶのか #roppongirs / why-blockchain-chooses-rust

なぜBlockchainはRustを選ぶのか #roppongirs / why-blockchain-chooses-rust

2019/07/30 Roppongi.rs #1 登壇資料

jkcomment

July 30, 2019
Tweet

More Decks by jkcomment

Other Decks in Technology

Transcript

  1. Powered by DMM Blockchain Labs
    1
    なぜBlockchainは

    Rustを選ぶのか


    View full-size slide

  2. 自己紹介 - About me

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

    View full-size slide

  3. 書籍紹介 - Publishing

    @ DMM.com
    3

    View full-size slide

  4. Agenda

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

    View full-size slide

  5. Rustの現状

    5

    View full-size slide

  6. Rust?

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

    View full-size slide

  7. Rust?

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

    View full-size slide

  8. Rustの現状

    @ DMM.com
    8

    View full-size slide

  9. Rustの現状

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

    View full-size slide

  10. Rustの現状

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

    View full-size slide

  11. なぜBlockchainは

    Rustを選ぶのか

    11

    View full-size slide

  12. Blockchainとは

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

    View full-size slide

  13. Blockchain Nodeの実装例

    @ DMM.com
    ● C++: bitcoin, EOS, Zilliqa
    ● Go: Ethereum, Klaytn, Quorum
    13

    View full-size slide

  14. 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

    View full-size slide

  15. なぜRustなのか

    @ DMM.com
    ● なぜ!?
    15

    View full-size slide

  16. なぜRustなのか

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

    View full-size slide

  17. なぜRustなのか① - 性能

    @ DMM.com
    ● 理由は様々
    ○ Memory Safety
    ○ Concurrency
    ○ Fast
    17

    View full-size slide

  18. なぜRustなのか② - モジュール

    @ DMM.com
    ● Blockchainにおける必要な処理
    ○ Networking(P2P)
    ○ Cryptography
    ○ Consensus
    ○ Storage
    ○ etc
    18

    View full-size slide

  19. なぜRustなのか② - モジュール

    @ DMM.com
    ● Blockchainにおける必要な処理
    ○ Networking(P2P)
    ○ Cryptography
    ○ Consensus
    ○ Storage
    ○ etc
    19

    View full-size slide

  20. なぜRustなのか② - モジュール(Networking)

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

    View full-size slide

  21. なぜRustなのか② - モジュール(Networking)

    @ DMM.com
    ● libp2p
    ○ p2pアプリケーションを実現するために必要なモジュールを提供
    21

    View full-size slide

  22. なぜRustなのか② - モジュール(Cryptography)

    @ DMM.com
    ● Cryptography
    ○ 暗号化関連のモジュールが豊富
    22

    View full-size slide

  23. なぜRustなのか③ - wasm

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

    View full-size slide

  24. なぜRustなのか④ - Substrate

    @ DMM.com
    24

    View full-size slide

  25. なぜRustなのか④ - Substrate

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

    View full-size slide

  26. BlockchainにおけるRustの悪い使い方

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

    View full-size slide

  27. Blockchain以外のRustの使い道

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

    View full-size slide

  28. 番外編① - 個人的にRustが良いと思う理由

    @ DMM.com
    ● オブジェクト指向言語好きじゃない
    ● 速さ = 正義
    ● 堅牢さ = 正義
    28

    View full-size slide

  29. 番外編② - 個人的にRustで苦労した話

    @ DMM.com
    ● 関数型言語がわからず。。。
    ○ Haskellを勉強しますた
    ● 国内だと情報が少ない
    ○ 最近本が色々出始めてますね!嬉しい!
    29

    View full-size slide

  30. まとめ

    30

    View full-size slide

  31. まとめ

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

    View full-size slide

  32. 参考

    @ 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

    View full-size slide

  33. Thank you for the attention.

    Powered by DMM Blockchain Labs
    33

    View full-size slide