1)我使用以下命令设置了一个专用以太网
$geth --genesis <genesis json file path> --datadir <some path to an empty
folder> --networkid 123 --nodiscover --maxpeers 0 console2)创建账号
3)然后,使用miner.start()命令启动挖掘器。
过了一段时间,ethers被自动添加到我的帐户中,但我的私有网络中没有任何未决的事务。那么,我的矿工们从哪里得到醚类呢?
即使我没有在我的网络中实例化任何事务,一旦我启动了挖掘器,我可以看到一些事务被记录在日志中。
日志如下:
I0118 11:59:11.696523 9427 backend.go:584] Automatic pregeneration of ethash
DAG ON (ethash dir: /Users/minisha/.ethash)
I0118 11:59:11.696590 9427 backend.go:591] checking DAG (ethash dir:
/Users/minisha/.ethash)
I0118 11:59:11.696728 9427 miner.go:119] Starting mining operation (CPU=4
TOT=5)
true
> I0118 11:59:11.703907 9427 worker.go:570] commit new work on block 1 with 0
txs & 0 uncles. Took 7.109111ms
I0118 11:59:11.704083 9427 ethash.go:220] Generating DAG for epoch 0 (size
1073739904) (0000000000000000000000000000000000000000000000000000000000000000)
I0118 11:59:12.698679 9427 ethash.go:237] Done generating DAG for epoch 0, it
took 994.61107ms
I0118 11:59:15.163864 9427 worker.go:349]我的genesis代码如下所示:
{
“nonce”: “0xdeadbeefdeadbeef”,
“timestamp”: “0x0”,
“parentHash”:
“0x0000000000000000000000000000000000000000000000000000000000000000”,
“extraData”: “0x0”,
“gasLimit”: “0x8000000”,
“difficulty”: “0x400”,
“mixhash”:
“0x0000000000000000000000000000000000000000000000000000000000000000”,
“coinbase”: “0x3333333333333333333333333333333333333333”,
“alloc”: {
}
}由于我的网络是隔离的,并且只有一个节点(没有对等点),我对此行为感到非常困惑。任何真知灼见都将不胜感激。
发布于 2016-01-21 19:15:29
您的客户正在挖掘空块(不包含事务),并从挖掘的块中获得奖励,即每个块5个ETH。
如果你想在你的私有区块链中防止空块,你应该考虑使用客户端(C++实现)。
在geth客户端的情况下,您可以使用将修改客户端行为的JavaScript脚本。任何脚本都可以用js命令加载:geth js script.js。
var mining_threads = 1
function checkWork() {
if (eth.getBlock("pending").transactions.length > 0) {
if (eth.mining) return;
console.log("== Pending transactions! Mining...");
miner.start(mining_threads);
} else {
miner.stop(0); // This param means nothing
console.log("== No transactions! Mining stopped.");
}
}
eth.filter("latest", function(err, block) { checkWork(); });
eth.filter("pending", function(err, block) { checkWork(); });
checkWork();发布于 2017-03-29 18:46:20
您可以尝试EmbarkJS,它可以在专用网络上运行带有mineWhenNeeded选项的geth客户端。只有当新的事务进入时,它才会进行挖掘。
https://stackoverflow.com/questions/34881446
复制相似问题