@mainsail/crypto-messages 0.0.1-alpha.1
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/LICENSE +623 -0
- package/distribution/deserializer.d.ts +11 -0
- package/distribution/deserializer.d.ts.map +1 -0
- package/distribution/deserializer.js +128 -0
- package/distribution/deserializer.js.map +1 -0
- package/distribution/factory.d.ts +20 -0
- package/distribution/factory.d.ts.map +1 -0
- package/distribution/factory.js +143 -0
- package/distribution/factory.js.map +1 -0
- package/distribution/index.d.ts +6 -0
- package/distribution/index.d.ts.map +1 -0
- package/distribution/index.js +38 -0
- package/distribution/index.js.map +1 -0
- package/distribution/keywords.d.ts +7 -0
- package/distribution/keywords.d.ts.map +1 -0
- package/distribution/keywords.js +84 -0
- package/distribution/keywords.js.map +1 -0
- package/distribution/precommit.d.ts +19 -0
- package/distribution/precommit.d.ts.map +1 -0
- package/distribution/precommit.js +83 -0
- package/distribution/precommit.js.map +1 -0
- package/distribution/prevote.d.ts +19 -0
- package/distribution/prevote.d.ts.map +1 -0
- package/distribution/prevote.js +83 -0
- package/distribution/prevote.js.map +1 -0
- package/distribution/proposal.d.ts +20 -0
- package/distribution/proposal.d.ts.map +1 -0
- package/distribution/proposal.js +82 -0
- package/distribution/proposal.js.map +1 -0
- package/distribution/schemas.d.ts +3 -0
- package/distribution/schemas.d.ts.map +1 -0
- package/distribution/schemas.js +70 -0
- package/distribution/schemas.js.map +1 -0
- package/distribution/serializer.d.ts +16 -0
- package/distribution/serializer.d.ts.map +1 -0
- package/distribution/serializer.js +215 -0
- package/distribution/serializer.js.map +1 -0
- package/package.json +42 -0
@@ -0,0 +1,128 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
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;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
exports.Deserializer = void 0;
|
13
|
+
/* eslint-disable sort-keys-fix/sort-keys-fix */
|
14
|
+
const container_1 = require("@mainsail/container");
|
15
|
+
const contracts_1 = require("@mainsail/contracts");
|
16
|
+
const utils_1 = require("@mainsail/utils");
|
17
|
+
let Deserializer = class Deserializer {
|
18
|
+
async deserializeProposal(serialized) {
|
19
|
+
const proposal = {};
|
20
|
+
const buffer = utils_1.ByteBuffer.fromBuffer(serialized);
|
21
|
+
await this.serializer.deserialize(buffer, proposal, {
|
22
|
+
schema: {
|
23
|
+
round: {
|
24
|
+
type: "uint32",
|
25
|
+
},
|
26
|
+
validRound: {
|
27
|
+
optional: true,
|
28
|
+
type: "uint32",
|
29
|
+
},
|
30
|
+
block: {
|
31
|
+
type: "hex",
|
32
|
+
},
|
33
|
+
validatorIndex: {
|
34
|
+
type: "uint8",
|
35
|
+
},
|
36
|
+
signature: {
|
37
|
+
type: "consensusSignature",
|
38
|
+
},
|
39
|
+
},
|
40
|
+
});
|
41
|
+
return proposal;
|
42
|
+
}
|
43
|
+
async deserializePrecommit(serialized) {
|
44
|
+
const precommit = {};
|
45
|
+
const buffer = utils_1.ByteBuffer.fromBuffer(serialized);
|
46
|
+
await this.serializer.deserialize(buffer, precommit, {
|
47
|
+
schema: {
|
48
|
+
type: {
|
49
|
+
type: "uint8",
|
50
|
+
},
|
51
|
+
height: {
|
52
|
+
type: "uint32",
|
53
|
+
},
|
54
|
+
round: {
|
55
|
+
type: "uint32",
|
56
|
+
},
|
57
|
+
blockId: {
|
58
|
+
type: "blockId",
|
59
|
+
optional: true,
|
60
|
+
},
|
61
|
+
validatorIndex: {
|
62
|
+
type: "uint8",
|
63
|
+
},
|
64
|
+
signature: {
|
65
|
+
type: "consensusSignature",
|
66
|
+
},
|
67
|
+
},
|
68
|
+
});
|
69
|
+
return precommit;
|
70
|
+
}
|
71
|
+
async deserializePrevote(serialized) {
|
72
|
+
const prevote = {};
|
73
|
+
const buffer = utils_1.ByteBuffer.fromBuffer(serialized);
|
74
|
+
await this.serializer.deserialize(buffer, prevote, {
|
75
|
+
schema: {
|
76
|
+
type: {
|
77
|
+
type: "uint8",
|
78
|
+
},
|
79
|
+
height: {
|
80
|
+
type: "uint32",
|
81
|
+
},
|
82
|
+
round: {
|
83
|
+
type: "uint32",
|
84
|
+
},
|
85
|
+
blockId: {
|
86
|
+
type: "blockId",
|
87
|
+
optional: true,
|
88
|
+
},
|
89
|
+
validatorIndex: {
|
90
|
+
type: "uint8",
|
91
|
+
},
|
92
|
+
signature: {
|
93
|
+
type: "consensusSignature",
|
94
|
+
},
|
95
|
+
},
|
96
|
+
});
|
97
|
+
return prevote;
|
98
|
+
}
|
99
|
+
async deserializeLockProof(serialized) {
|
100
|
+
const buffer = utils_1.ByteBuffer.fromBuffer(serialized);
|
101
|
+
const commit = {};
|
102
|
+
await this.serializer.deserialize(buffer, commit, {
|
103
|
+
length: this.messageSerializer.lockProofSize(),
|
104
|
+
schema: {
|
105
|
+
signature: {
|
106
|
+
type: "consensusSignature",
|
107
|
+
},
|
108
|
+
validators: {
|
109
|
+
type: "validatorSet",
|
110
|
+
},
|
111
|
+
},
|
112
|
+
});
|
113
|
+
return commit;
|
114
|
+
}
|
115
|
+
};
|
116
|
+
exports.Deserializer = Deserializer;
|
117
|
+
__decorate([
|
118
|
+
(0, container_1.inject)(contracts_1.Identifiers.Cryptography.Serializer),
|
119
|
+
__metadata("design:type", Object)
|
120
|
+
], Deserializer.prototype, "serializer", void 0);
|
121
|
+
__decorate([
|
122
|
+
(0, container_1.inject)(contracts_1.Identifiers.Cryptography.Message.Serializer),
|
123
|
+
__metadata("design:type", Object)
|
124
|
+
], Deserializer.prototype, "messageSerializer", void 0);
|
125
|
+
exports.Deserializer = Deserializer = __decorate([
|
126
|
+
(0, container_1.injectable)()
|
127
|
+
], Deserializer);
|
128
|
+
//# sourceMappingURL=deserializer.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"deserializer.js","sourceRoot":"","sources":["../source/deserializer.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import { Contracts } from "@mainsail/contracts";
|
3
|
+
export declare class MessageFactory implements Contracts.Crypto.MessageFactory {
|
4
|
+
#private;
|
5
|
+
private readonly serializer;
|
6
|
+
private readonly deserializer;
|
7
|
+
private readonly blockFactory;
|
8
|
+
private readonly validator;
|
9
|
+
private readonly workerPool;
|
10
|
+
makeProposal(data: Contracts.Crypto.MakeProposalData, keyPair: Contracts.Crypto.KeyPair): Promise<Contracts.Crypto.Proposal>;
|
11
|
+
makeProposalFromBytes(bytes: Buffer): Promise<Contracts.Crypto.Proposal>;
|
12
|
+
makeProposalFromData(data: Contracts.Crypto.ProposalData, serialized?: Buffer): Promise<Contracts.Crypto.Proposal>;
|
13
|
+
makePrevote(data: Contracts.Crypto.MakePrevoteData, keyPair: Contracts.Crypto.KeyPair): Promise<Contracts.Crypto.Prevote>;
|
14
|
+
makePrevoteFromBytes(bytes: Buffer): Promise<Contracts.Crypto.Precommit>;
|
15
|
+
makePrevoteFromData(data: Contracts.Crypto.PrevoteData, serialized?: Buffer): Promise<Contracts.Crypto.Prevote>;
|
16
|
+
makePrecommit(data: Contracts.Crypto.MakePrecommitData, keyPair: Contracts.Crypto.KeyPair): Promise<Contracts.Crypto.Precommit>;
|
17
|
+
makePrecommitFromBytes(bytes: Buffer): Promise<Contracts.Crypto.Precommit>;
|
18
|
+
makePrecommitFromData(data: Contracts.Crypto.PrecommitData, serialized?: Buffer): Promise<Contracts.Crypto.Precommit>;
|
19
|
+
}
|
20
|
+
//# sourceMappingURL=factory.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../source/factory.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAA2B,MAAM,qBAAqB,CAAC;AAQzE,qBACa,cAAe,YAAW,SAAS,CAAC,MAAM,CAAC,cAAc;;IAErE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsC;IAGjE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwC;IAGrE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAG9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IAGxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IAEtC,YAAY,CACxB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,EACvC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,GAC/B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;IASxB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;IAKxE,oBAAoB,CAChC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY,EACnC,UAAU,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;IAWxB,WAAW,CACvB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,eAAe,EACtC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,GAC/B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;IAcvB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;IAKxE,mBAAmB,CAC/B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,EAClC,UAAU,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;IAUvB,aAAa,CACzB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,iBAAiB,EACxC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,GAC/B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;IAezB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;IAK1E,qBAAqB,CACjC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,aAAa,EACpC,UAAU,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;CAsCtC"}
|
@@ -0,0 +1,143 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
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;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
|
+
};
|
11
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
12
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
13
|
+
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");
|
14
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
15
|
+
};
|
16
|
+
var _MessageFactory_instances, _MessageFactory_makeProposedBlockFromBytes, _MessageFactory_applySchema;
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
18
|
+
exports.MessageFactory = void 0;
|
19
|
+
const container_1 = require("@mainsail/container");
|
20
|
+
const contracts_1 = require("@mainsail/contracts");
|
21
|
+
const kernel_1 = require("@mainsail/kernel");
|
22
|
+
const utils_1 = require("@mainsail/utils");
|
23
|
+
const precommit_1 = require("./precommit");
|
24
|
+
const prevote_1 = require("./prevote");
|
25
|
+
const proposal_1 = require("./proposal");
|
26
|
+
let MessageFactory = class MessageFactory {
|
27
|
+
constructor() {
|
28
|
+
_MessageFactory_instances.add(this);
|
29
|
+
}
|
30
|
+
async makeProposal(data, keyPair) {
|
31
|
+
const worker = await this.workerPool.getWorker();
|
32
|
+
const bytes = await this.serializer.serializeProposal(data, { includeSignature: false });
|
33
|
+
const signature = await worker.consensusSignature("sign", bytes, Buffer.from(keyPair.privateKey, "hex"));
|
34
|
+
const serialized = Buffer.concat([bytes, Buffer.from(signature, "hex")]);
|
35
|
+
return this.makeProposalFromBytes(serialized);
|
36
|
+
}
|
37
|
+
async makeProposalFromBytes(bytes) {
|
38
|
+
const data = await this.deserializer.deserializeProposal(bytes);
|
39
|
+
return this.makeProposalFromData(data, bytes);
|
40
|
+
}
|
41
|
+
async makeProposalFromData(data, serialized) {
|
42
|
+
__classPrivateFieldGet(this, _MessageFactory_instances, "m", _MessageFactory_applySchema).call(this, "proposal", data);
|
43
|
+
const block = await __classPrivateFieldGet(this, _MessageFactory_instances, "m", _MessageFactory_makeProposedBlockFromBytes).call(this, Buffer.from(data.block.serialized, "hex"));
|
44
|
+
if (!serialized) {
|
45
|
+
serialized = await this.serializer.serializeProposal(data, { includeSignature: true });
|
46
|
+
}
|
47
|
+
return new proposal_1.Proposal({ ...data, block, serialized });
|
48
|
+
}
|
49
|
+
async makePrevote(data, keyPair) {
|
50
|
+
const worker = await this.workerPool.getWorker();
|
51
|
+
const bytes = await this.serializer.serializePrevoteForSignature({
|
52
|
+
blockId: data.blockId,
|
53
|
+
height: data.height,
|
54
|
+
round: data.round,
|
55
|
+
type: data.type,
|
56
|
+
});
|
57
|
+
const signature = await worker.consensusSignature("sign", bytes, Buffer.from(keyPair.privateKey, "hex"));
|
58
|
+
const serialized = await this.serializer.serializePrevote({ ...data, signature });
|
59
|
+
return this.makePrevoteFromBytes(serialized);
|
60
|
+
}
|
61
|
+
async makePrevoteFromBytes(bytes) {
|
62
|
+
const data = await this.deserializer.deserializePrevote(bytes);
|
63
|
+
return this.makePrevoteFromData(data, bytes);
|
64
|
+
}
|
65
|
+
async makePrevoteFromData(data, serialized) {
|
66
|
+
__classPrivateFieldGet(this, _MessageFactory_instances, "m", _MessageFactory_applySchema).call(this, "prevote", data);
|
67
|
+
if (!serialized) {
|
68
|
+
serialized = await this.serializer.serializePrevote(data);
|
69
|
+
}
|
70
|
+
return new prevote_1.Prevote({ ...data, serialized });
|
71
|
+
}
|
72
|
+
async makePrecommit(data, keyPair) {
|
73
|
+
const worker = await this.workerPool.getWorker();
|
74
|
+
const bytes = await this.serializer.serializePrecommitForSignature({
|
75
|
+
blockId: data.blockId,
|
76
|
+
height: data.height,
|
77
|
+
round: data.round,
|
78
|
+
type: data.type,
|
79
|
+
});
|
80
|
+
const signature = await worker.consensusSignature("sign", bytes, Buffer.from(keyPair.privateKey, "hex"));
|
81
|
+
const serialized = await this.serializer.serializePrecommit({ ...data, signature });
|
82
|
+
return this.makePrecommitFromBytes(serialized);
|
83
|
+
}
|
84
|
+
async makePrecommitFromBytes(bytes) {
|
85
|
+
const data = await this.deserializer.deserializePrecommit(bytes);
|
86
|
+
return this.makePrecommitFromData(data, bytes);
|
87
|
+
}
|
88
|
+
async makePrecommitFromData(data, serialized) {
|
89
|
+
__classPrivateFieldGet(this, _MessageFactory_instances, "m", _MessageFactory_applySchema).call(this, "precommit", data);
|
90
|
+
if (!serialized) {
|
91
|
+
serialized = await this.serializer.serializePrecommit(data);
|
92
|
+
}
|
93
|
+
return new precommit_1.Precommit({ ...data, serialized });
|
94
|
+
}
|
95
|
+
};
|
96
|
+
exports.MessageFactory = MessageFactory;
|
97
|
+
_MessageFactory_instances = new WeakSet();
|
98
|
+
_MessageFactory_makeProposedBlockFromBytes = async function _MessageFactory_makeProposedBlockFromBytes(bytes) {
|
99
|
+
const buffer = utils_1.ByteBuffer.fromBuffer(bytes);
|
100
|
+
const lockProofLength = buffer.readUint8();
|
101
|
+
let lockProof;
|
102
|
+
if (lockProofLength > 0) {
|
103
|
+
const lockProofBuffer = buffer.readBytes(lockProofLength);
|
104
|
+
lockProof = await this.deserializer.deserializeLockProof(lockProofBuffer);
|
105
|
+
}
|
106
|
+
const block = await this.blockFactory.fromBytes(buffer.getRemainder());
|
107
|
+
return {
|
108
|
+
block,
|
109
|
+
lockProof,
|
110
|
+
serialized: bytes.toString("hex"),
|
111
|
+
};
|
112
|
+
};
|
113
|
+
_MessageFactory_applySchema = function _MessageFactory_applySchema(schema, data) {
|
114
|
+
const result = this.validator.validate(schema, data);
|
115
|
+
if (!result.error) {
|
116
|
+
return result.value;
|
117
|
+
}
|
118
|
+
throw new contracts_1.Exceptions.MessageSchemaError(schema, result.error);
|
119
|
+
};
|
120
|
+
__decorate([
|
121
|
+
(0, container_1.inject)(contracts_1.Identifiers.Cryptography.Message.Serializer),
|
122
|
+
__metadata("design:type", Object)
|
123
|
+
], MessageFactory.prototype, "serializer", void 0);
|
124
|
+
__decorate([
|
125
|
+
(0, container_1.inject)(contracts_1.Identifiers.Cryptography.Message.Deserializer),
|
126
|
+
__metadata("design:type", Object)
|
127
|
+
], MessageFactory.prototype, "deserializer", void 0);
|
128
|
+
__decorate([
|
129
|
+
(0, container_1.inject)(contracts_1.Identifiers.Cryptography.Block.Factory),
|
130
|
+
__metadata("design:type", Object)
|
131
|
+
], MessageFactory.prototype, "blockFactory", void 0);
|
132
|
+
__decorate([
|
133
|
+
(0, container_1.inject)(contracts_1.Identifiers.Cryptography.Validator),
|
134
|
+
__metadata("design:type", Object)
|
135
|
+
], MessageFactory.prototype, "validator", void 0);
|
136
|
+
__decorate([
|
137
|
+
(0, container_1.inject)(contracts_1.Identifiers.CryptoWorker.WorkerPool),
|
138
|
+
__metadata("design:type", Object)
|
139
|
+
], MessageFactory.prototype, "workerPool", void 0);
|
140
|
+
exports.MessageFactory = MessageFactory = __decorate([
|
141
|
+
(0, container_1.injectable)()
|
142
|
+
], MessageFactory);
|
143
|
+
//# sourceMappingURL=factory.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../source/factory.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAQ7C,qBAAa,eAAgB,SAAQ,SAAS,CAAC,eAAe;;IAChD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAiBtC"}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
4
|
+
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");
|
5
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
6
|
+
};
|
7
|
+
var _ServiceProvider_instances, _ServiceProvider_registerValidation;
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
9
|
+
exports.ServiceProvider = void 0;
|
10
|
+
const contracts_1 = require("@mainsail/contracts");
|
11
|
+
const kernel_1 = require("@mainsail/kernel");
|
12
|
+
const deserializer_1 = require("./deserializer");
|
13
|
+
const factory_1 = require("./factory");
|
14
|
+
const keywords_1 = require("./keywords");
|
15
|
+
const schemas_1 = require("./schemas");
|
16
|
+
const serializer_1 = require("./serializer");
|
17
|
+
class ServiceProvider extends kernel_1.Providers.ServiceProvider {
|
18
|
+
constructor() {
|
19
|
+
super(...arguments);
|
20
|
+
_ServiceProvider_instances.add(this);
|
21
|
+
}
|
22
|
+
async register() {
|
23
|
+
this.app.bind(contracts_1.Identifiers.Cryptography.Message.Serializer).to(serializer_1.Serializer).inSingletonScope();
|
24
|
+
this.app.bind(contracts_1.Identifiers.Cryptography.Message.Deserializer).to(deserializer_1.Deserializer).inSingletonScope();
|
25
|
+
this.app.bind(contracts_1.Identifiers.Cryptography.Message.Factory).to(factory_1.MessageFactory).inSingletonScope();
|
26
|
+
__classPrivateFieldGet(this, _ServiceProvider_instances, "m", _ServiceProvider_registerValidation).call(this);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
exports.ServiceProvider = ServiceProvider;
|
30
|
+
_ServiceProvider_instances = new WeakSet(), _ServiceProvider_registerValidation = function _ServiceProvider_registerValidation() {
|
31
|
+
for (const keyword of Object.values((0, keywords_1.makeKeywords)(this.app.get(contracts_1.Identifiers.Cryptography.Configuration)))) {
|
32
|
+
this.app.get(contracts_1.Identifiers.Cryptography.Validator).addKeyword(keyword);
|
33
|
+
}
|
34
|
+
for (const schema of Object.values(schemas_1.schemas)) {
|
35
|
+
this.app.get(contracts_1.Identifiers.Cryptography.Validator).addSchema(schema);
|
36
|
+
}
|
37
|
+
};
|
38
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,mDAA6D;AAC7D,6CAA6C;AAE7C,iDAA8C;AAC9C,uCAA2C;AAC3C,yCAA0C;AAC1C,uCAAoC;AACpC,6CAA0C;AAE1C,MAAa,eAAgB,SAAQ,kBAAS,CAAC,eAAe;IAA9D;;;IAkBA,CAAC;IAjBO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAW,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,uBAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC7F,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAW,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,2BAAY,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACjG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAW,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,wBAAc,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAE9F,uBAAA,IAAI,uEAAoB,MAAxB,IAAI,CAAsB,CAAC;IAC5B,CAAC;CAWD;AAlBD,0CAkBC;;IARC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAA,uBAAY,EAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,uBAAW,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACzG,IAAI,CAAC,GAAG,CAAC,GAAG,CAA6B,uBAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClG,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAO,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,GAAG,CAA6B,uBAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChG,CAAC;AACF,CAAC"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { Contracts } from "@mainsail/contracts";
|
2
|
+
import { FuncKeywordDefinition } from "ajv";
|
3
|
+
export declare const makeKeywords: (configuration: Contracts.Crypto.Configuration) => {
|
4
|
+
isValidatorIndex: FuncKeywordDefinition;
|
5
|
+
limitToActiveValidators: FuncKeywordDefinition;
|
6
|
+
};
|
7
|
+
//# sourceMappingURL=keywords.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"keywords.d.ts","sourceRoot":"","sources":["../source/keywords.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAmB,qBAAqB,EAAE,MAAM,KAAK,CAAC;AAE7D,eAAO,MAAM,YAAY,kBAAmB,UAAU,MAAM,CAAC,aAAa;;;CAyDzE,CAAC"}
|
@@ -0,0 +1,84 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.makeKeywords = void 0;
|
4
|
+
const makeKeywords = (configuration) => {
|
5
|
+
const limitToActiveValidators = {
|
6
|
+
// TODO: Check type (same as bignum)
|
7
|
+
// @ts-ignore
|
8
|
+
compile(schema) {
|
9
|
+
return (data, parentSchema) => {
|
10
|
+
if (!Array.isArray(data)) {
|
11
|
+
return false;
|
12
|
+
}
|
13
|
+
const height = parseHeight(parentSchema);
|
14
|
+
const { activeValidators } = configuration.getMilestone(height ?? 1);
|
15
|
+
const minimum = schema.minimum !== undefined ? schema.minimum : activeValidators;
|
16
|
+
if (data.length < minimum || data.length > activeValidators) {
|
17
|
+
return false;
|
18
|
+
}
|
19
|
+
return true;
|
20
|
+
};
|
21
|
+
},
|
22
|
+
errors: false,
|
23
|
+
keyword: "limitToActiveValidators",
|
24
|
+
metaSchema: {
|
25
|
+
properties: {
|
26
|
+
minimum: { type: "integer" },
|
27
|
+
},
|
28
|
+
type: "object",
|
29
|
+
},
|
30
|
+
};
|
31
|
+
const isValidatorIndex = {
|
32
|
+
// TODO: Check type (same as bignum)
|
33
|
+
// @ts-ignore
|
34
|
+
compile() {
|
35
|
+
return (data, parentSchema) => {
|
36
|
+
const height = parseHeight(parentSchema);
|
37
|
+
const { activeValidators } = configuration.getMilestone(height ?? 1);
|
38
|
+
if (!Number.isInteger(data)) {
|
39
|
+
return false;
|
40
|
+
}
|
41
|
+
return data >= 0 && data < activeValidators;
|
42
|
+
};
|
43
|
+
},
|
44
|
+
errors: false,
|
45
|
+
keyword: "isValidatorIndex",
|
46
|
+
metaSchema: {
|
47
|
+
type: "object",
|
48
|
+
},
|
49
|
+
};
|
50
|
+
return {
|
51
|
+
isValidatorIndex,
|
52
|
+
limitToActiveValidators,
|
53
|
+
};
|
54
|
+
};
|
55
|
+
exports.makeKeywords = makeKeywords;
|
56
|
+
const parseHeight = (parentSchema) => {
|
57
|
+
if (!parentSchema || !parentSchema.parentData) {
|
58
|
+
return undefined;
|
59
|
+
}
|
60
|
+
if (parentSchema.parentData.height) {
|
61
|
+
// prevotes / precommits
|
62
|
+
return parentSchema.parentData.height;
|
63
|
+
}
|
64
|
+
if (!parentSchema.parentData.block) {
|
65
|
+
return undefined;
|
66
|
+
}
|
67
|
+
// Proposals contain the block only in serialized form (hex).
|
68
|
+
// We can extract the height at a fixed offset here, without needing to deserialize the whole block.
|
69
|
+
// See packages/crypto-block/source/serializer.ts#serializeProposed for reference.
|
70
|
+
const serialized = parentSchema.parentData.block.serialized;
|
71
|
+
if (!serialized) {
|
72
|
+
return undefined;
|
73
|
+
}
|
74
|
+
if (serialized.length < 30) {
|
75
|
+
return undefined;
|
76
|
+
}
|
77
|
+
const lockProofSize = 2 + Number.parseInt(serialized.slice(0, 2), 16) * 2;
|
78
|
+
// version: 1 byte (2 hex)
|
79
|
+
// timestamp: 6 bytes (12 hex)
|
80
|
+
// height: 4 byte (8 hex)
|
81
|
+
const offset = lockProofSize + 2 + 12;
|
82
|
+
return Buffer.from(serialized.slice(offset, offset + 8), "hex").readUInt32LE();
|
83
|
+
};
|
84
|
+
//# sourceMappingURL=keywords.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"keywords.js","sourceRoot":"","sources":["../source/keywords.ts"],"names":[],"mappings":";;;AAGO,MAAM,YAAY,GAAG,CAAC,aAA6C,EAAE,EAAE;IAC7E,MAAM,uBAAuB,GAA0B;QACtD,oCAAoC;QACpC,aAAa;QACb,OAAO,CAAC,MAAM;YACb,OAAO,CAAC,IAAI,EAAE,YAA6B,EAAE,EAAE;gBAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1B,OAAO,KAAK,CAAC;gBACd,CAAC;gBAED,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;gBACzC,MAAM,EAAE,gBAAgB,EAAE,GAAG,aAAa,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;gBACrE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAEjF,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;oBAC7D,OAAO,KAAK,CAAC;gBACd,CAAC;gBAED,OAAO,IAAI,CAAC;YACb,CAAC,CAAC;QACH,CAAC;QACD,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,yBAAyB;QAClC,UAAU,EAAE;YACX,UAAU,EAAE;gBACX,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aAC5B;YACD,IAAI,EAAE,QAAQ;SACd;KACD,CAAC;IAEF,MAAM,gBAAgB,GAA0B;QAC/C,oCAAoC;QACpC,aAAa;QACb,OAAO;YACN,OAAO,CAAC,IAAI,EAAE,YAA6B,EAAE,EAAE;gBAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;gBACzC,MAAM,EAAE,gBAAgB,EAAE,GAAG,aAAa,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;gBAErE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7B,OAAO,KAAK,CAAC;gBACd,CAAC;gBAED,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,gBAAgB,CAAC;YAC7C,CAAC,CAAC;QACH,CAAC;QACD,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,kBAAkB;QAC3B,UAAU,EAAE;YACX,IAAI,EAAE,QAAQ;SACd;KACD,CAAC;IAEF,OAAO;QACN,gBAAgB;QAChB,uBAAuB;KACvB,CAAC;AACH,CAAC,CAAC;AAzDW,QAAA,YAAY,gBAyDvB;AAEF,MAAM,WAAW,GAAG,CAAC,YAAY,EAAsB,EAAE;IACxD,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACpC,wBAAwB;QACxB,OAAO,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,6DAA6D;IAC7D,oGAAoG;IAEpG,kFAAkF;IAElF,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;IAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1E,0BAA0B;IAC1B,8BAA8B;IAC9B,yBAAyB;IACzB,MAAM,MAAM,GAAG,aAAa,GAAG,CAAC,GAAG,EAAE,CAAC;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC;AAChF,CAAC,CAAC"}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import { Contracts } from "@mainsail/contracts";
|
3
|
+
export declare class Precommit implements Contracts.Crypto.Precommit {
|
4
|
+
#private;
|
5
|
+
constructor({ height, round, blockId, validatorIndex, signature, serialized, }: Contracts.Crypto.PrecommitData & {
|
6
|
+
serialized: Buffer;
|
7
|
+
});
|
8
|
+
get type(): Contracts.Crypto.MessageType;
|
9
|
+
get height(): number;
|
10
|
+
get round(): number;
|
11
|
+
get blockId(): string | undefined;
|
12
|
+
get validatorIndex(): number;
|
13
|
+
get signature(): string;
|
14
|
+
get serialized(): Buffer;
|
15
|
+
toString(): string;
|
16
|
+
toSignatureData(): Contracts.Crypto.SignaturePrecommitData;
|
17
|
+
toData(): Contracts.Crypto.PrecommitData;
|
18
|
+
}
|
19
|
+
//# sourceMappingURL=precommit.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"precommit.d.ts","sourceRoot":"","sources":["../source/precommit.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,qBAAa,SAAU,YAAW,SAAS,CAAC,MAAM,CAAC,SAAS;;gBAQ/C,EACX,MAAM,EACN,KAAK,EACL,OAAO,EACP,cAAc,EACd,SAAS,EACT,UAAU,GACV,EAAE,SAAS,CAAC,MAAM,CAAC,aAAa,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;IAS1D,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,CAEvC;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAEhC;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,QAAQ,IAAI,MAAM;IAUlB,eAAe,IAAI,SAAS,CAAC,MAAM,CAAC,sBAAsB;IAS1D,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,aAAa;CAUxC"}
|
@@ -0,0 +1,83 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
5
|
+
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");
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
7
|
+
};
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
10
|
+
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");
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
12
|
+
};
|
13
|
+
var _Precommit_height, _Precommit_round, _Precommit_blockId, _Precommit_validatorIndex, _Precommit_signature, _Precommit_serialized;
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
exports.Precommit = void 0;
|
16
|
+
const contracts_1 = require("@mainsail/contracts");
|
17
|
+
class Precommit {
|
18
|
+
constructor({ height, round, blockId, validatorIndex, signature, serialized, }) {
|
19
|
+
_Precommit_height.set(this, void 0);
|
20
|
+
_Precommit_round.set(this, void 0);
|
21
|
+
_Precommit_blockId.set(this, void 0);
|
22
|
+
_Precommit_validatorIndex.set(this, void 0);
|
23
|
+
_Precommit_signature.set(this, void 0);
|
24
|
+
_Precommit_serialized.set(this, void 0);
|
25
|
+
__classPrivateFieldSet(this, _Precommit_height, height, "f");
|
26
|
+
__classPrivateFieldSet(this, _Precommit_round, round, "f");
|
27
|
+
__classPrivateFieldSet(this, _Precommit_blockId, blockId, "f");
|
28
|
+
__classPrivateFieldSet(this, _Precommit_validatorIndex, validatorIndex, "f");
|
29
|
+
__classPrivateFieldSet(this, _Precommit_signature, signature, "f");
|
30
|
+
__classPrivateFieldSet(this, _Precommit_serialized, serialized, "f");
|
31
|
+
}
|
32
|
+
get type() {
|
33
|
+
return contracts_1.Contracts.Crypto.MessageType.Precommit;
|
34
|
+
}
|
35
|
+
get height() {
|
36
|
+
return __classPrivateFieldGet(this, _Precommit_height, "f");
|
37
|
+
}
|
38
|
+
get round() {
|
39
|
+
return __classPrivateFieldGet(this, _Precommit_round, "f");
|
40
|
+
}
|
41
|
+
get blockId() {
|
42
|
+
return __classPrivateFieldGet(this, _Precommit_blockId, "f");
|
43
|
+
}
|
44
|
+
get validatorIndex() {
|
45
|
+
return __classPrivateFieldGet(this, _Precommit_validatorIndex, "f");
|
46
|
+
}
|
47
|
+
get signature() {
|
48
|
+
return __classPrivateFieldGet(this, _Precommit_signature, "f");
|
49
|
+
}
|
50
|
+
get serialized() {
|
51
|
+
return __classPrivateFieldGet(this, _Precommit_serialized, "f");
|
52
|
+
}
|
53
|
+
toString() {
|
54
|
+
return JSON.stringify({
|
55
|
+
blockId: __classPrivateFieldGet(this, _Precommit_blockId, "f"),
|
56
|
+
height: __classPrivateFieldGet(this, _Precommit_height, "f"),
|
57
|
+
round: __classPrivateFieldGet(this, _Precommit_round, "f"),
|
58
|
+
signature: __classPrivateFieldGet(this, _Precommit_signature, "f"),
|
59
|
+
validatorIndex: __classPrivateFieldGet(this, _Precommit_validatorIndex, "f"),
|
60
|
+
});
|
61
|
+
}
|
62
|
+
toSignatureData() {
|
63
|
+
return {
|
64
|
+
blockId: __classPrivateFieldGet(this, _Precommit_blockId, "f"),
|
65
|
+
height: __classPrivateFieldGet(this, _Precommit_height, "f"),
|
66
|
+
round: __classPrivateFieldGet(this, _Precommit_round, "f"),
|
67
|
+
type: this.type,
|
68
|
+
};
|
69
|
+
}
|
70
|
+
toData() {
|
71
|
+
return {
|
72
|
+
blockId: __classPrivateFieldGet(this, _Precommit_blockId, "f"),
|
73
|
+
height: __classPrivateFieldGet(this, _Precommit_height, "f"),
|
74
|
+
round: __classPrivateFieldGet(this, _Precommit_round, "f"),
|
75
|
+
signature: __classPrivateFieldGet(this, _Precommit_signature, "f"),
|
76
|
+
type: this.type,
|
77
|
+
validatorIndex: __classPrivateFieldGet(this, _Precommit_validatorIndex, "f"),
|
78
|
+
};
|
79
|
+
}
|
80
|
+
}
|
81
|
+
exports.Precommit = Precommit;
|
82
|
+
_Precommit_height = new WeakMap(), _Precommit_round = new WeakMap(), _Precommit_blockId = new WeakMap(), _Precommit_validatorIndex = new WeakMap(), _Precommit_signature = new WeakMap(), _Precommit_serialized = new WeakMap();
|
83
|
+
//# sourceMappingURL=precommit.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"precommit.js","sourceRoot":"","sources":["../source/precommit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mDAAgD;AAEhD,MAAa,SAAS;IAQrB,YAAY,EACX,MAAM,EACN,KAAK,EACL,OAAO,EACP,cAAc,EACd,SAAS,EACT,UAAU,GAC+C;QAd1D,oCAAgB;QAChB,mCAAe;QACf,qCAA6B;QAC7B,4CAAwB;QACxB,uCAAmB;QACnB,wCAAoB;QAUnB,uBAAA,IAAI,qBAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,oBAAU,KAAK,MAAA,CAAC;QACpB,uBAAA,IAAI,sBAAY,OAAO,MAAA,CAAC;QACxB,uBAAA,IAAI,6BAAmB,cAAc,MAAA,CAAC;QACtC,uBAAA,IAAI,wBAAc,SAAS,MAAA,CAAC;QAC5B,uBAAA,IAAI,yBAAe,UAAU,MAAA,CAAC;IAC/B,CAAC;IAED,IAAI,IAAI;QACP,OAAO,qBAAS,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED,IAAI,MAAM;QACT,OAAO,uBAAA,IAAI,yBAAQ,CAAC;IACrB,CAAC;IAED,IAAI,KAAK;QACR,OAAO,uBAAA,IAAI,wBAAO,CAAC;IACpB,CAAC;IAED,IAAI,OAAO;QACV,OAAO,uBAAA,IAAI,0BAAS,CAAC;IACtB,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,uBAAA,IAAI,iCAAgB,CAAC;IAC7B,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,uBAAA,IAAI,4BAAW,CAAC;IACxB,CAAC;IAED,IAAI,UAAU;QACb,OAAO,uBAAA,IAAI,6BAAY,CAAC;IACzB,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,SAAS,CAAC;YACrB,OAAO,EAAE,uBAAA,IAAI,0BAAS;YACtB,MAAM,EAAE,uBAAA,IAAI,yBAAQ;YACpB,KAAK,EAAE,uBAAA,IAAI,wBAAO;YAClB,SAAS,EAAE,uBAAA,IAAI,4BAAW;YAC1B,cAAc,EAAE,uBAAA,IAAI,iCAAgB;SACpC,CAAC,CAAC;IACJ,CAAC;IAED,eAAe;QACd,OAAO;YACN,OAAO,EAAE,uBAAA,IAAI,0BAAS;YACtB,MAAM,EAAE,uBAAA,IAAI,yBAAQ;YACpB,KAAK,EAAE,uBAAA,IAAI,wBAAO;YAClB,IAAI,EAAE,IAAI,CAAC,IAAI;SACf,CAAC;IACH,CAAC;IAED,MAAM;QACL,OAAO;YACN,OAAO,EAAE,uBAAA,IAAI,0BAAS;YACtB,MAAM,EAAE,uBAAA,IAAI,yBAAQ;YACpB,KAAK,EAAE,uBAAA,IAAI,wBAAO;YAClB,SAAS,EAAE,uBAAA,IAAI,4BAAW;YAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,cAAc,EAAE,uBAAA,IAAI,iCAAgB;SACpC,CAAC;IACH,CAAC;CACD;AAjFD,8BAiFC"}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import { Contracts } from "@mainsail/contracts";
|
3
|
+
export declare class Prevote implements Contracts.Crypto.Prevote {
|
4
|
+
#private;
|
5
|
+
constructor({ height, round, blockId, validatorIndex, signature, serialized, }: Contracts.Crypto.PrevoteData & {
|
6
|
+
serialized: Buffer;
|
7
|
+
});
|
8
|
+
get type(): Contracts.Crypto.MessageType;
|
9
|
+
get height(): number;
|
10
|
+
get round(): number;
|
11
|
+
get blockId(): string | undefined;
|
12
|
+
get validatorIndex(): number;
|
13
|
+
get signature(): string;
|
14
|
+
get serialized(): Buffer;
|
15
|
+
toString(): string;
|
16
|
+
toSignatureData(): Contracts.Crypto.SignaturePrevoteData;
|
17
|
+
toData(): Contracts.Crypto.PrevoteData;
|
18
|
+
}
|
19
|
+
//# sourceMappingURL=prevote.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"prevote.d.ts","sourceRoot":"","sources":["../source/prevote.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,qBAAa,OAAQ,YAAW,SAAS,CAAC,MAAM,CAAC,OAAO;;gBAQ3C,EACX,MAAM,EACN,KAAK,EACL,OAAO,EACP,cAAc,EACd,SAAS,EACT,UAAU,GACV,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;IASxD,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,CAEvC;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAEhC;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,QAAQ,IAAI,MAAM;IAUlB,eAAe,IAAI,SAAS,CAAC,MAAM,CAAC,oBAAoB;IASxD,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW;CAUtC"}
|