以太坊-搭建私有链(Mac、Windows双节点)

网上虽然有很多资料了,但本文仅是作为学习笔记,况且自己也要敲一遍,就记录自己在学习路上的点点滴滴吧。。。

下载钱包

点击链接,找到对应的钱包文件,Mac就选Ethereum-Wallet-macosx-0-11-1.dmg,这是官方的,不用考虑安全问题了,下载安装即可。

创世区块文件

创建一个json文件,内容如下:

{
    "nonce": "0x0000000000000042",     
    "timestamp": "0x00",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "0x00",     
    "gasLimit": "0x8000000",     
    "difficulty": "0x400",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "coinbase": "0x3333333333333333333333333333333333333333",     
    "alloc": {
     },
     "config": {
        "chainId": 666,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    }
}
参数 描述
nonce 64位随机数
timestamp 时间戳
parentHash 上一个区块的hash值,创世区块就是第一个,所以是0
extraData 附加信息,我把它理解成备注
gasLimit 代表用户愿意花费在gas上的钱的最大值,并不是实际值,这个在以前的文章有写过
difficulty 难度值,代表挖矿的难度
mixhash 与随机数nonce一起用于挖矿,具体参见“PoW(工作量证明)”
coinbase 矿工的账号,代表这个区块是哪个矿工挖出来的
alloc 用来预置账号以及账号的以太币数量
chainId 链的ID,networkid 参数需要与 chainId 的值一致,可用来防止replay attack重发攻击:恶意重复或拖延正确数据传输的一种网络攻击手段
homesteadBlock Homestead 硬分叉区块高度
eip155Block EIP 155 硬分叉高度
eip158Block EIP 158 硬分叉高度
  • Homestead是以太坊发展蓝图中的一个阶段。第一阶段是以太坊区块链面世,代号为frontier,第二个阶段即为当前阶段,代号为Homestead(家园),第三阶段为Metropolis(大都会),大都会又细分为两个小阶段,第一个是Byzantium(拜占庭)硬分叉(引入新型零知识证明算法以及pos权益证明共识算法),第二个是Constantinople(君士坦丁堡)硬分叉(以太坊正式应用pow和pos混合链,解决拜占庭引发的问题)。最后一个阶段代号Serenity(宁静),最终版本的以太坊稳定运行。
  • EIPs(Ethereum Improvement Proposals),是以太坊更新改善的一些方案,对应后面的数字就是以太坊github源码issue的编号,其中EIP155主要内容是让不同的链定义不同的chainId, 防止同一笔交易在不同的共有链上进行两次交易,防止重放攻击

初始化创世区块

geth --datadir "/Users/apple/Desktop/ETH/" init Genesis.json
其中--datadir是指定数据存放的目录,/Users/apple/Desktop/ETH/是我电脑上json文件的路径,Genesis.json是上一步的创世区块文件名

启动私有链

geth --datadir "/Users/apple/Desktop/ETH/" --networkid 666 --identity "node" --port 30303 --rpc --rpcport 8545 --rpcapi "db,eth,eth,net,web3,admin" --rpccorsdomain "*" --nodiscover --verbosity 4 console

参数 描述
networkid 与Genesis.json中的chainId一致
identity 设置节点ID
port 节点端口,默认是30303
rpc 启用 rpc 服务
rpcport rpc 服务端口,默认是8545
rpcapi rpc的api
rpccorsdomain “*”是允许通过任意域名访问,相当于域名白名单
nodiscover 关闭节点自动发现
verbosity 日志等级:0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail (默认是3)
console 进入控制台

如果设置的是默认值的话可以省略参数,启动成功会进入控制台,在控制台下可以使用eth.getBlock(区块号)查看区块信息等命令,以后可以通过geth console命令再次进入控制台,这里也有个坑,默认用geth console命令进入的是第一步我们安装的以太坊钱包的控制台,如果需要进入我们刚才创建的控制台需要使用geth --datadir "/Users/apple/Desktop/ETH/" console

创建账号

personal.newAccount("Steven")创建的账号密码为Steven

查看信息

eth.accounts查看账号
eth.getBalance(eth.accounts[0])查看第0个账户的余额,可以将eth.accounts[0]进行传值调用
eth.blockNumber查看当前区块总数
eth.getBlock(6)通过区块号查看区块
eth.getTransaction("0xdc9d03b5f8798b4c29648fafb26b9bc0d03f141c876a182a6e4c32bfac64911d")通过哈希值来查看交易,没有交易会返回null
net.listening查看是否在监听
net.peerCount查看peer数量
admin.peers查看peer信息
admin.nodeInfo查看自己的网络信息

发送交易

personal.unlockAccount(eth.accounts[0])发送交易前要先解锁,解锁一段时间后也会自动再锁上
eth.sendTransaction({from:address1,to:address2,value:amount})address1给address2发送amount个以太坊

挖矿

miner.start() 开始挖矿
miner.stop() 停止挖矿
miner.setEtherbase(eth.accounts[1])指定挖矿的奖励给哪个账户,默认给第0个
miner.start(1);admin.sleepBlocks(1);miner.stop();挖出一个区块就停止挖矿

添加节点

admin.addPeer("enode://key@ip:port")添加静态节点可加快同步速度,key/ip/port需要替换

还有个小坑不知道该怎么写,网上也有解决办法,我记录在另一篇文章里了。今天就到这,接下来开始智能合约了。


上面是Mac节点,现在更新下Windows节点(Win10的虚拟机)

下载钱包

点击链接,找到对应的钱包文件,这里我选的是Mist-win64-0-11-1.zip,这是官方的,不用考虑安全问题了,下载点击Mist.exe安装即可。

为了方便使用geth,将其加入环境变量中

我的电脑右键属性-左侧高级系统设置-环境变量-Path-新建将geth的路径粘贴进去,由于用户不同,路径不一样,我的是C:\Users\steven\AppData\Roaming\Mist\binaries\Geth\unpacked

复制json文件-初始化创世区块-启动私有链(cd到该路径下执行geth --datadir "./" console)-添加节点

同mac,注意替换路径即可,添加节点成功会返回true,然后会自动同步数据,通过查询,区块数量一样,这样就创建了两个节点的私链了,在两个节点上创建账号,挖矿,发送交易也都没问题,相互会自动同步,就是虚拟机上挖矿比较慢。


再次更新:由于终端的geth和客户端的geth并不是一个,所以在终端用的没问题,打开客户端就连到主链上去了,走了很多弯路就不说了,直接说解决方法(Mac):
通过命令"/Applications/Ethereum Wallet.app/Contents/MacOS/Ethereum Wallet" --rpc /Users/apple/Desktop/ETH/geth.ipc启动客户端即可,需要注意我 装的是Ethereum Wallet,不是Mist其中/Users/apple/Desktop/ETH/geth.ipc这个是前文中我写的私链的路径,放个截图庆祝一下:

Windows:
Mist-win64-0-11-1\Mist.exe --rpc \\.\pipe\geth.ipc路径终端会显示, 只有一个路径是geth.ipc

版权声明:本文为 Crazy Steven 原创出品,欢迎转载,转载时请注明出处!

你可能感兴趣的:(以太坊-搭建私有链(Mac、Windows双节点))