Go-Ethereum
給定一個原始交易 - 如何獲取發件人地址
當您只有原始交易字元串時,是否可以使用 golang 獲取發件人地址。我可以對其進行解碼並獲取 nonce、hash 等,因為這些都是從 types.Transactions 包中導出的函式,但我似乎無法找到一種方法來獲取實際的發件人地址(使用 golang)Javascript 有一些這樣做的函式- 我還應該聲明我需要在獨立腳本中執行此操作,而不是連接到節點(如果可能)
這是一個完整的工作範例,說明如何解碼原始交易並讀取發件人(發件人)地址:
package main import ( "encoding/hex" "fmt" "log" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/rlp" ) func main() { rawTx := "f86d8202b28477359400825208944592d8f8d7b001e72cb26a73e4fa1806a51ac79d880de0b6b3a7640000802ca05924bde7ef10aa88db9c66dd4f5fb16b46dff2319b9968be983118b57bb50562a001b24b31010004f13d9a26b320845257a6cfc2bf819a3d55e3fc86263c5f0772" tx := new(types.Transaction) rawTxBytes, err := hex.DecodeString(rawTx) rlp.DecodeBytes(rawTxBytes, &tx) msg, err := tx.AsMessage(types.NewEIP155Signer(tx.ChainId())) if err != nil { log.Fatal(err) } fmt.Println(msg.From().Hex()) // 0x96216849c49358B10257cb55b28eA603c874b05E }
在etherscan中查看此交易