@brightchain/brightchain-lib 0.29.17 → 0.29.21
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/package.json +1 -1
- package/src/browser.d.ts +12 -0
- package/src/browser.d.ts.map +1 -1
- package/src/browser.js +16 -1
- package/src/browser.js.map +1 -1
- package/src/lib/errors/ledgerError.d.ts +7 -1
- package/src/lib/errors/ledgerError.d.ts.map +1 -1
- package/src/lib/errors/ledgerError.js +6 -0
- package/src/lib/errors/ledgerError.js.map +1 -1
- package/src/lib/interfaces/ledger/authorizedSigner.d.ts +17 -0
- package/src/lib/interfaces/ledger/authorizedSigner.d.ts.map +1 -0
- package/src/lib/interfaces/ledger/authorizedSigner.js +11 -0
- package/src/lib/interfaces/ledger/authorizedSigner.js.map +1 -0
- package/src/lib/interfaces/ledger/governanceAction.d.ts +46 -0
- package/src/lib/interfaces/ledger/governanceAction.d.ts.map +1 -0
- package/src/lib/interfaces/ledger/governanceAction.js +22 -0
- package/src/lib/interfaces/ledger/governanceAction.js.map +1 -0
- package/src/lib/interfaces/ledger/governancePayload.d.ts +19 -0
- package/src/lib/interfaces/ledger/governancePayload.d.ts.map +1 -0
- package/src/lib/interfaces/ledger/governancePayload.js +11 -0
- package/src/lib/interfaces/ledger/governancePayload.js.map +1 -0
- package/src/lib/interfaces/ledger/index.d.ts +8 -0
- package/src/lib/interfaces/ledger/index.d.ts.map +1 -1
- package/src/lib/interfaces/ledger/index.js +10 -0
- package/src/lib/interfaces/ledger/index.js.map +1 -1
- package/src/lib/interfaces/ledger/quorumPolicy.d.ts +19 -0
- package/src/lib/interfaces/ledger/quorumPolicy.d.ts.map +1 -0
- package/src/lib/interfaces/ledger/quorumPolicy.js +18 -0
- package/src/lib/interfaces/ledger/quorumPolicy.js.map +1 -0
- package/src/lib/interfaces/ledger/signerRole.d.ts +14 -0
- package/src/lib/interfaces/ledger/signerRole.d.ts.map +1 -0
- package/src/lib/interfaces/ledger/signerRole.js +18 -0
- package/src/lib/interfaces/ledger/signerRole.js.map +1 -0
- package/src/lib/interfaces/ledger/signerStatus.d.ts +15 -0
- package/src/lib/interfaces/ledger/signerStatus.d.ts.map +1 -0
- package/src/lib/interfaces/ledger/signerStatus.js +19 -0
- package/src/lib/interfaces/ledger/signerStatus.js.map +1 -0
- package/src/lib/interfaces/ledger/validationResult.d.ts +1 -1
- package/src/lib/interfaces/ledger/validationResult.d.ts.map +1 -1
- package/src/lib/ledger/authorizedSignerSet.d.ts +47 -0
- package/src/lib/ledger/authorizedSignerSet.d.ts.map +1 -0
- package/src/lib/ledger/authorizedSignerSet.js +287 -0
- package/src/lib/ledger/authorizedSignerSet.js.map +1 -0
- package/src/lib/ledger/browserSignatureVerifier.d.ts +18 -0
- package/src/lib/ledger/browserSignatureVerifier.d.ts.map +1 -0
- package/src/lib/ledger/browserSignatureVerifier.js +35 -0
- package/src/lib/ledger/browserSignatureVerifier.js.map +1 -0
- package/src/lib/ledger/governancePayloadSerializer.d.ts +70 -0
- package/src/lib/ledger/governancePayloadSerializer.d.ts.map +1 -0
- package/src/lib/ledger/governancePayloadSerializer.js +499 -0
- package/src/lib/ledger/governancePayloadSerializer.js.map +1 -0
- package/src/lib/ledger/ledger.d.ts +58 -8
- package/src/lib/ledger/ledger.d.ts.map +1 -1
- package/src/lib/ledger/ledger.js +217 -45
- package/src/lib/ledger/ledger.js.map +1 -1
- package/src/lib/ledger/ledgerChainValidator.d.ts +30 -4
- package/src/lib/ledger/ledgerChainValidator.d.ts.map +1 -1
- package/src/lib/ledger/ledgerChainValidator.js +155 -4
- package/src/lib/ledger/ledgerChainValidator.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/ledger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/ledger.ts"],"names":[],"mappings":"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"}
|
package/src/lib/ledger/ledger.js
CHANGED
|
@@ -14,8 +14,14 @@
|
|
|
14
14
|
* subclass that allows a caller-specified checksum to differ from the
|
|
15
15
|
* content hash.
|
|
16
16
|
*
|
|
17
|
+
* Governance support: the Ledger enforces role-based access control via an
|
|
18
|
+
* AuthorizedSignerSet. The genesis entry must be a governance genesis payload
|
|
19
|
+
* containing the initial signer set and quorum policy. Subsequent governance
|
|
20
|
+
* entries require admin role and quorum satisfaction.
|
|
21
|
+
*
|
|
17
22
|
* @see Design: Block Chain Ledger — Ledger
|
|
18
|
-
* @see Requirements 5.1–5.6, 6.1–6.6, 7.1–7.5, 10.1–10.4, 11.2–11.4
|
|
23
|
+
* @see Requirements 5.1–5.6, 6.1–6.6, 7.1–7.5, 10.1–10.4, 11.2–11.4,
|
|
24
|
+
* 12.2–12.8, 13.1–13.9, 14.1–14.7, 15.1–15.5, 17.6–17.9, 18.5–18.7
|
|
19
25
|
*/
|
|
20
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
27
|
exports.Ledger = void 0;
|
|
@@ -26,6 +32,8 @@ const ledgerError_1 = require("../errors/ledgerError");
|
|
|
26
32
|
const checksum_service_1 = require("../services/checksum.service");
|
|
27
33
|
const checksum_1 = require("../types/checksum");
|
|
28
34
|
const xorUtils_1 = require("../utils/xorUtils");
|
|
35
|
+
const authorizedSignerSet_1 = require("./authorizedSignerSet");
|
|
36
|
+
const governancePayloadSerializer_1 = require("./governancePayloadSerializer");
|
|
29
37
|
/** Magic bytes identifying a ledger metadata block: "LMET" in ASCII. */
|
|
30
38
|
const METADATA_MAGIC = 0x4c4d4554;
|
|
31
39
|
/** Current metadata format version. */
|
|
@@ -63,22 +71,28 @@ class LedgerMetadataBlock extends rawData_1.RawDataBlock {
|
|
|
63
71
|
* Maintains an in-memory index (sequenceNumber → block Checksum) for O(1)
|
|
64
72
|
* lookups and persists a metadata block after each append for cold-start
|
|
65
73
|
* reconstruction via `Ledger.load()`.
|
|
74
|
+
*
|
|
75
|
+
* Enforces role-based access control via an AuthorizedSignerSet when
|
|
76
|
+
* governance is enabled (i.e., when a GovernancePayloadSerializer is provided).
|
|
66
77
|
*/
|
|
67
78
|
class Ledger {
|
|
68
79
|
store;
|
|
69
80
|
blockSize;
|
|
70
81
|
serializer;
|
|
71
82
|
ledgerId;
|
|
83
|
+
governanceSerializer;
|
|
72
84
|
index = new Map();
|
|
73
85
|
checksumService = new checksum_service_1.ChecksumService();
|
|
74
86
|
_length = 0;
|
|
75
87
|
_head = null;
|
|
76
88
|
_headEntryHash = null;
|
|
77
|
-
|
|
89
|
+
_authorizedSignerSet = null;
|
|
90
|
+
constructor(store, blockSize, serializer, ledgerId, governanceSerializer) {
|
|
78
91
|
this.store = store;
|
|
79
92
|
this.blockSize = blockSize;
|
|
80
93
|
this.serializer = serializer;
|
|
81
94
|
this.ledgerId = ledgerId;
|
|
95
|
+
this.governanceSerializer = governanceSerializer;
|
|
82
96
|
}
|
|
83
97
|
// ── Public getters ────────────────────────────────────────────────
|
|
84
98
|
/** Current chain length. */
|
|
@@ -89,51 +103,104 @@ class Ledger {
|
|
|
89
103
|
get head() {
|
|
90
104
|
return this._head;
|
|
91
105
|
}
|
|
106
|
+
/** Current quorum policy, or undefined if governance not initialized. */
|
|
107
|
+
get quorumPolicy() {
|
|
108
|
+
return this._authorizedSignerSet?.quorumPolicy;
|
|
109
|
+
}
|
|
92
110
|
// ── Append ────────────────────────────────────────────────────────
|
|
93
111
|
/**
|
|
94
112
|
* Append a new entry to the ledger.
|
|
95
113
|
* Returns the Checksum of the stored block.
|
|
114
|
+
*
|
|
115
|
+
* If governance is enabled:
|
|
116
|
+
* - Genesis entry (sequenceNumber 0) must be a governance genesis payload.
|
|
117
|
+
* - Subsequent entries require the signer to be authorized (active admin or writer).
|
|
96
118
|
*/
|
|
97
119
|
async append(payload, signer) {
|
|
98
120
|
const sequenceNumber = this._length;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const partial = {
|
|
103
|
-
sequenceNumber,
|
|
104
|
-
timestamp,
|
|
105
|
-
previousEntryHash,
|
|
106
|
-
signerPublicKey: signer.publicKey,
|
|
107
|
-
payload,
|
|
108
|
-
};
|
|
109
|
-
const entryHash = this.serializer.computeEntryHash(partial);
|
|
110
|
-
// 2. Sign the entryHash
|
|
111
|
-
const signature = signer.sign(entryHash.toUint8Array());
|
|
112
|
-
// 3. Build full entry
|
|
113
|
-
const entry = { ...partial, entryHash, signature };
|
|
114
|
-
// 4. Serialize and pad
|
|
115
|
-
const serialized = this.serializer.serialize(entry);
|
|
116
|
-
const padded = (0, xorUtils_1.padToBlockSize)(serialized, this.blockSize);
|
|
117
|
-
// 5. Create RawDataBlock and store
|
|
118
|
-
const block = new rawData_1.RawDataBlock(this.blockSize, padded, undefined, undefined, undefined, undefined, true, true, this.checksumService);
|
|
119
|
-
const blockChecksum = block.idChecksum;
|
|
120
|
-
// Req 5.5: On BlockStore failure, do not update chain head or index.
|
|
121
|
-
// If setData throws, we propagate the error before updating state.
|
|
122
|
-
await this.store.setData(block);
|
|
123
|
-
// 6. Update in-memory state (only after successful store)
|
|
124
|
-
this.index.set(sequenceNumber, blockChecksum);
|
|
125
|
-
this._length = sequenceNumber + 1;
|
|
126
|
-
this._head = blockChecksum;
|
|
127
|
-
this._headEntryHash = entryHash;
|
|
128
|
-
// 7. Persist metadata block
|
|
129
|
-
try {
|
|
130
|
-
await this.persistMetadata();
|
|
121
|
+
// Governance: handle genesis entry
|
|
122
|
+
if (sequenceNumber === 0 && this.governanceSerializer) {
|
|
123
|
+
return this.appendGenesisEntry(payload, signer);
|
|
131
124
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
125
|
+
// Governance: check authorization for non-genesis entries
|
|
126
|
+
if (this._authorizedSignerSet) {
|
|
127
|
+
if (!this._authorizedSignerSet.canAppend(signer.publicKey)) {
|
|
128
|
+
throw new ledgerError_1.LedgerError(ledgerError_1.LedgerErrorType.UnauthorizedSigner, 'Signer is not authorized to append entries');
|
|
129
|
+
}
|
|
135
130
|
}
|
|
136
|
-
return
|
|
131
|
+
return this.appendInternal(payload, signer);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Append a governance entry. Requires admin role and quorum satisfaction.
|
|
135
|
+
*
|
|
136
|
+
* @param actions - Governance actions to apply
|
|
137
|
+
* @param primarySigner - The primary signer (must be active admin)
|
|
138
|
+
* @param cosigners - Additional signers for quorum (each provides their own signature over the actions)
|
|
139
|
+
*/
|
|
140
|
+
async appendGovernance(actions, primarySigner, cosigners) {
|
|
141
|
+
if (!this.governanceSerializer) {
|
|
142
|
+
throw new ledgerError_1.LedgerError(ledgerError_1.LedgerErrorType.UnauthorizedGovernance, 'Governance is not enabled on this ledger');
|
|
143
|
+
}
|
|
144
|
+
if (!this._authorizedSignerSet) {
|
|
145
|
+
throw new ledgerError_1.LedgerError(ledgerError_1.LedgerErrorType.UnauthorizedGovernance, 'Authorized signer set not initialized (no genesis entry)');
|
|
146
|
+
}
|
|
147
|
+
// Verify primary signer is active admin
|
|
148
|
+
if (!this._authorizedSignerSet.isActiveAdmin(primarySigner.publicKey)) {
|
|
149
|
+
throw new ledgerError_1.LedgerError(ledgerError_1.LedgerErrorType.UnauthorizedGovernance, 'Primary signer is not an active admin');
|
|
150
|
+
}
|
|
151
|
+
// Validate actions speculatively (clone to check safety constraints)
|
|
152
|
+
const speculative = this._authorizedSignerSet.clone();
|
|
153
|
+
for (const action of actions) {
|
|
154
|
+
speculative.applyAction(action); // throws on safety violation
|
|
155
|
+
}
|
|
156
|
+
// Serialize actions for signing
|
|
157
|
+
const actionsForSigning = this.governanceSerializer.serializeActionsForSigning(actions);
|
|
158
|
+
// Collect cosignatures
|
|
159
|
+
const cosignatures = [];
|
|
160
|
+
// Primary signer signs the actions
|
|
161
|
+
const primarySignature = primarySigner.sign(actionsForSigning);
|
|
162
|
+
cosignatures.push({
|
|
163
|
+
signerPublicKey: primarySigner.publicKey,
|
|
164
|
+
signature: primarySignature,
|
|
165
|
+
});
|
|
166
|
+
// Add additional cosigner signatures
|
|
167
|
+
if (cosigners) {
|
|
168
|
+
for (const cosigner of cosigners) {
|
|
169
|
+
if (!this._authorizedSignerSet.isActiveAdmin(cosigner.signer.publicKey)) {
|
|
170
|
+
throw new ledgerError_1.LedgerError(ledgerError_1.LedgerErrorType.UnauthorizedGovernance, 'Cosigner is not an active admin');
|
|
171
|
+
}
|
|
172
|
+
cosignatures.push({
|
|
173
|
+
signerPublicKey: cosigner.signer.publicKey,
|
|
174
|
+
signature: cosigner.signature,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Verify quorum
|
|
179
|
+
const signerKeys = cosignatures.map((c) => c.signerPublicKey);
|
|
180
|
+
if (!this._authorizedSignerSet.verifyQuorum(signerKeys)) {
|
|
181
|
+
throw new ledgerError_1.LedgerError(ledgerError_1.LedgerErrorType.QuorumNotMet, `Quorum not met: have ${signerKeys.length} signatures, need ${this._authorizedSignerSet.requiredSignatures}`);
|
|
182
|
+
}
|
|
183
|
+
// Build governance payload
|
|
184
|
+
const governancePayload = this.governanceSerializer.serialize({
|
|
185
|
+
actions,
|
|
186
|
+
cosignatures,
|
|
187
|
+
});
|
|
188
|
+
// Append as regular entry
|
|
189
|
+
const checksum = await this.appendInternal(governancePayload, primarySigner);
|
|
190
|
+
// Apply governance actions to the live signer set (after successful persistence)
|
|
191
|
+
for (const action of actions) {
|
|
192
|
+
this._authorizedSignerSet.applyAction(action);
|
|
193
|
+
}
|
|
194
|
+
return checksum;
|
|
195
|
+
}
|
|
196
|
+
// ── Signer info ───────────────────────────────────────────────────
|
|
197
|
+
/** Get info about a specific signer. */
|
|
198
|
+
getSignerInfo(publicKey) {
|
|
199
|
+
return this._authorizedSignerSet?.getSigner(publicKey);
|
|
200
|
+
}
|
|
201
|
+
/** Get the full current authorized signer set. */
|
|
202
|
+
getAuthorizedSigners() {
|
|
203
|
+
return this._authorizedSignerSet?.getAllSigners() ?? [];
|
|
137
204
|
}
|
|
138
205
|
// ── Read operations ───────────────────────────────────────────────
|
|
139
206
|
/**
|
|
@@ -175,6 +242,81 @@ class Ledger {
|
|
|
175
242
|
}
|
|
176
243
|
return this.getEntry(this._length - 1);
|
|
177
244
|
}
|
|
245
|
+
// ── Private: genesis entry handling ───────────────────────────────
|
|
246
|
+
/**
|
|
247
|
+
* Handle the genesis entry for a governance-enabled ledger.
|
|
248
|
+
* The payload must be a governance genesis payload containing the
|
|
249
|
+
* initial signer set and quorum policy.
|
|
250
|
+
*/
|
|
251
|
+
async appendGenesisEntry(payload, signer) {
|
|
252
|
+
if (!this.governanceSerializer) {
|
|
253
|
+
throw new ledgerError_1.LedgerError(ledgerError_1.LedgerErrorType.UnauthorizedGovernance, 'Governance serializer not available');
|
|
254
|
+
}
|
|
255
|
+
// Verify payload is a governance genesis payload
|
|
256
|
+
if (!governancePayloadSerializer_1.GovernancePayloadSerializer.isGovernancePayload(payload)) {
|
|
257
|
+
throw new ledgerError_1.LedgerError(ledgerError_1.LedgerErrorType.UnauthorizedGovernance, 'Genesis entry must be a governance genesis payload (0x01 prefix)');
|
|
258
|
+
}
|
|
259
|
+
// Deserialize to extract genesis data
|
|
260
|
+
const parsed = this.governanceSerializer.deserialize(payload);
|
|
261
|
+
if (!parsed.genesis) {
|
|
262
|
+
throw new ledgerError_1.LedgerError(ledgerError_1.LedgerErrorType.UnauthorizedGovernance, 'Genesis entry must use genesis subtype (0x00)');
|
|
263
|
+
}
|
|
264
|
+
// Initialize the authorized signer set
|
|
265
|
+
this._authorizedSignerSet = new authorizedSignerSet_1.AuthorizedSignerSet(parsed.genesis.signers, parsed.genesis.quorumPolicy);
|
|
266
|
+
// Verify the signer is in the initial set and authorized
|
|
267
|
+
if (!this._authorizedSignerSet.canAppend(signer.publicKey)) {
|
|
268
|
+
// Roll back
|
|
269
|
+
this._authorizedSignerSet = null;
|
|
270
|
+
throw new ledgerError_1.LedgerError(ledgerError_1.LedgerErrorType.UnauthorizedSigner, 'Genesis signer is not authorized in the initial signer set');
|
|
271
|
+
}
|
|
272
|
+
// Append the genesis entry
|
|
273
|
+
return this.appendInternal(payload, signer);
|
|
274
|
+
}
|
|
275
|
+
// ── Private: core append logic ────────────────────────────────────
|
|
276
|
+
/**
|
|
277
|
+
* Internal append logic shared by regular and governance appends.
|
|
278
|
+
* Does NOT check authorization — callers must do that first.
|
|
279
|
+
*/
|
|
280
|
+
async appendInternal(payload, signer) {
|
|
281
|
+
const sequenceNumber = this._length;
|
|
282
|
+
const previousEntryHash = this._headEntryHash;
|
|
283
|
+
const timestamp = new Date();
|
|
284
|
+
// 1. Compute entryHash
|
|
285
|
+
const partial = {
|
|
286
|
+
sequenceNumber,
|
|
287
|
+
timestamp,
|
|
288
|
+
previousEntryHash,
|
|
289
|
+
signerPublicKey: signer.publicKey,
|
|
290
|
+
payload,
|
|
291
|
+
};
|
|
292
|
+
const entryHash = this.serializer.computeEntryHash(partial);
|
|
293
|
+
// 2. Sign the entryHash
|
|
294
|
+
const signature = signer.sign(entryHash.toUint8Array());
|
|
295
|
+
// 3. Build full entry
|
|
296
|
+
const entry = { ...partial, entryHash, signature };
|
|
297
|
+
// 4. Serialize and pad
|
|
298
|
+
const serialized = this.serializer.serialize(entry);
|
|
299
|
+
const padded = (0, xorUtils_1.padToBlockSize)(serialized, this.blockSize);
|
|
300
|
+
// 5. Create RawDataBlock and store
|
|
301
|
+
const block = new rawData_1.RawDataBlock(this.blockSize, padded, undefined, undefined, undefined, undefined, true, true, this.checksumService);
|
|
302
|
+
const blockChecksum = block.idChecksum;
|
|
303
|
+
// Req 5.5: On BlockStore failure, do not update chain head or index.
|
|
304
|
+
await this.store.setData(block);
|
|
305
|
+
// 6. Update in-memory state (only after successful store)
|
|
306
|
+
this.index.set(sequenceNumber, blockChecksum);
|
|
307
|
+
this._length = sequenceNumber + 1;
|
|
308
|
+
this._head = blockChecksum;
|
|
309
|
+
this._headEntryHash = entryHash;
|
|
310
|
+
// 7. Persist metadata block
|
|
311
|
+
try {
|
|
312
|
+
await this.persistMetadata();
|
|
313
|
+
}
|
|
314
|
+
catch {
|
|
315
|
+
// Metadata persistence failure is non-fatal for the append itself;
|
|
316
|
+
// the entry is already stored.
|
|
317
|
+
}
|
|
318
|
+
return blockChecksum;
|
|
319
|
+
}
|
|
178
320
|
// ── Metadata persistence ──────────────────────────────────────────
|
|
179
321
|
/**
|
|
180
322
|
* Compute the deterministic storage key for this ledger's metadata block.
|
|
@@ -246,10 +388,6 @@ class Ledger {
|
|
|
246
388
|
}
|
|
247
389
|
/**
|
|
248
390
|
* Persist the metadata block to the store under a deterministic key.
|
|
249
|
-
*
|
|
250
|
-
* Uses a LedgerMetadataBlock (validation-exempt RawDataBlock subclass)
|
|
251
|
-
* so the block can be stored at the deterministic checksum derived from
|
|
252
|
-
* the ledgerId, even though the content hash differs.
|
|
253
391
|
*/
|
|
254
392
|
async persistMetadata() {
|
|
255
393
|
const metadataBytes = this.serializeMetadata();
|
|
@@ -274,10 +412,11 @@ class Ledger {
|
|
|
274
412
|
* 3. If not found, return empty ledger
|
|
275
413
|
* 4. Parse metadata to get head checksum, length, and index
|
|
276
414
|
* 5. Restore headEntryHash by reading the head entry
|
|
277
|
-
* 6.
|
|
415
|
+
* 6. Replay governance entries to reconstruct AuthorizedSignerSet
|
|
416
|
+
* 7. Return populated ledger
|
|
278
417
|
*/
|
|
279
|
-
static async load(store, blockSize, serializer, ledgerId) {
|
|
280
|
-
const ledger = new Ledger(store, blockSize, serializer, ledgerId);
|
|
418
|
+
static async load(store, blockSize, serializer, ledgerId, governanceSerializer) {
|
|
419
|
+
const ledger = new Ledger(store, blockSize, serializer, ledgerId, governanceSerializer);
|
|
281
420
|
const metadataKey = ledger.computeMetadataKey();
|
|
282
421
|
const hasMetadata = await store.has(metadataKey);
|
|
283
422
|
if (!hasMetadata) {
|
|
@@ -311,8 +450,41 @@ class Ledger {
|
|
|
311
450
|
catch {
|
|
312
451
|
// Degraded state — reads still work via index
|
|
313
452
|
}
|
|
453
|
+
// Replay governance entries to reconstruct AuthorizedSignerSet
|
|
454
|
+
if (governanceSerializer) {
|
|
455
|
+
await ledger.replayGovernance();
|
|
456
|
+
}
|
|
314
457
|
return ledger;
|
|
315
458
|
}
|
|
459
|
+
/**
|
|
460
|
+
* Replay all entries from genesis to head to reconstruct the
|
|
461
|
+
* AuthorizedSignerSet from governance entries.
|
|
462
|
+
*/
|
|
463
|
+
async replayGovernance() {
|
|
464
|
+
if (!this.governanceSerializer || this._length === 0) {
|
|
465
|
+
return;
|
|
466
|
+
}
|
|
467
|
+
for (let i = 0; i < this._length; i++) {
|
|
468
|
+
const entry = await this.getEntry(i);
|
|
469
|
+
if (i === 0) {
|
|
470
|
+
// Genesis entry — must be governance genesis
|
|
471
|
+
if (governancePayloadSerializer_1.GovernancePayloadSerializer.isGovernancePayload(entry.payload)) {
|
|
472
|
+
const parsed = this.governanceSerializer.deserialize(entry.payload);
|
|
473
|
+
if (parsed.genesis) {
|
|
474
|
+
this._authorizedSignerSet = new authorizedSignerSet_1.AuthorizedSignerSet(parsed.genesis.signers, parsed.genesis.quorumPolicy);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
else if (this._authorizedSignerSet &&
|
|
479
|
+
governancePayloadSerializer_1.GovernancePayloadSerializer.isGovernancePayload(entry.payload)) {
|
|
480
|
+
// Governance amendment entry — apply actions
|
|
481
|
+
const parsed = this.governanceSerializer.deserialize(entry.payload);
|
|
482
|
+
for (const action of parsed.actions) {
|
|
483
|
+
this._authorizedSignerSet.applyAction(action);
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
316
488
|
/**
|
|
317
489
|
* Parse a metadata block's binary content.
|
|
318
490
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/ledger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview LedgerChainValidator — validates chain integrity by walking
|
|
3
|
-
* entries and checking hashes, signatures, and
|
|
3
|
+
* entries and checking hashes, signatures, authorization, and governance
|
|
4
|
+
* constraints.
|
|
4
5
|
*
|
|
5
6
|
* Validation does not throw — it returns an IValidationResult with error
|
|
6
7
|
* descriptors. All errors are collected (validation does not stop at the
|
|
7
8
|
* first error).
|
|
8
9
|
*
|
|
9
10
|
* @see Design: Block Chain Ledger — LedgerChainValidator
|
|
10
|
-
* @see Requirements 3.2, 3.3, 4.3–4.6, 8.1–8.4
|
|
11
|
+
* @see Requirements 3.2, 3.3, 4.3–4.6, 8.1–8.4, 12.6–12.7, 13.6–13.7,
|
|
12
|
+
* 14.5, 15.6, 16.1–16.6
|
|
11
13
|
*/
|
|
12
14
|
import { ILedgerEntry } from '../interfaces/ledger/ledgerEntry';
|
|
13
15
|
import { ILedgerSignatureVerifier } from '../interfaces/ledger/ledgerSignatureVerifier';
|
|
14
16
|
import { IValidationResult } from '../interfaces/ledger/validationResult';
|
|
17
|
+
import { AuthorizedSignerSet } from './authorizedSignerSet';
|
|
18
|
+
import { GovernancePayloadSerializer } from './governancePayloadSerializer';
|
|
15
19
|
import { LedgerEntrySerializer } from './ledgerEntrySerializer';
|
|
16
20
|
/**
|
|
17
21
|
* Validates ledger chain integrity by walking entries and verifying:
|
|
@@ -20,16 +24,25 @@ import { LedgerEntrySerializer } from './ledgerEntrySerializer';
|
|
|
20
24
|
* - Hash-chain links (previousEntryHash)
|
|
21
25
|
* - EntryHash recomputation
|
|
22
26
|
* - Signature verification
|
|
27
|
+
* - Authorization (signer is in the authorized set)
|
|
28
|
+
* - Governance constraints (admin role, quorum, safety)
|
|
23
29
|
*/
|
|
24
30
|
export declare class LedgerChainValidator {
|
|
25
31
|
private readonly serializer;
|
|
26
32
|
private readonly signatureVerifier;
|
|
27
|
-
|
|
33
|
+
private readonly governanceSerializer?;
|
|
34
|
+
constructor(serializer: LedgerEntrySerializer, signatureVerifier: ILedgerSignatureVerifier, governanceSerializer?: GovernancePayloadSerializer | undefined);
|
|
28
35
|
/**
|
|
29
36
|
* Validate the entire chain from genesis to head.
|
|
30
37
|
*
|
|
31
38
|
* Expects entries ordered by sequenceNumber starting from 0.
|
|
32
39
|
* Returns { isValid: true, entriesChecked: 0, errors: [] } for an empty chain.
|
|
40
|
+
*
|
|
41
|
+
* When a governanceSerializer is provided, also validates:
|
|
42
|
+
* - Genesis entry initializes the signer set
|
|
43
|
+
* - Each entry's signer is authorized at that chain position
|
|
44
|
+
* - Governance entries have admin role and satisfy quorum
|
|
45
|
+
* - Governance actions pass safety constraints
|
|
33
46
|
*/
|
|
34
47
|
validateAll(entries: ILedgerEntry[]): IValidationResult;
|
|
35
48
|
/**
|
|
@@ -38,8 +51,21 @@ export declare class LedgerChainValidator {
|
|
|
38
51
|
* @param entries - The sub-range of entries to validate (ordered by sequenceNumber).
|
|
39
52
|
* @param predecessor - The entry immediately before the sub-range, or null if
|
|
40
53
|
* the sub-range starts at genesis.
|
|
54
|
+
* @param signerSetAtPredecessor - Optional AuthorizedSignerSet state at the predecessor
|
|
55
|
+
* for governance validation of the sub-range.
|
|
56
|
+
*/
|
|
57
|
+
validateRange(entries: ILedgerEntry[], predecessor: ILedgerEntry | null, signerSetAtPredecessor?: AuthorizedSignerSet): IValidationResult;
|
|
58
|
+
/**
|
|
59
|
+
* Initialize the AuthorizedSignerSet from a genesis entry.
|
|
60
|
+
* Returns the signer set, or null if the genesis is not a valid governance payload.
|
|
61
|
+
*/
|
|
62
|
+
private initSignerSetFromGenesis;
|
|
63
|
+
/**
|
|
64
|
+
* Validate authorization and governance constraints for a non-genesis entry.
|
|
65
|
+
* If the entry is a governance payload, also validates admin role, quorum,
|
|
66
|
+
* and applies actions to the signer set.
|
|
41
67
|
*/
|
|
42
|
-
|
|
68
|
+
private validateEntryAuthorization;
|
|
43
69
|
/**
|
|
44
70
|
* Recompute the entryHash for the given entry and compare it to the
|
|
45
71
|
* stored entryHash. Pushes an error if they don't match.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledgerChainValidator.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/ledgerChainValidator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ledgerChainValidator.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/ledgerChainValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAEL,iBAAiB,EAClB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;;;;;GASG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBAFrB,UAAU,EAAE,qBAAqB,EACjC,iBAAiB,EAAE,wBAAwB,EAC3C,oBAAoB,CAAC,EAAE,2BAA2B,YAAA;IAGrE;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,iBAAiB;IAsEvD;;;;;;;;OAQG;IACH,aAAa,CACX,OAAO,EAAE,YAAY,EAAE,EACvB,WAAW,EAAE,YAAY,GAAG,IAAI,EAChC,sBAAsB,CAAC,EAAE,mBAAmB,GAC3C,iBAAiB;IAyFpB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAmDhC;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IA0ElC;;;OAGG;IACH,OAAO,CAAC,eAAe;IAcvB;;;OAGG;IACH,OAAO,CAAC,eAAe;CAkBxB"}
|