大概是这样的问题,我通过页面调用(metamask)和通过代码(golang)调用,通过区块链浏览器查询两笔交易,发现很多几乎一样,但是代码调用就是一直失败,报什么msg.value
错误,这个值我明明设置了。我挑两笔主要的交易供排查问题,我这个账户调试了很多交易一直失败,弄不懂。
合约地址:0xe5e30e7c24e4dfcb281a682562e53154c15d3332
,我没接触过以太坊的合约,这个好像是个代理合约还是啥,真正的合约应该是0xcbA6a367A45708F9f4307A75062C1047677bfAd4
账户:0x69b0b7f5079201D4d34C66A8AD7De56607F7dc40
交易失败的:0x6a98cedebd223900e90b225506db580267981542ff25db6ea339e46689ba3ac9
交易成功的:0x9be67d6f52d20b5ffcccaa481f3efa5b58eb48a513bad78b322c9f7df9ecc82d
// key store file
keyfile := filepath.Join(KeyStoreDir, fromAddress)
// 打开keyfile
keyJson, err := os.ReadFile(keyfile)
if err != nil {
log.Fatalf("Could not read key file: %v", err)
return
}
txIDOpts, err := bind.NewTransactorWithChainID(strings.NewReader(string(keyJson)), Password, chainID)
if err != nil {
log.Println("new key store tx error", err.Error())
return
}
noce, err := goerliCli.NonceAt(ctx, txIDOpts.From, nil)
if err != nil {
log.Fatal("get nonce error", err.Error())
return
}
log.Println("nonce", noce)
gasPrice, _ := goerliCli.SuggestGasPrice(ctx)
log.Println("gas price", gasPrice.String())
// 设置gas
txIDOpts.GasLimit = uint64(300000)
// 设置value
txIDOpts.Value = big.NewInt(1000000000000000)
// 设置nonce
txIDOpts.Nonce = big.NewInt(int64(noce))
// 发送交易,有结果,但是就是区块链查询一直失败
res, err := abi.DepositETH(txIDOpts, big.NewInt(1000000000000000), new(big.Int).SetUint64(uint64(40000)))
if err != nil {
log.Println("call Deposit Eth error: ", err.Error())
return
}
log.Println("res value", res.Value().String())