🌟

ブロックチェーンとSubstrateのエコシステムに共通する多くの概念や用語について

2022/02/06に公開

対象読者

  • Substrate及びブロックチェーン技術の初学者

はじめに

この記事はブロックチェーンとSubstrateのエコシステムに共通する多くの概念や用語の説明になります。50音順です。自分が必要になったら追加していきますが、PRもお待ちしております。

なおSubstrate - Glossaryの抄訳になります。詳しく知りたい方は適宜参考記事を読んでください。

adaptive quorum biasing (AQB)

AQB。ガバナンスの際、通過基準値が50%だと不都合が生じます。

  1. 例えば投票率が低ければ(無投票の割合が多い)勝手に可決される(デフォルトキャリー)ので、それを防ぐために、通過基準値は50%より60%のほうがよいでしょう。
  2. 逆に投票率が高く通過基準値が60%のままであれば、投票者の意思が反映されないので、通過基準値は60%より50%のほうがよいでしょう。

1を負の投票率バイアス"positive turnout bias"。2を正の投票率バイアス"negative turnout bias"、50%のように単純過半数の通過基準を"neutral turnout bias"で調節します。

Democracy pallet

aggregation

FRAMEの抽象化を用いた型の集約。pallet aggregationと呼ばれることも。
現在、集約可能なデータ型は6種類。実際にパレットを作成してみるとわかりやすいかも。

  • Call: 引数を指定して呼び出すことができる公開関数。
  • Error: 関数の呼び出し(Call)が失敗した理由を示すメッセージです。
  • Event: 状態の変化を表す、パレットからdispatchされるイベント。
  • Log: 拡張可能なヘッダー項目のためのログ。
  • Metadata: 上記の内容を確認するためのメタデータです。
  • Origin: 関数呼び出し(Call)のソースを表す識別子。

approval voting

承認投票。投票者は好きなだけ多くの候補者に投票できる。選挙と違って割合で投票するイメージ。また反対票もある。

FRAME Elections Phragmen pallet

author

ブロックの作成を担当したノードを記述する。 PoWでいうマイナー。
ブロック作成者はブロックプロデューサーとも呼ばれる。

authority

権威。コンセンサスを管理するために集団で行動するノードを指す。
PoSでは指名・投票によってauthorityが決定される。

バリデーターは広い意味を持つ用語で、コンセンサス以外にもパラチェーンの検証のような連鎖維持などの側面も含むのでauthorityと分けている。多くのバリデーターはauthorityである。

Staking pallet

authority round (Aura)

オンラインのオーソリティの大半が 権威は誠実であるとみなされる。 このプロトコルは短期的な確率的最終性に使用される。

<=> GRANDPA: 確定的な最終決定

blind assignment of blockchain extension (BABE)

block

外在的なデータであるボディとヘッダーを暗号的に結合する機能を持つ。親ブロックへのポインタ(親を表すハッシュ)を介してツリー状に配置される。

blockchain

コンピュータの分散型ネットワークのこと。暗号技術を用いて、参加者のグループが、時間の経過とともに変化するシステムの状態について、信頼性を持って合意に達することを可能にするものです。 ブロックチェーンネットワークを構成するコンピュータをノードと呼ぶ。

byzantine fault tolerance (BFT)

ノードやオーソリティの一定割合が不具合を起こしたり、悪意のある行動を取ったりした場合でも、運用を継続できる能力。不具合の割合が1/3を超えるとムリ。

consensus

ノードがチェーンの正規のフォークに合意するためのプロセス。

  • authorship: ブロック作成する。
  • finality: ブロックチェーンの進行を不可逆的にする
  • fork-choice rule: ブロックチェーンのフォークを選択する。

で構成される。基本的にauthorshipを指す。

詳しくはhttps://docs.substrate.io/v3/advanced/consensusを参照。

consensus algorithm

必ずしもお互いを信頼していないアクターの集合が、ある計算の結果としての状態について合意に達することを保証するアルゴリズムのこと。

1/3のノードの合意が得られる場合に、以下を満たすアルゴリズム。

  • safety: すべての誠実なノードが最終的にチェーンの状態に合意すること。
  • liveness: チェーンが存続可能なこと。

cryptographic primitives

council

database backend

dev phrase

digest

dispatch

あらかじめ定義された引数のセットを使って関数を実行すること。 Reduxなどと同じ。
FRAMEのランタイム開発では、ディスパッチは純粋なデータ(規約ではCallと呼ばれる)を受け取り、そのデータを使ってランタイムモジュール(パレット)内の公開された関数を、あらかじめ定義された引数で呼び出す。

公開された関数は、オリジンと呼ばれる追加のパラメータを受け取る。
このパラメータによって,関数は呼び出しのソースを識別できる。

equivocating

ethash

events

ある特定の状態遷移が起こったことを、オフチェーンの世界のために記録する手段。

FRAMEのイベントは、各パレットが個別に定義できるaggregation可能なデータタイプである。またブロックの実行直後に検査され、ブロックの初期化時にリセットされる。(一過性のストレージアイテム)

executor

extrinsic

existential deposit

finality

コンセンサスのうち、ブロックチェーンの進行を不可逆的にする部分。すべての状態の変化は、ハードフォークなしでは元に戻せない。

fork

チェーンが分岐している状態。解決されるまでは、ブロックチェーンは更新されない。
fork-choice ruleによってフォークを解決する。

Flaming Fir

FRAME

Framework for Runtime Aggregation of Modularized Entities。開発者がパレットと呼ばれるコンポーネントのモジュラーセットからブロックチェーンのランタイム環境を作ることを可能にするフレームワーク。

以下がマクロで提供されている。

  • #[pallet::event] (パレット::イベント),
  • #[pallet::error] (パレット::エラー),
  • #[pallet::storage] #[pallet::error] #[pallet::storage,
  • #[frame_support::pallet] (フレームサポート:パレット)

カスタムパレットを定義したり、パレットを合成して動作するランタイムを簡単に作ることができる。

construct_runtime! マクロを使用して、Substrateベースのブロックチェーンを展開することができる。

full client

genesis configuration

GRANDPA

権威は誠実であるとみなすための、決定論的なファイナリティメカニズム。

ブロックの概要を表すデータ。暗号情報などが含まれ、最小限の安全性でチェーンの同期を行うために利用される。

hybrid consensus

JSON-RPC

keystore

Kusama

libp2p

light client

macro

metadata

node

ブロックチェーンクライアントの実行中のインスタンス。 各ノードは ピアツーピアネットワークの一部であり、ブロックチェーンの参加者が相互に作用することを可能にします。

  • ブロックチェーンのバリデータ
  • リソースに制約のある環境でのスケーラブルなやり取り(ライトクライアント)

nominated proof-of-stake (NPoS)

origin

FRAMEのプリミティブ(構成要素)で、ランタイムにdispatch(発行)された関数呼び出しのソースを識別する。

pallet

FRAMEベースのランタイムの機能を拡張するために使用できるモジュール。

parachain

共有インフラやセキュリティをPalletから派生させたブロックチェーン。

詳しくはhttps://wiki.polkadot.network/docs/en/learn-parachainsを参照。

Polkadot network

共有インフラやセキュリティを提供する中継チェーンの役割を果たすネットワーク。

proof-of-finality

proof-of-work

ネットワーク参加者の作業を要求することで攻撃を抑止するコンセンサスメカニズム。

relay chain

remote procedure call (RPC)

プログラムと対話するための仕組み。 リモートプロシージャコールにより、開発者はリモートのプログラムに問い合わせたり、引数のある関数を呼び出したりすることができる。 Substrateノードは、HTTPやWebSocketのエンドポイントでRPCサーバーを公開する。

rhododendron

rococo

runtime

ノードの状態遷移機能を提供するロジック。SubstrateではWebAssemblyのバイナリとしてチェーンの状態に格納されている。

slot

stake-weighted voting

state

state transition function (STF)

storage item

Substrate

transaction

ノード間で通信される、署名や署名付きの拡張機能を持つ外部情報。

transaction era

transaction pool

trie (Patricia Merkle Tree)

validator

ネットワークを維持するためのアクター。信用と引き換えにインセンティブが与えられる。

WebAssembly (Wasm)

マルチプラットフォームな実行アーキテクチャ。多くの言語からコンパイルできる。

Westend

Discussion