@mainsail/consensus 0.0.1-evm.2 → 0.0.1-evm.20
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 +7 -7
- package/distribution/aggregator.js.map +1 -1
- package/distribution/bootstrapper.js +5 -5
- package/distribution/bootstrapper.js.map +1 -1
- package/distribution/commit-state.d.ts +3 -5
- package/distribution/commit-state.d.ts.map +1 -1
- package/distribution/commit-state.js +19 -32
- package/distribution/commit-state.js.map +1 -1
- package/distribution/consensus.d.ts +5 -5
- package/distribution/consensus.d.ts.map +1 -1
- package/distribution/consensus.js +88 -76
- 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 +4 -4
- package/distribution/processors/abstract-processor.d.ts.map +1 -1
- package/distribution/processors/abstract-processor.js +8 -8
- 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 +18 -32
- package/distribution/processors/commit-processor.js.map +1 -1
- package/distribution/processors/precommit-processor.js +3 -3
- package/distribution/processors/precommit-processor.js.map +1 -1
- package/distribution/processors/prevote-processor.js +3 -3
- 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 +13 -13
- 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 +5 -5
- package/distribution/round-state-repository.js.map +1 -1
- package/distribution/round-state.d.ts +5 -6
- package/distribution/round-state.d.ts.map +1 -1
- package/distribution/round-state.js +56 -65
- package/distribution/round-state.js.map +1 -1
- package/distribution/scheduler.d.ts +1 -1
- package/distribution/scheduler.d.ts.map +1 -1
- package/distribution/scheduler.js +3 -4
- package/distribution/scheduler.js.map +1 -1
- package/package.json +10 -8
|
@@ -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,16 @@ 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
|
-
async aggregate(majority,
|
|
15
|
-
if (!
|
|
14
|
+
async aggregate(majority, roundValidators) {
|
|
15
|
+
if (!isMajority(majority.size, roundValidators)) {
|
|
16
16
|
throw new Error("Failed to aggregate signatures, because the majority is not reached.");
|
|
17
17
|
}
|
|
18
18
|
const signatures = [];
|
|
19
|
-
const validators = Array.from({ length:
|
|
19
|
+
const validators = Array.from({ length: roundValidators }).fill(false);
|
|
20
20
|
for (const [key, { signature }] of majority) {
|
|
21
21
|
signatures.push(Buffer.from(signature, "hex"));
|
|
22
22
|
validators[key] = true;
|
|
@@ -28,11 +28,11 @@ let Aggregator = class Aggregator {
|
|
|
28
28
|
validators,
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
|
-
async verify(signature, data,
|
|
31
|
+
async verify(signature, data, roundValidators) {
|
|
32
32
|
const validatorPublicKeys = signature.validators
|
|
33
|
-
.map((v, index) => v ? Buffer.from(this.validatorSet.getValidator(index).
|
|
33
|
+
.map((v, index) => (v ? Buffer.from(this.validatorSet.getValidator(index).blsPublicKey, "hex") : undefined))
|
|
34
34
|
.filter((item) => !!item);
|
|
35
|
-
if (!
|
|
35
|
+
if (!isMajority(validatorPublicKeys.length, roundValidators)) {
|
|
36
36
|
return false;
|
|
37
37
|
}
|
|
38
38
|
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;IAOf,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,EAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAE3C,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"}
|
|
@@ -14,19 +14,19 @@ let Bootstrapper = class Bootstrapper {
|
|
|
14
14
|
const proposals = await this.storage.getProposals();
|
|
15
15
|
this.logger.info(`Consensus Bootstrap - Proposals: ${proposals.length}`);
|
|
16
16
|
for (const proposal of proposals) {
|
|
17
|
-
const roundState = this.roundStateRepo.getRoundState(proposal.
|
|
17
|
+
const roundState = this.roundStateRepo.getRoundState(proposal.blockNumber, proposal.round);
|
|
18
18
|
roundState.addProposal(proposal);
|
|
19
19
|
}
|
|
20
20
|
const prevotes = await this.storage.getPrevotes();
|
|
21
21
|
this.logger.info(`Consensus Bootstrap - Prevotes: ${prevotes.length}`);
|
|
22
22
|
for (const prevote of prevotes) {
|
|
23
|
-
const roundState = this.roundStateRepo.getRoundState(prevote.
|
|
23
|
+
const roundState = this.roundStateRepo.getRoundState(prevote.blockNumber, prevote.round);
|
|
24
24
|
roundState.addPrevote(prevote);
|
|
25
25
|
}
|
|
26
26
|
const precommits = await this.storage.getPrecommits();
|
|
27
27
|
this.logger.info(`Consensus Bootstrap - Precommits: ${precommits.length}`);
|
|
28
28
|
for (const precommit of precommits) {
|
|
29
|
-
const roundState = this.roundStateRepo.getRoundState(precommit.
|
|
29
|
+
const roundState = this.roundStateRepo.getRoundState(precommit.blockNumber, precommit.round);
|
|
30
30
|
roundState.addPrecommit(precommit);
|
|
31
31
|
}
|
|
32
32
|
const state = (await this.storage.getState());
|
|
@@ -35,12 +35,12 @@ let Bootstrapper = class Bootstrapper {
|
|
|
35
35
|
}
|
|
36
36
|
if (state.validRound !== undefined) {
|
|
37
37
|
// TODO: ensure validRound points to an existing round?
|
|
38
|
-
const roundState = this.roundStateRepo.getRoundState(state.
|
|
38
|
+
const roundState = this.roundStateRepo.getRoundState(state.blockNumber, state.validRound);
|
|
39
39
|
state.validValue = roundState;
|
|
40
40
|
}
|
|
41
41
|
if (state.lockedRound !== undefined) {
|
|
42
42
|
// TODO: ensure lockedRound points to an existing round?
|
|
43
|
-
const roundState = this.roundStateRepo.getRoundState(state.
|
|
43
|
+
const roundState = this.roundStateRepo.getRoundState(state.blockNumber, state.lockedRound);
|
|
44
44
|
state.lockedValue = roundState;
|
|
45
45
|
}
|
|
46
46
|
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;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,
|
|
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,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"}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { Contracts } from "@mainsail/contracts";
|
|
2
2
|
export declare class CommitState implements Contracts.Processor.ProcessableUnit {
|
|
3
3
|
#private;
|
|
4
|
-
private readonly stateService;
|
|
5
4
|
private readonly validatorSet;
|
|
6
|
-
|
|
7
|
-
get height(): number;
|
|
5
|
+
get blockNumber(): number;
|
|
8
6
|
get round(): number;
|
|
9
|
-
get persist(): boolean;
|
|
10
7
|
get validators(): string[];
|
|
11
|
-
get store(): Contracts.State.Store;
|
|
12
8
|
configure(commit: Contracts.Crypto.Commit): CommitState;
|
|
13
9
|
getBlock(): Contracts.Crypto.Block;
|
|
14
10
|
setProcessorResult(processorResult: Contracts.Processor.BlockProcessorResult): void;
|
|
15
11
|
hasProcessorResult(): boolean;
|
|
16
12
|
getProcessorResult(): Contracts.Processor.BlockProcessorResult;
|
|
13
|
+
getAccountUpdates(): Array<Contracts.Evm.AccountUpdate>;
|
|
14
|
+
setAccountUpdates(accounts: Array<Contracts.Evm.AccountUpdate>): void;
|
|
17
15
|
getCommit(): Promise<Contracts.Crypto.Commit>;
|
|
18
16
|
}
|
|
19
17
|
//# sourceMappingURL=commit-state.d.ts.map
|
|
@@ -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,
|
|
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,50 +7,41 @@ 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
|
+
};
|
|
10
15
|
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
11
16
|
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
12
17
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
13
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");
|
|
14
19
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
15
20
|
};
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
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");
|
|
19
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
20
|
-
};
|
|
21
|
-
var _CommitState_store, _CommitState_commit, _CommitState_processorResult, _CommitState_validators;
|
|
22
|
-
import { inject, injectable, postConstruct } from "@mainsail/container";
|
|
21
|
+
var _CommitState_commit, _CommitState_processorResult, _CommitState_validators, _CommitState_accountUpdates;
|
|
22
|
+
import { inject, injectable } from "@mainsail/container";
|
|
23
23
|
import { Contracts, Identifiers } from "@mainsail/contracts";
|
|
24
24
|
let CommitState = class CommitState {
|
|
25
25
|
constructor() {
|
|
26
|
-
_CommitState_store.set(this, void 0);
|
|
27
26
|
_CommitState_commit.set(this, void 0);
|
|
28
27
|
_CommitState_processorResult.set(this, void 0);
|
|
29
28
|
_CommitState_validators.set(this, new Map());
|
|
29
|
+
_CommitState_accountUpdates.set(this, []);
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
get height() {
|
|
35
|
-
return __classPrivateFieldGet(this, _CommitState_commit, "f").block.data.height;
|
|
31
|
+
get blockNumber() {
|
|
32
|
+
return __classPrivateFieldGet(this, _CommitState_commit, "f").block.data.number;
|
|
36
33
|
}
|
|
37
34
|
get round() {
|
|
38
35
|
return __classPrivateFieldGet(this, _CommitState_commit, "f").proof.round;
|
|
39
36
|
}
|
|
40
|
-
get persist() {
|
|
41
|
-
return false; // Block downloader will store block in database, to improve performance
|
|
42
|
-
}
|
|
43
37
|
get validators() {
|
|
44
38
|
return [...__classPrivateFieldGet(this, _CommitState_validators, "f").keys()];
|
|
45
39
|
}
|
|
46
|
-
get store() {
|
|
47
|
-
return __classPrivateFieldGet(this, _CommitState_store, "f");
|
|
48
|
-
}
|
|
49
40
|
configure(commit) {
|
|
50
41
|
__classPrivateFieldSet(this, _CommitState_commit, commit, "f");
|
|
51
|
-
const validators = this.validatorSet.
|
|
42
|
+
const validators = this.validatorSet.getRoundValidators();
|
|
52
43
|
for (const validator of validators) {
|
|
53
|
-
const consensusPublicKey = validator.
|
|
44
|
+
const consensusPublicKey = validator.blsPublicKey;
|
|
54
45
|
__classPrivateFieldGet(this, _CommitState_validators, "f").set(consensusPublicKey, validator);
|
|
55
46
|
}
|
|
56
47
|
return this;
|
|
@@ -70,28 +61,24 @@ let CommitState = class CommitState {
|
|
|
70
61
|
}
|
|
71
62
|
return __classPrivateFieldGet(this, _CommitState_processorResult, "f");
|
|
72
63
|
}
|
|
64
|
+
getAccountUpdates() {
|
|
65
|
+
return __classPrivateFieldGet(this, _CommitState_accountUpdates, "f");
|
|
66
|
+
}
|
|
67
|
+
setAccountUpdates(accounts) {
|
|
68
|
+
__classPrivateFieldSet(this, _CommitState_accountUpdates, accounts, "f");
|
|
69
|
+
}
|
|
73
70
|
async getCommit() {
|
|
74
71
|
return __classPrivateFieldGet(this, _CommitState_commit, "f");
|
|
75
72
|
}
|
|
76
73
|
};
|
|
77
|
-
_CommitState_store = new WeakMap();
|
|
78
74
|
_CommitState_commit = new WeakMap();
|
|
79
75
|
_CommitState_processorResult = new WeakMap();
|
|
80
76
|
_CommitState_validators = new WeakMap();
|
|
81
|
-
|
|
82
|
-
inject(Identifiers.State.Service),
|
|
83
|
-
__metadata("design:type", Object)
|
|
84
|
-
], CommitState.prototype, "stateService", void 0);
|
|
77
|
+
_CommitState_accountUpdates = new WeakMap();
|
|
85
78
|
__decorate([
|
|
86
79
|
inject(Identifiers.ValidatorSet.Service),
|
|
87
80
|
__metadata("design:type", Object)
|
|
88
81
|
], CommitState.prototype, "validatorSet", void 0);
|
|
89
|
-
__decorate([
|
|
90
|
-
postConstruct(),
|
|
91
|
-
__metadata("design:type", Function),
|
|
92
|
-
__metadata("design:paramtypes", []),
|
|
93
|
-
__metadata("design:returntype", void 0)
|
|
94
|
-
], CommitState.prototype, "initialize", null);
|
|
95
82
|
CommitState = __decorate([
|
|
96
83
|
injectable()
|
|
97
84
|
], CommitState);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit-state.js","sourceRoot":"","sources":["../source/commit-state.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,
|
|
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;IAAjB;QAIN,sCAAkC;QAClC,+CAA4D;QAC5D,kCAAc,IAAI,GAAG,EAA2C,EAAC;QACjE,sCAAsD,EAAE,EAAC;IAyD1D,CAAC;IAvDA,IAAW,WAAW;QACrB,OAAO,uBAAA,IAAI,2BAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IACvC,CAAC;IAED,IAAW,KAAK;QACf,OAAO,uBAAA,IAAI,2BAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,IAAW,UAAU;QACpB,OAAO,CAAC,GAAG,uBAAA,IAAI,+BAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAEM,SAAS,CAAC,MAA+B;QAC/C,uBAAA,IAAI,uBAAW,MAAM,MAAA,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,uBAAA,IAAI,+BAAY,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,QAAQ;QACd,OAAO,uBAAA,IAAI,2BAAQ,CAAC,KAAK,CAAC;IAC3B,CAAC;IAEM,kBAAkB,CAAC,eAAyD;QAClF,uBAAA,IAAI,gCAAoB,eAAe,MAAA,CAAC;IACzC,CAAC;IAEM,kBAAkB;QACxB,OAAO,uBAAA,IAAI,oCAAiB,KAAK,SAAS,CAAC;IAC5C,CAAC;IAEM,kBAAkB;QACxB,IAAI,uBAAA,IAAI,oCAAiB,IAAI,SAAS,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,uBAAA,IAAI,oCAAiB,CAAC;IAC9B,CAAC;IAEM,iBAAiB;QACvB,OAAO,uBAAA,IAAI,mCAAgB,CAAC;IAC7B,CAAC;IAEM,iBAAiB,CAAC,QAA4C;QACpE,uBAAA,IAAI,+BAAmB,QAAQ,MAAA,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,SAAS;QACrB,OAAO,uBAAA,IAAI,2BAAQ,CAAC;IACrB,CAAC;CACD,CAAA;;;;;AA9DiB;IADhB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC;;iDACsB;AAFnD,WAAW;IADvB,UAAU,EAAE;GACA,WAAW,CAgEvB"}
|
|
@@ -5,7 +5,7 @@ export declare class Consensus implements Contracts.Consensus.Service {
|
|
|
5
5
|
private readonly bootstrapper;
|
|
6
6
|
private readonly configuration;
|
|
7
7
|
private readonly processor;
|
|
8
|
-
private readonly
|
|
8
|
+
private readonly stateStore;
|
|
9
9
|
private readonly proposalProcessor;
|
|
10
10
|
private readonly prevoteProcessor;
|
|
11
11
|
private readonly precommitProcessor;
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"consensus.d.ts","sourceRoot":"","sources":["../source/consensus.ts"],"names":[],"mappings":"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"}
|