Skip to content

Commit

Permalink
revert a bit change on 6ce75f3
Browse files Browse the repository at this point in the history
  • Loading branch information
ahangsu committed Aug 15, 2023
1 parent 138ab81 commit ca52227
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 39 deletions.
14 changes: 7 additions & 7 deletions daemon/algod/api/server/v2/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -458,13 +458,13 @@ func convertTxnInitialState(txnInitialState *simulation.TxnInitialState) *model.
}
txnInitialStateModel := model.SimulateTxnInitialState{
ProgramHash: &txnInitialState.ProgramHash,
}
if len(txnInitialState.InnerTxnInitialStates) > 0 {
innerInitialStates := make([]model.SimulateTxnInitialState, len(txnInitialState.InnerTxnInitialStates))
for i := range txnInitialState.InnerTxnInitialStates {
innerInitialStates[i] = *convertTxnInitialState(&txnInitialState.InnerTxnInitialStates[i])
}
txnInitialStateModel.InnerInitialStates = &innerInitialStates
InnerInitialStates: sliceOrNil(
convertSlice(txnInitialState.InnerTxnInitialStates,
func(innerTxnInitialState simulation.TxnInitialState) model.SimulateTxnInitialState {
return *convertTxnInitialState(&innerTxnInitialState)
},
),
),
}
return &txnInitialStateModel
}
Expand Down
61 changes: 29 additions & 32 deletions ledger/simulation/tracer.go
Original file line number Diff line number Diff line change
Expand Up @@ -421,58 +421,55 @@ func (tracer *evalTracer) AfterOpcode(cx *logic.EvalContext, evalError error) {
func (tracer *evalTracer) BeforeProgram(cx *logic.EvalContext) {
groupIndex := cx.GroupIndex()

switch cx.RunMode() {
case logic.ModeSig:
// Before Program, activated for logic sig, happens before txn group execution
// we should create trace object for this txn result
// Before Program, activated for logic sig, happens before txn group execution
// we should create trace object for this txn result
if cx.RunMode() == logic.ModeSig {
if tracer.result.ReturnTrace() {
tracer.result.TxnGroups[0].Txns[groupIndex].Trace = &TransactionTrace{}
traceRef := tracer.result.TxnGroups[0].Txns[groupIndex].Trace
traceRef.programTraceRef = &traceRef.LogicSigTrace
}
case logic.ModeApp:
if tracer.result.ReturnInitialState() {
programBytes := cx.GetProgram()
programHash := crypto.Hash(programBytes)
tracer.result.InitialState.ProgramBytes[string(programBytes)] = struct{}{}

txnInitialState := tracer.txnInitialStateStack[len(tracer.txnInitialStateStack)-1]
txnInitialState.ProgramHash = programHash[:]
}
}

if tracer.unnamedResourcePolicy != nil {
globalSharing := false
for iter := cx; iter != nil; iter = iter.GetCaller() {
if iter.ProgramVersion() >= 9 {
// If some caller in the app callstack allows global sharing, global resources can
// be accessed here. Otherwise the top-level txn must declare all resources locally.
globalSharing = true
break
}
}
tracer.unnamedResourcePolicy.globalSharing = globalSharing
tracer.unnamedResourcePolicy.programVersion = cx.ProgramVersion()
if tracer.unnamedResourcePolicy.initialBoxSurplusReadBudget == nil {
s := cx.SurplusReadBudget
tracer.unnamedResourcePolicy.initialBoxSurplusReadBudget = &s
if cx.RunMode() == logic.ModeApp && tracer.result.ReturnInitialState() {
programBytes := cx.GetProgram()
programHash := crypto.Hash(programBytes)
tracer.result.InitialState.ProgramBytes[string(programBytes)] = struct{}{}

txnInitialState := tracer.txnInitialStateStack[len(tracer.txnInitialStateStack)-1]
txnInitialState.ProgramHash = programHash[:]
}

if cx.RunMode() == logic.ModeApp && tracer.unnamedResourcePolicy != nil {
globalSharing := false
for iter := cx; iter != nil; iter = iter.GetCaller() {
if iter.ProgramVersion() >= 9 {
// If some caller in the app callstack allows global sharing, global resources can
// be accessed here. Otherwise the top-level txn must declare all resources locally.
globalSharing = true
break
}
cx.SetIOBudget(tracer.unnamedResourcePolicy.tracker.maxPossibleBoxIOBudget(cx.Proto.BytesPerBoxReference))
}
tracer.unnamedResourcePolicy.globalSharing = globalSharing
tracer.unnamedResourcePolicy.programVersion = cx.ProgramVersion()
if tracer.unnamedResourcePolicy.initialBoxSurplusReadBudget == nil {
s := cx.SurplusReadBudget
tracer.unnamedResourcePolicy.initialBoxSurplusReadBudget = &s
}
cx.SetIOBudget(tracer.unnamedResourcePolicy.tracker.maxPossibleBoxIOBudget(cx.Proto.BytesPerBoxReference))
}
}

func (tracer *evalTracer) AfterProgram(cx *logic.EvalContext, evalError error) {
groupIndex := cx.GroupIndex()

switch cx.RunMode() {
case logic.ModeSig:
if cx.RunMode() == logic.ModeSig {
// Report cost for LogicSig program and exit
tracer.result.TxnGroups[0].Txns[groupIndex].LogicSigBudgetConsumed = uint64(cx.Cost())
if tracer.result.ReturnTrace() {
tracer.result.TxnGroups[0].Txns[groupIndex].Trace.programTraceRef = nil
}
return
case logic.ModeApp:
}

// Report cost of this program.
Expand Down

0 comments on commit ca52227

Please sign in to comment.