以太坊私网建立-通过创世区块来初始化区块链

一、创建目录privatechain,名字随便起

zhangqiangdeMac-mini:~ zhqmac$ cd Desktop

zhangqiangdeMac-mini:Desktop zhqmac$ mkdir privatechain

zhangqiangdeMac-mini:Desktop zhqmac$ cd privatechain/

二、创建创世块

vi genesis.json

拷贝下面的内容

{
  "alloc" : {},
  "coinbase" : "0x0000000000000000000000000000000000000000",
  "config" : {
    "chainId" : 110,
    "eip155Block" : 0,
    "eip158Block" : 0,
    "homesteadBlock" : 0
  },
  "difficulty" : "0x20000",
  "extraData" : "",
  "gasLimit" : "0x2fefd8",
  "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "nonce" : "0x0000000000000042",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp" : "0x00"
}

保存退出

参数说明:

参数 说明
mixhash 与nonce配合用户挖矿,由上一个区块的一部分生成的hash。
nonce nonce就是一个64位随机数,用于挖矿
difficulty 设置当前区块的难度,如果难度过大,cpu挖矿就很难,这里设置较小难度
alloc 用来预置账号以及账号的以太币数量,因为私有链挖矿比较容易,所以我们不需要预置有币的账号,需要的时候自己创建即可以
coinbase 矿工的账号,随便填
timestamp 设置创世块的时间戳
parentHash 上一个区块的hash值,因为是创世块,所以这个值是0
extraData 附加信息,随便填,可以填你的个性信息
gasLimit 该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私链,所以随意写

三、初始化区块链,并且创建一个文件夹来存储区块数据

zhangqiangdeMac-mini:privatechain zhqmac$ geth init genesis.json --datadir blockchainData

四、启动私有链节点

geth --datadir blockchainData/ --networkid 110 --rpc console

如果出现Welcome to the Geth JavaScript console!表示启动成功

参数 说明
identity 区块链的标示,随便填写,用于标示目前网络的名字
init 指定创世区块文件的位置,并创建初始块
datadir 设置当前区块链网络数据存放的位置
port 网络监听端口
rpc 启动rpc通信,可以进行智能合约的部署和调试
rpcapi 设置允许链接的rpc的客户端,一般为db,eth,net,web3
networkid 设置当前区块链的网络ID,用于区分不同的网络,是个数字,1表示主网
console 启动命令行模式,可以在geth中执行命令.

五、新建账户

查看所有账户

personal.listAccounts

返回为[],此时还没有账户

新建账户

personal.newAccount(“123456”)

"123456"为账户密码

personal.listAccounts

可以查看到刚才创建的钱包地址,在blockchainData目录下的keystore目录中多了一个keystore文件,里面保存的即是次账号的一些信息:

{"address":"0a778959e98293bdc1101ec211dbc3135be2b59a","crypto":{"cipher":"aes-128-ctr","ciphertext":"e6e5c00cd34e76f4d64b07f0de100f3a81cfbe8b11b3c7ffc52f7bdad6308a27","cipherparams":{"iv":"498e15f6d7244bab299ff986e4155b2b"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"5b0345890294ee5fc050b00e852963ce41cc60ae69ff86302d1a361498b09ba5"},"mac":"2e7f9c197ed4dbb9c5c3888b28639f5d38767ab3bb3359f4b58dc195d9798f2f"},"id":"a1b23559-f59e-44df-a32d-92f6682fd86f","

六、挖矿

  • 查看账户余额

eth.getBalance(eth.coinbase)

查询结果为0,eth.coinbase矿工的账号,默认为personal.listAccounts第一个账号

  • 设置coinbase

eth.setEtherbase(eth.accounts[0])

因为此时我们只有一个账号,如果想要设置其他账号为挖矿账号,可以新建一个账号,通过eth.accounts[index]来设置,或者直接将地址填在这里eth.setEtherbase("0x0a778959e98293bdc1101ec211dbc3135be2b59a")

  • 开始挖矿

miner.start(1)

1表示线程数

如果卡在

INFO [07-24|00:48:46.606] Commit new mining work                   number=2 txs=0 uncles=0 elapsed=129.846µs

没有关系,等着就好,根据电脑性能不同,时间可长可短

  • 停止挖矿

miner.stop()

输入可能被挖矿的输出截断,没关系,直接输完,回车就好

  • 看下余额

    eth.getBalance(eth.coinbase)

这时就应该有以太币了,单位为wei

七、发送交易

  • 创建一个账号

personal.newAccount(“123456”)

  • 解锁账号

personal.unlockAccount(eth.coinbase)

输入密码

如下输出表示解锁成功

Unlock account 0x0a778959e98293bdc1101ec211dbc3135be2b59a
Passphrase: 
true
> 

注:解锁的账号,为了安全,一段时间后会自动上锁

  • 转账

eth.sendTransaction({from:eth.coinbase,to:eth.accounts[1],value:100000000})

返回结果:

 > eth.sendTransaction({from:eth.coinbase,to:eth.accounts[1],value:100000000})
INFO [07-24|01:00:53.132] Submitted transaction                    fullhash=0xa0517620c64f43e50db46836449a18afcf749200aaa13e5ce8f17b2d86be7b4a recipient=0x19BD3Fe6E7Db24aDaA5Dc012a154A9a03dCCD1fE
"0xa0517620c64f43e50db46836449a18afcf749200aaa13e5ce8f17b2d86be7b4a"
 

0xa0517620c64f43e50db46836449a18afcf749200aaa13e5ce8f17b2d86be7b4a为交易hash

或者

amount = web3.toWei(10,’ether’) eth.sendTransaction({from:eth.coinbase,to:eth.accounts[1],value:amount})

  • 查看eth.accounts[1]的余额

eth.getBalance(eth.accounts[1])

余额还是0,因为交易还没有被验证,需要矿工挖矿确认。

miner.start() miner.stop()

再查看余额

eth.getBalance(eth.accounts[1])

转账成功

八、查看交易

eth.getTransaction(“0xa0517620c64f43e50db46836449a18afcf749200aaa13e5ce8f17b2d86be7b4a”)

可以查看交易信息。

九、查看当前区块总数

eth.blockNumber

十、通过区块号查看区块

eth.getBlock(6)

十一、交易池状态

txpool.status

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦