modified logging API
- package vars for tagged loggers - weed out spurious fmt.PrintX and log.PrintX logging - tried to second guess loglevel for some :)
This commit is contained in:
@@ -4,11 +4,13 @@ import (
|
||||
"bytes"
|
||||
"github.com/ethereum/eth-go/ethutil"
|
||||
"github.com/ethereum/eth-go/ethwire"
|
||||
"log"
|
||||
"github.com/ethereum/eth-go/ethlog"
|
||||
"math"
|
||||
"math/big"
|
||||
)
|
||||
|
||||
var chainlogger = ethlog.NewLogger("CHAIN")
|
||||
|
||||
type BlockChain struct {
|
||||
Ethereum EthManager
|
||||
// The famous, the fabulous Mister GENESIIIIIIS (block)
|
||||
@@ -129,38 +131,38 @@ func (bc *BlockChain) FindCanonicalChain(blocks []*Block, commonBlockHash []byte
|
||||
// Start with the newest block we got, all the way back to the common block we both know
|
||||
for _, block := range blocks {
|
||||
if bytes.Compare(block.Hash(), commonBlockHash) == 0 {
|
||||
log.Println("[CHAIN] We have found the common parent block, breaking")
|
||||
chainlogger.Infoln("[CHAIN] We have found the common parent block, breaking")
|
||||
break
|
||||
}
|
||||
chainDifficulty.Add(chainDifficulty, bc.CalculateBlockTD(block))
|
||||
}
|
||||
|
||||
log.Println("[CHAIN] Incoming chain difficulty:", chainDifficulty)
|
||||
chainlogger.Infoln("Incoming chain difficulty:", chainDifficulty)
|
||||
|
||||
curChainDifficulty := new(big.Int)
|
||||
block := bc.CurrentBlock
|
||||
for i := 0; block != nil; block = bc.GetBlock(block.PrevHash) {
|
||||
i++
|
||||
if bytes.Compare(block.Hash(), commonBlockHash) == 0 {
|
||||
log.Println("[CHAIN] We have found the common parent block, breaking")
|
||||
chainlogger.Infoln("We have found the common parent block, breaking")
|
||||
break
|
||||
}
|
||||
anOtherBlock := bc.GetBlock(block.PrevHash)
|
||||
if anOtherBlock == nil {
|
||||
// We do not want to count the genesis block for difficulty since that's not being sent
|
||||
log.Println("[CHAIN] At genesis block, breaking")
|
||||
chainlogger.Infoln("At genesis block, breaking")
|
||||
break
|
||||
}
|
||||
curChainDifficulty.Add(curChainDifficulty, bc.CalculateBlockTD(block))
|
||||
}
|
||||
|
||||
log.Println("[CHAIN] Current chain difficulty:", curChainDifficulty)
|
||||
chainlogger.Infoln("Current chain difficulty:", curChainDifficulty)
|
||||
if chainDifficulty.Cmp(curChainDifficulty) == 1 {
|
||||
log.Printf("[CHAIN] The incoming Chain beat our asses, resetting to block: %x", commonBlockHash)
|
||||
chainlogger.Infof("The incoming Chain beat our asses, resetting to block: %x", commonBlockHash)
|
||||
bc.ResetTillBlockHash(commonBlockHash)
|
||||
return false
|
||||
} else {
|
||||
log.Println("[CHAIN] Our chain showed the incoming chain who is boss. Ignoring.")
|
||||
chainlogger.Infoln("Our chain showed the incoming chain who is boss. Ignoring.")
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -195,7 +197,7 @@ func (bc *BlockChain) ResetTillBlockHash(hash []byte) error {
|
||||
var block *Block
|
||||
for ; block != nil; block = bc.GetBlock(block.PrevHash) {
|
||||
if bytes.Compare(block.Hash(), hash) == 0 {
|
||||
log.Println("[CHAIN] We have arrived at the the common parent block, breaking")
|
||||
chainlogger.Infoln("We have arrived at the the common parent block, breaking")
|
||||
break
|
||||
}
|
||||
err = ethutil.Config.Db.Delete(block.Hash())
|
||||
@@ -203,7 +205,7 @@ func (bc *BlockChain) ResetTillBlockHash(hash []byte) error {
|
||||
return err
|
||||
}
|
||||
}
|
||||
log.Println("[CHAIN] Split chain deleted and reverted to common parent block.")
|
||||
chainlogger.Infoln("Split chain deleted and reverted to common parent block.")
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -286,7 +288,7 @@ func (bc *BlockChain) setLastBlock() {
|
||||
bc.LastBlockHash = block.Hash()
|
||||
bc.LastBlockNumber = block.Number.Uint64()
|
||||
|
||||
ethutil.Config.Log.Infof("[CHAIN] Last known block height #%d\n", bc.LastBlockNumber)
|
||||
chainlogger.Infof("Last known block height #%d\n", bc.LastBlockNumber)
|
||||
} else {
|
||||
AddTestNetFunds(bc.genesisBlock)
|
||||
|
||||
@@ -294,14 +296,14 @@ func (bc *BlockChain) setLastBlock() {
|
||||
// Prepare the genesis block
|
||||
bc.Add(bc.genesisBlock)
|
||||
|
||||
//log.Printf("root %x\n", bm.bc.genesisBlock.State().Root)
|
||||
//chainlogger.Infof("root %x\n", bm.bc.genesisBlock.State().Root)
|
||||
//bm.bc.genesisBlock.PrintHash()
|
||||
}
|
||||
|
||||
// Set the last know difficulty (might be 0x0 as initial value, Genesis)
|
||||
bc.TD = ethutil.BigD(ethutil.Config.Db.LastKnownTD())
|
||||
|
||||
ethutil.Config.Log.Infof("Last block: %x\n", bc.CurrentBlock.Hash())
|
||||
chainlogger.Infof("Last block: %x\n", bc.CurrentBlock.Hash())
|
||||
}
|
||||
|
||||
func (bc *BlockChain) SetTotalDifficulty(td *big.Int) {
|
||||
@@ -358,6 +360,6 @@ func (bc *BlockChain) writeBlockInfo(block *Block) {
|
||||
|
||||
func (bc *BlockChain) Stop() {
|
||||
if bc.CurrentBlock != nil {
|
||||
log.Println("[CHAIN] Stopped")
|
||||
chainlogger.Infoln("Stopped")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,14 +2,16 @@ package ethchain
|
||||
|
||||
import (
|
||||
"github.com/ethereum/eth-go/ethutil"
|
||||
"github.com/ethereum/eth-go/ethlog"
|
||||
"github.com/obscuren/sha3"
|
||||
"hash"
|
||||
"log"
|
||||
"math/big"
|
||||
"math/rand"
|
||||
"time"
|
||||
)
|
||||
|
||||
var powlogger = ethlog.NewLogger("POW")
|
||||
|
||||
type PoW interface {
|
||||
Search(block *Block, reactChan chan ethutil.React) []byte
|
||||
Verify(hash []byte, diff *big.Int, nonce []byte) bool
|
||||
@@ -29,14 +31,14 @@ func (pow *EasyPow) Search(block *Block, reactChan chan ethutil.React) []byte {
|
||||
for {
|
||||
select {
|
||||
case <-reactChan:
|
||||
//ethutil.Config.Log.Infoln("[POW] Received reactor event; breaking out.")
|
||||
//powlogger.Infoln("Received reactor event; breaking out.")
|
||||
return nil
|
||||
default:
|
||||
i++
|
||||
if i%1234567 == 0 {
|
||||
elapsed := time.Now().UnixNano() - start
|
||||
hashes := ((float64(1e9) / float64(elapsed)) * float64(i)) / 1000
|
||||
ethutil.Config.Log.Infoln("[POW] Hashing @", int64(hashes), "khash")
|
||||
powlogger.Infoln("Hashing @", int64(hashes), "khash")
|
||||
}
|
||||
|
||||
sha := ethutil.Sha3Bin(big.NewInt(r.Int63()).Bytes())
|
||||
@@ -81,7 +83,7 @@ func (dag *Dagger) Find(obj *big.Int, resChan chan int64) {
|
||||
rnd := r.Int63()
|
||||
|
||||
res := dag.Eval(big.NewInt(rnd))
|
||||
log.Printf("rnd %v\nres %v\nobj %v\n", rnd, res, obj)
|
||||
powlogger.Infof("rnd %v\nres %v\nobj %v\n", rnd, res, obj)
|
||||
if res.Cmp(obj) < 0 {
|
||||
// Post back result on the channel
|
||||
resChan <- rnd
|
||||
|
||||
@@ -125,7 +125,7 @@ func (self *State) GetOrNewStateObject(addr []byte) *StateObject {
|
||||
}
|
||||
|
||||
func (self *State) NewStateObject(addr []byte) *StateObject {
|
||||
ethutil.Config.Log.Printf(ethutil.LogLevelInfo, "(+) %x\n", addr)
|
||||
statelogger.Infof("(+) %x\n", addr)
|
||||
|
||||
stateObject := NewStateObject(addr)
|
||||
self.stateObjects[string(addr)] = stateObject
|
||||
|
||||
@@ -3,14 +3,16 @@ package ethchain
|
||||
import (
|
||||
"bytes"
|
||||
"container/list"
|
||||
"fmt"
|
||||
"github.com/ethereum/eth-go/ethutil"
|
||||
"github.com/ethereum/eth-go/ethwire"
|
||||
"github.com/ethereum/eth-go/ethlog"
|
||||
"math/big"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
var statelogger = ethlog.NewLogger("STATE")
|
||||
|
||||
type BlockProcessor interface {
|
||||
ProcessBlock(block *Block)
|
||||
}
|
||||
@@ -120,7 +122,7 @@ done:
|
||||
|
||||
break done
|
||||
default:
|
||||
ethutil.Config.Log.Infoln(err)
|
||||
statelogger.Infoln(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,29 +188,29 @@ func (sm *StateManager) ProcessBlock(state *State, parent, block *Block, dontRea
|
||||
if err != nil {
|
||||
if len(receipts) == len(block.Receipts()) {
|
||||
for i, receipt := range block.Receipts() {
|
||||
ethutil.Config.Log.Debugf("diff (r) %v ~ %x <=> (c) %v ~ %x (%x)\n", receipt.CumulativeGasUsed, receipt.PostState[0:4], receipts[i].CumulativeGasUsed, receipts[i].PostState[0:4], receipt.Tx.Hash())
|
||||
statelogger.Debugf("diff (r) %v ~ %x <=> (c) %v ~ %x (%x)\n", receipt.CumulativeGasUsed, receipt.PostState[0:4], receipts[i].CumulativeGasUsed, receipts[i].PostState[0:4], receipt.Tx.Hash())
|
||||
}
|
||||
} else {
|
||||
ethutil.Config.Log.Debugln("Unable to print receipt diff. Length didn't match", len(receipts), "for", len(block.Receipts()))
|
||||
statelogger.Warnln("Unable to print receipt diff. Length didn't match", len(receipts), "for", len(block.Receipts()))
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
// Block validation
|
||||
if err = sm.ValidateBlock(block); err != nil {
|
||||
fmt.Println("[SM] Error validating block:", err)
|
||||
statelogger.Errorln("Error validating block:", err)
|
||||
return err
|
||||
}
|
||||
|
||||
// I'm not sure, but I don't know if there should be thrown
|
||||
// any errors at this time.
|
||||
if err = sm.AccumelateRewards(state, block); err != nil {
|
||||
fmt.Println("[SM] Error accumulating reward", err)
|
||||
statelogger.Errorln("Error accumulating reward", err)
|
||||
return err
|
||||
}
|
||||
|
||||
if !block.State().Cmp(state) {
|
||||
err = fmt.Errorf("Invalid merkle root.\nrec: %x\nis: %x", block.State().trie.Root, state.trie.Root)
|
||||
statelogger.Errorf("Invalid merkle root.\nrec: %x\nis: %x", block.State().trie.Root, state.trie.Root)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -221,7 +223,7 @@ func (sm *StateManager) ProcessBlock(state *State, parent, block *Block, dontRea
|
||||
sm.bc.Add(block)
|
||||
sm.notifyChanges(state)
|
||||
|
||||
ethutil.Config.Log.Infof("[STATE] Added block #%d (%x)\n", block.Number, block.Hash())
|
||||
statelogger.Infof("Added block #%d (%x)\n", block.Number, block.Hash())
|
||||
if dontReact == false {
|
||||
sm.Ethereum.Reactor().Post("newBlock", block)
|
||||
|
||||
@@ -232,7 +234,7 @@ func (sm *StateManager) ProcessBlock(state *State, parent, block *Block, dontRea
|
||||
|
||||
sm.Ethereum.TxPool().RemoveInvalid(state)
|
||||
} else {
|
||||
fmt.Println("total diff failed")
|
||||
statelogger.Errorln("total diff failed")
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
@@ -124,13 +124,13 @@ func (c *StateObject) ReturnGas(gas, price *big.Int, state *State) {
|
||||
func (c *StateObject) AddAmount(amount *big.Int) {
|
||||
c.SetAmount(new(big.Int).Add(c.Amount, amount))
|
||||
|
||||
ethutil.Config.Log.Printf(ethutil.LogLevelInfo, "%x: #%d %v (+ %v)\n", c.Address(), c.Nonce, c.Amount, amount)
|
||||
statelogger.Infof("%x: #%d %v (+ %v)\n", c.Address(), c.Nonce, c.Amount, amount)
|
||||
}
|
||||
|
||||
func (c *StateObject) SubAmount(amount *big.Int) {
|
||||
c.SetAmount(new(big.Int).Sub(c.Amount, amount))
|
||||
|
||||
ethutil.Config.Log.Printf(ethutil.LogLevelInfo, "%x: #%d %v (- %v)\n", c.Address(), c.Nonce, c.Amount, amount)
|
||||
statelogger.Infof("%x: #%d %v (- %v)\n", c.Address(), c.Nonce, c.Amount, amount)
|
||||
}
|
||||
|
||||
func (c *StateObject) SetAmount(amount *big.Int) {
|
||||
@@ -151,7 +151,7 @@ func (c *StateObject) ConvertGas(gas, price *big.Int) error {
|
||||
func (self *StateObject) SetGasPool(gasLimit *big.Int) {
|
||||
self.gasPool = new(big.Int).Set(gasLimit)
|
||||
|
||||
ethutil.Config.Log.Printf(ethutil.LogLevelSystem, "%x: fuel (+ %v)", self.Address(), self.gasPool)
|
||||
statelogger.Infof("%x: fuel (+ %v)", self.Address(), self.gasPool)
|
||||
}
|
||||
|
||||
func (self *StateObject) BuyGas(gas, price *big.Int) error {
|
||||
|
||||
@@ -2,7 +2,6 @@ package ethchain
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/ethereum/eth-go/ethutil"
|
||||
"math/big"
|
||||
)
|
||||
|
||||
@@ -135,12 +134,12 @@ func (self *StateTransition) preCheck() (err error) {
|
||||
}
|
||||
|
||||
func (self *StateTransition) TransitionState() (err error) {
|
||||
ethutil.Config.Log.Printf(ethutil.LogLevelInfo, "(~) %x\n", self.tx.Hash())
|
||||
statelogger.Infof("(~) %x\n", self.tx.Hash())
|
||||
|
||||
/*
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
ethutil.Config.Log.Infoln(r)
|
||||
logger.Infoln(r)
|
||||
err = fmt.Errorf("state transition err %v", r)
|
||||
}
|
||||
}()
|
||||
@@ -231,7 +230,7 @@ func (self *StateTransition) transferValue(sender, receiver *StateObject) error
|
||||
// Add the amount to receivers account which should conclude this transaction
|
||||
receiver.AddAmount(self.value)
|
||||
|
||||
//ethutil.Config.Log.Debugf("%x => %x (%v)\n", sender.Address()[:4], receiver.Address()[:4], self.value)
|
||||
//statelogger.Debugf("%x => %x (%v)\n", sender.Address()[:4], receiver.Address()[:4], self.value)
|
||||
//}
|
||||
|
||||
return nil
|
||||
|
||||
@@ -3,15 +3,15 @@ package ethchain
|
||||
import (
|
||||
"bytes"
|
||||
"container/list"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/ethereum/eth-go/ethutil"
|
||||
"github.com/ethereum/eth-go/ethwire"
|
||||
"log"
|
||||
"github.com/ethereum/eth-go/ethlog"
|
||||
"math/big"
|
||||
"sync"
|
||||
)
|
||||
|
||||
var txplogger = ethlog.NewLogger("TXP")
|
||||
|
||||
const (
|
||||
txPoolQueueSize = 50
|
||||
)
|
||||
@@ -97,7 +97,7 @@ func (pool *TxPool) ProcessTransaction(tx *Transaction, state *State, toContract
|
||||
fmt.Printf("state root before update %x\n", state.Root())
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
ethutil.Config.Log.Infoln(r)
|
||||
txplogger.Infoln(r)
|
||||
err = fmt.Errorf("%v", r)
|
||||
}
|
||||
}()
|
||||
@@ -156,7 +156,7 @@ func (pool *TxPool) ProcessTransaction(tx *Transaction, state *State, toContract
|
||||
fmt.Printf("state root after receiver update %x\n", state.Root())
|
||||
}
|
||||
|
||||
ethutil.Config.Log.Infof("[TXPL] Processed Tx %x\n", tx.Hash())
|
||||
txplogger.Infof("[TXPL] Processed Tx %x\n", tx.Hash())
|
||||
|
||||
return
|
||||
}
|
||||
@@ -168,7 +168,7 @@ func (pool *TxPool) ValidateTransaction(tx *Transaction) error {
|
||||
block := pool.Ethereum.BlockChain().CurrentBlock
|
||||
// Something has gone horribly wrong if this happens
|
||||
if block == nil {
|
||||
return errors.New("[TXPL] No last block on the block chain")
|
||||
return fmt.Errorf("[TXPL] No last block on the block chain")
|
||||
}
|
||||
|
||||
if len(tx.Recipient) != 20 {
|
||||
@@ -188,7 +188,7 @@ func (pool *TxPool) ValidateTransaction(tx *Transaction) error {
|
||||
|
||||
if tx.IsContract() {
|
||||
if tx.GasPrice.Cmp(big.NewInt(minGasPrice)) < 0 {
|
||||
return fmt.Errorf("[TXPL] Gasprice to low, %s given should be at least %d.", tx.GasPrice, minGasPrice)
|
||||
return fmt.Errorf("[TXPL] Gasprice too low, %s given should be at least %d.", tx.GasPrice, minGasPrice)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -215,12 +215,12 @@ out:
|
||||
// Validate the transaction
|
||||
err := pool.ValidateTransaction(tx)
|
||||
if err != nil {
|
||||
ethutil.Config.Log.Debugln("Validating Tx failed", err)
|
||||
txplogger.Debugln("Validating Tx failed", err)
|
||||
} else {
|
||||
// Call blocking version.
|
||||
pool.addTransaction(tx)
|
||||
|
||||
ethutil.Config.Log.Debugf("(t) %x => %x (%v) %x\n", tx.Sender()[:4], tx.Recipient[:4], tx.Value, tx.Hash())
|
||||
txplogger.Debugf("(t) %x => %x (%v) %x\n", tx.Sender()[:4], tx.Recipient[:4], tx.Value, tx.Hash())
|
||||
|
||||
// Notify the subscribers
|
||||
pool.Ethereum.Reactor().Post("newTx:pre", tx)
|
||||
@@ -282,5 +282,5 @@ func (pool *TxPool) Stop() {
|
||||
|
||||
pool.Flush()
|
||||
|
||||
log.Println("[TXP] Stopped")
|
||||
txplogger.Infoln("Stopped")
|
||||
}
|
||||
|
||||
@@ -3,10 +3,13 @@ package ethchain
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/ethereum/eth-go/ethutil"
|
||||
"github.com/ethereum/eth-go/ethlog"
|
||||
"math"
|
||||
"math/big"
|
||||
)
|
||||
|
||||
var vmlogger = ethlog.NewLogger("VM")
|
||||
|
||||
var (
|
||||
GasStep = big.NewInt(1)
|
||||
GasSha = big.NewInt(20)
|
||||
@@ -72,7 +75,7 @@ func (self *Vm) Printf(format string, v ...interface{}) *Vm {
|
||||
|
||||
func (self *Vm) Endl() *Vm {
|
||||
if self.Verbose {
|
||||
ethutil.Config.Log.Infoln(self.logStr)
|
||||
vmlogger.Infoln(self.logStr)
|
||||
self.logStr = ""
|
||||
}
|
||||
|
||||
@@ -93,11 +96,11 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
|
||||
if r := recover(); r != nil {
|
||||
ret = closure.Return(nil)
|
||||
err = fmt.Errorf("%v", r)
|
||||
fmt.Println("vm err", err)
|
||||
vmlogger.Errorln("vm err", err)
|
||||
}
|
||||
}()
|
||||
|
||||
ethutil.Config.Log.Debugf("[VM] (~) %x gas: %v (d) %x\n", closure.object.Address(), closure.Gas, closure.Args)
|
||||
vmlogger.Debugf("(~) %x gas: %v (d) %x\n", closure.object.Address(), closure.Gas, closure.Args)
|
||||
|
||||
// Memory for the current closure
|
||||
mem := &Memory{}
|
||||
@@ -638,7 +641,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
|
||||
args := mem.Get(inOffset.Int64(), inSize.Int64())
|
||||
|
||||
if closure.object.Amount.Cmp(value) < 0 {
|
||||
ethutil.Config.Log.Debugf("Insufficient funds to transfer value. Req %v, has %v", value, closure.object.Amount)
|
||||
vmlogger.Debugf("Insufficient funds to transfer value. Req %v, has %v", value, closure.object.Amount)
|
||||
|
||||
stack.Push(ethutil.BigFalse)
|
||||
} else {
|
||||
@@ -657,7 +660,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
|
||||
if err != nil {
|
||||
stack.Push(ethutil.BigFalse)
|
||||
|
||||
ethutil.Config.Log.Debugf("Closure execution failed. %v\n", err)
|
||||
vmlogger.Debugf("Closure execution failed. %v\n", err)
|
||||
|
||||
vm.err = err
|
||||
vm.state.Set(snapshot)
|
||||
@@ -692,7 +695,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
|
||||
|
||||
return closure.Return(nil), nil
|
||||
default:
|
||||
ethutil.Config.Log.Debugf("Invalid opcode %x\n", op)
|
||||
vmlogger.Debugf("Invalid opcode %x\n", op)
|
||||
|
||||
return closure.Return(nil), fmt.Errorf("Invalid opcode %x", op)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user