停止在gehere ethereum的私人网络上开采

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了停止在gehere ethereum的私人网络上开采相关的知识,希望对你有一定的参考价值。

我使用下面的客户端创建了一个geth客户端(我已经创建了两个帐户:

geth --datadir datadir --networkid 123 --rpc --rpcaddr="localhost" --rpccorsdomain="*" --unlock <my account> --minerthreads="1" --maxpeers=0 --mine console

我打开了以太坊钱包并从那里部署了智能合约。在我的geth控制台上收到transactionId和合同地址。

然后我启动了我的Dapp并创建了合同的实例,我正在调用通过web3 API调用契约函数的契约。调用契约函数但是除非我开始挖掘,否则事务不会在块中提交。因此,我开始miner.start()这开始挖掘无数块。

我的问题是,如果我拥有自己的私人网络并且只提交了一笔交易,那么这些街区会从哪里来。这会添加太多块,我的块大小不必要地增加。如何只挖掘我提交的交易?

答案

将以下代码保存为startmine.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();

并使用以下选项启动geth Private网络

geth .......... . . . . . . .   --rpcapi="web3,eth,miner" --preload "startmine.js" console

当您有任何挂起的事务时,这将自动运行miner.start()。

以上是关于停止在gehere ethereum的私人网络上开采的主要内容,如果未能解决你的问题,请参考以下文章

vim 私人快捷键备忘录

使用Java+Web3j和Ethereum网络交互:获取Ethereum信息

ethereum入门

使用Azure Ethereum PoA解决方案模板在以太坊网络上设置初始以太网

Ubuntu下配置和编译cpp-ethereum客户端

权威证明问题中的 Go-ethereum 私有网络:调用合约方法但没有响应