WEB3まとめ
ブロックチェーンのトリレンマ
ブロックチェーン技術が直面する根本的な課題のことで、具体的には「分散化」、「セキュリティ」、「スケーラビリティ」の3つの要素を同時に満たすことが非常に難しいっていうジレンマのこと。
分散化
分散化は、ネットワークを構成するコンピューター(ノード)が地理的に分散しており、中央機関や単一のエンティティによる管理が存在しない状態を指す。分散化されたネットワークは、耐障害性が高く、検閲に強いというメリットがある。しかし、ネットワークが大きくなるほど、全てのノード間で情報の同期を取るのが難しくなるため、スケーラビリティに影響を及ぼす可能性がある。
セキュリティ
セキュリティは、ネットワークが悪意のある攻撃者から保護されている度合いを指す。高いセキュリティを保つためには、十分な数のノードがネットワークに参加して、攻撃に対する耐性を持たせる必要がある。しかし、ネットワークの参加者が少ないと、セキュリティが低下しやすくなる。また、セキュリティを高めるために複雑な仕組みを導入すると、それがネットワークのパフォーマンスに影響を及ぼすこともある。
スケーラビリティ
スケーラビリティは、システムが成長や負荷の増加に適応できる能力のこと。ブロックチェーンで言えば、トランザクションを迅速に処理できる能力を指す。多くのブロックチェーンでは、全てのトランザクションを全ノードが検証する必要があるため、トランザクションの処理速度やネットワークの拡張性に限界がある。スケーラビリティを向上させようとすると、それが分散化やセキュリティを犠牲にすることにつながりかねない。
このトリレンマを解決しようとする試みとして、さまざまな技術やアプローチが提案されている。たとえば、シャーディングやレイヤー2ソリューション(ライトニングネットワークなど)、異なるコンセンサスメカニズム(PoS、DPoSなど)が挙げられる。
シャーディング
イーサリアムが直面するスケーラビリティ問題とは、トランザクションの処理速度やネットワークの容量に限界があり、大量の取引やスマートコントラクトの実行が集中すると、処理遅延や手数料の増加を引き起こす問題。この問題に対処するために開発された技術がシャーディングである (Coinotaku)。
シャーディングとは、データベースを複数のパーツに分割して負荷を分散させる技術のこと。イーサリアムにおけるシャーディングは、ネットワークを複数のシャードチェーンに分割し、それぞれが独立してトランザクションを処理することで全体の処理能力を向上させる仕組み。最初は64のシャードからスタートし、将来的にはさらに増やしていく予定だ(ログミーBiz)。
ビーコンチェーン
ビーコンチェーンはイーサリアム2.0の中核となる技術で、シャーディングチェーンをコーディネートする役割を持つ。具体的には、バリデーターの割り当てや報酬、ペナルティの管理、さらにはシャーディング間のコミュニケーションを司る。ビーコンチェーンの導入により、イーサリアムの電気消費量は99.95%削減され、ブロック生成の安定化や手数料の改善にもつながっている (HashHub Research)。
イーサリアムのイエローペーパー
EOA(Externally Owned Account)とCA(Contract Account)
イーサリアムブロックチェーン上での2種類のアカウントを指している。これらはイーサリアムネットワークの基本的な構成要素で、それぞれ異なる役割を持っている。EOAとCAの関係を理解するには、まずそれぞれの特徴を把握することが大切。
EOA(Externally Owned Account)
所有者がいる: EOAはユーザー(人間)によってコントロールされるアカウントで、プライベートキーによって管理される。
イーサ送金ができる: EOAはイーサ(ETH)の送受信が可能。
トランザクションを開始できる: スマートコントラクトを含むトランザクションをブロックチェーン上で開始できる唯一のエンティティ。つまり、スマートコントラクトの関数を呼び出すのもEOAから行われる。
コードを持たない: EOAはイーサリアムのコード(スマートコントラクト)を持っていない。
CA(Contract Account)
スマートコントラクトがある: CAはスマートコントラクトのコードを持ち、そのコードによって定義されたルールに従って動作する。
EOAによって作成される: スマートコントラクト(CA)は、EOAによってデプロイ(作成・公開)される。
自動実行が可能: スマートコントラクトは、関数が呼び出されたときに自動的にコードを実行する。ただし、自らトランザクションを開始することはできない。すべてのアクションはEOAまたは他のCAによってトリガーされる。
イーサを持つことができる: CAもイーサを保有し、トランザクションの一環としてイーサを送受信することができる。
EOAとCAの関係
EOAとCAの主な関係は、「制御」と「相互作用」に集約される。EOAはスマートコントラクト(CA)をデプロイし、スマートコントラクトの関数を呼び出して操作する。一方で、スマートコントラクトは自動化されたビジネスロジックや契約の条件を実行し、EOAや他のCAと相互作用することができる。
例えば、ユーザー(EOA)がスマートコントラクトに対してトランザクションを送信して関数を呼び出し、その結果としてスマートコントラクトから別のアカウント(EOAやCA)にイーサが送られる、といった流れが考えられる。
アカウントの抽象化
イーサリアムの開発コミュニティでは、アカウントの抽象化(Account Abstraction)について議論されている。アカウントの抽象化は、EOAとCAの機能差を減らし、より統一的なアカウントモデルを提案することを目指している。具体的には、すべてのアカウントがスマートコントラクトの能力を持ち、ユーザーがより柔軟にアカウントの動作をカスタマイズできるようにすることを意味している。
アカウントの抽象化のメリット
セキュリティの向上: ユーザーが自分のアカウントのセキュリティモデルをカスタマイズできるようになり、例えばマルチシグやその他の認証方法を簡単に導入できるようになる。
操作の柔軟性: トランザクションの承認方法や費用の支払い方法に柔軟性が持てるようになる。
ユーザーエクスペリエンスの改善: より一貫したアカウントモデルを提供することで、ユーザーがイーサリアムプラットフォームを使いやすくなる。
実装の課題
アカウントの抽象化は技術的に複雑であり、ネットワークのセキュリティやスケーラビリティに影響を与える可能性があるため、慎重な検討とテストが必要。また、既存のイーサリアムのインフラストラクチャとの互換性を保ちつつ、新しいアカウントモデルを導入するには、広範なコミュニティの合意形成が必要となる。
決定論的アルゴリズム
同じ入力に対して常に同じ出力を返し、その振る舞いが完全に予測可能なアルゴリズムのことを指す。つまり、アルゴリズムの実行過程にランダム性や不確定性がない状態。
この種のアルゴリズムでは、入力データセットが与えられた時、アルゴリズムの各ステップが一意に定まっており、実行の度に同じ経路をたどる。これは計算の再現性を保証し、デバッグやテスト、分析が比較的容易であることを意味している。
例
ソートアルゴリズム: クイックソート、マージソート、バブルソートなど、決定されたルールに従ってリストや配列をソートするアルゴリズム。
検索アルゴリズム: 二分探索など、特定のデータを効率的に見つけるためのアルゴリズム。
数学的アルゴリズム: 最大公約数を求めるユークリッドの互除法や、素数を判定するアルゴリズムなど、数学的な問題を解くためのアルゴリズム。
非決定論的アルゴリズム
決定論的アルゴリズムと対照的なのが、非決定論的アルゴリズム(または確率論的アルゴリズム)だ。非決定論的アルゴリズムは、同じ入力に対しても実行の度に異なる経路をたどるかもしれず、結果が毎回異なる可能性がある。このようなアルゴリズムは、特に計算複雑性理論や暗号理論、最適化問題などの分野で重要な役割を果たしている。
よろしければサポートお願いします!よりいい情報を発信します。