以太坊区块链学习之搭建私链

初学者了解以太坊,最好的办法之一就是先搭建一条私链,在上面创建账户,部署合约,并试着与之交互。当完成了这一系列步骤后,对在以太坊上进行应用开发,就是顺理成章的事情了。

开发需要

geth客户端(安装方式请参考以太坊官网:点击打开链接)、本篇是基于Mac OS10.12的操作系统,建议使用Mac或者装有unbuntu的电脑进行开发,其实如果要长期学习区块链的话,不建议使用Windows。

第一步

创建一个genesis.json文件,内容如下:

{
  "config": {
        "chainId": 10,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x2000",
  "extraData"  : "",
  "gasLimit"   : "0x8000000",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00",
  "alloc": {}
}
如果你是初次接触区块链,不必对文件中的内容感到困惑,更不用被他们吓到,当你完成了私链的搭建,并在其上完成了创建账户、挖矿、部署合约以及与之交互的工作后,再回过头看这份JSON文件,你就会明白其中许多键值对的含义了。在后续的博客中,我会进行解释。

第二步
打开终端,创建一个目录,把JSON文件放入该目录

mkdir privateNet
mv 你的genesis.json privateNet/
cd privateNet
第三步
创建创世区块。

扫描二维码关注公众号,回复: 898547 查看本文章
geth --datadir "./" init genesis.json
--datadir "./"指定私链数据存放的文件夹位置,init初始化genesis.json,创建创世区块。如果执行成功,在终端大致会是这个样子
同时,查看你指定的存放私链数据的文件夹,会多出两文件夹geth、keystore。这两个文件夹是干什么用的呢?geth文件夹下用来存放私链的相关数据,keystore文件夹下存放的是该链的用户信息。在围绕私链的一系列动作完成后,你会有所理解。

第四步

创建私链

geth --datadir "./"  console 2>>geth.log
console 2>>geth.log 将私链的日志打印到geth.log中,在你的存放私链的文件夹里你会找到该文件,另开一个终端,来到geth.log所在目录,执行命令:

tail -f geth.log
你将在这个终端中实时的看到私链的状况。

至此,私链已经搭建完成。当然,我们应该体验一把辛苦搭建的私链

创建账户

回到之前创建私链的那个终端,可以看到,此时的终端处于待输入状态,输入

eth.accounts
将会返回[],此时的私链还没有账户,输入

personal.newAccount("password")
回车后会返回一串hash,返回的hash代表创建账户的地址,这条命令中的password代表该账户的密码,可以随意指定。这是再输入eth.accounts将会返回刚刚创建的账户的地址,根据返回值我们可以知道,账户以数组形式存在,因此我们输入eth.accounts[0],也会返回刚刚创建账户的地址。

查询账户余额
输入

eth.getBalance(eth.accounts[0])
返回值为账户余额,此时账户余额为0。

挖矿
听到挖矿,第一反应肯定是,挖币赚钱,没错,接下来我们也要挖出我们的“以太币”,来“赚钱”了!输入:

miner.start(1)
返回值会为true或者null,这都没什么影响,查看另一个终端,会看到有块正在生产。命令中的参数1代表只用当前机器的一块处理器进行挖矿,如果不输入参数,默认是“全力挖矿”,这样电脑会很容易发热。

在geth终端再次输入

eth.getBalance(eth.accounts[0])
会返回一长串数字,这些数字就是你在过去几秒或者几分钟内挖出的币,如果这是真的以太币,那你在过去几秒已经赚取了不菲的财富了!你可能会疑惑,为什么几秒钟的功夫就能够得到这么多币呢?这是因为你产生了足够多的区块。那为什么产生区块的速度这么快呢?这是因为,在最开始我们的genesis.json文件中,有一项叫做
 
 
 "difficulty" : "0x2000"
 这一项用来控制我们挖矿的难度,我们设置的难度“偏低”,大家可以改变它的值,重新搭建私链试试。 
 

至此,你已经掌握了私链的搭建以及创建账户、查看余额、挖矿的工作了,下一篇博客将讲述如何在这个私链上部署合约并与之交互。

当然,别忘了停止挖矿:输入指令:

miner.stop()
返回true,挖矿停止。





猜你喜欢

转载自blog.csdn.net/qq_35190319/article/details/79274870