InjectiveにおけるPrecompilesとは?
Injectiveでは、precompilesはプロトコルレベルでEVM(Ethereum Virtual Machine)レイヤーに直接組み込まれた、特別で高度に最適化されたsmart contractです。ユーザーがデプロイする標準的なSolidity smart contractとは異なり、precompilesはチェーンのコアロジックの一部です。Solidityではなく Goで記述され、固定アドレスでEVMに公開されているため、他のsmart contractと同様にSolidity smart contractから呼び出すことができます。 Injectiveチェーンのネイティブ関数にEthereumスタイルのインターフェースが付与されたものと考えてください。なぜ必要なのか?(EVMとネイティブモジュールの橋渡し)
Injective EVMは単独で動作しているわけではありません。Bank module(トークン管理用)、Exchange module(オンチェーンオーダーブック用)、Staking moduleなど、Injectiveの強力なネイティブCosmos SDKモジュールと深く統合されています。 Precompilesは、EVMの世界(Solidity contractが存在する場所)とこれらのネイティブInjective機能との間の重要な橋渡しとして機能します。precompilesがなければ、EVM smart contractは孤立し、より広範なInjectiveエコシステムの豊富な機能と流動性を活用できなくなります。 例えば、ネイティブ環境とEVM環境間で統一されたトークン残高を保証するMultiVM Token Standard (MTS)モデルは、Bank Precompileに大きく依存しています。開発者にとってのメリット
- ネイティブ機能へのアクセス: オンチェーンオーダーブック、ネイティブstaking、ガバナンス、MTSのためのBank moduleなど、Injective独自のモジュールと直接やり取りできます。
- パフォーマンスの向上: precompilesを介して実行される操作は、最適化されたネイティブコードとして実行されるため、複雑なネイティブロジックを純粋にSolidityで再現しようとするよりも大幅に高速でgas効率が良くなります。
- シームレスな相互運用性: EVMとInjectiveのCosmos固有の機能の両方の強みを活かした、真に統合されたアプリケーションを構築できます。
- 開発の簡素化: 使い慣れたSolidityインターフェースを通じて複雑なネイティブ機能とやり取りでき、基盤となるCosmosの複雑さの多くを抽象化できます。
- Bank.sol – precompileインターフェース
- BankERC20.sol – Bank precompileを基盤とした抽象ERC20実装
- FixedSupplyBankERC20.sol – 固定供給量の分散型ERC20(オーナーなし、mintおよびburnなし)
- MintBurnBankERC20.sol – トークンのmintとburnが許可されたオーナー付きERC20
開発を始めるためのデモ
Bank、Exchange、Staking precompilesを使用したcontractの構築方法を示すデモをいくつか用意しました。これらの例では、最も一般的なEthereum開発フレームワークであるFoundryを使用してInjective EVMとやり取りする方法も示しています。 Foundryのcastツールを活用することで、ターミナルから直接contractをデプロイし、Injectiveチェーンとやり取りすることが簡単にできます。これにより、ビルダーはInjectiveのネイティブモジュールを活用した強力なアプリケーションを素早く実験、テスト、デプロイすることができます。
以下のデモで確認できる内容:
- トークン管理、取引、stakingのためにprecompilesを呼び出すSolidity contractの記述方法。
- Foundryスクリプトと
castコマンドを使用して、これらのcontractをInjective EVMにデプロイしやり取りする方法。 - EVMロジックとInjectiveのネイティブ機能を橋渡しするためのベストプラクティス。
