diff --git a/bin/libbfa.js b/bin/libbfa.js index 6bab557a5bc15c557432463acb5c0dc1468c3726..9b21511d71acbddb823293ec8476fa2c7806d2ed 100644 --- a/bin/libbfa.js +++ b/bin/libbfa.js @@ -86,6 +86,20 @@ module.exports = class Libbfa params: 0 }] }); + w3.eth.extend({ + methods: [{ + name: 'minerstart', + call: 'miner_start', + params: 0 + }] + }); + w3.eth.extend({ + methods: [{ + name: 'minerstop', + call: 'miner_stop', + params: 0 + }] + }); if ( undefined != process.env.BFAACCOUNT ) { w3.eth.defaultAccount = this.account; } diff --git a/bin/maymine.sh b/bin/maymine.sh deleted file mode 100755 index ca5daa6d7a68bc00a5e1304dfdb3bda6c7c570bf..0000000000000000000000000000000000000000 --- a/bin/maymine.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# Robert Martin-Legene <robert@nic.ar> - -if [ -z "${BFAHOME}" ]; then echo "\$BFAHOME not set. Did you source bfa/bin/env ?" >&2; exit 1; fi -source ${BFAHOME}/bin/libbfa.sh || exit 1 - -res=$( geth_exec_file "${BFAHOME}/src/maymine.js" ) - -if [ "$res" = "true" ] -then - touch ${BFANODEDIR}/miner -else - rm -f ${BFANODEDIR}/miner -fi diff --git a/bin/mayseal.js b/bin/mayseal.js new file mode 100755 index 0000000000000000000000000000000000000000..0cee239a79a0990802f9dfc6ba83142b2e8dd98a --- /dev/null +++ b/bin/mayseal.js @@ -0,0 +1,66 @@ +#!/usr/bin/node +// vim:syntax:filetype=javascript:ai:sm +// vim:expandtab:backspace=indent,eol,start:softtabstop=4 + +"use strict" + +const Libbfa = require( process.env.BFAHOME + '/bin/libbfa.js'); + +function mayseal() +{ + var bfa = new Libbfa(); + var web3 = bfa.newweb3(); + var me = web3.eth.defaultAccount.toLowerCase(); + web3.eth.isMining().then( function(isMining){ + web3.eth.getSigners().then( function(x){ + var lcsealers = x.map( name => name.toLowerCase() ); + // console.log( "Miners are:\n\t" + lcsealers.join("\n\t") ); + var isSigner = (lcsealers.indexOf(me) > -1); + var sealerfile = bfa.nodedir + '/miner'; + var not = "not "; + if ( isSigner ) + not = ""; + console.log( "Account " + me + " is " + not + "allowed to seal." ); + if ( isSigner ) + { + if ( ! bfa.fs.existsSync( sealerfile ) ) + { + var fd = bfa.fs.openSync( sealerfile, 'a' ); + bfa.fs.close( fd ); + console.log( "Created 'sealer' file " + sealerfile ); + } + if ( ! isMining ) + { + web3.eth.minerstart(); + console.log( 'Started to seal.' ); + } + else + { + console.log( "You are already sealing. All is well." ); + } + } + else + { + if ( bfa.fs.existsSync( sealerfile ) ) + { + bfa.fs.unlinkSync( sealerfile ); + console.log( "Deleted 'sealer' file " + sealerfile ); + } + if ( isMining ) + { + web3.eth.minerstop(); + console.log( 'I was trying to seal, but am not authorized. Stopped trying.' ); + } + else + { + console.log( "I wasn't trying to seal anyway. All is well." ); + } + } + }); + },function(x){ + console.log(x); + process.exit(1); + }) +} + +mayseal(); diff --git a/src/maymine.js b/src/maymine.js deleted file mode 100644 index d1857d7c96b307fe03a15b498ada5ace521773df..0000000000000000000000000000000000000000 --- a/src/maymine.js +++ /dev/null @@ -1,10 +0,0 @@ -// vim:syntax:filetype=javascript:ai:sm -// vim:expandtab:backspace=indent,eol,start:softtabstop=4 - -var signer -signer = (clique.getSigners().indexOf(eth.accounts[0]) > -1) -if (signer) - miner.start() -else - miner.stop() -signer