主页 > imtoken冷钱包手机版 > 【以太坊傻瓜教程】如何创建私有链?

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

imtoken冷钱包手机版 2023-01-30 07:58:27

本文约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()

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

以太坊官网以太坊_以太坊官网查余额_怎么查以太坊公链查智能合约

总结:

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