diff options
author | zelig <viktor.tron@gmail.com> | 2015-05-20 23:56:17 +0800 |
---|---|---|
committer | zelig <viktor.tron@gmail.com> | 2015-05-21 22:53:42 +0800 |
commit | bed80133e0573ebeefa201a15b20188198adf0ac (patch) | |
tree | a654c1c6c671a9599290a08de2b4db95385465a1 /cmd/geth/admin.go | |
parent | 90b672f1af50944e136bdd6e617fad90f59fe6fe (diff) | |
download | go-tangerine-bed80133e0573ebeefa201a15b20188198adf0ac.tar go-tangerine-bed80133e0573ebeefa201a15b20188198adf0ac.tar.gz go-tangerine-bed80133e0573ebeefa201a15b20188198adf0ac.tar.bz2 go-tangerine-bed80133e0573ebeefa201a15b20188198adf0ac.tar.lz go-tangerine-bed80133e0573ebeefa201a15b20188198adf0ac.tar.xz go-tangerine-bed80133e0573ebeefa201a15b20188198adf0ac.tar.zst go-tangerine-bed80133e0573ebeefa201a15b20188198adf0ac.zip |
automatic DAG pregeneration for smooth epoch transitions
- backend: AutoDAG bool flag passed from cli/eth.Config to ethereum, autoDAG loop started if true
- backend: autoDAG loop start/stop, remove previous DAG
- cli: AutoDAG bool flag, off by default, but automatically ON if mining
- admin jsre: add startAutoDAG stopAutoDAG and makeDAG in miner section
- switch on/off DAG autogeneration when miner started/stopped on console
Diffstat (limited to 'cmd/geth/admin.go')
-rw-r--r-- | cmd/geth/admin.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/cmd/geth/admin.go b/cmd/geth/admin.go index 523b7c406..4c8f110e4 100644 --- a/cmd/geth/admin.go +++ b/cmd/geth/admin.go @@ -8,6 +8,7 @@ import ( "strconv" "time" + "github.com/ethereum/ethash" "github.com/ethereum/go-ethereum/accounts" "github.com/ethereum/go-ethereum/cmd/utils" "github.com/ethereum/go-ethereum/common" @@ -73,6 +74,9 @@ func (js *jsre) adminBindings() { miner.Set("hashrate", js.hashrate) miner.Set("setExtra", js.setExtra) miner.Set("setGasPrice", js.setGasPrice) + miner.Set("startAutoDAG", js.startAutoDAG) + miner.Set("stopAutoDAG", js.stopAutoDAG) + miner.Set("makeDAG", js.makeDAG) admin.Set("debug", struct{}{}) t, _ = admin.Get("debug") @@ -278,6 +282,30 @@ func (js *jsre) hashrate(otto.FunctionCall) otto.Value { return js.re.ToVal(js.ethereum.Miner().HashRate()) } +func (js *jsre) makeDAG(call otto.FunctionCall) otto.Value { + blockNumber, err := call.Argument(1).ToInteger() + if err != nil { + fmt.Println(err) + return otto.FalseValue() + } + + err = ethash.MakeDAG(uint64(blockNumber), "") + if err != nil { + return otto.FalseValue() + } + return otto.TrueValue() +} + +func (js *jsre) startAutoDAG(otto.FunctionCall) otto.Value { + js.ethereum.StartAutoDAG() + return otto.TrueValue() +} + +func (js *jsre) stopAutoDAG(otto.FunctionCall) otto.Value { + js.ethereum.StopAutoDAG() + return otto.TrueValue() +} + func (js *jsre) backtrace(call otto.FunctionCall) otto.Value { tracestr, err := call.Argument(0).ToString() if err != nil { @@ -316,6 +344,9 @@ func (js *jsre) startMining(call otto.FunctionCall) otto.Value { threads = int64(js.ethereum.MinerThreads) } + // switch on DAG autogeneration when miner starts + js.ethereum.StartAutoDAG() + err = js.ethereum.StartMining(int(threads)) if err != nil { fmt.Println(err) @@ -327,6 +358,7 @@ func (js *jsre) startMining(call otto.FunctionCall) otto.Value { func (js *jsre) stopMining(call otto.FunctionCall) otto.Value { js.ethereum.StopMining() + js.ethereum.StopAutoDAG() return otto.TrueValue() } |