aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-03-04 00:05:51 +0800
committerobscuren <geffobscura@gmail.com>2015-03-04 00:05:51 +0800
commitee0a1bec6c3ce942e51265535961ac6a745d33eb (patch)
tree9d2181ca6dc3f7c107b2348cc6366c9296dd9bb2
parentc74c07eed19f8a328f47aca7b9e01dcdf8731847 (diff)
downloaddexon-ee0a1bec6c3ce942e51265535961ac6a745d33eb.tar
dexon-ee0a1bec6c3ce942e51265535961ac6a745d33eb.tar.gz
dexon-ee0a1bec6c3ce942e51265535961ac6a745d33eb.tar.bz2
dexon-ee0a1bec6c3ce942e51265535961ac6a745d33eb.tar.lz
dexon-ee0a1bec6c3ce942e51265535961ac6a745d33eb.tar.xz
dexon-ee0a1bec6c3ce942e51265535961ac6a745d33eb.tar.zst
dexon-ee0a1bec6c3ce942e51265535961ac6a745d33eb.zip
GasLimit check updated
-rw-r--r--core/block_processor.go14
-rw-r--r--state/statedb.go4
-rw-r--r--tests/vm/gh_test.go5
3 files changed, 17 insertions, 6 deletions
diff --git a/core/block_processor.go b/core/block_processor.go
index 5e943bda5..e48660a67 100644
--- a/core/block_processor.go
+++ b/core/block_processor.go
@@ -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]]))
receiptSha := types.DeriveSha(receipts)
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)
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)
}
- expl := CalcGasLimit(parent, block)
- if expl.Cmp(block.Header().GasLimit) != 0 {
- return fmt.Errorf("GasLimit check failed for block %v, %v", block.Header().GasLimit, expl)
+ //expl := CalcGasLimit(parent, block)
+ //if expl.Cmp(block.Header().GasLimit) != 0 {
+
+ // 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() {
diff --git a/state/statedb.go b/state/statedb.go
index ee37c2e68..2ef928a9d 100644
--- a/state/statedb.go
+++ b/state/statedb.go
@@ -239,6 +239,10 @@ func (s *StateDB) Root() []byte {
return s.trie.Root()
}
+func (s *StateDB) Trie() *trie.SecureTrie {
+ return s.trie
+}
+
// Resets the trie and all siblings
func (s *StateDB) Reset() {
s.trie.Reset()
diff --git a/tests/vm/gh_test.go b/tests/vm/gh_test.go
index a3eb93616..e457991e5 100644
--- a/tests/vm/gh_test.go
+++ b/tests/vm/gh_test.go
@@ -79,6 +79,10 @@ func RunVmTest(p string, t *testing.T) {
helper.CreateFileTests(t, p, &tests)
for name, test := range tests {
+ helper.Logger.SetLogLevel(4)
+ if name != "CallEcrecover0_overlappingInputOutput" {
+ continue
+ }
db, _ := ethdb.NewMemDatabase()
statedb := state.New(nil, db)
for addr, account := range test.Pre {
@@ -177,6 +181,7 @@ func RunVmTest(p string, t *testing.T) {
*/
}
}
+ //statedb.Trie().PrintRoot()
}
logger.Flush()
}