forked from cerc-io/plugeth
Testing different mining state
This commit is contained in:
parent
8730dfdcc2
commit
bd48690f63
@ -29,14 +29,14 @@ func (pow *EasyPow) Search(block *Block, reactChan chan ethutil.React) []byte {
|
|||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-reactChan:
|
case <-reactChan:
|
||||||
log.Println("[POW] Received reactor event; breaking out.")
|
ethutil.Config.Log.Infoln("[POW] Received reactor event; breaking out.")
|
||||||
return nil
|
return nil
|
||||||
default:
|
default:
|
||||||
i++
|
i++
|
||||||
if i%1234567 == 0 {
|
if i%1234567 == 0 {
|
||||||
elapsed := time.Now().UnixNano() - start
|
elapsed := time.Now().UnixNano() - start
|
||||||
hashes := ((float64(1e9) / float64(elapsed)) * float64(i)) / 1000
|
hashes := ((float64(1e9) / float64(elapsed)) * float64(i)) / 1000
|
||||||
log.Println("[POW] Hashing @", int64(hashes), "khash")
|
ethutil.Config.Log.Infoln("[POW] Hashing @", int64(hashes), "khash")
|
||||||
}
|
}
|
||||||
|
|
||||||
sha := ethutil.Sha3Bin(big.NewInt(r.Int63()).Bytes())
|
sha := ethutil.Sha3Bin(big.NewInt(r.Int63()).Bytes())
|
||||||
|
@ -131,7 +131,7 @@ func (pool *TxPool) ProcessTransaction(tx *Transaction, block *Block, toContract
|
|||||||
|
|
||||||
block.state.UpdateStateObject(sender)
|
block.state.UpdateStateObject(sender)
|
||||||
|
|
||||||
log.Printf("[TXPL] Processed Tx %x\n", tx.Hash())
|
ethutil.Config.Log.Infof("[TXPL] Processed Tx %x\n", tx.Hash())
|
||||||
|
|
||||||
// Notify all subscribers
|
// Notify all subscribers
|
||||||
pool.Ethereum.Reactor().Post("newTx:post", tx)
|
pool.Ethereum.Reactor().Post("newTx:post", tx)
|
||||||
|
@ -5,7 +5,6 @@ import (
|
|||||||
"github.com/ethereum/eth-go/ethchain"
|
"github.com/ethereum/eth-go/ethchain"
|
||||||
"github.com/ethereum/eth-go/ethutil"
|
"github.com/ethereum/eth-go/ethutil"
|
||||||
"github.com/ethereum/eth-go/ethwire"
|
"github.com/ethereum/eth-go/ethwire"
|
||||||
"log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Miner struct {
|
type Miner struct {
|
||||||
@ -61,10 +60,10 @@ func (miner *Miner) listener() {
|
|||||||
select {
|
select {
|
||||||
case chanMessage := <-miner.reactChan:
|
case chanMessage := <-miner.reactChan:
|
||||||
if block, ok := chanMessage.Resource.(*ethchain.Block); ok {
|
if block, ok := chanMessage.Resource.(*ethchain.Block); ok {
|
||||||
log.Println("[MINER] Got new block via Reactor")
|
ethutil.Config.Log.Infoln("[MINER] Got new block via Reactor")
|
||||||
if bytes.Compare(miner.ethereum.BlockChain().CurrentBlock.Hash(), block.Hash()) == 0 {
|
if bytes.Compare(miner.ethereum.BlockChain().CurrentBlock.Hash(), block.Hash()) == 0 {
|
||||||
// TODO: Perhaps continue mining to get some uncle rewards
|
// TODO: Perhaps continue mining to get some uncle rewards
|
||||||
log.Println("[MINER] New top block found resetting state")
|
ethutil.Config.Log.Infoln("[MINER] New top block found resetting state")
|
||||||
|
|
||||||
// Filter out which Transactions we have that were not in this block
|
// Filter out which Transactions we have that were not in this block
|
||||||
var newtxs []*ethchain.Transaction
|
var newtxs []*ethchain.Transaction
|
||||||
@ -86,7 +85,7 @@ func (miner *Miner) listener() {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
if bytes.Compare(block.PrevHash, miner.ethereum.BlockChain().CurrentBlock.PrevHash) == 0 {
|
if bytes.Compare(block.PrevHash, miner.ethereum.BlockChain().CurrentBlock.PrevHash) == 0 {
|
||||||
log.Println("[MINER] Adding uncle block")
|
ethutil.Config.Log.Infoln("[MINER] Adding uncle block")
|
||||||
miner.uncles = append(miner.uncles, block)
|
miner.uncles = append(miner.uncles, block)
|
||||||
//miner.ethereum.StateManager().Prepare(miner.block.State(), miner.block.State())
|
//miner.ethereum.StateManager().Prepare(miner.block.State(), miner.block.State())
|
||||||
}
|
}
|
||||||
@ -94,7 +93,7 @@ func (miner *Miner) listener() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if tx, ok := chanMessage.Resource.(*ethchain.Transaction); ok {
|
if tx, ok := chanMessage.Resource.(*ethchain.Transaction); ok {
|
||||||
//log.Println("[MINER] Got new transaction from Reactor", tx)
|
//log.Infoln("[MINER] Got new transaction from Reactor", tx)
|
||||||
found := false
|
found := false
|
||||||
for _, ctx := range miner.txs {
|
for _, ctx := range miner.txs {
|
||||||
if found = bytes.Compare(ctx.Hash(), tx.Hash()) == 0; found {
|
if found = bytes.Compare(ctx.Hash(), tx.Hash()) == 0; found {
|
||||||
@ -103,16 +102,16 @@ func (miner *Miner) listener() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
if found == false {
|
if found == false {
|
||||||
//log.Println("[MINER] We did not know about this transaction, adding")
|
//log.Infoln("[MINER] We did not know about this transaction, adding")
|
||||||
miner.txs = append(miner.txs, tx)
|
miner.txs = append(miner.txs, tx)
|
||||||
miner.block = miner.ethereum.BlockChain().NewBlock(miner.coinbase, miner.txs)
|
miner.block = miner.ethereum.BlockChain().NewBlock(miner.coinbase, miner.txs)
|
||||||
miner.block.SetTransactions(miner.txs)
|
miner.block.SetTransactions(miner.txs)
|
||||||
} else {
|
} else {
|
||||||
//log.Println("[MINER] We already had this transaction, ignoring")
|
//log.Infoln("[MINER] We already had this transaction, ignoring")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
log.Println("[MINER] Mining on block. Includes", len(miner.txs), "transactions")
|
ethutil.Config.Log.Infoln("[MINER] Mining on block. Includes", len(miner.txs), "transactions")
|
||||||
|
|
||||||
// Apply uncles
|
// Apply uncles
|
||||||
if len(miner.uncles) > 0 {
|
if len(miner.uncles) > 0 {
|
||||||
@ -128,12 +127,12 @@ func (miner *Miner) listener() {
|
|||||||
if miner.block.Nonce != nil {
|
if miner.block.Nonce != nil {
|
||||||
err := miner.ethereum.StateManager().ProcessBlock(miner.ethereum.StateManager().CurrentState(), miner.block, true)
|
err := miner.ethereum.StateManager().ProcessBlock(miner.ethereum.StateManager().CurrentState(), miner.block, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
ethutil.Config.Log.Infoln(err)
|
||||||
miner.txs = []*ethchain.Transaction{} // Move this somewhere neat
|
miner.txs = []*ethchain.Transaction{} // Move this somewhere neat
|
||||||
miner.block = miner.ethereum.BlockChain().NewBlock(miner.coinbase, miner.txs)
|
miner.block = miner.ethereum.BlockChain().NewBlock(miner.coinbase, miner.txs)
|
||||||
} else {
|
} else {
|
||||||
miner.ethereum.Broadcast(ethwire.MsgBlockTy, []interface{}{miner.block.Value().Val})
|
miner.ethereum.Broadcast(ethwire.MsgBlockTy, []interface{}{miner.block.Value().Val})
|
||||||
log.Printf("[MINER] 🔨 Mined block %x\n", miner.block.Hash())
|
ethutil.Config.Log.Infof("[MINER] 🔨 Mined block %x\n", miner.block.Hash())
|
||||||
|
|
||||||
miner.txs = []*ethchain.Transaction{} // Move this somewhere neat
|
miner.txs = []*ethchain.Transaction{} // Move this somewhere neat
|
||||||
miner.block = miner.ethereum.BlockChain().NewBlock(miner.coinbase, miner.txs)
|
miner.block = miner.ethereum.BlockChain().NewBlock(miner.coinbase, miner.txs)
|
||||||
|
Loading…
Reference in New Issue
Block a user