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. 01配置 Injective EVM dApp
  2. 02通过预编译合约调用原生模块
  3. 03部署并验证 Injective 合约
  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 的 Layer 1 区块链。 在 Injective 的 EVM 上进行开发时,请使用此技能。 此技能基于适用于在任何 EVM 网络上进行开发的基础技能,并补充了 Injective 特有的内容。

适用场景

  • 通过水龙头获取 Injective 测试网资金
  • 通过 EVM 预编译合约与 Injective 原生模块交互
    • bank 预编译合约
    • exchange 预编译合约
  • 配置 Injective 网络详情
  • 查阅 Injective 文档

详细的用户故事列表请参见:./references/user-stories.md 相关的示例提示词:./references/sample-prompts.md

活动

水龙头
  • 注意:仅适用于 Injective 测试网
  • 如果你有一个全新的钱包,并且需要最多 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 保护,通过 Agent 自动化完成这些步骤可能行不通
    • 如果遇到困难,请提示人类完成剩余步骤
使用 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
  • 如果不确定选择哪个客户端库
    • 使用 viem,因为它的 API 更容易理解
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 主网和 Injective 测试网的预配置网络详情,只需导入即可:

import { injective, injectiveTestnet } from 'viem/chains';

在 dApp 中,要连接到 Injective 测试网并切换到该网络,请使用以下函数:参见 ./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

Gas 配置

Gas 价格:为交易手动设置硬编码值 1.6 亿(Javascript 中为 160e6)。

Gas 数量:使用默认机制 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/
Chain ID25251776(0x6f0)
浏览器explorer.inevm.comblockscout.injective.network
EVM 交易注意事项
  • 不支持 EIP-1559:Injective EVM 不支持 EIP-1559(type 2)交易。请始终使用 type: 0(legacy)并显式指定 gasPrice。
  • eth_getTransactionReceipt 不可靠:EVM RPC 有时会在查询收据时返回内部错误。对于非关键操作(如从水龙头发送资金),请即发即弃,不要调用 tx.wait()。
  • Cosmos SDK MsgBroadcasterWithPk 对新账户会失败:从从未发送过交易的账户广播时,Cosmos ante handler 会因 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,用于智能合约开发
  • 使用 viem 或 ethers.js 进行 dApp 开发

评论

支持 Markdown