Aptos:Facebook Libraの遺産から生まれた高速ブロックチェーン徹底解説

Aptos:Facebook Libraの遺産から生まれた高速ブロックチェーン徹底解説

Aptos:Facebook Libraの影から生まれた革新的ブロックチェーン

2017年、Facebookが着手したLibraコインを覚えていますか?複数の法定通貨に裏付けられたステーブルコインとして期待されましたが、政府や金融規制当局からの激しい反発を受けました。伝統的な金融システムと法定通貨(例えば米ドル)の安定性を脅かし、マネーロンダリングにも利用される可能性があると懸念されたのです。さらに、当初Libraブロックチェーンは中央集権型の設計でした。

規制当局の承認を得てローンチを試みるため、2020年にはDiemブロックチェーンへとリブランディングされ、米ドル単独の裏付けに変更されました。しかし、それでもプロジェクトは成功せず、2022年1月にプロジェクトは閉鎖されました。

驚くべきことに、Diemプロジェクトに関わっていた開発者の一部が、Diemブロックチェーンで開発された技術の一部を利用して、独自の暗号通貨プロジェクトを立ち上げました。その中でも注目すべき二つのプロジェクトがAptosとSuiです。

Aptosとは何か?その技術とビジョン

Aptosは、スマートコントラクトをサポートするレイヤー1ブロックチェーンです。Ethereumのように、トークンやアプリケーションを構築できます。Aptosは、元Meta(旧Facebook)のエンジニアであるMo ShaikhとAvery Chingによって設計されました。

FacebookでDiemブロックチェーンに取り組んでいたエンジニアたちは、無限に近いリソースと多くの時間を持っていました。そのため、彼らが開発した技術は並外れたものとなるはずです。プロジェクトが閉鎖された後、ShaikhとChingはAptosを立ち上げ、多くのベンチャーキャピタル(VC)から注目を集めました。

Aptosは2回にわたって3億5000万ドル以上の資金調達を行いました。

  • 第1ラウンド: Andreessen Horowitz主導、2億ドル調達
  • 第2ラウンド: FTX主導、1億5000万ドル調達

その後、BinanceもAptosへの投資を発表しましたが、投資額は非公開です。注目すべき点は、Aptosはトークノミクスやホワイトペーパーを発表することなく、これだけの資金調達を実現したことです。

Aptosの目的、またはビジョンは、高速かつ安全なブロックチェーンを提供し、低いトランザクション手数料でWeb3の普及を促進することだと主張しています。Aptosチームは、ブロックチェーンが毎秒最大16万件のトランザクションを処理できると主張しています。

しかし、2022年10月のメインネットローンチ時には、ローンチ日に毎秒わずか4件のトランザクションしか処理できませんでした。これは多くの投資家に懸念を与えました。Aptosチームは、まだ新しいブロックチェーンであるため十分なアクティビティがないことが原因だと主張しています。

本稿作成時点では、Aptosブロックチェーンの平均速度は毎秒約7トランザクションですが、過去1ヶ月間では毎秒最大288トランザクションに達しています。つまり、ブロックチェーンはまだ十分にテストされておらず、本当に高速なパフォーマンスを実現できるかどうかは未知数です。

Aptosの動作メカニズム:並列実行、Aptos BFT、Move言語

Aptosが毎秒最大16万件のトランザクションを処理できると主張する技術的根拠を理解するために、以下の3つの主要な要素を説明します。

  1. トランザクションの並列実行
  2. Aptos BFTコンセンサスアルゴリズム
  3. 新しいMoveプログラミング言語

トランザクションの並列実行:効率性と課題

Ethereumブロックチェーンでは、トランザクションは「メモリプール」と呼ばれる未確認トランザクションのグループに送られます。これらのトランザクションは、順次実行され、ブロックに追加されます。

トランザクションの実行とは、トランザクションの処理を意味します。例えば、友人に50USDTを送信する場合、トランザクションの実行は、あなたの残高から50USDTを差し引き、友人の残高に50USDTを加算することです。

バリデータ(Ethereumネットワーク上のコンピューター)は、メモリプールからいくつかのトランザクションを集め、一度に一つずつ順次実行します。高いガス代を支払うトランザクションが優先的に実行され、他のトランザクションは順番を待つ必要があります。

この順次実行メカニズムは時間がかかり、特に多くのトランザクションが実行と確認を待っている場合、高いガス代を支払う必要が生じます。

そこで、並列実行という考え方が出てきます。これは、バリデータが複数のトランザクションを同時に実行することを意味します。しかし、この方法には問題があります。1つのブロック内の2つのトランザクションが、同時に同じアカウントの残高を使用しようとすると、「ダブルスペンディング」が発生する可能性があります。

例えば、Taylorが500USDTを持っており、Jessicaに500USDT、Johnに500USDT送る2つのトランザクションを実行した場合、順次実行であれば、最初のトランザクションが実行されTaylorの残高が更新された後、2つ目のトランザクションは残高不足で失敗します。しかし、並列実行だと、両方のトランザクションがTaylorの残高が十分だと判断し、実行されてしまい、ダブルスペンディングが発生します。

Solanaは、独立したトランザクションのみを並列実行することでこの問題を解決しました。独立したトランザクションとは、同じアカウントやデータを読み書きしないトランザクションです。例えば、JohnがTaylorに100USDT、JessicaがJenniferに300USDTを送るトランザクションは独立しています。しかし、Michaelから200USDTを受け取った後、Adamに100USDTを送るトランザクションは、依存関係があるため独立していません。

Aptosのアプローチ:Block-STMと楽観的並列実行

Aptosは、トランザクションの並列実行において、異なるアプローチを取ります。**Block-STM(Software Transactional Memory)**と呼ばれる技術を使用し、開発者がデータの読み書きを明示的に指定する必要なく、並列実行を行います。

Block-STMでは、マルチバージョンデータ構造が使用されます。これは、同じデータに対して複数のバージョンを保存できるメモリです。例えば、あなたのアカウント残高は、50、100、80など、複数のバージョンを持つことができます。

Aptosでは、トランザクションは順序付けられ、楽観的に並列実行されます。つまり、依存関係のあるトランザクションがないと仮定して、すべてのトランザクションを同時に実行し、後で依存関係のあるトランザクションがないか検証します。

例:

ブロックに8つのトランザクションがあり、そのうち3つは送金トランザクション(トランザクション1、2、3)で、依存関係があります。

バリデータがトランザクション1を実行する場合、あなたのアカウントデータを読み取り、残高(例えば200USDT)を読み、トランザクション金額(例えば20USDT)を差し引きます。しかし、この結果(新しい残高)はすぐにブロックチェーンに保存されず、アカウントデータの新しいバージョンとして保存されます。

同時に、トランザクション2も処理されます。トランザクション2は、トランザクション1によって作成されたデータバージョンではなく、元のデータバージョンを読み取ります。なぜなら、2つのトランザクションは同時に処理されるからです。したがって、トランザクション1によって書き込まれたデータはまだ存在しません。トランザクション2は、元の残高を読み取り、トランザクション金額を差し引き、新しい残高を新しいデータバージョンとして書き込みます。

トランザクション3も同様に処理されます。元の残高を読み取り、トランザクション金額を差し引き、新しい残高を新しいデータバージョンとして書き込みます。

一方、トランザクション4は独立しているので、問題なく同時に実行されます。

最初の4つのトランザクションが並列実行された後、ネットワークは依存関係のあるトランザクションがないか検証します。検証では、各トランザクションが読み取ったデータと、そのトランザクションの前に実行されたトランザクションによって書き込まれた最新のデータバージョンを比較します。

トランザクション1は、読み取ったデータバージョンと最新のデータバージョンが一致するため、検証に合格します。しかし、トランザクション2は、読み取ったデータバージョンと最新のデータバージョンが異なるため、検証に失敗し、後で再実行されます。トランザクション3も同様に検証に失敗し、再実行されます。トランザクション4は独立しているため、検証に合格します。

検証も並列で行われます。Block-STMは、前のトランザクションによって変更されたデータをマークすることで、不要な実行と検証を減らします。検証に失敗したトランザクション2のデータバージョンは「失敗」とマークされ、将来このデータを読み取ろうとするトランザクションは、トランザクション2が正常に再実行されマークが削除されるまで停止します。

次の4つのトランザクションでは、トランザクション2が再実行されますが、トランザクション3は再実行されません。なぜなら、トランザクション3はマークされたトランザクション2のデータを読み取ろうとするため、検証に失敗するからです。トランザクション2が再実行された後、トランザクション3が再実行されます。

比喩による説明:一車線道路と4車線高速道路

Ethereumを1車線の道路、トランザクションを車に例えると、すべての車は順番に道路を通過します。AptosとSolanaは4車線の高速道路で、より多くのトラフィックを処理し、車がより速く通過できます。

Solanaは、それぞれの車に最適な車線を割り当てて、他の車との衝突を避けます。車線が割り当てられると変更できません。

Aptosは、車に特定の車線を割り当てません。どの車でもどの車線でも通過できます。うまくいかなかったり、衝突を引き起こしたりした場合、車線を変えることができます。

この例えで、Solanaは事前に衝突を回避しようとし、Aptosは衝突が発生してから対処します。

Aptos BFTコンセンサスアルゴリズム

Aptosは、**Aptos BFT(Byzantine Fault Tolerance)**と呼ばれるコンセンサスアルゴリズムを使用しています。これは、プルーフ・オブ・ステーク(PoS)の一種で、バリデータがコインをステーク(ロックアップ)することで、ネットワーク上のトランザクションの検証に参加できます。

新しいトランザクションブロックごとに、ネットワークはランダムにリーダーバリデータを選択し、トランザクションを処理します。ステークするコインが多いほど、リーダーに選ばれる確率が高くなります。Aptosでは、評判もリーダー選択確率に影響します。長期間正常に動作しているバリデータは、より高い確率で選ばれます。

リーダーバリデータは、トランザクションを収集、順序付け、並列実行し、他のバリデータに送信します。他のバリデータは、トランザクションと順序を確認し、ブロックに投票します。投票は2ラウンド行われ、すべてのバリデータがブロックを受信し投票するようにします。投票に参加すると、バリデータの評判が向上し、次のブロック処理リーダーに選ばれる確率が高まります。

2/3以上のバリデータがブロックに承認すると、ブロックは永続的にブロックチェーンに追加され、リーダーバリデータはAPTコインで報酬を受け取ります。Aptosでは、各バリデータは100万APTコイン(執筆時点では1300万ドル相当)をロックアップする必要があります。現在、Aptosネットワークには約104のバリデータが存在しますが、誰がそれらを運用しているかは不明です。

Moveプログラミング言語:セキュリティと効率性

Aptosを語る上で、重要な要素がMoveという新しいプログラミング言語です。Moveは、AptosとSuiのスマートコントラクトとアプリケーションのコード記述に使用されます。

Moveは、当初FacebookチームがLibraブロックチェーンのために設計し、Rustをベースにしています。Rustは、Solana、Solkadot、Nearなどでも使用されているプログラミング言語です。そのため、これらのブロックチェーンの開発者は、Moveを新たに学習する必要がありません。

MoveとEthereumで使用されるSolidityの大きな違いは、トークンやNFTが物理的な資産のように扱われる点です。ユーザーアカウント内のリソースまたはオブジェクトとして保存され、1つの場所でのみ存在できます。トークンは、あなたのアカウントか、私のアカウントのどちらかに保存されます。

Ethereumでは、トークンはデジタル番号として扱われます。トークンにはコントラクトがあり、そのコントラクトにあなたのアドレスと、トランザクション時に変化する残高が割り当てられます。

Moveはこの方法を採用することで、セキュリティを向上させ、リエントランシー攻撃(DAOハックやCream Financeハックなど)から保護することを目指しています。リエントランシー攻撃は、ハッカーがスマートコントラクトからトークンを流出させる攻撃です。

APTトークンのトークノミクス

APTトークンは、Aptosブロックチェーンで3つの主要な用途があります。

  • トランザクション手数料の支払
  • バリデータによるステーキング
  • ガバナンス(現在はバリデータのみ、トークン保有者ではない)

2022年のメインネットローンチ時には、10億APTトークンが発行され、その配布は以下の通りです。

  • 投資家:13.5%
  • Aptos財団:16.5%
  • コアコントリビューター:19%
  • コミュニティ:51%(Aptos財団が助成金やインセンティブを通じて配布)

現在、市場で流通しているのは1億6000万APTトークンのみで、その大部分はコミュニティに割り当てられた51%から来ています。残りのトークンは、今後特定の期間にわたってロック解除されます。

重要なのは、ロックされたトークンはAptos財団によって保有・ステークされており、コミュニティに割り当てられたトークンやステーキング報酬が含まれるものの、ステーキング報酬はロックされていません。つまり、投資家、財団、Aptosチームは、ロックされたトークンからのステーキング報酬を自由に売却できます。これは、多くの投資家にとって懸念事項です。

APTはインフレ型コインであり、インフレ率は7%です。これは、供給量が毎年7%増加することを意味します。この7%は、バリデータに分配されるステーキング報酬から生まれます。インフレ率は毎年1.5%ずつ減少していき、50年後には3.25%になります。また、Aptosではトランザクション手数料はバーン(焼却)されます。

Aptosチームによると、2032年には、APTの総流通量は約16億トークンになる見込みです。

まとめ

本稿では、Aptosブロックチェーンとその技術的な詳細、特に並列トランザクション処理、コンセンサスアルゴリズム、Moveプログラミング言語について解説しました。また、APTトークンのトークノミクスについても説明しました。Aptosは、革新的な技術と高いポテンシャルを持つブロックチェーンですが、課題も存在します。そのパフォーマンスとガバナンスの透明性については、今後の展開を見守る必要があります。