Go-Ethereum

如何從合約賬戶中獲取程式碼?

  • October 24, 2018

我有一段程式碼連接到網路並顯示交易數據。

package main

import (
   "context"
   "fmt"
   "log"

   "github.com/ethereum/go-ethereum/common"
   "github.com/ethereum/go-ethereum/ethclient"
)

func main() {
   conn, err := ethclient.Dial("https://mainnet.infura.io")
   if err != nil {
       log.Fatal("Whoops something went wrong!", err)
   }

   ctx := context.Background()
   tx, pending, _ := conn.TransactionByHash(ctx, common.HexToHash("0x30999361906753dbf60f39b32d3c8fadeb07d2c0f1188a32ba1849daac0385a8"))
   if !pending {
       fmt.Println(tx)
   }

}

我想從一個合約賬戶中獲取一個程式碼,我如何通過修改這個程式碼來獲取它,只有這個賬戶的地址。

我試著做

conn.CodeAt(address)

但該CodeAt方法需要更多參數。

來自https://godoc.org/github.com/obscuren/go-ethereum/ethclient#Client.CodeAt

func (ec *Client) CodeAt(ctx context.Context, account common.Address, blockNumber *big.Int) ([]byte, error)

CodeAt返回給定賬戶的合約程式碼。塊號可以是nil,在這種情況下,程式碼取自最新的已知塊。

所以,例如:

conn.CodeAt(context.Background(), address, nil);

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