【问题标题】:Stop mining on private net on geth ethrereum停止在 geth ethereum 上的私人网络上挖矿
【发布时间】:2017-04-08 09:37:14
【问题描述】:

我已经使用以下客户端启动了一个 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() 这开始挖掘大量区块。

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

【问题讨论】:

    标签: blockchain ethereum mining


    【解决方案1】:

    将以下代码保存为 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 专用网络

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

    当您有任何待处理的交易时,这将自动运行 miner.start()。

    【讨论】:

    • 我认为这行不通。即使回调正在发生并且 else 块正在执行(停止矿工),空块仍然被挖掘
    • @redeemed 在空块中不会有任何待处理的交易,因此挖矿将停止
    • 挖矿将停止,但空块将在后台排队,除非矿工启动,否则不会触发回调。因此,当我启动矿工以手动进行回调时,先前排队的空块将立即被开采
    • @redeem 上面的代码我已经为我的私人网络测试过。如果不使用此代码,我的块数将达到 1 lak 以上,现在低于 10k。我已经测试了几天。请不要争论。
    • 看起来有人回答了here
    【解决方案2】:

    如果您使用 POA,并使用更新版本的 geth(至少 1.9.25),将 period 设置为 0 将停止挖掘并使节点在挖掘新块之前等待交易.这非常适合专用网络或实验环境。

    genesis.json:

    ....
    "clique": {
      "period": 0,
      "epoch": 30000
    },
    ....
    

    Answered previouslyM Gopal

    【讨论】:

    • 我的专用网络也停止了挖矿。而且我似乎弄清楚原因是“专用网络至少应该有两个节点”。添加第二个节点后,挖矿开始,两个节点都以循环顺序挖矿。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    相关资源
    最近更新 更多