
この記事は「ICP Ninja: Your Dojo for the Internet Computer」を引用翻訳しています。
ICP Ninja: インターネットコンピュータのための道場
ICP Ninjaは、インターネットコンピュータ(ICP)上でアプリケーションを開発・デプロイするためのオンラインプラットフォームです。さまざまなサンプルプロジェクトの中から選び、ブラウザベースのエディタでコードを編集し、数秒でICPメインネットに直接デプロイできます。
ICP Ninjaとは?
ICP Ninjaは、カニスター・スマートコントラクトの作成とデプロイを行うためのウェブベースの統合開発環境(IDE)です。開発者がICP上で迅速かつシームレスに構築を開始できるように設計されています。ICP Ninjaは、従来のICP開発ワークフローを簡略化し、通常必要となるIC SDKのダウンロード、開発者IDの作成、カニスターのリソースを支払うためのサイクルの取得といった手順を不要にします。ICP Ninjaを使えば、テンプレートプロジェクトを開き、「デプロイ」ボタンをクリックするだけでアプリを展開できます。
また、ICP Ninjaは、統合AI学習アシスタントを提供し、質問の回答、コードのトラブルシューティング、特定のコードスニペットの解説、さらにはコードの改善まで支援します。
作業セッションは自動的に保存され、後で再開可能です。プロジェクトがデプロイされると、その実行時間は20分間に制限されますが、必要に応じて再デプロイが可能です。
ICP上のプロジェクトは、MotokoやRustなど、さまざまなプログラミング言語で記述できます。ICP Ninjaは、これらの言語のテンプレートプロジェクトを提供しており、将来的にはPythonやTypeScriptのサポートも計画されています。
IDEのテンプレートプロジェクトでは、HTTPSアウトコール、ランダム性、チェーンフュージョン(Chain Fusion)など、ICPの独自機能を強調しています。チェーンフュージョンとは、ICPがブリッジやオラクルを使用せずに、他のブロックチェーンネットワークと直接通信できる機能を指します。ICPカニスターは、他のブロックチェーンから情報を取得したり、直接トランザクションに署名して送信したりすることが可能です。これにより、イーサリアムやその他のEVMチェーン、さらにはビットコインでのDeFiアプリケーションの開発が可能になります。
チェーンフュージョンの仕組み
ICPは、他のネットワークと分散型の双方向通信を行うために、以下の3つの方法を採用しています。
直接統合(Direct Integration): ビットコインネットワークの場合、ICPは専用のビットコインサブネットを実行し、サブネットのノードがビットコインネットワークに参加することで、直接通信を実現します。カニスターは、チェーンキー暗号技術と閾値署名を用いて、ビットコインのメインネットにトランザクションを署名・送信できます。
分散型RPC統合(Decentralized RPC Integration): イーサリアムやその他のEVM互換ネットワークに対しては、RPCカニスターをプロジェクトに組み込み、CloudflareなどのJSON-RPCサービスにAPIリクエストを送信できます。RPCカニスターからのAPIコールは、HTTPSアウトコールを介して行われます。
HTTPSアウトコール(HTTPS Outcalls): カニスターが外部ソースからデータを送受信するための機能です。Web2サービスや他のブロックチェーンネットワークとの連携が可能になります。HTTPSアウトコールを用いて他のブロックチェーンと通信するためには、対象のチェーンがICPでサポートされる署名方式(ECDSA、EdDSA、Schnorrなど)を採用している必要があります。
EVMブロックエクスプローラプロジェクト
ICP Ninjaの「EVM Block Explorer」プロジェクトを通じて、チェーンフュージョンの実験を始めましょう。EVMブロックエクスプローラのサンプルプロジェクトでは、ICPスマートコントラクトが他のブロックチェーンネットワークから直接情報を取得し、ECDSAおよびSchnorr閾値署名を用いてメッセージに署名する方法を示します。
閾値署名はチェーンフュージョンの中核技術であり、カニスターがECDSAやSchnorrなどの異なる署名方式の公開鍵を持ち、それらを使用してメッセージに署名できる仕組みを提供します。
このプロジェクトをICP Ninjaで開き、実際に試してみましょう。現在Rustで利用可能であり、Motoko版も近日公開予定です。詳しい使用方法やプロジェクトの機能については、WELCOME.md および README.md ファイルを参照してください。
Comments