【以太坊傻瓜教程】如何创建私链

本教程描述了如何搭建Ethereum私链用于在以太坊链上进行开发实验。

attachments-2018-03-9MDlTgOS5aa74ab46b850.png

作者:hellspawn88

来源:CSDN

原文链接: https://blog.csdn.net/weixin_40401264/article/details/78095222

著权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 

教程简介:

  • 本教程描述了如何搭建Ethereum私链用于在以太坊链上进行开发实验。
创建私链的目的:
  • 搭建私链的目的是方便在链上做实验。在日常区块链开发中当然可以使用公网主链,但是这样会造成不必要的金钱浪费。因为在以太坊链上干任何事都需要消耗gas。所以对于日常实验性开发,一般都是在自己的私链上做实验。
环境搭建: 如何创建私链:

创建创世配置文件:

首先需要创建一个“创世”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

attachments-2018-04-ORuhwUkl5acc29303abec.png

创世!:

为了不和主链的数据冲突,这里建议建立自己的私链数据文件夹。在我的电脑上在E盘建了一个EthDBSpace作为以太坊实验工作区,并在里面创建了一个PrivChain文件夹作为我的第一个私链的数据存放文件夹

attachments-2018-04-BFZivZed5acc2966d2e43.png

这里为了方便管理将genesis.json放在了EthDBSpace文件夹下

  • 打开Windows命令行
  • attachments-2018-04-vyX9GZwz5acc2990d19db.png
  • 键入如下命令
    geth --datadir "E:\EthDBSpace\PrivChain" init "E:\EthDBSpace\genesis.json"

–datadir 选项用来指定我们私链的数据目录。在我的电脑上是E:\EthDBSpace\PrivChain
init 命令为创世命令,后面紧跟着我们的创世配置文件路径。

  • 点击回车后执行结果如下
    attachments-2018-04-2rW9f5Ss5acc2a9a45c4c.png
    此时创世完成!
创建账户:

为了在私链上做实验,我们还需要在私链上建立自己的账户

  • Windows命令行键入
geth --datadir "E:\EthDBSpace\PrivChain" console

我们由于已经创世成功所以第二次进入客户端时我们不用再次指定genesis.json文件路径,而是直接–datadir 指明私链数据路径即可。
console命令用来开启geth的命令行。

  • 点击回车后,客户端会先经过一阵初始化。在命令提示符出现后,说明已经进入geth console

    attachments-2018-04-EXHF8Vt15acc2aaddca20.png

  • 在geth命令行中键入

personal.newAccount('Your Password')

personal.newAccount 函数用来创建账户,其中参数为账户密码

  • 点击回车后会出现

    attachments-2018-04-zCGTyL0r5acc2abe00022.png

    账户创建成功后会在命令下方以绿色字符列明创建账户的地址,也即账户的公钥

  • 我们可以先查下账户余额,在geth命令行中键入:

my=eth.accounts[0]
eth.getBalance(my)

my=eth.accounts[0],此句的目的是将我们刚创建的账户地址赋值给my变量。这样可以简化后续账户地址输入。其中eth.accounts记录了本机上所有账户地址。由于我们第一次创建账户,所以目前电脑上只有一个账户。所以这里我们用eth.accounts[0]提取第一个账户地址。eth.getBalance函数用来获得账户余额,参数填入账户地址。这里的my变量记录的就是第一个账户的地址。

  • 执行结果如下:
    attachments-2018-04-CFqXKSZ65acc2b189803e.png
    可以看到此时账户里没钱。在以太坊上转账、发布合约、执行合约都需要费钱。而钱来自挖矿,下面我们先挖矿赚些钱。
挖矿赚钱:

目前的以太坊使用POW(Proof of Work)共识机制来激励人们去维护账本记账。此机制的核心是系统出一道题,让全网有意记账节点来求解,第一个求解出题目答案的节点会获得新区块的记账权并获得eth作为奖励。其中有意记账的节点叫做矿工节点。下面我们在我们的私链上挖矿赚一些钱便于我们后续的转账实验。

  • 继续在geth命令行键入如下命令开始挖矿:
miner.start()
  • 点击回车后会看见客户端开始挖矿,命令行里不断显示出块进度

    attachments-2018-04-LzhD5emj5acc2b2be4036.png

    由于是私链,目前就一个节点在挖矿不存在竞争。所以开挖若干秒即可停止挖矿,挖得得钱已经可以进行后续实现。

  • 键入如下命令停止挖矿

miner.stop()
  • 此时再次查看我们的账户余额
eth.getBalance(my)

会看到我们的余额多了一大笔钱,显示的余额以以太坊货币单位wei来计算。关于wei到eth的换算表参见http://www.ethdocs.org/en/latest/ether.html

转账实验:

下面我们尝试下在我们自己创建的私链上进行转账
- 先创建第二账户,继续在geth命令行键入如下命令

personal.newAccount('123')
other=eth.accounts[1]

将第二账户地址赋值给other变量,便于后续输入

  • 在转账前需要对转出账户进行解锁,继续在geth命令行键入如下命令
personal.unlockAccount(my)

由于目前是my账户中有钱,other账户没钱,所以这里解锁我们的转出账户my

  • 回车后会提示输入密码,我这个账户的密码为123,输入后回车即可解锁

    attachments-2018-04-58VnOOAV5acc2c29593ed.png

  • 开始账,在geth命令行键入

 eth.sendTransaction({from:my, to:other, value:10000})

其中from为转出账户,这里我们输入记录了第一个账户地址的my变量
to为转入账户,这里我们输入记录额第二个账户地址的other变量
value指定了转出金额,单位为wei,这里我们转出10000wei

  • 键入后结果如下

    attachments-2018-04-0CPI29dJ5acc2f545fe51.png

    可以看到转账请求已经提交

  • 此时我们再次查看两个账户的余额

        eth.getBalance(my)
        eth.getBalance(other)
  • 查询余额结果如下:
    attachments-2018-04-0e6Zts5E5acc2e3535630.png
    此时会发现一个奇怪现象,前面的转账请求已经提交,为什么两个账户的余额没有发生任何变化?回想刚才我们讲到的,以太坊使用POW共识激励矿工记账,而由于我们创建的是私链目前只有我们一个节点,所以此时并没有其它节点参与记账。所以我们需要通过挖矿把这笔转账记录到块中。

  • 继续挖矿,在geth 控制台中键入

 miner.start()
  • 等待挖一会后停止挖矿
miner.stop()

再次查询,发现转账已到位

attachments-2018-04-O3L6Ugli5acc2e7fc6915.png

总结:

到此本节教程结束,此教程我主要介绍了如何搭建一个以太坊开发实验环境,创建私链及在私链上挖矿转账。

文章发布只为分享区块链技术内容,版权归原作者所有,观点仅代表作者本人,绝不代表区块链兄弟赞同其观点或证实其描述。

attachments-2018-02-kL1zBfXx5a7ffd0b78798.jpg    

  • 发表于 2018-04-10 10:59
  • 阅读 ( 672 )
  • 分类:以太坊

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
社区运营-小链

区块链兄弟社区运营管理

246 篇文章

作家榜 »

  1. 社区运营-小以 486 文章
  2. 社区运营-小链 246 文章
  3. 于中阳Mercina-zy 79 文章
  4. 涂晶 74 文章
  5. 李晓琼 45 文章
  6. 兄弟连区块链培训 42 文章
  7. 吴寿鹤 36 文章
  8. John-smith 26 文章