当前位置: 首页 > 知识库问答 >
问题:

以太坊私有网络挖掘

琴光亮
2023-03-14

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

$geth --genesis <genesis json file path> --datadir <some path to an empty  
folder> --networkid 123 --nodiscover --maxpeers 0 console

2) 创建了一个帐户

3)然后,使用miner.start()命令启动矿工。

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

尽管我没有在我的网络中实例化任何事务,但一旦启动miner,我就可以看到日志中记录了一些事务。

日志如下:

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]

我的创世区块代码如下:

{
“nonce”: “0xdeadbeefdeadbeef”,
“timestamp”: “0x0”,
“parentHash”: 
“0x0000000000000000000000000000000000000000000000000000000000000000”,
“extraData”: “0x0”,
“gasLimit”: “0x8000000”,
“difficulty”: “0x400”,
“mixhash”: 
“0x0000000000000000000000000000000000000000000000000000000000000000”,
“coinbase”: “0x3333333333333333333333333333333333333333”,
“alloc”: {
}
}

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

共有2个答案

伊俊能
2023-03-14

您可以尝试在专用网络上使用mineweed选项运行geth客户端。只有当新的交易到来时,它才会被挖掘。

钦良弼
2023-03-14

您的客户正在挖掘空区块(不包含任何交易),并获得挖掘区块的奖励,即每个区块5 ETH。

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

在geth客户端的情况下,您可以使用JavaScript脚本来修改客户端的行为。任何脚本都可以加载js命令:geth jsscript.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();
 类似资料:
  • 我已经建立了一个私有区块链,其中2个节点1是miner节点。然而,我们看到许多空矿正在被开采。我尝试了在这个链接上建议的解决方案https://ethereum.stackexchange.com/questions/3151/how-to-make-miner-to-mine-only-when-there-are-pending-transactions.但空矿还是被开采出来了。有人能帮忙吗?

  • 我使用以太坊Geth(v.1.6.7)在Ubuntu(16.04.3 LTS)虚拟机(在虚拟盒子上)。我已经设置了一个私有的以太坊区块链与2个节点(在2个不同的终端)。 现在我从每个节点挖掘了大约4个小时,但是似乎没有任何新的块形成。(BlockNumber在大约4小时后仍然在0上)。 即使哈希率是定期变化和eth.mining变量返回true。 我做了我的研究,一切似乎都按要求设置。对于创世块,

  • 我已经使用NodeJS创建了简单的区块链应用程序。区块链数据文件存储在本地文件系统中。该区块链不涉及采矿区块,也不涉及难度级别。 请建议,如果我可以在私有以太坊/hyperledge上托管此应用程序,以及为此需要做哪些更改?下面是我用来创建块的代码。

  • 以太坊(Ethereum)是一个支持智能合约的区块链平台,它与比特币最大的不同是,以太坊通过一个虚拟机(EVM)可以运行智能合约。 以太坊是Vitalik Buterin(维塔利克·布特林,人称V神)在2013年提出的概念,Vitalik最早参与了比特币社区的开发,并希望比特币把功能受限的脚本扩展成图灵完全的编程环境,但没有得到比特币开发社区的认同,于是他决定另起炉灶,打造一个新的区块链平台,目标

  • 上周,Metamask引入了一个名为“wallet\u AddesthumChain”的新功能,允许用户在收到提示时自动向其钱包添加新的Etheruem RPC。此功能还允许用户更改所连接的网络,例如,如果我已经将Binance智能链连接到metamask,则调用wallet\u AddesthumChain将活动网络更改为BSC。但是,在以太坊链中尝试此操作时,会出现一个错误,即您无法添加mai

  • 在主机与虚拟机之间创建一个私有网络,或者叫专有网络,通过这个网络主机与虚拟机之间可以相互连接。也就是你可以在主机上通过虚拟机在这个私有网络上的 IP 地址访问到虚拟机。在你的主机应该还存在另外一个网络,一般这个网络就是你的主机用来上网的路由器创建的。在这个网络上可能存在其它的上网设备,比如其它的电脑,你的手机,平板等等。这些上网设备不能访问在你主机上创建的私有网络上的虚拟机。 私有网络配置 打开虚