From d186bf0dfece955feb797dda2b53cae8c89b786c Mon Sep 17 00:00:00 2001 From: Taylor Gerring Date: Sun, 22 Mar 2015 14:25:33 +0100 Subject: [PATCH 1/4] Fix Mist types build errors --- cmd/mist/bindings.go | 2 +- cmd/mist/gui.go | 11 ++++++----- cmd/mist/html_container.go | 4 ++-- cmd/mist/qml_container.go | 3 +-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cmd/mist/bindings.go b/cmd/mist/bindings.go index 5d08e7dd76..5d45d927ea 100644 --- a/cmd/mist/bindings.go +++ b/cmd/mist/bindings.go @@ -67,7 +67,7 @@ func (self *Gui) DumpState(hash, path string) { i, _ := strconv.Atoi(hash[1:]) block = self.eth.ChainManager().GetBlockByNumber(uint64(i)) } else { - block = self.eth.ChainManager().GetBlock(common.Hex2Bytes(hash)) + block = self.eth.ChainManager().GetBlock(common.HexToHash(hash)) } if block == nil { diff --git a/cmd/mist/gui.go b/cmd/mist/gui.go index 19ad09454c..08f02f833a 100644 --- a/cmd/mist/gui.go +++ b/cmd/mist/gui.go @@ -31,11 +31,11 @@ import ( "sort" "time" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/eth" "github.com/ethereum/go-ethereum/ethdb" - "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/ui/qt/qwhisper" "github.com/ethereum/go-ethereum/xeth" @@ -230,7 +230,8 @@ func (self *Gui) loadMergedMiningOptions() { func (gui *Gui) insertTransaction(window string, tx *types.Transaction) { var inout string - if gui.eth.AccountManager().HasAccount(tx.From()) { + from, _ := tx.From() + if gui.eth.AccountManager().HasAccount(common.Hex2Bytes(from.Hex())) { inout = "send" } else { inout = "recv" @@ -238,8 +239,8 @@ func (gui *Gui) insertTransaction(window string, tx *types.Transaction) { var ( ptx = xeth.NewTx(tx) - send = common.Bytes2Hex(tx.From()) - rec = common.Bytes2Hex(tx.To()) + send = from.Hex() + rec = tx.To().Hex() ) ptx.Sender = send ptx.Address = rec @@ -263,7 +264,7 @@ func (gui *Gui) readPreviousTransactions() { } func (gui *Gui) processBlock(block *types.Block, initial bool) { - name := common.Bytes2Hex(block.Coinbase()) + name := block.Coinbase().Hex() b := xeth.NewBlock(block) b.Name = name diff --git a/cmd/mist/html_container.go b/cmd/mist/html_container.go index 195e81073a..7c948885aa 100644 --- a/cmd/mist/html_container.go +++ b/cmd/mist/html_container.go @@ -29,8 +29,8 @@ import ( "path" "path/filepath" - "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/xeth" "github.com/howeyc/fsnotify" "github.com/obscuren/qml" @@ -139,7 +139,7 @@ func (app *HtmlApplication) Window() *qml.Window { } func (app *HtmlApplication) NewBlock(block *types.Block) { - b := &xeth.Block{Number: int(block.NumberU64()), Hash: common.Bytes2Hex(block.Hash())} + b := &xeth.Block{Number: int(block.NumberU64()), Hash: block.Hash().Hex()} app.webView.Call("onNewBlockCb", b) } diff --git a/cmd/mist/qml_container.go b/cmd/mist/qml_container.go index 778ef0e40e..f2cabb474c 100644 --- a/cmd/mist/qml_container.go +++ b/cmd/mist/qml_container.go @@ -25,7 +25,6 @@ import ( "runtime" "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/xeth" "github.com/obscuren/qml" ) @@ -68,7 +67,7 @@ func (app *QmlApplication) NewWatcher(quitChan chan bool) { // Events func (app *QmlApplication) NewBlock(block *types.Block) { - pblock := &xeth.Block{Number: int(block.NumberU64()), Hash: common.Bytes2Hex(block.Hash())} + pblock := &xeth.Block{Number: int(block.NumberU64()), Hash: block.Hash().Hex()} app.win.Call("onNewBlockCb", pblock) } From 01c0ba22ae597a43be4e06e590175cf6c4dacde1 Mon Sep 17 00:00:00 2001 From: Taylor Gerring Date: Mon, 23 Mar 2015 11:09:48 +0100 Subject: [PATCH 2/4] Add DAG seed hash and difficulty to GetWork --- xeth/miner_agent.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/xeth/miner_agent.go b/xeth/miner_agent.go index 181ab950aa..b2e877ed29 100644 --- a/xeth/miner_agent.go +++ b/xeth/miner_agent.go @@ -1,6 +1,7 @@ package xeth import ( + "github.com/ethereum/ethash" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/miner" @@ -55,14 +56,14 @@ out: } func (a *Agent) GetWork() [3]string { - // TODO return HashNoNonce, DAGSeedHash, Difficulty var res [3]string - // XXX Wait here untill work != nil ?. + // XXX Wait here until work != nil ? if a.work != nil { - res[0] = a.work.HashNoNonce().Hex() // Header Hash No Nonce - res[1] = common.Hash{}.Hex() // DAG Seed - res[2] = common.Hash{}.Hex() // Difficulty + res[0] = a.work.HashNoNonce().Hex() + seedHash, _ := ethash.GetSeedHash(a.currentWork.NumberU64()) + res[1] = common.Bytes2Hex(seedHash) + res[2] = common.Bytes2Hex(a.work.Difficulty().Bytes()) } return res From 439481d177aa6d19ef0254e4e4e0d5a39a8ff09a Mon Sep 17 00:00:00 2001 From: Taylor Gerring Date: Mon, 23 Mar 2015 11:14:42 +0100 Subject: [PATCH 3/4] Rename Agent to RemoteAgent --- xeth/miner_agent.go | 22 +++++++++++----------- xeth/xeth.go | 6 +++--- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/xeth/miner_agent.go b/xeth/miner_agent.go index b2e877ed29..b00439ed44 100644 --- a/xeth/miner_agent.go +++ b/xeth/miner_agent.go @@ -7,7 +7,7 @@ import ( "github.com/ethereum/go-ethereum/miner" ) -type Agent struct { +type RemoteAgent struct { work *types.Block currentWork *types.Block @@ -16,34 +16,34 @@ type Agent struct { returnCh chan<- miner.Work } -func NewAgent() *Agent { - agent := &Agent{} +func NewRemoteAgent() *RemoteAgent { + agent := &RemoteAgent{} go agent.run() return agent } -func (a *Agent) Work() chan<- *types.Block { +func (a *RemoteAgent) Work() chan<- *types.Block { return a.workCh } -func (a *Agent) SetWorkCh(returnCh chan<- miner.Work) { +func (a *RemoteAgent) SetWorkCh(returnCh chan<- miner.Work) { a.returnCh = returnCh } -func (a *Agent) Start() { +func (a *RemoteAgent) Start() { a.quit = make(chan struct{}) a.workCh = make(chan *types.Block, 1) } -func (a *Agent) Stop() { +func (a *RemoteAgent) Stop() { close(a.quit) close(a.workCh) } -func (a *Agent) GetHashRate() int64 { return 0 } +func (a *RemoteAgent) GetHashRate() int64 { return 0 } -func (a *Agent) run() { +func (a *RemoteAgent) run() { out: for { select { @@ -55,7 +55,7 @@ out: } } -func (a *Agent) GetWork() [3]string { +func (a *RemoteAgent) GetWork() [3]string { var res [3]string // XXX Wait here until work != nil ? @@ -69,7 +69,7 @@ func (a *Agent) GetWork() [3]string { return res } -func (a *Agent) SubmitWork(nonce uint64, mixDigest, seedHash common.Hash) bool { +func (a *RemoteAgent) SubmitWork(nonce uint64, mixDigest, seedHash common.Hash) bool { // Return true or false, but does not indicate if the PoW was correct // Make sure the external miner was working on the right hash diff --git a/xeth/xeth.go b/xeth/xeth.go index fba61230f3..5faeeb7666 100644 --- a/xeth/xeth.go +++ b/xeth/xeth.go @@ -102,7 +102,7 @@ type XEth struct { // register map[string][]*interface{} // TODO improve return type // Miner agent - agent *Agent + agent *RemoteAgent } // New creates an XEth that uses the given frontend. @@ -120,7 +120,7 @@ func New(eth Backend, frontend Frontend) *XEth { frontend: frontend, logs: make(map[int]*logFilter), messages: make(map[int]*whisperFilter), - agent: NewAgent(), + agent: NewRemoteAgent(), } eth.Miner().Register(xeth.agent) @@ -170,7 +170,7 @@ func (self *XEth) stop() { func (self *XEth) DefaultGas() *big.Int { return defaultGas } func (self *XEth) DefaultGasPrice() *big.Int { return defaultGasPrice } -func (self *XEth) RemoteMining() *Agent { return self.agent } +func (self *XEth) RemoteMining() *RemoteAgent { return self.agent } func (self *XEth) AtStateNum(num int64) *XEth { chain := self.Backend().ChainManager() From 91a2275ad359b2f72565b926dac7dcd77b14a241 Mon Sep 17 00:00:00 2001 From: Taylor Gerring Date: Mon, 23 Mar 2015 11:21:41 +0100 Subject: [PATCH 4/4] Move RemoteAgent to miner pkg --- xeth/miner_agent.go => miner/remote_agent.go | 9 ++++----- xeth/xeth.go | 6 +++--- 2 files changed, 7 insertions(+), 8 deletions(-) rename xeth/miner_agent.go => miner/remote_agent.go (85%) diff --git a/xeth/miner_agent.go b/miner/remote_agent.go similarity index 85% rename from xeth/miner_agent.go rename to miner/remote_agent.go index b00439ed44..8ea164f347 100644 --- a/xeth/miner_agent.go +++ b/miner/remote_agent.go @@ -1,10 +1,9 @@ -package xeth +package miner import ( "github.com/ethereum/ethash" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/miner" ) type RemoteAgent struct { @@ -13,7 +12,7 @@ type RemoteAgent struct { quit chan struct{} workCh chan *types.Block - returnCh chan<- miner.Work + returnCh chan<- Work } func NewRemoteAgent() *RemoteAgent { @@ -27,7 +26,7 @@ func (a *RemoteAgent) Work() chan<- *types.Block { return a.workCh } -func (a *RemoteAgent) SetWorkCh(returnCh chan<- miner.Work) { +func (a *RemoteAgent) SetWorkCh(returnCh chan<- Work) { a.returnCh = returnCh } @@ -74,7 +73,7 @@ func (a *RemoteAgent) SubmitWork(nonce uint64, mixDigest, seedHash common.Hash) // Make sure the external miner was working on the right hash if a.currentWork != nil && a.work != nil && a.currentWork.Hash() == a.work.Hash() { - a.returnCh <- miner.Work{a.currentWork.Number().Uint64(), nonce, mixDigest.Bytes(), seedHash.Bytes()} + a.returnCh <- Work{a.currentWork.Number().Uint64(), nonce, mixDigest.Bytes(), seedHash.Bytes()} return true } diff --git a/xeth/xeth.go b/xeth/xeth.go index 5faeeb7666..23e5239801 100644 --- a/xeth/xeth.go +++ b/xeth/xeth.go @@ -102,7 +102,7 @@ type XEth struct { // register map[string][]*interface{} // TODO improve return type // Miner agent - agent *RemoteAgent + agent *miner.RemoteAgent } // New creates an XEth that uses the given frontend. @@ -120,7 +120,7 @@ func New(eth Backend, frontend Frontend) *XEth { frontend: frontend, logs: make(map[int]*logFilter), messages: make(map[int]*whisperFilter), - agent: NewRemoteAgent(), + agent: miner.NewRemoteAgent(), } eth.Miner().Register(xeth.agent) @@ -170,7 +170,7 @@ func (self *XEth) stop() { func (self *XEth) DefaultGas() *big.Int { return defaultGas } func (self *XEth) DefaultGasPrice() *big.Int { return defaultGasPrice } -func (self *XEth) RemoteMining() *RemoteAgent { return self.agent } +func (self *XEth) RemoteMining() *miner.RemoteAgent { return self.agent } func (self *XEth) AtStateNum(num int64) *XEth { chain := self.Backend().ChainManager()