Nethereum调用SendTransactionAsync报eth_sendRawTransaction交易类型不支持
解决方案
错误根因
该报错核心是Nethereum 4.0及以上版本默认使用EIP-1559格式的类型2交易,而BSC主网/测试网目前仅支持Legacy类型的0号交易,节点收到不兼容的交易结构后就会返回transaction type not supported: eth_sendRawTransaction异常。
修复步骤
步骤1:全局配置Web3使用Legacy交易
在初始化Web3实例后新增一行配置,全局生效,不需要逐个修改交易参数:
var web3 = new Web3(account, client); // 新增:强制所有交易使用Legacy格式,适配BSC网络 web3.TransactionManager.UseLegacyAsDefault = true;
步骤2:检查基础参数正确性
- 你当前使用的是BSC测试网RPC,对应
chainId必须为97,如果是BSC主网则为56,传入Account构造函数的chainId要和网络匹配 - 建议手动指定合理的GasPrice避免打包失败,BSC测试网建议设置为5Gwei及以上,可直接在MintNftFunction实例中配置:
var mintMsg = new MintNftFunction { FromAddress = account.Address, Recipient = "REDACTED", MetadataHash = "TestMetaDataHash", MediaHash = "TestMediaHash", SeasonId = 1, GasPrice = Web3.Convert.ToWei(5, Nethereum.Util.UnitConversion.EthUnit.Gwei), // 若遇到Gas不足报错可手动指定GasLimit,NFT mint场景一般200000-300000即可 // GasLimit = 300000 };
验证执行
配置完成后直接使用你原有的尝试1代码即可,不需要修改其他逻辑,该方案完全适配你调用合约修改链上存储的需求,不需要额外处理原生币转账逻辑:
// 直接调用CodeGen生成的服务方法即可,自动等待交易上链确认 var txReceipt = await mtSvc.MintNftRequestAndWaitForReceiptAsync(mintMsg);
内容的提问来源于stack exchange,提问作者Crimson Salamander
相关产品推荐
相关产品推荐

