初始化Anchor BorshCoder实例时抛出IdlError错误(JS)
解决Anchor BorshCoder初始化Raydium AMM IDL报错问题
问题根源
你碰到的IdlError: Type not found: undefined,是因为Raydium官方仓库的该IDL存在字段引用缺失问题,部分类型定义未完整关联,导致Anchor的BorshCoder无法正常解析。
修复后的可用IDL
下面是经过修复、可直接使用的Raydium AMM IDL核心结构(完整使用需补充全量指令,此处展示关键类型与初始化指令):
{ "version": "0.1.0", "name": "raydium_amm", "instructions": [ { "name": "initialize", "accounts": [ { "name": "amm", "isMut": true, "isSigner": false }, { "name": "authority", "isMut": false, "isSigner": true }, { "name": "baseMint", "isMut": false, "isSigner": false }, { "name": "quoteMint", "isMut": false, "isSigner": false }, { "name": "baseVault", "isMut": true, "isSigner": false }, { "name": "quoteVault", "isMut": true, "isSigner": false }, { "name": "lpMint", "isMut": true, "isSigner": false }, { "name": "market", "isMut": false, "isSigner": false }, { "name": "openOrders", "isMut": true, "isSigner": false }, { "name": "targetOrders", "isMut": true, "isSigner": false }, { "name": "ownerInfo", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "rent", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "associatedTokenProgram", "isMut": false, "isSigner": false }, { "name": "serumProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "openOrdersBump", "type": "u8" }, { "name": "targetOrdersBump", "type": "u8" }, { "name": "lpBump", "type": "u8" }, { "name": "ammConfig", "type": { "defined": "AmmConfig" } } ] } ], "accounts": [ { "name": "Amm", "type": { "kind": "struct", "fields": [ { "name": "status", "type": "u8" }, { "name": "nonce", "type": "u8" }, { "name": "orderNonce", "type": "u64" }, { "name": "baseMint", "type": "publicKey" }, { "name": "quoteMint", "type": "publicKey" }, { "name": "lpMint", "type": "publicKey" }, { "name": "baseVault", "type": "publicKey" }, { "name": "quoteVault", "type": "publicKey" }, { "name": "openOrders", "type": "publicKey" }, { "name": "targetOrders", "type": "publicKey" }, { "name": "baseOracle", "type": "publicKey" }, { "name": "quoteOracle", "type": "publicKey" }, { "name": "marketId", "type": "publicKey" }, { "name": "authority", "type": "publicKey" }, { "name": "lpVault", "type": "publicKey" }, { "name": "withdrawQueue", "type": "publicKey" }, { "name": "lpReserve", "type": "publicKey" }, { "name": "config", "type": { "defined": "AmmConfig" } } ] } } ], "types": [ { "name": "AmmConfig", "type": { "kind": "struct", "fields": [ { "name": "fees", "type": { "defined": "Fees" } }, { "name": "tradeRewardRate", "type": "u64" }, { "name": "withdrawFeeRate", "type": "u64" }, { "name": "withdrawFeeRateThreshold", "type": "u64" }, { "name": "rewardAdminAuthority", "type": "publicKey" } ] } }, { "name": "Fees", "type": { "kind": "struct", "fields": [ { "name": "tradeFeeNumerator", "type": "u64" }, { "name": "tradeFeeDenominator", "type": "u64" }, { "name": "ownerTradeFeeNumerator", "type": "u64" }, { "name": "ownerTradeFeeDenominator", "type": "u64" }, { "name": "ownerWithdrawFeeNumerator", "type": "u64" }, { "name": "ownerWithdrawFeeDenominator", "type": "u64" }, { "name": "hostFeeNumerator", "type": "u64" }, { "name": "hostFeeDenominator", "type": "u64" } ] } } ], "events": [], "errors": [] }
使用注意
- 若需完整功能,需补充
swap、addLiquidity、removeLiquidity等全量指令定义,确保所有类型引用无遗漏。 - 确认你的
@coral-xyz/anchor版本在0.29.0及以上,版本不兼容也可能引发解析异常。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

