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

IP归属:

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

使测试环境成为可能的单个主要组件是构建在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

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

 

本文来源:陀螺科技 文章作者:区块链研究实验室
收藏
举报
区块链研究实验室
累计发布内容13篇 累计总热度10万+

陀螺科技现已开放专栏入驻,详情请见入驻指南: https://www.tuoluo.cn/article/detail-27547.html

区块链研究实验室专栏: https://www.tuoluo.cn/columns/author1286336/

本文网址: https://www.tuoluo.cn/article/detail-61558.html

免责声明:
1、本文版权归原作者所有,仅代表作者本人观点,不代表陀螺科技观点或立场。
2、如发现文章、图片等侵权行为,侵权责任将由作者本人承担。

相关文章