ここ2日でDuskのコンセンサス文書をあさっていると、ある細部が妙に刺さることに気づいた――多くのPoSチェーンでは検証ノードが、ブロックの生成もブロックの検証も担当している。要するに一人が「提案者」と「裁判官」の二役を兼ねているわけで、この設計そのものに穴が潜んでいる。悪事に走るためのルートが、特に短いのだ。

//
Duskのやり方は、この2つの役割を徹底的に切り分けること。
そのコンセンサスはSBA(Segregated Byzantine Agreement)と呼ばれ、核心は「ブロック生成エリア」と「見届け(証明)ブロック」の2つの役割を、設計上きれいに分離することにある。あるグループのノードが候補ブロックを提案し、別のグループのノードが検証・投票・最終判断を担当する。
この2つのグループは責務も違い、アイデンティティも違う。一方は提案だけ、もう一方は審査だけ。誰も一人で「選手」と「審判」を兼ねることができない。

//
ここで、もう一つ面白いエンジニアリングの細部がある。
検証段階では多数のノードがそれぞれ署名して投票する。もし各署名を個別にブロードキャストして個別に検証するなら、ネットワークのコストはノード数に比例してどんどん膨らむ。BLSの集約署名は、上千もの独立した署名を短い集約結果に圧縮するという発想だ。ほかのノードは、この「1つの集約署名」を検証するだけで、全員分の投票を検証したのと同じになる――検証コストが一気に下がり、コンセンサスの効率も自然と上がる。

//
この2つを分けることの本当に価値があるポイントは、共謀(コラボ)のハードルを引き上げていることだ。
ブロック生成とブロック検証が同じ仲間の話なら、不正をするのに必要なのは1つの役割を制御するだけで済む。切り分けてしまえば、結果を操作したいなら、まったく独立した「生成側」と「見届け側」の2グループを同時に取り込む(買収・工作する)必要が出てくる。これらのグループをどう選び、どういう身分にし、どんなインセンティブを与えるか――それらはすべて別々に設計される。共謀のコストと、露見するリスクが直接押し上げられるのだ。
責務分離のロジック自体は、従来のガバナンスでは新しいものではない。しかしDuskはそれを、コンセンサス層の土台となる仕組みにまで“溶接”しており、口先で言って終わりではない。たぶん、SBAが解決しようとしているのはまさにここだ。

@Dusk_Foundation $DUSK #dusk

SBAコンセンサスの核心的な設計は何ですか?
A. 把出块和验块拆成两拨独立节点
B. 用算力竞争决定谁出块
C. 所有节点轮流当唯一的验证者
6 残り日数