GasLimit check updated

This commit is contained in:
obscuren 2015-03-03 17:05:51 +01:00
parent c74c07eed1
commit ee0a1bec6c
3 changed files with 17 additions and 6 deletions

View File

@ -204,9 +204,6 @@ func (sm *BlockProcessor) processWithParent(block, parent *types.Block) (td *big
// Tre receipt Trie's root (R = (Tr [[H1, R1], ... [Hn, R1]])) // Tre receipt Trie's root (R = (Tr [[H1, R1], ... [Hn, R1]]))
receiptSha := types.DeriveSha(receipts) receiptSha := types.DeriveSha(receipts)
if bytes.Compare(receiptSha, header.ReceiptHash) != 0 { if bytes.Compare(receiptSha, header.ReceiptHash) != 0 {
fmt.Println("receipts", receipts)
state.Sync()
chainlogger.Infof("%s\n", state.Dump())
err = fmt.Errorf("validating receipt root. received=%x got=%x", header.ReceiptHash, receiptSha) err = fmt.Errorf("validating receipt root. received=%x got=%x", header.ReceiptHash, receiptSha)
return return
} }
@ -249,9 +246,14 @@ func (sm *BlockProcessor) ValidateBlock(block, parent *types.Block) error {
return fmt.Errorf("Difficulty check failed for block %v, %v", block.Header().Difficulty, expd) return fmt.Errorf("Difficulty check failed for block %v, %v", block.Header().Difficulty, expd)
} }
expl := CalcGasLimit(parent, block) //expl := CalcGasLimit(parent, block)
if expl.Cmp(block.Header().GasLimit) != 0 { //if expl.Cmp(block.Header().GasLimit) != 0 {
return fmt.Errorf("GasLimit check failed for block %v, %v", block.Header().GasLimit, expl)
// block.gasLimit - parent.gasLimit <= parent.gasLimit / 1024
a := new(big.Int).Sub(block.Header().GasLimit, parent.Header().GasLimit)
b := new(big.Int).Div(parent.Header().GasLimit, big.NewInt(1024))
if a.Cmp(b) > 0 {
return fmt.Errorf("GasLimit check failed for block %v", block.Header().GasLimit)
} }
if block.Time() < parent.Time() { if block.Time() < parent.Time() {

View File

@ -239,6 +239,10 @@ func (s *StateDB) Root() []byte {
return s.trie.Root() return s.trie.Root()
} }
func (s *StateDB) Trie() *trie.SecureTrie {
return s.trie
}
// Resets the trie and all siblings // Resets the trie and all siblings
func (s *StateDB) Reset() { func (s *StateDB) Reset() {
s.trie.Reset() s.trie.Reset()

View File

@ -79,6 +79,10 @@ func RunVmTest(p string, t *testing.T) {
helper.CreateFileTests(t, p, &tests) helper.CreateFileTests(t, p, &tests)
for name, test := range tests { for name, test := range tests {
helper.Logger.SetLogLevel(4)
if name != "CallEcrecover0_overlappingInputOutput" {
continue
}
db, _ := ethdb.NewMemDatabase() db, _ := ethdb.NewMemDatabase()
statedb := state.New(nil, db) statedb := state.New(nil, db)
for addr, account := range test.Pre { for addr, account := range test.Pre {
@ -177,6 +181,7 @@ func RunVmTest(p string, t *testing.T) {
*/ */
} }
} }
//statedb.Trie().PrintRoot()
} }
logger.Flush() logger.Flush()
} }