概要:
分散型アプリケーションは以下のような構成になっています。
分散型アプリケーションは複数の部分から構成されますが、現在のところ、バックエンドのコアロジックだけがイーサ上で実行され、フロントエンドのコードなど他の部分はまだイーサの外に展開されています。 また、アップリンクされていないデータも多く含まれているため、ほとんどのDAPPはイーサの完全なセキュリティを継承することができず、理想化には程遠い状態です。
これらの問題の主な理由は2つあります。1つ目は、イーサネットが開発者に適切なフロントエンドの標準とツールを提供していないこと、2つ目は、チェーン上にデータを保存するコストが高すぎることです。
分散型のフロントエンド標準を提供するために、EthStorageチームはweb3://アクセスプロトコルを提案しました。これは、スマートコントラクトを通じて、フロントエンドコード、さらにはファイルシステムクラスをデプロイしてアクセスするための標準とツールの完全なセットを開発者に提供するものです。ファイルシステムの標準とツールは、現在ではイーサネットの公式標準となっている。
イーサチェーン上にデータを保存するコストを削減するために、EthStorageチームは、PoRA(ランダムアクセスの証明)とゼロ知識証明を活用する2層ストレージプロトコルであるEthStorageを開発しました。PoRA(ランダムアクセスの証明)とゼロ知識証明を活用し、Ether層のセキュリティを継承しながら、ストレージのオーバーヘッドを劇的に削減します。
謝辞:この記事に対するフィードバックをくださったGeek Web3のFaust氏、ChainFeedsのZhixiong Pan氏、LXDAOのBruce氏、EthStorageのQi Zhou氏、Lun Deng氏に感謝します。LXDAO、Bruce、Qi Zhou、EthStorageのLun Deng、Faust。
分散型DAPPの背景と問題点
Etherのビジョンは世界のコンピュータになることであり、その上に構築されたアプリがそのセキュリティを継承することが望まれています。開発者が一度デプロイするだけで、そのアプリは永遠にイーサ上で実行され、検閲や悪意のある操作を行うことはできない。
しかし、今日の分散型アプリ(DAPP)はこれらの目標を達成しているのだろうか?この質問にもっと明確に答えるには、DAPPアプリを分解して、それがどのような部分を含んでいるのかを確認し、最終的な結論に到達するために、各部分がどの程度信頼されていないのかを分析する必要があります。
一般的に、分散型DAPPには、フロントエンドのインターフェース、バックエンドのサーバー、データベースが含まれます。ユーザーがフロントエンドのインターフェイスにアクセスすると、フロントエンドのコンテンツがブラウザとドメインのサービスを通じてロードされます。
フロントエンドとドメインサービス:ほとんどの場合、スマートコントラクトを通じてデプロイされ、アクセスされることはありませんが、ブロックチェーンは、単一障害点の回避、コードの不変性、改ざん防止、検閲への耐性などの機能を提供します。改ざん、検閲耐性、コミュニティガバナンスなどの機能は、フロントエンドのこの部分には反映されていません。
バックエンドサーバー:スマートコントラクトによって部分的に実現され、一部の計算集約的なタスクは完全にアップリンクできません。
データベース:部分的にスマートコントラクトによって実現され、オンチェーンストレージのコストが高いため、DAPPは大量のデータの場合にオフチェーンストレージソリューションを採用しています。
上記の分析を通して、データベースはスマートコントラクトによって部分的に実装されていることがわかります。
上記の分析を通して、今日の分散型DAPPのコンポーネントの一部だけが、スマートコントラクトを通してイーサリアムによって保護されていること、そしてイーサリアムシステムが「分散型ワールドコンピュータ」という当初のビジョンを実現するには程遠いことがわかります。
2023年後半、ヴィタリック氏はイーサの開発を振り返り、イーサコミュニティがクリプトパンクの考え方に戻るべきかを論じた「Make Ethereum Cypherpunk Again(イーサリアムを再びサイファーパンクに)」という非常に評判の高い記事を書きました。
非中央集権型アプリは、単一のエンティティへの依存を最小限に抑えるべきです。機能し続けることができます。
これは次のことを示しています。ヴィタリックは、分散型アプリがどのように構築されるべきかについて、同様の期待を持っている。私たちは分散型DAPPの各コンポーネントが直面する問題を詳細に分析し、それらをどのように改善できるかを見ていきます。
フロントエンドとドメインサービス
分散型アプリのいくつかのコンポーネントのうち、フロントエンドとドメインサービスは最も中央集権的です。現在、大半のdAppはフロントエンドに中央集権化されたサーバーを使用しており、プロジェクトオーナーはコミュニティガバナンスを通したり、タイムロックの制約を受けたりすることなく、いつでもフロントエンドのコードを変更することができます。
ハッカーはサーバーに侵入してフロントエンドのコードを変更することができ、dAppユーザーはその悪意のあるフロントエンドを使用することで資産を失う可能性があります。
この問題は前回のDeFi Summerで繰り返し取り上げられ、私たちはなぜフロントエンドがバックエンドと同様にイーサにデプロイされず、コミュニティガバナンスとタイムロックによってのみ変更が有効になるようにできないのかと考えました。
さらに想像してみてください。もしUniswap開発チームがフロントエンドサーバーとドメイン名サービスへの支払いを止めたら、UniswapユーザーとLPはどのようにUniswapを使うでしょうか?
大多数のユーザーは、フロントエンドをバイパスしてスマートコントラクトとやりとりする方法を知りませんし、UniswapはフロントエンドをIPFSにアップロードしようとしていますが、IPFSとイーサは信頼性と非信頼性のレベルが全く異なる異なるネットワークです。IPFSのコンテンツはアクセスに時間がかかり、今現在もユーザーの大半は中央サーバーに配置されたUniswapのフロントエンドとやりとりしていることは注目に値する。
さらに、UniswapのフロントエンドはUniswap Labsによって運営されているため、規制に対応するためにトークン一覧の精査を強化しています。スマートコントラクトを自由に変更することはできません。つまり、フロントエンドで検閲されたトークンは、コントラクトレベルでやり取りすることができるのだ。
バックエンドサーバー
EVMはチューリング完全な実行環境を提供するため、バックエンドロジックのほとんどはイーサリアムチェーン上で実行することができ、スマートコントラクトアプリはイーサリアムのセキュリティを継承していると言えます。セキュリティを継承している。ただ、一部の計算負荷の高いタスクは、コストがかかるため、チェーン上で直接実行することはできません。
この問題に対処するため、計算をオフチェーンで転送し、結果のみをイーサチャネル上で確認することで、計算をスケールアップするZKまたはOPアプローチが模索されている。AI関連のプロジェクトの中には、このアプローチを極限まで進め、AIのマクロモデリングのような超計算集約的なタスクをブロックチェーンにつなげようとしているものもあり、注目しておく価値がある。
データベース
データベースについては、EVMはもともとキー・バリュー・ストアをサポートしており、幅広いシナリオをカバーすることができました。しかし、核心的な問題は、オンチェーンストレージのコストが高すぎるということです。
どれくらい高いのか?ガス価格が10Gweiの場合、オンチェーンに1GBのデータを保存するには6200ETH以上、つまり2000万ドル以上が必要です!明らかに、ストレージのコストはデータベース分散化の中核的な問題になります。
上で説明した計算スケーリングと同じような方法で、つまり、オフチェーンストレージ、ストレージのオンチェーン検証でストレージをスケーリングできないかと考えるかもしれません。このアイデアについては後で詳しく説明します。
上述のDAPPコンポーネントを分析した結果、DAPPの各部分を、信頼できる全体として機能するのに十分安全で信頼できるものにすることによってのみ、真に分散型DAPPとなりうることがわかりました。イーサはdAppsを実行しホスティングするプラットフォームとして、イーサのビジョンに沿ったアプリのエコシステムを生み出すために、開発者に適切なソリューションを提供する必要があります。
DAPPのための非信頼ソリューション
EthStorageチームは、DAPPを完全にEtherに基づいて展開し、アクセスできるようにする方法に関する2つのソリューションを提案しました:
web3:// アクセスプロトコル
web3:// は、http:// の分散バージョンと考えることができます。サーバーのIPアドレスやドメイン名を指定することで中央集権的なリソースにアクセスするhttpのURLと同様に、web3のURLは、そこに保存されているリソースにアクセスするためにスマートコントラクトのアドレスやENSのドメイン名を指定する必要があります。
ウェブサイトのフロントエンド全体をスマートコントラクトにデプロイし、web3://経由でアクセスすることができます!この2つを比較してみてください。strong>web3://は公式のイーサネット標準(ERC-4804)となっており、web3://アクセス・プロトコルについてもっと知りたい方は、公式ウェブサイトをご覧ください。スマートコントラクトにおけるファイル管理をより良くするために、私たちはERC-5018を提案しました。これは、スマートコントラクトにおけるファイルシステムインターフェースのセットをエミュレートするもので、ethfs-cliを介してスマートコントラクトにパッケージ化されたフロントエンドコードのフォルダをアップロードし、web3://を介してこのサイトにアクセスすることが可能です。
興味のある方は、 チュートリアル に従って、簡単な分散型アプリのデプロイとアクセスを完了することができます。
web3://アクセスプロトコルを使えば、dAppフロントエンドを本当に「コードは法律」の財産にすることができます。開発者にとって、一度デプロイされれば、このフロントエンドは永遠に強制されます。Uniswap labsが彼らのフロントエンドをEtherにもデプロイした場合を想像してみてください。チームがフロントエンドのレベルでユーザーを検閲し制限したくても、Ether上で人々が彼らのフロントエンドを使うのを止める方法はないでしょう。
もちろん、実現可能性の問題を解決した後、私たちは大量のデータをオンチェーンに保存することは非常にコストがかかるということにも気づきました。私たちはさらに、イーサネットのセキュリティを継承しながらストレージのオーバーヘッドを大幅に削減するために、EthStorage 2層ストレージプロトコルを開発しました。
EthStorageレイヤー2ストレージプロトコル
EthStorageプロトコルは、イーサ上に展開されたスマートコントラクトと、レイヤー2ネットワークのストレージノードで構成されています。ネットワークでは、スマートコントラクトがキーバリューストアを提供し、レイヤー2ストレージノードがデータ自体の保存を担当します。
ユーザーはEIP-4844のBLOBを介してEtherに保存するデータをアップロードし、EthStorageスマートコントラクトはBLOBにデータのハッシュのみを記録し、ストレージコストを効果的に削減します。
同時に、セカンダリストレージノードは、対応するBLOBデータをローカルディスクにダウンロードし、PoRA(ランダムアクセスの証明)とZKを使用し、それを検証するためにイーサ上のコントラクトにストレージの証明を提出します。コントラクトは、ストレージノードによってアップロードされたストレージのZK証明が正しいことを、以前に記録されたBlobハッシュを使用して検証し、第2層ネットワークのストレージノードが実際にデータを保存していることを確認する必要があります。
プロセスは次のとおりです:
開発者にとって、データのアップロードと取得のためのインターフェースは非常にシンプルです:
アプリケーション開発者は、EthStorageが提供する契約インターフェースを通じて、大きなデータの塊を直接読み書きすることができます。その結果、EthStorageはフロントエンドのオンチェーン展開をサポートするだけでなく、より広範なキーバリューストアデータベース操作のための低コストソリューションも提供します。
現在、EthStorageはイーサから正式な認可を受けており、誰でも参加できる公開テストネットワークをセポリアに展開しています。
概要と展望
フロントエンドやデータベースなど、DAPPの重要なコンポーネントのほとんどはEtherNet上に展開されておらず、EtherNetのセキュリティを継承することができません。管理することができません。
EthStorageはこの問題に対する2つの解決策を提案しています:スマートコントラクトを使用したフロントエンドのデプロイとアクセスの問題を解決するためのweb3://アクセスプロトコルと、高いストレージコストの問題を解決するためのEthStorage 2階層ストレージプロトコルです。
イーサネットの当初のビジョンを実現するために、私たちはイーサネットが分散型ウェブサーバーに進化すると考えています。エコシステム内の分散型アプリは、バックエンドのコード、フロントエンド、データのいずれであっても、すべてのコンポーネントをイーサネットにデプロイし、一度デプロイされると、コードは永遠に実行でき、データは永遠にアクセスできます。
EthStorageオープンベータネットワークは2回目のインセンティブキャンペーンを実施しており、興味のあるコミュニティメンバーはガイドに従って最初のUnstoppable Dappのデプロイとアクセスを完了することができます!