用途:本技能用于在 Injective 链的 EVM 上构建智能合约与去中心化应用。Injective 是同时支持 EVM 与 Cosmos 的 Layer 1,该技能在通用 EVM 开发基础上补充 Injective 特有内容。
主要能力:
- 获取 Injective 测试网资金。新钱包可用 https://testnet.faucet.injective.network/ 向 EVM 地址(0x 开头)领水,约得 1 INJ 与少量 USDT,仅限无余额的新账户;也可用 https://cloud.google.com/application/web3/faucet/injective/testnet 向 bech32 地址(inj 开头)领取 10 INJ,需登录 Google 账号且 24 小时内未领过。因 DDoS 防护,自动化可能失败,需人工完成。
- 通过 EVM 预编译调用原生模块。bank 预编译地址 0x0000000000000000000000000000000000000064;exchange 预编译地址 0x0000000000000000000000000000000000000065。BankERC20 是 MTS 代币基础实现,扩展 OpenZeppelin ERC20 并覆写部分函数以调用 bank 预编译,构造函数需 payable。
- 网络配置。JSON-RPC:sentry.evm-rpc.injective.network/;Chain ID 1776 (0x6f0);浏览器 blockscout.injective.network。注意 inEVM(RPC mainnet.rpc.inevm.com,Chain ID 2525)已废弃。
- 工具选择。不需本地模拟预编译时用 hardhat,需要时用 foundry 的 Injective 版本(见 https://github.com/InjectiveLabs/foundry/releases)。客户端库推荐 viem,viem/chains 已内置 injective 与 injectiveTestnet。
- 签名。dApp 经 MetaMask 签名时仅用 EIP-712 V2,即 getEip712TypedDataV2 与 SIGN_EIP712_V2;费用对象在 getEip712TypedDataV2() 与 createTransaction() 中必须一致,否则哈希不匹配导致链上验签失败。
使用方式:合约验证命令示例:npx hardhat verify --force --constructor-args ./constructor-args.js --network inj_testnet ${SMART_CONTRACT_ADDRESS}。文档可用 https://docs.injective.network/llms.txt,或通过 injective-mcp-servers 技能的文档 MCP 服务器检索。
限制与注意事项:不支持 EIP-1559,须用 type 0 并显式设置 gasPrice(可硬编码 160e6);eth_getTransactionReceipt 有时返回内部错误,非关键操作可不等待回执;新账户用 Cosmos SDK MsgBroadcasterWithPk 广播会因 secp256k1 公钥报错,建议改用 ethers.js 加 EVM RPC。需预装 hardhat 或 foundry,以及 viem 或 ethers.js。