Implemented new miner w/ ui interface for merged mining. Closes #177
* Miner has been rewritten * Added new miner pane * Added option for local txs * Added option to read from MergeMining contract and list them for merged mining
This commit is contained in:
		@@ -23,6 +23,8 @@ type ChainManager struct {
 | 
			
		||||
 | 
			
		||||
	CurrentBlock  *Block
 | 
			
		||||
	LastBlockHash []byte
 | 
			
		||||
 | 
			
		||||
	workingChain *BlockChain
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewChainManager(ethereum EthManager) *ChainManager {
 | 
			
		||||
@@ -225,9 +227,18 @@ func (self *ChainManager) CalcTotalDiff(block *Block) (*big.Int, error) {
 | 
			
		||||
	return td, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (bc *ChainManager) GetBlock(hash []byte) *Block {
 | 
			
		||||
func (self *ChainManager) GetBlock(hash []byte) *Block {
 | 
			
		||||
	data, _ := ethutil.Config.Db.Get(hash)
 | 
			
		||||
	if len(data) == 0 {
 | 
			
		||||
		if self.workingChain != nil {
 | 
			
		||||
			// Check the temp chain
 | 
			
		||||
			for e := self.workingChain.Front(); e != nil; e = e.Next() {
 | 
			
		||||
				if bytes.Compare(e.Value.(*link).block.Hash(), hash) == 0 {
 | 
			
		||||
					return e.Value.(*link).block
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -310,6 +321,7 @@ func NewChain(blocks Blocks) *BlockChain {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// This function assumes you've done your checking. No checking is done at this stage anymore
 | 
			
		||||
/*
 | 
			
		||||
func (self *ChainManager) InsertChain(chain *BlockChain) {
 | 
			
		||||
	for e := chain.Front(); e != nil; e = e.Next() {
 | 
			
		||||
		link := e.Value.(*link)
 | 
			
		||||
@@ -318,8 +330,11 @@ func (self *ChainManager) InsertChain(chain *BlockChain) {
 | 
			
		||||
		self.add(link.block)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
func (self *ChainManager) TestChain(chain *BlockChain, imp bool) (td *big.Int, err error) {
 | 
			
		||||
	self.workingChain = chain
 | 
			
		||||
 | 
			
		||||
func (self *ChainManager) TestChain(chain *BlockChain) (td *big.Int, err error) {
 | 
			
		||||
	for e := chain.Front(); e != nil; e = e.Next() {
 | 
			
		||||
		var (
 | 
			
		||||
			l      = e.Value.(*link)
 | 
			
		||||
@@ -348,12 +363,21 @@ func (self *ChainManager) TestChain(chain *BlockChain) (td *big.Int, err error)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		l.td = td
 | 
			
		||||
 | 
			
		||||
		if imp {
 | 
			
		||||
			self.SetTotalDifficulty(td)
 | 
			
		||||
			self.add(block)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if td.Cmp(self.TD) <= 0 {
 | 
			
		||||
		err = &TDError{td, self.TD}
 | 
			
		||||
		return
 | 
			
		||||
	if !imp {
 | 
			
		||||
		if td.Cmp(self.TD) <= 0 {
 | 
			
		||||
			err = &TDError{td, self.TD}
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	self.workingChain = nil
 | 
			
		||||
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user