@sentio/sdk 2.54.0-rc.6 → 2.54.0-rc.7
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.
- package/lib/fuel/fuel-plugin.d.ts +4 -2
- package/lib/fuel/fuel-plugin.d.ts.map +1 -1
- package/lib/fuel/fuel-plugin.js +54 -26
- package/lib/fuel/fuel-plugin.js.map +1 -1
- package/lib/fuel/fuel-processor.d.ts +3 -2
- package/lib/fuel/fuel-processor.d.ts.map +1 -1
- package/lib/fuel/fuel-processor.js +19 -24
- package/lib/fuel/fuel-processor.js.map +1 -1
- package/lib/fuel/transaction.d.ts +5 -1
- package/lib/fuel/transaction.d.ts.map +1 -1
- package/lib/fuel/transaction.js +17 -10
- package/lib/fuel/transaction.js.map +1 -1
- package/lib/fuel/types.d.ts +6 -1
- package/lib/fuel/types.d.ts.map +1 -1
- package/lib/fuel/types.js.map +1 -1
- package/lib/testing/fuel-facet.d.ts.map +1 -1
- package/lib/testing/fuel-facet.js +8 -7
- package/lib/testing/fuel-facet.js.map +1 -1
- package/package.json +3 -3
- package/src/fuel/fuel-plugin.ts +62 -25
- package/src/fuel/fuel-processor.ts +35 -31
- package/src/fuel/transaction.ts +18 -9
- package/src/fuel/types.ts +7 -0
- package/src/testing/fuel-facet.ts +8 -7
@@ -1,8 +1,9 @@
|
|
1
1
|
import { Plugin } from '@sentio/runtime';
|
2
|
-
import { Data_FuelBlock, Data_FuelCall, DataBinding, HandlerType, ProcessConfigResponse, ProcessResult, StartRequest } from '@sentio/protos';
|
2
|
+
import { Data_FuelBlock, Data_FuelCall, Data_FuelReceipt, DataBinding, HandlerType, ProcessConfigResponse, ProcessResult, StartRequest } from '@sentio/protos';
|
3
3
|
interface Handlers {
|
4
|
-
|
4
|
+
transactionHandlers: ((trace: Data_FuelCall) => Promise<ProcessResult>)[];
|
5
5
|
blockHandlers: ((block: Data_FuelBlock) => Promise<ProcessResult>)[];
|
6
|
+
logHandlers: ((log: Data_FuelReceipt) => Promise<ProcessResult>)[];
|
6
7
|
}
|
7
8
|
export declare class FuelPlugin extends Plugin {
|
8
9
|
name: string;
|
@@ -12,6 +13,7 @@ export declare class FuelPlugin extends Plugin {
|
|
12
13
|
processBinding(request: DataBinding): Promise<ProcessResult>;
|
13
14
|
start(request: StartRequest): Promise<void>;
|
14
15
|
stateDiff(config: ProcessConfigResponse): boolean;
|
16
|
+
processLog(binding: DataBinding): Promise<ProcessResult>;
|
15
17
|
processTransaction(binding: DataBinding): Promise<ProcessResult>;
|
16
18
|
processBlock(binding: DataBinding): Promise<ProcessResult>;
|
17
19
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"fuel-plugin.d.ts","sourceRoot":"","sources":["../../src/fuel/fuel-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,MAAM,EAAiC,MAAM,iBAAiB,CAAA;AACxH,OAAO,EAEL,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,aAAa,EACb,YAAY,EACb,MAAM,gBAAgB,CAAA;AASvB,UAAU,QAAQ;IAChB,
|
1
|
+
{"version":3,"file":"fuel-plugin.d.ts","sourceRoot":"","sources":["../../src/fuel/fuel-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,MAAM,EAAiC,MAAM,iBAAiB,CAAA;AACxH,OAAO,EAEL,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,aAAa,EACb,YAAY,EACb,MAAM,gBAAgB,CAAA;AASvB,UAAU,QAAQ;IAChB,mBAAmB,EAAE,CAAC,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAA;IACzE,aAAa,EAAE,CAAC,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAA;IACpE,WAAW,EAAE,CAAC,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAA;CACnE;AAED,qBAAa,UAAW,SAAQ,MAAM;IACpC,IAAI,EAAE,MAAM,CAAe;IAC3B,QAAQ,EAAE,QAAQ,CAIjB;IAEK,SAAS,CAAC,MAAM,EAAE,qBAAqB;IAgF7C,iBAAiB,gBAKhB;IAED,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAatD,KAAK,CAAC,OAAO,EAAE,YAAY;IAUjC,SAAS,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO;IAI3C,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAsBxD,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAuBhE,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAsBjE"}
|
package/lib/fuel/fuel-plugin.js
CHANGED
@@ -9,13 +9,15 @@ import { FuelGlobalProcessor } from './global-processor.js';
|
|
9
9
|
export class FuelPlugin extends Plugin {
|
10
10
|
name = 'FuelPlugin';
|
11
11
|
handlers = {
|
12
|
-
|
13
|
-
blockHandlers: []
|
12
|
+
transactionHandlers: [],
|
13
|
+
blockHandlers: [],
|
14
|
+
logHandlers: []
|
14
15
|
};
|
15
16
|
async configure(config) {
|
16
17
|
const handlers = {
|
17
|
-
|
18
|
-
blockHandlers: []
|
18
|
+
transactionHandlers: [],
|
19
|
+
blockHandlers: [],
|
20
|
+
logHandlers: []
|
19
21
|
};
|
20
22
|
for (const processor of FuelProcessorState.INSTANCE.getValues()) {
|
21
23
|
const contractConfig = ContractConfig.fromPartial({
|
@@ -30,24 +32,16 @@ export class FuelPlugin extends Plugin {
|
|
30
32
|
endBlock: processor.config.endBlock
|
31
33
|
});
|
32
34
|
for (const callHandler of processor.callHandlers) {
|
33
|
-
const handlerId = handlers.
|
35
|
+
const handlerId = handlers.transactionHandlers.push(callHandler.handler) - 1;
|
34
36
|
const handlerName = callHandler.handlerName;
|
35
37
|
if (processor instanceof FuelProcessor) {
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
else {
|
44
|
-
const fetchConfig = {
|
45
|
-
handlerId,
|
46
|
-
handlerName,
|
47
|
-
filters: callHandler.fetchConfig?.filters || []
|
48
|
-
};
|
49
|
-
contractConfig.fuelCallConfigs.push(fetchConfig);
|
50
|
-
}
|
38
|
+
// on transaction
|
39
|
+
const fetchConfig = {
|
40
|
+
handlerId,
|
41
|
+
handlerName,
|
42
|
+
filters: callHandler.fetchConfig?.filters || []
|
43
|
+
};
|
44
|
+
contractConfig.fuelCallConfigs.push(fetchConfig);
|
51
45
|
}
|
52
46
|
else if (processor instanceof FuelAssetProcessor) {
|
53
47
|
const assetConfig = callHandler.assetConfig;
|
@@ -67,6 +61,17 @@ export class FuelPlugin extends Plugin {
|
|
67
61
|
contractConfig.contract.address = '*';
|
68
62
|
}
|
69
63
|
}
|
64
|
+
for (const logHandler of processor.logHandlers ?? []) {
|
65
|
+
const handlerId = handlers.logHandlers.push(logHandler.handler) - 1;
|
66
|
+
const handlerName = logHandler.handlerName;
|
67
|
+
if (processor instanceof FuelProcessor) {
|
68
|
+
contractConfig.fuelLogConfigs.push({
|
69
|
+
logIds: logHandler.logConfig?.logIds || [],
|
70
|
+
handlerId,
|
71
|
+
handlerName
|
72
|
+
});
|
73
|
+
}
|
74
|
+
}
|
70
75
|
for (const blockHandler of processor.blockHandlers) {
|
71
76
|
const handlerId = handlers.blockHandlers.push(blockHandler.handler) - 1;
|
72
77
|
contractConfig.intervalConfigs.push({
|
@@ -80,16 +85,22 @@ export class FuelPlugin extends Plugin {
|
|
80
85
|
// fetchConfig: blockHandler.fetchConfig
|
81
86
|
});
|
82
87
|
}
|
83
|
-
// Finish up a contract
|
84
88
|
config.contractConfigs.push(contractConfig);
|
85
89
|
}
|
86
90
|
this.handlers = handlers;
|
87
91
|
}
|
88
|
-
supportedHandlers = [
|
92
|
+
supportedHandlers = [
|
93
|
+
HandlerType.FUEL_TRANSACTION,
|
94
|
+
HandlerType.FUEL_RECEIPT,
|
95
|
+
HandlerType.FUEL_CALL,
|
96
|
+
HandlerType.FUEL_BLOCK
|
97
|
+
];
|
89
98
|
processBinding(request) {
|
90
99
|
switch (request.handlerType) {
|
91
|
-
case HandlerType.
|
100
|
+
case HandlerType.FUEL_TRANSACTION:
|
92
101
|
return this.processTransaction(request);
|
102
|
+
case HandlerType.FUEL_RECEIPT:
|
103
|
+
return this.processLog(request);
|
93
104
|
case HandlerType.FUEL_BLOCK:
|
94
105
|
return this.processBlock(request);
|
95
106
|
default:
|
@@ -109,14 +120,31 @@ export class FuelPlugin extends Plugin {
|
|
109
120
|
stateDiff(config) {
|
110
121
|
return TemplateInstanceState.INSTANCE.getValues().length !== config.templateInstances.length;
|
111
122
|
}
|
123
|
+
async processLog(binding) {
|
124
|
+
if (!binding.data?.fuelLog?.transaction) {
|
125
|
+
throw new ServerError(Status.INVALID_ARGUMENT, "transaction can't be null");
|
126
|
+
}
|
127
|
+
const log = binding.data.fuelLog;
|
128
|
+
const promises = [];
|
129
|
+
for (const handlerId of binding.handlerIds) {
|
130
|
+
const promise = this.handlers.logHandlers[handlerId](log).catch((e) => {
|
131
|
+
throw new ServerError(Status.INTERNAL, 'error processing transaction: ' + JSON.stringify(log) + '\n' + errorString(e));
|
132
|
+
});
|
133
|
+
if (GLOBAL_CONFIG.execution.sequential) {
|
134
|
+
await promise;
|
135
|
+
}
|
136
|
+
promises.push(promise);
|
137
|
+
}
|
138
|
+
return mergeProcessResults(await Promise.all(promises));
|
139
|
+
}
|
112
140
|
async processTransaction(binding) {
|
113
|
-
if (!binding.data?.
|
141
|
+
if (!binding.data?.fuelTransaction?.transaction) {
|
114
142
|
throw new ServerError(Status.INVALID_ARGUMENT, "transaction can't be null");
|
115
143
|
}
|
116
|
-
const fuelTransaction = binding.data.
|
144
|
+
const fuelTransaction = binding.data.fuelTransaction;
|
117
145
|
const promises = [];
|
118
146
|
for (const handlerId of binding.handlerIds) {
|
119
|
-
const promise = this.handlers.
|
147
|
+
const promise = this.handlers.transactionHandlers[handlerId](fuelTransaction).catch((e) => {
|
120
148
|
throw new ServerError(Status.INTERNAL, 'error processing transaction: ' + JSON.stringify(fuelTransaction.transaction) + '\n' + errorString(e));
|
121
149
|
});
|
122
150
|
if (GLOBAL_CONFIG.execution.sequential) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"fuel-plugin.js","sourceRoot":"","sources":["../../src/fuel/fuel-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,
|
1
|
+
{"version":3,"file":"fuel-plugin.js","sourceRoot":"","sources":["../../src/fuel/fuel-plugin.ts"],"names":[],"mappings":"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"}
|
@@ -1,14 +1,15 @@
|
|
1
|
-
import { Data_FuelCall, HandleInterval } from '@sentio/protos';
|
1
|
+
import { Data_FuelCall, Data_FuelReceipt, HandleInterval } from '@sentio/protos';
|
2
2
|
import { FuelContractContext } from './context.js';
|
3
3
|
import { Contract, JsonAbi } from 'fuels';
|
4
4
|
import { FuelNetwork } from './network.js';
|
5
5
|
import { FuelFetchConfig } from './transaction.js';
|
6
|
-
import { BlockHandler, CallHandler, FuelBaseProcessor, FuelBlock, FuelLog, FuelTransaction } from './types.js';
|
6
|
+
import { BlockHandler, CallHandler, FuelBaseProcessor, FuelBlock, FuelLog, FuelTransaction, LogHandler } from './types.js';
|
7
7
|
import { PromiseOrVoid } from '../core/index.js';
|
8
8
|
export declare class FuelProcessor<TContract extends Contract> implements FuelBaseProcessor<FuelProcessorConfig> {
|
9
9
|
readonly config: FuelProcessorConfig;
|
10
10
|
callHandlers: CallHandler<Data_FuelCall>[];
|
11
11
|
blockHandlers: BlockHandler[];
|
12
|
+
logHandlers: LogHandler<Data_FuelReceipt>[];
|
12
13
|
private provider;
|
13
14
|
private contract;
|
14
15
|
static bind(config: FuelProcessorConfig): FuelProcessor<any>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"fuel-processor.d.ts","sourceRoot":"","sources":["../../src/fuel/fuel-processor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"fuel-processor.d.ts","sourceRoot":"","sources":["../../src/fuel/fuel-processor.ts"],"names":[],"mappings":"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"}
|
@@ -1,15 +1,16 @@
|
|
1
|
+
import { ProcessResult } from '@sentio/protos';
|
1
2
|
import { FuelCall, FuelContext, FuelContractContext } from './context.js';
|
2
3
|
import { bn, Contract, Interface } from 'fuels';
|
3
4
|
import { getProvider } from './network.js';
|
4
|
-
import { decodeFuelTransactionWithAbi, DEFAULT_FUEL_FETCH_CONFIG } from './transaction.js';
|
5
|
+
import { decodeFuelTransaction, decodeFuelTransactionWithAbi, decodeLog, DEFAULT_FUEL_FETCH_CONFIG } from './transaction.js';
|
5
6
|
import { FuelProcessorState } from './types.js';
|
6
|
-
import { mergeProcessResults } from '@sentio/runtime';
|
7
7
|
import { ServerError, Status } from 'nice-grpc';
|
8
8
|
import { getHandlerName, proxyProcessor } from '../utils/metrics.js';
|
9
9
|
export class FuelProcessor {
|
10
10
|
config;
|
11
11
|
callHandlers = [];
|
12
12
|
blockHandlers = [];
|
13
|
+
logHandlers = [];
|
13
14
|
provider;
|
14
15
|
contract;
|
15
16
|
static bind(config) {
|
@@ -122,40 +123,34 @@ export class FuelProcessor {
|
|
122
123
|
}
|
123
124
|
onLog(logIdFilter, handler) {
|
124
125
|
const logIds = new Set(Array.isArray(logIdFilter) ? logIdFilter : [logIdFilter]);
|
125
|
-
const
|
126
|
+
const logHandler = {
|
126
127
|
handlerName: getHandlerName(),
|
127
|
-
handler: async (
|
128
|
+
handler: async ({ transaction, receiptIndex, timestamp }) => {
|
128
129
|
try {
|
129
|
-
const
|
130
|
-
const
|
131
|
-
const
|
132
|
-
const
|
133
|
-
|
134
|
-
const ctx = new FuelContractContext(this.config.chainId, this.contract, this.config.address, this.config.name ?? this.config.address,
|
135
|
-
ctx.setLogIndex(
|
136
|
-
await handler(log, ctx);
|
137
|
-
|
130
|
+
const tx = decodeFuelTransaction(transaction, this.provider);
|
131
|
+
const index = Number(receiptIndex);
|
132
|
+
const receipt = tx.receipts[index];
|
133
|
+
const log = decodeLog(receipt, this.config.abi);
|
134
|
+
if (log) {
|
135
|
+
const ctx = new FuelContractContext(this.config.chainId, this.contract, this.config.address, this.config.name ?? this.config.address, timestamp || new Date(0), tx, null);
|
136
|
+
ctx.setLogIndex(index);
|
137
|
+
await handler({ receiptIndex: index, ...log }, ctx);
|
138
|
+
return ctx.stopAndGetResult();
|
139
|
+
}
|
140
|
+
else {
|
141
|
+
console.error(`Log with receipt index ${receiptIndex} not found in tx`);
|
138
142
|
}
|
139
|
-
return mergeProcessResults(results);
|
140
143
|
}
|
141
144
|
catch (e) {
|
142
145
|
console.error(e);
|
143
|
-
return {
|
144
|
-
gauges: [],
|
145
|
-
counters: [],
|
146
|
-
events: [],
|
147
|
-
exports: [],
|
148
|
-
states: {
|
149
|
-
configUpdated: false
|
150
|
-
}
|
151
|
-
};
|
152
146
|
}
|
147
|
+
return ProcessResult.fromPartial({});
|
153
148
|
},
|
154
149
|
logConfig: {
|
155
150
|
logIds: Array.from(logIds)
|
156
151
|
}
|
157
152
|
};
|
158
|
-
this.
|
153
|
+
this.logHandlers.push(logHandler);
|
159
154
|
return this;
|
160
155
|
}
|
161
156
|
onInterval(handler, timeInterval, blockInterval
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"fuel-processor.js","sourceRoot":"","sources":["../../src/fuel/fuel-processor.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"fuel-processor.js","sourceRoot":"","sources":["../../src/fuel/fuel-processor.ts"],"names":[],"mappings":"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"}
|
@@ -1,9 +1,13 @@
|
|
1
|
-
import { AbiMap, Provider } from 'fuels';
|
1
|
+
import { AbiMap, JsonAbi, Provider } from 'fuels';
|
2
2
|
import { FuelTransaction } from './types.js';
|
3
3
|
export type FuelFetchConfig = {
|
4
4
|
includeFailed?: boolean;
|
5
5
|
};
|
6
6
|
export declare const DEFAULT_FUEL_FETCH_CONFIG: FuelFetchConfig;
|
7
7
|
export declare function decodeFuelTransaction(gqlTransaction: any, provider: Provider): FuelTransaction;
|
8
|
+
export declare function decodeLog(receipt: any | undefined, abi: JsonAbi): {
|
9
|
+
logId: string;
|
10
|
+
data: any;
|
11
|
+
} | null;
|
8
12
|
export declare function decodeFuelTransactionWithAbi(gqlTransaction: any, abiMap: AbiMap, provider: Provider): Promise<FuelTransaction>;
|
9
13
|
//# sourceMappingURL=transaction.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/fuel/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/fuel/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAQN,OAAO,EAEP,QAAQ,EAIT,MAAM,OAAO,CAAA;AACd,OAAO,EAAW,eAAe,EAAE,MAAM,YAAY,CAAA;AAErD,MAAM,MAAM,eAAe,GAAG;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,eAEvC,CAAA;AAWD,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,GAAG,eAAe,CA+B9F;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,SAAS,EAAE,GAAG,EAAE,OAAO;;;SAS/D;AAED,wBAAsB,4BAA4B,CAChD,cAAc,EAAE,GAAG,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,eAAe,CAAC,CAiE1B"}
|
package/lib/fuel/transaction.js
CHANGED
@@ -41,6 +41,16 @@ export function decodeFuelTransaction(gqlTransaction, provider) {
|
|
41
41
|
sender: findSenderFromInputs(decodedTransaction.inputs, baseAssetId)
|
42
42
|
};
|
43
43
|
}
|
44
|
+
export function decodeLog(receipt, abi) {
|
45
|
+
if (receipt && (receipt.type === ReceiptType.LogData || receipt.type === ReceiptType.Log)) {
|
46
|
+
const interfaceToUse = new Interface(abi);
|
47
|
+
const data = receipt.type === ReceiptType.Log ? new BigNumberCoder('u64').encode(receipt.val0) : receipt.data;
|
48
|
+
const logId = receipt.val1.toString();
|
49
|
+
const [decodedLog] = interfaceToUse.decodeLog(data, logId);
|
50
|
+
return { logId, data: decodedLog };
|
51
|
+
}
|
52
|
+
return null;
|
53
|
+
}
|
44
54
|
export async function decodeFuelTransactionWithAbi(gqlTransaction, abiMap, provider) {
|
45
55
|
const rawPayload = arrayify(gqlTransaction.rawPayload);
|
46
56
|
const [decodedTransaction] = new TransactionCoder().decode(rawPayload, 0);
|
@@ -61,18 +71,15 @@ export async function decodeFuelTransactionWithAbi(gqlTransaction, abiMap, provi
|
|
61
71
|
const abi = Object.values(abiMap)[0];
|
62
72
|
const logs = [];
|
63
73
|
receipts.forEach((receipt, idx) => {
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
const logId = receipt.val1.toString();
|
69
|
-
const [decodedLog] = interfaceToUse.decodeLog(data, logId);
|
70
|
-
logs.push({ logId, data: decodedLog, receiptIndex: idx });
|
71
|
-
}
|
72
|
-
catch (e) {
|
73
|
-
console.warn('Failed to decode log', e);
|
74
|
+
try {
|
75
|
+
const log = decodeLog(receipt, abi);
|
76
|
+
if (log) {
|
77
|
+
logs.push({ ...log, receiptIndex: idx });
|
74
78
|
}
|
75
79
|
}
|
80
|
+
catch (e) {
|
81
|
+
console.warn('Failed to decode log', e);
|
82
|
+
}
|
76
83
|
});
|
77
84
|
const txResponse = new TransactionResponse(gqlTransaction.status.transactionId, provider, {
|
78
85
|
main: Object.values(abiMap)[0],
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/fuel/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,0BAA0B,EAC1B,cAAc,EACd,EAAE,EAEF,SAAS,EACT,SAAS,
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/fuel/transaction.ts"],"names":[],"mappings":"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"}
|
package/lib/fuel/types.d.ts
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
import { MapStateStorage } from '@sentio/runtime';
|
2
|
-
import { Data_FuelBlock, Data_FuelCall, FuelAssetHandlerConfig, FuelCallHandlerConfig, HandleInterval, OnIntervalConfig, ProcessResult } from '@sentio/protos';
|
2
|
+
import { Data_FuelBlock, Data_FuelCall, Data_FuelReceipt, FuelAssetHandlerConfig, FuelCallHandlerConfig, HandleInterval, OnIntervalConfig, ProcessResult } from '@sentio/protos';
|
3
3
|
import { Block, TransactionSummary } from 'fuels';
|
4
4
|
export interface FuelBaseProcessor<T> {
|
5
5
|
configure(): Promise<void>;
|
6
6
|
config: T;
|
7
7
|
callHandlers: CallHandler<Data_FuelCall>[];
|
8
8
|
blockHandlers: BlockHandler[];
|
9
|
+
logHandlers?: LogHandler<Data_FuelReceipt>[];
|
9
10
|
}
|
10
11
|
export declare class FuelProcessorState extends MapStateStorage<FuelBaseProcessor<any>> {
|
11
12
|
static INSTANCE: FuelProcessorState;
|
@@ -15,6 +16,10 @@ export type CallHandler<T> = {
|
|
15
16
|
handler: (call: T) => Promise<ProcessResult>;
|
16
17
|
fetchConfig?: Partial<FuelCallHandlerConfig>;
|
17
18
|
assetConfig?: Partial<FuelAssetHandlerConfig>;
|
19
|
+
};
|
20
|
+
export type LogHandler<T> = {
|
21
|
+
handlerName: string;
|
22
|
+
handler: (call: T) => Promise<ProcessResult>;
|
18
23
|
logConfig?: {
|
19
24
|
logIds: string[];
|
20
25
|
};
|
package/lib/fuel/types.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fuel/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EACL,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAA;AAEjD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,MAAM,EAAE,CAAC,CAAA;IACT,YAAY,EAAE,WAAW,CAAC,aAAa,CAAC,EAAE,CAAA;IAC1C,aAAa,EAAE,YAAY,EAAE,CAAA;
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fuel/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EACL,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAA;AAEjD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,MAAM,EAAE,CAAC,CAAA;IACT,YAAY,EAAE,WAAW,CAAC,aAAa,CAAC,EAAE,CAAA;IAC1C,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B,WAAW,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAA;CAC7C;AAED,qBAAa,kBAAmB,SAAQ,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,CAAC,QAAQ,qBAA2B;CAC3C;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IAC5C,SAAS,CAAC,EAAE;QACV,MAAM,EAAE,MAAM,EAAE,CAAA;KACjB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,aAAa,CAAC,EAAE,cAAc,CAAA;IAC9B,qBAAqB,CAAC,EAAE,cAAc,CAAA;IACtC,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IAC1D,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACxC,CAAA;AAED,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,CAAC,CAAA;IACP,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG;IACjD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA"}
|
package/lib/fuel/types.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/fuel/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/fuel/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAqBjD,MAAM,OAAO,kBAAmB,SAAQ,eAAuC;IAC7E,MAAM,CAAC,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"fuel-facet.d.ts","sourceRoot":"","sources":["../../src/testing/fuel-facet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAGhE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,qBAAa,SAAS;IACpB,MAAM,EAAE,mBAAmB,CAAA;gBAEf,MAAM,EAAE,mBAAmB;IAIvC,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,GAAE,WAAkC;IAW/E,OAAO,CAAC,YAAY;
|
1
|
+
{"version":3,"file":"fuel-facet.d.ts","sourceRoot":"","sources":["../../src/testing/fuel-facet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAGhE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,qBAAa,SAAS;IACpB,MAAM,EAAE,mBAAmB,CAAA;gBAEf,MAAM,EAAE,mBAAmB;IAIvC,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,GAAE,WAAkC;IAW/E,OAAO,CAAC,YAAY;CAuErB"}
|
@@ -23,13 +23,13 @@ export class FuelFacet {
|
|
23
23
|
for (const callConfig of config.fuelCallConfigs) {
|
24
24
|
const binding = {
|
25
25
|
data: {
|
26
|
-
|
26
|
+
fuelTransaction: {
|
27
27
|
transaction,
|
28
28
|
timestamp: new Date()
|
29
29
|
}
|
30
30
|
},
|
31
31
|
handlerIds: [callConfig.handlerId],
|
32
|
-
handlerType: HandlerType.
|
32
|
+
handlerType: HandlerType.FUEL_TRANSACTION
|
33
33
|
};
|
34
34
|
const filter = callConfig.filters[0]?.function;
|
35
35
|
if (filter) {
|
@@ -47,13 +47,14 @@ export class FuelFacet {
|
|
47
47
|
for (const logConfig of config.fuelLogConfigs) {
|
48
48
|
const binding = {
|
49
49
|
data: {
|
50
|
-
|
50
|
+
fuelLog: {
|
51
51
|
transaction,
|
52
|
-
timestamp: new Date()
|
52
|
+
timestamp: new Date(),
|
53
|
+
receiptIndex: BigInt(transaction.status.receipts.findIndex((r) => r.rb == logConfig.logIds[0]))
|
53
54
|
}
|
54
55
|
},
|
55
56
|
handlerIds: [logConfig.handlerId],
|
56
|
-
handlerType: HandlerType.
|
57
|
+
handlerType: HandlerType.FUEL_RECEIPT
|
57
58
|
};
|
58
59
|
const logIds = logConfig.logIds;
|
59
60
|
for (const receipt of transaction.status.receipts || []) {
|
@@ -66,13 +67,13 @@ export class FuelFacet {
|
|
66
67
|
for (const assetConfig of config.assetConfigs) {
|
67
68
|
const binding = {
|
68
69
|
data: {
|
69
|
-
|
70
|
+
fuelTransaction: {
|
70
71
|
transaction,
|
71
72
|
timestamp: new Date()
|
72
73
|
}
|
73
74
|
},
|
74
75
|
handlerIds: [assetConfig.handlerId],
|
75
|
-
handlerType: HandlerType.
|
76
|
+
handlerType: HandlerType.FUEL_TRANSACTION
|
76
77
|
};
|
77
78
|
res.push(binding);
|
78
79
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"fuel-facet.js","sourceRoot":"","sources":["../../src/testing/fuel-facet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,MAAM,OAAO,SAAS;IACpB,MAAM,CAAqB;IAE3B,YAAY,MAA2B;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,iBAAiB,CAAC,WAAgB,EAAE,UAAuB,WAAW,CAAC,QAAQ;QAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAA;QACzE,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;YACjC,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAEO,YAAY,CAAC,WAAgB,EAAE,OAAoB;QACzD,MAAM,GAAG,GAAkB,EAAE,CAAA;QAC7B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACjD,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC;gBACzC,SAAQ;YACV,CAAC;YACD,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;gBAChD,MAAM,OAAO,GAAG;oBACd,IAAI,EAAE;wBACJ,
|
1
|
+
{"version":3,"file":"fuel-facet.js","sourceRoot":"","sources":["../../src/testing/fuel-facet.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sentio/sdk",
|
3
|
-
"version": "2.54.0-rc.
|
3
|
+
"version": "2.54.0-rc.7",
|
4
4
|
"license": "Apache-2.0",
|
5
5
|
"type": "module",
|
6
6
|
"exports": {
|
@@ -85,8 +85,8 @@
|
|
85
85
|
"typechain": "^8.3.2",
|
86
86
|
"utility-types": "^3.11.0",
|
87
87
|
"yaml": "^2.3.4",
|
88
|
-
"@sentio/protos": "2.54.0-rc.
|
89
|
-
"@sentio/runtime": "^2.54.0-rc.
|
88
|
+
"@sentio/protos": "2.54.0-rc.7",
|
89
|
+
"@sentio/runtime": "^2.54.0-rc.7"
|
90
90
|
},
|
91
91
|
"peerDependencies": {
|
92
92
|
"tsup": "npm:@sentio/tsup@^8.3.5-rc.1"
|
package/src/fuel/fuel-plugin.ts
CHANGED
@@ -3,6 +3,7 @@ import {
|
|
3
3
|
ContractConfig,
|
4
4
|
Data_FuelBlock,
|
5
5
|
Data_FuelCall,
|
6
|
+
Data_FuelReceipt,
|
6
7
|
DataBinding,
|
7
8
|
HandlerType,
|
8
9
|
ProcessConfigResponse,
|
@@ -18,21 +19,24 @@ import { FuelProcessor } from './fuel-processor.js'
|
|
18
19
|
import { FuelGlobalProcessor } from './global-processor.js'
|
19
20
|
|
20
21
|
interface Handlers {
|
21
|
-
|
22
|
+
transactionHandlers: ((trace: Data_FuelCall) => Promise<ProcessResult>)[]
|
22
23
|
blockHandlers: ((block: Data_FuelBlock) => Promise<ProcessResult>)[]
|
24
|
+
logHandlers: ((log: Data_FuelReceipt) => Promise<ProcessResult>)[]
|
23
25
|
}
|
24
26
|
|
25
27
|
export class FuelPlugin extends Plugin {
|
26
28
|
name: string = 'FuelPlugin'
|
27
29
|
handlers: Handlers = {
|
28
|
-
|
29
|
-
blockHandlers: []
|
30
|
+
transactionHandlers: [],
|
31
|
+
blockHandlers: [],
|
32
|
+
logHandlers: []
|
30
33
|
}
|
31
34
|
|
32
35
|
async configure(config: ProcessConfigResponse) {
|
33
36
|
const handlers: Handlers = {
|
34
|
-
|
35
|
-
blockHandlers: []
|
37
|
+
transactionHandlers: [],
|
38
|
+
blockHandlers: [],
|
39
|
+
logHandlers: []
|
36
40
|
}
|
37
41
|
|
38
42
|
for (const processor of FuelProcessorState.INSTANCE.getValues()) {
|
@@ -48,23 +52,16 @@ export class FuelPlugin extends Plugin {
|
|
48
52
|
endBlock: processor.config.endBlock
|
49
53
|
})
|
50
54
|
for (const callHandler of processor.callHandlers) {
|
51
|
-
const handlerId = handlers.
|
55
|
+
const handlerId = handlers.transactionHandlers.push(callHandler.handler) - 1
|
52
56
|
const handlerName = callHandler.handlerName
|
53
57
|
if (processor instanceof FuelProcessor) {
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
})
|
60
|
-
} else {
|
61
|
-
const fetchConfig = {
|
62
|
-
handlerId,
|
63
|
-
handlerName,
|
64
|
-
filters: callHandler.fetchConfig?.filters || []
|
65
|
-
}
|
66
|
-
contractConfig.fuelCallConfigs.push(fetchConfig)
|
58
|
+
// on transaction
|
59
|
+
const fetchConfig = {
|
60
|
+
handlerId,
|
61
|
+
handlerName,
|
62
|
+
filters: callHandler.fetchConfig?.filters || []
|
67
63
|
}
|
64
|
+
contractConfig.fuelCallConfigs.push(fetchConfig)
|
68
65
|
} else if (processor instanceof FuelAssetProcessor) {
|
69
66
|
const assetConfig = callHandler.assetConfig
|
70
67
|
contractConfig.assetConfigs.push({
|
@@ -83,6 +80,18 @@ export class FuelPlugin extends Plugin {
|
|
83
80
|
}
|
84
81
|
}
|
85
82
|
|
83
|
+
for (const logHandler of processor.logHandlers ?? []) {
|
84
|
+
const handlerId = handlers.logHandlers.push(logHandler.handler) - 1
|
85
|
+
const handlerName = logHandler.handlerName
|
86
|
+
if (processor instanceof FuelProcessor) {
|
87
|
+
contractConfig.fuelLogConfigs.push({
|
88
|
+
logIds: logHandler.logConfig?.logIds || [],
|
89
|
+
handlerId,
|
90
|
+
handlerName
|
91
|
+
})
|
92
|
+
}
|
93
|
+
}
|
94
|
+
|
86
95
|
for (const blockHandler of processor.blockHandlers) {
|
87
96
|
const handlerId = handlers.blockHandlers.push(blockHandler.handler) - 1
|
88
97
|
contractConfig.intervalConfigs.push({
|
@@ -97,19 +106,25 @@ export class FuelPlugin extends Plugin {
|
|
97
106
|
})
|
98
107
|
}
|
99
108
|
|
100
|
-
// Finish up a contract
|
101
109
|
config.contractConfigs.push(contractConfig)
|
102
110
|
}
|
103
111
|
|
104
112
|
this.handlers = handlers
|
105
113
|
}
|
106
114
|
|
107
|
-
supportedHandlers = [
|
115
|
+
supportedHandlers = [
|
116
|
+
HandlerType.FUEL_TRANSACTION,
|
117
|
+
HandlerType.FUEL_RECEIPT,
|
118
|
+
HandlerType.FUEL_CALL,
|
119
|
+
HandlerType.FUEL_BLOCK
|
120
|
+
]
|
108
121
|
|
109
122
|
processBinding(request: DataBinding): Promise<ProcessResult> {
|
110
123
|
switch (request.handlerType) {
|
111
|
-
case HandlerType.
|
124
|
+
case HandlerType.FUEL_TRANSACTION:
|
112
125
|
return this.processTransaction(request)
|
126
|
+
case HandlerType.FUEL_RECEIPT:
|
127
|
+
return this.processLog(request)
|
113
128
|
case HandlerType.FUEL_BLOCK:
|
114
129
|
return this.processBlock(request)
|
115
130
|
default:
|
@@ -131,16 +146,38 @@ export class FuelPlugin extends Plugin {
|
|
131
146
|
return TemplateInstanceState.INSTANCE.getValues().length !== config.templateInstances.length
|
132
147
|
}
|
133
148
|
|
149
|
+
async processLog(binding: DataBinding): Promise<ProcessResult> {
|
150
|
+
if (!binding.data?.fuelLog?.transaction) {
|
151
|
+
throw new ServerError(Status.INVALID_ARGUMENT, "transaction can't be null")
|
152
|
+
}
|
153
|
+
const log = binding.data.fuelLog
|
154
|
+
|
155
|
+
const promises: Promise<ProcessResult>[] = []
|
156
|
+
|
157
|
+
for (const handlerId of binding.handlerIds) {
|
158
|
+
const promise = this.handlers.logHandlers[handlerId](log).catch((e) => {
|
159
|
+
throw new ServerError(
|
160
|
+
Status.INTERNAL,
|
161
|
+
'error processing transaction: ' + JSON.stringify(log) + '\n' + errorString(e)
|
162
|
+
)
|
163
|
+
})
|
164
|
+
if (GLOBAL_CONFIG.execution.sequential) {
|
165
|
+
await promise
|
166
|
+
}
|
167
|
+
promises.push(promise)
|
168
|
+
}
|
169
|
+
return mergeProcessResults(await Promise.all(promises))
|
170
|
+
}
|
134
171
|
async processTransaction(binding: DataBinding): Promise<ProcessResult> {
|
135
|
-
if (!binding.data?.
|
172
|
+
if (!binding.data?.fuelTransaction?.transaction) {
|
136
173
|
throw new ServerError(Status.INVALID_ARGUMENT, "transaction can't be null")
|
137
174
|
}
|
138
|
-
const fuelTransaction = binding.data.
|
175
|
+
const fuelTransaction = binding.data.fuelTransaction
|
139
176
|
|
140
177
|
const promises: Promise<ProcessResult>[] = []
|
141
178
|
|
142
179
|
for (const handlerId of binding.handlerIds) {
|
143
|
-
const promise = this.handlers.
|
180
|
+
const promise = this.handlers.transactionHandlers[handlerId](fuelTransaction).catch((e) => {
|
144
181
|
throw new ServerError(
|
145
182
|
Status.INTERNAL,
|
146
183
|
'error processing transaction: ' + JSON.stringify(fuelTransaction.transaction) + '\n' + errorString(e)
|
@@ -1,8 +1,21 @@
|
|
1
|
-
import {
|
1
|
+
import {
|
2
|
+
Data_FuelBlock,
|
3
|
+
Data_FuelCall,
|
4
|
+
Data_FuelReceipt,
|
5
|
+
FuelCallFilter,
|
6
|
+
HandleInterval,
|
7
|
+
ProcessResult
|
8
|
+
} from '@sentio/protos'
|
2
9
|
import { FuelCall, FuelContext, FuelContractContext } from './context.js'
|
3
10
|
import { bn, Contract, Interface, JsonAbi, Provider } from 'fuels'
|
4
11
|
import { FuelNetwork, getProvider } from './network.js'
|
5
|
-
import {
|
12
|
+
import {
|
13
|
+
decodeFuelTransaction,
|
14
|
+
decodeFuelTransactionWithAbi,
|
15
|
+
decodeLog,
|
16
|
+
DEFAULT_FUEL_FETCH_CONFIG,
|
17
|
+
FuelFetchConfig
|
18
|
+
} from './transaction.js'
|
6
19
|
import {
|
7
20
|
BlockHandler,
|
8
21
|
CallHandler,
|
@@ -10,9 +23,9 @@ import {
|
|
10
23
|
FuelBlock,
|
11
24
|
FuelLog,
|
12
25
|
FuelProcessorState,
|
13
|
-
FuelTransaction
|
26
|
+
FuelTransaction,
|
27
|
+
LogHandler
|
14
28
|
} from './types.js'
|
15
|
-
import { mergeProcessResults } from '@sentio/runtime'
|
16
29
|
import { PromiseOrVoid } from '../core/index.js'
|
17
30
|
import { ServerError, Status } from 'nice-grpc'
|
18
31
|
import { getHandlerName, proxyProcessor } from '../utils/metrics.js'
|
@@ -20,6 +33,7 @@ import { getHandlerName, proxyProcessor } from '../utils/metrics.js'
|
|
20
33
|
export class FuelProcessor<TContract extends Contract> implements FuelBaseProcessor<FuelProcessorConfig> {
|
21
34
|
callHandlers: CallHandler<Data_FuelCall>[] = []
|
22
35
|
blockHandlers: BlockHandler[] = []
|
36
|
+
logHandlers: LogHandler<Data_FuelReceipt>[] = []
|
23
37
|
|
24
38
|
private provider: Provider
|
25
39
|
private contract: TContract
|
@@ -35,6 +49,7 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
|
|
35
49
|
}
|
36
50
|
|
37
51
|
latestGasPrice: string | undefined
|
52
|
+
|
38
53
|
async configure() {
|
39
54
|
this.provider = await getProvider(this.config.chainId)
|
40
55
|
this.provider.getLatestGasPrice = async () => {
|
@@ -169,52 +184,41 @@ export class FuelProcessor<TContract extends Contract> implements FuelBaseProces
|
|
169
184
|
) {
|
170
185
|
const logIds = new Set(Array.isArray(logIdFilter) ? logIdFilter : [logIdFilter])
|
171
186
|
|
172
|
-
const
|
187
|
+
const logHandler = {
|
173
188
|
handlerName: getHandlerName(),
|
174
|
-
handler: async (
|
189
|
+
handler: async ({ transaction, receiptIndex, timestamp }: Data_FuelReceipt) => {
|
175
190
|
try {
|
176
|
-
const
|
177
|
-
const
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
)
|
182
|
-
|
183
|
-
const results: ProcessResult[] = []
|
184
|
-
const logs = (tx.logs || []).filter((log) => logIds.has(log.logId))
|
185
|
-
for (const log of logs) {
|
191
|
+
const tx = decodeFuelTransaction(transaction, this.provider)
|
192
|
+
const index = Number(receiptIndex)
|
193
|
+
const receipt = tx.receipts[index]
|
194
|
+
const log = decodeLog(receipt, this.config.abi)
|
195
|
+
if (log) {
|
186
196
|
const ctx = new FuelContractContext(
|
187
197
|
this.config.chainId,
|
188
198
|
this.contract,
|
189
199
|
this.config.address,
|
190
200
|
this.config.name ?? this.config.address,
|
191
|
-
|
201
|
+
timestamp || new Date(0),
|
192
202
|
tx,
|
193
203
|
null
|
194
204
|
)
|
195
|
-
ctx.setLogIndex(
|
196
|
-
await handler(log, ctx)
|
197
|
-
|
205
|
+
ctx.setLogIndex(index)
|
206
|
+
await handler({ receiptIndex: index, ...log }, ctx)
|
207
|
+
return ctx.stopAndGetResult()
|
208
|
+
} else {
|
209
|
+
console.error(`Log with receipt index ${receiptIndex} not found in tx`)
|
198
210
|
}
|
199
|
-
return mergeProcessResults(results)
|
200
211
|
} catch (e) {
|
201
212
|
console.error(e)
|
202
|
-
return {
|
203
|
-
gauges: [],
|
204
|
-
counters: [],
|
205
|
-
events: [],
|
206
|
-
exports: [],
|
207
|
-
states: {
|
208
|
-
configUpdated: false
|
209
|
-
}
|
210
|
-
}
|
211
213
|
}
|
214
|
+
|
215
|
+
return ProcessResult.fromPartial({})
|
212
216
|
},
|
213
217
|
logConfig: {
|
214
218
|
logIds: Array.from(logIds)
|
215
219
|
}
|
216
220
|
}
|
217
|
-
this.
|
221
|
+
this.logHandlers.push(logHandler)
|
218
222
|
return this
|
219
223
|
}
|
220
224
|
|
package/src/fuel/transaction.ts
CHANGED
@@ -7,6 +7,7 @@ import {
|
|
7
7
|
Input,
|
8
8
|
InputType,
|
9
9
|
Interface,
|
10
|
+
JsonAbi,
|
10
11
|
processGqlReceipt,
|
11
12
|
Provider,
|
12
13
|
ReceiptType,
|
@@ -65,6 +66,17 @@ export function decodeFuelTransaction(gqlTransaction: any, provider: Provider):
|
|
65
66
|
}
|
66
67
|
}
|
67
68
|
|
69
|
+
export function decodeLog(receipt: any | undefined, abi: JsonAbi) {
|
70
|
+
if (receipt && (receipt.type === ReceiptType.LogData || receipt.type === ReceiptType.Log)) {
|
71
|
+
const interfaceToUse = new Interface(abi)
|
72
|
+
const data = receipt.type === ReceiptType.Log ? new BigNumberCoder('u64').encode(receipt.val0) : receipt.data
|
73
|
+
const logId: string = receipt.val1.toString()
|
74
|
+
const [decodedLog] = interfaceToUse.decodeLog(data, logId)
|
75
|
+
return { logId, data: decodedLog }
|
76
|
+
}
|
77
|
+
return null
|
78
|
+
}
|
79
|
+
|
68
80
|
export async function decodeFuelTransactionWithAbi(
|
69
81
|
gqlTransaction: any,
|
70
82
|
abiMap: AbiMap,
|
@@ -92,16 +104,13 @@ export async function decodeFuelTransactionWithAbi(
|
|
92
104
|
const abi = Object.values(abiMap)[0]
|
93
105
|
const logs = [] as FuelLog<any>[]
|
94
106
|
;(receipts as any[]).forEach((receipt, idx) => {
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
const logId = receipt.val1.toString()
|
100
|
-
const [decodedLog] = interfaceToUse.decodeLog(data, logId)
|
101
|
-
logs.push({ logId, data: decodedLog, receiptIndex: idx })
|
102
|
-
} catch (e) {
|
103
|
-
console.warn('Failed to decode log', e)
|
107
|
+
try {
|
108
|
+
const log = decodeLog(receipt, abi)
|
109
|
+
if (log) {
|
110
|
+
logs.push({ ...log, receiptIndex: idx })
|
104
111
|
}
|
112
|
+
} catch (e) {
|
113
|
+
console.warn('Failed to decode log', e)
|
105
114
|
}
|
106
115
|
})
|
107
116
|
|
package/src/fuel/types.ts
CHANGED
@@ -2,6 +2,7 @@ import { MapStateStorage } from '@sentio/runtime'
|
|
2
2
|
import {
|
3
3
|
Data_FuelBlock,
|
4
4
|
Data_FuelCall,
|
5
|
+
Data_FuelReceipt,
|
5
6
|
FuelAssetHandlerConfig,
|
6
7
|
FuelCallHandlerConfig,
|
7
8
|
HandleInterval,
|
@@ -15,6 +16,7 @@ export interface FuelBaseProcessor<T> {
|
|
15
16
|
config: T
|
16
17
|
callHandlers: CallHandler<Data_FuelCall>[]
|
17
18
|
blockHandlers: BlockHandler[]
|
19
|
+
logHandlers?: LogHandler<Data_FuelReceipt>[]
|
18
20
|
}
|
19
21
|
|
20
22
|
export class FuelProcessorState extends MapStateStorage<FuelBaseProcessor<any>> {
|
@@ -26,6 +28,11 @@ export type CallHandler<T> = {
|
|
26
28
|
handler: (call: T) => Promise<ProcessResult>
|
27
29
|
fetchConfig?: Partial<FuelCallHandlerConfig>
|
28
30
|
assetConfig?: Partial<FuelAssetHandlerConfig>
|
31
|
+
}
|
32
|
+
|
33
|
+
export type LogHandler<T> = {
|
34
|
+
handlerName: string
|
35
|
+
handler: (call: T) => Promise<ProcessResult>
|
29
36
|
logConfig?: {
|
30
37
|
logIds: string[]
|
31
38
|
}
|
@@ -30,13 +30,13 @@ export class FuelFacet {
|
|
30
30
|
for (const callConfig of config.fuelCallConfigs) {
|
31
31
|
const binding = {
|
32
32
|
data: {
|
33
|
-
|
33
|
+
fuelTransaction: {
|
34
34
|
transaction,
|
35
35
|
timestamp: new Date()
|
36
36
|
}
|
37
37
|
},
|
38
38
|
handlerIds: [callConfig.handlerId],
|
39
|
-
handlerType: HandlerType.
|
39
|
+
handlerType: HandlerType.FUEL_TRANSACTION
|
40
40
|
}
|
41
41
|
|
42
42
|
const filter = callConfig.filters[0]?.function
|
@@ -55,13 +55,14 @@ export class FuelFacet {
|
|
55
55
|
for (const logConfig of config.fuelLogConfigs) {
|
56
56
|
const binding = {
|
57
57
|
data: {
|
58
|
-
|
58
|
+
fuelLog: {
|
59
59
|
transaction,
|
60
|
-
timestamp: new Date()
|
60
|
+
timestamp: new Date(),
|
61
|
+
receiptIndex: BigInt(transaction.status.receipts.findIndex((r: any) => r.rb == logConfig.logIds[0]))
|
61
62
|
}
|
62
63
|
},
|
63
64
|
handlerIds: [logConfig.handlerId],
|
64
|
-
handlerType: HandlerType.
|
65
|
+
handlerType: HandlerType.FUEL_RECEIPT
|
65
66
|
}
|
66
67
|
|
67
68
|
const logIds = logConfig.logIds
|
@@ -76,13 +77,13 @@ export class FuelFacet {
|
|
76
77
|
for (const assetConfig of config.assetConfigs) {
|
77
78
|
const binding = {
|
78
79
|
data: {
|
79
|
-
|
80
|
+
fuelTransaction: {
|
80
81
|
transaction,
|
81
82
|
timestamp: new Date()
|
82
83
|
}
|
83
84
|
},
|
84
85
|
handlerIds: [assetConfig.handlerId],
|
85
|
-
handlerType: HandlerType.
|
86
|
+
handlerType: HandlerType.FUEL_TRANSACTION
|
86
87
|
}
|
87
88
|
|
88
89
|
res.push(binding)
|