Go-Ethereum
如何從合約賬戶中獲取程式碼?
我有一段程式碼連接到網路並顯示交易數據。
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);