Updated LOG to match proper gas in all cases

This commit is contained in:
obscuren 2014-12-02 17:22:33 +01:00
parent 5ebae82eeb
commit cb4d168ecc
6 changed files with 17 additions and 43 deletions

@ -336,32 +336,6 @@ out:
self.Remove(block.Hash())
}
}
/*
// Test and import
bchain := chain.NewChain(blocks)
_, err := chainManager.TestChain(bchain)
if err != nil && !chain.IsTDError(err) {
poollogger.Debugln(err)
self.Reset()
if self.peer != nil && self.peer.conn != nil {
poollogger.Debugf("Punishing peer for supplying bad chain (%v)\n", self.peer.conn.RemoteAddr())
}
// This peer gave us bad hashes and made us fetch a bad chain, therefor he shall be punished.
self.eth.BlacklistPeer(self.peer)
self.peer.StopWithReason(DiscBadPeer)
self.td = ethutil.Big0
self.peer = nil
} else {
chainManager.InsertChain(bchain)
for _, block := range blocks {
self.Remove(block.Hash())
}
}
*/
}
}
}

@ -321,7 +321,6 @@ func NewChain(blocks Blocks) *BlockChain {
return chain
}
// This function assumes you've done your checking. No checking is done at this stage anymore
func (self *ChainManager) InsertChain(chain Blocks) error {
for _, block := range chain {
td, messages, err := self.Ethereum.BlockManager().Process(block)
@ -330,7 +329,9 @@ func (self *ChainManager) InsertChain(chain Blocks) error {
continue
}
chainlogger.Infof("block process failed %v (%x)\n", block.Number, block.Hash()[:4])
chainlogger.Infof("block #%v process failed (%x)\n", block.Number, block.Hash()[:4])
chainlogger.Infoln(block)
chainlogger.Infoln(err)
return err
}

@ -81,13 +81,17 @@ func (pow *EasyPow) Verify(hash []byte, diff *big.Int, nonce []byte) bool {
d := append(hash, nonce...)
sha.Write(d)
v := ethutil.BigPow(2, 256)
ret := new(big.Int).Div(v, diff)
verification := new(big.Int).Div(ethutil.BigPow(2, 256), diff)
res := ethutil.U256(ethutil.BigD(sha.Sum(nil)))
res := new(big.Int)
res.SetBytes(sha.Sum(nil))
/*
fmt.Printf("hash w/o nonce %x\n", hash)
fmt.Printf("2**256 / %v = %v\n", diff, verification)
fmt.Printf("%v <= %v\n", res, verification)
fmt.Printf("vlen: %d rlen: %d\n", len(verification.Bytes()), len(res.Bytes()))
*/
return res.Cmp(ret) == -1
return res.Cmp(verification) <= 0
}
func (pow *EasyPow) SetHash(hash *big.Int) {

@ -24,7 +24,7 @@ const (
// The size of the output buffer for writing messages
outputBufferSize = 50
// Current protocol version
ProtocolVersion = 45
ProtocolVersion = 46
// Current P2P version
P2PVersion = 2
// Ethereum network version

@ -163,8 +163,8 @@ const (
// 0xf0 range - closures
CREATE OpCode = 0xf0 + iota
CALL
RETURN
CALLCODE
RETURN
// 0x70 range - other
SUICIDE = 0xff
@ -309,12 +309,6 @@ var opCodeToString = map[OpCode]string{
SWAP15: "SWAP15",
SWAP16: "SWAP16",
LOG0: "LOG0",
LOG1: "LOG1",
LOG2: "LOG2",
LOG3: "LOG3",
LOG4: "LOG4",
// 0xf0 range
CREATE: "CREATE",
CALL: "CALL",

@ -165,10 +165,11 @@ func (self *DebugVm) RunClosure(closure *Closure) (ret []byte, err error) {
n := int(op - LOG0)
require(n + 2)
mSize, mStart := stack.Peekn()
gas.Set(GasLog)
addStepGasUsage(new(big.Int).Mul(big.NewInt(int64(n)), GasLog))
addStepGasUsage(new(big.Int).Add(mSize, mStart))
mSize, _ := stack.Peekn()
addStepGasUsage(mSize)
case EXP:
require(2)