この記事ではSubstrateというサービスについて説明する。
Substrateとは日本語で「基板」という意味であり、ブロックチェーンを手軽に構築できる基板となるサービスである。企業や個人のニーズにあったカスタマイズをしたブロックチェーンを作成できるというものであり、コンセンサスアルゴリズムなどを設定できるというもので、ブロックチェーンの仕組みを完全に理解していなくても、ブロックチェーンを構築できるというものだ。Paritiy Technologyという団体によって運営されておりEthereumの共同創始者のGavin Woodが率いている。
Rustというプログラミング言語でスマートコントラクトが記載されていることも特徴である。またJavaScriptをブラウザーサイドで機能させることもできる仕組みになっている。
SubstrateではSubstrate Coreと呼ばれるものがあり、これはSubstrateで作成されるブロックチェーンが最低限持つプロトコルのようなものである。(表現があってるかは微妙)Substrate Coreが持つ性質は以下のようになっている。
Block synchronisation
Extensible JSON-RPC API endpoints
Crypto primitives library
Pervasive and secure networking via libp2p
Storage
Telemetry
Light client
Chain specification and versioning
Pluggable consensus
Low-level JavaScript utils
Transaction queue and block production mechanism
Sandboxed WebAssembly interpreter
Interchain connectivity via the Polkadot protocol
Substrate Runtime Module Library (SRML)と呼ばれる機能の方でブロックチェーンはカスタマイズする。またこのカスタマイズはRust, C/C++, C#, GoなどWebAssenbly(wasm)で記述することができる。このModuleは以下のカスタマイズを含む。
Accounts & Balances - basic cryptocurrency, including account management and viewing
Assets - simple, secure additional on-chain fungible assets
Consensus - setting and modifying runtime code and storage (i.e. the set of authorities as a list of session keys on-chain), and reporting offline or misbehaving validators
Contracts - turbo-charged Wasm-based smart contracts
Council - council election and proposals
Democracy - public proposals and referendums
Sessions - key rotation for authorities
Staking - Proof-of-Stake logic, including both staking and nominating of validator accounts
Timestamp - have your chain know about time
Treasury - decentralised grants, similar to a DAO
まとめ
Substrateとはこのようにブロックチェーンをカスタマイズした上で簡単に構築できるソフトウェアサービスのことである。ブロックチェーン技術に期待されている中、実装に対するUXが悪い現状を解決する一手となるであろう。
<参考文献>
・Polkadotの土台であるブロックチェーン開発キット「Substrate」とはhttps://coffeetimes.hatenadiary.jp/entry/2018/09/15/133817
・Substrate has arrived https://www.parity.io/substrate-has-arrived/
・Substrateインストールの方法https://qiita.com/SotaWatanabe/items/f0c460bffa700b5a39de
・https://www.parity.io/substrate/ 公式