@sentio/sdk 2.42.0-rc.2 → 2.42.0-rc.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"btc-plugin.d.ts","sourceRoot":"","sources":["../../src/btc/btc-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,MAAM,EAAiC,MAAM,iBAAiB,CAAA;AACxH,OAAO,EAGL,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,aAAa,EAEb,YAAY,EACb,MAAM,gBAAgB,CAAA;AASvB,UAAU,QAAQ;IAChB,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAA;CACvE;AAED,qBAAa,SAAU,SAAQ,MAAM;IACnC,IAAI,EAAE,MAAM,CAAc;IAC1B,QAAQ,EAAE,QAAQ,CAEjB;IAEK,SAAS,CAAC,MAAM,EAAE,qBAAqB;IAgD7C,iBAAiB,gBAAgC;IAEjD,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;CAuBvE"}
1
+ {"version":3,"file":"btc-plugin.d.ts","sourceRoot":"","sources":["../../src/btc/btc-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,MAAM,EAAiC,MAAM,iBAAiB,CAAA;AACxH,OAAO,EAEL,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,aAAa,EACb,YAAY,EACb,MAAM,gBAAgB,CAAA;AAOvB,UAAU,QAAQ;IAChB,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAA;CACvE;AAED,qBAAa,SAAU,SAAQ,MAAM;IACnC,IAAI,EAAE,MAAM,CAAc;IAC1B,QAAQ,EAAE,QAAQ,CAEjB;IAEK,SAAS,CAAC,MAAM,EAAE,qBAAqB;IA4C7C,iBAAiB,gBAAgC;IAEjD,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;CAuBvE"}
@@ -3,8 +3,7 @@ import { ContractConfig, HandlerType } from '@sentio/protos';
3
3
  import { ServerError, Status } from 'nice-grpc';
4
4
  import { TemplateInstanceState } from '../core/template.js';
5
5
  import { BTCProcessorState } from './btc-processor.js';
6
- import { serializeRichValue } from '../store/util.js';
7
- import { isArray } from 'radash';
6
+ import { filters2Proto } from './filter.js';
8
7
  export class BTCPlugin extends Plugin {
9
8
  name = 'BTCPlugin';
10
9
  handlers = {
@@ -30,21 +29,17 @@ export class BTCPlugin extends Plugin {
30
29
  const handlerId = handlers.txHandlers.push(callHandler.handler) - 1;
31
30
  if (callHandler.filter) {
32
31
  contractConfig.btcTransactionConfigs.push({
33
- filters: [
34
- {
35
- fieldFilters: toFilters(callHandler.filter)
36
- }
37
- ],
32
+ filters: filters2Proto(callHandler.filter),
38
33
  handlerId
39
34
  });
40
35
  }
41
- else {
36
+ else if (contractConfig.contract?.address != '*') {
42
37
  contractConfig.btcTransactionConfigs.push({
43
- filters: [
44
- {
45
- address: contractConfig.contract?.address || '*'
38
+ filters: filters2Proto({
39
+ outputFilter: {
40
+ script_address: processor.config.address
46
41
  }
47
- ],
42
+ }),
48
43
  handlerId
49
44
  });
50
45
  }
@@ -86,24 +81,4 @@ export class BTCPlugin extends Plugin {
86
81
  }
87
82
  }
88
83
  PluginManager.INSTANCE.register(new BTCPlugin());
89
- function toFilters(filters) {
90
- const arr = !isArray(filters) ? [filters] : filters;
91
- return {
92
- filters: arr.map((f) => {
93
- const { field, ...rest } = f;
94
- return {
95
- field: field,
96
- ...toValues(rest)
97
- };
98
- })
99
- };
100
- }
101
- function toValues(rest) {
102
- return Object.entries(rest).reduce((acc, [key, value]) => {
103
- if (value !== undefined) {
104
- acc[key] = serializeRichValue(value);
105
- }
106
- return acc;
107
- }, {});
108
- }
109
84
  //# sourceMappingURL=btc-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"btc-plugin.js","sourceRoot":"","sources":["../../src/btc/btc-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"btc-plugin.js","sourceRoot":"","sources":["../../src/btc/btc-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { ListStateStorage } from '@sentio/runtime';
2
- import { BTCContext, Transaction, TransactionFilters } from './types.js';
2
+ import { BTCContext, Transaction } from './types.js';
3
3
  import { Data_BTCTransaction, ProcessResult } from '@sentio/protos';
4
+ import { TransactionFilters } from './filter.js';
4
5
  export declare class BTCProcessorState extends ListStateStorage<BTCProcessor> {
5
6
  static INSTANCE: BTCProcessorState;
6
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"btc-processor.d.ts","sourceRoot":"","sources":["../../src/btc/btc-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEnE,qBAAa,iBAAkB,SAAQ,gBAAgB,CAAC,YAAY,CAAC;IACnE,MAAM,CAAC,QAAQ,oBAA0B;CAC1C;AAED,qBAAa,YAAY;IAGX,QAAQ,CAAC,MAAM,EAAE,kBAAkB;IAF/C,YAAY,EAAE,WAAW,CAAC,mBAAmB,CAAC,EAAE,CAAK;gBAEhC,MAAM,EAAE,kBAAkB;IAE/C,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY;IAM9C,aAAa,CAClB,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAC5E,MAAM,CAAC,EAAE,kBAAkB;CAoB9B;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IAC5C,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAC5B,CAAA"}
1
+ {"version":3,"file":"btc-processor.d.ts","sourceRoot":"","sources":["../../src/btc/btc-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhD,qBAAa,iBAAkB,SAAQ,gBAAgB,CAAC,YAAY,CAAC;IACnE,MAAM,CAAC,QAAQ,oBAA0B;CAC1C;AAED,qBAAa,YAAY;IAGX,QAAQ,CAAC,MAAM,EAAE,kBAAkB;IAF/C,YAAY,EAAE,WAAW,CAAC,mBAAmB,CAAC,EAAE,CAAK;gBAEhC,MAAM,EAAE,kBAAkB;IAE/C,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY;IAM9C,aAAa,CAClB,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAC5E,MAAM,CAAC,EAAE,kBAAkB;CAoB9B;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IAC5C,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAC5B,CAAA"}
@@ -18,7 +18,7 @@ export class BTCProcessor {
18
18
  const callHandler = {
19
19
  handler: async (call) => {
20
20
  const tx = call.transaction;
21
- const ctx = new BTCContext(this.config.chainId, this.config.name ?? this.config.address ?? '', tx, this.config.address ?? tx.vout[0].scriptpubkey_address);
21
+ const ctx = new BTCContext(this.config.chainId, this.config.name ?? this.config.address ?? '', tx, this.config.address ?? tx.vout[0].script_address);
22
22
  await handler(tx, ctx);
23
23
  return ctx.stopAndGetResult();
24
24
  },
@@ -1 +1 @@
1
- {"version":3,"file":"btc-processor.js","sourceRoot":"","sources":["../../src/btc/btc-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAmC,MAAM,YAAY,CAAA;AAGxE,MAAM,OAAO,iBAAkB,SAAQ,gBAA8B;IACnE,MAAM,CAAC,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAA;;AAG3C,MAAM,OAAO,YAAY;IAGF;IAFrB,YAAY,GAAuC,EAAE,CAAA;IAErD,YAAqB,MAA0B;QAA1B,WAAM,GAAN,MAAM,CAAoB;IAAG,CAAC;IAEnD,MAAM,CAAC,IAAI,CAAC,MAA0B;QACpC,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAA;QAC1C,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC9C,OAAO,SAAS,CAAA;IAClB,CAAC;IAEM,aAAa,CAClB,OAA4E,EAC5E,MAA2B;QAE3B,MAAM,WAAW,GAAG;YAClB,OAAO,EAAE,KAAK,EAAE,IAAyB,EAAE,EAAE;gBAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,WAA0B,CAAA;gBAE1C,MAAM,GAAG,GAAG,IAAI,UAAU,CACxB,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAC7C,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,oBAAoB,CACvD,CAAA;gBACD,MAAM,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;gBACtB,OAAO,GAAG,CAAC,gBAAgB,EAAE,CAAA;YAC/B,CAAC;YACD,MAAM;SACP,CAAA;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
1
+ {"version":3,"file":"btc-processor.js","sourceRoot":"","sources":["../../src/btc/btc-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAe,MAAM,YAAY,CAAA;AAIpD,MAAM,OAAO,iBAAkB,SAAQ,gBAA8B;IACnE,MAAM,CAAC,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAA;;AAG3C,MAAM,OAAO,YAAY;IAGF;IAFrB,YAAY,GAAuC,EAAE,CAAA;IAErD,YAAqB,MAA0B;QAA1B,WAAM,GAAN,MAAM,CAAoB;IAAG,CAAC;IAEnD,MAAM,CAAC,IAAI,CAAC,MAA0B;QACpC,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAA;QAC1C,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC9C,OAAO,SAAS,CAAA;IAClB,CAAC;IAEM,aAAa,CAClB,OAA4E,EAC5E,MAA2B;QAE3B,MAAM,WAAW,GAAG;YAClB,OAAO,EAAE,KAAK,EAAE,IAAyB,EAAE,EAAE;gBAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,WAA0B,CAAA;gBAE1C,MAAM,GAAG,GAAG,IAAI,UAAU,CACxB,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAC7C,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CACjD,CAAA;gBACD,MAAM,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;gBACtB,OAAO,GAAG,CAAC,gBAAgB,EAAE,CAAA;YAC/B,CAAC;YACD,MAAM;SACP,CAAA;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
@@ -0,0 +1,44 @@
1
+ import { BTCTransactionFilter } from '@sentio/protos';
2
+ import { BigDecimal } from '@sentio/bigdecimal';
3
+ import { Transaction, Vin, Vout } from './types.js';
4
+ export type TransactionFields = keyof Omit<Transaction, 'vin' | 'vout'>;
5
+ export type VinFields = keyof Omit<Vin, 'pre_vout' | 'pre_transaction'>;
6
+ export type VOutFields = keyof Vout;
7
+ export type Filter<F extends string> = {
8
+ [K in F]?: Condition | Comparable;
9
+ };
10
+ export type Condition = {
11
+ eq?: Comparable;
12
+ gt?: Comparable;
13
+ gte?: Comparable;
14
+ lt?: Comparable;
15
+ lte?: Comparable;
16
+ ne?: Comparable;
17
+ prefix?: string;
18
+ contains?: string;
19
+ not_contains?: string;
20
+ length_eq?: number;
21
+ length_gt?: number;
22
+ length_lt?: number;
23
+ has_any?: Array<Comparable>;
24
+ has_all?: Array<Comparable>;
25
+ in?: Array<Comparable>;
26
+ };
27
+ export type Filters<T extends string> = Filter<T> | Filter<T>[];
28
+ export type VinFilter = Filter<VinFields> & {
29
+ preVOut?: Filter<VOutFields>;
30
+ preTransaction?: {
31
+ filter?: Array<Filter<TransactionFields>>;
32
+ outputFilter?: Filters<VOutFields>;
33
+ };
34
+ };
35
+ export type VOutFilter = Filter<VOutFields>;
36
+ export type TransactionFilter = {
37
+ inputFilter?: VinFilter | VinFilter[];
38
+ outputFilter?: VOutFilter | VOutFilter[];
39
+ filter?: Array<Filter<TransactionFields>>;
40
+ };
41
+ export type Comparable = number | BigDecimal | bigint | Date | string | boolean;
42
+ export type TransactionFilters = TransactionFilter | TransactionFilter[];
43
+ export declare function filters2Proto(filter: TransactionFilters): BTCTransactionFilter[];
44
+ //# sourceMappingURL=filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/btc/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAIrB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC,CAAA;AAEvE,MAAM,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,iBAAiB,CAAC,CAAA;AAEvE,MAAM,MAAM,UAAU,GAAG,MAAM,IAAI,CAAA;AAEnC,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,MAAM,IAAI;KACpC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU;CAClC,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,CAAC,EAAE,UAAU,CAAA;IACf,EAAE,CAAC,EAAE,UAAU,CAAA;IACf,GAAG,CAAC,EAAE,UAAU,CAAA;IAChB,EAAE,CAAC,EAAE,UAAU,CAAA;IACf,GAAG,CAAC,EAAE,UAAU,CAAA;IAChB,EAAE,CAAC,EAAE,UAAU,CAAA;IAEf,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,OAAO,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;IAE3B,OAAO,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;IAC3B,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;AAE/D,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IAC5B,cAAc,CAAC,EAAE;QACf,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAA;QACzC,YAAY,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;KAEnC,CAAA;CACF,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;AAE3C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAA;IACrC,YAAY,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAA;IACxC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAA;AAE/E,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,iBAAiB,EAAE,CAAA;AA6BxE,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,oBAAoB,EAAE,CAShF"}
@@ -0,0 +1,105 @@
1
+ import { serializeRichValue } from '../store/util.js';
2
+ import { BigDecimal } from '@sentio/bigdecimal';
3
+ function toVinFilter(inputFilter) {
4
+ if (inputFilter) {
5
+ const filters = Array.isArray(inputFilter) ? inputFilter : [inputFilter];
6
+ const protoFilters = convertFilters(filters);
7
+ const preVOutFilters = filters.map((f) => f.preVOut);
8
+ const preTxFilters = filters.map((f) => f.preTransaction);
9
+ return {
10
+ filters: protoFilters
11
+ ? {
12
+ filters: protoFilters
13
+ }
14
+ : undefined,
15
+ preVOut: convertFilters(preVOutFilters)?.[0],
16
+ preTransaction: filters2Proto(preTxFilters)?.[0]
17
+ };
18
+ }
19
+ return undefined;
20
+ }
21
+ function toVOutFilter(outputFilter) {
22
+ const filters = Array.isArray(outputFilter) ? outputFilter : [outputFilter];
23
+ return convertFilters(filters)?.[0];
24
+ }
25
+ export function filters2Proto(filter) {
26
+ const filters = Array.isArray(filter) ? filter : [filter];
27
+ return filters.map((f) => {
28
+ return {
29
+ filter: convertFilters(f.filter),
30
+ inputFilter: toVinFilter(f.inputFilter),
31
+ outputFilter: toVOutFilter(f.outputFilter)
32
+ };
33
+ });
34
+ }
35
+ function toCondition(value) {
36
+ const ret = {};
37
+ if (value instanceof Date) {
38
+ ret.eq = serializeRichValue(value);
39
+ }
40
+ if (typeof value === 'number') {
41
+ ret.eq = serializeRichValue(value);
42
+ }
43
+ if (typeof value === 'string') {
44
+ ret.eq = serializeRichValue(value);
45
+ }
46
+ if (value instanceof BigDecimal) {
47
+ ret.eq = serializeRichValue(value);
48
+ }
49
+ if (typeof value === 'bigint') {
50
+ ret.eq = serializeRichValue(value);
51
+ }
52
+ if (typeof value === 'boolean') {
53
+ ret.eq = serializeRichValue(value);
54
+ }
55
+ if (Array.isArray(value)) {
56
+ ret.in = { values: value.map((v) => serializeRichValue(v)) };
57
+ }
58
+ for (const [k, v] of Object.entries(value)) {
59
+ switch (k) {
60
+ case 'prefix':
61
+ case 'contains':
62
+ case 'notContains':
63
+ ret[k] = v.toString();
64
+ break;
65
+ case 'lengthEq':
66
+ case 'lengthGt':
67
+ case 'lengthLt':
68
+ ret[k] = v;
69
+ break;
70
+ case 'hasAny':
71
+ case 'hasAll':
72
+ case 'in':
73
+ ret[k] = { values: v.map((v) => serializeRichValue(v)) };
74
+ break;
75
+ case 'eq':
76
+ case 'gt':
77
+ case 'gte':
78
+ case 'lt':
79
+ case 'lte':
80
+ case 'ne':
81
+ ret[k] = serializeRichValue(v);
82
+ break;
83
+ default:
84
+ throw new Error('Unknown condition op: ' + k);
85
+ }
86
+ }
87
+ return ret;
88
+ }
89
+ function convertFilters(filters) {
90
+ if (filters && filters.length > 0) {
91
+ const ret = [];
92
+ for (const filter of filters) {
93
+ const f = {
94
+ conditions: {}
95
+ };
96
+ for (const [key, value] of Object.entries(filter)) {
97
+ f.conditions[key] = toCondition(value);
98
+ }
99
+ ret.push(f);
100
+ }
101
+ return ret;
102
+ }
103
+ return undefined;
104
+ }
105
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/btc/filter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=filter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.test.d.ts","sourceRoot":"","sources":["../../src/btc/filter.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.test.js","sourceRoot":"","sources":["../../src/btc/filter.test.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAsB;IACvC,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC;IAC3C,YAAY,EAAE;QACZ,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE;KAC7C;CACF,CAAA;AAED,MAAM,cAAc,GAAsB;IACxC,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC;IAC3C,WAAW,EAAE;QACX,cAAc,EAAE;YACd,YAAY,EAAE;gBACZ,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE;gBACrB,UAAU,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE;aAC7C;SACF;KACF;CACF,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export { BTCPlugin } from './btc-plugin.js';
2
2
  export * from './types.js';
3
3
  export * from './btc-processor.js';
4
+ export * from './filter.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/btc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/btc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA"}
package/lib/btc/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { BTCPlugin } from './btc-plugin.js';
2
2
  export * from './types.js';
3
3
  export * from './btc-processor.js';
4
+ export * from './filter.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/btc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/btc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA"}
@@ -1,63 +1,59 @@
1
1
  import { BaseContext, Labels } from '../core/index.js';
2
2
  import { RecordMetaData } from '@sentio/protos';
3
3
  import { ChainId } from '@sentio/chain';
4
- import { BigDecimal } from '@sentio/bigdecimal';
5
- type Vin = {
6
- txid: string;
7
- vout: number;
8
- is_coinbase: boolean;
9
- scriptsig: string;
10
- scriptsig_asm: string;
11
- inner_redeemscript_asm?: string;
12
- inner_witnessscript_asm?: string;
4
+ export type Vin = {
5
+ vin_index: number;
6
+ coinbase?: string;
7
+ spent_transaction_hash?: string;
8
+ spent_output_index?: number;
13
9
  sequence: number;
14
- witness: string[];
15
- prevout: Vout;
16
- is_pegin?: boolean;
17
- issuance?: {
18
- asset_id: string;
19
- is_reissuance: boolean;
20
- asset_blinding_nonce: string;
21
- asset_entropy: string;
22
- contract_hash: string;
23
- assetamount?: number;
24
- assetamountcommitment?: string;
25
- tokenamount?: number;
26
- tokenamountcommitment?: string;
27
- };
28
- };
29
- type Vout = {
30
- scriptpubkey: string;
31
- scriptpubkey_asm: string;
32
- scriptpubkey_type: string;
33
- scriptpubkey_address: string;
10
+ witness?: string[];
11
+ script_asm: string;
12
+ script_hex: string;
34
13
  value: number;
35
- valuecommitment?: string;
36
- asset?: string;
37
- assetcommitment?: string;
38
- pegout?: {
39
- genesis_hash: string;
40
- scriptpubkey: string;
41
- scriptpubkey_asm: string;
42
- scriptpubkey_address: string;
43
- };
14
+ addresses?: string[];
15
+ pre_vout?: Vout;
16
+ pre_transaction?: Transaction;
44
17
  };
45
- type Status = {
46
- confirmed: boolean;
47
- block_height?: number;
48
- block_hash?: string;
49
- block_time?: number;
18
+ export type Vout = {
19
+ value: number;
20
+ vout_index: number;
21
+ script_asm: string;
22
+ script_hex: string;
23
+ script_type: string;
24
+ script_address: string;
25
+ script_reg_sigs: number;
50
26
  };
51
27
  export type Transaction = {
52
- txid: string;
53
- version: number;
54
- locktime: number;
28
+ transaction_hash: string;
29
+ transaction_index: number;
30
+ block_hash: string;
31
+ block_number: number;
32
+ block_timestamp: Date;
55
33
  size: number;
56
- weight: number;
57
- fee: number;
34
+ virtual_size: number;
35
+ version: number;
36
+ lock_time: number;
37
+ input_count: number;
38
+ output_count: number;
58
39
  vin: Vin[];
59
40
  vout: Vout[];
60
- status: Status;
41
+ };
42
+ export type Block = {
43
+ block_hash: string;
44
+ block_number: number;
45
+ block_timestamp: Date;
46
+ size: number;
47
+ stripped_size: number;
48
+ weight: number;
49
+ version: number;
50
+ merkle_root: string;
51
+ nonce: number;
52
+ bits: string;
53
+ difficulty: number;
54
+ previous_hash: string;
55
+ next_hash: string;
56
+ transaction_count: number;
61
57
  };
62
58
  export declare class BTCContext extends BaseContext {
63
59
  readonly chainId: string;
@@ -68,19 +64,4 @@ export declare class BTCContext extends BaseContext {
68
64
  protected getMetaDataInternal(name: string, labels: Labels): RecordMetaData;
69
65
  getChainId(): ChainId;
70
66
  }
71
- export type TransactionFilter = {
72
- field: 'vin.txid' | 'vin.vout' | 'vin.is_coinbase' | 'vin.scriptsig' | 'vin.scriptsig_asm' | 'vout.scriptpubkey' | 'vout.scriptpubkey_asm' | 'vout.scriptpubkey_type' | 'vout.scriptpubkey_address' | 'vout.value' | 'status.block_height' | 'status.block_hash' | 'status.block_time';
73
- prefix?: string;
74
- equals?: Comparable;
75
- gt?: Comparable;
76
- gte?: Comparable;
77
- lt?: Comparable;
78
- lte?: Comparable;
79
- ne?: Comparable;
80
- contains?: string;
81
- not_contains?: string;
82
- };
83
- type Comparable = number | BigDecimal | bigint | Date;
84
- export type TransactionFilters = TransactionFilter | TransactionFilter[];
85
- export {};
86
67
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/btc/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/btc/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAmB,MAAM,kBAAkB,CAAA;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,MAAM,MAAM,GAAG,GAAG;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,QAAQ,CAAC,EAAE,IAAI,CAAA;IACf,eAAe,CAAC,EAAE,WAAW,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,IAAI,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,GAAG,EAAE,CAAA;IACV,IAAI,EAAE,IAAI,EAAE,CAAA;CACb,CAAA;AAED,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,IAAI,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,qBAAa,UAAW,SAAQ,WAAW;IAEvC,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,EAAE,EAAE,WAAW;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM;gBAHf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,WAAW,EACf,OAAO,EAAE,MAAM;IAK1B,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc;IAc3E,UAAU,IAAI,OAAO;CAGtB"}
package/lib/btc/types.js CHANGED
@@ -15,9 +15,9 @@ export class BTCContext extends BaseContext {
15
15
  return {
16
16
  address: this.address,
17
17
  contractName: this.name,
18
- blockNumber: BigInt(this.tx.status?.block_time ?? 0),
18
+ blockNumber: BigInt(this.tx.block_number ?? 0),
19
19
  transactionIndex: 0,
20
- transactionHash: this.tx.txid,
20
+ transactionHash: this.tx.transaction_hash,
21
21
  chainId: this.getChainId(),
22
22
  name: name,
23
23
  logIndex: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/btc/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAU,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAkEvE,MAAM,OAAO,UAAW,SAAQ,WAAW;IAE9B;IACA;IACA;IACA;IAJX,YACW,OAAe,EACf,IAAY,EACZ,EAAe,EACf,OAAe;QAExB,KAAK,CAAC,EAAE,CAAC,CAAA;QALA,YAAO,GAAP,OAAO,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAQ;QACZ,OAAE,GAAF,EAAE,CAAa;QACf,YAAO,GAAP,OAAO,CAAQ;IAG1B,CAAC;IAES,mBAAmB,CAAC,IAAY,EAAE,MAAc;QACxD,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,IAAI;YACvB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,CAAC;YACpD,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI;YAC7B,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;SAChC,CAAA;IACH,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAkB,CAAA;IAChC,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/btc/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAU,eAAe,EAAE,MAAM,kBAAkB,CAAA;AA8DvE,MAAM,OAAO,UAAW,SAAQ,WAAW;IAE9B;IACA;IACA;IACA;IAJX,YACW,OAAe,EACf,IAAY,EACZ,EAAe,EACf,OAAe;QAExB,KAAK,CAAC,EAAE,CAAC,CAAA;QALA,YAAO,GAAP,OAAO,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAQ;QACZ,OAAE,GAAF,EAAE,CAAa;QACf,YAAO,GAAP,OAAO,CAAQ;IAG1B,CAAC;IAES,mBAAmB,CAAC,IAAY,EAAE,MAAc;QACxD,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,IAAI;YACvB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,IAAI,CAAC,CAAC;YAC9C,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,gBAAgB;YACzC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;SAChC,CAAA;IACH,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAkB,CAAA;IAChC,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentio/sdk",
3
- "version": "2.42.0-rc.2",
3
+ "version": "2.42.0-rc.4",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "exports": {
@@ -84,8 +84,8 @@
84
84
  "typechain": "^8.3.2",
85
85
  "utility-types": "^3.11.0",
86
86
  "yaml": "^2.3.4",
87
- "@sentio/protos": "2.42.0-rc.2",
88
- "@sentio/runtime": "^2.42.0-rc.2"
87
+ "@sentio/protos": "2.42.0-rc.4",
88
+ "@sentio/runtime": "^2.42.0-rc.4"
89
89
  },
90
90
  "peerDependencies": {
91
91
  "tsup": "npm:@sentio/tsup@^6.7.2"
@@ -1,22 +1,18 @@
1
1
  import { errorString, GLOBAL_CONFIG, mergeProcessResults, Plugin, PluginManager, USER_PROCESSOR } from '@sentio/runtime'
2
2
  import {
3
- BTCTransactionFilter_FieldFilters,
4
3
  ContractConfig,
5
4
  Data_BTCTransaction,
6
5
  DataBinding,
7
6
  HandlerType,
8
7
  ProcessConfigResponse,
9
8
  ProcessResult,
10
- RichValue,
11
9
  StartRequest
12
10
  } from '@sentio/protos'
13
11
 
14
12
  import { ServerError, Status } from 'nice-grpc'
15
13
  import { TemplateInstanceState } from '../core/template.js'
16
14
  import { BTCProcessorState } from './btc-processor.js'
17
- import { TransactionFilter, TransactionFilters } from './types.js'
18
- import { serializeRichValue } from '../store/util.js'
19
- import { isArray } from 'radash'
15
+ import { filters2Proto, TransactionFilter } from './filter.js'
20
16
 
21
17
  interface Handlers {
22
18
  txHandlers: ((trace: Data_BTCTransaction) => Promise<ProcessResult>)[]
@@ -50,20 +46,16 @@ export class BTCPlugin extends Plugin {
50
46
 
51
47
  if (callHandler.filter) {
52
48
  contractConfig.btcTransactionConfigs.push({
53
- filters: [
54
- {
55
- fieldFilters: toFilters(callHandler.filter)
56
- }
57
- ],
49
+ filters: filters2Proto(callHandler.filter),
58
50
  handlerId
59
51
  })
60
- } else {
52
+ } else if (contractConfig.contract?.address != '*') {
61
53
  contractConfig.btcTransactionConfigs.push({
62
- filters: [
63
- {
64
- address: contractConfig.contract?.address || '*'
54
+ filters: filters2Proto({
55
+ outputFilter: {
56
+ script_address: processor.config.address
65
57
  }
66
- ],
58
+ } as TransactionFilter),
67
59
  handlerId
68
60
  })
69
61
  }
@@ -119,28 +111,3 @@ export class BTCPlugin extends Plugin {
119
111
  }
120
112
 
121
113
  PluginManager.INSTANCE.register(new BTCPlugin())
122
-
123
- function toFilters(filters: TransactionFilters): BTCTransactionFilter_FieldFilters {
124
- const arr = !isArray(filters) ? [filters] : filters
125
- return {
126
- filters: arr.map((f: TransactionFilter) => {
127
- const { field, ...rest } = f
128
- return {
129
- field: field,
130
- ...toValues(rest)
131
- }
132
- })
133
- }
134
- }
135
-
136
- function toValues(rest: Omit<TransactionFilter, 'field'>): Record<keyof Omit<TransactionFilter, 'field'>, RichValue> {
137
- return Object.entries(rest).reduce(
138
- (acc, [key, value]) => {
139
- if (value !== undefined) {
140
- acc[key] = serializeRichValue(value)
141
- }
142
- return acc
143
- },
144
- {} as Record<string, RichValue>
145
- )
146
- }
@@ -1,6 +1,7 @@
1
1
  import { ListStateStorage } from '@sentio/runtime'
2
- import { BTCContext, Transaction, TransactionFilters } from './types.js'
2
+ import { BTCContext, Transaction } from './types.js'
3
3
  import { Data_BTCTransaction, ProcessResult } from '@sentio/protos'
4
+ import { TransactionFilters } from './filter.js'
4
5
 
5
6
  export class BTCProcessorState extends ListStateStorage<BTCProcessor> {
6
7
  static INSTANCE = new BTCProcessorState()
@@ -29,7 +30,7 @@ export class BTCProcessor {
29
30
  this.config.chainId,
30
31
  this.config.name ?? this.config.address ?? '',
31
32
  tx,
32
- this.config.address ?? tx.vout[0].scriptpubkey_address
33
+ this.config.address ?? tx.vout[0].script_address
33
34
  )
34
35
  await handler(tx, ctx)
35
36
  return ctx.stopAndGetResult()
@@ -0,0 +1,176 @@
1
+ import {
2
+ BTCTransactionFilter,
3
+ BTCTransactionFilter_Condition,
4
+ BTCTransactionFilter_Filter,
5
+ BTCTransactionFilter_VinFilter
6
+ } from '@sentio/protos'
7
+ import { serializeRichValue } from '../store/util.js'
8
+ import { BigDecimal } from '@sentio/bigdecimal'
9
+ import { Transaction, Vin, Vout } from './types.js'
10
+
11
+ export type TransactionFields = keyof Omit<Transaction, 'vin' | 'vout'>
12
+
13
+ export type VinFields = keyof Omit<Vin, 'pre_vout' | 'pre_transaction'>
14
+
15
+ export type VOutFields = keyof Vout
16
+
17
+ export type Filter<F extends string> = {
18
+ [K in F]?: Condition | Comparable
19
+ }
20
+
21
+ export type Condition = {
22
+ eq?: Comparable
23
+ gt?: Comparable
24
+ gte?: Comparable
25
+ lt?: Comparable
26
+ lte?: Comparable
27
+ ne?: Comparable
28
+ // string has the prefix
29
+ prefix?: string
30
+ // string contains
31
+ contains?: string
32
+ not_contains?: string
33
+ length_eq?: number
34
+ length_gt?: number
35
+ length_lt?: number
36
+ // array contains any of the values
37
+ has_any?: Array<Comparable>
38
+ // array contains all the values
39
+ has_all?: Array<Comparable>
40
+ in?: Array<Comparable>
41
+ }
42
+
43
+ export type Filters<T extends string> = Filter<T> | Filter<T>[]
44
+
45
+ export type VinFilter = Filter<VinFields> & {
46
+ preVOut?: Filter<VOutFields>
47
+ preTransaction?: {
48
+ filter?: Array<Filter<TransactionFields>>
49
+ outputFilter?: Filters<VOutFields>
50
+ // can't have inputFilter here, we can only support one level of nesting
51
+ }
52
+ }
53
+
54
+ export type VOutFilter = Filter<VOutFields>
55
+
56
+ export type TransactionFilter = {
57
+ inputFilter?: VinFilter | VinFilter[]
58
+ outputFilter?: VOutFilter | VOutFilter[]
59
+ filter?: Array<Filter<TransactionFields>>
60
+ }
61
+
62
+ export type Comparable = number | BigDecimal | bigint | Date | string | boolean
63
+
64
+ export type TransactionFilters = TransactionFilter | TransactionFilter[]
65
+
66
+ function toVinFilter(inputFilter?: VinFilter | VinFilter[]): BTCTransactionFilter_VinFilter | undefined {
67
+ if (inputFilter) {
68
+ const filters = Array.isArray(inputFilter) ? inputFilter : [inputFilter]
69
+
70
+ const protoFilters = convertFilters(filters as Filter<VinFields>[])
71
+ const preVOutFilters = filters.map((f) => f.preVOut)
72
+ const preTxFilters = filters.map((f) => f.preTransaction) as TransactionFilters
73
+
74
+ return {
75
+ filters: protoFilters
76
+ ? {
77
+ filters: protoFilters
78
+ }
79
+ : undefined,
80
+ preVOut: convertFilters(preVOutFilters as Filter<VOutFields>[])?.[0],
81
+ preTransaction: filters2Proto(preTxFilters)?.[0]
82
+ }
83
+ }
84
+
85
+ return undefined
86
+ }
87
+
88
+ function toVOutFilter(outputFilter?: VOutFilter | VOutFilter[]) {
89
+ const filters = Array.isArray(outputFilter) ? outputFilter : ([outputFilter] as Filter<VOutFields>[])
90
+ return convertFilters(filters)?.[0]
91
+ }
92
+
93
+ export function filters2Proto(filter: TransactionFilters): BTCTransactionFilter[] {
94
+ const filters = Array.isArray(filter) ? filter : [filter]
95
+ return filters.map((f) => {
96
+ return {
97
+ filter: convertFilters(f.filter),
98
+ inputFilter: toVinFilter(f.inputFilter),
99
+ outputFilter: toVOutFilter(f.outputFilter)
100
+ } as BTCTransactionFilter
101
+ })
102
+ }
103
+
104
+ function toCondition(value: Condition | Comparable): BTCTransactionFilter_Condition {
105
+ const ret: BTCTransactionFilter_Condition = {}
106
+ if (value instanceof Date) {
107
+ ret.eq = serializeRichValue(value)
108
+ }
109
+ if (typeof value === 'number') {
110
+ ret.eq = serializeRichValue(value)
111
+ }
112
+ if (typeof value === 'string') {
113
+ ret.eq = serializeRichValue(value)
114
+ }
115
+ if (value instanceof BigDecimal) {
116
+ ret.eq = serializeRichValue(value)
117
+ }
118
+ if (typeof value === 'bigint') {
119
+ ret.eq = serializeRichValue(value)
120
+ }
121
+ if (typeof value === 'boolean') {
122
+ ret.eq = serializeRichValue(value)
123
+ }
124
+ if (Array.isArray(value)) {
125
+ ret.in = { values: value.map((v) => serializeRichValue(v)) }
126
+ }
127
+
128
+ for (const [k, v] of Object.entries(value)) {
129
+ switch (k) {
130
+ case 'prefix':
131
+ case 'contains':
132
+ case 'notContains':
133
+ ret[k] = v.toString()
134
+ break
135
+ case 'lengthEq':
136
+ case 'lengthGt':
137
+ case 'lengthLt':
138
+ ret[k] = v
139
+ break
140
+ case 'hasAny':
141
+ case 'hasAll':
142
+ case 'in':
143
+ ret[k] = { values: v.map((v: any) => serializeRichValue(v)) }
144
+ break
145
+ case 'eq':
146
+ case 'gt':
147
+ case 'gte':
148
+ case 'lt':
149
+ case 'lte':
150
+ case 'ne':
151
+ ret[k] = serializeRichValue(v)
152
+ break
153
+ default:
154
+ throw new Error('Unknown condition op: ' + k)
155
+ }
156
+ }
157
+
158
+ return ret
159
+ }
160
+
161
+ function convertFilters<T extends string>(filters?: Array<Filter<T>>): BTCTransactionFilter_Filter[] | undefined {
162
+ if (filters && filters.length > 0) {
163
+ const ret: BTCTransactionFilter_Filter[] = []
164
+ for (const filter of filters) {
165
+ const f: BTCTransactionFilter_Filter = {
166
+ conditions: {}
167
+ }
168
+ for (const [key, value] of Object.entries(filter)) {
169
+ f.conditions[key] = toCondition(value as any)
170
+ }
171
+ ret.push(f)
172
+ }
173
+ return ret
174
+ }
175
+ return undefined
176
+ }
package/src/btc/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { BTCPlugin } from './btc-plugin.js'
2
2
  export * from './types.js'
3
3
  export * from './btc-processor.js'
4
+ export * from './filter.js'
package/src/btc/types.ts CHANGED
@@ -1,67 +1,63 @@
1
1
  import { BaseContext, Labels, normalizeLabels } from '../core/index.js'
2
2
  import { RecordMetaData } from '@sentio/protos'
3
3
  import { ChainId } from '@sentio/chain'
4
- import { BigDecimal } from '@sentio/bigdecimal'
5
4
 
6
- type Vin = {
7
- txid: string
8
- vout: number
9
- is_coinbase: boolean
10
- scriptsig: string
11
- scriptsig_asm: string
12
- inner_redeemscript_asm?: string
13
- inner_witnessscript_asm?: string
5
+ export type Vin = {
6
+ vin_index: number
7
+ coinbase?: string
8
+ spent_transaction_hash?: string
9
+ spent_output_index?: number
14
10
  sequence: number
15
- witness: string[]
16
- prevout: Vout
17
- is_pegin?: boolean
18
- issuance?: {
19
- asset_id: string
20
- is_reissuance: boolean
21
- asset_blinding_nonce: string
22
- asset_entropy: string
23
- contract_hash: string
24
- assetamount?: number
25
- assetamountcommitment?: string
26
- tokenamount?: number
27
- tokenamountcommitment?: string
28
- }
29
- }
30
-
31
- type Vout = {
32
- scriptpubkey: string
33
- scriptpubkey_asm: string
34
- scriptpubkey_type: string
35
- scriptpubkey_address: string
11
+ witness?: string[]
12
+ script_asm: string
13
+ script_hex: string
36
14
  value: number
37
- valuecommitment?: string
38
- asset?: string
39
- assetcommitment?: string
40
- pegout?: {
41
- genesis_hash: string
42
- scriptpubkey: string
43
- scriptpubkey_asm: string
44
- scriptpubkey_address: string
45
- }
15
+ addresses?: string[]
16
+ pre_vout?: Vout
17
+ pre_transaction?: Transaction
46
18
  }
47
19
 
48
- type Status = {
49
- confirmed: boolean
50
- block_height?: number
51
- block_hash?: string
52
- block_time?: number
20
+ export type Vout = {
21
+ value: number
22
+ vout_index: number
23
+ script_asm: string
24
+ script_hex: string
25
+ script_type: string
26
+ script_address: string
27
+ script_reg_sigs: number
53
28
  }
54
29
 
55
30
  export type Transaction = {
56
- txid: string
57
- version: number
58
- locktime: number
31
+ transaction_hash: string
32
+ transaction_index: number
33
+ block_hash: string
34
+ block_number: number
35
+ block_timestamp: Date
59
36
  size: number
60
- weight: number
61
- fee: number
37
+ virtual_size: number
38
+ version: number
39
+ lock_time: number
40
+ input_count: number
41
+ output_count: number
62
42
  vin: Vin[]
63
43
  vout: Vout[]
64
- status: Status
44
+ }
45
+
46
+ export type Block = {
47
+ block_hash: string
48
+ block_number: number
49
+ block_timestamp: Date
50
+ size: number
51
+ stripped_size: number
52
+ weight: number
53
+ version: number
54
+ merkle_root: string
55
+ nonce: number
56
+ bits: string
57
+ difficulty: number
58
+ previous_hash: string
59
+ next_hash: string
60
+ transaction_count: number
65
61
  }
66
62
 
67
63
  export class BTCContext extends BaseContext {
@@ -78,9 +74,9 @@ export class BTCContext extends BaseContext {
78
74
  return {
79
75
  address: this.address,
80
76
  contractName: this.name,
81
- blockNumber: BigInt(this.tx.status?.block_time ?? 0),
77
+ blockNumber: BigInt(this.tx.block_number ?? 0),
82
78
  transactionIndex: 0,
83
- transactionHash: this.tx.txid,
79
+ transactionHash: this.tx.transaction_hash,
84
80
  chainId: this.getChainId(),
85
81
  name: name,
86
82
  logIndex: 0,
@@ -92,33 +88,3 @@ export class BTCContext extends BaseContext {
92
88
  return this.chainId as ChainId
93
89
  }
94
90
  }
95
-
96
- export type TransactionFilter = {
97
- field:
98
- | 'vin.txid'
99
- | 'vin.vout'
100
- | 'vin.is_coinbase'
101
- | 'vin.scriptsig'
102
- | 'vin.scriptsig_asm'
103
- | 'vout.scriptpubkey'
104
- | 'vout.scriptpubkey_asm'
105
- | 'vout.scriptpubkey_type'
106
- | 'vout.scriptpubkey_address'
107
- | 'vout.value'
108
- | 'status.block_height'
109
- | 'status.block_hash'
110
- | 'status.block_time'
111
- prefix?: string
112
- equals?: Comparable
113
- gt?: Comparable
114
- gte?: Comparable
115
- lt?: Comparable
116
- lte?: Comparable
117
- ne?: Comparable
118
- contains?: string
119
- not_contains?: string
120
- }
121
-
122
- type Comparable = number | BigDecimal | bigint | Date
123
-
124
- export type TransactionFilters = TransactionFilter | TransactionFilter[]