Wie kann ich das Transaktionsfeld "Von" erhalten?
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
}
}
Dieser Code zeigt es nicht.
Für die Transaktion https://etherscan.io/tx/0x5d49fcaa394c97ec8a9c3e7bd9e8388d420fb050a52083ca52ff24b3b65bc9c2 wird beispielsweise nichts angezeigt.
Für die Transaktion https://etherscan.io/tx/0x36368eb4665367100bcb46427e8ac39b7873abfca2015116c478f84642a8812d zeigt es 0x000000000000000000000000000000000000000
Es gibt einen Fehler in Ihrem Code, den Sie nicht ausdrucken könnenfrom
ersetzen Sie einfach diesen Code
if msg, err := tx.AsMessage(types.HomesteadSigner{}); err != nil {
zu
if msg, err := tx.AsMessage(types.HomesteadSigner{}); err == nil {
Und wir müssen möglicherweise tx.AsMessage(types.NewEIP155Signer(big.NewInt(1)))
für das Hauptnetz verwenden, anstatt zu verwendentx.AsMessage(types.HomesteadSigner{})
Ich hoffe das hilft!
invalid transaction v, r, s values
; Es scheint, dass wir für jeden tnx den richtigen Unterzeichner erstellen müssentx.AsMessage(types.NewEIP155Signer(big.NewInt(1)))
dann benutze, können wir From
für tnx 3
richtig werdenEIP155Block
in die params.ChainConfig {} einfügen, damit es richtig funktioniert
Ha ĐANG
types.EIP155Signer
statt verwendentypes.HomesteadSigner
?Benutzer7851819
Ha ĐANG
Benutzer7851819
Ha ĐANG
client, err := ethclient.Dial("https://mainnet.infura.io")
. Weil infura uns einen API-Schlüssel für den Zugriff auf den Endpunkt zur Verfügung stellt und ich sicher bin, dass Sie ihn in den Code einfügen, wenn Sie Ihr Programm ausführen.Ha ĐANG
https://mainnet.infura.io/5rhaTHgnqnbTEFj1S1Ya
Benutzer7851819
Ha ĐANG