只要是测试如果已经生成的链我们对他进行篡改以后,是否会对后续的链的生成产生影响
首先我们新建立一个节点、连接到我们的私链
经过测试,我们开始连接的第三个节点在data/02目录下的节点貌似已经连接不上私链了,测试他连接的节点时有一些莫名其妙的信息出现
> admin.peers
[{
caps: ["eth/63"],
id: "3d8473147ee9fb11f695a636abb1718d04933218928e36c0f42d67f3211774e479f4cc8adeeb8684d1dfd87893ec5d88aac3debfd134585fc3973e11e912a93c",
name: "Geth/v1.6.6-stable-10a45cb5/windows-386/go1.8.3",
network: {
localAddress: "192.168.0.4:34148",
remoteAddress: "72.198.108.244:30303"
},
protocols: {
eth: "handshake"
}
}, {
caps: ["eth/62", "eth/63", "par/1", "par/2"],
id: "8aa57049d9469235914502e327b30df641a319ad26af36819d19f52d790a587989777807c46744dbcb67f20ae0dc4fe666178ee44d90be9fbccdf8ba501f9fb8",
name: "Parity/v1.6.7-beta-e128418-20170518/x86_64-linux-gnu/rustc1.17.0",
network: {
localAddress: "192.168.0.4:58262",
remoteAddress: "188.166.74.239:30303"
},
protocols: {
eth: "handshake"
}
}, {
caps: ["eth/62", "eth/63"],
id: "de4b3d3627e6c62aa6c1d591834510e6303d18a9ffd0b4f988a00cf32fd32790c187f82e015dc738de0cabde6a12d51f2d06b6f491e8ca0bf9d468527f171649",
name: "Geth/v1.6.5-stable-cf87713d/linux-amd64/go1.8.3",
network: {
localAddress: "192.168.0.4:42754",
remoteAddress: "158.69.90.185:30303"
},
protocols: {
eth: "handshake"
}
}]
所以我们在重新连接一个新的节点
初始化创始块
root@i-5tthrr8u:/home/ubuntu/private-geth# geth --datadir ./data/04 init ./genesis.json
进入geth控制台
geth --datadir ./data/04 --networkid 314590 --ipcdisable --port 611 --rpcport 8000 --bootnodes "enode://96f7a95a8c5e7a1f911142d87ce53ae882568be0435016e4803a6d410a9ecc7a69322cee8efbe8499ec7c737c377793182cab8869a076389c6b47626df00450b@192.168.0.4:61910" console
进去以后我们查看区块高度为0,但马上他就会同步更新区块的信息
> eth.blockNumber
0
> INFO [07-06|09:56:27] Block synchronisation started
INFO [07-06|09:56:27] Imported new state entries count=1 flushed=0 elapsed=108.966碌s processed=1 pending=4 retry=0 duplicate=0 unexpected=0
INFO [07-06|09:56:27] Imported new state entries count=3 flushed=4 elapsed=104.056碌s processed=4 pending=0 retry=0 duplicate=0 unexpected=0
INFO [07-06|09:56:29] Imported new block headers count=62 elapsed=1.959s number=62 hash=11a7e5鈥7e1f8 ignored=0
INFO [07-06|09:56:29] Imported new chain segment blocks=6 txs=0 mgas=0.000 elapsed=1.804ms mgasps=0.000 number=6 hash=391702鈥132d5
INFO [07-06|09:56:29] Imported new chain segment blocks=56 txs=3 mgas=0.063 elapsed=19.885ms mgasps=3.168 number=62 hash=11a7e5鈥7e1f8
INFO [07-06|09:56:29] Fast sync complete, auto disabling
>
> eth.blockNumber
62
接着我们修改该目录下的已经生成的区块信息
root@i-5tthrr8u:/home/ubuntu/private-geth/data/04/geth/chaindata# ll
total 252
drwxr-xr-x 2 root root 4096 Jul 6 09:55 ./
drwxr-xr-x 6 root root 4096 Jul 6 09:56 ../
-rw-r--r-- 1 root root 552 Jul 6 09:55 000002.ldb
-rw-r--r-- 1 root root 232585 Jul 6 09:56 000003.log
-rw-r--r-- 1 root root 16 Jul 6 09:55 CURRENT
-rw-r--r-- 1 root root 0 Jul 6 09:53 LOCK
-rw-r--r-- 1 root root 968 Jul 6 09:55 LOG
-rw-r--r-- 1 root root 235 Jul 6 09:55 MANIFEST-000004
root@i-5tthrr8u:/home/ubuntu/private-geth/data/04/geth/chaindata# vi 000002.ldb
脛^H聽^@)^HH聽氓<80>脝v<9a>脙脻<80><89>K*%ad搂kyh9脪毛^?y<9e>枚鹿<85>^N楼猫.^A^C^@^@^@.^B^@0^Q LastBlock^A^G ^Y~D^@(^D^N Header^A^H<96>1^@^L^@1^Cb *^@^@<82>]^@^D^A^B *X脛^H聽^@)^HH聽氓<80>脝v<9a>脙脻<80><89>K*%ad搂kyh9脪毛^?y<9e>枚鹿<85>^N楼猫.^A^C^@^@^@.^B^@0^Q LastBlock^A^G ^Y~D^@(^D^N Header^A^H<96>1^@^L^@1^Cb *^@^@<82>]^@^D^A^B *XDereum-config-~<9c>^@^D^A ?\{"chainId":15,"homestead^E茅P":0,"eip150Hash":"0x0煤^A^@^@"^MR^@5:b^@^@8^Q^P^P}^@^R h <9d>^P^@^@n^A^
L^@<88>聽^]脤M猫脼脟]z芦<85>碌g露脤脭^Z脫^RE^[<94><8a>t^S冒隆B媒@脭<93>G<94>^@J=^@<80>聽V猫^_^W^[脤U娄每<83>E忙<92>脌酶n[H脿^[<99>l颅脌^Ab/碌茫c麓!卯!^@ !^D鹿^AJx^@镁^A^@镁每每每每<80><80><80><82>脢^A^@<88>-^]^TB) ^Dt^A->^AC^L^@1^Ar^M^\<82>_^B@^A^E^@^@^@^@^@^@脌^@^@^@^@^A^@^@^@^AH炉^C^Gp^Fl <87>^C脣<92>麓<8a>脫脮^F^@^@^@^@^M^@^@^@^K^@掳聽^]路/x^eldb.BuiltinBloomF^E^[(<8e>^C^V^@^@^@^@^A^@^@^@^A#g4+^W^T^@ ^Cs^A每 ^A(^@<89>^C^@^@^@^@^A^@^@^@^A貌脟{^T漏^C/脻^C^V^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^@^@W没<80><8b>$uG脹
接着我们继续挖矿,发生交易,查看区块和交易的信息一切都是正常的。
personal.unlockAccount(eth.accounts[0])
> eth.sendTransaction({from: "0x28b769b3b9109afd1e9e50a9312c5a3bfae8a699", to: "0xb4e2e2514eae3684157bf34a0cee2c07c431cf92", gas:31000, 'gasPrice': web3.toWei(300, 'gwei'), "value": "1"})
INFO [07-06|10:02:50] Submitted transaction fullhash=0xe5bc604a9720b451207b690cc0da9858c4df2ba874f4516e83139992d26b04e4 recipient=0xb4e2e2514eae3684157bf34a0cee2c07c431cf92
"0xe5bc604a9720b451207b690cc0da9858c4df2ba874f4516e83139992d26b04e4"
> txpool.status
{
pending: 1,
queued: 0
}
> miner.start()
INFO [07-06|10:03:18] Updated mining threads threads=0
INFO [07-06|10:03:18] Transaction pool price threshold updated price=18000000000
nullINFO [07-06|10:03:18] Starting mining operation
INFO [07-06|10:03:18] Commit new mining work number=69 txs=1 uncles=0 elapsed=632.178碌s
> INFO [07-06|10:03:24] Successfully sealed new block number=69 hash=ebf2fc鈥d4fab
INFO [07-06|10:03:24] 馃敆 block reached canonical chain number=64 hash=462502鈥bae73
INFO [07-06|10:03:24] 馃敤 mined potential block number=69 hash=ebf2fc鈥d4fab
INFO [07-06|10:03:24] Commit new mining work number=70 txs=0 uncles=0 elapsed=3.961ms
> miner.stop()
true
> txpool.status
{
pending: 0,
queued: 0
}
> eth.getBlock(68)
{
difficulty: 202629,
extraData: "0xd783010606846765746887676f312e382e31856c696e7578",
gasLimit: 4018888180,
gasUsed: 0,
hash: "0x7cc550bdd21a01c816ac0eac6c5efa6ed4e6b23fea8db03ae84bd287a902ef54",
logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
miner: "0x28b769b3b9109afd1e9e50a9312c5a3bfae8a699",
mixHash: "0x3c156d47f33da7b2d2fe1bf3378c56b2c0f794e6d33df88d474cff51843a1025",
nonce: "0x5fec81068a7a96e9",
number: 68,
parentHash: "0xd977b64e2954293d6d59c0ec7f45c43979a56053791d5b5808245fa8f5f0c54a",
receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
size: 536,
stateRoot: "0xd0341d35ae2bbef5963dfdce8bc878b5b97e88c734560255842be448eed7ab14",
timestamp: 1499306361,
totalDifficulty: 15040450,
transactions: [],
transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
uncles: []
}
把该节点的ldb都删了
root@i-5tthrr8u:/home/ubuntu/private-geth/data/04/geth/chaindata# rm 000002.ldb
root@i-5tthrr8u:/home/ubuntu/private-geth/data/04/geth/chaindata# ll
total 272
drwxr-xr-x 2 root root 4096 Jul 6 11:45 ./
drwxr-xr-x 6 root root 4096 Jul 6 09:56 ../
-rw-r--r-- 1 root root 254479 Jul 6 10:03 000003.log
-rw-r--r-- 1 root root 16 Jul 6 09:55 CURRENT
-rw-r--r-- 1 root root 0 Jul 6 09:53 LOCK
-rw-r--r-- 1 root root 968 Jul 6 09:55 LOG
-rw-r--r-- 1 root root 235 Jul 6 09:55 MANIFEST-000004
接下来我们启动节点,失败了,出乎意料。之前了解到的是分布式存储不存在单节点故障,所以应该是不影响其他节点的啊。因为我们所有的节点是在同一台机器的所以应该再一次测试在不同的主机节点的信息。
root@i-5tthrr8u:/home/ubuntu/private-geth# geth --datadir ./data/00 --networkid 314590 --ipcdisable --port 61910 --rpcport 8200 console
INFO [07-06|11:52:06] Starting peer-to-peer node instance=Geth/v1.6.6-stable-10a45cb5/linux-amd64/go1.8.1
INFO [07-06|11:52:06] Allocated cache and file handles database=/home/ubuntu/private-geth/data/00/geth/chaindata cache=128 handles=1024
Fatal: Error starting protocol stack: resource temporarily unavailable
接着我把整个节点都删除了又可以了
root@i-5tthrr8u:/home/ubuntu# cd private-geth/
root@i-5tthrr8u:/home/ubuntu/private-geth# geth --datadir ./data/00 --networkid 314590 --ipcdisable --port 61910 --rpcport 8200 console
INFO [07-06|13:43:44] Starting peer-to-peer node instance=Geth/v1.6.6-stable-10a45cb5/linux-amd64/go1.8.1
INFO [07-06|13:43:44] Allocated cache and file handles database=/home/ubuntu/private-geth/data/00/geth/chaindata cache=128 handles=1024
INFO [07-06|13:43:44] Initialised chain configuration config="{ChainID: 15 Homestead: 0 DAO: DAOSupport: false EIP150: EIP155: 0 EIP158: 0 Metropolis: Engine: unknown}"
INFO [07-06|13:43:44] Disk storage enabled for ethash caches dir=/home/ubuntu/private-geth/data/00/geth/ethash count=3
INFO [07-06|13:43:44] Disk storage enabled for ethash DAGs dir=/root/.ethash count=2
INFO [07-06|13:43:44] Initialising Ethereum protocol versions="[63 62]" network=314590
INFO [07-06|13:43:44] Loaded most recent local header number=69 hash=ebf2fc鈥d4fab td=15240923
INFO [07-06|13:43:44] Loaded most recent local full block number=69 hash=ebf2fc鈥d4fab td=15240923
INFO [07-06|13:43:44] Loaded most recent local fast block number=69 hash=ebf2fc鈥d4fab td=15240923
WARN [07-06|13:43:44] Blockchain not empty, fast sync disabled
INFO [07-06|13:43:44] Starting P2P networking
INFO [07-06|13:43:47] UDP listener up self=enode://96f7a95a8c5e7a1f911142d87ce53ae882568be0435016e4803a6d410a9ecc7a69322cee8efbe8499ec7c737c377793182cab8869a076389c6b47626df00450b@[::]:61910
INFO [07-06|13:43:47] RLPx listener up self=enode://96f7a95a8c5e7a1f911142d87ce53ae882568be0435016e4803a6d410a9ecc7a69322cee8efbe8499ec7c737c377793182cab8869a076389c6b47626df00450b@[::]:61910
Welcome to the Geth JavaScript console!
instance: Geth/v1.6.6-stable-10a45cb5/linux-amd64/go1.8.1
coinbase: 0x28b769b3b9109afd1e9e50a9312c5a3bfae8a699
at block: 69 (Thu, 06 Jul 2017 10:03:18 CST)
datadir: /home/ubuntu/private-geth/data/00
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
> eth.blockNumber
69