⛓️

トラストレス・トラストから理解するblockchainの基礎

2022/12/01に公開

この記事はSun* Advent Calendar 2022 1日目の記事です。

Sun* Advent Calendar 2022について

Sun*では、自由と挑戦をカルチャーの一部として重要視しており、今回のAdvent Calendar2022は「自由と挑戦の過程で獲得したナレッジを世に共有し、社会にContributionすること」を目標として、エンジニアリングだけでなく、UI/UXデザインやプロジェクトマネジメントの観点からナレッジをシェアしていきたいと考えております。

本記事はSun* Advent Calendarの初日記事となりますので、blockchainのナレッジを読者の方へ届けることはもちろんのこと、次に続く記事をご覧いただいてSun*の多様な課題に挑戦していく姿勢を少しでも感じ取っていただくきっかけとなれば、と思っています!

自己紹介

長浦和輝(ナガウラカズキ)です。株式会社SunAsterisk (Sun* Inc.)にてバックエンドエンジニアとしてRuby on Rails、Python(FastAPI)を用いたバックエンドアプリの開発、フロントエンドエンジニアとしてReact.js、Next.jsを用いたフロントエンドアプリの開発を行ったのち、DApps設計・開発にエンジニアとして携わり始めました。

最近はRRRを観に行きまして、改めてインド映画の勢いとボリュームとツッコミどころの多さに感動(?)し、アマプラでインド映画を物色する日々を送っています。

この記事を書いた背景

DAppsを設計する中で、初めてblockchainに実務で触れることになったため、blockchainを支える技術についてinputをしてきました。

inputをする中で、後述する"trustless trust(トラストレス・トラスト)"という概念を知り、その意味を紐解いていけばblockchainを支える基礎をスムーズに理解できると考えました。

したがってこの記事では、トラストレス・トラストを切り口としてblockchainを支える基礎を解説したいと思います。

記事のねらい

blockchainの基礎的な技術知識を、それを下支えするトラストレス・トラストを中心に理解する。

想定読者

以下のキーワードについての基本的な定義、概念を理解している方

  • Peer to Peer型ネットワーク
  • client-server型ネットワーク
  • (ネットワークにおける)ノード
  • Hash、暗号学的Hash関数

blockchainの原点・定義

サトシ・ナカモトのホワイトペーパー

2008年10月31日、暗号理論系のメーリングリストに"Bitcoin: A Peer-to-Peer Electronic Cash System"というタイトルのホワイトペーパーが"サトシ・ナカモト"を名乗る人物あるいは集団(正体は未だ不明)によって投稿されました。
Bitcoinは2009年、サトシ・ナカモトによって運用が開始されました。その後、サトシ・ナカモトはBitcoinコミュニティを率いて、Bitcoinの継続的なリリースに貢献しましたが、2010年半ばに突如姿を現さなくなりました。

参考: ビットコイン: P2P電子通貨システム - ビットコインが初めて提案された論文

blockchainの語義

ここで、blockchainの語義を押さえたいと思います。インターネット白書(2016)には、"blockchain"という語の定義として次のように記載しています。

ブロックというデータ構造を時系列で鎖のように接続したもの

山崎重一郎, 2016, p.244 インターネット白書

個人的にはこちらの定義が、技術的な文脈での"blockchain"を必要かつ十分に説明したものであると考えています。

トラストレス・トラストを支えるもの

trustless trust

LinkedInのco-founderのReid Hoffmanは、blockchainの可能性について、以下のように述べました。

“The blockchain creates the possibility of trustless trust.”

Reid Hoffman, The Future of the Bitcoin Ecosystem and “Trustless Trust” – Why I Invested in Blockstream, 2014

client-server型のネットワークで稼働するシステムやアプリケーションでは、取引等を処理する場合、当事者以外の第三者として、トラスト(信頼)を特定のノード(多くの場合、オーソライズされたサーバー)に預け、それを以て取引の信用付与とセキュリティの確保を行う場合がほとんどです。

対して、P2P型のネットワークで稼働するシステムのうち、特にblockchainにおいては特定のノードにトラストを預けていません。

これを踏まえると、Hoffmanの指すtrustlessとは、「特定の第三者によるトラストが不要である」と解釈できます。

コンセンサス・アルゴリズムとしてのProof of Work

第三者をトラストしない状態で、どのようにネットワーク全体としてのトラストを担保するかをしっかりと理解するためには、①blockchainにおけるblock、②そこに含まれるnonce(ナンス)、そしてコンセンサス・アルゴリズムとしてのProof of Work(以下PoW)について理解する必要があります。

①blockとは

blockとは、(ほぼ)一定期間のチェーン上の全transaction(取引)を記録した台帳です。トランザクションの内容は各ノードによって監査され、内包するすべてのトランザクションに対する監査が承認された場合、blockは承認済みとなります。

②nonce / Proof of Work とは

PoWとは、莫大な計算の証拠です。Bitcoinを始めとするパブリックなblockchainにおいて、PoWはコンセンサス・アルゴリズムの一つとして使用されています。

それでは、具体的にはblockchainにおいてPoWとしてどのような計算を行っているのでしょうか。

blockにはtransaction以外にも、基本的に以下のようなものが含まれます。

  • nonce
  • previous hash
  • timestamp

nonceは、blockにおける可変領域で、32ビットの値です。これを変更した上でblockを暗号学的Hash関数(以下、hash関数)のinputとしてhashを求める処理を繰り返し試行します。
試行の成功条件は、hashを整数とした場合に所定のdifficultyよりも小さな値になること、言い換えれば、hashの先頭において所定の桁数以上0が連続することです。

例) difficulty: 先頭8桁の場合

失敗出力hashイメージ

9ed1515819dec61fd361d5fdabb57f41ecce1a5fe1fe263b98c0d6943b9b232e

成功出力hashイメージ

000000002cae7727bc4e3bb7bd98d6b6261a355f592f51141b7e1ca95b400fb2

試行に成功するnonceを見つけたノードは、他のノードへblockをブロードキャストします。ブロードキャストを受けたノードは、試行に成功したnonceを改めてblockのnonceとして代入し、それをinputとしてhashを求めることによって試行の成功を簡単に検証できます。
検証に成功したblockは正当なblockとして、他のノードに再度ブロードキャストされ、最新の正当なblockとして伝達されていきます。

これが、blockchainにおけるコンセンサス・アルゴリズムとしてのPoWの計算です。また、PoWの計算競争をマイニングと呼びます。

previous hashには、1つ前のblockをhash関数のinputとしたhash値を与えます。これにより先行する全blockに対する完全性を検証できます。

まとめ: トラストレス・トラストの実現

これまでの内容を踏まえ、blockchainを改ざんするためにはどのようなプロセスが必要かを考えると、トラストレス・トラストがどのように実現されているかの大きな要因が見えてきます。

前述したように、transactionを記載したblockの正当性は、PoWとその検証によってコンセンサスが取られています。したがって、貨幣総量との突合によって矛盾が発覚しないようにtransactionを書き換えるためには、過去のnonceをすべて再計算する必要があります。

blockは全世界で絶えず生成され、承認されるため、これらに対しての再計算を行いながら過去のblockに対してもさかのぼってnonceの計算を行うことはコンピューティングリソースの観点から実質不可能と言えます。

よって、改ざんによるインセンティブがマイニングによるインセンティブを下回るように設計されていることが、blockchainは改ざんを事実上不可能に近い状態とし、blockchainのトラストレス・トラストを実現している主要因であると言えます。

サトシ・ナカモトは、ホワイトペーパーの趣旨を「電子通貨の二重支払いの解決策の提案」としていました(Satoshi Nakamoto, 訳: hakka, 2008, ビットコイン: P2P 電子通貨システムp.1より)。トラストレス・トラストの実現によって、サトシ・ナカモトの言及した暗号通貨だけでなく、NFT等の暗号資産に対しても、第三者機関を置くことなく信用を与えることができるようになりました。

これに加えて、スマートコントラクトの実行環境を標準実装したイーサリアムの登場により、DAppsという形でますますblockchainのユースケースは拡張しています。

編集後記・明日の投稿のお知らせ

blockchainを支える基礎に関しては、今となっては様々な学習リソースが見つかりますが、こうして一定の切り口で自ら整理し直すと改めて全体像が把握できました。DApps市場はまだまだ波ありの発展途上ですが、こうした基礎的なナレッジを盤石にした上で、blockchain市場に良い影響を与えるDApps作りに取り組みたいと改めて思いました。

Sun* Advent Calendar 2022、明日12/2は弊社Sun*エンジニア橋本の「MySQLチューニング 初級編」をお送りいたします!

Sun* Developers

Discussion