◇ 新規ブロック承認の仕組みについて

ブロックチェーンは挑戦者と証明者のやり取りからブロックを積んでいきます。このとき挑戦者に対して高い計算量を要する課題が課されます。

その一方で証明者は挑戦者が解いた解の答え合わせをします。そのため挑戦者から解がきたらすぐに結果を戻さなくてはなりません。

よって挑戦者には莫大な計算量または解を得るまでに時間を必要とする課題を要求する一方で 証明者はその課題の結果が合っていることすぐに返せる適切な問題が必要となってきます。

そこで利用されるのがハッシュの性質やmodifierの性質です。ハッシュは不可逆性で予測不能な値を出力しますから特定の条件を課題にすればみつけるのにお時間を要します。

modifierはヒストリー形式の不可逆性をもち経過時間が矛盾しないように特定の挑戦者を選んで解を与える性質があります。
※ ハッシュはProof Of Workです。課題を解きコインベースに報酬を記録して各ノードに渡します。 そして解と報酬額が合っていればそのコインベース分が報酬になります。
※ modifierはProof Of Stake, Proof Of Historyなどです。
Stake: 挑戦者として選ばれると同時にそのアドレスが持つコイン量から報酬を計算して通常のトランザクションにその量をプラスで記録します。そのトランザクションを各ノードに渡して合意が得られればそのプラス分が報酬として加算されます。
History: 挑戦者として選ばれるとコインベースに報酬を記録して各ノードに渡します。ヒストリーのmodifierと報酬額が合っていればそのコインベース分が報酬になります。

このブロック生成時間はあらかじめ決まっています。その生成時間に合わせた課題を適切かつ自動的に出す必要があります。

よってこの生成時間に対する問題の難度を自動的に設定する式が備わっており難易度と呼ばれております。この難易度はdiffとしてブロックエクスプローラで公開されております。SORAではPoWとPoSがありますから上の数値がPoW(ハッシュ)、下の数値はPoS(modifier)になります。

難易度については可変です。ブロック生成時間に合わせて変わっていくスタイルを取っております。なお、複数の承認システムを積んでいる場合はお互いに独立させて承認させると生成時間が合わなくなります。 そのためスペース時間という特別な時間帯が設けられそこで一方のみの承認を優先的に行わせて生成時間の誤差を丸め込みます。SORAではこのスペース時間を10分に設定しています。時々ブロック生成が一方的になるのはこの作用が働くためです。

◇ modifierについて

ハッシュ方式のブロック新規承認は計算量が大きいため代替手段が求められてきました。そこでmodifier方式ですね。

従来は解(nonce)が刻み込まれたブロックヘッダをハッシュ計算して条件を満たすブロックを探していました。ところでmodifierではnonceは未使用ゆえに0です。別の作用で新規承認ブロックを計算しております。その証拠にブロックハッシュが0の並びから始まっていませんね。nonceを未使用にしているためブロックハッシュに新規承認の論理を求めていないためです。ハッシュが取れればOKとなります。

今後はこのmodifier方式が主流になっていきます。PoWが付属するブロックチェーンもmodifier方式に置き換わっていきます。SORAもPoWをmodifier方式の別の承認方式に切り替える予定です。コインベースを残さないとゼロから得られる機会……新規獲得ができなくなるためです。