eth的私链搭建
首先下载geth进行安装,下载地址为geth客户端,下载的时候会出现下面的情况:
这时不用等,直接打开控制台,操作如下:
在开发者工具中按照下图步骤进行下载:
下载的文件为:geth-darwin-amd64-1.9.14-6d74d1e5.tar.gz
解压后,如图所示:
创世块是要手动配置后生成的,下面是具体的创建文件的步骤
进入geth所在目录
cd ~/Desktop/eth-test/geth-darwin-amd64-1.9.14-6d74d1e5
通过vi 创建创世文件,将文件命名为genesis.json
vi genesis.json
将下面的内容粘贴到json文件中
{
"config": {
"chainId": 666,
"homesteadBlock": 0,
"eip150Block": 0,
"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"ethash": {}
},
"nonce": "0x0",
"timestamp": "0x5ddf8f3e",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0xffffffff",
"difficulty": "0x1000",
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": { }
},
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
关于上面各个参数的说明,网上有很多,大家可以去查看,在此不再具体说明。粘贴后保存退出。在geth目录下就会出现下面的文件:
此时我新建了一个目录,用于存放区块的数据,如下图所示:
接下来在终端执行下面命令:
//--datadir 后面跟的eth的工作目录,区块的数据会存在这个文件夹里,也就是在当前目录下面的chain目录
// init 后面跟的参数是genesis.json文件所在位置。我是在genesis.json文件所在的目录打开的终端,所以不需要给genesis.json的路径,给出文件名即可
./geth --datadir "./chain" init genesis.json
执行成功,在终端会出现以下信息,说明执行成功。
此时在chain目录下也会出现相应的文件
然后我们开启一个Geth节点,输入下面的命令:
//--datadir 后面跟的是你指定的工作目录,我在这里使用相对路径
//--identity 后面跟的是你的区块链标识,随便写
//--networkid 后面跟的是你的网络id,这个是区别区块链网络的关键
//--port 和 --rpcport 你随便给一个就行,别跟在用的端口重复就行
./geth --datadir "./chain" --identity "hi Chain" --networkid 19900418 --port 61916 --rpcport 8206 console 2>> geth.log
也可以通过下面的方式进入控制台:
geth attach http://localhost:8545
解锁相应的功能,使用下面的脚本启动,关键是在–rpcapi后面加上需要开启的功能,多个功能使用逗号隔开。
nohup geth --datadir . --networkid 15 --rpc --rpcapi "eth.personal" >2
如果你得到的结果如下图,说明你成功开启了Geth的节点,并进入JavaScript终端
并且在当前目录下会生成geht.log,如图所示:
可以使用vi查看日志文件,其中下面这条信息是告诉用户ipc文件位置:
IPC endpoint closed url=/Users/test/Desktop/eth-test/geth-darwin-amd64-1.9.14-6d74d1e5/chain/geth.ipc
进入JavaScript终端后,你可以输入下面三个命令,创建一个账户。在创建账户之前,coinbase地址是空的,创建完账户后,coinbase为刚才创建的账户地址。
//创建一个新账户
personal.newAccount("123456")
//user1变量保存刚才创建的账户,可以看出,eth.accounts数组存放了账户地址
user1 = eth.accounts[0]
//解锁刚才创建的账户,如果不解锁,不能转账
//Geth隔一段时间就会锁定账户,所以需要解锁
personal.unlockAccount(user1, "123456")
//查看coinbase
eth.coinbase
eth.getBalance(user1)
可以看到账户余额为0,如下图所示:
现在就可以开始挖矿了,输入挖矿命令:
miner.start()
如果你看到终端不停有输出,那就对了。如果想停止挖矿,输入停止命令:
miner.stop()
你可以一边挖矿,一边查看账户余额。下面这个值是按照最小单位显示的,转换为正常数据时需要除以10的18次方。
需要先下载钱包,下载地址为:https://github.com/ethereum/mist/releases/,不要下载最新版本,我下载0.11不能用,然后又卸载了,经验证0.9.3版本可用。
下载完成安装后,通过下面的命令启动钱包:
open -a /Applications/Ethereum\ Wallet.app/ --args --rpc /Desktop/eth-test/geth-darwin-amd64-1.9.14-6d74d1e5/chain/geth.ipc
启动后如图所示:
注意红框是私有网络。
接下来就可以进行各种操作了。
参考文档:
https://www.jianshu.com/p/879669da11e6
https://www.jianshu.com/p/e0a52aff4006