BitcoinとCorda

BitcoinとCordaの違いについて、備忘録。

Bitcoinの不正改ざんについて

Bitcoinは、ブロック同士が連結され、簡単には改ざんできなくなっている。
1つのブロックは、ヘッダーと大量のトランザクションによって構成される。
このヘッダーを、SHA256アルゴリズムを用いて2回ハッシュ化し、32ビットのハッシュ値を生成する。
これを、ブロックハッシュという。
このブロックハッシュは、各ブロックを識別するIDでもある。

ヘッダーは、いくつかの情報を持つ。
ブロックヘッダ
ヘッダーには、Nonceという、4バイトの自由に値を変えられるフィールド、タイムスタンプのフィールドが存在する。
これらの値を変えることで、ブロックハッシュはランダムな値をとる。
このブロックハッシュを、指定した値より小さくなるまで、計算するのがマイニングである。
この計算は、ビットコインネットワークに参加するマイナーたちが10分ぐらいで計算できる難しさになっている。
難しさは、指定する値の大きさを変更することで調整できる。
すべてのマイナーの計算機の処理能力を合わせて、やっと10分で計算できるほどの計算量が必要ということ。

ヘッダーは、前のブロックのブロックハッシュも持っている。
そのため、膨大な計算により得られたブロックハッシュにより、ブロックは一方向に連結するため、Bitcoinを不正に改ざんすることは、相当に困難である。

たとえできたとしても、今後作られるブロックに対して。
51%攻撃

Cordaについて

Bitcoinは、ビットコインネットワークの多くのノードが、すべてのブロックチェーンを保持する。
パブリックなネットワークであり、ブロックの中を誰でも見ることが可能です。

それに対しCordaは、プライベートなネットワークであり、ネットワーク外の人は、台帳の情報を見ることができない。
さらには、プライベート内の各ノードから、他のノード間のトランザクションを見ることもできなくなっている。
これは、プライベートネットワーク内のノードが、ブロック1つに対し、1つのトランザクションを保持することで実現している。
各ノードは、共通の台帳を保持していないということ。
しかし、共通の台帳を持たないということは、単一のノードだけではトランザクションが使用済みか未使用かを判断することができない。
そのためCordaは、Notaryというノードが存在する。
各ノードは、Notaryにリクエストを送り、トランザクションが未使用可どうかを確認できる。

BitcoinとCordaの違い

BitcoinとCordaの違いは、安全性の担保の仕方だと思う。

Bitcoinは、技術的に安全性を担保している。 過去のブロックを改ざんするためには、とんでもない処理能力をもった計算機が発明される必要がある。
今後連結されるブロックならば、マイナーを集め、ビットコインネットワークの51%の計算処理能力を集めれば可能かもしれない。
しかし、Bitcoinを利益として得ているマイナーたちが、そのようなBitcoinの価値を下げることをするメリットはない。

Cordaは、プライベートネットワークとNotaryを第三者が運営することで安全を担保している。
Bitcoinと違い、トランザクションを含むブロックがブロックチェーンに組み込まれることを待つ必要はない。
ビジネス向けに、Bitcoinの悪い点(いい点も)削って、扱いやすくしている。

参照

Consensus
https://docs.corda.net/docs/corda-os/4.4/key-concepts-consensus.html

Notaries
https://docs.corda.net/docs/corda-os/4.4/key-concepts-notaries.html

第2回:Cordaとは何か~Cordaの特徴~
https://medium.com/corda-japan/第2回-cordaとは何か-cordaの特徴-c5d1f961e068

第3回:Cordaとは何か ~Cordaの詳細~
https://medium.com/corda-japan/第3回-cordaとは何か-cordaの詳細-1b4687abf91e

Cordaの設計思想やその実装
https://medium.com/@newzhaosheng/cordaの設計思想やその実装-64c131add26