ICPのEthereumインテグレーションの仕組みと未来
インターネットコンピューターICPは分散型インターネットを目指したプロジェクトで、AWSやGCPのようなPaaSの分散化と、世界中に存在するサーバー群の分散性を確保するためにBitcoinのような「トークンに基づくインセンティブ設計」を使った、ブロックチェーン基盤の一つです。
ICP自体もブロックチェーンのL1として、トランザクションが早い、ガス代が安い、ストレージコストが安い、NFTのトランスファーにガス代がかからない、ユーザーはガス代を支払わない(リバースガスモデル)などの利点がありますが、それだけでは中々人々に使ってもらい普及するのは難しいです。
開発を主導しているDfinityのロードマップでは、BitcoinとEthereumのトークンをICP上で扱えるようにするという、それぞれBitcoinインテグレーションとEthereumインテグレーションという計画があります。
BitcoinとEthereumは既にノードの十分な分散性があり、51%攻撃がほぼ不可能な存在になっています。つまりその上に乗る資産は攻撃されるリスクが他のチェーンに比べて低いということです。しかしBitcoinもEthereumも、現在ではそのガス代が高い、トランザクションに時間がかかる、という問題があり、一部のクリプトオタクが使っているのみで一般に普及することはそのままでは難しいでしょう。しかしその十分に分散した、またそれによって多くの資産が乗っているチェーンとシームレスに統合し、BitcoinとEthereumの資産をICP上で扱えるようになることで、BitcoinとEthereumをガス代が安く、トランザクションが早く、扱うことができるようになります。Web2の速度でブロックチェーンを扱えるようになるのです。
今回はそれがどういう仕組みで実現されているのか、どういう未来が作れるようになるのか、特にEthereumとの統合について焦点を当てて解説していきます。
Ethereumを補完するICPエコシステム
まず、Dfinityは現在のEthereumについて、どのような問題があると考えているのでしょうか?
- Ethereum上のDappのフロントエンドが中央集権組織であるAWSやCloudflareにホスティングされている
- それにより対検閲耐性がない
- メタバースやGameFiと言われるものが中央集権組織であるAWSやGCPにホスティングされている
- 開発者がバックドアを仕込んだり、データベースにアクセスして恣意的にデータを変更できる
- Dapp開発のガバナンスが分散化していない
- ユーザーの意思とは異なるアップデートが追加される恐れがある
- オンチェーンでのデータ取得が中央集権的なオラクルに依存している
- オンチェーン情報の取得が中央集権的なクラウド、またはInfuraのようなサービス提供者に依存している
参考: ETHCC@パリ 2023-07-23
参考: Internet Computer Wiki - The Internet Computer for Ethereum Developers
ICP上では中央集権に依存することなくEthereumのエコシステムを成立させるための取り組みが行われています。上記の問題について、ICPはどのような答えを持っているのか見ていきましょう。
ICP上に静的サイトをホスティングする
Ethereum上のDappのフロントエンドが中央集権組織であるAWSやCloudflareにホスティングされている
ICPではHTMLとJavaScriptをホスティングすることができます。Ethereum上で一番大きなDappはUniswapで、これは主にはAWSにホスティングされていると言われていますが、バックアップとして既にICP上にもホスティングされ、配信されています。
これによりAWSが何らかの政治的な意図を持ってUniswapを配信できなくしたとしても、UniswapはICPから配信され、永久に動き続けることになります。
Uniswap interface on ICP: https://hrsyx-fqaaa-aaaag-aavja-cai.ic0.app/#/swap
メタバース on ICP
メタバースやGameFiと言われるものが中央集権組織であるAWSやGCPにホスティングされている
BOOM DAOはUnityで作ったゲーム・メタバースをICP上にホスティングでき、ICP上のトークンを操作できるようにする開発をしています。
ゲーム内からICPのキャニスターを操作できるということなので、そのキャニスターでEthereumの資産を扱えば、完全に分散化されたメタバースでEthereumの資産を扱えるようになります。
サービスナーバスシステムによるガバナンスの分散化
Dapp開発のガバナンスが分散化していない
ICPにはガバナンスの仕組みとして サービスナーバスシステム(SNS) と言われるものがあります。これはDAOの進化系であり、DappのガバナンスをSNSに移譲した後は、SNSでの投票を経ないとキャニスターの更新ができないようになります。これによりDappが 真の公共財 になることができます。
参考: Internet Computer Wiki - Service Nervous System
参考: 【SERVICE NERVOUS SYSTEM】インターネットコンピューター本命のローンチパッド
分散型オラクル on ICP
オンチェーンでのデータ取得が中央集権的なオラクルに依存している
オンチェーン情報の取得が中央集権的なクラウド、またはInfuraのようなサービス提供者に依存している
ICP上に作られ、JavaScriptまたはSolidityに対してマルチチェーンの価格データを提供するorally、Chainsightの開発が行われています。
Ethereum統合
ここまではEthereumの分散性に貢献するためのICP上での様々な取り組みについて見てきました。
ここからはより直接的に、ICPとEthereumがどのように統合していくのかについて見ていきます。
ロードマップ
Ethereum <> ICP
真のワールドコンピュータは、中央集権的なブリッジが廃止され、スマートコントラクトがブロックチェーン間でシームレスに通信できるマルチチェーン環境を実現する。ICP はすでにBitcoin・ネットワークと統合しており、ネイティブETH統合も進行中です。
https://internetcomputer.org/ethereum-integration
Ethereumとの統合については、以下のプランが考えられています。
- プロトコルレベルの統合
- フェーズ1
- HTTPアウトコールの技術を使って、ICP上のキャニスターからEthereumの既存のRPCサーバーに対して通信する
- フェーズ2
- ICP上にEthereumのフルノードとRPCサーバーを立て、これらのサブネットとキャニスターが通信する
- フェーズ1
- ckETH & ckERC20
- 分散化され、暗号学的に安全なブリッジをICP上に作り、ICPにEthereumの資産を持ち込む
- EVM on ICP
- ICP上でEVMが動くようにする
このうちプロトコルレベルの統合-フェーズ1については、2023年中での完了を目指して頑張っているようです。
Chain Key Technology
Chain Key Technology とはckETH、ckERC20を実現するための技術です。
ICPでは1台のサーバーをノードと呼び、複数のノードを1つのネットワークでつなげたものをサブネットと呼んでいます。サブネットは世界中に数千存在していて、キャニスターはどこかのサブネットにデプロイされます。
各サブネットはノードに分割された秘密鍵と、単一の公開鍵を持ちます。キャニスターはただ1つのノードだけで実行されるわけではなく、複数のノードで実行されます。ノードはキャニスターを実行すると、実行結果を他のノードとシェアし、同じ結果が得られたことが確認されると、しきい値を越える十分な数のノードでそれぞれに割り当てられた秘密鍵の破片を使って結果に対して署名します。その実行結果の署名はサブネットが持つ単一の公開鍵で検証することができます。
全てのサブネットの公開鍵はICPの単一の公開鍵で署名されるため、ICPが持つ単一の48バイトの公開鍵を知っているだけで、ユーザーはICPから返ってきた全ての処理に対して非常に低コストで検証することができます。
参考: Chain Key Cryptography: The Scientific Breakthrough Behind the Internet Computer
参考: Inside the Internet Computer | Chain Key Cryptography
参考: Titanium | Chain Key Cryptography Overview
Chain Key TX
そしてChain Key TXの技術により、ICPのキャニスターがEthereumのEOAとなり、Ethereumのアカウントアドレスを持ち、トランザクションを作ることができるようになります。
例えばInternet Identityを使ってログインし、ICPのキャニスターからUniswapのスマートコントラクトに対して操作を行うこともできます。
参考: Let’s Grow the Internet Computer Network: Why and How, and General Updates
この仕組みでETH←→ICPのブリッジを作るとこのようになります。
Solidityの側にスマートコントラクトは存在しません。あるのはICPのサブネットが持つ公開鍵に紐づくEOAのウォレットだけです。これがプールになります。
ICPのキャニスターはETH側のウォレットを監視し、ETHが送られてきたら対応する量のckETHをmintし、送ります。
そしてキャニスターにckETHが送られてくると、ckETHをバーンし、ETH側のウォレットから出金します。
Solidityのスマートコントラクトのバグによるハッキングや、バックドアによりプールの残高がラグプルされるとか、そのような危険は起きなくなります。
参考: Chain-Key Tokens
ckETH & ckERC20
Psychedelicの取り組み
Psychedelic とはICPのPlug Walletを最初に開発していた企業で、それ以外にもドメインサービスやNFTマーケットプレイスなどにも取り組んでいました。Psychedelic は現在ではFleekというサービスの開発に注力していて、Plug Walletは現在はluke.icpが ICP 版クラウドファンディングのfundedで調達をして開発を続けています。
さて、そのPsychedelicはかつてDIP20とDIP721というEthereumのトークン規格に対応したICP上のトークン規格を開発していました。
そしてそのトークンを使うために、独自でブリッジの仕組みも開発していたのです。
この通り、これは間にAWSという中央集権なサーバーを使った仕組みでした。Ethereum側のコントラクトはStarkWareのStarknetMessaging.solをフォークしたものを使っていたようで、野心的なプロジェクトではあったのだなと思います。
これは実現には至らず、プロジェクトは停止してしまいました。
参考: Terabethia: Bridging Contracts & Assets Across Ethereum and the Internet Computer
Dfinityの取り組み
DfinityのGithubリポジトリの中でckETHの開発されている様子を見ることができます。
https://github.com/dfinity/ic/tree/master/rs/ethereum/cketh
2023年8月現在では、ここにはETH側でckETHトークンをmintするためのminter.solというコントラクトがあり、ICP側ではRustでEthereumに対してトランザクション履歴を取得したり、トランザクションを作る処理、そのためのECDSA暗号のライブラリなどが含まれています。
ICP側でckETHのトークンをmintする処理については見つけることはできませんでした。
IC Light Houseの取り組み
IC Light HouseはICP上でのDEXを運営するプロジェクトであり、板取引を行えるICDex、エクスプローラーであるICHouse、ThirdWebのようにノーコードでトークン発行ができるicTokensを開発しています。
その中にブリッジであるICRouterがあり、ここでEthereumの資産をICP上に持ってくることができます。現在はテストネットでGoerliETHしか扱えませんが、試してみた所無事にブリッジに成功できました。
GoerliETHに対応するICP上のETHtest on IC networkトークンはDRC20の規格が使われているようです。
こちらのリポジトリで開発されていて、Motokoで書かれています。
https://github.com/iclighthouse/icETH
参考: ICLighthouse “Multi-Chain Asset Hub” Guide
EVM on ICP by Bitfinity
DfinityはICP上でのEVM開発はコミュニティベースで進めていくとアナウンスしていましたが、コミュニティでそれを担当していくのがBitfinityのプロジェクトだと思います。
BitfinityはICP上にあるEVM互換のチェーンです。ブロックタイムが1秒、ファイナリティが2秒、トランザクションコストは0.02ドルと、安い早いということを推しています。
RPC URL
https://testnet.bitfinity.network/
Chain ID
355113
Currency Symbol
BFT
Block Explorer URL
https://explorer.bitfinity.network/
現在はテストネットしかありませんが、UniswapのようなDEXであるChapSwapは使うことができました。
参考: https://bitfinity.network/
まとめ
このように、ICPではEthereumの分散性に貢献し、またEthereumにある資産を裏付けとした様々なDappsの開発を行うことができるようになります。
Solidityという言語は非常に限られた仕様の言語であり、またEthereum自体もデータストレージとしては高価過ぎます。Solidityの本当にすべきことは、コントラクト内にある最低限のデータの読み書きであり、またそれをERCという規格にすることで、世界中の人が統一されたスマートコントラクトのインターフェースを扱えるということに利点があるのではないでしょうか。
一方でICPではWASMでキャニスターが動きます。ICPが開発したMotokoという独自言語もありますが、WASMを出力するために、RustやPythonなどでもキャニスターの開発が行えるようになっていきます。
つまりオンチェーンの資産性の記録の部分はSolidityで行い、その資産性を使った複雑なアプリケーションはICPを使うと、分散しなめらかな価値交換ができる世界が作れるのではないでしょうか。
データベース操作 | アプリケーション開発 | |
---|---|---|
既存金融 | COBOL | Java |
Web2 | SQL(RDB) | PHP/Ruby/Python/TS... |
Web3 | Solidity(ETH) | WASM(ICP) |
Discussion