ICPのEthereumインテグレーションの仕組みと未来

2023/08/12に公開

インターネットコンピューター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の資産を扱えるようになります。

https://twitter.com/icp_ns/status/1687686939720536064

サービスナーバスシステムによるガバナンスの分散化

Dapp開発のガバナンスが分散化していない

ICPにはガバナンスの仕組みとして サービスナーバスシステム(SNS) と言われるものがあります。これはDAOの進化系であり、DappのガバナンスをSNSに移譲した後は、SNSでの投票を経ないとキャニスターの更新ができないようになります。これによりDappが 真の公共財 になることができます。
参考: Internet Computer Wiki - Service Nervous System
参考: 【SERVICE NERVOUS SYSTEM】インターネットコンピューター本命のローンチパッド

分散型オラクル on ICP

オンチェーンでのデータ取得が中央集権的なオラクルに依存している
オンチェーン情報の取得が中央集権的なクラウド、またはInfuraのようなサービス提供者に依存している

ICP上に作られ、JavaScriptまたはSolidityに対してマルチチェーンの価格データを提供するorallyChainsightの開発が行われています。

https://twitter.com/toyotaka_sakai/status/1680189617356824576

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サーバーを立て、これらのサブネットとキャニスターが通信する
  • ckETH & ckERC20
    • 分散化され、暗号学的に安全なブリッジをICP上に作り、ICPにEthereumの資産を持ち込む
  • EVM on ICP
    • ICP上でEVMが動くようにする

このうちプロトコルレベルの統合-フェーズ1については、2023年中での完了を目指して頑張っているようです。

https://twitter.com/Eikichi_WLI/status/1685285952875601920

Chain Key Technology

Chain Key Technology とはckETH、ckERC20を実現するための技術です。
ICPでは1台のサーバーをノードと呼び、複数のノードを1つのネットワークでつなげたものをサブネットと呼んでいます。サブネットは世界中に数千存在していて、キャニスターはどこかのサブネットにデプロイされます。

node-subnet-canistar

各サブネットはノードに分割された秘密鍵と、単一の公開鍵を持ちます。キャニスターはただ1つのノードだけで実行されるわけではなく、複数のノードで実行されます。ノードはキャニスターを実行すると、実行結果を他のノードとシェアし、同じ結果が得られたことが確認されると、しきい値を越える十分な数のノードでそれぞれに割り当てられた秘密鍵の破片を使って結果に対して署名します。その実行結果の署名はサブネットが持つ単一の公開鍵で検証することができます。
全てのサブネットの公開鍵はICPの単一の公開鍵で署名されるため、ICPが持つ単一の48バイトの公開鍵を知っているだけで、ユーザーはICPから返ってきた全ての処理に対して非常に低コストで検証することができます。

pkey-skey.png

参考: 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のスマートコントラクトに対して操作を行うこともできます。

https://twitter.com/dominic_w/status/1574546360418070528

参考: 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.icpICP 版クラウドファンディングのfundedで調達をして開発を続けています。

https://zenn.dev/gelgoog999/articles/dcd8aa0ab524f6

さて、そのPsychedelicはかつてDIP20DIP721という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の取り組み

https://twitter.com/icp_ns/status/1678411777434963969

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://twitter.com/dumblepytech1/status/1655895136595787778

参考: 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)
GitHubで編集を提案

Discussion