Skip to content

Commit

Permalink
nvm: compatible for nvm exe timeout gas
Browse files Browse the repository at this point in the history
  • Loading branch information
Silentttttt committed Jun 15, 2018
1 parent 3c4842f commit 46c7518
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 8 deletions.
24 changes: 20 additions & 4 deletions core/compatibility.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,9 @@ const (

//LocalNetTransferFromContractFailureEventRecordableHeight
LocalTransferFromContractFailureEventRecordableHeight uint64 = 2

//LocalNetNewNvmExeTimeoutConsumeGasHeight
LocalNewNvmExeTimeoutConsumeGasHeight uint64 = 2
)

// var for local/develop
Expand Down Expand Up @@ -170,10 +173,13 @@ const (
TestNetWsResetRecordDependencyHeight uint64 = 281600

// TestNetV8JSLibVersionControlHeight
TestNetV8JSLibVersionControlHeight uint64 = 407000
TestNetV8JSLibVersionControlHeight uint64 = 460000

//TestNetTransferFromContractFailureEventRecordableHeight
TestNetTransferFromContractFailureEventRecordableHeight uint64 = 407000
TestNetTransferFromContractFailureEventRecordableHeight uint64 = 460000

//TestNetNewNvmExeTimeoutConsumeGasHeight
TestNetNewNvmExeTimeoutConsumeGasHeight uint64 = 460000
)

// var for TestNet
Expand Down Expand Up @@ -207,10 +213,13 @@ const (
MainNetWsResetRecordDependencyHeight uint64 = 325666

// MainNetV8JSLibVersionControlHeight
MainNetV8JSLibVersionControlHeight uint64 = 440000
MainNetV8JSLibVersionControlHeight uint64 = 480000

//MainNetTransferFromContractFailureEventRecordableHeight
MainNetTransferFromContractFailureEventRecordableHeight uint64 = 440000
MainNetTransferFromContractFailureEventRecordableHeight uint64 = 480000

//MainNetNewNvmExeTimeoutConsumeGasHeight
MainNetNewNvmExeTimeoutConsumeGasHeight uint64 = 480000
)

// var for MainNet
Expand Down Expand Up @@ -250,6 +259,9 @@ var (

// TransferFromContractFailureEventRecordableHeight record event 'TransferFromContractEvent' since this height
TransferFromContractFailureEventRecordableHeight = TestNetTransferFromContractFailureEventRecordableHeight

//NewNvmExeTimeoutConsumeGasHeight
NewNvmExeTimeoutConsumeGasHeight = TestNetNewNvmExeTimeoutConsumeGasHeight
)

// SetCompatibilityOptions set compatibility height according to chain_id
Expand All @@ -266,6 +278,7 @@ func SetCompatibilityOptions(chainID uint32) {
V8JSLibVersionControlHeight = MainNetV8JSLibVersionControlHeight
V8JSLibVersionHeightSlice = MainNetV8JSLibVersionHeightSlice
TransferFromContractFailureEventRecordableHeight = MainNetTransferFromContractFailureEventRecordableHeight
NewNvmExeTimeoutConsumeGasHeight = MainNetNewNvmExeTimeoutConsumeGasHeight
} else if chainID == TestNetID {

TransferFromContractEventRecordableHeight = TestNetTransferFromContractEventRecordableHeight
Expand All @@ -278,6 +291,7 @@ func SetCompatibilityOptions(chainID uint32) {
V8JSLibVersionControlHeight = TestNetV8JSLibVersionControlHeight
V8JSLibVersionHeightSlice = TestNetV8JSLibVersionHeightSlice
TransferFromContractFailureEventRecordableHeight = TestNetTransferFromContractFailureEventRecordableHeight
NewNvmExeTimeoutConsumeGasHeight = TestNetNewNvmExeTimeoutConsumeGasHeight
} else {

TransferFromContractEventRecordableHeight = LocalTransferFromContractEventRecordableHeight
Expand All @@ -290,6 +304,7 @@ func SetCompatibilityOptions(chainID uint32) {
V8JSLibVersionControlHeight = LocalV8JSLibVersionControlHeight
V8JSLibVersionHeightSlice = LocalV8JSLibVersionHeightSlice
TransferFromContractFailureEventRecordableHeight = LocalTransferFromContractFailureEventRecordableHeight
NewNvmExeTimeoutConsumeGasHeight = LocalNewNvmExeTimeoutConsumeGasHeight
}

sort.Sort(sort.Reverse(V8JSLibVersionHeightSlice))
Expand All @@ -306,6 +321,7 @@ func SetCompatibilityOptions(chainID uint32) {
"V8JSLibVersionControlHeight": V8JSLibVersionControlHeight,
"V8JSLibVersionHeightSlice": V8JSLibVersionHeightSlice,
"TransferFromContractFailureHeight": TransferFromContractFailureEventRecordableHeight,
"NewNvmExeTimeoutConsumeGasHeight": NewNvmExeTimeoutConsumeGasHeight,
}).Info("Set compatibility options.")

checkJSLib()
Expand Down
17 changes: 13 additions & 4 deletions nf/nvm/engine_v8.go
Original file line number Diff line number Diff line change
Expand Up @@ -330,10 +330,19 @@ func (e *V8Engine) RunScriptSource(source string, sourceLineOffset int) (string,
//set err
if ret == C.NVM_EXE_TIMEOUT_ERR {
err = ErrExecutionTimeout
if TimeoutGasLimitCost > e.limitsOfExecutionInstructions {
e.actualCountOfExecutionInstructions = e.limitsOfExecutionInstructions
} else {
e.actualCountOfExecutionInstructions = TimeoutGasLimitCost
ctx := e.Context()
if ctx == nil || ctx.block == nil {
logging.VLog().WithFields(logrus.Fields{
"err": err,
"ctx": ctx,
}).Error("Unexpected: Failed to get current height")
err = core.ErrUnexpected
} else if ctx.block.Height() >= core.NewNvmExeTimeoutConsumeGasHeight {
if TimeoutGasLimitCost > e.limitsOfExecutionInstructions {
e.actualCountOfExecutionInstructions = e.limitsOfExecutionInstructions
} else {
e.actualCountOfExecutionInstructions = TimeoutGasLimitCost
}
}
} else if ret == C.NVM_UNEXPECTED_ERR {
err = core.ErrUnexpected
Expand Down

0 comments on commit 46c7518

Please sign in to comment.