@rosen-bridge/watcher-data-extractor 5.0.0 → 5.0.1

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.
@@ -0,0 +1,70 @@
1
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
+ import { BlockEntity } from '@rosen-bridge/scanner';
3
+ import { DataSource, DeleteResult } from 'typeorm';
4
+ import CollateralEntity from '../entities/CollateralEntity';
5
+ import { ExtractedCollateral } from '../interfaces/extractedCollateral';
6
+ declare class CollateralAction {
7
+ private readonly dataSource;
8
+ readonly logger: AbstractLogger;
9
+ private readonly collateralRepository;
10
+ constructor(dataSource: DataSource, logger?: AbstractLogger);
11
+ /**
12
+ * saves (upserts) a collateral into the database
13
+ *
14
+ * @param {ExtractedCollateral} collateral
15
+ * @param {string} extractor
16
+ * @memberof CollateralAction
17
+ */
18
+ saveCollateral: (collateral: Partial<ExtractedCollateral> & Pick<ExtractedCollateral, 'boxId'>, extractor: string) => Promise<{
19
+ extractor: string;
20
+ boxId: string;
21
+ boxSerialized: string | undefined;
22
+ wId: string | undefined;
23
+ rwtCount: bigint | undefined;
24
+ txId: string | undefined;
25
+ block: string | undefined;
26
+ height: number | undefined;
27
+ spendBlock: string | undefined;
28
+ spendHeight: number | undefined;
29
+ id?: number | undefined;
30
+ } & CollateralEntity>;
31
+ /**
32
+ * stores list of collaterals
33
+ *
34
+ * @param {Array<ExtractedCollateral>} collaterals
35
+ * @param {BlockEntity} block
36
+ * @param {string} extractor
37
+ * @return {Promise<boolean>}
38
+ * @memberof CollateralAction
39
+ */
40
+ storeCollaterals: (collaterals: Array<ExtractedCollateral>, block: BlockEntity, extractor: string) => Promise<boolean>;
41
+ /**
42
+ * Update spendBlock and spendHeight of collaterals spent in the block
43
+ *
44
+ * @param {Array<string>} spentBoxIds
45
+ * @param {BlockEntity} block
46
+ * @param {string} extractor
47
+ * @return {Promise<void>}
48
+ * @memberof CollateralAction
49
+ */
50
+ spendCollaterals: (spentBoxIds: Array<string>, block: BlockEntity, extractor: string) => Promise<void>;
51
+ /**
52
+ * Returns all stored unspent collateral box IDs
53
+ *
54
+ * @param {string} extractor
55
+ * @return {Promise<Array<string>>}
56
+ * @memberof CollateralAction
57
+ */
58
+ getUnspentCollateralBoxIds: (extractor: string) => Promise<Array<string>>;
59
+ /**
60
+ * deletes the specified collateral box from database
61
+ *
62
+ * @param {string} boxId
63
+ * @param {string} extractor
64
+ * @return {Promise<DeleteResult>}
65
+ * @memberof CollateralAction
66
+ */
67
+ deleteCollateral: (boxId: string, extractor: string) => Promise<DeleteResult>;
68
+ }
69
+ export default CollateralAction;
70
+ //# sourceMappingURL=collateralAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collateralAction.d.ts","sourceRoot":"","sources":["../../lib/actions/collateralAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,YAAY,EAA0B,MAAM,SAAS,CAAC;AAE3E,OAAO,gBAAgB,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,cAAM,gBAAgB;IAIlB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,QAAQ,CAAC,MAAM,EAAE,cAAc;IAJjC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA+B;gBAGjD,UAAU,EAAE,UAAU,EAC9B,MAAM,GAAE,cAAkC;IAKrD;;;;;;OAMG;IACH,cAAc,eACA,QAAQ,mBAAmB,CAAC,GACtC,KAAK,mBAAmB,EAAE,OAAO,CAAC,aACzB,MAAM;;;;;;;;;;;;0BA6BjB;IAEF;;;;;;;;OAQG;IACH,gBAAgB,gBACD,MAAM,mBAAmB,CAAC,SAChC,WAAW,aACP,MAAM,KAChB,QAAQ,OAAO,CAAC,CAmEjB;IAEF;;;;;;;;OAQG;IACH,gBAAgB,gBACD,MAAM,MAAM,CAAC,SACnB,WAAW,aACP,MAAM,KAChB,QAAQ,IAAI,CAAC,CAoBd;IAEF;;;;;;OAMG;IACH,0BAA0B,cACb,MAAM,KAChB,QAAQ,MAAM,MAAM,CAAC,CAAC,CAWvB;IAEF;;;;;;;OAOG;IACH,gBAAgB,UACP,MAAM,aACF,MAAM,KAChB,QAAQ,YAAY,CAAC,CAKtB;CACH;AAED,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,168 @@
1
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
2
+ import { chunk } from 'lodash-es';
3
+ import { In, IsNull } from 'typeorm';
4
+ import { dbIdChunkSize } from '../constants';
5
+ import CollateralEntity from '../entities/CollateralEntity';
6
+ class CollateralAction {
7
+ dataSource;
8
+ logger;
9
+ collateralRepository;
10
+ constructor(dataSource, logger = new DummyLogger()) {
11
+ this.dataSource = dataSource;
12
+ this.logger = logger;
13
+ this.collateralRepository = this.dataSource.getRepository(CollateralEntity);
14
+ }
15
+ /**
16
+ * saves (upserts) a collateral into the database
17
+ *
18
+ * @param {ExtractedCollateral} collateral
19
+ * @param {string} extractor
20
+ * @memberof CollateralAction
21
+ */
22
+ saveCollateral = async (collateral, extractor) => {
23
+ const id = (await this.collateralRepository.findOne({
24
+ where: {
25
+ boxId: collateral.boxId,
26
+ extractor,
27
+ },
28
+ select: {
29
+ id: true,
30
+ },
31
+ }))?.id;
32
+ const collateralEntity = {
33
+ ...(id != undefined && { id }),
34
+ extractor,
35
+ boxId: collateral.boxId,
36
+ boxSerialized: collateral.boxSerialized,
37
+ wId: collateral.wId,
38
+ rwtCount: collateral.rwtCount,
39
+ txId: collateral.txId,
40
+ block: collateral.block,
41
+ height: collateral.height,
42
+ spendBlock: collateral.spendBlock,
43
+ spendHeight: collateral.spendHeight,
44
+ };
45
+ return await this.collateralRepository.save(collateralEntity);
46
+ };
47
+ /**
48
+ * stores list of collaterals
49
+ *
50
+ * @param {Array<ExtractedCollateral>} collaterals
51
+ * @param {BlockEntity} block
52
+ * @param {string} extractor
53
+ * @return {Promise<boolean>}
54
+ * @memberof CollateralAction
55
+ */
56
+ storeCollaterals = async (collaterals, block, extractor) => {
57
+ const collateralEntities = collaterals.map((col) => ({
58
+ extractor: extractor,
59
+ boxId: col.boxId,
60
+ boxSerialized: col.boxSerialized,
61
+ wId: col.wId,
62
+ rwtCount: col.rwtCount,
63
+ txId: col.txId,
64
+ block: block.hash,
65
+ height: col.height != undefined ? col.height : block.height,
66
+ }));
67
+ const queryRunner = this.dataSource.createQueryRunner();
68
+ await queryRunner.connect();
69
+ await queryRunner.startTransaction();
70
+ try {
71
+ const repository = await queryRunner.manager.getRepository(CollateralEntity);
72
+ const boxIdToId = new Map();
73
+ (await repository.find({
74
+ where: {
75
+ boxId: In(collateralEntities.map((box) => box.boxId)),
76
+ extractor: extractor,
77
+ },
78
+ select: {
79
+ id: true,
80
+ boxId: true,
81
+ },
82
+ })).forEach((col) => boxIdToId.set(col.boxId, col.id));
83
+ const collateralsToUpdate = collateralEntities
84
+ .filter((col) => boxIdToId.has(col.boxId))
85
+ .map((col) => ({ ...col, id: boxIdToId.get(col.boxId) }));
86
+ const collateralsToInsert = collateralEntities.filter((col) => !boxIdToId.has(col.boxId));
87
+ this.logger.info(`Saving boxes with following IDs into the database: [${collateralEntities
88
+ .map((col) => col.boxId)
89
+ .join(', ')}]`);
90
+ const savedCollaterals = await repository.save([
91
+ ...collateralsToInsert,
92
+ ...collateralsToUpdate,
93
+ ]);
94
+ await queryRunner.commitTransaction();
95
+ this.logger.debug(`Saved boxes with following IDs into the database: [${savedCollaterals
96
+ .map((col) => col.boxId)
97
+ .join(', ')}]`);
98
+ }
99
+ catch (e) {
100
+ await queryRunner.rollbackTransaction();
101
+ this.logger.error(`An error occurred during storeCollaterals action: ${e}`);
102
+ return false;
103
+ }
104
+ finally {
105
+ await queryRunner.release();
106
+ }
107
+ return true;
108
+ };
109
+ /**
110
+ * Update spendBlock and spendHeight of collaterals spent in the block
111
+ *
112
+ * @param {Array<string>} spentBoxIds
113
+ * @param {BlockEntity} block
114
+ * @param {string} extractor
115
+ * @return {Promise<void>}
116
+ * @memberof CollateralAction
117
+ */
118
+ spendCollaterals = async (spentBoxIds, block, extractor) => {
119
+ const spentBoxIdChunks = chunk(spentBoxIds, dbIdChunkSize);
120
+ for (const spendIdChunk of spentBoxIdChunks) {
121
+ const updateResult = await this.collateralRepository.update({ boxId: In(spendIdChunk), extractor: extractor }, { spendBlock: block.hash, spendHeight: block.height });
122
+ if (updateResult.affected && updateResult.affected > 0) {
123
+ const updatedRows = await this.collateralRepository.findBy({
124
+ boxId: In(spendIdChunk),
125
+ spendBlock: block.hash,
126
+ });
127
+ for (const row of updatedRows) {
128
+ this.logger.debug(`Spent collateral with boxId [${row.boxId}] belonging to watcher with WID [${row.wId}] at height ${block.height}`);
129
+ }
130
+ }
131
+ }
132
+ };
133
+ /**
134
+ * Returns all stored unspent collateral box IDs
135
+ *
136
+ * @param {string} extractor
137
+ * @return {Promise<Array<string>>}
138
+ * @memberof CollateralAction
139
+ */
140
+ getUnspentCollateralBoxIds = async (extractor) => {
141
+ const boxIds = await this.collateralRepository.find({
142
+ where: {
143
+ extractor: extractor,
144
+ spendBlock: IsNull(),
145
+ },
146
+ select: {
147
+ boxId: true,
148
+ },
149
+ });
150
+ return boxIds.map((box) => box.boxId);
151
+ };
152
+ /**
153
+ * deletes the specified collateral box from database
154
+ *
155
+ * @param {string} boxId
156
+ * @param {string} extractor
157
+ * @return {Promise<DeleteResult>}
158
+ * @memberof CollateralAction
159
+ */
160
+ deleteCollateral = async (boxId, extractor) => {
161
+ return await this.collateralRepository.delete({
162
+ boxId: boxId,
163
+ extractor: extractor,
164
+ });
165
+ };
166
+ }
167
+ export default CollateralAction;
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGF0ZXJhbEFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9hY3Rpb25zL2NvbGxhdGVyYWxBY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBYyxNQUFNLFNBQVMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sZ0JBQWdCLE1BQU0sOEJBQThCLENBQUM7QUFJNUQsTUFBTSxnQkFBZ0I7SUFJRDtJQUNSO0lBSk0sb0JBQW9CLENBQStCO0lBRXBFLFlBQ21CLFVBQXNCLEVBQzlCLFNBQXlCLElBQUksV0FBVyxFQUFFO1FBRGxDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBb0M7UUFFbkQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGNBQWMsR0FBRyxLQUFLLEVBQ3BCLFVBQ29DLEVBQ3BDLFNBQWlCLEVBQ2pCLEVBQUU7UUFDRixNQUFNLEVBQUUsR0FBRyxDQUNULE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQztZQUN0QyxLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO2dCQUN2QixTQUFTO2FBQ1Y7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLElBQUk7YUFDVDtTQUNGLENBQUMsQ0FDSCxFQUFFLEVBQUUsQ0FBQztRQUVOLE1BQU0sZ0JBQWdCLEdBQUc7WUFDdkIsR0FBRyxDQUFDLEVBQUUsSUFBSSxTQUFTLElBQUks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LENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQyxDQUFDO0lBRUY7Ozs7Ozs7T0FPRztJQUNILGdCQUFnQixHQUFHLEtBQUssRUFDdEIsS0FBYSxFQUNiLFNBQWlCLEVBQ00sRUFBRTtRQUN6QixPQUFPLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztZQUM1QyxLQUFLLEVBQUUsS0FBSztZQUNaLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztDQUNIO0FBRUQsZUFBZSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IEJsb2NrRW50aXR5IH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyJztcbmltcG9ydCB7IGNodW5rIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IERhdGFTb3VyY2UsIERlbGV0ZVJlc3VsdCwgSW4sIElzTnVsbCwgUmVwb3NpdG9yeSB9IGZyb20gJ3R5cGVvcm0nO1xuaW1wb3J0IHsgZGJJZENodW5rU2l6ZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgQ29sbGF0ZXJhbEVudGl0eSBmcm9tICcuLi9lbnRpdGllcy9Db2xsYXRlcmFsRW50aXR5JztcbmltcG9ydCB7IEV4dHJhY3RlZENvbGxhdGVyYWwgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4dHJhY3RlZENvbGxhdGVyYWwnO1xuaW1wb3J0IHsgSnNvbkJJIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jbGFzcyBDb2xsYXRlcmFsQWN0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb2xsYXRlcmFsUmVwb3NpdG9yeTogUmVwb3NpdG9yeTxDb2xsYXRlcmFsRW50aXR5PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsXG4gICAgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlciA9IG5ldyBEdW1teUxvZ2dlcigpXG4gICkge1xuICAgIHRoaXMuY29sbGF0ZXJhbFJlcG9zaXRvcnkgPSB0aGlzLmRhdGFTb3VyY2UuZ2V0UmVwb3NpdG9yeShDb2xsYXRlcmFsRW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYXZlcyAodXBzZXJ0cykgYSBjb2xsYXRlcmFsIGludG8gdGhlIGRhdGFiYXNlXG4gICAqXG4gICAqIEBwYXJhbSB7RXh0cmFjdGVkQ29sbGF0ZXJhbH0gY29sbGF0ZXJhbFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0cmFjdG9yXG4gICAqIEBtZW1iZXJvZiBDb2xsYXRlcmFsQWN0aW9uXG4gICAqL1xuICBzYXZlQ29sbGF0ZXJhbCA9IGFzeW5jIChcbiAgICBjb2xsYXRlcmFsOiBQYXJ0aWFsPEV4dHJhY3RlZENvbGxhdGVyYWw+ICZcbiAgICAgIFBpY2s8RXh0cmFjdGVkQ29sbGF0ZXJhbCwgJ2JveElkJz4sXG4gICAgZXh0cmFjdG9yOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgY29uc3QgaWQgPSAoXG4gICAgICBhd2FpdCB0aGlzLmNvbGxhdGVyYWxSZXBvc2l0b3J5LmZpbmRPbmUoe1xuICAgICAgICB3aGVyZToge1xuICAgICAgICAgIGJveElkOiBjb2xsYXRlcmFsLmJveElkLFxuICAgICAgICAgIGV4dHJhY3RvcixcbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0OiB7XG4gICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk/LmlkO1xuXG4gICAgY29uc3QgY29sbGF0ZXJhbEVudGl0eSA9IHtcbiAgICAgIC4uLihpZCAhPSB1bmRlZmluZWQgJiYgeyBpZCB9KSxcbiAgICAgIGV4dHJhY3RvcixcbiAgICAgIGJveElkOiBjb2xsYXRlcmFsLmJveElkLFxuICAgICAgYm94U2VyaWFsaXplZDogY29sbGF0ZXJhbC5ib3hTZXJpYWxpemVkLFxuICAgICAgd0lkOiBjb2xsYXRlcmFsLndJZCxcbiAgICAgIHJ3dENvdW50OiBjb2xsYXRlcmFsLnJ3dENvdW50LFxuICAgICAgdHhJZDogY29sbGF0ZXJhbC50eElkLFxuICAgICAgYmxvY2s6IGNvbGxhdGVyYWwuYmxvY2ssXG4gICAgICBoZWlnaHQ6IGNvbGxhdGVyYWwuaGVpZ2h0LFxuICAgICAgc3BlbmRCbG9jazogY29sbGF0ZXJhbC5zcGVuZEJsb2NrLFxuICAgICAgc3BlbmRIZWlnaHQ6IGNvbGxhdGVyYWwuc3BlbmRIZWlnaHQsXG4gICAgfTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbGxhdGVyYWxSZXBvc2l0b3J5LnNhdmUoY29sbGF0ZXJhbEVudGl0eSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHN0b3JlcyBsaXN0IG9mIGNvbGxhdGVyYWxzXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8RXh0cmFjdGVkQ29sbGF0ZXJhbD59IGNvbGxhdGVyYWxzXG4gICAqIEBwYXJhbSB7QmxvY2tFbnRpdHl9IGJsb2NrXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHRyYWN0b3JcbiAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFuPn1cbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxBY3Rpb25cbiAgICovXG4gIHN0b3JlQ29sbGF0ZXJhbHMgPSBhc3luYyAoXG4gICAgY29sbGF0ZXJhbHM6IEFycmF5PEV4dHJhY3RlZENvbGxhdGVyYWw+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eSxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBjb25zdCBjb2xsYXRlcmFsRW50aXRpZXMgPSBjb2xsYXRlcmFscy5tYXAoKGNvbCkgPT4gKHtcbiAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgYm94SWQ6IGNvbC5ib3hJZCxcbiAgICAgIGJveFNlcmlhbGl6ZWQ6IGNvbC5ib3hTZXJpYWxpemVkLFxuICAgICAgd0lkOiBjb2wud0lkLFxuICAgICAgcnd0Q291bnQ6IGNvbC5yd3RDb3VudCxcbiAgICAgIHR4SWQ6IGNvbC50eElkLFxuICAgICAgYmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICBoZWlnaHQ6IGNvbC5oZWlnaHQgIT0gdW5kZWZpbmVkID8gY29sLmhlaWdodCA6IGJsb2NrLmhlaWdodCxcbiAgICB9KSk7XG5cbiAgICBjb25zdCBxdWVyeVJ1bm5lciA9IHRoaXMuZGF0YVNvdXJjZS5jcmVhdGVRdWVyeVJ1bm5lcigpO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbm5lY3QoKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5zdGFydFRyYW5zYWN0aW9uKCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBhd2FpdCBxdWVyeVJ1bm5lci5tYW5hZ2VyLmdldFJlcG9zaXRvcnkoXG4gICAgICAgIENvbGxhdGVyYWxFbnRpdHlcbiAgICAgICk7XG4gICAgICBjb25zdCBib3hJZFRvSWQgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAgICAgKFxuICAgICAgICBhd2FpdCByZXBvc2l0b3J5LmZpbmQoe1xuICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICBib3hJZDogSW4oY29sbGF0ZXJhbEVudGl0aWVzLm1hcCgoYm94KSA9PiBib3guYm94SWQpKSxcbiAgICAgICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0OiB7XG4gICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgIGJveElkOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApLmZvckVhY2goKGNvbCkgPT4gYm94SWRUb0lkLnNldChjb2wuYm94SWQsIGNvbC5pZCkpO1xuXG4gICAgICBjb25zdCBjb2xsYXRlcmFsc1RvVXBkYXRlID0gY29sbGF0ZXJhbEVudGl0aWVzXG4gICAgICAgIC5maWx0ZXIoKGNvbCkgPT4gYm94SWRUb0lkLmhhcyhjb2wuYm94SWQpKVxuICAgICAgICAubWFwKChjb2wpID0+ICh7IC4uLmNvbCwgaWQ6IGJveElkVG9JZC5nZXQoY29sLmJveElkKSB9KSk7XG5cbiAgICAgIGNvbnN0IGNvbGxhdGVyYWxzVG9JbnNlcnQgPSBjb2xsYXRlcmFsRW50aXRpZXMuZmlsdGVyKFxuICAgICAgICAoY29sKSA9PiAhYm94SWRUb0lkLmhhcyhjb2wuYm94SWQpXG4gICAgICApO1xuXG4gICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICBgU2F2aW5nIGJveGVzIHdpdGggZm9sbG93aW5nIElEcyBpbnRvIHRoZSBkYXRhYmFzZTogWyR7Y29sbGF0ZXJhbEVudGl0aWVzXG4gICAgICAgICAgLm1hcCgoY29sKSA9PiBjb2wuYm94SWQpXG4gICAgICAgICAgLmpvaW4oJywgJyl9XWBcbiAgICAgICk7XG4gICAgICBjb25zdCBzYXZlZENvbGxhdGVyYWxzID0gYXdhaXQgcmVwb3NpdG9yeS5zYXZlKFtcbiAgICAgICAgLi4uY29sbGF0ZXJhbHNUb0luc2VydCxcbiAgICAgICAgLi4uY29sbGF0ZXJhbHNUb1VwZGF0ZSxcbiAgICAgIF0pO1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIuY29tbWl0VHJhbnNhY3Rpb24oKTtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgU2F2ZWQgYm94ZXMgd2l0aCBmb2xsb3dpbmcgSURzIGludG8gdGhlIGRhdGFiYXNlOiBbJHtzYXZlZENvbGxhdGVyYWxzXG4gICAgICAgICAgLm1hcCgoY29sKSA9PiBjb2wuYm94SWQpXG4gICAgICAgICAgLmpvaW4oJywgJyl9XWBcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucm9sbGJhY2tUcmFuc2FjdGlvbigpO1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgc3RvcmVDb2xsYXRlcmFscyBhY3Rpb246ICR7ZX1gXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5yZWxlYXNlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzcGVuZEJsb2NrIGFuZCBzcGVuZEhlaWdodCBvZiBjb2xsYXRlcmFscyBzcGVudCBpbiB0aGUgYmxvY2tcbiAgICpcbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBzcGVudEJveElkc1xuICAgKiBAcGFyYW0ge0Jsb2NrRW50aXR5fSBibG9ja1xuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0cmFjdG9yXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59XG4gICAqIEBtZW1iZXJvZiBDb2xsYXRlcmFsQWN0aW9uXG4gICAqL1xuICBzcGVuZENvbGxhdGVyYWxzID0gYXN5bmMgKFxuICAgIHNwZW50Qm94SWRzOiBBcnJheTxzdHJpbmc+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eSxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBzcGVudEJveElkQ2h1bmtzID0gY2h1bmsoc3BlbnRCb3hJZHMsIGRiSWRDaHVua1NpemUpO1xuICAgIGZvciAoY29uc3Qgc3BlbmRJZENodW5rIG9mIHNwZW50Qm94SWRDaHVua3MpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZVJlc3VsdCA9IGF3YWl0IHRoaXMuY29sbGF0ZXJhbFJlcG9zaXRvcnkudXBkYXRlKFxuICAgICAgICB7IGJveElkOiBJbihzcGVuZElkQ2h1bmspLCBleHRyYWN0b3I6IGV4dHJhY3RvciB9LFxuICAgICAgICB7IHNwZW5kQmxvY2s6IGJsb2NrLmhhc2gsIHNwZW5kSGVpZ2h0OiBibG9jay5oZWlnaHQgfVxuICAgICAgKTtcblxuICAgICAgaWYgKHVwZGF0ZVJlc3VsdC5hZmZlY3RlZCAmJiB1cGRhdGVSZXN1bHQuYWZmZWN0ZWQgPiAwKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRSb3dzID0gYXdhaXQgdGhpcy5jb2xsYXRlcmFsUmVwb3NpdG9yeS5maW5kQnkoe1xuICAgICAgICAgIGJveElkOiBJbihzcGVuZElkQ2h1bmspLFxuICAgICAgICAgIHNwZW5kQmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICAgIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiB1cGRhdGVkUm93cykge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYFNwZW50IGNvbGxhdGVyYWwgd2l0aCBib3hJZCBbJHtyb3cuYm94SWR9XSBiZWxvbmdpbmcgdG8gd2F0Y2hlciB3aXRoIFdJRCBbJHtyb3cud0lkfV0gYXQgaGVpZ2h0ICR7YmxvY2suaGVpZ2h0fWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBzdG9yZWQgdW5zcGVudCBjb2xsYXRlcmFsIGJveCBJRHNcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dHJhY3RvclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEFycmF5PHN0cmluZz4+fVxuICAgKiBAbWVtYmVyb2YgQ29sbGF0ZXJhbEFjdGlvblxuICAgKi9cbiAgZ2V0VW5zcGVudENvbGxhdGVyYWxCb3hJZHMgPSBhc3luYyAoXG4gICAgZXh0cmFjdG9yOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxBcnJheTxzdHJpbmc+PiA9PiB7XG4gICAgY29uc3QgYm94SWRzID0gYXdhaXQgdGhpcy5jb2xsYXRlcmFsUmVwb3NpdG9yeS5maW5kKHtcbiAgICAgIHdoZXJlOiB7XG4gICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgICBzcGVuZEJsb2NrOiBJc051bGwoKSxcbiAgICAgIH0sXG4gICAgICBzZWxlY3Q6IHtcbiAgICAgICAgYm94SWQ6IHRydWUsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHJldHVybiBib3hJZHMubWFwKChib3gpID0+IGJveC5ib3hJZCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGRlbGV0ZXMgdGhlIHNwZWNpZmllZCBjb2xsYXRlcmFsIGJveCBmcm9tIGRhdGFiYXNlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBib3hJZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0cmFjdG9yXG4gICAqIEByZXR1cm4ge1Byb21pc2U8RGVsZXRlUmVzdWx0Pn1cbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxBY3Rpb25cbiAgICovXG4gIGRlbGV0ZUNvbGxhdGVyYWwgPSBhc3luYyAoXG4gICAgYm94SWQ6IHN0cmluZyxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApOiBQcm9taXNlPERlbGV0ZVJlc3VsdD4gPT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbGxhdGVyYWxSZXBvc2l0b3J5LmRlbGV0ZSh7XG4gICAgICBib3hJZDogYm94SWQsXG4gICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICB9KTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sbGF0ZXJhbEFjdGlvbjtcbiJdfQ==
@@ -0,0 +1,15 @@
1
+ declare class CollateralEntity {
2
+ id: number;
3
+ extractor: string;
4
+ boxId: string;
5
+ boxSerialized: string;
6
+ wId: string;
7
+ rwtCount: bigint;
8
+ txId: string;
9
+ block?: string;
10
+ height?: number;
11
+ spendBlock?: string;
12
+ spendHeight?: number;
13
+ }
14
+ export default CollateralEntity;
15
+ //# sourceMappingURL=CollateralEntity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollateralEntity.d.ts","sourceRoot":"","sources":["../../lib/entities/CollateralEntity.ts"],"names":[],"mappings":"AAGA,cAEM,gBAAgB;IAEpB,EAAE,EAAE,MAAM,CAAC;IAGX,SAAS,EAAE,MAAM,CAAC;IAGlB,KAAK,EAAE,MAAM,CAAC;IAGd,aAAa,EAAE,MAAM,CAAC;IAGtB,GAAG,EAAE,MAAM,CAAC;IAGZ,QAAQ,EAAE,MAAM,CAAC;IAGjB,IAAI,EAAE,MAAM,CAAC;IAGb,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,74 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Column, Entity, PrimaryGeneratedColumn, Unique } from 'typeorm';
11
+ import { bigintTransformer } from '../transformers';
12
+ let CollateralEntity = class CollateralEntity {
13
+ id;
14
+ extractor;
15
+ boxId;
16
+ boxSerialized;
17
+ wId;
18
+ rwtCount;
19
+ txId;
20
+ block;
21
+ height;
22
+ spendBlock;
23
+ spendHeight;
24
+ };
25
+ __decorate([
26
+ PrimaryGeneratedColumn(),
27
+ __metadata("design:type", Number)
28
+ ], CollateralEntity.prototype, "id", void 0);
29
+ __decorate([
30
+ Column(),
31
+ __metadata("design:type", String)
32
+ ], CollateralEntity.prototype, "extractor", void 0);
33
+ __decorate([
34
+ Column(),
35
+ __metadata("design:type", String)
36
+ ], CollateralEntity.prototype, "boxId", void 0);
37
+ __decorate([
38
+ Column(),
39
+ __metadata("design:type", String)
40
+ ], CollateralEntity.prototype, "boxSerialized", void 0);
41
+ __decorate([
42
+ Column(),
43
+ __metadata("design:type", String)
44
+ ], CollateralEntity.prototype, "wId", void 0);
45
+ __decorate([
46
+ Column({ type: 'bigint', transformer: bigintTransformer }),
47
+ __metadata("design:type", BigInt)
48
+ ], CollateralEntity.prototype, "rwtCount", void 0);
49
+ __decorate([
50
+ Column(),
51
+ __metadata("design:type", String)
52
+ ], CollateralEntity.prototype, "txId", void 0);
53
+ __decorate([
54
+ Column({ nullable: true }),
55
+ __metadata("design:type", String)
56
+ ], CollateralEntity.prototype, "block", void 0);
57
+ __decorate([
58
+ Column({ nullable: true }),
59
+ __metadata("design:type", Number)
60
+ ], CollateralEntity.prototype, "height", void 0);
61
+ __decorate([
62
+ Column({ nullable: true, type: 'text' }),
63
+ __metadata("design:type", String)
64
+ ], CollateralEntity.prototype, "spendBlock", void 0);
65
+ __decorate([
66
+ Column({ nullable: true }),
67
+ __metadata("design:type", Number)
68
+ ], CollateralEntity.prototype, "spendHeight", void 0);
69
+ CollateralEntity = __decorate([
70
+ Entity('collateral_entity'),
71
+ Unique(['boxId', 'extractor'])
72
+ ], CollateralEntity);
73
+ export default CollateralEntity;
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sbGF0ZXJhbEVudGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9lbnRpdGllcy9Db2xsYXRlcmFsRW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUlwRCxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjtJQUVwQixFQUFFLENBQVM7SUFHWCxTQUFTLENBQVM7SUFHbEIsS0FBSyxDQUFTO0lBR2QsYUFBYSxDQUFTO0lBR3RCLEdBQUcsQ0FBUztJQUdaLFFBQVEsQ0FBUztJQUdqQixJQUFJLENBQVM7SUFHYixLQUFLLENBQVU7SUFHZixNQUFNLENBQVU7SUFHaEIsVUFBVSxDQUFVO0lBR3BCLFdBQVcsQ0FBVTtDQUN0QixDQUFBO0FBaENDO0lBQUMsc0JBQXNCLEVBQUU7OzRDQUNkO0FBRVg7SUFBQyxNQUFNLEVBQUU7O21EQUNTO0FBRWxCO0lBQUMsTUFBTSxFQUFFOzsrQ0FDSztBQUVkO0lBQUMsTUFBTSxFQUFFOzt1REFDYTtBQUV0QjtJQUFDLE1BQU0sRUFBRTs7NkNBQ0c7QUFFWjtJQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLENBQUM7O2tEQUMxQztBQUVqQjtJQUFDLE1BQU0sRUFBRTs7OENBQ0k7QUFFYjtJQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQzs7K0NBQ1o7QUFFZjtJQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQzs7Z0RBQ1g7QUFFaEI7SUFBQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs7b0RBQ3JCO0FBRXBCO0lBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDOztxREFDTjtBQWhDakIsZ0JBQWdCO0lBRnJCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztJQUMzQixNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7R0FDekIsZ0JBQWdCLENBaUNyQjtBQUVELGVBQWUsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2x1bW4sIEVudGl0eSwgUHJpbWFyeUdlbmVyYXRlZENvbHVtbiwgVW5pcXVlIH0gZnJvbSAndHlwZW9ybSc7XG5pbXBvcnQgeyBiaWdpbnRUcmFuc2Zvcm1lciB9IGZyb20gJy4uL3RyYW5zZm9ybWVycyc7XG5cbkBFbnRpdHkoJ2NvbGxhdGVyYWxfZW50aXR5JylcbkBVbmlxdWUoWydib3hJZCcsICdleHRyYWN0b3InXSlcbmNsYXNzIENvbGxhdGVyYWxFbnRpdHkge1xuICBAUHJpbWFyeUdlbmVyYXRlZENvbHVtbigpXG4gIGlkOiBudW1iZXI7XG5cbiAgQENvbHVtbigpXG4gIGV4dHJhY3Rvcjogc3RyaW5nO1xuXG4gIEBDb2x1bW4oKVxuICBib3hJZDogc3RyaW5nO1xuXG4gIEBDb2x1bW4oKVxuICBib3hTZXJpYWxpemVkOiBzdHJpbmc7XG5cbiAgQENvbHVtbigpXG4gIHdJZDogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyB0eXBlOiAnYmlnaW50JywgdHJhbnNmb3JtZXI6IGJpZ2ludFRyYW5zZm9ybWVyIH0pXG4gIHJ3dENvdW50OiBiaWdpbnQ7XG5cbiAgQENvbHVtbigpXG4gIHR4SWQ6IHN0cmluZztcblxuICBAQ29sdW1uKHsgbnVsbGFibGU6IHRydWUgfSlcbiAgYmxvY2s/OiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IG51bGxhYmxlOiB0cnVlIH0pXG4gIGhlaWdodD86IG51bWJlcjtcblxuICBAQ29sdW1uKHsgbnVsbGFibGU6IHRydWUsIHR5cGU6ICd0ZXh0JyB9KVxuICBzcGVuZEJsb2NrPzogc3RyaW5nO1xuXG4gIEBDb2x1bW4oeyBudWxsYWJsZTogdHJ1ZSB9KVxuICBzcGVuZEhlaWdodD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sbGF0ZXJhbEVudGl0eTtcbiJdfQ==
@@ -0,0 +1,69 @@
1
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
+ import { AbstractExtractor, BlockEntity, Transaction } from '@rosen-bridge/scanner';
3
+ import { DataSource } from 'typeorm';
4
+ import CollateralAction from '../actions/collateralAction';
5
+ export declare class CollateralExtractor extends AbstractExtractor<Transaction> {
6
+ private readonly id;
7
+ private readonly awcNft;
8
+ private readonly address;
9
+ private readonly dataSource;
10
+ private readonly logger;
11
+ private readonly ergoTree;
12
+ readonly action: CollateralAction;
13
+ private explorerApi;
14
+ constructor(id: string, awcNft: string, address: string, dataSource: DataSource, explorerUrl: string, logger?: AbstractLogger);
15
+ /**
16
+ * get id for extractor. This id must be unique over all extractors.
17
+ *
18
+ * @return {string}
19
+ */
20
+ getId: () => string;
21
+ /**
22
+ * process a list of transactions and store collateral box details
23
+ *
24
+ * @param {Transaction[]} txs list of transaction for block
25
+ * @param {BlockEntity} block block id for transactions as hex encoded
26
+ * @return {Promise<boolean>} Promise<boolean> if no error occurred return
27
+ * true. otherwise, return false
28
+ */
29
+ processTransactions: (txs: Transaction[], block: BlockEntity) => Promise<boolean>;
30
+ private isCollateralBox;
31
+ forkBlock: (hash: string) => Promise<void>;
32
+ /**
33
+ * Initializes the database with older collaterals
34
+ *
35
+ * @param {number} initialHeight
36
+ * @return {Promise<void>}
37
+ * @memberof CollateralExtractor
38
+ */
39
+ initializeBoxes: (initialHeight: number) => Promise<void>;
40
+ /**
41
+ * removes or updates stored collateral boxes before initializing boxes
42
+ *
43
+ * @private
44
+ * @param {number} initialHeight
45
+ * @param {string[]} collateralBoxIds
46
+ * @return {Promise<void>}
47
+ * @memberof CollateralExtractor
48
+ */
49
+ private tidyUpStoredCollaterals;
50
+ /**
51
+ * gets all unspent collaterals from Ergo explorer api
52
+ *
53
+ * @private
54
+ * @param {number} initialHeight
55
+ * @return {Promise<Array<ExtractedCollateral>>}
56
+ * @memberof CollateralExtractor
57
+ */
58
+ private getAllUnspentCollaterals;
59
+ /**
60
+ * converts output box information to an ExtractedCollateral object
61
+ *
62
+ * @private
63
+ * @param {(OutputInfo | OutputBox)} box
64
+ * @return {ExtractedCollateral}
65
+ * @memberof CollateralExtractor
66
+ */
67
+ private toExtractedCollateral;
68
+ }
69
+ //# sourceMappingURL=collateralExtractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collateralExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/collateralExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EACL,iBAAiB,EACjB,WAAW,EAEX,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAK3D,qBAAa,mBAAoB,SAAQ,iBAAiB,CAAC,WAAW,CAAC;IAMnE,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,OAAO,CAAC,WAAW,CAAC;gBAGD,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,EACvC,WAAW,EAAE,MAAM,EACF,MAAM,GAAE,cAAkC;IAU7D;;;;OAIG;IACH,KAAK,QAAO,MAAM,CAAY;IAE9B;;;;;;;OAOG;IACH,mBAAmB,QACZ,WAAW,EAAE,SACX,WAAW,KACjB,QAAQ,OAAO,CAAC,CAyBjB;IAEF,OAAO,CAAC,eAAe;IASvB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;;;;OAMG;IACH,eAAe,kBAAyB,MAAM,KAAG,QAAQ,IAAI,CAAC,CA+B5D;IAEF;;;;;;;;OAQG;YACW,uBAAuB;IA6CrC;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB,CA8B9B;IAEF;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB,CAwD3B;CACH"}
@@ -0,0 +1,215 @@
1
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
2
+ import { AbstractExtractor, } from '@rosen-bridge/scanner';
3
+ import ergoExplorerClientFactory from '@rosen-clients/ergo-explorer';
4
+ import * as ergoLib from 'ergo-lib-wasm-nodejs';
5
+ import CollateralAction from '../actions/collateralAction';
6
+ import { DefaultApiLimit } from '../constants';
7
+ import { JsonBI, uint8ArrayToHex } from '../utils';
8
+ export class CollateralExtractor extends AbstractExtractor {
9
+ id;
10
+ awcNft;
11
+ address;
12
+ dataSource;
13
+ logger;
14
+ ergoTree;
15
+ action;
16
+ explorerApi;
17
+ constructor(id, awcNft, address, dataSource, explorerUrl, logger = new DummyLogger()) {
18
+ super();
19
+ this.id = id;
20
+ this.awcNft = awcNft;
21
+ this.address = address;
22
+ this.dataSource = dataSource;
23
+ this.logger = logger;
24
+ this.ergoTree = ergoLib.Address.from_base58(this.address)
25
+ .to_ergo_tree()
26
+ .to_base16_bytes();
27
+ this.action = new CollateralAction(this.dataSource, this.logger);
28
+ this.explorerApi = ergoExplorerClientFactory(explorerUrl);
29
+ }
30
+ /**
31
+ * get id for extractor. This id must be unique over all extractors.
32
+ *
33
+ * @return {string}
34
+ */
35
+ getId = () => this.id;
36
+ /**
37
+ * process a list of transactions and store collateral box details
38
+ *
39
+ * @param {Transaction[]} txs list of transaction for block
40
+ * @param {BlockEntity} block block id for transactions as hex encoded
41
+ * @return {Promise<boolean>} Promise<boolean> if no error occurred return
42
+ * true. otherwise, return false
43
+ */
44
+ processTransactions = async (txs, block) => {
45
+ const boxes = [];
46
+ const spendBoxIds = [];
47
+ for (const tx of txs) {
48
+ for (const outputBox of tx.outputs) {
49
+ if (!this.isCollateralBox(outputBox)) {
50
+ continue;
51
+ }
52
+ boxes.push(this.toExtractedCollateral(outputBox));
53
+ }
54
+ spendBoxIds.push(...tx.inputs.map((box) => box.boxId));
55
+ }
56
+ try {
57
+ await this.action.storeCollaterals(boxes, block, this.getId());
58
+ await this.action.spendCollaterals(spendBoxIds, block, this.getId());
59
+ }
60
+ catch (e) {
61
+ this.logger.error(`Error in storing collaterals of the block ${block}: ${e}`);
62
+ return false;
63
+ }
64
+ return true;
65
+ };
66
+ isCollateralBox(outputBox) {
67
+ const awcNft = outputBox.assets?.at(0)?.tokenId;
68
+ return (awcNft != undefined &&
69
+ awcNft === this.awcNft &&
70
+ outputBox.ergoTree === this.ergoTree);
71
+ }
72
+ forkBlock;
73
+ /**
74
+ * Initializes the database with older collaterals
75
+ *
76
+ * @param {number} initialHeight
77
+ * @return {Promise<void>}
78
+ * @memberof CollateralExtractor
79
+ */
80
+ initializeBoxes = async (initialHeight) => {
81
+ const unspentCollaterals = await this.getAllUnspentCollaterals(initialHeight);
82
+ this.logger.debug(`unspent collateral box info with following IDs gotten form Ergo network: [${unspentCollaterals
83
+ .map((box) => box.boxId)
84
+ .join(', ')}]`);
85
+ const storedUnspentCollateralBoxIds = await this.action.getUnspentCollateralBoxIds(this.getId());
86
+ const unspentCollateralBoxIds = new Set(unspentCollaterals.map((box) => box.boxId));
87
+ await this.tidyUpStoredCollaterals(initialHeight, storedUnspentCollateralBoxIds.filter((boxId) => !unspentCollateralBoxIds.has(boxId)));
88
+ for (const collateral of unspentCollaterals) {
89
+ this.logger.debug(`saving unspent collateral with boxId=[${collateral.boxId}] to database for initialization`);
90
+ await this.action.saveCollateral(collateral, this.getId());
91
+ this.logger.debug(`saved unspent collateral with boxId=[${collateral.boxId}] to database for initialization`);
92
+ }
93
+ };
94
+ /**
95
+ * removes or updates stored collateral boxes before initializing boxes
96
+ *
97
+ * @private
98
+ * @param {number} initialHeight
99
+ * @param {string[]} collateralBoxIds
100
+ * @return {Promise<void>}
101
+ * @memberof CollateralExtractor
102
+ */
103
+ async tidyUpStoredCollaterals(initialHeight, collateralBoxIds) {
104
+ for (const boxId of collateralBoxIds) {
105
+ let boxInfo;
106
+ try {
107
+ boxInfo = await this.explorerApi.v1.getApiV1BoxesP1(boxId);
108
+ }
109
+ catch (e) {
110
+ if (e?.response?.status === 404) {
111
+ this.action.deleteCollateral(boxId, this.getId());
112
+ }
113
+ else {
114
+ throw new Error(`something went wrong when trying to get box=[${boxId}] from Ergo network: ${e?.message}`);
115
+ }
116
+ return;
117
+ }
118
+ if (boxInfo?.spentTransactionId != null) {
119
+ try {
120
+ const transactionInfo = await this.explorerApi.v1.getApiV1TransactionsP1(boxInfo.spentTransactionId);
121
+ if (transactionInfo.inclusionHeight < initialHeight) {
122
+ this.action.saveCollateral({
123
+ boxId: boxId,
124
+ spendHeight: transactionInfo.inclusionHeight,
125
+ spendBlock: transactionInfo.blockId,
126
+ }, this.getId());
127
+ }
128
+ }
129
+ catch (e) {
130
+ throw new Error(`something went wrong when trying to get transaction=[${boxInfo.spentTransactionId}] from Ergo network: ${e?.message}`);
131
+ }
132
+ }
133
+ }
134
+ }
135
+ /**
136
+ * gets all unspent collaterals from Ergo explorer api
137
+ *
138
+ * @private
139
+ * @param {number} initialHeight
140
+ * @return {Promise<Array<ExtractedCollateral>>}
141
+ * @memberof CollateralExtractor
142
+ */
143
+ getAllUnspentCollaterals = async (initialHeight) => {
144
+ const extractedBoxes = [];
145
+ let offset = 0;
146
+ let total = 1;
147
+ while (offset < total) {
148
+ const boxes = await this.explorerApi.v1.getApiV1BoxesUnspentByergotreeP1(this.ergoTree, { offset: offset, limit: DefaultApiLimit });
149
+ if (!boxes.items) {
150
+ throw new Error('Explorer api output items should not be undefined.');
151
+ }
152
+ extractedBoxes.push(...boxes.items
153
+ .filter((box) => box.creationHeight &&
154
+ box.creationHeight < initialHeight &&
155
+ this.isCollateralBox(box))
156
+ .map((box) => this.toExtractedCollateral(box)));
157
+ total = boxes.total;
158
+ offset += DefaultApiLimit;
159
+ }
160
+ return extractedBoxes;
161
+ };
162
+ /**
163
+ * converts output box information to an ExtractedCollateral object
164
+ *
165
+ * @private
166
+ * @param {(OutputInfo | OutputBox)} box
167
+ * @return {ExtractedCollateral}
168
+ * @memberof CollateralExtractor
169
+ */
170
+ toExtractedCollateral = (box) => {
171
+ const ergoOutputBox = ergoLib.ErgoBox.from_json(JsonBI.stringify(box));
172
+ let r4;
173
+ try {
174
+ r4 = ergoOutputBox
175
+ .register_value(ergoLib.NonMandatoryRegisterId.R4)
176
+ ?.to_byte_array();
177
+ }
178
+ catch (e) {
179
+ throw new Error(`collateral box with boxId=${box.boxId} skipped: ${e}`);
180
+ }
181
+ if (r4 == undefined) {
182
+ throw new Error(`collateral box with boxId=${box.boxId} skipped, because of an invalid R4 register`);
183
+ }
184
+ const wId = uint8ArrayToHex(r4);
185
+ this.logger.debug(`Extracted WID=[${wId}] from R4 register of box=${ergoOutputBox
186
+ .box_id()
187
+ .to_str()}`);
188
+ let r5;
189
+ try {
190
+ r5 = ergoOutputBox
191
+ .register_value(ergoLib.NonMandatoryRegisterId.R5)
192
+ ?.to_i64()
193
+ .to_str();
194
+ }
195
+ catch (e) {
196
+ throw new Error(`collateral box with boxId=${box.boxId} skipped: ${e}`);
197
+ }
198
+ if (r5 == undefined) {
199
+ throw new Error(`collateral box with boxId=${box.boxId} skipped, because of an invalid R5 register`);
200
+ }
201
+ const rwtCount = BigInt(r5);
202
+ this.logger.debug(`Extracted rwtCount=[${rwtCount}] from R5 register of box=${ergoOutputBox
203
+ .box_id()
204
+ .to_str()}`);
205
+ return {
206
+ boxId: box.boxId,
207
+ boxSerialized: Buffer.from(ergoOutputBox.sigma_serialize_bytes()).toString('base64'),
208
+ wId: wId,
209
+ rwtCount: rwtCount,
210
+ txId: box.transactionId,
211
+ height: Number(box.creationHeight),
212
+ };
213
+ };
214
+ }
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGF0ZXJhbEV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvY29sbGF0ZXJhbEV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFDTCxpQkFBaUIsR0FJbEIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLHlCQUF5QixNQUFNLDhCQUE4QixDQUFDO0FBR3JFLE9BQU8sS0FBSyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFFaEQsT0FBTyxnQkFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRW5ELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxpQkFBOEI7SUFNbEQ7SUFDQTtJQUNBO0lBQ0E7SUFFQTtJQVZGLFFBQVEsQ0FBUztJQUN6QixNQUFNLENBQW1CO0lBQzFCLFdBQVcsQ0FBQztJQUVwQixZQUNtQixFQUFVLEVBQ1YsTUFBYyxFQUNkLE9BQWUsRUFDZixVQUFzQixFQUN2QyxXQUFtQixFQUNGLFNBQXlCLElBQUksV0FBVyxFQUFFO1FBRTNELEtBQUssRUFBRSxDQUFDO1FBUFMsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUV0QixXQUFNLEdBQU4sTUFBTSxDQUFvQztRQUczRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDdEQsWUFBWSxFQUFFO2FBQ2QsZUFBZSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFD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TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7XG4gIEFic3RyYWN0RXh0cmFjdG9yLFxuICBCbG9ja0VudGl0eSxcbiAgT3V0cHV0Qm94LFxuICBUcmFuc2FjdGlvbixcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyJztcbmltcG9ydCBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5IGZyb20gJ0Byb3Nlbi1jbGllbnRzL2VyZ28tZXhwbG9yZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25JbmZvIH0gZnJvbSAnQHJvc2VuLWNsaWVudHMvZXJnby1leHBsb3Jlci9kaXN0L3NyYy92MS90eXBlcyc7XG5pbXBvcnQgeyBPdXRwdXRJbmZvIH0gZnJvbSAnQHJvc2VuLWNsaWVudHMvZXJnby1leHBsb3Jlci9kaXN0L3NyYy92MS90eXBlcy9vdXRwdXRJbmZvJztcbmltcG9ydCAqIGFzIGVyZ29MaWIgZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ3R5cGVvcm0nO1xuaW1wb3J0IENvbGxhdGVyYWxBY3Rpb24gZnJvbSAnLi4vYWN0aW9ucy9jb2xsYXRlcmFsQWN0aW9uJztcbmltcG9ydCB7IERlZmF1bHRBcGlMaW1pdCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBFeHRyYWN0ZWRDb2xsYXRlcmFsIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRDb2xsYXRlcmFsJztcbmltcG9ydCB7IEpzb25CSSwgdWludDhBcnJheVRvSGV4IH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQ29sbGF0ZXJhbEV4dHJhY3RvciBleHRlbmRzIEFic3RyYWN0RXh0cmFjdG9yPFRyYW5zYWN0aW9uPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXJnb1RyZWU6IHN0cmluZztcbiAgcmVhZG9ubHkgYWN0aW9uOiBDb2xsYXRlcmFsQWN0aW9uO1xuICBwcml2YXRlIGV4cGxvcmVyQXBpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWQ6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF3Y05mdDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWRkcmVzczogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICBleHBsb3JlclVybDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlciA9IG5ldyBEdW1teUxvZ2dlcigpXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5lcmdvVHJlZSA9IGVyZ29MaWIuQWRkcmVzcy5mcm9tX2Jhc2U1OCh0aGlzLmFkZHJlc3MpXG4gICAgICAudG9fZXJnb190cmVlKClcbiAgICAgIC50b19iYXNlMTZfYnl0ZXMoKTtcbiAgICB0aGlzLmFjdGlvbiA9IG5ldyBDb2xsYXRlcmFsQWN0aW9uKHRoaXMuZGF0YVNvdXJjZSwgdGhpcy5sb2dnZXIpO1xuICAgIHRoaXMuZXhwbG9yZXJBcGkgPSBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5KGV4cGxvcmVyVXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgaWQgZm9yIGV4dHJhY3Rvci4gVGhpcyBpZCBtdXN0IGJlIHVuaXF1ZSBvdmVyIGFsbCBleHRyYWN0b3JzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9XG4gICAqL1xuICBnZXRJZCA9ICgpOiBzdHJpbmcgPT4gdGhpcy5pZDtcblxuICAvKipcbiAgICogcHJvY2VzcyBhIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGFuZCBzdG9yZSBjb2xsYXRlcmFsIGJveCBkZXRhaWxzXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25bXX0gdHhzIGxpc3Qgb2YgdHJhbnNhY3Rpb24gZm9yIGJsb2NrXG4gICAqIEBwYXJhbSB7QmxvY2tFbnRpdHl9IGJsb2NrIGJsb2NrIGlkIGZvciB0cmFuc2FjdGlvbnMgYXMgaGV4IGVuY29kZWRcbiAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFuPn0gUHJvbWlzZTxib29sZWFuPiBpZiBubyBlcnJvciBvY2N1cnJlZCByZXR1cm5cbiAgICogdHJ1ZS4gb3RoZXJ3aXNlLCByZXR1cm4gZmFsc2VcbiAgICovXG4gIHByb2Nlc3NUcmFuc2FjdGlvbnMgPSBhc3luYyAoXG4gICAgdHhzOiBUcmFuc2FjdGlvbltdLFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eVxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBjb25zdCBib3hlczogQXJyYXk8RXh0cmFjdGVkQ29sbGF0ZXJhbD4gPSBbXTtcbiAgICBjb25zdCBzcGVuZEJveElkczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIGZvciAoY29uc3QgdHggb2YgdHhzKSB7XG4gICAgICBmb3IgKGNvbnN0IG91dHB1dEJveCBvZiB0eC5vdXRwdXRzKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0NvbGxhdGVyYWxCb3gob3V0cHV0Qm94KSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGJveGVzLnB1c2godGhpcy50b0V4dHJhY3RlZENvbGxhdGVyYWwob3V0cHV0Qm94KSk7XG4gICAgICB9XG5cbiAgICAgIHNwZW5kQm94SWRzLnB1c2goLi4udHguaW5wdXRzLm1hcCgoYm94KSA9PiBib3guYm94SWQpKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5hY3Rpb24uc3RvcmVDb2xsYXRlcmFscyhib3hlcywgYmxvY2ssIHRoaXMuZ2V0SWQoKSk7XG4gICAgICBhd2FpdCB0aGlzLmFjdGlvbi5zcGVuZENvbGxhdGVyYWxzKHNwZW5kQm94SWRzLCBibG9jaywgdGhpcy5nZXRJZCgpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgYEVycm9yIGluIHN0b3JpbmcgY29sbGF0ZXJhbHMgb2YgdGhlIGJsb2NrICR7YmxvY2t9OiAke2V9YFxuICAgICAgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICBwcml2YXRlIGlzQ29sbGF0ZXJhbEJveChvdXRwdXRCb3g6IE91dHB1dEJveCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGF3Y05mdCA9IG91dHB1dEJveC5hc3NldHM/LmF0KDApPy50b2tlbklkO1xuICAgIHJldHVybiAoXG4gICAgICBhd2NOZnQgIT0gdW5kZWZpbmVkICYmXG4gICAgICBhd2NOZnQgPT09IHRoaXMuYXdjTmZ0ICYmXG4gICAgICBvdXRwdXRCb3guZXJnb1RyZWUgPT09IHRoaXMuZXJnb1RyZWVcbiAgICApO1xuICB9XG5cbiAgZm9ya0Jsb2NrOiAoaGFzaDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgZGF0YWJhc2Ugd2l0aCBvbGRlciBjb2xsYXRlcmFsc1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5pdGlhbEhlaWdodFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICAgKiBAbWVtYmVyb2YgQ29sbGF0ZXJhbEV4dHJhY3RvclxuICAgKi9cbiAgaW5pdGlhbGl6ZUJveGVzID0gYXN5bmMgKGluaXRpYWxIZWlnaHQ6IG51bWJlcik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IHVuc3BlbnRDb2xsYXRlcmFscyA9IGF3YWl0IHRoaXMuZ2V0QWxsVW5zcGVudENvbGxhdGVyYWxzKFxuICAgICAgaW5pdGlhbEhlaWdodFxuICAgICk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgdW5zcGVudCBjb2xsYXRlcmFsIGJveCBpbmZvIHdpdGggZm9sbG93aW5nIElEcyBnb3R0ZW4gZm9ybSBFcmdvIG5ldHdvcms6IFske3Vuc3BlbnRDb2xsYXRlcmFsc1xuICAgICAgICAubWFwKChib3gpID0+IGJveC5ib3hJZClcbiAgICAgICAgLmpvaW4oJywgJyl9XWBcbiAgICApO1xuXG4gICAgY29uc3Qgc3RvcmVkVW5zcGVudENvbGxhdGVyYWxCb3hJZHMgPVxuICAgICAgYXdhaXQgdGhpcy5hY3Rpb24uZ2V0VW5zcGVudENvbGxhdGVyYWxCb3hJZHModGhpcy5nZXRJZCgpKTtcbiAgICBjb25zdCB1bnNwZW50Q29sbGF0ZXJhbEJveElkcyA9IG5ldyBTZXQoXG4gICAgICB1bnNwZW50Q29sbGF0ZXJhbHMubWFwKChib3gpID0+IGJveC5ib3hJZClcbiAgICApO1xuICAgIGF3YWl0IHRoaXMudGlkeVVwU3RvcmVkQ29sbGF0ZXJhbHMoXG4gICAgICBpbml0aWFsSGVpZ2h0LFxuICAgICAgc3RvcmVkVW5zcGVudENvbGxhdGVyYWxCb3hJZHMuZmlsdGVyKFxuICAgICAgICAoYm94SWQpID0+ICF1bnNwZW50Q29sbGF0ZXJhbEJveElkcy5oYXMoYm94SWQpXG4gICAgICApXG4gICAgKTtcblxuICAgIGZvciAoY29uc3QgY29sbGF0ZXJhbCBvZiB1bnNwZW50Q29sbGF0ZXJhbHMpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgc2F2aW5nIHVuc3BlbnQgY29sbGF0ZXJhbCB3aXRoIGJveElkPVske2NvbGxhdGVyYWwuYm94SWR9XSB0byBkYXRhYmFzZSBmb3IgaW5pdGlhbGl6YXRpb25gXG4gICAgICApO1xuICAgICAgYXdhaXQgdGhpcy5hY3Rpb24uc2F2ZUNvbGxhdGVyYWwoY29sbGF0ZXJhbCwgdGhpcy5nZXRJZCgpKTtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgc2F2ZWQgdW5zcGVudCBjb2xsYXRlcmFsIHdpdGggYm94SWQ9WyR7Y29sbGF0ZXJhbC5ib3hJZH1dIHRvIGRhdGFiYXNlIGZvciBpbml0aWFsaXphdGlvbmBcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiByZW1vdmVzIG9yIHVwZGF0ZXMgc3RvcmVkIGNvbGxhdGVyYWwgYm94ZXMgYmVmb3JlIGluaXRpYWxpemluZyBib3hlc1xuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5pdGlhbEhlaWdodFxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBjb2xsYXRlcmFsQm94SWRzXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59XG4gICAqIEBtZW1iZXJvZiBDb2xsYXRlcmFsRXh0cmFjdG9yXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHRpZHlVcFN0b3JlZENvbGxhdGVyYWxzKFxuICAgIGluaXRpYWxIZWlnaHQ6IG51bWJlcixcbiAgICBjb2xsYXRlcmFsQm94SWRzOiBzdHJpbmdbXVxuICApIHtcbiAgICBmb3IgKGNvbnN0IGJveElkIG9mIGNvbGxhdGVyYWxCb3hJZHMpIHtcbiAgICAgIGxldCBib3hJbmZvOiBPdXRwdXRJbmZvO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYm94SW5mbyA9IGF3YWl0IHRoaXMuZXhwbG9yZXJBcGkudjEuZ2V0QXBpVjFCb3hlc1AxKGJveElkKTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBpZiAoZT8ucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgdGhpcy5hY3Rpb24uZGVsZXRlQ29sbGF0ZXJhbChib3hJZCwgdGhpcy5nZXRJZCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2hlbiB0cnlpbmcgdG8gZ2V0IGJveD1bJHtib3hJZH1dIGZyb20gRXJnbyBuZXR3b3JrOiAke2U/Lm1lc3NhZ2V9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoYm94SW5mbz8uc3BlbnRUcmFuc2FjdGlvbklkICE9IG51bGwpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB0cmFuc2FjdGlvbkluZm86IFRyYW5zYWN0aW9uSW5mbyA9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmV4cGxvcmVyQXBpLnYxLmdldEFwaVYxVHJhbnNhY3Rpb25zUDEoXG4gICAgICAgICAgICAgIGJveEluZm8uc3BlbnRUcmFuc2FjdGlvbklkXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKHRyYW5zYWN0aW9uSW5mby5pbmNsdXNpb25IZWlnaHQgPCBpbml0aWFsSGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvbi5zYXZlQ29sbGF0ZXJhbChcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJveElkOiBib3hJZCxcbiAgICAgICAgICAgICAgICBzcGVuZEhlaWdodDogdHJhbnNhY3Rpb25JbmZvLmluY2x1c2lvbkhlaWdodCxcbiAgICAgICAgICAgICAgICBzcGVuZEJsb2NrOiB0cmFuc2FjdGlvbkluZm8uYmxvY2tJZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGhpcy5nZXRJZCgpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHNvbWV0aGluZyB3ZW50IHdyb25nIHdoZW4gdHJ5aW5nIHRvIGdldCB0cmFuc2FjdGlvbj1bJHtib3hJbmZvLnNwZW50VHJhbnNhY3Rpb25JZH1dIGZyb20gRXJnbyBuZXR3b3JrOiAke2U/Lm1lc3NhZ2V9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogZ2V0cyBhbGwgdW5zcGVudCBjb2xsYXRlcmFscyBmcm9tIEVyZ28gZXhwbG9yZXIgYXBpXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbml0aWFsSGVpZ2h0XG4gICAqIEByZXR1cm4ge1Byb21pc2U8QXJyYXk8RXh0cmFjdGVkQ29sbGF0ZXJhbD4+fVxuICAgKiBAbWVtYmVyb2YgQ29sbGF0ZXJhbEV4dHJhY3RvclxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBbGxVbnNwZW50Q29sbGF0ZXJhbHMgPSBhc3luYyAoXG4gICAgaW5pdGlhbEhlaWdodDogbnVtYmVyXG4gICk6IFByb21pc2U8QXJyYXk8RXh0cmFjdGVkQ29sbGF0ZXJhbD4+ID0+IHtcbiAgICBjb25zdCBleHRyYWN0ZWRCb3hlczogQXJyYXk8RXh0cmFjdGVkQ29sbGF0ZXJhbD4gPSBbXTtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBsZXQgdG90YWwgPSAxO1xuICAgIHdoaWxlIChvZmZzZXQgPCB0b3RhbCkge1xuICAgICAgY29uc3QgYm94ZXMgPSBhd2FpdCB0aGlzLmV4cGxvcmVyQXBpLnYxLmdldEFwaVYxQm94ZXNVbnNwZW50QnllcmdvdHJlZVAxKFxuICAgICAgICB0aGlzLmVyZ29UcmVlLFxuICAgICAgICB7IG9mZnNldDogb2Zmc2V0LCBsaW1pdDogRGVmYXVsdEFwaUxpbWl0IH1cbiAgICAgICk7XG5cbiAgICAgIGlmICghYm94ZXMuaXRlbXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBsb3JlciBhcGkgb3V0cHV0IGl0ZW1zIHNob3VsZCBub3QgYmUgdW5kZWZpbmVkLicpO1xuICAgICAgfVxuXG4gICAgICBleHRyYWN0ZWRCb3hlcy5wdXNoKFxuICAgICAgICAuLi5ib3hlcy5pdGVtc1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAoYm94KSA9PlxuICAgICAgICAgICAgICBib3guY3JlYXRpb25IZWlnaHQgJiZcbiAgICAgICAgICAgICAgYm94LmNyZWF0aW9uSGVpZ2h0IDwgaW5pdGlhbEhlaWdodCAmJlxuICAgICAgICAgICAgICB0aGlzLmlzQ29sbGF0ZXJhbEJveChib3gpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5tYXAoKGJveCkgPT4gdGhpcy50b0V4dHJhY3RlZENvbGxhdGVyYWwoYm94KSlcbiAgICAgICk7XG4gICAgICB0b3RhbCA9IGJveGVzLnRvdGFsO1xuICAgICAgb2Zmc2V0ICs9IERlZmF1bHRBcGlMaW1pdDtcbiAgICB9XG4gICAgcmV0dXJuIGV4dHJhY3RlZEJveGVzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBjb252ZXJ0cyBvdXRwdXQgYm94IGluZm9ybWF0aW9uIHRvIGFuIEV4dHJhY3RlZENvbGxhdGVyYWwgb2JqZWN0XG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7KE91dHB1dEluZm8gfCBPdXRwdXRCb3gpfSBib3hcbiAgICogQHJldHVybiB7RXh0cmFjdGVkQ29sbGF0ZXJhbH1cbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxFeHRyYWN0b3JcbiAgICovXG4gIHByaXZhdGUgdG9FeHRyYWN0ZWRDb2xsYXRlcmFsID0gKFxuICAgIGJveDogT3V0cHV0SW5mbyB8IE91dHB1dEJveFxuICApOiBFeHRyYWN0ZWRDb2xsYXRlcmFsID0+IHtcbiAgICBjb25zdCBlcmdvT3V0cHV0Qm94ID0gZXJnb0xpYi5FcmdvQm94LmZyb21fanNvbihKc29uQkkuc3RyaW5naWZ5KGJveCkpO1xuXG4gICAgbGV0IHI0OiBVaW50OEFycmF5IHwgdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICByNCA9IGVyZ29PdXRwdXRCb3hcbiAgICAgICAgLnJlZ2lzdGVyX3ZhbHVlKGVyZ29MaWIuTm9uTWFuZGF0b3J5UmVnaXN0ZXJJZC5SNClcbiAgICAgICAgPy50b19ieXRlX2FycmF5KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb2xsYXRlcmFsIGJveCB3aXRoIGJveElkPSR7Ym94LmJveElkfSBza2lwcGVkOiAke2V9YCk7XG4gICAgfVxuICAgIGlmIChyNCA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGNvbGxhdGVyYWwgYm94IHdpdGggYm94SWQ9JHtib3guYm94SWR9IHNraXBwZWQsIGJlY2F1c2Ugb2YgYW4gaW52YWxpZCBSNCByZWdpc3RlcmBcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHdJZCA9IHVpbnQ4QXJyYXlUb0hleChyNCk7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgRXh0cmFjdGVkIFdJRD1bJHt3SWR9XSBmcm9tIFI0IHJlZ2lzdGVyIG9mIGJveD0ke2VyZ29PdXRwdXRCb3hcbiAgICAgICAgLmJveF9pZCgpXG4gICAgICAgIC50b19zdHIoKX1gXG4gICAgKTtcblxuICAgIGxldCByNTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICByNSA9IGVyZ29PdXRwdXRCb3hcbiAgICAgICAgLnJlZ2lzdGVyX3ZhbHVlKGVyZ29MaWIuTm9uTWFuZGF0b3J5UmVnaXN0ZXJJZC5SNSlcbiAgICAgICAgPy50b19pNjQoKVxuICAgICAgICAudG9fc3RyKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb2xsYXRlcmFsIGJveCB3aXRoIGJveElkPSR7Ym94LmJveElkfSBza2lwcGVkOiAke2V9YCk7XG4gICAgfVxuICAgIGlmIChyNSA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGNvbGxhdGVyYWwgYm94IHdpdGggYm94SWQ9JHtib3guYm94SWR9IHNraXBwZWQsIGJlY2F1c2Ugb2YgYW4gaW52YWxpZCBSNSByZWdpc3RlcmBcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHJ3dENvdW50ID0gQmlnSW50KHI1KTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBFeHRyYWN0ZWQgcnd0Q291bnQ9WyR7cnd0Q291bnR9XSBmcm9tIFI1IHJlZ2lzdGVyIG9mIGJveD0ke2VyZ29PdXRwdXRCb3hcbiAgICAgICAgLmJveF9pZCgpXG4gICAgICAgIC50b19zdHIoKX1gXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBib3hJZDogYm94LmJveElkLFxuICAgICAgYm94U2VyaWFsaXplZDogQnVmZmVyLmZyb20oXG4gICAgICAgIGVyZ29PdXRwdXRCb3guc2lnbWFfc2VyaWFsaXplX2J5dGVzKClcbiAgICAgICkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgd0lkOiB3SWQsXG4gICAgICByd3RDb3VudDogcnd0Q291bnQsXG4gICAgICB0eElkOiBib3gudHJhbnNhY3Rpb25JZCxcbiAgICAgIGhlaWdodDogTnVtYmVyKGJveC5jcmVhdGlvbkhlaWdodCksXG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ export interface ExtractedCollateral {
2
+ boxId: string;
3
+ boxSerialized: string;
4
+ wId: string;
5
+ rwtCount: bigint;
6
+ txId: string;
7
+ block?: string;
8
+ height?: number;
9
+ spendBlock?: string;
10
+ spendHeight?: number;
11
+ }
12
+ //# sourceMappingURL=extractedCollateral.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractedCollateral.d.ts","sourceRoot":"","sources":["../../lib/interfaces/extractedCollateral.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdGVkQ29sbGF0ZXJhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9pbnRlcmZhY2VzL2V4dHJhY3RlZENvbGxhdGVyYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRXh0cmFjdGVkQ29sbGF0ZXJhbCB7XG4gIGJveElkOiBzdHJpbmc7XG4gIGJveFNlcmlhbGl6ZWQ6IHN0cmluZztcbiAgd0lkOiBzdHJpbmc7XG4gIHJ3dENvdW50OiBiaWdpbnQ7XG4gIHR4SWQ6IHN0cmluZztcbiAgYmxvY2s/OiBzdHJpbmc7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgc3BlbmRCbG9jaz86IHN0cmluZztcbiAgc3BlbmRIZWlnaHQ/OiBudW1iZXI7XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
- import { migration1688554842087 } from './postgres/1688554842087-migration';
1
+ import { migration1706610773315 } from './postgres/1706610773315-migration';
2
2
  import { migration1706610773176 } from './sqlite/1706610773176-migration';
3
3
  export declare const migrations: {
4
4
  sqlite: (typeof migration1706610773176)[];
5
- postgres: (typeof migration1688554842087)[];
5
+ postgres: (typeof migration1706610773315)[];
6
6
  };
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAO5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,eAAO,MAAM,UAAU;;;CAatB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/migrations/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAI5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,eAAO,MAAM,UAAU;;;CAatB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class Migration1708189757400 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1708189757400-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1708189757400-migration.d.ts","sourceRoot":"","sources":["../../../lib/migrations/postgres/1708189757400-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,IAAI,SAA4B;IAEnB,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
@@ -0,0 +1,28 @@
1
+ export class Migration1708189757400 {
2
+ name = 'Migration1708189757400';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`
5
+ CREATE TABLE "collateral_entity" (
6
+ "id" SERIAL NOT NULL,
7
+ "extractor" character varying NOT NULL,
8
+ "boxId" character varying NOT NULL,
9
+ "boxSerialized" character varying NOT NULL,
10
+ "wId" character varying NOT NULL,
11
+ "rwtCount" bigint NOT NULL,
12
+ "txId" character varying NOT NULL,
13
+ "block" character varying,
14
+ "height" integer,
15
+ "spendBlock" text,
16
+ "spendHeight" integer,
17
+ CONSTRAINT "UQ_2d4abc2071df9a2300a5e1b4616" UNIQUE ("boxId", "extractor"),
18
+ CONSTRAINT "PK_e8506252c52632f4741c8415c3f" PRIMARY KEY ("id")
19
+ )
20
+ `);
21
+ }
22
+ async down(queryRunner) {
23
+ await queryRunner.query(`
24
+ DROP TABLE "collateral_entity"
25
+ `);
26
+ }
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcwODE4OTc1NzQwMC1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9wb3N0Z3Jlcy8xNzA4MTg5NzU3NDAwLW1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLElBQUksR0FBRyx3QkFBd0IsQ0FBQztJQUV6QixLQUFLLENBQUMsRUFBRSxDQUFDLFdBQXdCO1FBQ3RDLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztTQWdCbkIsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBd0I7UUFDeEMsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOztTQUVuQixDQUFDLENBQUM7SUFDVCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNaWdyYXRpb25JbnRlcmZhY2UsIFF1ZXJ5UnVubmVyIH0gZnJvbSAndHlwZW9ybSc7XG5cbmV4cG9ydCBjbGFzcyBNaWdyYXRpb24xNzA4MTg5NzU3NDAwIGltcGxlbWVudHMgTWlncmF0aW9uSW50ZXJmYWNlIHtcbiAgbmFtZSA9ICdNaWdyYXRpb24xNzA4MTg5NzU3NDAwJztcblxuICBwdWJsaWMgYXN5bmMgdXAocXVlcnlSdW5uZXI6IFF1ZXJ5UnVubmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIFwiY29sbGF0ZXJhbF9lbnRpdHlcIiAoXG4gICAgICAgICAgICAgICAgXCJpZFwiIFNFUklBTCBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImV4dHJhY3RvclwiIGNoYXJhY3RlciB2YXJ5aW5nIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYm94SWRcIiBjaGFyYWN0ZXIgdmFyeWluZyBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJveFNlcmlhbGl6ZWRcIiBjaGFyYWN0ZXIgdmFyeWluZyBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcIndJZFwiIGNoYXJhY3RlciB2YXJ5aW5nIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwicnd0Q291bnRcIiBiaWdpbnQgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJ0eElkXCIgY2hhcmFjdGVyIHZhcnlpbmcgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJibG9ja1wiIGNoYXJhY3RlciB2YXJ5aW5nLFxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCIgaW50ZWdlcixcbiAgICAgICAgICAgICAgICBcInNwZW5kQmxvY2tcIiB0ZXh0LFxuICAgICAgICAgICAgICAgIFwic3BlbmRIZWlnaHRcIiBpbnRlZ2VyLFxuICAgICAgICAgICAgICAgIENPTlNUUkFJTlQgXCJVUV8yZDRhYmMyMDcxZGY5YTIzMDBhNWUxYjQ2MTZcIiBVTklRVUUgKFwiYm94SWRcIiwgXCJleHRyYWN0b3JcIiksXG4gICAgICAgICAgICAgICAgQ09OU1RSQUlOVCBcIlBLX2U4NTA2MjUyYzUyNjMyZjQ3NDFjODQxNWMzZlwiIFBSSU1BUlkgS0VZIChcImlkXCIpXG4gICAgICAgICAgICApXG4gICAgICAgIGApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRvd24ocXVlcnlSdW5uZXI6IFF1ZXJ5UnVubmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgRFJPUCBUQUJMRSBcImNvbGxhdGVyYWxfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class Migration1708175020320 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1708175020320-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1708175020320-migration.d.ts","sourceRoot":"","sources":["../../../lib/migrations/sqlite/1708175020320-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,IAAI,SAA4B;IAEnB,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
@@ -0,0 +1,27 @@
1
+ export class Migration1708175020320 {
2
+ name = 'Migration1708175020320';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`
5
+ CREATE TABLE "collateral_entity" (
6
+ "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
7
+ "extractor" varchar NOT NULL,
8
+ "boxId" varchar NOT NULL,
9
+ "boxSerialized" varchar NOT NULL,
10
+ "wId" varchar NOT NULL,
11
+ "rwtCount" bigint NOT NULL,
12
+ "txId" varchar NOT NULL,
13
+ "block" varchar,
14
+ "height" integer,
15
+ "spendBlock" text,
16
+ "spendHeight" integer,
17
+ CONSTRAINT "UQ_2d4abc2071df9a2300a5e1b4616" UNIQUE ("boxId", "extractor")
18
+ )
19
+ `);
20
+ }
21
+ async down(queryRunner) {
22
+ await queryRunner.query(`
23
+ DROP TABLE "collateral_entity"
24
+ `);
25
+ }
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcwODE3NTAyMDMyMC1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9zcWxpdGUvMTcwODE3NTAyMDMyMC1taWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxJQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFFekIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUF3QjtRQUN0QyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7Ozs7Ozs7Ozs7Ozs7OztTQWVuQixDQUFDLENBQUM7SUFDVCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxXQUF3QjtRQUN4QyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7O1NBRW5CLENBQUMsQ0FBQztJQUNULENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pZ3JhdGlvbkludGVyZmFjZSwgUXVlcnlSdW5uZXIgfSBmcm9tICd0eXBlb3JtJztcblxuZXhwb3J0IGNsYXNzIE1pZ3JhdGlvbjE3MDgxNzUwMjAzMjAgaW1wbGVtZW50cyBNaWdyYXRpb25JbnRlcmZhY2Uge1xuICBuYW1lID0gJ01pZ3JhdGlvbjE3MDgxNzUwMjAzMjAnO1xuXG4gIHB1YmxpYyBhc3luYyB1cChxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgXCJjb2xsYXRlcmFsX2VudGl0eVwiIChcbiAgICAgICAgICAgICAgICBcImlkXCIgaW50ZWdlciBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5UIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJveElkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJveFNlcmlhbGl6ZWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwid0lkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInJ3dENvdW50XCIgYmlnaW50IE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwidHhJZFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJibG9ja1wiIHZhcmNoYXIsXG4gICAgICAgICAgICAgICAgXCJoZWlnaHRcIiBpbnRlZ2VyLFxuICAgICAgICAgICAgICAgIFwic3BlbmRCbG9ja1wiIHRleHQsXG4gICAgICAgICAgICAgICAgXCJzcGVuZEhlaWdodFwiIGludGVnZXIsXG4gICAgICAgICAgICAgICAgQ09OU1RSQUlOVCBcIlVRXzJkNGFiYzIwNzFkZjlhMjMwMGE1ZTFiNDYxNlwiIFVOSVFVRSAoXCJib3hJZFwiLCBcImV4dHJhY3RvclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICBgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkb3duKHF1ZXJ5UnVubmVyOiBRdWVyeVJ1bm5lcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIERST1AgVEFCTEUgXCJjb2xsYXRlcmFsX2VudGl0eVwiXG4gICAgICAgIGApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ export declare const bigintTransformer: {
2
+ /**
3
+ * converts data from string in database to bigint in code
4
+ *
5
+ * @param {string} value
6
+ * @return {bigint}
7
+ */
8
+ from(value: string): bigint;
9
+ /**
10
+ * converts data from bigint in code to string in database
11
+ *
12
+ * @param {bigint} value
13
+ * @return {string}
14
+ */
15
+ to(value: bigint): string;
16
+ };
17
+ //# sourceMappingURL=transformers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../lib/transformers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;IAC5B;;;;;OAKG;gBACS,MAAM;IAGlB;;;;;OAKG;cACO,MAAM;CAGjB,CAAC"}
@@ -0,0 +1,21 @@
1
+ export const bigintTransformer = {
2
+ /**
3
+ * converts data from string in database to bigint in code
4
+ *
5
+ * @param {string} value
6
+ * @return {bigint}
7
+ */
8
+ from(value) {
9
+ return BigInt(value);
10
+ },
11
+ /**
12
+ * converts data from bigint in code to string in database
13
+ *
14
+ * @param {bigint} value
15
+ * @return {string}
16
+ */
17
+ to(value) {
18
+ return value.toString();
19
+ },
20
+ };
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3RyYW5zZm9ybWVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRztJQUMvQjs7Ozs7T0FLRztJQUNILElBQUksQ0FBQyxLQUFhO1FBQ2hCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILEVBQUUsQ0FBQyxLQUFhO1FBQ2QsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUIsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYmlnaW50VHJhbnNmb3JtZXIgPSB7XG4gIC8qKlxuICAgKiBjb252ZXJ0cyBkYXRhIGZyb20gc3RyaW5nIGluIGRhdGFiYXNlIHRvIGJpZ2ludCBpbiBjb2RlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgKiBAcmV0dXJuIHtiaWdpbnR9XG4gICAqL1xuICBmcm9tKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gQmlnSW50KHZhbHVlKTtcbiAgfSxcbiAgLyoqXG4gICAqIGNvbnZlcnRzIGRhdGEgZnJvbSBiaWdpbnQgaW4gY29kZSB0byBzdHJpbmcgaW4gZGF0YWJhc2VcbiAgICpcbiAgICogQHBhcmFtIHtiaWdpbnR9IHZhbHVlXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIHRvKHZhbHVlOiBiaWdpbnQpIHtcbiAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgfSxcbn07XG4iXX0=
package/dist/utils.js CHANGED
@@ -10,11 +10,11 @@ const JsonBI = JSONBigInt({
10
10
  */
11
11
  const getWidInfo = (WIDs) => {
12
12
  const WIDsArray = WIDs.split(',');
13
- const hash = Buffer.from(blake2b(WIDsArray.join(''), undefined, 32)).toString('hex');
13
+ const hash = Buffer.from(blake2b(Buffer.from(WIDsArray.join(''), 'hex'), undefined, 32)).toString('hex');
14
14
  return {
15
15
  WIDsHash: hash,
16
16
  WIDsCount: WIDsArray.length,
17
17
  };
18
18
  };
19
19
  export { JsonBI, getWidInfo };
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7QUFFckMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDO0lBQ3hCLGVBQWUsRUFBRSxJQUFJO0NBQ3RCLENBQUMsQ0FBQztBQUVIOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQ2xDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQzNFLEtBQUssQ0FDTixDQUFDO0lBRUYsT0FBTztRQUNMLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNO0tBQzVCLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmxha2UyYiB9IGZyb20gJ2JsYWtlanMnO1xuaW1wb3J0IEpTT05CaWdJbnQgZnJvbSAnanNvbi1iaWdpbnQnO1xuXG5jb25zdCBKc29uQkkgPSBKU09OQmlnSW50KHtcbiAgdXNlTmF0aXZlQmlnSW50OiB0cnVlLFxufSk7XG5cbi8qKlxuICogY2FsY3VsYXRlcyBoYXNoIG9mIFdJRHNcbiAqIEBwYXJhbSBXSURzXG4gKiBAcmV0dXJucyByZXR1cm5zIFdJRHNIYXNoIHdpdGggaXQncyBjb3VudFxuICovXG5jb25zdCBnZXRXaWRJbmZvID0gKFdJRHM6IHN0cmluZykgPT4ge1xuICBjb25zdCBXSURzQXJyYXkgPSBXSURzLnNwbGl0KCcsJyk7XG4gIGNvbnN0IGhhc2ggPSBCdWZmZXIuZnJvbShibGFrZTJiKFdJRHNBcnJheS5qb2luKCcnKSwgdW5kZWZpbmVkLCAzMikpLnRvU3RyaW5nKFxuICAgICdoZXgnXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBXSURzSGFzaDogaGFzaCxcbiAgICBXSURzQ291bnQ6IFdJRHNBcnJheS5sZW5ndGgsXG4gIH07XG59O1xuXG5leHBvcnQgeyBKc29uQkksIGdldFdpZEluZm8gfTtcbiJdfQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7QUFFckMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDO0lBQ3hCLGVBQWUsRUFBRSxJQUFJO0NBQ3RCLENBQUMsQ0FBQztBQUVIOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQ2xDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQy9ELENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWxCLE9BQU87UUFDTCxRQUFRLEVBQUUsSUFBSTtRQUNkLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtLQUM1QixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJsYWtlMmIgfSBmcm9tICdibGFrZWpzJztcbmltcG9ydCBKU09OQmlnSW50IGZyb20gJ2pzb24tYmlnaW50JztcblxuY29uc3QgSnNvbkJJID0gSlNPTkJpZ0ludCh7XG4gIHVzZU5hdGl2ZUJpZ0ludDogdHJ1ZSxcbn0pO1xuXG4vKipcbiAqIGNhbGN1bGF0ZXMgaGFzaCBvZiBXSURzXG4gKiBAcGFyYW0gV0lEc1xuICogQHJldHVybnMgcmV0dXJucyBXSURzSGFzaCB3aXRoIGl0J3MgY291bnRcbiAqL1xuY29uc3QgZ2V0V2lkSW5mbyA9IChXSURzOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgV0lEc0FycmF5ID0gV0lEcy5zcGxpdCgnLCcpO1xuICBjb25zdCBoYXNoID0gQnVmZmVyLmZyb20oXG4gICAgYmxha2UyYihCdWZmZXIuZnJvbShXSURzQXJyYXkuam9pbignJyksICdoZXgnKSwgdW5kZWZpbmVkLCAzMilcbiAgKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgcmV0dXJuIHtcbiAgICBXSURzSGFzaDogaGFzaCxcbiAgICBXSURzQ291bnQ6IFdJRHNBcnJheS5sZW5ndGgsXG4gIH07XG59O1xuXG5leHBvcnQgeyBKc29uQkksIGdldFdpZEluZm8gfTtcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rosen-bridge/watcher-data-extractor",
3
- "version": "5.0.0",
3
+ "version": "5.0.1",
4
4
  "description": "Extractor for rosen specific boxes on ergo blockchain",
5
5
  "author": "Rosen Team",
6
6
  "license": "GPL-3.0",