Commit 5b1424ea authored by harrylee's avatar harrylee Committed by vipwzw

add auto_rollback for evm exec_local

parent 57929eaf
...@@ -20,24 +20,11 @@ func (evm *EVMExecutor) ExecDelLocal(tx *types.Transaction, receipt *types.Recei ...@@ -20,24 +20,11 @@ func (evm *EVMExecutor) ExecDelLocal(tx *types.Transaction, receipt *types.Recei
} }
cfg := evm.GetAPI().GetConfig() cfg := evm.GetAPI().GetConfig()
if cfg.IsDappFork(evm.GetHeight(), "evm", evmtypes.ForkEVMState) { if cfg.IsDappFork(evm.GetHeight(), "evm", evmtypes.ForkEVMState) {
// 需要将Exec中生成的合约状态变更信息从localdb中恢复 kvs, err := evm.DelRollbackKV(tx, []byte(evmtypes.ExecutorName))
for _, logItem := range receipt.Logs {
if evmtypes.TyLogEVMStateChangeItem == logItem.Ty {
data := logItem.Log
var changeItem evmtypes.EVMStateChangeItem
err = types.Decode(data, &changeItem)
if err != nil { if err != nil {
return set, err return nil, err
}
set.KV = append(set.KV, &types.KeyValue{Key: []byte(changeItem.Key), Value: changeItem.PreValue})
}
}
}
kvs := set.KV
//reverse kvs
for left, right := 0, len(kvs)-1; left < right; left, right = left+1, right-1 {
kvs[left], kvs[right] = kvs[right], kvs[left]
} }
set.KV = kvs set.KV = kvs
}
return set, err return set, err
} }
...@@ -43,6 +43,6 @@ func (evm *EVMExecutor) ExecLocal(tx *types.Transaction, receipt *types.ReceiptD ...@@ -43,6 +43,6 @@ func (evm *EVMExecutor) ExecLocal(tx *types.Transaction, receipt *types.ReceiptD
} }
} }
} }
set.KV = evm.AddRollbackKV(tx, []byte(evmtypes.ExecutorName), set.KV)
return set, err return set, err
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment