@mainsail/consensus 0.0.1-evm.3 → 0.0.1-evm.30
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/aggregator.d.ts +2 -3
- package/distribution/aggregator.d.ts.map +1 -1
- package/distribution/aggregator.js +8 -6
- package/distribution/aggregator.js.map +1 -1
- package/distribution/bootstrapper.js +8 -5
- package/distribution/bootstrapper.js.map +1 -1
- package/distribution/commit-state.d.ts +1 -2
- package/distribution/commit-state.d.ts.map +1 -1
- package/distribution/commit-state.js +20 -40
- package/distribution/commit-state.js.map +1 -1
- package/distribution/consensus.d.ts +4 -4
- package/distribution/consensus.d.ts.map +1 -1
- package/distribution/consensus.js +198 -199
- package/distribution/consensus.js.map +1 -1
- package/distribution/index.d.ts.map +1 -1
- package/distribution/index.js +17 -5
- package/distribution/index.js.map +1 -1
- package/distribution/processors/abstract-processor.d.ts +3 -3
- package/distribution/processors/abstract-processor.d.ts.map +1 -1
- package/distribution/processors/abstract-processor.js +10 -6
- package/distribution/processors/abstract-processor.js.map +1 -1
- package/distribution/processors/commit-processor.d.ts +0 -1
- package/distribution/processors/commit-processor.d.ts.map +1 -1
- package/distribution/processors/commit-processor.js +22 -42
- package/distribution/processors/commit-processor.js.map +1 -1
- package/distribution/processors/precommit-processor.js +12 -18
- package/distribution/processors/precommit-processor.js.map +1 -1
- package/distribution/processors/prevote-processor.js +12 -18
- package/distribution/processors/prevote-processor.js.map +1 -1
- package/distribution/processors/proposal-processor.d.ts +1 -1
- package/distribution/processors/proposal-processor.d.ts.map +1 -1
- package/distribution/processors/proposal-processor.js +28 -30
- package/distribution/processors/proposal-processor.js.map +1 -1
- package/distribution/round-state-repository.d.ts +1 -1
- package/distribution/round-state-repository.d.ts.map +1 -1
- package/distribution/round-state-repository.js +12 -22
- package/distribution/round-state-repository.js.map +1 -1
- package/distribution/round-state.d.ts +3 -3
- package/distribution/round-state.d.ts.map +1 -1
- package/distribution/round-state.js +126 -149
- package/distribution/round-state.js.map +1 -1
- package/distribution/scheduler.js +46 -63
- package/distribution/scheduler.js.map +1 -1
- package/package.json +12 -10
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
1
|
import { Contracts } from "@mainsail/contracts";
|
|
3
2
|
export declare class Aggregator implements Contracts.Consensus.Aggregator {
|
|
4
3
|
private readonly validatorSet;
|
|
5
4
|
private readonly workerPool;
|
|
6
5
|
aggregate(majority: Map<number, {
|
|
7
6
|
signature: string;
|
|
8
|
-
}>,
|
|
9
|
-
verify(signature: Contracts.Crypto.AggregatedSignature, data: Buffer,
|
|
7
|
+
}>, roundValidators: number): Promise<Contracts.Crypto.AggregatedSignature>;
|
|
8
|
+
verify(signature: Contracts.Crypto.AggregatedSignature, data: Buffer, roundValidators: number): Promise<boolean>;
|
|
10
9
|
}
|
|
11
10
|
//# sourceMappingURL=aggregator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregator.d.ts","sourceRoot":"","sources":["../source/aggregator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aggregator.d.ts","sourceRoot":"","sources":["../source/aggregator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAe,MAAM,qBAAqB,CAAC;AAE7D,qBACa,UAAW,YAAW,SAAS,CAAC,SAAS,CAAC,UAAU;IAEhE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAG/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAE7C,SAAS,CACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,EAC5C,eAAe,EAAE,MAAM,GACrB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC;IAuB1C,MAAM,CACX,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAC/C,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC;CAoBnB"}
|
|
@@ -7,16 +7,18 @@ 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 { isMajority } from "@mainsail/blockchain-utils";
|
|
10
11
|
import { inject, injectable } from "@mainsail/container";
|
|
11
12
|
import { Contracts, Identifiers } from "@mainsail/contracts";
|
|
12
|
-
import { Utils } from "@mainsail/kernel";
|
|
13
13
|
let Aggregator = class Aggregator {
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
validatorSet;
|
|
15
|
+
workerPool;
|
|
16
|
+
async aggregate(majority, roundValidators) {
|
|
17
|
+
if (!isMajority(majority.size, roundValidators)) {
|
|
16
18
|
throw new Error("Failed to aggregate signatures, because the majority is not reached.");
|
|
17
19
|
}
|
|
18
20
|
const signatures = [];
|
|
19
|
-
const validators = Array.from({ length:
|
|
21
|
+
const validators = Array.from({ length: roundValidators }).fill(false);
|
|
20
22
|
for (const [key, { signature }] of majority) {
|
|
21
23
|
signatures.push(Buffer.from(signature, "hex"));
|
|
22
24
|
validators[key] = true;
|
|
@@ -28,11 +30,11 @@ let Aggregator = class Aggregator {
|
|
|
28
30
|
validators,
|
|
29
31
|
};
|
|
30
32
|
}
|
|
31
|
-
async verify(signature, data,
|
|
33
|
+
async verify(signature, data, roundValidators) {
|
|
32
34
|
const validatorPublicKeys = signature.validators
|
|
33
35
|
.map((v, index) => (v ? Buffer.from(this.validatorSet.getValidator(index).blsPublicKey, "hex") : undefined))
|
|
34
36
|
.filter((item) => !!item);
|
|
35
|
-
if (!
|
|
37
|
+
if (!isMajority(validatorPublicKeys.length, roundValidators)) {
|
|
36
38
|
return false;
|
|
37
39
|
}
|
|
38
40
|
const worker = await this.workerPool.getWorker();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../source/aggregator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../source/aggregator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGtD,IAAM,UAAU,GAAhB,MAAM,UAAU;IAEL,YAAY,CAAkC;IAG9C,UAAU,CAA+B;IAEnD,KAAK,CAAC,SAAS,CACrB,QAA4C,EAC5C,eAAuB;QAEvB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,MAAM,UAAU,GAAc,KAAK,CAAC,IAAI,CAAU,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3F,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC7C,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/C,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACxB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAE3E,OAAO;YACN,SAAS;YACT,UAAU;SACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CACX,SAA+C,EAC/C,IAAY,EACZ,eAAuB;QAEvB,MAAM,mBAAmB,GAAa,SAAS,CAAC,UAAU;aACxD,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAC3G,MAAM,CAAC,CAAC,IAAI,EAA+B,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAExD,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;YAC9D,OAAO,KAAK,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAEjD,MAAM,mBAAmB,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;QAE5F,OAAO,MAAM,MAAM,CAAC,kBAAkB,CACrC,QAAQ,EACR,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,EACvC,IAAI,EACJ,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CACvC,CAAC;IACH,CAAC;CACD,CAAA;AAvDiB;IADhB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC;;gDACsB;AAG9C;IADhB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC;;8CACc;AAL9C,UAAU;IADtB,UAAU,EAAE;GACA,UAAU,CAyDtB"}
|
|
@@ -10,23 +10,26 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
import { inject, injectable } from "@mainsail/container";
|
|
11
11
|
import { Contracts, Identifiers } from "@mainsail/contracts";
|
|
12
12
|
let Bootstrapper = class Bootstrapper {
|
|
13
|
+
logger;
|
|
14
|
+
roundStateRepo;
|
|
15
|
+
storage;
|
|
13
16
|
async run() {
|
|
14
17
|
const proposals = await this.storage.getProposals();
|
|
15
18
|
this.logger.info(`Consensus Bootstrap - Proposals: ${proposals.length}`);
|
|
16
19
|
for (const proposal of proposals) {
|
|
17
|
-
const roundState = this.roundStateRepo.getRoundState(proposal.
|
|
20
|
+
const roundState = this.roundStateRepo.getRoundState(proposal.blockNumber, proposal.round);
|
|
18
21
|
roundState.addProposal(proposal);
|
|
19
22
|
}
|
|
20
23
|
const prevotes = await this.storage.getPrevotes();
|
|
21
24
|
this.logger.info(`Consensus Bootstrap - Prevotes: ${prevotes.length}`);
|
|
22
25
|
for (const prevote of prevotes) {
|
|
23
|
-
const roundState = this.roundStateRepo.getRoundState(prevote.
|
|
26
|
+
const roundState = this.roundStateRepo.getRoundState(prevote.blockNumber, prevote.round);
|
|
24
27
|
roundState.addPrevote(prevote);
|
|
25
28
|
}
|
|
26
29
|
const precommits = await this.storage.getPrecommits();
|
|
27
30
|
this.logger.info(`Consensus Bootstrap - Precommits: ${precommits.length}`);
|
|
28
31
|
for (const precommit of precommits) {
|
|
29
|
-
const roundState = this.roundStateRepo.getRoundState(precommit.
|
|
32
|
+
const roundState = this.roundStateRepo.getRoundState(precommit.blockNumber, precommit.round);
|
|
30
33
|
roundState.addPrecommit(precommit);
|
|
31
34
|
}
|
|
32
35
|
const state = (await this.storage.getState());
|
|
@@ -35,12 +38,12 @@ let Bootstrapper = class Bootstrapper {
|
|
|
35
38
|
}
|
|
36
39
|
if (state.validRound !== undefined) {
|
|
37
40
|
// TODO: ensure validRound points to an existing round?
|
|
38
|
-
const roundState = this.roundStateRepo.getRoundState(state.
|
|
41
|
+
const roundState = this.roundStateRepo.getRoundState(state.blockNumber, state.validRound);
|
|
39
42
|
state.validValue = roundState;
|
|
40
43
|
}
|
|
41
44
|
if (state.lockedRound !== undefined) {
|
|
42
45
|
// TODO: ensure lockedRound points to an existing round?
|
|
43
|
-
const roundState = this.roundStateRepo.getRoundState(state.
|
|
46
|
+
const roundState = this.roundStateRepo.getRoundState(state.blockNumber, state.lockedRound);
|
|
44
47
|
state.lockedValue = roundState;
|
|
45
48
|
}
|
|
46
49
|
return state;
|
|
@@ -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;
|
|
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;IAEP,MAAM,CAA2B;IAGjC,cAAc,CAA4C;IAG1D,OAAO,CAAsC;IAEvD,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,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3F,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,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACzF,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,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YAC7F,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAyD,CAAC;QACtG,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,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC1F,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,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YAC3F,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"}
|
|
@@ -2,9 +2,8 @@ import { Contracts } from "@mainsail/contracts";
|
|
|
2
2
|
export declare class CommitState implements Contracts.Processor.ProcessableUnit {
|
|
3
3
|
#private;
|
|
4
4
|
private readonly validatorSet;
|
|
5
|
-
get
|
|
5
|
+
get blockNumber(): number;
|
|
6
6
|
get round(): number;
|
|
7
|
-
get persist(): boolean;
|
|
8
7
|
get validators(): string[];
|
|
9
8
|
configure(commit: Contracts.Crypto.Commit): CommitState;
|
|
10
9
|
getBlock(): Contracts.Crypto.Block;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit-state.d.ts","sourceRoot":"","sources":["../source/commit-state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAe,MAAM,qBAAqB,CAAC;AAE7D,qBACa,WAAY,YAAW,SAAS,CAAC,SAAS,CAAC,eAAe;;IAEtE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAO/D,IAAW,
|
|
1
|
+
{"version":3,"file":"commit-state.d.ts","sourceRoot":"","sources":["../source/commit-state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAe,MAAM,qBAAqB,CAAC;AAE7D,qBACa,WAAY,YAAW,SAAS,CAAC,SAAS,CAAC,eAAe;;IAEtE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAO/D,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,UAAU,IAAI,MAAM,EAAE,CAEhC;IAEM,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW;IAYvD,QAAQ,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK;IAIlC,kBAAkB,CAAC,eAAe,EAAE,SAAS,CAAC,SAAS,CAAC,oBAAoB,GAAG,IAAI;IAInF,kBAAkB,IAAI,OAAO;IAI7B,kBAAkB,IAAI,SAAS,CAAC,SAAS,CAAC,oBAAoB;IAQ9D,iBAAiB,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;IAIvD,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI;IAI/D,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;CAG1D"}
|
|
@@ -7,77 +7,57 @@ 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
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
11
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
12
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
13
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
14
|
-
};
|
|
15
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
16
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
17
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
18
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
19
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
20
|
-
};
|
|
21
|
-
var _CommitState_commit, _CommitState_processorResult, _CommitState_validators, _CommitState_accountUpdates;
|
|
22
10
|
import { inject, injectable } from "@mainsail/container";
|
|
23
11
|
import { Contracts, Identifiers } from "@mainsail/contracts";
|
|
24
12
|
let CommitState = class CommitState {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return __classPrivateFieldGet(this, _CommitState_commit, "f").block.data.height;
|
|
13
|
+
validatorSet;
|
|
14
|
+
#commit;
|
|
15
|
+
#processorResult;
|
|
16
|
+
#validators = new Map();
|
|
17
|
+
#accountUpdates = [];
|
|
18
|
+
get blockNumber() {
|
|
19
|
+
return this.#commit.block.data.number;
|
|
33
20
|
}
|
|
34
21
|
get round() {
|
|
35
|
-
return
|
|
36
|
-
}
|
|
37
|
-
get persist() {
|
|
38
|
-
return false; // Block downloader will store block in database, to improve performance
|
|
22
|
+
return this.#commit.proof.round;
|
|
39
23
|
}
|
|
40
24
|
get validators() {
|
|
41
|
-
return [...
|
|
25
|
+
return [...this.#validators.keys()];
|
|
42
26
|
}
|
|
43
27
|
configure(commit) {
|
|
44
|
-
|
|
45
|
-
const validators = this.validatorSet.
|
|
28
|
+
this.#commit = commit;
|
|
29
|
+
const validators = this.validatorSet.getRoundValidators();
|
|
46
30
|
for (const validator of validators) {
|
|
47
31
|
const consensusPublicKey = validator.blsPublicKey;
|
|
48
|
-
|
|
32
|
+
this.#validators.set(consensusPublicKey, validator);
|
|
49
33
|
}
|
|
50
34
|
return this;
|
|
51
35
|
}
|
|
52
36
|
getBlock() {
|
|
53
|
-
return
|
|
37
|
+
return this.#commit.block;
|
|
54
38
|
}
|
|
55
39
|
setProcessorResult(processorResult) {
|
|
56
|
-
|
|
40
|
+
this.#processorResult = processorResult;
|
|
57
41
|
}
|
|
58
42
|
hasProcessorResult() {
|
|
59
|
-
return
|
|
43
|
+
return this.#processorResult !== undefined;
|
|
60
44
|
}
|
|
61
45
|
getProcessorResult() {
|
|
62
|
-
if (
|
|
46
|
+
if (this.#processorResult == undefined) {
|
|
63
47
|
throw new Error("Processor result is undefined.");
|
|
64
48
|
}
|
|
65
|
-
return
|
|
49
|
+
return this.#processorResult;
|
|
66
50
|
}
|
|
67
51
|
getAccountUpdates() {
|
|
68
|
-
return
|
|
52
|
+
return this.#accountUpdates;
|
|
69
53
|
}
|
|
70
54
|
setAccountUpdates(accounts) {
|
|
71
|
-
|
|
55
|
+
this.#accountUpdates = accounts;
|
|
72
56
|
}
|
|
73
57
|
async getCommit() {
|
|
74
|
-
return
|
|
58
|
+
return this.#commit;
|
|
75
59
|
}
|
|
76
60
|
};
|
|
77
|
-
_CommitState_commit = new WeakMap();
|
|
78
|
-
_CommitState_processorResult = new WeakMap();
|
|
79
|
-
_CommitState_validators = new WeakMap();
|
|
80
|
-
_CommitState_accountUpdates = new WeakMap();
|
|
81
61
|
__decorate([
|
|
82
62
|
inject(Identifiers.ValidatorSet.Service),
|
|
83
63
|
__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit-state.js","sourceRoot":"","sources":["../source/commit-state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commit-state.js","sourceRoot":"","sources":["../source/commit-state.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGtD,IAAM,WAAW,GAAjB,MAAM,WAAW;IAEN,YAAY,CAAkC;IAE/D,OAAO,CAA2B;IAClC,gBAAgB,CAA4C;IAC5D,WAAW,GAAG,IAAI,GAAG,EAA2C,CAAC;IACjE,eAAe,GAAuC,EAAE,CAAC;IAEzD,IAAW,WAAW;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IACvC,CAAC;IAED,IAAW,KAAK;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,IAAW,UAAU;QACpB,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAEM,SAAS,CAAC,MAA+B;QAC/C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAC1D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,kBAAkB,GAAG,SAAS,CAAC,YAAY,CAAC;YAClD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,QAAQ;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3B,CAAC;IAEM,kBAAkB,CAAC,eAAyD;QAClF,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IACzC,CAAC;IAEM,kBAAkB;QACxB,OAAO,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC;IAC5C,CAAC;IAEM,kBAAkB;QACxB,IAAI,IAAI,CAAC,gBAAgB,IAAI,SAAS,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC9B,CAAC;IAEM,iBAAiB;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IAEM,iBAAiB,CAAC,QAA4C;QACpE,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,SAAS;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;CACD,CAAA;AA9DiB;IADhB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC;;iDACsB;AAFnD,WAAW;IADvB,UAAU,EAAE;GACA,WAAW,CAgEvB"}
|
|
@@ -16,7 +16,7 @@ export declare class Consensus implements Contracts.Consensus.Service {
|
|
|
16
16
|
private readonly validatorSet;
|
|
17
17
|
private readonly eventDispatcher;
|
|
18
18
|
private readonly logger;
|
|
19
|
-
|
|
19
|
+
getBlockNumber(): number;
|
|
20
20
|
getRound(): number;
|
|
21
21
|
setRound(round: number): void;
|
|
22
22
|
getStep(): Contracts.Consensus.Step;
|
|
@@ -40,9 +40,9 @@ export declare class Consensus implements Contracts.Consensus.Service {
|
|
|
40
40
|
protected onMajorityPrecommitAny(roundState: Contracts.Consensus.RoundState): Promise<void>;
|
|
41
41
|
protected onMajorityPrecommit(roundState: Contracts.Processor.ProcessableUnit): Promise<void>;
|
|
42
42
|
protected onMinorityWithHigherRound(roundState: Contracts.Processor.ProcessableUnit): Promise<void>;
|
|
43
|
-
onTimeoutPropose(
|
|
44
|
-
onTimeoutPrevote(
|
|
45
|
-
onTimeoutPrecommit(
|
|
43
|
+
onTimeoutPropose(blockNumber: number, round: number): Promise<void>;
|
|
44
|
+
onTimeoutPrevote(blockNumber: number, round: number): Promise<void>;
|
|
45
|
+
onTimeoutPrecommit(blockNumber: number, round: number): Promise<void>;
|
|
46
46
|
propose(roundState: Contracts.Consensus.RoundState): Promise<void>;
|
|
47
47
|
prevote(value?: string): Promise<void>;
|
|
48
48
|
precommit(value?: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consensus.d.ts","sourceRoot":"","sources":["../source/consensus.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAuB,MAAM,qBAAqB,CAAC;AAIrE,qBACa,SAAU,YAAW,SAAS,CAAC,SAAS,CAAC,OAAO;;IAE5D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgC;IAGpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IAGjE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAGhE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;IAGhE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IAGpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyC;IAG3E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwC;IAGzE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA0C;IAG7E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiC;IAG3D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA2C;IAGhF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA4C;IAGjF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IAGpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAG/D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoC;IAGpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAmB3C,
|
|
1
|
+
{"version":3,"file":"consensus.d.ts","sourceRoot":"","sources":["../source/consensus.ts"],"names":[],"mappings":"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"}
|