diff --git a/common/changes/@subsquid/evm-processor/stop-trace_2023-09-26-20-44.json b/common/changes/@subsquid/evm-processor/stop-trace_2023-09-26-20-44.json new file mode 100644 index 000000000..852032c03 --- /dev/null +++ b/common/changes/@subsquid/evm-processor/stop-trace_2023-09-26-20-44.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@subsquid/evm-processor", + "comment": "ignore STOP debug frame", + "type": "patch" + } + ], + "packageName": "@subsquid/evm-processor" +} \ No newline at end of file diff --git a/evm/evm-processor/src/ds-rpc/mapping.ts b/evm/evm-processor/src/ds-rpc/mapping.ts index a7b6dfe2c..662ac8c1b 100644 --- a/evm/evm-processor/src/ds-rpc/mapping.ts +++ b/evm/evm-processor/src/ds-rpc/mapping.ts @@ -1,5 +1,4 @@ import {addErrorContext, assertNotNull, unexpectedCase} from '@subsquid/util-internal' -import {HashAndHeight} from '@subsquid/util-internal-processor-tools' import assert from 'assert' import {AllFields, BlockData, BlockHeader, FieldSelection, Transaction} from '../interfaces/data' import {DataRequest} from '../interfaces/data-request' @@ -338,6 +337,10 @@ function mapTraceStateDiff(transactionIndex: number, address: Bytes20, key: stri function* mapDebugFrame(transactionIndex: number, debugFrameResult: rpc.DebugFrameResult): Iterable { + if (debugFrameResult.result.type == 'STOP') { + assert(!debugFrameResult.result.calls?.length) + return + } for (let rec of traverseDebugFrame(debugFrameResult.result, [])) { let base: EvmTraceBase = { transactionIndex, diff --git a/evm/evm-processor/src/ds-rpc/rpc.ts b/evm/evm-processor/src/ds-rpc/rpc.ts index 90a63ba7f..2c4d8d338 100644 --- a/evm/evm-processor/src/ds-rpc/rpc.ts +++ b/evm/evm-processor/src/ds-rpc/rpc.ts @@ -208,7 +208,7 @@ export type TraceTracers = 'trace' | 'stateDiff' export interface DebugFrame { - type: 'CALL' | 'STATICCALL' | 'DELEGATECALL' | 'CREATE' | 'CREATE2' | 'SELFDESTRUCT' | 'INVALID' + type: 'CALL' | 'STATICCALL' | 'DELEGATECALL' | 'CREATE' | 'CREATE2' | 'SELFDESTRUCT' | 'INVALID' | 'STOP' from: Bytes20 to: Bytes20 value?: Qty