51Testing软件测试论坛

标题: 测试区块链的防篡改性 [打印本页]

作者: 司格特    时间: 2018-3-9 14:09
标题: 测试区块链的防篡改性
首先在第一台机器168.192.0.5
  1. mkdir  private-geth && private-geth
  2. vim genesis.json

  3. {
  4.     "config": {
  5.         "chainId": 3434,
  6.         "homesteadBlock": 0,
  7.         "eip155Block": 0,
  8.         "eip158Block": 0
  9.     },
  10.     "coinbase" : "0x0000000000000000000000000000000000000000",
  11.     "difficulty" : "0x400",
  12.     "extraData" : "0x123456",
  13.     "gasLimit" : "0xffffffff",
  14.     "nonce" : "0x0000000000000042",
  15.     "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  16.     "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  17.     "timestamp" : "0x00",
  18.     "alloc": { }
  19. }
  20. 初始化创始块

  21. geth --datadir ./data/00 init genesis.json

  22. 进入geth平台

  23. geth  --identity "newEth"  --rpc --rpccorsdomain "*" --rpcapi "personal,db,eth,net,web3" --datadir ./data/00 --networkid 3434  --ipcdisable --port 33333 --rpcport 4444 console

  24. admin.nodeInfo 得到 enode: "enode://ef572405a99d655f41ec645a780e23b8dc243c1297c2f7b9da416ffbe79dc15298d2e31a78d903b3cb611d417287e17f5307971213b748d16929ff476bb8ea6c@[::]:33333"
  25. 在这里制作成镜像haha1
复制代码
第二个节点 由haha1镜像创建主机成为192.168.0.6
  1. cd  private-geth

  2. geth --datadir ./data/01 init ./genesis.json

  3. 连接第一个节点并进入geth平台

  4. geth  --identity "newEth"  --rpc --rpccorsdomain "*" --rpcapi "personal,db,eth,net,web3" --datadir ./data/01 --networkid 3434  --ipcdisable --port 33334 --rpcport 4446 --bootnodes "enode://ef572405a99d655f41ec645a780e23b8dc243c1297c2f7b9da416ffbe79dc15298d2e31a78d903b3cb611d417287e17f5307971213b748d16929ff476bb8ea6c@192.168.0.5:33333" console

  5. Welcome to the Geth JavaScript console!

  6. instance: Geth/newEth/v1.6.6-stable-10a45cb5/linux-amd64/go1.8.1
  7. modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

  8. > eth.blockNumber
  9. 0
  10. 他会自动更新主链的信息

  11. > INFO [07-12|14:28:29] Block synchronisation started
  12. INFO [07-12|14:28:29] Imported new state entries               count=1 flushed=1 elapsed=98.548碌s  processed=1 pending=0 retry=0 duplicate=0 unexpected=0
  13. INFO [07-12|14:28:30] Imported new block headers               count=5 elapsed=1.369s    number=5 hash=467a87鈥f2226 ignored=0
  14. INFO [07-12|14:28:30] Imported new chain segment               blocks=5 txs=0 mgas=0.000 elapsed=1.418ms   mgasps=0.000 number=5 hash=467a87鈥f2226
  15. INFO [07-12|14:28:30] Fast sync complete, auto disabling
  16. > eth.blockNumber
  17. 5
  18. 制作成镜像Haha2
复制代码
用第一个节点的镜像制作第三个节点 主机名字3 192.168.0.2
  1. cd private-geth

  2. geth --datadir ./data/02 init ./genesis.json

  3. geth  --identity "newEth"  --rpc --rpccorsdomain "*" --rpcapi "personal,db,eth,net,web3" --datadir ./data/02 --networkid 3434  --ipcdisable --port 33335 --rpcport 4447 --bootnodes "enode://ef572405a99d655f41ec645a780e23b8dc243c1297c2f7b9da416ffbe79dc15298d2e31a78d903b3cb611d417287e17f5307971213b748d16929ff476bb8ea6c@192.168.0.5:33333" console



  4. Welcome to the Geth JavaScript console!

  5. instance: Geth/newEth/v1.6.6-stable-10a45cb5/linux-amd64/go1.8.1
  6. modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

  7. > eth.accounts
  8. []
  9. >
  10. > INFO [07-12|14:36:12] Block synchronisation started
  11. INFO [07-12|14:36:12] Imported new state entries               count=1 flushed=1 elapsed=98.452碌s  processed=1 pending=0 retry=0 duplicate=0 unexpected=0
  12. INFO [07-12|14:36:14] Imported new block headers               count=5 elapsed=1.714s    number=5 hash=467a87鈥f2226 ignored=0
  13. INFO [07-12|14:36:14] Imported new chain segment               blocks=5 txs=0 mgas=0.000 elapsed=1.445ms   mgasps=0.000 number=5 hash=467a87鈥f2226
  14. INFO [07-12|14:36:14] Fast sync complete, auto disabling


  15. > eth.blockNumber
  16. 5

  17. 创建一个新映像haha3
复制代码
这样三个节点相连的私链就搭建成功了

在篡改了第三台机器的数据或者ldb以后,第三个节点不能挖矿了,然后我再同一个目录下再创建一个
新的节点,同样不能挖矿。


  1. geth --datadir ./data/03 init ./genesis.json

  2. geth  --identity "newEth"  --rpc --rpccorsdomain "*" --rpcapi "personal,db,eth,net,web3" --datadir ./data/03 --networkid 3435  --ipcdisable --port 33336 --rpcport 4447 --bootnodes "enode://ef572405a99d655f41ec645a780e23b8dc243c1297c2f7b9da416ffbe79dc15298d2e31a78d903b3cb611d417287e17f5307971213b748d16929ff476bb8ea6c@192.168.0.5:33333" console
复制代码
那我就把这台机器毁了吧,再复制一下第三台机器,重新试验。
一样是192.168.0.2的机器
进去以后直接同步好了区块链数据。
cd private-geth/data/02/geth/chaindata
但是一直不能挖矿,无奈我就在第二台机器上同样的方法创建第三台节点是可以挖矿的
那我在他上面继续创作镜像,直接开启看看可不可以挖矿hahasjd
192.168.0.3的机器
好了02可以挖一直觉得挖矿速度慢,原来是几台机器的配置不同导致的,吓死宝宝了

在 192.168.0.6机器上,重新开一个节点,注意该节点只有自己,没有接入其他的节点。进入控制
台后他就有ldb文件,我把ldb文件删了,是不影响他挖矿的,奇怪的是在chaindata目录也没有继续
生成ldb文件。我重新启动该节点,有新的ldb文件生成,但是区块高度为0 ,也不能挖矿了。是因为
初始块被删了,导致不行,重新init的话也是不对的,他会提示该目录下的创始块已经存在了

  1. geth --datadir ./data/04 init genesis.json


  2. geth  --identity "newEth"  --rpc --rpccorsdomain "*" --rpcapi "personal,db,eth,net,web3" --datadir ./data/04 --networkid 3434  --ipcdisable --port 33330 --rpcport 4449 console
复制代码







欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2