はじめに
Archain は、デジタルデータ、主にテキストデータをブロックチェーン内に保存し、検閲や改竄からオリジナルの文書を保護する仕組みを作ろうとしているプロジェクトです。簡単に言えば、ブロックチェーンを使ったより強固な Internet Archiveの開発を目指しています。
ブロックチェーン内に保存することで、データの改竄は極めて困難になります。しかし、当該データの保存されたブロックを紛失した場合、データは失われてしまいます。Archain では、新しいブロックを生成する際に、直前のブロック情報だけではなくランダムに選ばれた過去のブロック情報も必要とする Proof of Access というアルゴリズムを用いることで、マイナー達に古いブロックも含めできるだけ多くのブロックを保持するよう動機付けを行なっています。
また、ブロックチェーンに保存する時点でデータが改竄されている可能性もあります。利用者が偽情報の保存をマイナーに依頼することも考えられます。Archain では検証付き Web アーカイブといって、保存を依頼した利用者とマイナー両方が対象の Web ページにアクセスし相違が無いことを確認してからブロックチェーンに保存する仕組みが用意されています。
Archain は個人的に興味のあるプロジェクトなので、ホワイトペーパーの内容を詳しく調査してみました。
他のプロジェクトの比較
ブロックチェーン技術を使ってデータを保存するというプロジェクトは既に多く提案されています。
Storj や sia は、他人の余剰ディスク容量を借り受けてデータを保存するストレージサービスです。ブロックチェーンは、ディスク容量の貸し借りに伴う契約を保存する分散データベースとして利用されており、データ自体は別の枠組みで送受信、保存されています。そのため、永続的に保存されるという保証はありません。
ブロックチェーン内にデータを保存しているという点では、この steem は Archain と同じ仕組みを持っていると言えます。Archain の方は、Internet Archive を目指している分、ブロックの紛失と保存されるデータの正当性に注力している点が異なっているでしょう。
著作物の保護という点からみると、著作者がブロックチェーンに著作物のハッシュ値を保存することで、正当な著作者であることを示す Binded も近いプロジェクトと言えるでしょう。ただし、Binded では著作物のコピーは Binded のサーバに保存されるため、ブロックチェーンは使用しているものの中央集権的なサービスになっています。
その他のプロジェクトとの比較は、例えば、Is Blockchain Technology Really the Answer to Decentralized Storage? にまとめられています。
Archain の技術
Archain の Web ページには、6つの主要な技術が掲載されています。その中で個人的に重要だと思うのは、Proof of Access(と Block weave)と Verified Archiving(検証付きWebアーカイブ)の二つだと思うので、個別にまとめてみました。
Proof of Access と Block weave
Archain では、デジタルデータをブロック内に保存します。そのため、このブロックが失われないこと、必要な時に見つかることが重要です。Archain では、新しいブロックの生成に、一つ前のブロックとランダムに選ばれた過去のブロック(recall block; 思い出したブロックというような意味)の両方を必要とする Proof of Access を採用しています。ただし、この Proof of Access の実態は、過去のブロックを必要とする以外はビットコインの Proof of Work とほぼ同様だと思われます。つまりブロックに含める全てのトランザクションと過去のブロック内のトランザクションに nonce を加えたもののハッシュ値が閾値以下となるような nonce を探す競争が行われます。
過去のブロックは、現在のブロックのハッシュ値を元に選ばれます。そのため、現在のブロックが生成されてからできるだけ短時間に対象のブロックを見つけたマイナーが、次のブロックの生成において有利になります。言い換えれば、過去のブロックをできるだけ多く、かつできるだけ検索効率の良い方法で保持しているマイナーが有利であるということです。その結果、市場原理として、過去のブロックが失われずかつ必要な時に見つかりやすい仕組みが作られていくと期待されています。
この様にして出来上がるブロックチェーンは、単一の鎖ではなく各ブロックから二本の枝が過去のブロックへ伸びている形になります。これを Archain では Block weave と呼んでいます。
ところで、あるマイナーが新しいブロックを生成した時、他のマイナーは正しく生成されたブロックか検証できる必要があります。もし、ほとんどのマイナーが保持していないブロックが過去のブロックとして選ばれ、運良くそのブロックを持っていたマイナーがブロックの生成に成功したとすると、他のマイナーは検証できません。そのため、新しいブロックがブロードキャストされる時には、使用された過去のブロックも合わせてブロードキャストされることになっています。
この、過去のブロックが時々ネットワーク全体にブロードキャストされる仕組みによって、さらにブロックの紛失を防ぐことが期待されています。つまり、一部のマイナーしか持っていなかった稀なブロックだとしても、過去のブロックとして選ばれればブロードキャストされ多くのマイナーが保持できます。
ただし、一度選ばれたブロックが再度選ばれる確率はブロックチェーンが長くなれば小さくなると思われるので、むしろブロードキャストされてきたブロックは忘れていくといった逆向きなマイナーが出てくる可能性もあります。
また、データをブロックチェーンに保存していく仕様上、ブロックチェーンデータベースはどんどん巨大化していくことが予想されます。そのため、ウォレットのように検証だけできれば良い場合には負担になります。そこで、検証用に、一定の期間ごとにその間のトランザクション内容を要約した同期ブロック(synchronization block)を追加される仕組みになっています。同期ブロックは初めは12ブロックごとに追加され、その後の追加期間は適宜調整されるようです。この同期ブロックには、全てのウォレットの残高とすべての過去のブロックのハッシュ値が含まれます。同期ブロックさえ手に入ればそれ以降に生成されたブロックの検証はできるという仕組みになっています。
ただ、長期的に考えると、同期ブロックのサイズも非常に大きくなると思われるので、この方法でスケールするのかちょっと疑問ではあります。
検証付き Web アーカイブ
Archain では、保存する Web ページが改竄されていないことを保証するために、保存を依頼する利用者とマイナー、およびブロックの検証を行う全てのクライアントが対象 Web ページの同一性を検証する仕組みを提供しています。
ある利用者がある Web ページを保存する場合、この利用者は対象の Web ページを取得しそのハッシュ値を URL とともに Archain ネットワークへ送ります。マイナーは、受け取った URL から同じ Web ページを取得し、そのハッシュ値が利用者から送られてきたものと一致するか調べます。一致した場合、取得した Web ページをブロックに追加します。
ブロックが生成された後、他のマイナーは、ブロックに含まれる Web ページデータから計算したハッシュ値と、利用者が送信したハッシュ値が一致するかを調べることで正しいデータがブロックに保存されたのか検証することができます。この仕組みによって、利用者やマイナーが改竄情報をブロックに保存することを困難にしています。
現在のところ Web ページを保存する場合、Web ページのスクリーンショットなどを撮って保存するか、Web 魚拓のようなサービスを利用するか大きく分けて二種類が考えられます。前者の場合、スクリーンショットを撮った人が改竄していないことを証明するのは難しく、またアーカイブサービスを利用する場合でも、サービス提供者が改竄していないことを証明することも難しいと思います。
Archain では、ネットワーク全体で検証することから、従来の Web アーカイブサービスにはない信頼性の高いアーカイブが作成できると期待できます。
なお、Archain では、検証付きアーカイブの他に、利用者が送信したデータを検証なしにブロックに保存する方法も提供されています。こちらは、利用者が個人的なデータを保存する場合に用いることを想定しているようです。この場合は、保存されたデータが失われないことだけが保証されます。
おわりに
Archain が目指す信頼性の高い Web アーカイブシステムは、個人的にはとても興味のあるサービスです。Proof of Access や検証付き Web アーカイブは、このままで長期的にうまくいくのかは分かりませんが、考えられていると思います。例えばネットワーク参加者が増えた場合やブロックチェーンが大きくなった場合に、同期ブロックの仕組みは機能するのかといった疑問はあります。実際には、運用していく上で不具合が出れば対処していけば良いとも思います。
また技術面以外で、このプロジェクトが解決すべき課題としては忘れられる権利との折り合いだと思います。ブロックチェーン内に保存しかつマイニング時に過去のブロックとして参照されうる仕組み上、一度保存されたデータは削除は困難だと思われます。そうなると、法的に大丈夫なのか?という点がプロジェクトの行方として心配です。おもしろいプロジェクトなので、うまく解決してくれることを期待します。
おことわり
以上は、個人的な調査結果のため100%の正確性を保証するものではありません。
正確な判断のためには、原典を参照ください。