obscuren 10 лет назад
Родитель
Сommit
753d62a4dd
2 измененных файлов с 23 добавлено и 21 удалено
  1. 8 15
      core/block_processor.go
  2. 15 6
      core/vm/context.go

+ 8 - 15
core/block_processor.go

@@ -246,25 +246,18 @@ func (sm *BlockProcessor) processWithParent(block, parent *types.Block) (logs st
 		return
 	}
 
-	// store the receipts
-	err = putReceipts(sm.extraDb, block.Hash(), receipts)
-	if err != nil {
-		return nil, err
-	}
-
 	// Sync the current block's state to the database
 	state.Sync()
 
-	// This puts transactions in a extra db for rpc
-	for i, tx := range block.Transactions() {
-		putTx(sm.extraDb, tx, block, uint64(i))
-	}
+	go func() {
+		// This puts transactions in a extra db for rpc
+		for i, tx := range block.Transactions() {
+			putTx(sm.extraDb, tx, block, uint64(i))
+		}
 
-	receiptsRlp := receipts.RlpEncode()
-	/*if len(receipts) > 0 {
-		glog.V(logger.Info).Infof("Saving %v receipts, rlp len is %v\n", len(receipts), len(receiptsRlp))
-	}*/
-	sm.extraDb.Put(append(receiptsPre, block.Hash().Bytes()...), receiptsRlp)
+		// store the receipts
+		putReceipts(sm.extraDb, block.Hash(), receipts)
+	}()
 
 	return state.Logs(), nil
 }

+ 15 - 6
core/vm/context.go

@@ -26,16 +26,25 @@ type Context struct {
 	Args []byte
 }
 
+var dests destinations
+
+func init() {
+	dests = make(destinations)
+}
+
 // Create a new context for the given data items.
 func NewContext(caller ContextRef, object ContextRef, value, gas, price *big.Int) *Context {
 	c := &Context{caller: caller, self: object, Args: nil}
 
-	if parent, ok := caller.(*Context); ok {
-		// Reuse JUMPDEST analysis from parent context if available.
-		c.jumpdests = parent.jumpdests
-	} else {
-		c.jumpdests = make(destinations)
-	}
+	/*
+		if parent, ok := caller.(*Context); ok {
+			// Reuse JUMPDEST analysis from parent context if available.
+			c.jumpdests = parent.jumpdests
+		} else {
+			c.jumpdests = make(destinations)
+		}
+	*/
+	c.jumpdests = dests
 
 	// Gas should be a pointer so it can safely be reduced through the run
 	// This pointer will be off the state transition