この記事はICP公式のChainFusionページ「ChainFusion」から引用/翻訳しています。
ChaniFusionとは
スマートコントラクトが複数のネットワークと相互作用することを可能にし、開発者がさまざまなブロックチェーン上でマルチチェーンのユースケースを構築できるようにします。
ビットコインとイーサリアムの連携
このコードスニペットは、RustとMotokoで記述されていますが、Solidity、TypeScript、Pythonなどでも可能です。
Motoko コード例
import evm "ic:a6d44-nyaaa-aaaap-abp7q-cai";
import ic "ic:aaaaa-aa";
import Cycles "mo:base/ExperimentalCycles";
import Timer "mo:base/Timer";
actor {
let EVM_FEE = 1000;
let BITCOIN_FEE = 1000;
func check_evm_log() : async () {
Cycles.add<system>(EVM_FEE);
let log = await evm.eth_getLogs(
#EthMainnet(null),
null,
{
addresses = ["address"];
fromBlock = ? #Finalized;
toBlock = ? #Finalized;
topics = ?[["topic1", "topic2"]];
},
);
switch log {
case (#Consistent(#Ok(_))) {
await send_bitcoin();
};
case _ {};
};
};
func send_bitcoin() : async () {
Cycles.add<system>(BITCOIN_FEE);
await ic.bitcoin_send_transaction({
transaction = "\be\ef";
network = #testnet;
});
};
let _ = Timer.setTimer<system>(#seconds 2, check_evm_log);
};
Rustのコード例
#![allow(non_snake_case, clippy::large_enum_variant, clippy::enum_variant_names)]
use std::time::Duration;
use candid::{self, CandidType, Deserialize, Principal};
pub const SCRAPING_LOGS_INTERVAL: Duration = Duration::from_secs(3 * 60);
fn setup_timers() {
ic_cdk_timers::set_timer(Duration::ZERO, || ic_cdk::spawn(check_evm_log()));
ic_cdk_timers::set_timer_interval(SCRAPING_LOGS_INTERVAL, || ic_cdk::spawn(check_evm_log()));
}
#[ic_cdk::init]
fn init() {
setup_timers();
}
async fn check_evm_log() {
let cycles = 10_000_000_000;
let canister_id = Principal::from_text("a6d44-nyaaa-aaaap-abp7q-cai").expect("principal should be valid");
let (result,) = ic_cdk::api::call::call_with_payment128::<
(RpcServices, Option<RpcConfig>, GetLogsArgs),
(MultiGetLogsResult,),
>(
canister_id,
"eth_getLogs",
(
RpcServices::EthMainnet(None),
None,
GetLogsArgs {
fromBlock: Some(BlockTag::Finalized),
toBlock: Some(BlockTag::Finalized),
addresses: vec!["dummy_address".to_string()],
topics: Some(vec![vec!["topic1".to_string()], vec!["topic2".to_string()]]),
},
),
cycles,
)
.await
.expect("Call failed");
match result {
MultiGetLogsResult::Consistent(_) => send_bitcoin().await,
MultiGetLogsResult::Inconsistent(_) => {
panic!("RPC providers gave inconsistent results")
}
}
}
async fn send_bitcoin() {
ic_cdk::api::management_canister::bitcoin::bitcoin_send_transaction(
ic_cdk::api::management_canister::bitcoin::SendTransactionRequest {
transaction: b"beef".into(),
network: ic_cdk::api::management_canister::bitcoin::BitcoinNetwork::Testnet,
},
)
.await
.expect("Call failed");
}
ビットコイン統合
ICPのスピードでビットコイン上で構築しましょう。ICP上のビットコインは将来の約束だけでなく、すでに素晴らしいユースケースが構築されています。
イーサリアム統合
イーサリアムおよび他のEVMチェーンのフルサポートにより、ICPスマートコントラクトがEVMベースのスマートコントラクトを追加の機能で補完します。
ChaniFusionの強み
異なるブロックチェーン間のシームレスで安全な相互運用性が新たな可能性を解き放ちます。
ICPのユニークな特徴
スマート コントラクトや dapp を ICP に移行しなくても、ICP のコア技術スタックを利用できます。Chain Fusion テクノロジーは、チェーン キー署名、オンチェーン コンピューティング、HTTPS アウトコールなどの独自の機能を通じて他の Web3 エコシステムを強化し、ビルダーが暗号 dapp を拡張できるようにします。
スマートコントラクトはBTC、ETH、その他のトークンを保有できる
ICP スマート コントラクトは、異なるネットワーク間で複数のトークンを読み取り、書き込み、所有、プログラムできるため、ユーザーから複雑さを抽象化し、スケーリング ソリューションによって導入されたサイロを解消できます。
オンチェーンオーケストレーション
シームレスなクロスチェーン通信とオーケストレーション。ICP スマート コントラクトは、Ethereum dapp の Bitcoin ネットワークへの支払いをオーケストレーションしたり、チェーン間で DAO 投票を自律的に実行したりできます。
コプロセッサとしてのICP
dapp またはスマート コントラクトは、dapp を移行したり、安全でないソリューションを使用したりすることなく、重いまたは高価なコンピューティング タスクを ICP にオフロードできるようになりました。
サンプルコードとスタートアップリクエスト
Chain Fusionとインターネットコンピュータの統合を、簡潔なコード例とスタートアップとのコラボレーション機会を通じて探求してください。使いやすいコードスニペットにアクセスし、革新的なスタートアップとつながり、プロジェクトを加速させましょう。
Chain Fusionエコシステムへの参加
ckトークン
ckBTC、ckETH、ckUSDCなどのチェーンキー トークンは、1:1で裏付けられた双子のトークンで、サードパーティの仲介なしで高速で低コストのシームレスな転送を可能にします。
メタプロトコル
メタプロトコルはChain Fusionを利用して、新しい資産のブロックチェーン間での転送を可能にする分散型クロスチェーンインフラを提供します。
クロスチェーンDEX
分散型取引所はChain Fusionを使用して異なるブロックチェーンの資産の取引を容易にし、一貫したユーザー体験を提供します。
マーケットプレイス
オーディナルとルーンのためのマーケットプレイスがあり、Chain Fusionを使用して、ユーザーが効率的に、迅速に、簡単に購入または取引を行えるようにします。
開発者のためのビルディングブロック
ICPのネイティブなビットコイン統合とRPC統合、しきい値署名プロトコルのスイートにより、開発者に新たな可能性を開きます。
ビットコインUTXO API
ICPのビットコインとの直接統合を通じて、開発者はビットコインのメインネットおよびテストネットネットワークと直接やり取りするスマートコントラクトを作成できます。ビットコインUTXO APIは、UTXOや残高、過去10,000トランザクションの手数料のパーセンタイルなど、ビットコインネットワークからの読み取りおよび書き込みを可能にします。
EVM RPC Canister
このスマートコントラクトは、イーサリアムおよび他のEVMブロックチェーンとの分散型RPC統合を可能にします。通信には、特定のブロックやトランザクションのログの取得、ネットワークのガス手数料に関する過去のデータ、特定のアドレスのトランザクション、署名済みトランザクションの送信などが含まれます。
しきい値署名サービス
ICPはECDSAやSchnorrなどのしきい値署名プロトコルのスイートを組み込み、イーサリアムやビットコインなどのチェーン間でさまざまなトランザクションに署名することが可能です。今後、EdDSAやBLSなどのしきい値署名プロトコルも追加予定です。
HTTPSアウトコール
HTTPSアウトコールを使用して、オフチェーンのデータを直接取得したり、Web 2.0サービスや企業のITインフラなどのオフチェーンシステムと相互作用することができます。例えば、オラクルサービスがICPと信頼性のある方法で直接統合したり、DAppがユーザー通知を提供したり、他のチェーンとRPCエンドポイントを介して通信したりすることが可能です。
Comments