如何创建一个模拟区块链

我正在创建一系列非常容易理解的文章,这些文章既解释了我所做的事情,也让我重写从旧的混乱黑客到希望更清洁版本的所有内容。
使测试环境成为可能的单个主要组件是构建在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

农业温湿度环境检测中应用的温湿度检测仪
OneraHealth完成930万美元A轮融资 将进一步研发可穿戴传感设备
无源晶振LoRa产品设计方法和注意事项
使用Nios嵌入式系统在单芯片上完成Ultra DMA数据传输模式的访问
电气测试如何确认印刷电路板完整性
如何创建一个模拟区块链
如何选择场强探头?
Word天 一台VR笔记本居然要11万!
用万用表怎么查短路
美国有超过75%的人觉得他们知道什么是数字加密货币
第九届中国电子信息博览会开幕
Codec编码解码器的主要作用及特性
在长虹摊大饼到处布局的同时 中国的电视市场却发生了翻天覆地的变化
基于双MCU结构和总线技术实现电动执行器的设计
MWC2017前瞻:lgg6、华为P10、诺基亚8、索尼4K旗舰,你更看好谁?
韩国的三大电信运营商们抱怨5G基站的数量还满足不了5G用户们的需求
无线传感器网络方案构建的几大要点
浅谈英特丽电子对PCBA的质量控制
可穿戴技术在医疗健康领域的应用
英国电信将从3G/4G网络中核心中移除华为设备,并禁止竞标5G核心设备