@rosen-bridge/watcher-data-extractor 2.1.4 → 2.1.6
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/package.json +3 -3
- package/dist/actions/EventTriggerAction.d.ts +0 -35
- package/dist/actions/EventTriggerAction.d.ts.map +0 -1
- package/dist/actions/EventTriggerAction.js +0 -122
- package/dist/actions/EventTriggerDB.d.ts +0 -33
- package/dist/actions/EventTriggerDB.d.ts.map +0 -1
- package/dist/actions/EventTriggerDB.js +0 -145
- package/dist/actions/commitmentAction.d.ts +0 -33
- package/dist/actions/commitmentAction.d.ts.map +0 -1
- package/dist/actions/commitmentAction.js +0 -110
- package/dist/actions/commitmentDB.d.ts +0 -32
- package/dist/actions/commitmentDB.d.ts.map +0 -1
- package/dist/actions/commitmentDB.js +0 -129
- package/dist/actions/permitAction.d.ts +0 -64
- package/dist/actions/permitAction.d.ts.map +0 -1
- package/dist/actions/permitAction.js +0 -173
- package/dist/actions/permitDB.d.ts +0 -39
- package/dist/actions/permitDB.d.ts.map +0 -1
- package/dist/actions/permitDB.js +0 -164
- package/dist/constants.d.ts +0 -4
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -4
- package/dist/entities/CommitmentEntity.d.ts +0 -17
- package/dist/entities/CommitmentEntity.d.ts.map +0 -1
- package/dist/entities/CommitmentEntity.js +0 -83
- package/dist/entities/EventTriggerEntity.d.ts +0 -28
- package/dist/entities/EventTriggerEntity.d.ts.map +0 -1
- package/dist/entities/EventTriggerEntity.js +0 -138
- package/dist/entities/PermitEntity.d.ts +0 -14
- package/dist/entities/PermitEntity.d.ts.map +0 -1
- package/dist/entities/PermitEntity.js +0 -68
- package/dist/extractor/EventTriggerExtractor.d.ts +0 -28
- package/dist/extractor/EventTriggerExtractor.d.ts.map +0 -1
- package/dist/extractor/EventTriggerExtractor.js +0 -126
- package/dist/extractor/commitmentExtractor.d.ts +0 -35
- package/dist/extractor/commitmentExtractor.d.ts.map +0 -1
- package/dist/extractor/commitmentExtractor.js +0 -110
- package/dist/extractor/permitExtractor.d.ts +0 -139
- package/dist/extractor/permitExtractor.d.ts.map +0 -1
- package/dist/extractor/permitExtractor.js +0 -227
- package/dist/index.d.ts +0 -10
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -10
- package/dist/interfaces/extractedCommitment.d.ts +0 -11
- package/dist/interfaces/extractedCommitment.d.ts.map +0 -1
- package/dist/interfaces/extractedCommitment.js +0 -2
- package/dist/interfaces/extractedEventTrigger.d.ts +0 -21
- package/dist/interfaces/extractedEventTrigger.d.ts.map +0 -1
- package/dist/interfaces/extractedEventTrigger.js +0 -2
- package/dist/interfaces/extractedPermit.d.ts +0 -12
- package/dist/interfaces/extractedPermit.d.ts.map +0 -1
- package/dist/interfaces/extractedPermit.js +0 -2
- package/dist/interfaces/types.d.ts +0 -20
- package/dist/interfaces/types.d.ts.map +0 -1
- package/dist/interfaces/types.js +0 -2
- package/dist/migrations/index.d.ts +0 -7
- package/dist/migrations/index.d.ts.map +0 -1
- package/dist/migrations/index.js +0 -9
- package/dist/migrations/postgres/1683776413304-migration.d.ts +0 -7
- package/dist/migrations/postgres/1683776413304-migration.d.ts.map +0 -1
- package/dist/migrations/postgres/1683776413304-migration.js +0 -81
- package/dist/migrations/postgres/1688554842087-migration.d.ts +0 -7
- package/dist/migrations/postgres/1688554842087-migration.d.ts.map +0 -1
- package/dist/migrations/postgres/1688554842087-migration.js +0 -82
- package/dist/migrations/postgres/1689175974257-migration.d.ts +0 -7
- package/dist/migrations/postgres/1689175974257-migration.d.ts.map +0 -1
- package/dist/migrations/postgres/1689175974257-migration.js +0 -50
- package/dist/migrations/postgres/initMigration1671716035915.d.ts +0 -7
- package/dist/migrations/postgres/initMigration1671716035915.d.ts.map +0 -1
- package/dist/migrations/postgres/initMigration1671716035915.js +0 -61
- package/dist/migrations/postgres/migration1673422203223.d.ts +0 -7
- package/dist/migrations/postgres/migration1673422203223.d.ts.map +0 -1
- package/dist/migrations/postgres/migration1673422203223.js +0 -10
- package/dist/migrations/postgres/migration1676360759874.d.ts +0 -7
- package/dist/migrations/postgres/migration1676360759874.d.ts.map +0 -1
- package/dist/migrations/postgres/migration1676360759874.js +0 -14
- package/dist/migrations/postgres/migration1680777406000.d.ts +0 -7
- package/dist/migrations/postgres/migration1680777406000.d.ts.map +0 -1
- package/dist/migrations/postgres/migration1680777406000.js +0 -10
- package/dist/migrations/sqlite/1683776215472-migration.d.ts +0 -7
- package/dist/migrations/sqlite/1683776215472-migration.d.ts.map +0 -1
- package/dist/migrations/sqlite/1683776215472-migration.js +0 -78
- package/dist/migrations/sqlite/1688555766601-migration.d.ts +0 -7
- package/dist/migrations/sqlite/1688555766601-migration.d.ts.map +0 -1
- package/dist/migrations/sqlite/1688555766601-migration.js +0 -79
- package/dist/migrations/sqlite/1689175103163-migration.d.ts +0 -7
- package/dist/migrations/sqlite/1689175103163-migration.d.ts.map +0 -1
- package/dist/migrations/sqlite/1689175103163-migration.js +0 -392
- package/dist/migrations/sqlite/initMigration1659787165000.d.ts +0 -7
- package/dist/migrations/sqlite/initMigration1659787165000.d.ts.map +0 -1
- package/dist/migrations/sqlite/initMigration1659787165000.js +0 -61
- package/dist/migrations/sqlite/migration1673422203210.d.ts +0 -7
- package/dist/migrations/sqlite/migration1673422203210.d.ts.map +0 -1
- package/dist/migrations/sqlite/migration1673422203210.js +0 -10
- package/dist/migrations/sqlite/migration1676360753347.d.ts +0 -7
- package/dist/migrations/sqlite/migration1676360753347.d.ts.map +0 -1
- package/dist/migrations/sqlite/migration1676360753347.js +0 -14
- package/dist/migrations/sqlite/migration1680777424623.d.ts +0 -7
- package/dist/migrations/sqlite/migration1680777424623.d.ts.map +0 -1
- package/dist/migrations/sqlite/migration1680777424623.js +0 -10
- package/dist/network/ergoNetworkApi.d.ts +0 -15
- package/dist/network/ergoNetworkApi.d.ts.map +0 -1
- package/dist/network/ergoNetworkApi.js +0 -27
- package/dist/network/parser.d.ts +0 -8
- package/dist/network/parser.d.ts.map +0 -1
- package/dist/network/parser.js +0 -5
- package/dist/utils.d.ts +0 -9
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -6
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import * as wasm from 'ergo-lib-wasm-nodejs';
|
|
2
|
-
import { blake2b } from 'blakejs';
|
|
3
|
-
import { AbstractExtractor, } from '@rosen-bridge/scanner';
|
|
4
|
-
import { DummyLogger } from '@rosen-bridge/logger-interface';
|
|
5
|
-
import EventTriggerAction from '../actions/EventTriggerAction';
|
|
6
|
-
import { JsonBI } from '../utils';
|
|
7
|
-
class EventTriggerExtractor extends AbstractExtractor {
|
|
8
|
-
logger;
|
|
9
|
-
id;
|
|
10
|
-
dataSource;
|
|
11
|
-
actions;
|
|
12
|
-
eventTriggerErgoTree;
|
|
13
|
-
RWT;
|
|
14
|
-
constructor(id, dataSource, address, RWT, logger) {
|
|
15
|
-
super();
|
|
16
|
-
this.id = id;
|
|
17
|
-
this.dataSource = dataSource;
|
|
18
|
-
this.eventTriggerErgoTree = wasm.Address.from_base58(address)
|
|
19
|
-
.to_ergo_tree()
|
|
20
|
-
.to_base16_bytes();
|
|
21
|
-
this.RWT = RWT;
|
|
22
|
-
this.logger = logger ? logger : new DummyLogger();
|
|
23
|
-
this.actions = new EventTriggerAction(dataSource, this.logger);
|
|
24
|
-
}
|
|
25
|
-
getId = () => this.id;
|
|
26
|
-
/**
|
|
27
|
-
* gets block id and transactions corresponding to the block and saves if they are valid rosen
|
|
28
|
-
* transactions and in case of success return true and in case of failure returns false
|
|
29
|
-
* @param block
|
|
30
|
-
* @param txs
|
|
31
|
-
*/
|
|
32
|
-
processTransactions = (txs, block) => {
|
|
33
|
-
return new Promise((resolve, reject) => {
|
|
34
|
-
try {
|
|
35
|
-
const boxes = [];
|
|
36
|
-
const txSpendIds = [];
|
|
37
|
-
txs.forEach((transaction) => {
|
|
38
|
-
for (const output of transaction.outputs) {
|
|
39
|
-
try {
|
|
40
|
-
if (output.additionalRegisters &&
|
|
41
|
-
output.assets &&
|
|
42
|
-
output.assets.length > 0 &&
|
|
43
|
-
output.assets[0].tokenId === this.RWT &&
|
|
44
|
-
output.ergoTree === this.eventTriggerErgoTree) {
|
|
45
|
-
const R4 = output.additionalRegisters.R4;
|
|
46
|
-
const R5 = output.additionalRegisters.R5;
|
|
47
|
-
if (R4 && R5) {
|
|
48
|
-
const outputParsed = wasm.ErgoBox.from_json(JsonBI.stringify(output));
|
|
49
|
-
const R4Const = outputParsed.register_value(wasm.NonMandatoryRegisterId.R4);
|
|
50
|
-
const R5Const = outputParsed.register_value(wasm.NonMandatoryRegisterId.R5);
|
|
51
|
-
if (R4Const && R5Const) {
|
|
52
|
-
const R4Serialized = R4Const.to_coll_coll_byte();
|
|
53
|
-
const R5Serialized = R5Const.to_coll_coll_byte();
|
|
54
|
-
if (R4Serialized.length >= 1 && R5Serialized.length >= 12) {
|
|
55
|
-
const WIDs = R4Serialized.map((byteArray) => Buffer.from(byteArray).toString('hex')).join(',');
|
|
56
|
-
const sourceTxId = Buffer.from(R5Serialized[0]).toString();
|
|
57
|
-
const eventId = Buffer.from(blake2b(sourceTxId, undefined, 32)).toString('hex');
|
|
58
|
-
boxes.push({
|
|
59
|
-
eventId: eventId,
|
|
60
|
-
txId: transaction.id,
|
|
61
|
-
boxId: output.boxId,
|
|
62
|
-
boxSerialized: Buffer.from(outputParsed.sigma_serialize_bytes()).toString('base64'),
|
|
63
|
-
toChain: Buffer.from(R5Serialized[2]).toString(),
|
|
64
|
-
toAddress: Buffer.from(R5Serialized[4]).toString(),
|
|
65
|
-
networkFee: BigInt('0x' + Buffer.from(R5Serialized[7]).toString('hex')).toString(10),
|
|
66
|
-
bridgeFee: BigInt('0x' + Buffer.from(R5Serialized[6]).toString('hex')).toString(10),
|
|
67
|
-
amount: BigInt('0x' + Buffer.from(R5Serialized[5]).toString('hex')).toString(10),
|
|
68
|
-
sourceChainTokenId: Buffer.from(R5Serialized[8]).toString(),
|
|
69
|
-
targetChainTokenId: Buffer.from(R5Serialized[9]).toString(),
|
|
70
|
-
sourceTxId: sourceTxId,
|
|
71
|
-
fromChain: Buffer.from(R5Serialized[1]).toString(),
|
|
72
|
-
fromAddress: Buffer.from(R5Serialized[3]).toString(),
|
|
73
|
-
sourceBlockId: Buffer.from(R5Serialized[10]).toString(),
|
|
74
|
-
WIDs: WIDs,
|
|
75
|
-
sourceChainHeight: Number(BigInt('0x' + Buffer.from(R5Serialized[11]).toString('hex')).toString(10)),
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
catch {
|
|
83
|
-
continue;
|
|
84
|
-
}
|
|
85
|
-
// process inputs
|
|
86
|
-
txSpendIds.push({
|
|
87
|
-
txId: transaction.id,
|
|
88
|
-
spendBoxes: transaction.inputs.map((box) => box.boxId),
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
this.actions
|
|
93
|
-
.storeEventTriggers(boxes, block, this.getId())
|
|
94
|
-
.then(() => {
|
|
95
|
-
txSpendIds.forEach((txSpends) => {
|
|
96
|
-
this.actions
|
|
97
|
-
.spendEventTriggers(txSpends.spendBoxes, block, this.id, txSpends.txId)
|
|
98
|
-
.then(() => {
|
|
99
|
-
resolve(true);
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
})
|
|
103
|
-
.catch((e) => {
|
|
104
|
-
this.logger.error(`Error in storing permits of the block ${block}: ${e}`);
|
|
105
|
-
reject(e);
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
catch (e) {
|
|
109
|
-
this.logger.error(`block ${block} doesn't save in the database with error: ${e}`);
|
|
110
|
-
reject(e);
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
};
|
|
114
|
-
forkBlock = async (hash) => {
|
|
115
|
-
await this.actions.deleteBlock(hash, this.getId());
|
|
116
|
-
};
|
|
117
|
-
/**
|
|
118
|
-
* Extractor box initialization
|
|
119
|
-
* No action needed in event trigger extractors
|
|
120
|
-
*/
|
|
121
|
-
initializeBoxes = async () => {
|
|
122
|
-
return;
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
export default EventTriggerExtractor;
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRUcmlnZ2VyRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2V4dHJhY3Rvci9FdmVudFRyaWdnZXJFeHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLElBQUksTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFDTCxpQkFBaUIsR0FHbEIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTdFLE9BQU8sa0JBQWtCLE1BQU0sK0JBQStCLENBQUM7QUFFL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxNQUFNLHFCQUFzQixTQUFRLGlCQUE4QjtJQUN2RCxNQUFNLENBQWlCO0lBQ2hDLEVBQUUsQ0FBUztJQUNNLFVBQVUsQ0FBYTtJQUN2QixPQUFPLENBQXFCO0lBQzVCLG9CQUFvQixDQUFTO0lBQzdCLEdBQUcsQ0FBUztJQUU3QixZQUNFLEVBQVUsRUFDVixVQUFzQixFQUN0QixPQUFlLEVBQ2YsR0FBVyxFQUNYLE1BQXVCO1FBRXZCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO2FBQzFELFlBQVksRUFBRTthQUNkLGVBQWUsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNsRCxJ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QUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO3FCQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLHlDQUF5QyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQ3ZELENBQUM7b0JBQ0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNaLENBQUMsQ0FBQyxDQUFDO2FBQ047WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixTQUFTLEtBQUssNkNBQTZDLENBQUMsRUFBRSxDQUMvRCxDQUFDO2dCQUNGLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNYO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRixTQUFTLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBRSxFQUFFO1FBQ2pDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILGVBQWUsR0FBRyxLQUFLLElBQUksRUFBRTtRQUMzQixPQUFPO0lBQ1QsQ0FBQyxDQUFDO0NBQ0g7QUFFRCxlQUFlLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ3R5cGVvcm0nO1xuaW1wb3J0ICogYXMgd2FzbSBmcm9tICdlcmdvLWxpYi13YXNtLW5vZGVqcyc7XG5pbXBvcnQgeyBibGFrZTJiIH0gZnJvbSAnYmxha2Vqcyc7XG5pbXBvcnQge1xuICBBYnN0cmFjdEV4dHJhY3RvcixcbiAgQmxvY2tFbnRpdHksXG4gIFRyYW5zYWN0aW9uLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXInO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9sb2dnZXItaW50ZXJmYWNlJztcblxuaW1wb3J0IEV2ZW50VHJpZ2dlckFjdGlvbiBmcm9tICcuLi9hY3Rpb25zL0V2ZW50VHJpZ2dlckFjdGlvbic7XG5pbXBvcnQgeyBFeHRyYWN0ZWRFdmVudFRyaWdnZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4dHJhY3RlZEV2ZW50VHJpZ2dlcic7XG5pbXBvcnQgeyBKc29uQkkgfSBmcm9tICcuLi91dGlscyc7XG5cbmNsYXNzIEV2ZW50VHJpZ2dlckV4dHJhY3RvciBleHRlbmRzIEFic3RyYWN0RXh0cmFjdG9yPFRyYW5zYWN0aW9uPiB7XG4gIHJlYWRvbmx5IGxvZ2dlcjogQWJzdHJhY3RMb2dnZXI7XG4gIGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YVNvdXJjZTogRGF0YVNvdXJjZTtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zOiBFdmVudFRyaWdnZXJBY3Rpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRUcmlnZ2VyRXJnb1RyZWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBSV1Q6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpZDogc3RyaW5nLFxuICAgIGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsXG4gICAgYWRkcmVzczogc3RyaW5nLFxuICAgIFJXVDogc3RyaW5nLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gICAgdGhpcy5ldmVudFRyaWdnZXJFcmdvVHJlZSA9IHdhc20uQWRkcmVzcy5mcm9tX2Jhc2U1OChhZGRyZXNzKVxuICAgICAgLnRvX2VyZ29fdHJlZSgpXG4gICAgICAudG9fYmFzZTE2X2J5dGVzKCk7XG4gICAgdGhpcy5SV1QgPSBSV1Q7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXIgPyBsb2dnZXIgOiBuZXcgRHVtbXlMb2dnZXIoKTtcbiAgICB0aGlzLmFjdGlvbnMgPSBuZXcgRXZlbnRUcmlnZ2VyQWN0aW9uKGRhdGFTb3VyY2UsIHRoaXMubG9nZ2VyKTtcbiAgfVxuXG4gIGdldElkID0gKCkgPT4gdGhpcy5pZDtcblxuICAvKipcbiAgICogZ2V0cyBibG9jayBpZCBhbmQgdHJhbnNhY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrIGFuZCBzYXZlcyBpZiB0aGV5IGFyZSB2YWxpZCByb3NlblxuICAgKiAgdHJhbnNhY3Rpb25zIGFuZCBpbiBjYXNlIG9mIHN1Y2Nlc3MgcmV0dXJuIHRydWUgYW5kIGluIGNhc2Ugb2YgZmFpbHVyZSByZXR1cm5zIGZhbHNlXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gdHhzXG4gICAqL1xuICBwcm9jZXNzVHJhbnNhY3Rpb25zID0gKFxuICAgIHR4czogQXJyYXk8VHJhbnNhY3Rpb24+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eVxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYm94ZXM6IEFycmF5PEV4dHJhY3RlZEV2ZW50VHJpZ2dlcj4gPSBbXTtcbiAgICAgICAgY29uc3QgdHhTcGVuZElkczogQXJyYXk8eyB0eElkOiBzdHJpbmc7IHNwZW5kQm94ZXM6IEFycmF5PHN0cmluZz4gfT4gPVxuICAgICAgICAgIFtdO1xuICAgICAgICB0eHMuZm9yRWFjaCgodHJhbnNhY3Rpb24pID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiB0cmFuc2FjdGlvbi5vdXRwdXRzKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgb3V0cHV0LmFkZGl0aW9uYWxSZWdpc3RlcnMgJiZcbiAgICAgICAgICAgICAgICBvdXRwdXQuYXNzZXRzICYmXG4gICAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0cy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0c1swXS50b2tlbklkID09PSB0aGlzLlJXVCAmJlxuICAgICAgICAgICAgICAgIG91dHB1dC5lcmdvVHJlZSA9PT0gdGhpcy5ldmVudFRyaWdnZXJFcmdvVHJlZVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBSNCA9IG91dHB1dC5hZGRpdGlvbmFsUmVnaXN0ZXJzLlI0O1xuICAgICAgICAgICAgICAgIGNvbnN0IFI1ID0gb3V0cHV0LmFkZGl0aW9uYWxSZWdpc3RlcnMuUjU7XG4gICAgICAgICAgICAgICAgaWYgKFI0ICYmIFI1KSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBvdXRwdXRQYXJzZWQgPSB3YXNtLkVyZ29Cb3guZnJvbV9qc29uKFxuICAgICAgICAgICAgICAgICAgICBKc29uQkkuc3RyaW5naWZ5KG91dHB1dClcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBSNENvbnN0ID0gb3V0cHV0UGFyc2VkLnJlZ2lzdGVyX3ZhbHVlKFxuICAgICAgICAgICAgICAgICAgICB3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjRcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBSNUNvbnN0ID0gb3V0cHV0UGFyc2VkLnJlZ2lzdGVyX3ZhbHVlKFxuICAgICAgICAgICAgICAgICAgICB3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjVcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBpZiAoUjRDb25zdCAmJiBSNUNvbnN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFI0U2VyaWFsaXplZCA9IFI0Q29uc3QudG9fY29sbF9jb2xsX2J5dGUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgUjVTZXJpYWxpemVkID0gUjVDb25zdC50b19jb2xsX2NvbGxfYnl0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoUjRTZXJpYWxpemVkLmxlbmd0aCA+PSAxICYmIFI1U2VyaWFsaXplZC5sZW5ndGggPj0gMTIpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXSURzID0gUjRTZXJpYWxpemVkLm1hcCgoYnl0ZUFycmF5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmZyb20oYnl0ZUFycmF5KS50b1N0cmluZygnaGV4JylcbiAgICAgICAgICAgICAgICAgICAgICApLmpvaW4oJywnKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2VUeElkID0gQnVmZmVyLmZyb20oXG4gICAgICAgICAgICAgICAgICAgICAgICBSNVNlcmlhbGl6ZWRbMF1cbiAgICAgICAgICAgICAgICAgICAgICApLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZlbnRJZCA9IEJ1ZmZlci5mcm9tKFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxha2UyYihzb3VyY2VUeElkLCB1bmRlZmluZWQsIDMyKVxuICAgICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICAgICAgICAgICAgICAgIGJveGVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRJZDogZXZlbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR4SWQ6IHRyYW5zYWN0aW9uLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm94SWQ6IG91dHB1dC5ib3hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJveFNlcmlhbGl6ZWQ6IEJ1ZmZlci5mcm9tKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRQYXJzZWQuc2lnbWFfc2VyaWFsaXplX2J5dGVzKClcbiAgICAgICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9DaGFpbjogQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzJdKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9BZGRyZXNzOiBCdWZmZXIuZnJvbShSNVNlcmlhbGl6ZWRbNF0pLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrRmVlOiBCaWdJbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICcweCcgKyBCdWZmZXIuZnJvbShSNVNlcmlhbGl6ZWRbN10pLnRvU3RyaW5nKCdoZXgnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKS50b1N0cmluZygxMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBicmlkZ2VGZWU6IEJpZ0ludChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJzB4JyArIEJ1ZmZlci5mcm9tKFI1U2VyaWFsaXplZFs2XSkudG9TdHJpbmcoJ2hleCcpXG4gICAgICAgICAgICAgICAgICAgICAgICApLnRvU3RyaW5nKDEwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudDogQmlnSW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnMHgnICsgQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzVdKS50b1N0cmluZygnaGV4JylcbiAgICAgICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoMTApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlQ2hhaW5Ub2tlbklkOiBCdWZmZXIuZnJvbShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUjVTZXJpYWxpemVkWzhdXG4gICAgICAgICAgICAgICAgICAgICAgICApLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRDaGFpblRva2VuSWQ6IEJ1ZmZlci5mcm9tKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBSNVNlcmlhbGl6ZWRbOV1cbiAgICAgICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVR4SWQ6IHNvdXJjZVR4SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tQ2hhaW46IEJ1ZmZlci5mcm9tKFI1U2VyaWFsaXplZFsxXSkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb21BZGRyZXNzOiBCdWZmZXIuZnJvbShSNVNlcmlhbGl6ZWRbM10pLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VCbG9ja0lkOiBCdWZmZXIuZnJvbShSNVNlcmlhbGl6ZWRbMTBdKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgV0lEczogV0lEcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUNoYWluSGVpZ2h0OiBOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ0ludChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMHgnICsgQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzExXSkudG9TdHJpbmcoJ2hleCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoMTApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBwcm9jZXNzIGlucHV0c1xuICAgICAgICAgICAgdHhTcGVuZElkcy5wdXNoKHtcbiAgICAgICAgICAgICAgdHhJZDogdHJhbnNhY3Rpb24uaWQsXG4gICAgICAgICAgICAgIHNwZW5kQm94ZXM6IHRyYW5zYWN0aW9uLmlucHV0cy5tYXAoKGJveCkgPT4gYm94LmJveElkKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1xuICAgICAgICAgIC5zdG9yZUV2ZW50VHJpZ2dlcnMoYm94ZXMsIGJsb2NrLCB0aGlzLmdldElkKCkpXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdHhTcGVuZElkcy5mb3JFYWNoKCh0eFNwZW5kcykgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmFjdGlvbnNcbiAgICAgICAgICAgICAgICAuc3BlbmRFdmVudFRyaWdnZXJzKFxuICAgICAgICAgICAgICAgICAgdHhTcGVuZHMuc3BlbmRCb3hlcyxcbiAgICAgICAgICAgICAgICAgIGJsb2NrLFxuICAgICAgICAgICAgICAgICAgdGhpcy5pZCxcbiAgICAgICAgICAgICAgICAgIHR4U3BlbmRzLnR4SWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgYEVycm9yIGluIHN0b3JpbmcgcGVybWl0cyBvZiB0aGUgYmxvY2sgJHtibG9ja306ICR7ZX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICBgYmxvY2sgJHtibG9ja30gZG9lc24ndCBzYXZlIGluIHRoZSBkYXRhYmFzZSB3aXRoIGVycm9yOiAke2V9YFxuICAgICAgICApO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgZm9ya0Jsb2NrID0gYXN5bmMgKGhhc2g6IHN0cmluZykgPT4ge1xuICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5kZWxldGVCbG9jayhoYXNoLCB0aGlzLmdldElkKCkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBFeHRyYWN0b3IgYm94IGluaXRpYWxpemF0aW9uXG4gICAqIE5vIGFjdGlvbiBuZWVkZWQgaW4gZXZlbnQgdHJpZ2dlciBleHRyYWN0b3JzXG4gICAqL1xuICBpbml0aWFsaXplQm94ZXMgPSBhc3luYyAoKSA9PiB7XG4gICAgcmV0dXJuO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBFdmVudFRyaWdnZXJFeHRyYWN0b3I7XG4iXX0=
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { DataSource } from 'typeorm';
|
|
2
|
-
import { AbstractExtractor, BlockEntity, Transaction } from '@rosen-bridge/scanner';
|
|
3
|
-
import { AbstractLogger } from '@rosen-bridge/logger-interface';
|
|
4
|
-
declare class CommitmentExtractor extends AbstractExtractor<Transaction> {
|
|
5
|
-
readonly logger: AbstractLogger;
|
|
6
|
-
id: string;
|
|
7
|
-
private readonly dataSource;
|
|
8
|
-
private readonly commitmentsErgoTrees;
|
|
9
|
-
private readonly RWTId;
|
|
10
|
-
private readonly actions;
|
|
11
|
-
constructor(id: string, addresses: Array<string>, RWTId: string, dataSource: DataSource, logger?: AbstractLogger);
|
|
12
|
-
/**
|
|
13
|
-
* get Id for current extractor
|
|
14
|
-
*/
|
|
15
|
-
getId: () => string;
|
|
16
|
-
/**
|
|
17
|
-
* gets block id and transactions corresponding to the block and saves if they are valid rosen
|
|
18
|
-
* transactions and in case of success return true and in case of failure returns false
|
|
19
|
-
* @param txs
|
|
20
|
-
* @param block
|
|
21
|
-
*/
|
|
22
|
-
processTransactions: (txs: Array<Transaction>, block: BlockEntity) => Promise<boolean>;
|
|
23
|
-
/**
|
|
24
|
-
* fork one block and remove all stored information for this block
|
|
25
|
-
* @param hash: block hash
|
|
26
|
-
*/
|
|
27
|
-
forkBlock: (hash: string) => Promise<void>;
|
|
28
|
-
/**
|
|
29
|
-
* Extractor box initialization
|
|
30
|
-
* No action needed for commitment extractor
|
|
31
|
-
*/
|
|
32
|
-
initializeBoxes: () => Promise<void>;
|
|
33
|
-
}
|
|
34
|
-
export default CommitmentExtractor;
|
|
35
|
-
//# sourceMappingURL=commitmentExtractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commitmentExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/commitmentExtractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAe,MAAM,gCAAgC,CAAC;AAM7E,cAAM,mBAAoB,SAAQ,iBAAiB,CAAC,WAAW,CAAC;IAC9D,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;gBAGzC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EACxB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,cAAc;IAazB;;OAEG;IACH,KAAK,eAAiB;IAEtB;;;;;OAKG;IACH,mBAAmB,QACZ,MAAM,WAAW,CAAC,SAChB,WAAW,KACjB,QAAQ,OAAO,CAAC,CAyEjB;IAEF;;;OAGG;IACH,SAAS,SAAgB,MAAM,KAAG,QAAQ,IAAI,CAAC,CAE7C;IAEF;;;OAGG;IACH,eAAe,sBAEb;CACH;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import * as wasm from 'ergo-lib-wasm-nodejs';
|
|
2
|
-
import { AbstractExtractor, } from '@rosen-bridge/scanner';
|
|
3
|
-
import { DummyLogger } from '@rosen-bridge/logger-interface';
|
|
4
|
-
import CommitmentAction from '../actions/commitmentAction';
|
|
5
|
-
import { JsonBI } from '../utils';
|
|
6
|
-
class CommitmentExtractor extends AbstractExtractor {
|
|
7
|
-
logger;
|
|
8
|
-
id;
|
|
9
|
-
dataSource;
|
|
10
|
-
commitmentsErgoTrees;
|
|
11
|
-
RWTId;
|
|
12
|
-
actions;
|
|
13
|
-
constructor(id, addresses, RWTId, dataSource, logger) {
|
|
14
|
-
super();
|
|
15
|
-
this.id = id;
|
|
16
|
-
this.dataSource = dataSource;
|
|
17
|
-
this.commitmentsErgoTrees = addresses.map((address) => wasm.Address.from_base58(address).to_ergo_tree().to_base16_bytes());
|
|
18
|
-
this.RWTId = RWTId;
|
|
19
|
-
this.logger = logger ? logger : new DummyLogger();
|
|
20
|
-
this.actions = new CommitmentAction(dataSource, this.logger);
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* get Id for current extractor
|
|
24
|
-
*/
|
|
25
|
-
getId = () => this.id;
|
|
26
|
-
/**
|
|
27
|
-
* gets block id and transactions corresponding to the block and saves if they are valid rosen
|
|
28
|
-
* transactions and in case of success return true and in case of failure returns false
|
|
29
|
-
* @param txs
|
|
30
|
-
* @param block
|
|
31
|
-
*/
|
|
32
|
-
processTransactions = (txs, block) => {
|
|
33
|
-
return new Promise((resolve, reject) => {
|
|
34
|
-
try {
|
|
35
|
-
const commitments = [];
|
|
36
|
-
const spendIds = [];
|
|
37
|
-
txs.forEach((transaction) => {
|
|
38
|
-
// process outputs
|
|
39
|
-
for (const output of transaction.outputs) {
|
|
40
|
-
if (output.assets &&
|
|
41
|
-
output.additionalRegisters &&
|
|
42
|
-
output.assets.length > 0 &&
|
|
43
|
-
output.assets[0].tokenId === this.RWTId &&
|
|
44
|
-
this.commitmentsErgoTrees.indexOf(output.ergoTree) !== -1) {
|
|
45
|
-
try {
|
|
46
|
-
const decodedBox = wasm.ErgoBox.from_json(JsonBI.stringify(output));
|
|
47
|
-
const R4 = decodedBox.register_value(wasm.NonMandatoryRegisterId.R4);
|
|
48
|
-
const R5 = decodedBox.register_value(wasm.NonMandatoryRegisterId.R5);
|
|
49
|
-
const R6 = decodedBox.register_value(wasm.NonMandatoryRegisterId.R6);
|
|
50
|
-
if (R4 && R5 && R6) {
|
|
51
|
-
const R4Value = R4.to_coll_coll_byte();
|
|
52
|
-
const R5Value = R5.to_coll_coll_byte();
|
|
53
|
-
const R6Value = R6.to_byte_array();
|
|
54
|
-
const WID = Buffer.from(R4Value[0]).toString('hex');
|
|
55
|
-
const requestId = Buffer.from(R5Value[0]).toString('hex');
|
|
56
|
-
const eventDigest = Buffer.from(R6Value).toString('hex');
|
|
57
|
-
commitments.push({
|
|
58
|
-
txId: transaction.id,
|
|
59
|
-
WID: WID,
|
|
60
|
-
commitment: eventDigest,
|
|
61
|
-
eventId: requestId,
|
|
62
|
-
boxId: output.boxId,
|
|
63
|
-
boxSerialized: Buffer.from(decodedBox.sigma_serialize_bytes()).toString('base64'),
|
|
64
|
-
rwtCount: BigInt(output.assets[0].amount).toString(),
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
// empty
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
// process inputs
|
|
74
|
-
for (const input of transaction.inputs) {
|
|
75
|
-
spendIds.push(input.boxId);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
// process save commitments
|
|
79
|
-
this.actions
|
|
80
|
-
.storeCommitments(commitments, block, this.id)
|
|
81
|
-
.then(() => {
|
|
82
|
-
this.actions.spendCommitments(spendIds, block, this.id).then(() => {
|
|
83
|
-
resolve(true);
|
|
84
|
-
});
|
|
85
|
-
})
|
|
86
|
-
.catch((e) => reject(e));
|
|
87
|
-
}
|
|
88
|
-
catch (e) {
|
|
89
|
-
this.logger.error(`Error in soring permits of the block ${block}: ${e}`);
|
|
90
|
-
reject(e);
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
};
|
|
94
|
-
/**
|
|
95
|
-
* fork one block and remove all stored information for this block
|
|
96
|
-
* @param hash: block hash
|
|
97
|
-
*/
|
|
98
|
-
forkBlock = async (hash) => {
|
|
99
|
-
await this.actions.deleteBlock(hash, this.getId());
|
|
100
|
-
};
|
|
101
|
-
/**
|
|
102
|
-
* Extractor box initialization
|
|
103
|
-
* No action needed for commitment extractor
|
|
104
|
-
*/
|
|
105
|
-
initializeBoxes = async () => {
|
|
106
|
-
return;
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
export default CommitmentExtractor;
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0bWVudEV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvY29tbWl0bWVudEV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLHNCQUFzQixDQUFDO0FBRTdDLE9BQU8sRUFDTCxpQkFBaUIsR0FHbEIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTdFLE9BQU8sZ0JBQWdCLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxNQUFNLG1CQUFvQixTQUFRLGlCQUE4QjtJQUNyRCxNQUFNLENBQWlCO0lBQ2hDLEVBQUUsQ0FBUztJQUNNLFVBQVUsQ0FBYTtJQUN2QixvQkFBb0IsQ0FBZ0I7SUFDcEMsS0FBSyxDQUFTO0lBQ2QsT0FBTyxDQUFtQjtJQUUzQyxZQUNFLEVBQVUsRUFDVixTQUF3QixFQUN4QixLQUFhLEVBQ2IsVUFBc0IsRUFDdEIsTUFBdUI7UUFFdkIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFFLENBQ25FLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFD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QUUsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILGVBQWUsR0FBRyxLQUFLLElBQUksRUFBRTtRQUMzQixPQUFPO0lBQ1QsQ0FBQyxDQUFDO0NBQ0g7QUFFRCxlQUFlLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgd2FzbSBmcm9tICdlcmdvLWxpYi13YXNtLW5vZGVqcyc7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAndHlwZW9ybSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdEV4dHJhY3RvcixcbiAgQmxvY2tFbnRpdHksXG4gIFRyYW5zYWN0aW9uLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXInO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9sb2dnZXItaW50ZXJmYWNlJztcblxuaW1wb3J0IENvbW1pdG1lbnRBY3Rpb24gZnJvbSAnLi4vYWN0aW9ucy9jb21taXRtZW50QWN0aW9uJztcbmltcG9ydCB7IGV4dHJhY3RlZENvbW1pdG1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4dHJhY3RlZENvbW1pdG1lbnQnO1xuaW1wb3J0IHsgSnNvbkJJIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jbGFzcyBDb21taXRtZW50RXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RFeHRyYWN0b3I8VHJhbnNhY3Rpb24+IHtcbiAgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcbiAgaWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhU291cmNlOiBEYXRhU291cmNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbW1pdG1lbnRzRXJnb1RyZWVzOiBBcnJheTxzdHJpbmc+O1xuICBwcml2YXRlIHJlYWRvbmx5IFJXVElkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uczogQ29tbWl0bWVudEFjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpZDogc3RyaW5nLFxuICAgIGFkZHJlc3NlczogQXJyYXk8c3RyaW5nPixcbiAgICBSV1RJZDogc3RyaW5nLFxuICAgIGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsXG4gICAgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXJcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5kYXRhU291cmNlID0gZGF0YVNvdXJjZTtcbiAgICB0aGlzLmNvbW1pdG1lbnRzRXJnb1RyZWVzID0gYWRkcmVzc2VzLm1hcCgoYWRkcmVzcykgPT5cbiAgICAgIHdhc20uQWRkcmVzcy5mcm9tX2Jhc2U1OChhZGRyZXNzKS50b19lcmdvX3RyZWUoKS50b19iYXNlMTZfYnl0ZXMoKVxuICAgICk7XG4gICAgdGhpcy5SV1RJZCA9IFJXVElkO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyID8gbG9nZ2VyIDogbmV3IER1bW15TG9nZ2VyKCk7XG4gICAgdGhpcy5hY3Rpb25zID0gbmV3IENvbW1pdG1lbnRBY3Rpb24oZGF0YVNvdXJjZSwgdGhpcy5sb2dnZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBJZCBmb3IgY3VycmVudCBleHRyYWN0b3JcbiAgICovXG4gIGdldElkID0gKCkgPT4gdGhpcy5pZDtcblxuICAvKipcbiAgICogZ2V0cyBibG9jayBpZCBhbmQgdHJhbnNhY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrIGFuZCBzYXZlcyBpZiB0aGV5IGFyZSB2YWxpZCByb3NlblxuICAgKiAgdHJhbnNhY3Rpb25zIGFuZCBpbiBjYXNlIG9mIHN1Y2Nlc3MgcmV0dXJuIHRydWUgYW5kIGluIGNhc2Ugb2YgZmFpbHVyZSByZXR1cm5zIGZhbHNlXG4gICAqIEBwYXJhbSB0eHNcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqL1xuICBwcm9jZXNzVHJhbnNhY3Rpb25zID0gKFxuICAgIHR4czogQXJyYXk8VHJhbnNhY3Rpb24+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eVxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29tbWl0bWVudHM6IEFycmF5PGV4dHJhY3RlZENvbW1pdG1lbnQ+ID0gW107XG4gICAgICAgIGNvbnN0IHNwZW5kSWRzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgICAgIHR4cy5mb3JFYWNoKCh0cmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgIC8vIHByb2Nlc3Mgb3V0cHV0c1xuICAgICAgICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIHRyYW5zYWN0aW9uLm91dHB1dHMpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0cyAmJlxuICAgICAgICAgICAgICBvdXRwdXQuYWRkaXRpb25hbFJlZ2lzdGVycyAmJlxuICAgICAgICAgICAgICBvdXRwdXQuYXNzZXRzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0c1swXS50b2tlbklkID09PSB0aGlzLlJXVElkICYmXG4gICAgICAgICAgICAgIHRoaXMuY29tbWl0bWVudHNFcmdvVHJlZXMuaW5kZXhPZihvdXRwdXQuZXJnb1RyZWUpICE9PSAtMVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjb2RlZEJveCA9IHdhc20uRXJnb0JveC5mcm9tX2pzb24oXG4gICAgICAgICAgICAgICAgICBKc29uQkkuc3RyaW5naWZ5KG91dHB1dClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IFI0ID0gZGVjb2RlZEJveC5yZWdpc3Rlcl92YWx1ZShcbiAgICAgICAgICAgICAgICAgIHdhc20uTm9uTWFuZGF0b3J5UmVnaXN0ZXJJZC5SNFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgUjUgPSBkZWNvZGVkQm94LnJlZ2lzdGVyX3ZhbHVlKFxuICAgICAgICAgICAgICAgICAgd2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI1XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBSNiA9IGRlY29kZWRCb3gucmVnaXN0ZXJfdmFsdWUoXG4gICAgICAgICAgICAgICAgICB3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjZcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChSNCAmJiBSNSAmJiBSNikge1xuICAgICAgICAgICAgICAgICAgY29uc3QgUjRWYWx1ZSA9IFI0LnRvX2NvbGxfY29sbF9ieXRlKCk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBSNVZhbHVlID0gUjUudG9fY29sbF9jb2xsX2J5dGUoKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IFI2VmFsdWUgPSBSNi50b19ieXRlX2FycmF5KCk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBXSUQgPSBCdWZmZXIuZnJvbShSNFZhbHVlWzBdKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0SWQgPSBCdWZmZXIuZnJvbShSNVZhbHVlWzBdKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBldmVudERpZ2VzdCA9IEJ1ZmZlci5mcm9tKFI2VmFsdWUpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgICAgICAgICAgIGNvbW1pdG1lbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0eElkOiB0cmFuc2FjdGlvbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgV0lEOiBXSUQsXG4gICAgICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6IGV2ZW50RGlnZXN0LFxuICAgICAgICAgICAgICAgICAgICBldmVudElkOiByZXF1ZXN0SWQsXG4gICAgICAgICAgICAgICAgICAgIGJveElkOiBvdXRwdXQuYm94SWQsXG4gICAgICAgICAgICAgICAgICAgIGJveFNlcmlhbGl6ZWQ6IEJ1ZmZlci5mcm9tKFxuICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRCb3guc2lnbWFfc2VyaWFsaXplX2J5dGVzKClcbiAgICAgICAgICAgICAgICAgICAgKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgICAgICAgICAgICAgIHJ3dENvdW50OiBCaWdJbnQob3V0cHV0LmFzc2V0c1swXS5hbW91bnQpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIC8vIGVtcHR5XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gcHJvY2VzcyBpbnB1dHNcbiAgICAgICAgICBmb3IgKGNvbnN0IGlucHV0IG9mIHRyYW5zYWN0aW9uLmlucHV0cykge1xuICAgICAgICAgICAgc3BlbmRJZHMucHVzaChpbnB1dC5ib3hJZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gcHJvY2VzcyBzYXZlIGNvbW1pdG1lbnRzXG4gICAgICAgIHRoaXMuYWN0aW9uc1xuICAgICAgICAgIC5zdG9yZUNvbW1pdG1lbnRzKGNvbW1pdG1lbnRzLCBibG9jaywgdGhpcy5pZClcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvbnMuc3BlbmRDb21taXRtZW50cyhzcGVuZElkcywgYmxvY2ssIHRoaXMuaWQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHJlamVjdChlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgIGBFcnJvciBpbiBzb3JpbmcgcGVybWl0cyBvZiB0aGUgYmxvY2sgJHtibG9ja306ICR7ZX1gXG4gICAgICAgICk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogZm9yayBvbmUgYmxvY2sgYW5kIHJlbW92ZSBhbGwgc3RvcmVkIGluZm9ybWF0aW9uIGZvciB0aGlzIGJsb2NrXG4gICAqIEBwYXJhbSBoYXNoOiBibG9jayBoYXNoXG4gICAqL1xuICBmb3JrQmxvY2sgPSBhc3luYyAoaGFzaDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgYXdhaXQgdGhpcy5hY3Rpb25zLmRlbGV0ZUJsb2NrKGhhc2gsIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RvciBib3ggaW5pdGlhbGl6YXRpb25cbiAgICogTm8gYWN0aW9uIG5lZWRlZCBmb3IgY29tbWl0bWVudCBleHRyYWN0b3JcbiAgICovXG4gIGluaXRpYWxpemVCb3hlcyA9IGFzeW5jICgpID0+IHtcbiAgICByZXR1cm47XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbW1pdG1lbnRFeHRyYWN0b3I7XG4iXX0=
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { DataSource } from 'typeorm';
|
|
2
|
-
import { AbstractExtractor, BlockEntity, Transaction } from '@rosen-bridge/scanner';
|
|
3
|
-
import { AbstractLogger } from '@rosen-bridge/logger-interface';
|
|
4
|
-
import { OutputInfo } from '@rosen-clients/ergo-explorer/dist/src/v1/types/outputInfo';
|
|
5
|
-
import PermitAction from '../actions/permitAction';
|
|
6
|
-
import { ExtractedPermit } from '../interfaces/extractedPermit';
|
|
7
|
-
declare class PermitExtractor extends AbstractExtractor<Transaction> {
|
|
8
|
-
readonly logger: AbstractLogger;
|
|
9
|
-
id: string;
|
|
10
|
-
private readonly dataSource;
|
|
11
|
-
readonly actions: PermitAction;
|
|
12
|
-
private readonly permitErgoTree;
|
|
13
|
-
private readonly RWT;
|
|
14
|
-
readonly explorerApi: {
|
|
15
|
-
v0: {
|
|
16
|
-
getApiV0AddressesP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0AddressesP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").AddressInfo>;
|
|
17
|
-
getApiV0AddressesP1Transactions: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0AddressesP1TransactionsParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").ItemsTransactionInfo>;
|
|
18
|
-
getApiV0AddressesAssetholdersP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0AddressesAssetholdersP1Params | undefined) => Promise<string[]>;
|
|
19
|
-
getApiV0AddressesBalances: (params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0AddressesBalancesParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").ItemsBalanceInfo>;
|
|
20
|
-
getApiV0AssetsIssuingboxes: (params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0AssetsIssuingboxesParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").ItemsOutputInfo>;
|
|
21
|
-
getApiV0AssetsP1Issuingbox: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").OutputInfo[]>;
|
|
22
|
-
getApiV0Blocks: (params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0BlocksParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").ItemsBlockInfo>;
|
|
23
|
-
getApiV0BlocksP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").BlockSummary>;
|
|
24
|
-
getApiV0BlocksAtP1: (p1: number) => Promise<string[]>;
|
|
25
|
-
getApiV0DexTokensP1Unspentsellorders: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0DexTokensP1UnspentsellordersParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").DexSellOrderInfo[]>;
|
|
26
|
-
getApiV0DexTokensP1Unspentbuyorders: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0DexTokensP1UnspentbuyordersParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").DexBuyOrderInfo[]>;
|
|
27
|
-
getApiV0TransactionsP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").TransactionSummary>;
|
|
28
|
-
getApiV0TransactionsUnconfirmedP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").UTransactionSummary>;
|
|
29
|
-
getApiV0TransactionsUnconfirmedByaddressP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0TransactionsUnconfirmedByaddressP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").ItemsUTransactionInfo>;
|
|
30
|
-
getApiV0TransactionsUnconfirmed: (params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0TransactionsUnconfirmedParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").ItemsUTransactionInfo>;
|
|
31
|
-
getApiV0TransactionsSinceP1: (p1: number, params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0TransactionsSinceP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").TransactionInfo[]>;
|
|
32
|
-
postApiV0TransactionsSend: (postApiV0TransactionsSendBody: import("@rosen-clients/ergo-explorer/dist/src/v0/types").PostApiV0TransactionsSendBody) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").TxIdResponse>;
|
|
33
|
-
getApiV0TransactionsBoxesP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").OutputInfo>;
|
|
34
|
-
getApiV0TransactionsBoxesByergotreeP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").OutputInfo[]>;
|
|
35
|
-
getApiV0TransactionsBoxesByergotreeUnspentP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").OutputInfo[]>;
|
|
36
|
-
getApiV0TransactionsBoxesByaddressP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").OutputInfo[]>;
|
|
37
|
-
getApiV0TransactionsBoxesByaddressUnspentP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").OutputInfo[]>;
|
|
38
|
-
getApiV0Info: () => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").BlockChainInfo>;
|
|
39
|
-
getApiV0InfoSupply: () => Promise<string>;
|
|
40
|
-
getApiV0Stats: () => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").StatsSummary>;
|
|
41
|
-
getApiV0DocsOpenapi: () => Promise<string>;
|
|
42
|
-
};
|
|
43
|
-
v1: {
|
|
44
|
-
getApiV1TransactionsP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").TransactionInfo>;
|
|
45
|
-
getApiV1TransactionsByinputsscripttemplatehashP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1TransactionsByinputsscripttemplatehashP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsTransactionInfo>;
|
|
46
|
-
getApiV1TransactionsByglobalindexStream: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1TransactionsByglobalindexStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListTransactionInfo>;
|
|
47
|
-
getApiV1BoxesUnspentBylastepochsStream: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentBylastepochsStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListOutputInfo>;
|
|
48
|
-
getApiV1BoxesUnspentByglobalindexStream: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentByglobalindexStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListOutputInfo>;
|
|
49
|
-
getApiV1BoxesUnspentStream: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListOutputInfo>;
|
|
50
|
-
getApiV1BoxesByergotreetemplatehashP1Stream: (p1: string, params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesByergotreetemplatehashP1StreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListOutputInfo>;
|
|
51
|
-
getApiV1BoxesUnspentByergotreetemplatehashP1Stream: (p1: string, params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentByergotreetemplatehashP1StreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListOutputInfo>;
|
|
52
|
-
getApiV1BoxesUnspentBytokenidP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentBytokenidP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
|
|
53
|
-
getApiV1BoxesBytokenidP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesBytokenidP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
|
|
54
|
-
getApiV1BoxesP1: (p1: string) => Promise<OutputInfo>;
|
|
55
|
-
getApiV1BoxesByergotreeP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesByergotreeP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
|
|
56
|
-
getApiV1BoxesByergotreetemplatehashP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesByergotreetemplatehashP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
|
|
57
|
-
getApiV1BoxesUnspentByergotreeP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentByergotreeP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
|
|
58
|
-
getApiV1BoxesUnspentByergotreetemplatehashP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentByergotreetemplatehashP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
|
|
59
|
-
getApiV1BoxesByaddressP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesByaddressP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
|
|
60
|
-
getApiV1BoxesUnspentByaddressP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentByaddressP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
|
|
61
|
-
getApiV1BoxesByglobalindexStream: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesByglobalindexStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListOutputInfo>;
|
|
62
|
-
postApiV1BoxesUnspentSearchUnion: (boxAssetsQuery: import("@rosen-clients/ergo-explorer/dist/src/v1/types").BoxAssetsQuery, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").PostApiV1BoxesUnspentSearchUnionParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
|
|
63
|
-
postApiV1BoxesUnspentSearch: (boxQuery: import("@rosen-clients/ergo-explorer/dist/src/v1/types").BoxQuery, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").PostApiV1BoxesUnspentSearchParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
|
|
64
|
-
postApiV1BoxesSearch: (boxQuery: import("@rosen-clients/ergo-explorer/dist/src/v1/types").BoxQuery, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").PostApiV1BoxesSearchParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
|
|
65
|
-
getApiV1Tokens: (params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1TokensParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsTokenInfo>;
|
|
66
|
-
getApiV1TokensSearch: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1TokensSearchParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsTokenInfo>;
|
|
67
|
-
getApiV1TokensBysymbolP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").TokenInfo[]>;
|
|
68
|
-
getApiV1TokensP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").TokenInfo>;
|
|
69
|
-
getApiV1Assets: (params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1AssetsParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsTokenInfo>;
|
|
70
|
-
getApiV1AssetsSearchBytokenid: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1AssetsSearchBytokenidParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsAssetInfo>;
|
|
71
|
-
getApiV1EpochsParams: () => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").EpochInfo>;
|
|
72
|
-
getApiV1AddressesP1Transactions: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1AddressesP1TransactionsParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsTransactionInfo>;
|
|
73
|
-
getApiV1AddressesP1BalanceConfirmed: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1AddressesP1BalanceConfirmedParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").Balance>;
|
|
74
|
-
getApiV1AddressesP1BalanceTotal: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").TotalBalance>;
|
|
75
|
-
getApiV1Blocks: (params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BlocksParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsBlockInfo>;
|
|
76
|
-
getApiV1BlocksP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").BlockSummary>;
|
|
77
|
-
getApiV1BlocksHeaders: (params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BlocksHeadersParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsBlockHeader>;
|
|
78
|
-
getApiV1BlocksByglobalindexStream: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BlocksByglobalindexStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListBlockInfo>;
|
|
79
|
-
getApiV1BlocksStreamSummary: (params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BlocksStreamSummaryParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListBlockSummaryV1>;
|
|
80
|
-
postApiV1MempoolTransactionsSubmit: (postApiV1MempoolTransactionsSubmitBody: import("@rosen-clients/ergo-explorer/dist/src/v1/types").PostApiV1MempoolTransactionsSubmitBody) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").TxIdResponse>;
|
|
81
|
-
getApiV1MempoolTransactionsByaddressP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1MempoolTransactionsByaddressP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsUTransactionInfo>;
|
|
82
|
-
getApiV1MempoolBoxesUnspent: () => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListOutputInfo>;
|
|
83
|
-
getApiV1Info: () => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").NetworkState>;
|
|
84
|
-
getApiV1Networkstate: () => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").NetworkState>;
|
|
85
|
-
getApiV1Networkstats: () => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").NetworkStats>;
|
|
86
|
-
};
|
|
87
|
-
};
|
|
88
|
-
constructor(id: string, dataSource: DataSource, address: string, RWT: string, explorerUrl: string, logger?: AbstractLogger);
|
|
89
|
-
getId: () => string;
|
|
90
|
-
/**
|
|
91
|
-
* gets block id and transactions corresponding to the block and saves if they are valid rosen
|
|
92
|
-
* transactions and in case of success return true and in case of failure returns false
|
|
93
|
-
* @param block
|
|
94
|
-
* @param txs
|
|
95
|
-
*/
|
|
96
|
-
processTransactions: (txs: Array<Transaction>, block: BlockEntity) => Promise<boolean>;
|
|
97
|
-
forkBlock: (hash: string) => Promise<void>;
|
|
98
|
-
/**
|
|
99
|
-
* Initializes the database with older permits related to the address
|
|
100
|
-
*/
|
|
101
|
-
initializeBoxes: (initialHeight: number) => Promise<void>;
|
|
102
|
-
/**
|
|
103
|
-
* Validate all remaining permits in the database
|
|
104
|
-
* update the correct ones and remove the invalid ones
|
|
105
|
-
* @param unchangedStoredBoxIds
|
|
106
|
-
* @param initialHeight
|
|
107
|
-
*/
|
|
108
|
-
validateOldStoredPermits: (unchangedStoredBoxIds: Array<string>, initialHeight: number) => Promise<void>;
|
|
109
|
-
/**
|
|
110
|
-
* Return extracted permit from a box
|
|
111
|
-
* @param boxId
|
|
112
|
-
*/
|
|
113
|
-
getPermitWithBoxId: (boxId: string) => Promise<ExtractedPermit | undefined>;
|
|
114
|
-
/**
|
|
115
|
-
* Return all unspent permits
|
|
116
|
-
* @param initialHeight
|
|
117
|
-
* @returns
|
|
118
|
-
*/
|
|
119
|
-
getAllUnspentPermits: (initialHeight: number) => Promise<Array<ExtractedPermit>>;
|
|
120
|
-
/**
|
|
121
|
-
* Returns block information of tx
|
|
122
|
-
* @param txId
|
|
123
|
-
*/
|
|
124
|
-
getTxBlock: (txId: string) => Promise<{
|
|
125
|
-
id: string;
|
|
126
|
-
height: number;
|
|
127
|
-
}>;
|
|
128
|
-
/**
|
|
129
|
-
* Extract permit data from json boxes
|
|
130
|
-
* and filter to fit in a specified height range
|
|
131
|
-
* @param boxes
|
|
132
|
-
* @param toHeight
|
|
133
|
-
* @param heightDifference
|
|
134
|
-
* @returns extracted permit
|
|
135
|
-
*/
|
|
136
|
-
extractPermitData: (boxes: Array<OutputInfo>) => Promise<ExtractedPermit[]>;
|
|
137
|
-
}
|
|
138
|
-
export default PermitExtractor;
|
|
139
|
-
//# sourceMappingURL=permitExtractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"permitExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/permitExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKrC,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAe,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,2DAA2D,CAAC;AAKvF,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,cAAM,eAAgB,SAAQ,iBAAiB,CAAC,WAAW,CAAC;IAC1D,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAC;gBAGnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,cAAc;IAczB,KAAK,eAAiB;IAEtB;;;;;OAKG;IACH,mBAAmB,QACZ,MAAM,WAAW,CAAC,SAChB,WAAW,KACjB,QAAQ,OAAO,CAAC,CAoEjB;IAEF,SAAS,SAAgB,MAAM,mBAE7B;IAEF;;OAEG;IACH,eAAe,kBAAyB,MAAM,mBAyB5C;IAEF;;;;;OAKG;IACH,wBAAwB,0BACC,MAAM,MAAM,CAAC,iBACrB,MAAM,mBAmBrB;IAEF;;;OAGG;IACH,kBAAkB,UACT,MAAM,KACZ,QAAQ,eAAe,GAAG,SAAS,CAAC,CAQrC;IAEF;;;;OAIG;IACH,oBAAoB,kBACH,MAAM,KACpB,QAAQ,MAAM,eAAe,CAAC,CAAC,CAuBhC;IAEF;;;OAGG;IACH,UAAU,SAAgB,MAAM;;;OAM9B;IAEF;;;;;;;OAOG;IACH,iBAAiB,UAAiB,MAAM,UAAU,CAAC,gCA4BjD;CACH;AAED,eAAe,eAAe,CAAC"}
|