injective-evm-developer について
Injective EVMで開発する人向けのスキルガイドです。一般的なEVM開発に、ネットワーク設定、プリコンパイル、トランザクションの注意点を加え、テストネットの資金調達やコントラクト、dAppの設定も扱います。
主な機能
- 01Injectiveネットワーク設定
- 02テストネットのフォーセット案内
- 03bank・exchangeプリコンパイルの利用
- 04Hardhat、Foundry、viemの例
- 05EIP-712署名とトランザクションの問題解決
活用シーン
- 01Injective EVMのdApp設定
- 02プリコンパイル経由でネイティブモジュールを利用
- 03Injectiveコントラクトのデプロイと検証
- 04署名やトランザクションの問題調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ injectivelabs/ agent-skills --skill injective-evm-developerインストール後、Claude Code で/injective-evm-developerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEREADME.mdTERMS_OF_USEassets/Bank.solBankERC20.solCosmosTypes.soldapp-viem-connect-evm-wallet-function.jsExchange.solExchangeTypes.solFixedSupplyBankERC20.solhardhat-deploy-script.jshardhat-testnet-config.jsWINJ9.solreferences/sample-prompts.mduser-stories.md詳細
Injective EVM 開発者向けスキルガイド
Injective は、EVM と Cosmos の両方に対応するレイヤー 1 ブロックチェーンです。 Injective の EVM 上で開発する際に、このスキルを使用してください。 あらゆる EVM ネットワークでの開発に適用される基本的なスキルを基盤とし、Injective 固有の情報を追加しています。
適用する場面
- Faucet から Injective Testnet の資金を取得する
- EVM プリコンパイルを介して Injective ネイティブモジュールとやり取りする
bankプリコンパイルexchangeプリコンパイル
- Injective ネットワークの詳細を設定する
- Injective のドキュメントを参照する
ユーザーストーリーの詳細な一覧については、次を参照してください:./references/user-stories.md
関連するサンプルプロンプト:./references/sample-prompts.md
アクティビティ
Faucet
- 注:Injective Testnet 専用です
- 新しいウォレットを作成し、最大 1 INJ が必要な場合:
- https://testnet.faucet.injective.network/ にアクセスします
- ウォレットアカウントの EVM アドレス(
0xで始まる)を「EVM address」入力欄に貼り付けます - 「hCaptcha」を解きます
- 「Request Tokens」ボタンを押します
- 結果:約 1 分後に 1 INJ と少量の USDT がウォレットに届きます
- 注:DDoS 保護のため、新しいアカウントでのみ機能します(残高があってはいけません)
- それ以外の場合:
- https://cloud.google.com/application/web3/faucet/injective/testnet にアクセスします
- ウォレットアカウントの bech32 アドレス(
injで始まる)を「Wallet address」入力欄に貼り付けます - 「Get Testnet INJ」ボタンを押します
- 結果:約 10 秒後に 10 INJ がウォレットに届きます
- 注:DDoS 保護のため、Google アカウントにログインしている必要があります
- 注:新規・既存のアカウントで機能します(残高があっても構いません)が、過去 24 時間以内にリクエストしていないことが条件です
- DDoS 保護のため、エージェントによる自動操作ではこれらの手順を完了できない可能性があります
- 行き詰まった場合は、残りの手順を完了するよう人間に依頼してください
bank プリコンパイルの使用
アドレス:0x0000000000000000000000000000000000000064
bank プリコンパイルが公開する Solidity インターフェース:./assets/Bank.sol を参照してください
bank プリコンパイルの ABI は、上記インターフェースを変換して取得できます。
BankERC20 は、拡張を前提に設計された MultiVM Token Standard(MTS)トークンの「基本実装」です:./assets/BankERC20.sol を参照してください
- この実装は OpenZeppelin の ERC20 実装を拡張し、一部の関数をオーバーライドして
bankプリコンパイルを呼び出します - 最も簡単な方法は、BankERC20 を拡張することです
- コンストラクター(または初回ミントを行う関数)が
payableであることを確認してください - MTS トークンの最もシンプルな標準実装:
./assets/FixedSupplyBankERC20.solを参照してください - 最も広く使われている MTS トークンの実装:
./assets/WINJ9.solを参照してください(ラップ済み INJ で使用)
リファレンス:https://docs.injective.network/developers-evm/bank-precompile.md
./assets/*.sol ファイルはすべて、https://raw.githubusercontent.com/InjectiveLabs/solidity-contracts/refs/heads/master/src/*.sol にあります。
exchange プリコンパイルの使用
アドレス:0x0000000000000000000000000000000000000065
exchange プリコンパイルが公開する Solidity インターフェース:./assets/Exchange.sol を参照してください
exchange プリコンパイルの ABI は、上記インターフェースを変換して取得できます。
リファレンス:https://docs.injective.network/developers-evm/exchange-precompile.md
./assets/*.sol ファイルはすべて、https://raw.githubusercontent.com/InjectiveLabs/solidity-contracts/refs/heads/master/src/*.sol にあります。
Injective ネットワークの詳細を設定する
- JSON-RPC エンドポイントなどの一般的な情報はこちらで確認できます:https://docs.injective.network/developers-evm/network-information.md
- 「Injective EVM Mainnet」タブに Mainnet の設定があります
- 「Injective EVM Testnet」タブに Testnet の設定があります
本番アプリケーション統合のチートシート
参照:https://docs.injective.network/developers-evm/evm-integrations-cheat-sheet.md
ツールとライブラリの選択
- フレームワークを決めかねている場合
- Injective の EVM プリコンパイルを使用しない場合、またはローカルでエミュレートする必要がない場合は、hardhat を使用します
- Injective の EVM プリコンパイルを使用し、ローカルでエミュレートする場合は、foundry を使用します
- 具体的には、以下から入手できる Injective 版の foundry を使用してください:https://github.com/InjectiveLabs/foundry/releases
- クライアントライブラリを決めかねている場合
- API が理解しやすいため、viem を使用します
hardhat 用の Injective ネットワーク
Injective EVM テストネット用の hardhat.config.js ファイルのサンプル:./assets/hardhat-testnet-config.js を参照してください。
Injective テストネット用の script/deploy.js ファイルのサンプル:./assets/hardhat-deploy-script.js を参照してください。
上記の設定とコンストラクター引数を使ってスマートコントラクトを検証するには、
constructor-args.js ファイルを作成し、次のコマンドを実行します:
npx hardhat verify --force \
--constructor-args ./constructor-args.js \
--network inj_testnet ${SMART_CONTRACT_ADDRESS}
viem 用の Injective ネットワーク
viem/chains リポジトリには、Injective Mainnet と Injective Testnet の両方の事前設定済みネットワーク情報がすでに含まれています。以下のようにインポートするだけで使用できます:
import { injective, injectiveTestnet } from 'viem/chains';
dApp 内で Injective Testnet に接続してネットワークを切り替えるには、次の関数を使用します:./assets/dapp-viem-connect-evm-wallet-function.js を参照してください。
client オブジェクトでは、スマートコントラクトとやり取りするために client.readContract と client.writeContract の両方を使用できます。
Injective のドキュメントを参照する
- Injective の開発者向けドキュメントは、以下から利用できます
- Markdown 形式:https://docs.injective.network/llms.txt
- 検索機能付き MCP サーバー:
injective-mcp-serversスキルと「Injective Documentation MCP Server」を使用します - フォールバック:人間向けの HTML 版:https://docs.injective.network/developers-evm/
EIP-712 署名(MetaMask/Web アプリ)
MetaMask 経由で Injective トランザクションに署名する dApp を構築する場合:
- EIP-712 V2 のみを使用してください。 V1(
getEip712TypedData)は標準外のドメイン型を使用するため、MetaMask が無効な署名を通知せずに生成する原因になります。必ずgetEip712TypedDataV2+SIGN_EIP712_V2を使用してください。 - 手数料オブジェクトは、
getEip712TypedDataV2()とcreateTransaction()の両方で同一でなければなりません。 不一致(例:SDK のデフォルト値とカスタム手数料)はハッシュの不一致を引き起こし、オンチェーンでの署名検証に失敗します。 evmChainIdは柔軟に設定できます。 MetaMask がどの EVM チェーンに接続されていても、Injective の EIP-712 署名は機能します。eth_chainIdから値を読み取り、EIP-712 ドメインとcreateWeb3Extensionの両方に渡してください。
よくある問題のトラブルシューティング
アドレスの EVM 形式と bech32 形式を相互変換する
参照:https://docs.injective.network/developers/convert-addresses#convert-hex-bech32-address
ガスの設定
ガス価格:トランザクションには、1 億 6,000 万(JavaScript では 160e6)のハードコードされた値を手動で設定します。
ガス量:デフォルトの仕組みである eth_estimateGas RPC を使用します。必要に応じて ethers.js または viem が呼び出します。
重大:inEVM は非推奨です
mainnet.rpc.inevm.com や inEVM のエンドポイントは使用しないでください。inEVM は Injective EVM に置き換えられています。
| 非推奨(inEVM) | 現行(Injective EVM) | |
|---|---|---|
| RPC | mainnet.rpc.inevm.com | sentry.evm-rpc.injective.network/ |
| チェーン ID | 2525 | 1776 (0x6f0) |
| エクスプローラー | explorer.inevm.com | blockscout.injective.network |
EVM トランザクションの注意点
- EIP-1559 非対応:Injective EVM は EIP-1559(type 2)トランザクションをサポートしていません。明示的な
gasPriceを指定したtype: 0(レガシー)を必ず使用してください。 eth_getTransactionReceiptは信頼性が低い:EVM RPC はレシートの照会時に内部エラーを返すことがあります。重要でない操作(faucet への送金など)では、結果を待たずに処理し、tx.wait()を呼び出さないでください。- 新規アカウントでは Cosmos SDK の
MsgBroadcasterWithPkが失敗します:一度もトランザクションを送信したことのないアカウントからブロードキャストすると、Cosmos の ante ハンドラーはinvalid secp256k1 public keyでパニックを起こします。新しいウォレットからプログラムで送金する場合は、代わりに ethers.js + EVM RPC を使用してください。
その他のよくある質問
参照先:https://docs.injective.network/developers-evm/evm-integrations-faq.md
関連スキル
このスキルは Injective の EVM に特化しています。 一般的な EVM 開発作業で使用する他のスキルを補完します。
以下が含まれます。
-
Injective のドキュメント MCP サーバーとのやり取り
-
Injective の EVM での開発
- hardhat または foundry の使用
- Solidity を使用したスマートコントラクト
- コンパイル/テスト/デプロイ/検証(blockscout 経由)
- デプロイ済みスマートコントラクトとやり取りする dApp
- ethers.js/viem
-
基本スキル:
injective-mcp-serverssolidity-hardhat-developmentsolidity-foundry-developmentsolidity-code-reviewsolidity-erc-standards
-
高度なスキル:
solidity-security-best-practicessolidity-gas-optimizationsolidity-adversarial-analysis
これらのスキルが利用できない場合は、次のコマンドを選択して実行し、インストールしてください。
npx skills add InjectiveLabs/agent-skills --skill injective-mcp-servers
npx skills add whackur/solidity-agent-toolkit
前提条件
- スマートコントラクト開発用に hardhat または foundry がインストールされていること
- dApp 開発用に viem または ethers.js がインストールされていること