首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以太专网挖掘

以太专网挖掘
EN

Stack Overflow用户
提问于 2016-01-20 00:04:39
回答 2查看 1.7K关注 0票数 1

1)我使用以下命令设置了一个专用以太网

代码语言:javascript
复制
$geth --genesis <genesis json file path> --datadir <some path to an empty  
folder> --networkid 123 --nodiscover --maxpeers 0 console

2)创建账号

3)然后,使用miner.start()命令启动挖掘器。

过了一段时间,ethers被自动添加到我的帐户中,但我的私有网络中没有任何未决的事务。那么,我的矿工们从哪里得到醚类呢?

即使我没有在我的网络中实例化任何事务,一旦我启动了挖掘器,我可以看到一些事务被记录在日志中。

日志如下:

代码语言:javascript
复制
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代码如下所示:

代码语言:javascript
复制
{
“nonce”: “0xdeadbeefdeadbeef”,
“timestamp”: “0x0”,
“parentHash”: 
“0x0000000000000000000000000000000000000000000000000000000000000000”,
“extraData”: “0x0”,
“gasLimit”: “0x8000000”,
“difficulty”: “0x400”,
“mixhash”: 
“0x0000000000000000000000000000000000000000000000000000000000000000”,
“coinbase”: “0x3333333333333333333333333333333333333333”,
“alloc”: {
}
}

由于我的网络是隔离的,并且只有一个节点(没有对等点),我对此行为感到非常困惑。任何真知灼见都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2016-01-21 19:15:29

您的客户正在挖掘空块(不包含事务),并从挖掘的块中获得奖励,即每个块5个ETH。

如果你想在你的私有区块链中防止空块,你应该考虑使用客户端(C++实现)。

geth客户端的情况下,您可以使用将修改客户端行为的JavaScript脚本。任何脚本都可以用js命令加载:geth js script.js

代码语言:javascript
复制
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();
票数 2
EN

Stack Overflow用户

发布于 2017-03-29 18:46:20

您可以尝试EmbarkJS,它可以在专用网络上运行带有mineWhenNeeded选项的geth客户端。只有当新的事务进入时,它才会进行挖掘。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34881446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档