在/root路径下执行 1 安装以太坊
add-apt-repository -y ppa:ethereum/ethereum
apt update
apt install ethereum
查看以太坊版本
geth version
2 安装指定版本的solc编译器
npm install -g solc@0.4.22
3搭建以太坊私有链 生成账户
geth account new
生成3个账户 密码 yhj123 所有的账户都可以在安装目录下的keystore下查看
cd /root/.ethereum/keystore
UTC--2021-08-25T08-32-27.014948531Z--07344c340fcd14fbd7acc8c71da19d38e1d7615c
UTC--2021-08-27T02-58-37.835299692Z--093fb83eb32587c0b0cb789e6111c8878f4834d0
UTC--2021-08-27T02-58-13.827504651Z--68cd986f20bc1fe5ce4103568cd60df1e6845833
解锁账户 4 在/root路径下编写创世块文件
{
"config": {
"chainId": 1,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0
},
"alloc": {
"07344c340fcd14fbd7acc8c71da19d38e1d7615c": {
"balance": "0x31d450f18af132720000000"
},
"093fb83eb32587c0b0cb789e6111c8878f4834d0": {
"balance": "0xd3c21bcecceda1000000"
},
"68cd986f20bc1fe5ce4103568cd60df1e6845833": {
"balance": "0xd3c21bcecceda1000000"
}
},
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x20000",
"extraData": "",
"gasLimit": "0x2fefd8",
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
chainId | 指定了独立的区块链网络id,网络id在连接到其它节点的时候会用到,以太坊公网id是1,不同的id网络的节点无法相互连接 |
---|
homesteadBlock | HomesteadBlock是以太坊的第二个主要版本,第一个是Frontier,这个值设置为“0”表示目前正在使用Homestead版本 | eip150Block | eip是ethereum improvement proposal的缩写,我们的链不会提议分叉,所以设置为“0”即可 | eip155Block | eip是ethereum improvement proposal的缩写,我们的链不会提议分叉,所以设置为“0”即可 | eip158Block | eip是ethereum improvement proposal的缩写,我们的链不会提议分叉,所以设置为“0”即可 | byzantiumBlock | | constantinopleBlock | | petersburgBlock | | istanbulBlock | | berlinBlock | | alloc | 用来预置账号以及账号的以太币数量,因为私有链挖矿比较容易,所以不需要预置有币的账号,需要的时候再创建即可 | coinbase | 矿工的账号 | difficulty | 设置当前区块的难度,如果数值过大,挖矿时间较长,在测试环境为节省算力和等带时间可设置较小值 | extraData | 可以写入32byte大小的任意数据,每个block都会有,由挖出block的miner来决定要不要写点什么。该参数可以填你的个性信息,但必须为十六进制的字符串 | gasLimit | 该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为是私有链,所以填最大 | nonce | 一个用于挖矿的64位随机数 | mixhash | 与nonce配合用于挖矿,由上一个区块的一部分生成的hash | parentHash | 上一个区块的哈希值,因为是创世区块,所以这个值是0 | timestamp | 设置创世区块的时间戳 |
5 初始化创世区块
geth --datadir "/root/Ethereumdata" init /root/genesis.json
6 查看目录 在初始化的以太坊存储路径下多了geth和keystore两个文件夹: 1) geth保存的该链上的区块数据 2)keystore保存该链上的用户信息 7 配置自动解锁账户的脚本 在以太坊文目录/root/Ethereumdata下创建文件 password 写入创世区块预置账户的密码 每行一个 8 编写以太坊启动脚本 参数描述
identity | |
---|
rpc | 启动rpc通信 | rpcaddr | 连接rpc的地址,默认为localhost,为了方便访问建议使用本机IP地址 | rpccorsdomain | 指定什么url能连接到你的节点执行rpc定制端任务,如果输入是“*”,则任何url都可以连接到你的rpc实例。 | rpcapi | 设置允许rpc的客户端,一般为db,eth,net,web3 | unlock | 解锁账户 | password | 账户密码文件 | nodiscover | 节点私有 不被别人添加 | maxpeers | 网络可以被接入的最大节点数据 0表示不被其它节点接入 | networkid | 设置当前区块链的网络ID,用于区分不同的网络,是一个数字,公链为1;这个和创世块文件的chainid没有直接关联 | datadir | 当前区块链数据存放的位置 | console | 启动命令行模式,可以再geth中执行命令 | port | 网络监听端口,默认30303 | rpcport | 连接rpc的端口,默认为8545 | identity | 区块链的标识,用于标识目前网络的名字 |
编写启动文件的脚本sh文件
geth --identity "myethereum" --rpc --rpcaddr "0.0.0.0" --rpccorsdomain "*" --rpcapi "eth,net,web3,personal,admin,shh,txpool,debug,miner" --port 30304 --rpcport "7545" --nodiscover --maxpeers '5' --networkid '123456' --datadir '/root/Ethereumdata' console --allow-insecure-unlock
|