2、以太坊私链网络节点创建

Contents

以太坊环境搭建好后,我们就可以开始搭建私链,首先我们需要创建一个节点,通过这个节点我们可以同步区块数据,还可以挖矿 :)

一、创世块文件genesis.json #

第一个出生的区块称为创世块,我们都知道一个区块里面会保存上一个区块的哈希值,而创世块第一个区块,所以没有上一区块哈希值为0,在创世块中可以设置gasLimit、难度值等。

json
{
    "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "difficulty": "200000",
    "gasLimit": "314159200000",
    "alloc":{}
}

先新建一个目录

bash
mkdir blockchain
cd blockchain

进入目录,把上面代码拷贝好,新建文件genesis.json:

新建genesis.json

二、初始化 #

bash
geth --datadir /Users/jan/blockchain init genesis.json

初始化

这时候我们看到目录下多了geth和keystore两个文件,geth是区块相关的数据,keystore是保存你账户密钥的文件

三、启动节点 #

bash
geth --datadir /Users/jan/blockchain --networkid 15

执行命令,输出一坨信息表示启动成功

命令中networkid:1表示主网,2(disused)、3、4都是测试网络,其他就是私链网络 启动后,目录会多出geth.ipc文件 接着,我们新开一个终端,用来当作连接到节点的控制台

bash
geth attach /Users/jan/blockchain/geth.ipc

打开控制台

四、创建账户 #

以太坊中,账户有两张类型,一种是外部持有账户,另一种是智能合约账户,我们这里创建的是第一种。这种账户可以接收以太币,还可以用来挖坑。

bash
personal.newAccount("123456") //你的密码

绿色这一串十六进制的就是你的公钥,也就是账户的地址

为了方便后面的操作,可以用过变量来表示这个账户地址,并看下账户里面的余额

bash
base="0x6ffa66623115b4ec0a8f879f9ad06bc108585380"

查看余额

显示余额为0,开始挖坑赚点钱

bash
miner.start()

切换到第一个终端,发行出现了一坨新区块不断生成的信息,再切回到控制台输入查看余额

发现有这多钱,但是这里的余额单位是wei,并不是以太币(eth),1,000,000,000,000,000,000wei等于1个以太币,换算一下

bash
web3.fromWei(eth.getBalance(base))

这385个以太币是挖出77个区块奖励的(没有包含任何交易手续费),每挖出一个区块奖励5个以太币

到这里我们已经完成了第一个节点的启动,既然是一个网络,当然不能只有单个节点,下一篇我们实践怎么添加多个节点,以及在不同节点账户之间转账。

bash
eth address:0x510fC6E589Fcb721e9De8fCEE3058012dE6a324B