主页 > imtoken冷钱包手机版 > 【以太坊傻瓜教程】如何创建私有链?
【以太坊傻瓜教程】如何创建私有链?
本文约3300字+,阅读(观看)需20分钟
教程简介:
本教程介绍如何搭建以太坊私有链,用于以太坊链上的开发实验。
创建私有链的目的:
搭建私有链的目的是方便链上实验。 当然,公网主链可以用于日常的区块链开发,但这会造成不必要的资金浪费。 因为在以太坊链上做任何事情都需要消耗gas。 所以对于日常的实验性开发,一般都是在自己的私有链上进行。
环境搭建:
本教程的开发环境
如何创建私有链:
创建创世配置文件
首先,你需要创建一个“genesis”json配置文件,它描述了创世块的一些参数。 这是文件中的内容:
{
"coinbase": "0x0000000000000000000000000000000000000000",
"config": {
"homesteadBlock": 5
},
"difficulty": "0x20000",
"extraData": "0x",
"gasLimit": "0x2FEFD8",
"mixhash": "0x00000000000000000000000000000000000000647572616c65787365646c6578",
"nonce": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00",
"alloc": {
"dbdbdb2cbd23b783741e8d7fcf51e459b497e4a6": {
"balance":"100000000000000000000000000000"
} } }
将上面的代码复制到一个文本文件中,命名为genesis.json
创建!
为了不和主链的数据冲突,建议创建自己的私有链数据文件夹。在我的电脑上,我在E盘建了一个EthDBSpace作为以太坊实验工作区以太坊官网查余额,并在里面创建了一个PrivChain文件夹作为我的第一个私有链的数据存储文件夹。
这里为了方便管理,genesis.json放在EthDBSpace文件夹下
打开 Windows 命令行
键入以下命令
geth --datadir "E:\EthDBSpace\PrivChain" init "E:\EthDBSpace\genesis.json"
--datadir 选项用于指定我们私有链的数据目录。 在我的电脑上是 E:\EthDBSpace\PrivChain
init命令就是genesis命令,后面就是我们的genesis配置文件路径。
点击回车后,执行结果如下
创建现已完成!
创建账户
为了在私链上进行实验,我们还需要在私链上创建自己的账户
Windows 命令行键入
geth --datadir "E:\EthDBSpace\PrivChain" console
由于我们已经创建成功,所以第二次进入客户端时不需要再指定genesis.json文件的路径,而是直接通过-datadir指定私链数据的路径。
控制台命令用于打开geth命令行。
点击回车后,客户端首先会经过一段时间的初始化。 出现命令提示符后,表示进入了geth控制台
在 geth 命令行类型
personal.newAccount('Your Password')
personal.newAccount函数用于创建账户,参数为账户密码
点击进入后会出现
账户创建成功后,创建账户的地址,即账户的公钥,会在命令下方以绿色字符列出
我们可以先在geth命令行输入查看账户余额:
my=eth.accounts[0]
eth.getBalance(my)
my=eth.accounts[0],这句话的目的是将我们刚刚创建的账户地址赋值给my变量。 这简化了后续的帐户地址输入。 其中eth.accounts记录了机器上所有的账户地址。 由于我们是第一次创建账号,目前电脑上只有一个账号。 所以这里我们使用eth.accounts[0]来提取第一个账户地址。 eth.getBalance函数用于获取账户余额,参数填写账户地址。 这里的my变量记录的是第一个账号的地址。
执行结果如下:
可以看到此时账户中没有钱。 在以太坊上转账、签发合约、执行合约都需要花钱。 而钱是挖矿来的,先挖矿赚点钱吧。
挖矿赚钱:
目前的以太坊采用POW(Proof of Work)共识机制来激励人们维护账本。 该机制的核心是系统提出一个问题,让全网与有意记账的节点共同解决。 第一个解决问题答案的节点将获得新区块的记账权,并获得eth作为奖励。 其中,打算记账的节点称为矿工节点。 接下来,我们将在我们的私有链上挖矿,为我们后续的转账实验赚取一些钱。
继续在geth命令行输入以下命令开始挖矿:
miner.start()
点击回车后,会看到客户端开始挖矿,命令行中不断显示出块进度
由于是私有链,目前不存在竞争一个节点挖矿的情况。 因此挖几秒就可以停止挖矿,获得的钱可以用于后续变现。
输入以下命令停止挖矿
miner.stop()
这个时候再检查一下我们的账户余额
eth.getBalance(my)
你会看到我们的余额有很多钱,显示的余额是以wei计算的,wei是以太坊的货币单位。wei到eth的换算表,见
转移实验:
接下来我们尝试在自己的私链上转账
- 先创建第二个账号,继续在geth命令行输入以下命令
personal.newAccount('123')
other=eth.accounts[1]
将第二个账户地址赋值给other变量,用于后续输入
转账前需要解锁转账账户,继续在geth命令行输入以下命令
personal.unlockAccount(my)
由于我的账户有钱,另一个账户没有钱,所以我们的转出账户my在这里就解锁了。
按 Enter 后,系统将提示您输入密码。 我的账号密码是123以太坊官网查余额,输入后回车解锁。
要启动一个帐户,请在 geth 命令行中键入
eth.sendTransaction({from:my, to:other, value:10000})
where from是转账账户,这里我们输入记录第一个账户地址的my变量
to为转入账户,这里输入入账金额第二个账户地址的other变量
value指定转账金额,单位是wei,这里我们转账10000 wei
键入后的结果如下
可以看到转账请求已经提交
此时我们再次查看两个账户的余额
eth.getBalance(my)
eth.getBalance(other)
查询余额结果如下:
这时,你会发现一个奇怪的现象。 先前的转移请求已提交。 为什么两个账户的余额没有变化? 回想一下我们刚才说的,以太坊使用POW共识来鼓励矿工记账,而由于我们创建的私有链目前只有一个节点,所以此时没有其他节点参与记账。 所以我们需要通过挖矿将这笔转账记录到区块中。
要继续挖矿,请在geth控制台输入
miner.start()
等待一段时间后停止挖矿
miner.stop()
再次查询,发现转账已经到位
总结:
本节教程到此结束。 在本教程中,我主要介绍如何搭建以太坊开发的实验环境,创建私有链以及私有链上的挖矿和转账。