このリポジトリには、XVM を使用してインクから EVM を呼び出すコントラクトの例が含まれています。 WASM 契約から XVM を使用するために必要です。これには、コントラクトで使用する XVM チェーン拡張の実装が含まれています。インクも同様に! XVMチェーン拡張を実装したSDKをそのまま利用できるように契約しています。
この実装は、EVM 上の基礎となるERC20
のラッパーです。ネイティブの基板アドレスと対話します。ラッパーパターンを実装しているため、 deposit
およびwithdraw
機能があり、WASM VM と EVM の間のブリッジレス ソリューションとして使用できます。 PSP22
標準を実装しているため、それをサポートするDEX/ウォレットで使用できます。 deposit
とwithdraw
使用する流れを説明したテストをご覧ください。
この実装は、EVM 上の基礎となるERC721
のラッパーです。サブストレートのネイティブサブストレート アドレスと対話します。ラッパーパターンを実装しているため、 deposit
およびwithdraw
機能があり、WASM VM と EVM の間のブリッジレス ソリューションとして使用できます。 PSP34
標準を実装しているため、それをサポートするDEX/ウォレットで使用できます。
XVM チェーン拡張機能の実装がカスタムXvmDefaultEnvironment
に追加されました。
Cargo.toml にクレートをインポートします
契約書にインクで追加してください。マクロ#[ink::contract(env = xvm_sdk::XvmDefaultEnvironment)]
。
コントラクトではself.env().extension().xvm_call(..args)
とともに使用します。
このクレートは、ink_env のチェーン拡張ビルダーを使用して xvm_call を実装するXvm
構造体を公開します。これにより、openbrush などの他のカスタム環境との互換性が得られます。例として PSP22 ラッパーを見てください。
Cargo.toml にクレートをインポートします
コントラクト内の構造体をインポートするには、 use xvm_helper::*;
使用します。
XvmErc20::transfer(..args)
とともに使用します。
リポジトリのクローンを作成する
yarn
を走らせる
インクを作ろう!契約yarn build:ink
ローカル ノードで実行するには: ./target/release/astar-collator --dev -lruntime::contracts=debug -l=runtime=debug,xvm=trace --enable-evm-rpcp
を使用してローカル ノードが実行されていることを確認します。 (XVM と ink! ログを保持するため)。
次に、 yarn test
実行します。
渋谷で実行するには: .env.example から .env ファイルを作成し、資格情報を入力します。 ACCOUNT_PRIVATE_KEY_EVM
に渋谷の EVM 秘密キーを追加し、 SUBSTRATE_MNEMO
に渋谷の Substrate パスフレーズを追加します。次に、 yarn test:shibuya
実行します。