主页 > imtoken快速下载 > ETH 001私链建设
ETH 001私链建设
最近想和同事分享以太坊智能合约的编写,写的PPT越来越多。 想一想,写成一篇文章。
1.1 ETH简介
ETH是我们V神发起的开源去中心化数字货币项目。 ETH在比特币的基础上提出了“智能合约”的概念。 ETH更像是一个底层操作系统。 就像IOS和Android一样,它提供了丰富的API接口。 学习ETH的相关地址如下:
白皮书:https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-White-Paper
官方网站:https://www.ethereum.org
区块查询:https://etherscan.io/ https://etherchain.org/
1.2 ETC简介
有老朋友问ETC和ETH是什么关系。 事实上,他们是兄弟。 ETH 是一个项目,在 ETC 的一个错误导致某人失去资产后被拆分。 但有人认为数字货币是去中心化民主的,BUG的产生本身也是系统规则本身。 所以他们坚持在ETC社区。
2.2 私有链搭建 2.2.1 代码安装方法
对于初学者,我们推荐使用 Installing from PPA 来安装
我的安装目录:~/Library/Ethereum/geth
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo add-apt-repository -y ppa:ethereum/ethereum-dev
sudo apt-get update
sudo apt-get install ethereum
2.2.2 机器环境
localhost:~ lei$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.2
BuildVersion: 17C88
2.2.3 GO环境安装
GO的环境配置这里就不介绍了,请自行查看。
版本要求是:版本1.7+我用的GO版本
localhost:~ lei$ go version
go version go1.9.3 darwin/amd64
2.3 私链数据准备 2.3.1 初始化文件genesis.json
{
“config”: {“
chainId”: 88888,
“homesteadBlock”: 0,
“eip155Block”: 0,
“eip158Block”: 0
},
“coinbase”: “0x0000000000000000000000000000000000000000”,
“difficulty”: “0x1”,
“extraData”: “0x00”,
“gasLimit”: “0x47e7c5”,
“nonce”: “0x0000000000000042”,
“mixhash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,
“parentHash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,
“timestamp”: “0x00”,
“alloc”: {
“430e986e0cca10a174baad96871ec9cb308c6d05”: {
“balance”: “111111”
}
}
}
2.3.2 参数说明 参数说明
混合哈希
与 nonce 一起用于挖掘,从前一个块的一部分生成的哈希。 注意him和nonce的设置需要满足黄皮书4.3.4描述的条件。 区块头有效性,(44) of Ethereum。 .
随机数
nonce 是用于挖矿的 64 位随机数。 注意it和mixhash的设置需要满足黄皮书4.3.4描述的条件。 区块头有效性,(44) of Ethereum。
困难
设置当前区块的难度。 如果难度太高,CPU挖矿就会很困难。 在这里设置一个较小的难度
分配
用于为账户预先设置账号和Ether数量,因为私链挖矿相对容易,所以我们不需要预先设置一个账户有币,需要的时候可以自己创建。
币库
矿机账号,(随便填)
时间戳
设置创世块的时间戳
父哈希
上一个区块的哈希值,因为是创世区块比特币私有链搭建,所以这个值为0
数据
附加信息,随便填,可以填写你的个人信息
气体限制
该值设置了 GAS 总消耗量的限制,用于限制区块可以包含的交易信息的总和。 由于我们是私链,所以我们填最大值。
3 启动步骤 初始化数据
geth --datadir "./" init genesis.json
运行以后会出现两个目录
geth中保存的是区块链的相关数据
keystore中保存的是该链条中的用户信息
图片.png
启动控制台
geth --datadir "./" --nodiscover console 2>>geth.log
在这个环境中,还内置了一些操作以太坊的Javascript对象比特币私有链搭建,可以直接使用这些对象。 这些对象主要包括:
eth: 包含一些操作区块链相关的方法 net: 包含以下查看p2p网络状态的方法 admin: 包含一些管理节点相关的方法 miner: 包含一些启动和停止挖矿的方法 personal: 主要包含一些管理账户的方法 txpool : 包含了一些查看交易内存池的方法 web3: 包含了上面的对象,也包含了一些单位换算的方法