@mainsail/consensus 0.0.1-alpha.13 → 0.0.1-alpha.14
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/distribution/bootstrapper.d.ts.map +1 -1
- package/distribution/bootstrapper.js +1 -1
- package/distribution/bootstrapper.js.map +1 -1
- package/distribution/index.d.ts.map +1 -1
- package/distribution/index.js +0 -24
- package/distribution/index.js.map +1 -1
- package/package.json +8 -8
- package/distribution/storage.d.ts +0 -19
- package/distribution/storage.d.ts.map +0 -1
- package/distribution/storage.js +0 -111
- package/distribution/storage.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrapper.d.ts","sourceRoot":"","sources":["../source/bootstrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAsB,MAAM,qBAAqB,CAAC;AAEpE,qBACa,YAAa,YAAW,SAAS,CAAC,SAAS,CAAC,YAAY;IAEpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAGlD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4C;IAG3E,OAAO,CAAC,QAAQ,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"bootstrapper.d.ts","sourceRoot":"","sources":["../source/bootstrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAsB,MAAM,qBAAqB,CAAC;AAEpE,qBACa,YAAa,YAAW,SAAS,CAAC,SAAS,CAAC,YAAY;IAEpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAGlD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4C;IAG3E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAEjD,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC;CA6C3E"}
|
|
@@ -55,7 +55,7 @@ __decorate([
|
|
|
55
55
|
__metadata("design:type", Object)
|
|
56
56
|
], Bootstrapper.prototype, "roundStateRepo", void 0);
|
|
57
57
|
__decorate([
|
|
58
|
-
inject(Identifiers.
|
|
58
|
+
inject(Identifiers.ConsensusStorage.Service),
|
|
59
59
|
__metadata("design:type", Object)
|
|
60
60
|
], Bootstrapper.prototype, "storage", void 0);
|
|
61
61
|
Bootstrapper = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrapper.js","sourceRoot":"","sources":["../source/bootstrapper.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAS,MAAM,qBAAqB,CAAC;AAG7D,IAAM,YAAY,GAAlB,MAAM,YAAY;IAUjB,KAAK,CAAC,GAAG;QACf,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtF,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACpF,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YACxF,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAkE,CAAC;QAC/G,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,uDAAuD;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACrF,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,wDAAwD;YACxD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YACtF,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;QAChC,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;CACD,CAAA;AArDiB;IADhB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;;4CACS;AAGjC;IADhB,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,oBAAoB,CAAC;;oDACwB;AAG1D;IADhB,MAAM,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"bootstrapper.js","sourceRoot":"","sources":["../source/bootstrapper.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAS,MAAM,qBAAqB,CAAC;AAG7D,IAAM,YAAY,GAAlB,MAAM,YAAY;IAUjB,KAAK,CAAC,GAAG;QACf,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtF,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACpF,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YACxF,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAkE,CAAC;QAC/G,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,uDAAuD;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACrF,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,wDAAwD;YACxD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YACtF,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;QAChC,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;CACD,CAAA;AArDiB;IADhB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;;4CACS;AAGjC;IADhB,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,oBAAoB,CAAC;;oDACwB;AAG1D;IADhB,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC;;6CACiB;AARlD,YAAY;IADxB,UAAU,EAAE;GACA,YAAY,CAuDxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAS,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAS,MAAM,kBAAkB,CAAC;AAUpD,qBAAa,eAAgB,SAAQ,SAAS,CAAC,eAAe;IAChD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAIrC"}
|
package/distribution/index.js
CHANGED
|
@@ -7,7 +7,6 @@ import { Consensus } from "./consensus.js";
|
|
|
7
7
|
import { CommitProcessor, PrecommitProcessor, PrevoteProcessor, ProposalProcessor } from "./processors/index.js";
|
|
8
8
|
import { RoundStateRepository } from "./round-state-repository.js";
|
|
9
9
|
import { Scheduler } from "./scheduler.js";
|
|
10
|
-
import { Storage } from "./storage.js";
|
|
11
10
|
export class ServiceProvider extends Providers.ServiceProvider {
|
|
12
11
|
async register() {
|
|
13
12
|
this.app.bind(Identifiers.Consensus.Aggregator).to(Aggregator).inSingletonScope();
|
|
@@ -21,35 +20,12 @@ export class ServiceProvider extends Providers.ServiceProvider {
|
|
|
21
20
|
this.app
|
|
22
21
|
.bind(Identifiers.Consensus.CommitState.Factory)
|
|
23
22
|
.toFactory((context) => (commit) => context.container.resolve(CommitState).configure(commit));
|
|
24
|
-
// Storage for prevotes, precommits and proposals
|
|
25
|
-
const storage = this.app.get(Identifiers.Database.Instance.Consensus);
|
|
26
|
-
this.app.bind(Identifiers.Database.Storage.Proposal).toConstantValue(storage.openDB({ name: "proposals" }));
|
|
27
|
-
this.app.bind(Identifiers.Database.Storage.PreVote).toConstantValue(storage.openDB({ name: "prevotes" }));
|
|
28
|
-
this.app.bind(Identifiers.Database.Storage.PreCommit).toConstantValue(storage.openDB({ name: "precommits" }));
|
|
29
|
-
this.app
|
|
30
|
-
.bind(Identifiers.Database.Storage.ConsensusState)
|
|
31
|
-
.toConstantValue(storage.openDB({ name: "consensus" }));
|
|
32
|
-
this.app.bind(Identifiers.Consensus.Storage).to(Storage).inSingletonScope();
|
|
33
23
|
this.app.bind(Identifiers.Consensus.Bootstrapper).to(Bootstrapper).inSingletonScope();
|
|
34
24
|
this.app.bind(Identifiers.Consensus.Service).toConstantValue(this.app.resolve(Consensus));
|
|
35
25
|
}
|
|
36
26
|
async dispose() {
|
|
37
27
|
const consensus = this.app.get(Identifiers.Consensus.Service);
|
|
38
28
|
await consensus.dispose();
|
|
39
|
-
const storage = this.app.get(Identifiers.Consensus.Storage);
|
|
40
|
-
await storage.clear();
|
|
41
|
-
await storage.saveState(consensus.getState());
|
|
42
|
-
const roundStates = this.app
|
|
43
|
-
.get(Identifiers.Consensus.RoundStateRepository)
|
|
44
|
-
.getRoundStates();
|
|
45
|
-
const proposals = roundStates
|
|
46
|
-
.map((roundState) => roundState.getProposal())
|
|
47
|
-
.filter((proposal) => !!proposal);
|
|
48
|
-
await storage.saveProposals(proposals);
|
|
49
|
-
const prevotes = roundStates.flatMap((roundState) => roundState.getPrevotes());
|
|
50
|
-
await storage.savePrevotes(prevotes);
|
|
51
|
-
const precommits = roundStates.flatMap((roundState) => roundState.getPrecommits());
|
|
52
|
-
await storage.savePrecommits(precommits);
|
|
53
29
|
}
|
|
54
30
|
}
|
|
55
31
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mainsail/consensus",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.14",
|
|
4
4
|
"description": "Consensus for the Mainsail blockchain",
|
|
5
5
|
"license": "GPL-3.0-only",
|
|
6
6
|
"contributors": [],
|
|
@@ -12,13 +12,12 @@
|
|
|
12
12
|
],
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"dayjs": "1.11.10",
|
|
15
|
-
"
|
|
16
|
-
"@mainsail/
|
|
17
|
-
"@mainsail/
|
|
18
|
-
"@mainsail/container": "0.0.1-alpha.13"
|
|
15
|
+
"@mainsail/container": "0.0.1-alpha.14",
|
|
16
|
+
"@mainsail/kernel": "0.0.1-alpha.14",
|
|
17
|
+
"@mainsail/contracts": "0.0.1-alpha.14"
|
|
19
18
|
},
|
|
20
19
|
"devDependencies": {
|
|
21
|
-
"
|
|
20
|
+
"esmock": "2.6.4",
|
|
22
21
|
"uvu": "^0.5.6"
|
|
23
22
|
},
|
|
24
23
|
"engines": {
|
|
@@ -29,9 +28,10 @@
|
|
|
29
28
|
"build:watch": "pnpm run clean && tsc -w",
|
|
30
29
|
"clean": "del distribution",
|
|
31
30
|
"release": "pnpm publish --access public",
|
|
32
|
-
"test": "
|
|
31
|
+
"test": "pnpm run uvu source .test.ts",
|
|
33
32
|
"test:coverage": "c8 pnpm run test",
|
|
34
33
|
"test:coverage:html": "c8 -r html --all pnpm run test",
|
|
35
|
-
"test:file": "
|
|
34
|
+
"test:file": "pnpm run uvu source",
|
|
35
|
+
"uvu": "tsx --tsconfig ../../tsconfig.test.json ./node_modules/uvu/bin.js"
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Contracts } from "@mainsail/contracts";
|
|
2
|
-
export declare class Storage implements Contracts.Consensus.ConsensusStorage {
|
|
3
|
-
private readonly proposalStorage;
|
|
4
|
-
private readonly prevoteStorage;
|
|
5
|
-
private readonly precommitStorage;
|
|
6
|
-
private readonly stateStorage;
|
|
7
|
-
private readonly validatorSet;
|
|
8
|
-
private readonly messageFactory;
|
|
9
|
-
getState(): Promise<Contracts.Consensus.ConsensusStateData | undefined>;
|
|
10
|
-
saveState(state: Contracts.Consensus.ConsensusState): Promise<void>;
|
|
11
|
-
saveProposals(proposals: Contracts.Crypto.Proposal[]): Promise<void>;
|
|
12
|
-
savePrevotes(prevotes: Contracts.Crypto.Prevote[]): Promise<void>;
|
|
13
|
-
savePrecommits(precommits: Contracts.Crypto.Precommit[]): Promise<void>;
|
|
14
|
-
getProposals(): Promise<Contracts.Crypto.Proposal[]>;
|
|
15
|
-
getPrevotes(): Promise<Contracts.Crypto.Prevote[]>;
|
|
16
|
-
getPrecommits(): Promise<Contracts.Crypto.Precommit[]>;
|
|
17
|
-
clear(): Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../source/storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAe,MAAM,qBAAqB,CAAC;AAG7D,qBACa,OAAQ,YAAW,SAAS,CAAC,SAAS,CAAC,gBAAgB;IAEnE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IAGjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAGhD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAGlD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAG9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAG/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmC;IAErD,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAgBvE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAanE,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpE,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjE,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvE,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAKpD,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAKlD,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IAKtD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQnC"}
|
package/distribution/storage.js
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
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 { inject, injectable } from "@mainsail/container";
|
|
11
|
-
import { Contracts, Identifiers } from "@mainsail/contracts";
|
|
12
|
-
import * as lmdb from "lmdb";
|
|
13
|
-
let Storage = class Storage {
|
|
14
|
-
async getState() {
|
|
15
|
-
if (!this.stateStorage.doesExist("consensus-state")) {
|
|
16
|
-
return undefined;
|
|
17
|
-
}
|
|
18
|
-
const data = await this.stateStorage.get("consensus-state");
|
|
19
|
-
return {
|
|
20
|
-
height: data.height,
|
|
21
|
-
lockedRound: data.lockedRound,
|
|
22
|
-
round: data.round,
|
|
23
|
-
step: data.step,
|
|
24
|
-
validRound: data.validRound,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
async saveState(state) {
|
|
28
|
-
// always overwrite existing state; we only care about state for uncommitted blocks
|
|
29
|
-
const data = {
|
|
30
|
-
height: state.height,
|
|
31
|
-
lockedRound: state.lockedRound,
|
|
32
|
-
round: state.round,
|
|
33
|
-
step: state.step,
|
|
34
|
-
validRound: state.validRound,
|
|
35
|
-
};
|
|
36
|
-
await this.stateStorage.put("consensus-state", data);
|
|
37
|
-
}
|
|
38
|
-
async saveProposals(proposals) {
|
|
39
|
-
await this.proposalStorage.transaction(async () => {
|
|
40
|
-
for (const proposal of proposals) {
|
|
41
|
-
const validator = this.validatorSet.getValidator(proposal.validatorIndex);
|
|
42
|
-
await this.proposalStorage.put(`${proposal.round}-${validator.getConsensusPublicKey()}`, proposal.toData());
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
async savePrevotes(prevotes) {
|
|
47
|
-
await this.prevoteStorage.transaction(async () => {
|
|
48
|
-
for (const prevote of prevotes) {
|
|
49
|
-
const validator = this.validatorSet.getValidator(prevote.validatorIndex);
|
|
50
|
-
await this.prevoteStorage.put(`${prevote.round}-${validator.getConsensusPublicKey()}`, prevote.toData());
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
async savePrecommits(precommits) {
|
|
55
|
-
await this.precommitStorage.transaction(async () => {
|
|
56
|
-
for (const precommit of precommits) {
|
|
57
|
-
const validator = this.validatorSet.getValidator(precommit.validatorIndex);
|
|
58
|
-
await this.precommitStorage.put(`${precommit.round}-${validator.getConsensusPublicKey()}`, precommit.toData());
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
async getProposals() {
|
|
63
|
-
const proposals = [...this.proposalStorage.getValues(undefined)];
|
|
64
|
-
return Promise.all(proposals.map((proposal) => this.messageFactory.makeProposalFromData(proposal)));
|
|
65
|
-
}
|
|
66
|
-
async getPrevotes() {
|
|
67
|
-
const prevotes = [...this.prevoteStorage.getValues(undefined)];
|
|
68
|
-
return Promise.all(prevotes.map((prevote) => this.messageFactory.makePrevoteFromData(prevote)));
|
|
69
|
-
}
|
|
70
|
-
async getPrecommits() {
|
|
71
|
-
const precommits = [...this.precommitStorage.getValues(undefined)];
|
|
72
|
-
return Promise.all(precommits.map((precommit) => this.messageFactory.makePrecommitFromData(precommit)));
|
|
73
|
-
}
|
|
74
|
-
async clear() {
|
|
75
|
-
await Promise.all([
|
|
76
|
-
this.proposalStorage.clearAsync(),
|
|
77
|
-
this.prevoteStorage.clearAsync(),
|
|
78
|
-
this.precommitStorage.clearAsync(),
|
|
79
|
-
this.stateStorage.clearAsync(),
|
|
80
|
-
]);
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
__decorate([
|
|
84
|
-
inject(Identifiers.Database.Storage.Proposal),
|
|
85
|
-
__metadata("design:type", lmdb.Database)
|
|
86
|
-
], Storage.prototype, "proposalStorage", void 0);
|
|
87
|
-
__decorate([
|
|
88
|
-
inject(Identifiers.Database.Storage.PreVote),
|
|
89
|
-
__metadata("design:type", lmdb.Database)
|
|
90
|
-
], Storage.prototype, "prevoteStorage", void 0);
|
|
91
|
-
__decorate([
|
|
92
|
-
inject(Identifiers.Database.Storage.PreCommit),
|
|
93
|
-
__metadata("design:type", lmdb.Database)
|
|
94
|
-
], Storage.prototype, "precommitStorage", void 0);
|
|
95
|
-
__decorate([
|
|
96
|
-
inject(Identifiers.Database.Storage.ConsensusState),
|
|
97
|
-
__metadata("design:type", lmdb.Database)
|
|
98
|
-
], Storage.prototype, "stateStorage", void 0);
|
|
99
|
-
__decorate([
|
|
100
|
-
inject(Identifiers.ValidatorSet.Service),
|
|
101
|
-
__metadata("design:type", Object)
|
|
102
|
-
], Storage.prototype, "validatorSet", void 0);
|
|
103
|
-
__decorate([
|
|
104
|
-
inject(Identifiers.Cryptography.Message.Factory),
|
|
105
|
-
__metadata("design:type", Object)
|
|
106
|
-
], Storage.prototype, "messageFactory", void 0);
|
|
107
|
-
Storage = __decorate([
|
|
108
|
-
injectable()
|
|
109
|
-
], Storage);
|
|
110
|
-
export { Storage };
|
|
111
|
-
//# sourceMappingURL=storage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../source/storage.ts"],"names":[],"mappings":"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"}
|