区块链研究实验室|使用GETH实现系统后端搭建

  • 时间:
  • 浏览:68
  • 来源:区块链技术网

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

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

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

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

  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

现在我们已经模拟了后端工作 - 在下一篇文章中,我们将实现交易模块功能。

 

猜你喜欢

搭建"虚拟货币"平台钓鱼网站,8人被刑拘

随着互联网的普及和不断发展,网络虚拟货币日渐盛行,一些不法之徒盯上虚拟货币牟利。江苏省徐州市铜山区公安局近期打掉一个盗窃虚拟货币犯罪团伙,抓获犯罪嫌疑人8人,涉案价值500余万元。

2022-01-15

区块链红利吃饱后,这个巨头又想"征服"元宇宙?

据12月26日消息,百度与英伟达(NVIDIA)已达成协议,双方合作共建AI元宇宙。另外,在今日举行的百度AI开发者大会上,英伟达全球副总裁暨亚太区总裁 Raymond Teh将受邀出席,并发表主题演讲。

2021-12-27

2021年,区块链股权融资发生了怎么样的演变

过去一年,区块链行业融资井喷,在科技领域中独树一帜,A16z、红杉、老虎基金等等这些顶级机构在 2021 年的区块链行业肆意驰骋,在 DeFi、NFT、Metaverse 等领域扶持了一众创业项目。

2021-12-23

两个元宇宙的世界观,以及和区块链的关系

“元宇宙”这个名词音好听但义很难传达准确,想要更准确地理解义,取名为平行宇宙、竞争宇宙、山寨宇宙,更好。对应的,我们现在肉身所处的宇宙,我们称之为“肉身宇宙”。

2021-12-22

BSC主网链搭建,如何在不到24小时之内同步完成?

还是老样子,在本篇文档开始之前,大概说明一下本次BSC同步的情况:

2021-12-22