@sentio/sdk 2.59.5-rc.1 → 2.60.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/lib/aptos/aptos-plugin.d.ts +5 -11
  2. package/lib/aptos/aptos-plugin.d.ts.map +1 -1
  3. package/lib/aptos/aptos-plugin.js +38 -23
  4. package/lib/aptos/aptos-plugin.js.map +1 -1
  5. package/lib/aptos/aptos-processor.d.ts +1 -0
  6. package/lib/aptos/aptos-processor.d.ts.map +1 -1
  7. package/lib/aptos/aptos-processor.js +11 -3
  8. package/lib/aptos/aptos-processor.js.map +1 -1
  9. package/lib/btc/btc-plugin.d.ts +5 -8
  10. package/lib/btc/btc-plugin.d.ts.map +1 -1
  11. package/lib/btc/btc-plugin.js +22 -14
  12. package/lib/btc/btc-plugin.js.map +1 -1
  13. package/lib/core/core-plugin.d.ts +2 -1
  14. package/lib/core/core-plugin.d.ts.map +1 -1
  15. package/lib/core/core-plugin.js +9 -0
  16. package/lib/core/core-plugin.js.map +1 -1
  17. package/lib/core/handler-options.d.ts +6 -0
  18. package/lib/core/handler-options.d.ts.map +1 -1
  19. package/lib/core/handler-options.js.map +1 -1
  20. package/lib/core/handler-register.d.ts +18 -0
  21. package/lib/core/handler-register.d.ts.map +1 -0
  22. package/lib/core/handler-register.js +62 -0
  23. package/lib/core/handler-register.js.map +1 -0
  24. package/lib/cosmos/cosmos-plugin.d.ts +5 -7
  25. package/lib/cosmos/cosmos-plugin.d.ts.map +1 -1
  26. package/lib/cosmos/cosmos-plugin.js +18 -10
  27. package/lib/cosmos/cosmos-plugin.js.map +1 -1
  28. package/lib/eth/eth-plugin.d.ts +5 -40
  29. package/lib/eth/eth-plugin.d.ts.map +1 -1
  30. package/lib/eth/eth-plugin.js +41 -117
  31. package/lib/eth/eth-plugin.js.map +1 -1
  32. package/lib/fuel/fuel-plugin.d.ts +5 -9
  33. package/lib/fuel/fuel-plugin.d.ts.map +1 -1
  34. package/lib/fuel/fuel-plugin.js +26 -18
  35. package/lib/fuel/fuel-plugin.js.map +1 -1
  36. package/lib/solana/solana-plugin.d.ts +3 -2
  37. package/lib/solana/solana-plugin.d.ts.map +1 -1
  38. package/lib/solana/solana-plugin.js +11 -1
  39. package/lib/solana/solana-plugin.js.map +1 -1
  40. package/lib/stark/starknet-plugin.d.ts +5 -7
  41. package/lib/stark/starknet-plugin.d.ts.map +1 -1
  42. package/lib/stark/starknet-plugin.js +18 -10
  43. package/lib/stark/starknet-plugin.js.map +1 -1
  44. package/lib/sui/sui-plugin.d.ts +5 -10
  45. package/lib/sui/sui-plugin.d.ts.map +1 -1
  46. package/lib/sui/sui-plugin.js +37 -24
  47. package/lib/sui/sui-plugin.js.map +1 -1
  48. package/package.json +3 -3
  49. package/src/aptos/aptos-plugin.ts +55 -44
  50. package/src/aptos/aptos-processor.ts +15 -3
  51. package/src/btc/btc-plugin.ts +33 -32
  52. package/src/core/core-plugin.ts +11 -2
  53. package/src/core/handler-options.ts +7 -0
  54. package/src/core/handler-register.ts +79 -0
  55. package/src/cosmos/cosmos-plugin.ts +24 -20
  56. package/src/eth/eth-plugin.ts +62 -182
  57. package/src/fuel/fuel-plugin.ts +43 -44
  58. package/src/solana/solana-plugin.ts +20 -2
  59. package/src/stark/starknet-plugin.ts +24 -20
  60. package/src/sui/sui-plugin.ts +58 -52
@@ -0,0 +1,18 @@
1
+ import { ChainId } from '@sentio/chain';
2
+ import { ProcessResult } from '@sentio/protos';
3
+ export type HandlerFunction = (...args: any[]) => Promise<ProcessResult>;
4
+ export declare class HandlerRegister {
5
+ private handlerByChain;
6
+ private handlers;
7
+ /**
8
+ * Register a handler function with chain ID and handle type
9
+ * @returns handler ID
10
+ */
11
+ register(handler: HandlerFunction, chainId: ChainId | string): number;
12
+ /**
13
+ * Get handler function by ID
14
+ */
15
+ getHandlerById(id: number): HandlerFunction;
16
+ clear(chainId?: ChainId): void;
17
+ }
18
+ //# sourceMappingURL=handler-register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-register.d.ts","sourceRoot":"","sources":["../../src/core/handler-register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;AAmBxE,qBAAa,eAAe;IAC1B,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,QAAQ,CAAuC;IAEvD;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM;IAmBrE;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe;IAQ3C,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;CAiB/B"}
@@ -0,0 +1,62 @@
1
+ import { ServerError, Status } from 'nice-grpc';
2
+ import { ChainId } from '@sentio/chain';
3
+ const chainToNumber = new Map();
4
+ const numberToChain = new Map();
5
+ for (const chainId of Object.values(ChainId)) {
6
+ const num = chainToNumber.size + 1;
7
+ chainToNumber.set(chainId, num);
8
+ numberToChain.set(num, chainId);
9
+ }
10
+ const MAX_HANDLER_PER_CHAIN = 1000000; // Maximum handlers per chain
11
+ export class HandlerRegister {
12
+ handlerByChain = new Map();
13
+ handlers = new Map();
14
+ /**
15
+ * Register a handler function with chain ID and handle type
16
+ * @returns handler ID
17
+ */
18
+ register(handler, chainId) {
19
+ const chainNum = chainToNumber.get(chainId) || 0;
20
+ const entries = this.handlerByChain.get(chainNum) || [];
21
+ const len = entries.length;
22
+ const id = chainNum * MAX_HANDLER_PER_CHAIN + len + 1; // Use the first 32 bits for chain ID, next bits for index
23
+ const entry = {
24
+ id,
25
+ handler,
26
+ chainId
27
+ };
28
+ entries.push(entry);
29
+ this.handlerByChain.set(chainNum, entries);
30
+ this.handlers.set(id, entry);
31
+ return id;
32
+ }
33
+ /**
34
+ * Get handler function by ID
35
+ */
36
+ getHandlerById(id) {
37
+ const entry = this.handlers.get(id);
38
+ if (!entry) {
39
+ throw new ServerError(Status.INTERNAL, `Handler with ID ${id} not found.`);
40
+ }
41
+ return entry.handler;
42
+ }
43
+ clear(chainId) {
44
+ if (chainId) {
45
+ const chainNum = chainToNumber.get(chainId);
46
+ if (chainNum !== undefined) {
47
+ const chainHandlers = this.handlerByChain.get(chainNum);
48
+ if (chainHandlers) {
49
+ for (const entry of chainHandlers) {
50
+ this.handlers.delete(entry.id);
51
+ }
52
+ }
53
+ this.handlerByChain.delete(chainNum);
54
+ }
55
+ }
56
+ else {
57
+ this.handlerByChain.clear();
58
+ this.handlers.clear();
59
+ }
60
+ }
61
+ }
62
+ //# sourceMappingURL=handler-register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler-register.js","sourceRoot":"","sources":["../../src/core/handler-register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAWvC,MAAM,aAAa,GAAwB,IAAI,GAAG,EAAE,CAAA;AACpD,MAAM,aAAa,GAAwB,IAAI,GAAG,EAAE,CAAA;AAEpD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,CAAA;IAClC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC/B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,qBAAqB,GAAG,OAAO,CAAA,CAAC,6BAA6B;AAEnE,MAAM,OAAO,eAAe;IAClB,cAAc,GAAgC,IAAI,GAAG,EAAE,CAAA;IACvD,QAAQ,GAA8B,IAAI,GAAG,EAAE,CAAA;IAEvD;;;OAGG;IACH,QAAQ,CAAC,OAAwB,EAAE,OAAyB;QAC1D,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QAEvD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAA;QAC1B,MAAM,EAAE,GAAG,QAAQ,GAAG,qBAAqB,GAAG,GAAG,GAAG,CAAC,CAAA,CAAC,0DAA0D;QAEhH,MAAM,KAAK,GAAiB;YAC1B,EAAE;YACF,OAAO;YACP,OAAO;SACR,CAAA;QACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC1C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QAE5B,OAAO,EAAE,CAAA;IACX,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,EAAU;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAA;QAC5E,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,OAAiB;QACrB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YAC3C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBACvD,IAAI,aAAa,EAAE,CAAC;oBAClB,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;wBAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;oBAChC,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACtC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;YAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACvB,CAAC;IACH,CAAC;CACF"}
@@ -1,17 +1,15 @@
1
1
  import { Plugin } from '@sentio/runtime';
2
- import { Data_CosmosCall, DataBinding, HandlerType, ProcessConfigResponse, ProcessResult, StartRequest } from '@sentio/protos';
3
- interface Handlers {
4
- callHandlers: ((trace: Data_CosmosCall) => Promise<ProcessResult>)[];
5
- }
2
+ import { DataBinding, HandlerType, InitResponse, ProcessConfigResponse, ProcessResult, StartRequest } from '@sentio/protos';
3
+ import { HandlerRegister } from '../core/handler-register.js';
6
4
  export declare class CosmosPlugin extends Plugin {
7
5
  name: string;
8
- handlers: Handlers;
9
- configure(config: ProcessConfigResponse): Promise<void>;
6
+ handlerRegister: HandlerRegister;
7
+ init(config: InitResponse): Promise<void>;
8
+ configure(config: ProcessConfigResponse, forChainId?: string): Promise<void>;
10
9
  supportedHandlers: HandlerType[];
11
10
  processBinding(request: DataBinding): Promise<ProcessResult>;
12
11
  start(request: StartRequest): Promise<void>;
13
12
  stateDiff(config: ProcessConfigResponse): boolean;
14
13
  processTransaction(binding: DataBinding): Promise<ProcessResult>;
15
14
  }
16
- export {};
17
15
  //# sourceMappingURL=cosmos-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cosmos-plugin.d.ts","sourceRoot":"","sources":["../../src/cosmos/cosmos-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,MAAM,EAAiC,MAAM,iBAAiB,CAAA;AACxH,OAAO,EAEL,eAAe,EACf,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,aAAa,EACb,YAAY,EACb,MAAM,gBAAgB,CAAA;AAKvB,UAAU,QAAQ;IAChB,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAA;CACrE;AAED,qBAAa,YAAa,SAAQ,MAAM;IACtC,IAAI,EAAE,MAAM,CAAiB;IAC7B,QAAQ,EAAE,QAAQ,CAEjB;IAEK,SAAS,CAAC,MAAM,EAAE,qBAAqB;IAmC7C,iBAAiB,gBAA4B;IAE7C,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAStD,KAAK,CAAC,OAAO,EAAE,YAAY;IAEjC,SAAS,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO;IAI3C,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAsBvE"}
1
+ {"version":3,"file":"cosmos-plugin.d.ts","sourceRoot":"","sources":["../../src/cosmos/cosmos-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,MAAM,EAAiC,MAAM,iBAAiB,CAAA;AACxH,OAAO,EAEL,WAAW,EACX,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,YAAY,EACb,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAG7D,qBAAa,YAAa,SAAQ,MAAM;IACtC,IAAI,EAAE,MAAM,CAAiB;IAC7B,eAAe,kBAAwB;IAEjC,IAAI,CAAC,MAAM,EAAE,YAAY;IAOzB,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,UAAU,CAAC,EAAE,MAAM;IAmClE,iBAAiB,gBAA4B;IAE7C,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAStD,KAAK,CAAC,OAAO,EAAE,YAAY;IAEjC,SAAS,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO;IAI3C,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAwBvE"}
@@ -2,17 +2,24 @@ import { errorString, GLOBAL_CONFIG, mergeProcessResults, Plugin, PluginManager,
2
2
  import { ContractConfig, HandlerType } from '@sentio/protos';
3
3
  import { ServerError, Status } from 'nice-grpc';
4
4
  import { TemplateInstanceState } from '../core/template.js';
5
+ import { HandlerRegister } from '../core/handler-register.js';
5
6
  import { CosmosProcessorState } from './types.js';
6
7
  export class CosmosPlugin extends Plugin {
7
8
  name = 'CosmosPlugin';
8
- handlers = {
9
- callHandlers: []
10
- };
11
- async configure(config) {
12
- const handlers = {
13
- callHandlers: []
14
- };
9
+ handlerRegister = new HandlerRegister();
10
+ async init(config) {
11
+ for (const aptosProcessor of CosmosProcessorState.INSTANCE.getValues()) {
12
+ const chainId = aptosProcessor.config.chainId;
13
+ config.chainIds.push(chainId);
14
+ }
15
+ }
16
+ async configure(config, forChainId) {
17
+ this.handlerRegister.clear(forChainId);
15
18
  for (const processor of CosmosProcessorState.INSTANCE.getValues()) {
19
+ const chainId = processor.config.chainId;
20
+ if (forChainId !== undefined && forChainId !== chainId.toString()) {
21
+ continue;
22
+ }
16
23
  const contractConfig = ContractConfig.fromPartial({
17
24
  processorType: USER_PROCESSOR,
18
25
  contract: {
@@ -25,7 +32,7 @@ export class CosmosPlugin extends Plugin {
25
32
  endBlock: processor.config.endBlock
26
33
  });
27
34
  for (const callHandler of processor.callHandlers) {
28
- const handlerId = handlers.callHandlers.push(callHandler.handler) - 1;
35
+ const handlerId = this.handlerRegister.register(callHandler.handler, chainId);
29
36
  contractConfig.cosmosLogConfigs.push({
30
37
  handlerId,
31
38
  handlerName: callHandler.handlerName,
@@ -35,7 +42,6 @@ export class CosmosPlugin extends Plugin {
35
42
  // Finish up a contract
36
43
  config.contractConfigs.push(contractConfig);
37
44
  }
38
- this.handlers = handlers;
39
45
  }
40
46
  supportedHandlers = [HandlerType.COSMOS_CALL];
41
47
  processBinding(request) {
@@ -57,7 +63,9 @@ export class CosmosPlugin extends Plugin {
57
63
  const call = binding.data.cosmosCall;
58
64
  const promises = [];
59
65
  for (const handlerId of binding.handlerIds) {
60
- const promise = this.handlers.callHandlers[handlerId](call).catch((e) => {
66
+ const promise = this.handlerRegister
67
+ .getHandlerById(handlerId)(call)
68
+ .catch((e) => {
61
69
  throw new ServerError(Status.INTERNAL, 'error processing transaction: ' + JSON.stringify(call.transaction) + '\n' + errorString(e));
62
70
  });
63
71
  if (GLOBAL_CONFIG.execution.sequential) {
@@ -1 +1 @@
1
- {"version":3,"file":"cosmos-plugin.js","sourceRoot":"","sources":["../../src/cosmos/cosmos-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACxH,OAAO,EACL,cAAc,EAGd,WAAW,EAIZ,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAMjD,MAAM,OAAO,YAAa,SAAQ,MAAM;IACtC,IAAI,GAAW,cAAc,CAAA;IAC7B,QAAQ,GAAa;QACnB,YAAY,EAAE,EAAE;KACjB,CAAA;IAED,KAAK,CAAC,SAAS,CAAC,MAA6B;QAC3C,MAAM,QAAQ,GAAa;YACzB,YAAY,EAAE,EAAE;SACjB,CAAA;QAED,KAAK,MAAM,SAAS,IAAI,oBAAoB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;YAClE,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC;gBAChD,aAAa,EAAE,cAAc;gBAC7B,QAAQ,EAAE;oBACR,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI;oBAC3B,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;oBAC5C,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG;oBACxC,GAAG,EAAE,EAAE;iBACR;gBACD,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;gBACvC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ;aACpC,CAAC,CAAA;YAEF,KAAK,MAAM,WAAW,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;gBACjD,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBAErE,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC;oBACnC,SAAS;oBACT,WAAW,EAAE,WAAW,CAAC,WAAW;oBACpC,UAAU,EAAE,WAAW,CAAC,SAAS,EAAE,UAAU,IAAI,EAAE;iBACpD,CAAC,CAAA;YACJ,CAAC;YAED,uBAAuB;YACvB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,iBAAiB,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;IAE7C,cAAc,CAAC,OAAoB;QACjC,QAAQ,OAAO,CAAC,WAAW,EAAE,CAAC;YAC5B,KAAK,WAAW,CAAC,WAAW;gBAC1B,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;YACzC;gBACE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,4BAA4B,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;QACtG,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAqB,IAAG,CAAC;IAErC,SAAS,CAAC,MAA6B;QACrC,OAAO,qBAAqB,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAA;IAC9F,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,OAAoB;QAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;YAC3C,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,CAAA;QAC7E,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAA;QAEpC,MAAM,QAAQ,GAA6B,EAAE,CAAA;QAE7C,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtE,MAAM,IAAI,WAAW,CACnB,MAAM,CAAC,QAAQ,EACf,gCAAgC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAC5F,CAAA;YACH,CAAC,CAAC,CAAA;YACF,IAAI,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;gBACvC,MAAM,OAAO,CAAA;YACf,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;QACD,OAAO,mBAAmB,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzD,CAAC;CACF;AAED,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"cosmos-plugin.js","sourceRoot":"","sources":["../../src/cosmos/cosmos-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,56 +1,21 @@
1
1
  import { Plugin } from '@sentio/runtime';
2
2
  import { PartitionHandlerManager } from '../core/index.js';
3
- import { Data_EthBlock, Data_EthLog, Data_EthTrace, Data_EthTransaction, DataBinding, HandlerType, PreparedData, PreprocessResult, ProcessConfigResponse, ProcessResult, ProcessStreamResponse_Partitions, StartRequest } from '@sentio/protos';
4
- interface Handlers {
5
- eventHandlers: ((event: Data_EthLog, preparedData?: PreparedData) => Promise<ProcessResult>)[];
6
- traceHandlers: ((trace: Data_EthTrace, preparedData?: PreparedData) => Promise<ProcessResult>)[];
7
- blockHandlers: ((block: Data_EthBlock, preparedData?: PreparedData) => Promise<ProcessResult>)[];
8
- transactionHandlers: ((trace: Data_EthTransaction, preparedData?: PreparedData) => Promise<ProcessResult>)[];
9
- }
10
- interface PreprocessHandlers {
11
- eventHandlers: ((event: Data_EthLog, preprocessStore: {
12
- [k: string]: any;
13
- }) => Promise<PreprocessResult>)[];
14
- traceHandlers: ((trace: Data_EthTrace, preprocessStore: {
15
- [k: string]: any;
16
- }) => Promise<PreprocessResult>)[];
17
- blockHandlers: ((block: Data_EthBlock, preprocessStore: {
18
- [k: string]: any;
19
- }) => Promise<PreprocessResult>)[];
20
- transactionHandlers: ((txn: Data_EthTransaction, preprocessStore: {
21
- [k: string]: any;
22
- }) => Promise<PreprocessResult>)[];
23
- }
3
+ import { DataBinding, HandlerType, InitResponse, PreparedData, ProcessConfigResponse, ProcessResult, ProcessStreamResponse_Partitions, StartRequest } from '@sentio/protos';
4
+ import { HandlerRegister } from '../core/handler-register.js';
24
5
  export declare class EthPlugin extends Plugin {
25
6
  name: string;
26
- handlers: Handlers;
27
- preprocessHandlers: PreprocessHandlers;
7
+ handlerRegister: HandlerRegister;
28
8
  partitionManager: PartitionHandlerManager;
29
- configure(config: ProcessConfigResponse): Promise<void>;
9
+ init(config: InitResponse): Promise<void>;
10
+ configure(config: ProcessConfigResponse, forChainId?: string): Promise<void>;
30
11
  supportedHandlers: HandlerType[];
31
12
  processBinding(request: DataBinding, preparedData: PreparedData | undefined): Promise<ProcessResult>;
32
- preprocessBinding(request: DataBinding, preprocessStore: {
33
- [k: string]: any;
34
- }): Promise<PreprocessResult>;
35
13
  partition(request: DataBinding): Promise<ProcessStreamResponse_Partitions>;
36
14
  start(request: StartRequest): Promise<void>;
37
15
  stateDiff(config: ProcessConfigResponse): boolean;
38
- preprocessLog(request: DataBinding, preprocessStore: {
39
- [k: string]: any;
40
- }): Promise<PreprocessResult>;
41
- preprocessTrace(binding: DataBinding, preprocessStore: {
42
- [k: string]: any;
43
- }): Promise<PreprocessResult>;
44
- preprocessBlock(binding: DataBinding, preprocessStore: {
45
- [k: string]: any;
46
- }): Promise<PreprocessResult>;
47
- preprocessTransaction(binding: DataBinding, preprocessStore: {
48
- [k: string]: any;
49
- }): Promise<PreprocessResult>;
50
16
  processLog(request: DataBinding, preparedData: PreparedData | undefined): Promise<ProcessResult>;
51
17
  processTrace(binding: DataBinding, preparedData: PreparedData | undefined): Promise<ProcessResult>;
52
18
  processBlock(binding: DataBinding, preparedData: PreparedData | undefined): Promise<ProcessResult>;
53
19
  processTransaction(binding: DataBinding, preparedData: PreparedData | undefined): Promise<ProcessResult>;
54
20
  }
55
- export {};
56
21
  //# sourceMappingURL=eth-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eth-plugin.d.ts","sourceRoot":"","sources":["../../src/eth/eth-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eth-plugin.d.ts","sourceRoot":"","sources":["../../src/eth/eth-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,MAAM,EAGP,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAGL,WAAW,EACX,WAAW,EACX,YAAY,EAGZ,YAAY,EAEZ,qBAAqB,EACrB,aAAa,EACb,gCAAgC,EAChC,YAAY,EACb,MAAM,gBAAgB,CAAA;AAYvB,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE7D,qBAAa,SAAU,SAAQ,MAAM;IACnC,IAAI,EAAE,MAAM,CAAc;IAC1B,eAAe,kBAAwB;IAEvC,gBAAgB,0BAAgC;IAE1C,IAAI,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,UAAU,CAAC,EAAE,MAAM;IA6NlE,iBAAiB,gBAAmG;IAEpH,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAgB9F,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAwC1E,KAAK,CAAC,OAAO,EAAE,YAAY;IA6BjC,SAAS,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO;IAI3C,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAwBhG,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IA0BlG,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IAyBlG,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;CAwB/G"}
@@ -5,45 +5,35 @@ import { ServerError, Status } from 'nice-grpc';
5
5
  import { EthProcessorState } from './binds.js';
6
6
  import { AccountProcessorState } from './account-processor-state.js';
7
7
  import { ProcessorTemplateProcessorState } from './base-processor-template.js';
8
- import { defaultPreprocessHandler, GlobalProcessorState } from './base-processor.js';
8
+ import { GlobalProcessorState } from './base-processor.js';
9
9
  import { validateAndNormalizeAddress } from './eth.js';
10
10
  import { EthChainId } from '@sentio/chain';
11
11
  import { EthContext } from './context.js';
12
12
  import { TemplateInstanceState } from '../core/template.js';
13
13
  import { timeOrBlockToBlockNumber } from '@sentio/sdk/utils';
14
+ import { HandlerRegister } from '../core/handler-register.js';
14
15
  export class EthPlugin extends Plugin {
15
16
  name = 'EthPlugin';
16
- handlers = {
17
- blockHandlers: [],
18
- eventHandlers: [],
19
- traceHandlers: [],
20
- transactionHandlers: []
21
- };
22
- preprocessHandlers = {
23
- blockHandlers: [],
24
- eventHandlers: [],
25
- traceHandlers: [],
26
- transactionHandlers: []
27
- };
17
+ handlerRegister = new HandlerRegister();
28
18
  partitionManager = new PartitionHandlerManager();
29
- async configure(config) {
30
- const handlers = {
31
- blockHandlers: [],
32
- eventHandlers: [],
33
- traceHandlers: [],
34
- transactionHandlers: []
35
- };
36
- const preprocessHandlers = {
37
- blockHandlers: [],
38
- eventHandlers: [],
39
- traceHandlers: [],
40
- transactionHandlers: []
41
- };
19
+ async init(config) {
20
+ for (const state of [EthProcessorState.INSTANCE, GlobalProcessorState.INSTANCE, AccountProcessorState.INSTANCE]) {
21
+ for (const processor of state.getValues()) {
22
+ const chainId = processor.getChainId();
23
+ config.chainIds.push(chainId);
24
+ }
25
+ }
26
+ }
27
+ async configure(config, forChainId) {
28
+ this.handlerRegister.clear(forChainId);
42
29
  for (const processor of EthProcessorState.INSTANCE.getValues()) {
43
30
  // If server favor incremental update this need to change
44
31
  // Start basic config for contract
45
32
  const chainId = processor.getChainId();
46
33
  // this.processorsByChainId.set(chainId, processor)
34
+ if (forChainId !== undefined && forChainId !== chainId.toString()) {
35
+ continue;
36
+ }
47
37
  const provider = getProvider(chainId);
48
38
  const startBlock = await timeOrBlockToBlockNumber(provider, processor.config.start);
49
39
  const endBlock = processor.config.end ? await timeOrBlockToBlockNumber(provider, processor.config.end) : undefined;
@@ -60,8 +50,7 @@ export class EthPlugin extends Plugin {
60
50
  });
61
51
  // Step 1. Prepare all the block handlers
62
52
  for (const blockHandler of processor.blockHandlers) {
63
- preprocessHandlers.blockHandlers.push(blockHandler.preprocessHandler ?? defaultPreprocessHandler);
64
- const handlerId = handlers.blockHandlers.push(blockHandler.handler) - 1;
53
+ const handlerId = this.handlerRegister.register(blockHandler.handler, chainId);
65
54
  this.partitionManager.registerPartitionHandler(HandlerType.ETH_BLOCK, handlerId, blockHandler.partitionHandler);
66
55
  // TODO wrap the block handler into one
67
56
  contractConfig.intervalConfigs.push({
@@ -76,8 +65,7 @@ export class EthPlugin extends Plugin {
76
65
  }
77
66
  // Step 2. Prepare all trace handlers
78
67
  for (const traceHandler of processor.traceHandlers) {
79
- preprocessHandlers.traceHandlers.push(traceHandler.preprocessHandler ?? defaultPreprocessHandler);
80
- const handlerId = handlers.traceHandlers.push(traceHandler.handler) - 1;
68
+ const handlerId = this.handlerRegister.register(traceHandler.handler, chainId);
81
69
  this.partitionManager.registerPartitionHandler(HandlerType.ETH_TRACE, handlerId, traceHandler.partitionHandler);
82
70
  for (const signature of traceHandler.signatures) {
83
71
  contractConfig.traceConfigs.push({
@@ -91,8 +79,7 @@ export class EthPlugin extends Plugin {
91
79
  // Step 3. Prepare all the event handlers
92
80
  for (const eventsHandler of processor.eventHandlers) {
93
81
  // associate id with filter
94
- preprocessHandlers.eventHandlers.push(eventsHandler.preprocessHandler ?? defaultPreprocessHandler);
95
- const handlerId = handlers.eventHandlers.push(eventsHandler.handler) - 1;
82
+ const handlerId = this.handlerRegister.register(eventsHandler.handler, chainId);
96
83
  this.partitionManager.registerPartitionHandler(HandlerType.ETH_LOG, handlerId, eventsHandler.partitionHandler);
97
84
  const logConfig = {
98
85
  handlerId: handlerId,
@@ -129,6 +116,9 @@ export class EthPlugin extends Plugin {
129
116
  }
130
117
  for (const processor of GlobalProcessorState.INSTANCE.getValues()) {
131
118
  const chainId = processor.getChainId();
119
+ if (forChainId !== undefined && forChainId !== chainId.toString()) {
120
+ continue;
121
+ }
132
122
  const provider = getProvider(chainId);
133
123
  const startBlock = await timeOrBlockToBlockNumber(provider, processor.config.start);
134
124
  const endBlock = processor.config.end ? await timeOrBlockToBlockNumber(provider, processor.config.end) : undefined;
@@ -144,8 +134,7 @@ export class EthPlugin extends Plugin {
144
134
  endBlock
145
135
  });
146
136
  for (const blockHandler of processor.blockHandlers) {
147
- preprocessHandlers.blockHandlers.push(blockHandler.preprocessHandler ?? defaultPreprocessHandler);
148
- const handlerId = handlers.blockHandlers.push(blockHandler.handler) - 1;
137
+ const handlerId = this.handlerRegister.register(blockHandler.handler, chainId);
149
138
  contractConfig.intervalConfigs.push({
150
139
  slot: 0,
151
140
  slotInterval: blockHandler.blockInterval,
@@ -157,8 +146,7 @@ export class EthPlugin extends Plugin {
157
146
  });
158
147
  }
159
148
  for (const transactionHandler of processor.transactionHandler) {
160
- preprocessHandlers.transactionHandlers.push(transactionHandler.preprocessHandler ?? defaultPreprocessHandler);
161
- const handlerId = handlers.transactionHandlers.push(transactionHandler.handler) - 1;
149
+ const handlerId = this.handlerRegister.register(transactionHandler.handler, chainId);
162
150
  this.partitionManager.registerPartitionHandler(HandlerType.ETH_TRANSACTION, handlerId, transactionHandler.partitionHandler);
163
151
  contractConfig.transactionConfig.push({
164
152
  handlerId: handlerId,
@@ -167,8 +155,7 @@ export class EthPlugin extends Plugin {
167
155
  });
168
156
  }
169
157
  for (const traceHandler of processor.traceHandlers) {
170
- preprocessHandlers.traceHandlers.push(traceHandler.preprocessHandler ?? defaultPreprocessHandler);
171
- const handlerId = handlers.traceHandlers.push(traceHandler.handler) - 1;
158
+ const handlerId = this.handlerRegister.register(traceHandler.handler, chainId);
172
159
  for (const signature of traceHandler.signatures) {
173
160
  contractConfig.traceConfigs.push({
174
161
  signature: signature,
@@ -182,6 +169,9 @@ export class EthPlugin extends Plugin {
182
169
  }
183
170
  // part 1.b prepare EVM account processors
184
171
  for (const processor of AccountProcessorState.INSTANCE.getValues()) {
172
+ if (forChainId !== undefined && forChainId !== processor.getChainId().toString()) {
173
+ continue;
174
+ }
185
175
  const accountConfig = AccountConfig.fromPartial({
186
176
  address: validateAndNormalizeAddress(processor.config.address),
187
177
  chainId: processor.getChainId().toString(),
@@ -190,8 +180,7 @@ export class EthPlugin extends Plugin {
190
180
  // TODO add interval
191
181
  for (const eventsHandler of processor.eventHandlers) {
192
182
  // associate id with filter
193
- preprocessHandlers.eventHandlers.push(eventsHandler.preprocessHandler ?? defaultPreprocessHandler);
194
- const handlerId = handlers.eventHandlers.push(eventsHandler.handler) - 1;
183
+ const handlerId = this.handlerRegister.register(eventsHandler.handler, processor.getChainId());
195
184
  const logConfig = {
196
185
  handlerId: handlerId,
197
186
  handlerName: eventsHandler.handlerName,
@@ -228,8 +217,8 @@ export class EthPlugin extends Plugin {
228
217
  }
229
218
  config.accountConfigs.push(accountConfig);
230
219
  }
231
- this.handlers = handlers;
232
- this.preprocessHandlers = preprocessHandlers;
220
+ // this.handlers = handlers
221
+ // this.preprocessHandlers = preprocessHandlers
233
222
  }
234
223
  supportedHandlers = [HandlerType.ETH_LOG, HandlerType.ETH_BLOCK, HandlerType.ETH_TRACE, HandlerType.ETH_TRANSACTION];
235
224
  processBinding(request, preparedData) {
@@ -247,20 +236,6 @@ export class EthPlugin extends Plugin {
247
236
  throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType);
248
237
  }
249
238
  }
250
- preprocessBinding(request, preprocessStore) {
251
- switch (request.handlerType) {
252
- case HandlerType.ETH_LOG:
253
- return this.preprocessLog(request, preprocessStore);
254
- case HandlerType.ETH_TRACE:
255
- return this.preprocessTrace(request, preprocessStore);
256
- case HandlerType.ETH_BLOCK:
257
- return this.preprocessBlock(request, preprocessStore);
258
- case HandlerType.ETH_TRANSACTION:
259
- return this.preprocessTransaction(request, preprocessStore);
260
- default:
261
- throw new ServerError(Status.INVALID_ARGUMENT, 'No handle type registered ' + request.handlerType);
262
- }
263
- }
264
239
  async partition(request) {
265
240
  let data;
266
241
  switch (request.handlerType) {
@@ -322,63 +297,6 @@ export class EthPlugin extends Plugin {
322
297
  stateDiff(config) {
323
298
  return TemplateInstanceState.INSTANCE.getValues().length !== config.templateInstances.length;
324
299
  }
325
- async preprocessLog(request, preprocessStore) {
326
- if (!request.data?.ethLog?.log) {
327
- throw new ServerError(Status.INVALID_ARGUMENT, "Log can't be null");
328
- }
329
- const ethLog = request.data.ethLog;
330
- const promises = [];
331
- for (const handlerId of request.handlerIds) {
332
- const handler = this.preprocessHandlers.eventHandlers[handlerId];
333
- const promise = handler(ethLog, preprocessStore).catch((e) => {
334
- throw new ServerError(Status.INTERNAL, 'error processing log: ' + JSON.stringify(ethLog.log) + '\n' + errorString(e));
335
- });
336
- promises.push(promise);
337
- }
338
- return mergePreprocessResults(await Promise.all(promises));
339
- }
340
- async preprocessTrace(binding, preprocessStore) {
341
- if (!binding.data?.ethTrace?.trace) {
342
- throw new ServerError(Status.INVALID_ARGUMENT, "Trace can't be null");
343
- }
344
- const ethTrace = binding.data.ethTrace;
345
- const promises = [];
346
- for (const handlerId of binding.handlerIds) {
347
- const promise = this.preprocessHandlers.traceHandlers[handlerId](ethTrace, preprocessStore).catch((e) => {
348
- throw new ServerError(Status.INTERNAL, 'error processing trace: ' + JSON.stringify(ethTrace.trace) + '\n' + errorString(e));
349
- });
350
- promises.push(promise);
351
- }
352
- return mergePreprocessResults(await Promise.all(promises));
353
- }
354
- async preprocessBlock(binding, preprocessStore) {
355
- if (!binding.data?.ethBlock?.block) {
356
- throw new ServerError(Status.INVALID_ARGUMENT, "Block can't be empty");
357
- }
358
- const ethBlock = binding.data.ethBlock;
359
- const promises = [];
360
- for (const handlerId of binding.handlerIds) {
361
- const promise = this.preprocessHandlers.blockHandlers[handlerId](ethBlock, preprocessStore).catch((e) => {
362
- throw new ServerError(Status.INTERNAL, 'error processing block: ' + ethBlock.block?.number + '\n' + errorString(e));
363
- });
364
- promises.push(promise);
365
- }
366
- return mergePreprocessResults(await Promise.all(promises));
367
- }
368
- async preprocessTransaction(binding, preprocessStore) {
369
- if (!binding.data?.ethTransaction?.transaction) {
370
- throw new ServerError(Status.INVALID_ARGUMENT, "transaction can't be null");
371
- }
372
- const ethTransaction = binding.data.ethTransaction;
373
- const promises = [];
374
- for (const handlerId of binding.handlerIds) {
375
- const promise = this.preprocessHandlers.transactionHandlers[handlerId](ethTransaction, preprocessStore).catch((e) => {
376
- throw new ServerError(Status.INTERNAL, 'error processing transaction: ' + JSON.stringify(ethTransaction.transaction) + '\n' + errorString(e));
377
- });
378
- promises.push(promise);
379
- }
380
- return mergePreprocessResults(await Promise.all(promises));
381
- }
382
300
  async processLog(request, preparedData) {
383
301
  if (!request.data?.ethLog?.log) {
384
302
  throw new ServerError(Status.INVALID_ARGUMENT, "Log can't be null");
@@ -386,7 +304,7 @@ export class EthPlugin extends Plugin {
386
304
  const ethLog = request.data.ethLog;
387
305
  const promises = [];
388
306
  for (const handlerId of request.handlerIds) {
389
- const handler = this.handlers.eventHandlers[handlerId];
307
+ const handler = this.handlerRegister.getHandlerById(handlerId);
390
308
  const promise = handler(ethLog, preparedData).catch((e) => {
391
309
  console.error('error processing log: ', e);
392
310
  throw new ServerError(Status.INTERNAL, 'error processing log: ' + JSON.stringify(ethLog.log) + '\n' + errorString(e));
@@ -405,7 +323,9 @@ export class EthPlugin extends Plugin {
405
323
  const ethTrace = binding.data.ethTrace;
406
324
  const promises = [];
407
325
  for (const handlerId of binding.handlerIds) {
408
- const promise = this.handlers.traceHandlers[handlerId](ethTrace, preparedData).catch((e) => {
326
+ const promise = this.handlerRegister
327
+ .getHandlerById(handlerId)(ethTrace, preparedData)
328
+ .catch((e) => {
409
329
  console.error('error processing trace: ', e);
410
330
  throw new ServerError(Status.INTERNAL, 'error processing trace: ' + JSON.stringify(ethTrace.trace) + '\n' + errorString(e));
411
331
  });
@@ -423,7 +343,9 @@ export class EthPlugin extends Plugin {
423
343
  const ethBlock = binding.data.ethBlock;
424
344
  const promises = [];
425
345
  for (const handlerId of binding.handlerIds) {
426
- const promise = this.handlers.blockHandlers[handlerId](ethBlock, preparedData).catch((e) => {
346
+ const promise = this.handlerRegister
347
+ .getHandlerById(handlerId)(ethBlock, preparedData)
348
+ .catch((e) => {
427
349
  console.error('error processing block: ', e);
428
350
  throw new ServerError(Status.INTERNAL, 'error processing block: ' + ethBlock.block?.number + '\n' + errorString(e));
429
351
  });
@@ -441,7 +363,9 @@ export class EthPlugin extends Plugin {
441
363
  const ethTransaction = binding.data.ethTransaction;
442
364
  const promises = [];
443
365
  for (const handlerId of binding.handlerIds) {
444
- const promise = this.handlers.transactionHandlers[handlerId](ethTransaction, preparedData).catch((e) => {
366
+ const promise = this.handlerRegister
367
+ .getHandlerById(handlerId)(ethTransaction, preparedData)
368
+ .catch((e) => {
445
369
  throw new ServerError(Status.INTERNAL, 'error processing transaction: ' + JSON.stringify(ethTransaction.transaction) + '\n' + errorString(e));
446
370
  });
447
371
  if (GLOBAL_CONFIG.execution.sequential) {