Go-Ethereum

給定一個原始交易 - 如何獲取發件人地址

  • April 12, 2022

當您只有原始交易字元串時,是否可以使用 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中查看此交易

引用自:https://ethereum.stackexchange.com/questions/67449