mcpField
I
injective-evm-developer

injective-evm-developer

github.com/injectivelabs開発641 回インストール16 週間前に更新
リポジトリ

injective-evm-developer について

Injective EVMで開発する人向けのスキルガイドです。一般的なEVM開発に、ネットワーク設定、プリコンパイル、トランザクションの注意点を加え、テストネットの資金調達やコントラクト、dAppの設定も扱います。

主な機能

  1. 01Injectiveネットワーク設定
  2. 02テストネットのフォーセット案内
  3. 03bank・exchangeプリコンパイルの利用
  4. 04Hardhat、Foundry、viemの例
  5. 05EIP-712署名とトランザクションの問題解決

活用シーン

  1. 01Injective EVMのdApp設定
  2. 02プリコンパイル経由でネイティブモジュールを利用
  3. 03Injectiveコントラクトのデプロイと検証
  4. 04署名やトランザクションの問題調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/injectivelabs/agent-skills --skill injective-evm-developer

インストール後、Claude Code で/injective-evm-developerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
README.md
TERMS_OF_USE
assets/
Bank.sol
BankERC20.sol
CosmosTypes.sol
dapp-viem-connect-evm-wallet-function.js
Exchange.sol
ExchangeTypes.sol
FixedSupplyBankERC20.sol
hardhat-deploy-script.js
hardhat-testnet-config.js
WINJ9.sol
references/
sample-prompts.md
user-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 ネットワークの詳細を設定する
本番アプリケーション統合のチートシート

参照:https://docs.injective.network/developers-evm/evm-integrations-cheat-sheet.md

ツールとライブラリの選択
  • フレームワークを決めかねている場合
    • Injective の EVM プリコンパイルを使用しない場合、またはローカルでエミュレートする必要がない場合は、hardhat を使用します
    • Injective の EVM プリコンパイルを使用し、ローカルでエミュレートする場合は、foundry を使用します
  • クライアントライブラリを決めかねている場合
    • 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 のドキュメントを参照する
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)
RPCmainnet.rpc.inevm.comsentry.evm-rpc.injective.network/
チェーン ID25251776 (0x6f0)
エクスプローラーexplorer.inevm.comblockscout.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-servers
    • solidity-hardhat-development
    • solidity-foundry-development
    • solidity-code-review
    • solidity-erc-standards
  • 高度なスキル:

    • solidity-security-best-practices
    • solidity-gas-optimization
    • solidity-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 がインストールされていること

コメント