Injective Ethereumブリッジは、Injective Chainがトラストレスかつオンチェーンで双方向のトークンブリッジをサポートできるようにします。このシステムにより、Ethereum上のERC-20トークン保有者は、自身のERC-20トークンをInjective Chain上のCosmosネイティブトークンへ即時変換でき、逆方向の変換も可能です。 Injective Peggyブリッジは、3つの主要コンポーネントで構成されています:Documentation Index
Fetch the complete documentation index at: https://injectivelabs-mintlify-jp-native-developers-first-half.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
- Ethereum上のPeggyコントラクト
- Peggoオーケストレーター
- Injective Chain上のPeggyモジュール
Peggyコントラクト
Peggyコントラクトの役割は、EthereumからInjective Chainへの効率的な双方向クロスチェーンERC-20トークン転送を促進することです。他のトークンブリッジ構成とは異なり、Injective PeggyブリッジはInjectiveのバリデータのみによって運営される非中央集権・ノンカストディアルのブリッジです。デポジットおよび出金は、コンセンサスステーキングパワーに基づき少なくとも2/3のバリデータによる証明(attestation)に従って処理されるため、ブリッジはInjective ChainのProof of Stakeセキュリティによって保護されます。Peggoオーケストレーター
オーケストレーターは、各Injective Chainバリデータが運用するオフチェーンリレイヤーであり、EthereumからInjective ChainへERC-20トークン転送データを送信する役割を担います。Peggyモジュール
基本的なレベルでは、PeggyモジュールはEthereumからのERC-20デポジット時にInjective Chain上で新しいトークンをミントし、Injective ChainからEthereumへトークンを引き出す際にトークンをバーンします。Peggyモジュールはまた、スラッシングペナルティ、ネイティブトークン報酬、出金手数料などのさまざまなメカニズムを通じて、バリデータが誠実かつ効率的に行動するよう設計されています。EthereumからInjectiveへ
EthereumからInjectiveへ転送するには、Web3トランザクションを発行してEthereum上のPeggyコントラクトとやり取りする必要があります。転送には2つのステップが必要です:- ERC20アセットをEthereum上のPeggyコントラクトにロックすることになるため、転送するアセットに対するアロウワンスをPeggyコントラクトに対して設定する必要があります。任意のweb3プロバイダー(ethers.jsやweb3.jsなど)を使用して、PeggyコントラクトアドレスをspenderとしてERC-20の
approve関数を呼び出すことができます。 - アロウワンスが設定されたら、Injective Chainへ転送したい所望の数量とアセットを指定して、Peggyコントラクトの
sendToInjective関数を呼び出す必要があります。@injectivelabs/contractsのPeggyContractクラスを使用するか(下記の例を参照)、ABIを介してコントラクトと直接やり取りすることができます。トランザクションが確定すると、アセットがInjective Chain上に表示されるまで数分かかります。
- 宛先アドレス(自分でトランザクションを構築する場合)は次の形式です:
walletStrategyは当方が構築した抽象化であり、多くのウォレットをサポートしてトランザクションへの署名およびブロードキャスト(EthereumとInjective Chainの両方)に使用できます。詳細はnpmパッケージ@injectivelabs/wallet-strategyおよび@injectivelabs/wallet-coreのドキュメントを参照してください。もちろんこれは単なる例であり、web3パッケージを直接使用するか、任意のweb3プロバイダーでトランザクションを扱うこともできます。
- 以下のスニペットは、コントラクトのコンストラクタに渡した
web3を使用してestimateGasおよびsendTransactionを簡単に実行できるPeggyContractインスタンスを作成します。その実装はこちらにあります。もちろんこれは単なる例であり、web3パッケージとコントラクトのABIを直接使用してコントラクトをインスタンス化し、任意のweb3プロバイダーで署名とブロードキャストのロジックを処理することもできます。
InjectiveからEthereumへ
ERC20版のINJをInjectiveに転送した後、Injective Chain上のネイティブなinjdenomがミントされ、これがINJトークンの正規バージョンとなります。InjectiveからEthereumへinjを引き出すには、Injective Chain上でネイティブなCosmosトランザクションを準備、署名、ブロードキャストする必要があります。
CosmosでのTransactions(およびMessages)の動作に詳しくない場合は、こちらで詳細を確認できます。InjectiveからEthereumへ資金を引き出すよう指示するためにトランザクションにパックする必要があるMessageはMsgSendToEthです。
MsgSendToEthがチェーン上で呼び出されると、一部のバリデータがトランザクションを取得し、複数のMsgSendToEthリクエストを1つにバッチ化して、Injective上で引き出されるアセットをバーンし、Ethereum上のPeggyスマートコントラクト上でこれらの資金をアンロックし、対応するアドレスへ送信します。
これらのトランザクションには、バリデータが出金リクエストをより速く取得・処理するインセンティブを与えるためのbridgeFeeが含まれます。bridgeFeeはユーザーがEthereumへ出金したいアセットで支払われます(INJを引き出す場合、bridgeFeeもINJで支払う必要があります)。
トランザクションを準備し、privateKeyを使用して署名し、最終的にInjectiveへブロードキャストする実装例は次のとおりです:
