¿Cómo puedo obtener el campo de transacción "De"?
client, err := ethclient.Dial("https://mainnet.infura.io")
if err != nil {
log.Fatal(err)
}
blockNumber := big.NewInt(5671744)
block, err := client.BlockByNumber(context.Background(), blockNumber)
if err != nil {
log.Fatal(err)
}
for _, tx := range block.Transactions() {
fmt.Println(tx.Hash().Hex()) // 0x5d49fcaa394c97ec8a9c3e7bd9e8388d420fb050a52083ca52ff24b3b65bc9c2
fmt.Println(tx.Value().String()) // 10000000000000000
fmt.Println(tx.Gas()) // 105000
fmt.Println(tx.GasPrice().Uint64()) // 102000000000
fmt.Println(tx.Nonce()) // 110644
fmt.Println(tx.Data()) // []
fmt.Println(tx.To().Hex()) // 0x55fE59D8Ad77035154dDd0AD0388D09Dd4047A8e
if msg, err := tx.AsMessage(types.HomesteadSigner{}); err != nil {
fmt.Println(msg.From().Hex()) // 0x0fD081e3Bb178dc45c0cb23202069ddA57064258
}
}
Este código no lo muestra.
Por ejemplo, para la transacción https://etherscan.io/tx/0x5d49fcaa394c97ec8a9c3e7bd9e8388d420fb050a52083ca52ff24b3b65bc9c2 no muestra nada.
Para la transacción https://etherscan.io/tx/0x36368eb4665367100bcb46427e8ac39b7873abfca2015116c478f84642a8812d muestra 0x00000000000000000000000000000000000000000
Hay un error en su código, entonces no puede imprimir elfrom
solo reemplaza este código
if msg, err := tx.AsMessage(types.HomesteadSigner{}); err != nil {
a
if msg, err := tx.AsMessage(types.HomesteadSigner{}); err == nil {
Y es posible que necesitemos usar tx.AsMessage(types.NewEIP155Signer(big.NewInt(1)))
para la red principal en lugar de usartx.AsMessage(types.HomesteadSigner{})
¡Espero que esto ayude!
invalid transaction v, r, s values
; parece que necesitamos hacer el firmante correcto para cada tnxtx.AsMessage(types.NewEIP155Signer(big.NewInt(1)))
, podemos corregirlo From
para tnx 3EIP155Block
a params.ChainConfig{} también para que funcione correctamente
HaĐANG
types.EIP155Signer
en lugar detypes.HomesteadSigner
?usuario7851819
HaĐANG
usuario7851819
HaĐANG
client, err := ethclient.Dial("https://mainnet.infura.io")
. Porque infura nos proporciona una clave de API para acceder al punto final y estoy seguro de que la pones en el código cuando ejecutas tu programa.HaĐANG
https://mainnet.infura.io/5rhaTHgnqnbTEFj1S1Ya
usuario7851819
HaĐANG