@rosen-bridge/watcher-data-extractor 0.1.0-alpha-4 → 0.1.0-alpha-5
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/dist/actions/EventTriggerDB.d.ts +4 -3
- package/dist/actions/EventTriggerDB.js +46 -25
- package/dist/actions/commitmentDB.d.ts +5 -3
- package/dist/actions/commitmentDB.js +43 -21
- package/dist/actions/permitDB.d.ts +3 -1
- package/dist/actions/permitDB.js +38 -16
- package/dist/entities/CommitmentEntity.d.ts +4 -4
- package/dist/entities/CommitmentEntity.js +11 -10
- package/dist/entities/EventTriggerEntity.d.ts +1 -1
- package/dist/entities/EventTriggerEntity.js +5 -4
- package/dist/entities/PermitEntity.d.ts +3 -3
- package/dist/entities/PermitEntity.js +9 -8
- package/dist/extractor/EventTriggerExtractor.js +7 -7
- package/dist/extractor/commitmentExtractor.js +2 -2
- package/dist/extractor/permitExtractor.js +1 -1
- package/dist/interfaces/extractedCommitment.d.ts +1 -1
- package/dist/migrations/{init.d.ts → 1659787165000-initMigration.d.ts} +0 -0
- package/dist/migrations/{init.js → 1659787165000-initMigration.js} +12 -9
- package/dist/migrations/index.d.ts +1 -1
- package/dist/migrations/index.js +1 -1
- package/package.json +1 -1
|
@@ -3,14 +3,15 @@ import { BlockEntity } from "@rosen-bridge/scanner";
|
|
|
3
3
|
import { ExtractedEventTrigger } from "../interfaces/extractedEventTrigger";
|
|
4
4
|
declare class EventTriggerDB {
|
|
5
5
|
private readonly datasource;
|
|
6
|
+
private readonly triggerEventRepository;
|
|
6
7
|
constructor(dataSource: DataSource);
|
|
7
8
|
/**
|
|
8
|
-
* It stores list of
|
|
9
|
-
* @param
|
|
9
|
+
* It stores list of eventTriggers in the dataSource with block id
|
|
10
|
+
* @param eventTriggers
|
|
10
11
|
* @param block
|
|
11
12
|
* @param extractor
|
|
12
13
|
*/
|
|
13
|
-
storeEventTriggers: (
|
|
14
|
+
storeEventTriggers: (eventTriggers: Array<ExtractedEventTrigger>, block: BlockEntity, extractor: string) => Promise<boolean>;
|
|
14
15
|
/**
|
|
15
16
|
* deleting all permits corresponding to the block(id) and extractor(id)
|
|
16
17
|
* @param block
|
|
@@ -1,46 +1,67 @@
|
|
|
1
|
+
import { In } from "typeorm";
|
|
1
2
|
import EventTriggerEntity from "../entities/EventTriggerEntity";
|
|
2
3
|
class EventTriggerDB {
|
|
3
4
|
datasource;
|
|
5
|
+
triggerEventRepository;
|
|
4
6
|
constructor(dataSource) {
|
|
5
7
|
this.datasource = dataSource;
|
|
8
|
+
this.triggerEventRepository = dataSource.getRepository(EventTriggerEntity);
|
|
6
9
|
}
|
|
7
10
|
/**
|
|
8
|
-
* It stores list of
|
|
9
|
-
* @param
|
|
11
|
+
* It stores list of eventTriggers in the dataSource with block id
|
|
12
|
+
* @param eventTriggers
|
|
10
13
|
* @param block
|
|
11
14
|
* @param extractor
|
|
12
15
|
*/
|
|
13
|
-
storeEventTriggers = async (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
row.extractor = extractor;
|
|
21
|
-
row.WIDs = event.WIDs;
|
|
22
|
-
row.amount = event.amount;
|
|
23
|
-
row.bridgeFee = event.bridgeFee;
|
|
24
|
-
row.fromAddress = event.fromAddress;
|
|
25
|
-
row.toAddress = event.toAddress;
|
|
26
|
-
row.fromChain = event.fromChain;
|
|
27
|
-
row.networkFee = event.networkFee;
|
|
28
|
-
row.sourceChainTokenId = event.sourceChainTokenId;
|
|
29
|
-
row.targetChainTokenId = event.targetChainTokenId;
|
|
30
|
-
row.sourceBlockId = event.sourceBlockId;
|
|
31
|
-
row.toChain = event.toChain;
|
|
32
|
-
row.sourceTxId = event.sourceTxId;
|
|
33
|
-
return row;
|
|
16
|
+
storeEventTriggers = async (eventTriggers, block, extractor) => {
|
|
17
|
+
if (eventTriggers.length === 0)
|
|
18
|
+
return true;
|
|
19
|
+
const boxIds = eventTriggers.map(trigger => trigger.boxId);
|
|
20
|
+
const savedTriggers = await this.triggerEventRepository.findBy({
|
|
21
|
+
boxId: In(boxIds),
|
|
22
|
+
extractor: extractor,
|
|
34
23
|
});
|
|
35
24
|
let success = true;
|
|
36
25
|
const queryRunner = this.datasource.createQueryRunner();
|
|
37
26
|
await queryRunner.connect();
|
|
38
27
|
await queryRunner.startTransaction();
|
|
39
28
|
try {
|
|
40
|
-
|
|
29
|
+
for (const event of eventTriggers) {
|
|
30
|
+
const saved = savedTriggers.some((entity) => {
|
|
31
|
+
return entity.boxId === event.boxId;
|
|
32
|
+
});
|
|
33
|
+
const entity = {
|
|
34
|
+
boxId: event.boxId,
|
|
35
|
+
boxSerialized: event.boxSerialized,
|
|
36
|
+
block: block.hash,
|
|
37
|
+
height: block.height,
|
|
38
|
+
extractor: extractor,
|
|
39
|
+
WIDs: event.WIDs,
|
|
40
|
+
amount: event.amount,
|
|
41
|
+
bridgeFee: event.bridgeFee,
|
|
42
|
+
fromAddress: event.fromAddress,
|
|
43
|
+
toAddress: event.toAddress,
|
|
44
|
+
fromChain: event.fromChain,
|
|
45
|
+
networkFee: event.networkFee,
|
|
46
|
+
sourceChainTokenId: event.sourceChainTokenId,
|
|
47
|
+
targetChainTokenId: event.targetChainTokenId,
|
|
48
|
+
sourceBlockId: event.sourceBlockId,
|
|
49
|
+
toChain: event.toChain,
|
|
50
|
+
sourceTxId: event.sourceTxId,
|
|
51
|
+
};
|
|
52
|
+
if (!saved) {
|
|
53
|
+
await queryRunner.manager.insert(EventTriggerEntity, entity);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
await queryRunner.manager.update(EventTriggerEntity, {
|
|
57
|
+
boxId: event.boxId
|
|
58
|
+
}, entity);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
41
61
|
await queryRunner.commitTransaction();
|
|
42
62
|
}
|
|
43
63
|
catch (e) {
|
|
64
|
+
console.log(`An error occurred during store eventTrigger action: ${e}`);
|
|
44
65
|
await queryRunner.rollbackTransaction();
|
|
45
66
|
success = false;
|
|
46
67
|
}
|
|
@@ -58,7 +79,7 @@ class EventTriggerDB {
|
|
|
58
79
|
await this.datasource.createQueryBuilder()
|
|
59
80
|
.delete()
|
|
60
81
|
.from(EventTriggerEntity)
|
|
61
|
-
.where("extractor = :extractor AND
|
|
82
|
+
.where("extractor = :extractor AND block = :block", {
|
|
62
83
|
"block": block,
|
|
63
84
|
"extractor": extractor
|
|
64
85
|
}).execute();
|
|
@@ -3,20 +3,22 @@ import { extractedCommitment } from "../interfaces/extractedCommitment";
|
|
|
3
3
|
import { BlockEntity } from "@rosen-bridge/scanner";
|
|
4
4
|
declare class CommitmentEntityAction {
|
|
5
5
|
private readonly datasource;
|
|
6
|
+
private readonly commitmentRepository;
|
|
6
7
|
constructor(dataSource: DataSource);
|
|
7
8
|
/**
|
|
8
9
|
* It stores list of observations in the dataSource with block id
|
|
9
10
|
* @param commitments
|
|
10
11
|
* @param block
|
|
11
|
-
* @param
|
|
12
|
+
* @param extractor
|
|
12
13
|
*/
|
|
13
|
-
storeCommitments: (commitments: Array<extractedCommitment>, block: BlockEntity,
|
|
14
|
+
storeCommitments: (commitments: Array<extractedCommitment>, block: BlockEntity, extractor: string) => Promise<boolean>;
|
|
14
15
|
/**
|
|
15
16
|
* update spendBlock Column of the commitments in the dataBase
|
|
16
17
|
* @param spendId
|
|
17
18
|
* @param block
|
|
19
|
+
* @param extractor
|
|
18
20
|
*/
|
|
19
|
-
spendCommitments: (spendId: Array<string>, block: BlockEntity) => Promise<void>;
|
|
21
|
+
spendCommitments: (spendId: Array<string>, block: BlockEntity, extractor: string) => Promise<void>;
|
|
20
22
|
/**
|
|
21
23
|
* deleting all permits corresponding to the block(id) and extractor(id)
|
|
22
24
|
* @param block
|
|
@@ -1,39 +1,60 @@
|
|
|
1
|
+
import { In } from "typeorm";
|
|
1
2
|
import CommitmentEntity from "../entities/CommitmentEntity";
|
|
2
3
|
class CommitmentEntityAction {
|
|
3
4
|
datasource;
|
|
5
|
+
commitmentRepository;
|
|
4
6
|
constructor(dataSource) {
|
|
5
7
|
this.datasource = dataSource;
|
|
8
|
+
this.commitmentRepository = dataSource.getRepository(CommitmentEntity);
|
|
6
9
|
}
|
|
7
10
|
/**
|
|
8
11
|
* It stores list of observations in the dataSource with block id
|
|
9
12
|
* @param commitments
|
|
10
13
|
* @param block
|
|
11
|
-
* @param
|
|
14
|
+
* @param extractor
|
|
12
15
|
*/
|
|
13
|
-
storeCommitments = async (commitments, block,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
row.extractor = extractorId;
|
|
21
|
-
row.blockId = block.hash;
|
|
22
|
-
row.height = block.height;
|
|
23
|
-
row.boxSerialized = commitment.boxSerialized;
|
|
24
|
-
return row;
|
|
16
|
+
storeCommitments = async (commitments, block, extractor) => {
|
|
17
|
+
if (commitments.length === 0)
|
|
18
|
+
return true;
|
|
19
|
+
const boxIds = commitments.map(commitment => commitment.boxId);
|
|
20
|
+
const savedCommitments = await this.commitmentRepository.findBy({
|
|
21
|
+
boxId: In(boxIds),
|
|
22
|
+
extractor: extractor,
|
|
25
23
|
});
|
|
26
24
|
let success = true;
|
|
27
25
|
const queryRunner = this.datasource.createQueryRunner();
|
|
28
26
|
await queryRunner.connect();
|
|
29
27
|
await queryRunner.startTransaction();
|
|
30
28
|
try {
|
|
31
|
-
|
|
29
|
+
for (const commitment of commitments) {
|
|
30
|
+
const saved = savedCommitments.some((entity) => {
|
|
31
|
+
return entity.boxId === commitment.boxId;
|
|
32
|
+
});
|
|
33
|
+
const entity = {
|
|
34
|
+
commitment: commitment.commitment,
|
|
35
|
+
eventId: commitment.eventId,
|
|
36
|
+
boxId: commitment.boxId,
|
|
37
|
+
WID: commitment.WID,
|
|
38
|
+
extractor: extractor,
|
|
39
|
+
block: block.hash,
|
|
40
|
+
height: block.height,
|
|
41
|
+
boxSerialized: commitment.boxSerialized,
|
|
42
|
+
};
|
|
43
|
+
if (!saved) {
|
|
44
|
+
await queryRunner.manager.insert(CommitmentEntity, entity);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
await queryRunner.manager.update(CommitmentEntity, {
|
|
48
|
+
boxId: commitment.boxId
|
|
49
|
+
}, entity);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
32
52
|
await queryRunner.commitTransaction();
|
|
33
53
|
}
|
|
34
54
|
catch (e) {
|
|
35
|
-
|
|
55
|
+
console.log(`An error occurred during store commitments action: ${e}`);
|
|
36
56
|
await queryRunner.rollbackTransaction();
|
|
57
|
+
success = false;
|
|
37
58
|
}
|
|
38
59
|
finally {
|
|
39
60
|
await queryRunner.release();
|
|
@@ -44,14 +65,15 @@ class CommitmentEntityAction {
|
|
|
44
65
|
* update spendBlock Column of the commitments in the dataBase
|
|
45
66
|
* @param spendId
|
|
46
67
|
* @param block
|
|
68
|
+
* @param extractor
|
|
47
69
|
*/
|
|
48
|
-
spendCommitments = async (spendId, block) => {
|
|
70
|
+
spendCommitments = async (spendId, block, extractor) => {
|
|
49
71
|
//todo: should change with single db call
|
|
50
72
|
for (const id of spendId) {
|
|
51
73
|
await this.datasource.createQueryBuilder()
|
|
52
74
|
.update(CommitmentEntity)
|
|
53
|
-
.set({
|
|
54
|
-
.where("
|
|
75
|
+
.set({ spendBlock: block.hash, spendHeight: block.height })
|
|
76
|
+
.where("boxId = :id AND extractor = :extractor", { id: id, extractor: extractor })
|
|
55
77
|
.execute();
|
|
56
78
|
}
|
|
57
79
|
};
|
|
@@ -64,15 +86,15 @@ class CommitmentEntityAction {
|
|
|
64
86
|
await this.datasource.createQueryBuilder()
|
|
65
87
|
.delete()
|
|
66
88
|
.from(CommitmentEntity)
|
|
67
|
-
.where("extractor = :extractor AND
|
|
89
|
+
.where("extractor = :extractor AND block = :block", {
|
|
68
90
|
"block": block,
|
|
69
91
|
"extractor": extractor
|
|
70
92
|
}).execute();
|
|
71
93
|
//TODO: should handled null value in spendBlockHeight
|
|
72
94
|
await this.datasource.createQueryBuilder()
|
|
73
95
|
.update(CommitmentEntity)
|
|
74
|
-
.set({
|
|
75
|
-
.where("
|
|
96
|
+
.set({ spendBlock: undefined, spendHeight: 0 })
|
|
97
|
+
.where("spendBlock = :block AND block = :block", {
|
|
76
98
|
block: block
|
|
77
99
|
}).execute();
|
|
78
100
|
};
|
|
@@ -3,6 +3,7 @@ import { extractedPermit } from "../interfaces/extractedPermit";
|
|
|
3
3
|
import { BlockEntity } from "@rosen-bridge/scanner";
|
|
4
4
|
declare class PermitEntityAction {
|
|
5
5
|
private readonly datasource;
|
|
6
|
+
private readonly permitRepository;
|
|
6
7
|
constructor(dataSource: DataSource);
|
|
7
8
|
/**
|
|
8
9
|
* It stores list of permits in the dataSource with block id
|
|
@@ -15,8 +16,9 @@ declare class PermitEntityAction {
|
|
|
15
16
|
* update spendBlock Column of the permits in the dataBase
|
|
16
17
|
* @param spendId
|
|
17
18
|
* @param block
|
|
19
|
+
* @param extractor
|
|
18
20
|
*/
|
|
19
|
-
spendPermits: (spendId: Array<string>, block: BlockEntity) => Promise<void>;
|
|
21
|
+
spendPermits: (spendId: Array<string>, block: BlockEntity, extractor: string) => Promise<void>;
|
|
20
22
|
/**
|
|
21
23
|
* deleting all permits corresponding to the block(id) and extractor(id)
|
|
22
24
|
* @param block
|
package/dist/actions/permitDB.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import { In } from "typeorm";
|
|
1
2
|
import PermitEntity from "../entities/PermitEntity";
|
|
2
3
|
import CommitmentEntity from "../entities/CommitmentEntity";
|
|
3
4
|
class PermitEntityAction {
|
|
4
5
|
datasource;
|
|
6
|
+
permitRepository;
|
|
5
7
|
constructor(dataSource) {
|
|
6
8
|
this.datasource = dataSource;
|
|
9
|
+
this.permitRepository = dataSource.getRepository(PermitEntity);
|
|
7
10
|
}
|
|
8
11
|
/**
|
|
9
12
|
* It stores list of permits in the dataSource with block id
|
|
@@ -12,25 +15,43 @@ class PermitEntityAction {
|
|
|
12
15
|
* @param extractor
|
|
13
16
|
*/
|
|
14
17
|
storePermits = async (permits, block, extractor) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
row.extractor = extractor;
|
|
22
|
-
row.WID = permit.WID;
|
|
23
|
-
return row;
|
|
18
|
+
if (permits.length === 0)
|
|
19
|
+
return true;
|
|
20
|
+
const boxIds = permits.map(permit => permit.boxId);
|
|
21
|
+
const savedPermits = await this.permitRepository.findBy({
|
|
22
|
+
boxId: In(boxIds),
|
|
23
|
+
extractor: extractor,
|
|
24
24
|
});
|
|
25
25
|
let success = true;
|
|
26
26
|
const queryRunner = this.datasource.createQueryRunner();
|
|
27
27
|
await queryRunner.connect();
|
|
28
28
|
await queryRunner.startTransaction();
|
|
29
29
|
try {
|
|
30
|
-
|
|
30
|
+
for (const permit of permits) {
|
|
31
|
+
const saved = savedPermits.some((entity) => {
|
|
32
|
+
return entity.boxId === permit.boxId;
|
|
33
|
+
});
|
|
34
|
+
const entity = {
|
|
35
|
+
boxId: permit.boxId,
|
|
36
|
+
boxSerialized: permit.boxSerialized,
|
|
37
|
+
block: block.hash,
|
|
38
|
+
height: block.height,
|
|
39
|
+
extractor: extractor,
|
|
40
|
+
WID: permit.WID,
|
|
41
|
+
};
|
|
42
|
+
if (!saved) {
|
|
43
|
+
await queryRunner.manager.insert(PermitEntity, entity);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
await queryRunner.manager.update(PermitEntity, {
|
|
47
|
+
boxId: permit.boxId
|
|
48
|
+
}, entity);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
31
51
|
await queryRunner.commitTransaction();
|
|
32
52
|
}
|
|
33
53
|
catch (e) {
|
|
54
|
+
console.log(`An error occurred during store permit action: ${e}`);
|
|
34
55
|
await queryRunner.rollbackTransaction();
|
|
35
56
|
success = false;
|
|
36
57
|
}
|
|
@@ -43,14 +64,15 @@ class PermitEntityAction {
|
|
|
43
64
|
* update spendBlock Column of the permits in the dataBase
|
|
44
65
|
* @param spendId
|
|
45
66
|
* @param block
|
|
67
|
+
* @param extractor
|
|
46
68
|
*/
|
|
47
|
-
spendPermits = async (spendId, block) => {
|
|
69
|
+
spendPermits = async (spendId, block, extractor) => {
|
|
48
70
|
//todo: should change with single db call
|
|
49
71
|
for (const id of spendId) {
|
|
50
72
|
await this.datasource.createQueryBuilder()
|
|
51
73
|
.update(PermitEntity)
|
|
52
|
-
.set({
|
|
53
|
-
.where("boxId = :id", { id: id })
|
|
74
|
+
.set({ spendBlock: block.hash, spendHeight: block.height })
|
|
75
|
+
.where("boxId = :id AND extractor = :extractor", { id: id, extractor: extractor })
|
|
54
76
|
.execute();
|
|
55
77
|
}
|
|
56
78
|
};
|
|
@@ -64,15 +86,15 @@ class PermitEntityAction {
|
|
|
64
86
|
await this.datasource.createQueryBuilder()
|
|
65
87
|
.delete()
|
|
66
88
|
.from(PermitEntity)
|
|
67
|
-
.where("extractor = :extractor AND
|
|
89
|
+
.where("extractor = :extractor AND block = :block", {
|
|
68
90
|
"block": block,
|
|
69
91
|
"extractor": extractor
|
|
70
92
|
}).execute();
|
|
71
93
|
//TODO: should handled null value in spendBlockHeight
|
|
72
94
|
await this.datasource.createQueryBuilder()
|
|
73
95
|
.update(CommitmentEntity)
|
|
74
|
-
.set({
|
|
75
|
-
.where("
|
|
96
|
+
.set({ spendBlock: undefined, spendHeight: 0 })
|
|
97
|
+
.where("spendBlock = :block AND block = :block", {
|
|
76
98
|
block: block
|
|
77
99
|
}).execute();
|
|
78
100
|
};
|
|
@@ -4,11 +4,11 @@ declare class CommitmentEntity {
|
|
|
4
4
|
eventId: string;
|
|
5
5
|
commitment: string;
|
|
6
6
|
WID: string;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
boxId: string;
|
|
8
|
+
block: string;
|
|
9
9
|
height: number;
|
|
10
10
|
boxSerialized: string;
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
spendBlock: string;
|
|
12
|
+
spendHeight?: number;
|
|
13
13
|
}
|
|
14
14
|
export default CommitmentEntity;
|
|
@@ -7,19 +7,19 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";
|
|
10
|
+
import { Column, Entity, PrimaryGeneratedColumn, Unique } from "typeorm";
|
|
11
11
|
let CommitmentEntity = class CommitmentEntity {
|
|
12
12
|
id;
|
|
13
13
|
extractor;
|
|
14
14
|
eventId;
|
|
15
15
|
commitment;
|
|
16
16
|
WID;
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
boxId;
|
|
18
|
+
block;
|
|
19
19
|
height;
|
|
20
20
|
boxSerialized;
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
spendBlock;
|
|
22
|
+
spendHeight;
|
|
23
23
|
};
|
|
24
24
|
__decorate([
|
|
25
25
|
PrimaryGeneratedColumn(),
|
|
@@ -44,11 +44,11 @@ __decorate([
|
|
|
44
44
|
__decorate([
|
|
45
45
|
Column(),
|
|
46
46
|
__metadata("design:type", String)
|
|
47
|
-
], CommitmentEntity.prototype, "
|
|
47
|
+
], CommitmentEntity.prototype, "boxId", void 0);
|
|
48
48
|
__decorate([
|
|
49
49
|
Column(),
|
|
50
50
|
__metadata("design:type", String)
|
|
51
|
-
], CommitmentEntity.prototype, "
|
|
51
|
+
], CommitmentEntity.prototype, "block", void 0);
|
|
52
52
|
__decorate([
|
|
53
53
|
Column(),
|
|
54
54
|
__metadata("design:type", Number)
|
|
@@ -60,12 +60,13 @@ __decorate([
|
|
|
60
60
|
__decorate([
|
|
61
61
|
Column({ nullable: true }),
|
|
62
62
|
__metadata("design:type", String)
|
|
63
|
-
], CommitmentEntity.prototype, "
|
|
63
|
+
], CommitmentEntity.prototype, "spendBlock", void 0);
|
|
64
64
|
__decorate([
|
|
65
65
|
Column({ nullable: true }),
|
|
66
66
|
__metadata("design:type", Number)
|
|
67
|
-
], CommitmentEntity.prototype, "
|
|
67
|
+
], CommitmentEntity.prototype, "spendHeight", void 0);
|
|
68
68
|
CommitmentEntity = __decorate([
|
|
69
|
-
Entity()
|
|
69
|
+
Entity(),
|
|
70
|
+
Unique(["boxId", "extractor"])
|
|
70
71
|
], CommitmentEntity);
|
|
71
72
|
export default CommitmentEntity;
|
|
@@ -7,13 +7,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";
|
|
10
|
+
import { Column, Entity, PrimaryGeneratedColumn, Unique } from "typeorm";
|
|
11
11
|
let EventTriggerEntity = class EventTriggerEntity {
|
|
12
12
|
id;
|
|
13
13
|
extractor;
|
|
14
14
|
boxId;
|
|
15
15
|
boxSerialized;
|
|
16
|
-
|
|
16
|
+
block;
|
|
17
17
|
height;
|
|
18
18
|
fromChain;
|
|
19
19
|
toChain;
|
|
@@ -47,7 +47,7 @@ __decorate([
|
|
|
47
47
|
__decorate([
|
|
48
48
|
Column(),
|
|
49
49
|
__metadata("design:type", String)
|
|
50
|
-
], EventTriggerEntity.prototype, "
|
|
50
|
+
], EventTriggerEntity.prototype, "block", void 0);
|
|
51
51
|
__decorate([
|
|
52
52
|
Column(),
|
|
53
53
|
__metadata("design:type", Number)
|
|
@@ -101,6 +101,7 @@ __decorate([
|
|
|
101
101
|
__metadata("design:type", String)
|
|
102
102
|
], EventTriggerEntity.prototype, "WIDs", void 0);
|
|
103
103
|
EventTriggerEntity = __decorate([
|
|
104
|
-
Entity()
|
|
104
|
+
Entity(),
|
|
105
|
+
Unique(["boxId", "extractor"])
|
|
105
106
|
], EventTriggerEntity);
|
|
106
107
|
export default EventTriggerEntity;
|
|
@@ -4,9 +4,9 @@ declare class PermitEntity {
|
|
|
4
4
|
boxId: string;
|
|
5
5
|
boxSerialized: string;
|
|
6
6
|
WID: string;
|
|
7
|
-
|
|
7
|
+
block: string;
|
|
8
8
|
height: number;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
spendBlock: string;
|
|
10
|
+
spendHeight?: number;
|
|
11
11
|
}
|
|
12
12
|
export default PermitEntity;
|
|
@@ -7,17 +7,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";
|
|
10
|
+
import { Column, Entity, PrimaryGeneratedColumn, Unique } from "typeorm";
|
|
11
11
|
let PermitEntity = class PermitEntity {
|
|
12
12
|
id;
|
|
13
13
|
extractor;
|
|
14
14
|
boxId;
|
|
15
15
|
boxSerialized;
|
|
16
16
|
WID;
|
|
17
|
-
|
|
17
|
+
block;
|
|
18
18
|
height;
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
spendBlock;
|
|
20
|
+
spendHeight;
|
|
21
21
|
};
|
|
22
22
|
__decorate([
|
|
23
23
|
PrimaryGeneratedColumn(),
|
|
@@ -42,7 +42,7 @@ __decorate([
|
|
|
42
42
|
__decorate([
|
|
43
43
|
Column(),
|
|
44
44
|
__metadata("design:type", String)
|
|
45
|
-
], PermitEntity.prototype, "
|
|
45
|
+
], PermitEntity.prototype, "block", void 0);
|
|
46
46
|
__decorate([
|
|
47
47
|
Column(),
|
|
48
48
|
__metadata("design:type", Number)
|
|
@@ -50,12 +50,13 @@ __decorate([
|
|
|
50
50
|
__decorate([
|
|
51
51
|
Column({ nullable: true }),
|
|
52
52
|
__metadata("design:type", String)
|
|
53
|
-
], PermitEntity.prototype, "
|
|
53
|
+
], PermitEntity.prototype, "spendBlock", void 0);
|
|
54
54
|
__decorate([
|
|
55
55
|
Column({ nullable: true }),
|
|
56
56
|
__metadata("design:type", Number)
|
|
57
|
-
], PermitEntity.prototype, "
|
|
57
|
+
], PermitEntity.prototype, "spendHeight", void 0);
|
|
58
58
|
PermitEntity = __decorate([
|
|
59
|
-
Entity()
|
|
59
|
+
Entity(),
|
|
60
|
+
Unique(["boxId", "extractor"])
|
|
60
61
|
], PermitEntity);
|
|
61
62
|
export default PermitEntity;
|
|
@@ -46,15 +46,15 @@ class EventTriggerExtractor extends AbstractExtractor {
|
|
|
46
46
|
boxSerialized: Buffer.from(output.sigma_serialize_bytes()).toString("base64"),
|
|
47
47
|
toChain: Buffer.from(R5Serialized[2]).toString(),
|
|
48
48
|
toAddress: Buffer.from(R5Serialized[4]).toString(),
|
|
49
|
-
networkFee: Buffer.from(R5Serialized[7]).toString("hex"),
|
|
50
|
-
bridgeFee: Buffer.from(R5Serialized[6]).toString("hex"),
|
|
51
|
-
amount: Buffer.from(R5Serialized[5]).toString("hex"),
|
|
52
|
-
sourceChainTokenId: Buffer.from(R5Serialized[8]).toString(
|
|
53
|
-
targetChainTokenId: Buffer.from(R5Serialized[9]).toString(
|
|
54
|
-
sourceTxId: Buffer.from(R5Serialized[0]).toString(
|
|
49
|
+
networkFee: BigInt("0x" + Buffer.from(R5Serialized[7]).toString("hex")).toString(10),
|
|
50
|
+
bridgeFee: BigInt("0x" + Buffer.from(R5Serialized[6]).toString("hex")).toString(10),
|
|
51
|
+
amount: BigInt("0x" + Buffer.from(R5Serialized[5]).toString("hex")).toString(10),
|
|
52
|
+
sourceChainTokenId: Buffer.from(R5Serialized[8]).toString(),
|
|
53
|
+
targetChainTokenId: Buffer.from(R5Serialized[9]).toString(),
|
|
54
|
+
sourceTxId: Buffer.from(R5Serialized[0]).toString(),
|
|
55
55
|
fromChain: Buffer.from(R5Serialized[1]).toString(),
|
|
56
56
|
fromAddress: Buffer.from(R5Serialized[3]).toString(),
|
|
57
|
-
sourceBlockId: Buffer.from(R5Serialized[10]).toString(
|
|
57
|
+
sourceBlockId: Buffer.from(R5Serialized[10]).toString(),
|
|
58
58
|
WIDs: WIDs,
|
|
59
59
|
});
|
|
60
60
|
}
|
|
@@ -49,7 +49,7 @@ class CommitmentExtractor extends AbstractExtractor {
|
|
|
49
49
|
WID: WID,
|
|
50
50
|
commitment: eventDigest,
|
|
51
51
|
eventId: requestId,
|
|
52
|
-
|
|
52
|
+
boxId: output.box_id().to_str(),
|
|
53
53
|
boxSerialized: Buffer.from(output.sigma_serialize_bytes()).toString("base64")
|
|
54
54
|
});
|
|
55
55
|
}
|
|
@@ -67,7 +67,7 @@ class CommitmentExtractor extends AbstractExtractor {
|
|
|
67
67
|
});
|
|
68
68
|
// process save commitments
|
|
69
69
|
this.actions.storeCommitments(commitments, block, this.id).then(() => {
|
|
70
|
-
this.actions.spendCommitments(spendIds, block).then(() => {
|
|
70
|
+
this.actions.spendCommitments(spendIds, block, this.id).then(() => {
|
|
71
71
|
resolve(true);
|
|
72
72
|
});
|
|
73
73
|
}).catch((e) => reject(e));
|
|
@@ -57,7 +57,7 @@ class PermitExtractor extends AbstractExtractor {
|
|
|
57
57
|
}
|
|
58
58
|
});
|
|
59
59
|
this.actions.storePermits(boxes, block, this.getId()).then(() => {
|
|
60
|
-
this.actions.spendPermits(spendIds, block).then(() => {
|
|
60
|
+
this.actions.spendPermits(spendIds, block, this.getId()).then(() => {
|
|
61
61
|
resolve(true);
|
|
62
62
|
});
|
|
63
63
|
}).catch((e) => {
|
|
File without changes
|
|
@@ -8,18 +8,19 @@ export class initMigration1659787165000 {
|
|
|
8
8
|
"boxSerialized" varchar NOT NULL,
|
|
9
9
|
"commitment" varchar NOT NULL,
|
|
10
10
|
"WID" varchar NOT NULL,
|
|
11
|
-
"
|
|
12
|
-
"
|
|
11
|
+
"boxId" varchar NOT NULL,
|
|
12
|
+
"block" varchar NOT NULL,
|
|
13
13
|
"height" INTEGER NOT NULL,
|
|
14
|
-
"
|
|
15
|
-
"
|
|
14
|
+
"spendBlock" varchar,
|
|
15
|
+
"spendHeight" INTEGER,
|
|
16
|
+
CONSTRAINT "UQ_cc294fc304a66f8f194840f1ece" UNIQUE ("boxId", "extractor")
|
|
16
17
|
)`);
|
|
17
18
|
await queryRunner.query(`CREATE TABLE "event_trigger_entity"
|
|
18
19
|
("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
19
20
|
"extractor" varchar NOT NULL,
|
|
20
21
|
"boxId" varchar NOT NULL,
|
|
21
22
|
"boxSerialized" varchar NOT NULL,
|
|
22
|
-
"
|
|
23
|
+
"block" varchar NOT NULL,
|
|
23
24
|
"fromChain" varchar NOT NULL,
|
|
24
25
|
"toChain" varchar NOT NULL,
|
|
25
26
|
"fromAddress" varchar NOT NULL,
|
|
@@ -32,18 +33,20 @@ export class initMigration1659787165000 {
|
|
|
32
33
|
"sourceBlockId" varchar NOT NULL,
|
|
33
34
|
"sourceTxId" varchar NOT NULL,
|
|
34
35
|
"height" INTEGER NOT NULL,
|
|
35
|
-
"WIDs" varchar NOT NULL
|
|
36
|
+
"WIDs" varchar NOT NULL,
|
|
37
|
+
CONSTRAINT "UQ_c905f221a1b6271ca4405dbbe5f" UNIQUE ("boxId", "extractor")
|
|
36
38
|
)`);
|
|
37
39
|
await queryRunner.query(`CREATE TABLE "permit_entity"
|
|
38
40
|
("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
39
41
|
"extractor" varchar NOT NULL,
|
|
40
42
|
"boxId" varchar NOT NULL,
|
|
41
43
|
"boxSerialized" varchar NOT NULL,
|
|
42
|
-
"
|
|
44
|
+
"block" varchar NOT NULL,
|
|
43
45
|
"height" INTEGER NOT NULL,
|
|
44
46
|
"WID" varchar NOT NULL,
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
+
"spendBlock" varchar,
|
|
48
|
+
"spendHeight" INTEGER,
|
|
49
|
+
CONSTRAINT "UQ_d3226602b909b64bcaeadc39c3c" UNIQUE ("boxId", "extractor")
|
|
47
50
|
)`);
|
|
48
51
|
}
|
|
49
52
|
async down(queryRunner) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { initMigration1659787165000 } from "./
|
|
1
|
+
import { initMigration1659787165000 } from "./1659787165000-initMigration";
|
|
2
2
|
export declare const migrations: (typeof initMigration1659787165000)[];
|
package/dist/migrations/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { initMigration1659787165000 } from "./
|
|
1
|
+
import { initMigration1659787165000 } from "./1659787165000-initMigration";
|
|
2
2
|
export const migrations = [initMigration1659787165000];
|