我正在建立一系列非常容易理解的文章,這些文章既解釋了我所做的事情,也讓我重寫從舊的混亂駭客到希望更清潔版本的所有內容。
使測試環境成為可能的單個主要元件是構建在geth源庫中的模擬後端。模擬的後端是一個geth-ethereum虛擬機器,您可以初始化、提交事務、密封塊,實際上,將其視為私有區塊鏈節點。
因此讓我們從一個極其簡單的例子開始——建立一個模擬區塊鏈,其中一個賬戶持有特定數量的以太。我通常使用一個名為getclient的函式來連線到我正在使用的後端。
我們使用memorykeys庫中的getaddress返回一個繫結到角色的地址。〔1〕〔2〕
我們使用etherutils庫中的strtoether返回一個表示ether值的大int值a字串[3]
var baseClient *backends.SimulatedBackend
funcgetClient()(client *backends.SimulatedBackend, err error) {
if baseClient != nil {
return baseClient, nil
}
funds, _ := etherUtils.StrToEther("10000.0")
baseClient = backends.NewSimulatedBackend(core.GenesisAlloc{
getAddress("banker"): {Balance: funds},
}, 8000000)
return baseClient, nil
}
我們現在有一個後端系統,有一個賬戶(我稱之為銀行家),餘額為10000以太。
你可以用下面的程式碼進行操作
funcmain() {
client, err := getClient()
if err != nil {
log.Fatal(err)
}
bal, err := client.BalanceAt(context.Background(), getAddress("banker"), nil)
if err != nil {
log.Fatal(err)
}
fmt.Println(etherUtils.EtherToStr(bal))
}
假設您已新增GETH,memorykeys和etherUtils,您的環境現在應該為您設定匯入,您將看到顯示10k以太的餘額
gorunsbe.gokeyUtils.go
10000.000000000000000000
現在我們已經模擬了後端工作 - 在下一篇文章中,我們將實現交易模組功能。