如何创建一个模拟区块链

如何创建一个模拟区块链,第1张

我正在创建一系列非常容易理解的文章,这些文章既解释了我所做的事情,也让我重写从旧的混乱黑客到希望更清洁版本的所有内容。

使测试环境成为可能的单个主要组件是构建在geth源库中的模拟后端。模拟的后端是一个geth-ethereum虚拟机,您可以初始化、提交事务、密封块,实际上,将其视为私有块链节点。

因此让我们从一个极其简单的例子开始——创建一个模拟区块链,其中一个账户持有特定数量的以太。我通常使用一个名为getclient的函数来连接到我正在使用的后端。

我们使用memorykeys库中的getaddress返回一个绑定到角色的地址。〔1〕〔2〕

我们使用etheruTIls库中的strtoether返回一个表示ether值的大int值a字符串[3]

var baseClient *backends.SimulatedBackend

func getClient() (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以太。

你可以用下面的代码进行 *** 作

func main() {

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以太的余额

go run sbe.go keyUtils.go

10000.000000000000000000

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2626284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-11
下一篇 2022-08-11

发表评论

登录后才能评论

评论列表(0条)

保存