@degenerate/sharedata 0.2.6 → 0.3.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/README.md +31 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/manager/share-data-manager-events.d.ts +27 -0
- package/dist/manager/share-data-manager-events.d.ts.map +1 -0
- package/dist/manager/share-data-manager-events.js +2 -0
- package/dist/manager/share-data-manager.d.ts +84 -0
- package/dist/manager/share-data-manager.d.ts.map +1 -0
- package/dist/manager/share-data-manager.js +210 -0
- package/dist/persistence/block-factory-registry.d.ts +51 -0
- package/dist/persistence/block-factory-registry.d.ts.map +1 -0
- package/dist/persistence/block-factory-registry.js +36 -0
- package/dist/persistence/deserialize-share-data.d.ts +18 -0
- package/dist/persistence/deserialize-share-data.d.ts.map +1 -0
- package/dist/persistence/deserialize-share-data.js +144 -0
- package/dist/persistence/file-share-data-repository.d.ts +30 -0
- package/dist/persistence/file-share-data-repository.d.ts.map +1 -0
- package/dist/persistence/file-share-data-repository.js +147 -0
- package/dist/persistence/firestore-share-data-repository.d.ts +38 -0
- package/dist/persistence/firestore-share-data-repository.d.ts.map +1 -0
- package/dist/persistence/firestore-share-data-repository.js +78 -0
- package/dist/persistence/in-memory-share-data-repository.d.ts +19 -0
- package/dist/persistence/in-memory-share-data-repository.d.ts.map +1 -0
- package/dist/persistence/in-memory-share-data-repository.js +48 -0
- package/dist/persistence/serialize-share-data.d.ts +22 -0
- package/dist/persistence/serialize-share-data.d.ts.map +1 -0
- package/dist/persistence/serialize-share-data.js +62 -0
- package/dist/persistence/share-data-repository.d.ts +49 -0
- package/dist/persistence/share-data-repository.d.ts.map +1 -0
- package/dist/persistence/share-data-repository.js +2 -0
- package/dist/share-data/creation/create-share-data-initial-crypto.d.ts +11 -0
- package/dist/share-data/creation/create-share-data-initial-crypto.d.ts.map +1 -0
- package/dist/share-data/creation/create-share-data-initial-crypto.js +26 -0
- package/dist/share-data/helpers/calculate-share-data-string.d.ts +21 -0
- package/dist/share-data/helpers/calculate-share-data-string.d.ts.map +1 -0
- package/dist/share-data/helpers/calculate-share-data-string.js +71 -0
- package/dist/share-data/helpers/config/default-share-data-string.config.d.ts +7 -0
- package/dist/share-data/helpers/config/default-share-data-string.config.d.ts.map +1 -0
- package/dist/share-data/helpers/config/default-share-data-string.config.js +25 -0
- package/dist/share-data/helpers/config/stringify.d.ts +5 -0
- package/dist/share-data/helpers/config/stringify.d.ts.map +1 -0
- package/dist/share-data/helpers/config/stringify.js +10 -0
- package/dist/share-data/helpers/get-array-string.d.ts +6 -0
- package/dist/share-data/helpers/get-array-string.d.ts.map +1 -0
- package/dist/share-data/helpers/get-array-string.js +17 -0
- package/dist/share-data/proofs/creation/build-transaction-proposal-signer.d.ts +57 -0
- package/dist/share-data/proofs/creation/build-transaction-proposal-signer.d.ts.map +1 -0
- package/dist/share-data/proofs/creation/build-transaction-proposal-signer.js +36 -0
- package/dist/share-data/proofs/creation/create-share-data-proposal-proof.d.ts +12 -0
- package/dist/share-data/proofs/creation/create-share-data-proposal-proof.d.ts.map +1 -0
- package/dist/share-data/proofs/creation/create-share-data-proposal-proof.js +41 -0
- package/dist/share-data/proofs/creation/create-transaction-proposal-proof.d.ts +27 -0
- package/dist/share-data/proofs/creation/create-transaction-proposal-proof.d.ts.map +1 -0
- package/dist/share-data/proofs/creation/create-transaction-proposal-proof.js +58 -0
- package/dist/share-data/proofs/helpers/create-share-data-string-to-sign.d.ts +12 -0
- package/dist/share-data/proofs/helpers/create-share-data-string-to-sign.d.ts.map +1 -0
- package/dist/share-data/proofs/helpers/create-share-data-string-to-sign.js +17 -0
- package/dist/share-data/proofs/helpers/create-transaction-proposal-string-to-sign.d.ts +24 -0
- package/dist/share-data/proofs/helpers/create-transaction-proposal-string-to-sign.d.ts.map +1 -0
- package/dist/share-data/proofs/helpers/create-transaction-proposal-string-to-sign.js +29 -0
- package/dist/share-data/proofs/helpers/get-previous-hash-from-share-data.d.ts +9 -0
- package/dist/share-data/proofs/helpers/get-previous-hash-from-share-data.d.ts.map +1 -0
- package/dist/share-data/proofs/helpers/get-previous-hash-from-share-data.js +28 -0
- package/dist/share-data/proofs/helpers/hash-proposed-state.d.ts +12 -0
- package/dist/share-data/proofs/helpers/hash-proposed-state.d.ts.map +1 -0
- package/dist/share-data/proofs/helpers/hash-proposed-state.js +18 -0
- package/dist/share-data/proofs/testing/test-proof-signer.d.ts +53 -0
- package/dist/share-data/proofs/testing/test-proof-signer.d.ts.map +1 -0
- package/dist/share-data/proofs/testing/test-proof-signer.js +113 -0
- package/dist/share-data/proofs/verification/verify-share-data-proposal-proof.d.ts +40 -0
- package/dist/share-data/proofs/verification/verify-share-data-proposal-proof.d.ts.map +1 -0
- package/dist/share-data/proofs/verification/verify-share-data-proposal-proof.js +126 -0
- package/dist/share-data/proofs/verification/verify-transaction-proposal-proof.d.ts +37 -0
- package/dist/share-data/proofs/verification/verify-transaction-proposal-proof.d.ts.map +1 -0
- package/dist/share-data/proofs/verification/verify-transaction-proposal-proof.js +125 -0
- package/dist/share-data/share-data.d.ts +180 -27
- package/dist/share-data/share-data.d.ts.map +1 -1
- package/dist/share-data/share-data.js +303 -60
- package/package.json +33 -12
|
@@ -1,76 +1,229 @@
|
|
|
1
|
-
import { IShareData, IShareDataEvent, IShareFunction, IShareRuleApplied, IShareRuleEvalutionResult, IShareDataTransactionHistory } from '@degenerate/generic';
|
|
1
|
+
import { IShareData, IShareDataEvent, IShareFunction, IShareRuleApplied, IShareRuleEvalutionResult, IShareDataTransactionHistory, IShareDataCryptoProof, EllipticalCurvesSigning, IShareDataInitialCryptoData } from '@degenerate/generic';
|
|
2
2
|
/**
|
|
3
3
|
* This contains the interface for the share data object
|
|
4
4
|
*/
|
|
5
5
|
export declare class ShareData {
|
|
6
6
|
private _id;
|
|
7
7
|
private _version;
|
|
8
|
+
private _isLocked;
|
|
8
9
|
private _rules;
|
|
9
10
|
private _functions;
|
|
10
11
|
private _transactionHistory;
|
|
11
12
|
private _events;
|
|
12
|
-
private
|
|
13
|
-
private
|
|
13
|
+
private _currentState;
|
|
14
|
+
private _cryptoProofs;
|
|
15
|
+
private _creationPublicKey;
|
|
16
|
+
private _creationHash;
|
|
17
|
+
private _creationSignature;
|
|
18
|
+
private _signingCurve;
|
|
19
|
+
private _lastUpdated;
|
|
20
|
+
private _structuralProofs;
|
|
14
21
|
/**
|
|
15
22
|
* This is the constructor for the share data object
|
|
16
23
|
* @param id the id of the share data
|
|
24
|
+
* @param creationPublicKey the public key of the creator of the share data
|
|
17
25
|
*/
|
|
18
|
-
constructor(id: string);
|
|
26
|
+
constructor(id: string, creationPublicKey: string, signingCurve?: EllipticalCurvesSigning);
|
|
19
27
|
/**
|
|
20
|
-
* This
|
|
21
|
-
* @param
|
|
28
|
+
* This initializes the cryptographic properties of the share data
|
|
29
|
+
* @param creationPublicKey the public key of the creator of the share data (in hex format)
|
|
30
|
+
* @param creationHash the hash of the share data
|
|
31
|
+
* @param creationSignature the cryptographic signature of the share data
|
|
22
32
|
*/
|
|
23
|
-
|
|
33
|
+
initializeCrypto(initialCryptoData: IShareDataInitialCryptoData): void;
|
|
24
34
|
/**
|
|
25
|
-
* This
|
|
35
|
+
* This validates the cryptographic properties of the share data
|
|
26
36
|
*/
|
|
27
|
-
get rules(): IShareRuleApplied[];
|
|
28
37
|
/**
|
|
29
|
-
* This
|
|
38
|
+
* This validates the cryptographic properties of the share data
|
|
39
|
+
* @param creationPublicKey the public key of the creator of the share data (in hex format)
|
|
30
40
|
*/
|
|
31
|
-
addFunction(func: IShareFunction<any, (...args: any[]) => any, any>): void;
|
|
32
41
|
/**
|
|
33
|
-
*
|
|
42
|
+
* get the creation hash
|
|
34
43
|
*/
|
|
35
|
-
get
|
|
44
|
+
get creationHash(): string;
|
|
45
|
+
/**
|
|
46
|
+
* get the creation public key
|
|
47
|
+
*/
|
|
48
|
+
get creationPublicKey(): string;
|
|
49
|
+
/**
|
|
50
|
+
* get the creation signature
|
|
51
|
+
*/
|
|
52
|
+
get creationSignature(): string;
|
|
53
|
+
/**
|
|
54
|
+
* This gets all cryptographic proofs for the share data
|
|
55
|
+
*/
|
|
56
|
+
get cryptoProofs(): IShareDataCryptoProof[];
|
|
57
|
+
/**
|
|
58
|
+
* This returns the current state of data for the share block
|
|
59
|
+
*/
|
|
60
|
+
get currentState(): IShareData;
|
|
36
61
|
/**
|
|
37
62
|
* This gets the events for the sharedata
|
|
38
63
|
*/
|
|
39
64
|
get events(): IShareDataEvent[];
|
|
65
|
+
/**
|
|
66
|
+
* This gets the functions for the share block
|
|
67
|
+
*/
|
|
68
|
+
get functions(): IShareFunction<any, (...args: any[]) => any, any>[];
|
|
69
|
+
/**
|
|
70
|
+
* This gets the id for the share data
|
|
71
|
+
*/
|
|
72
|
+
get id(): string;
|
|
73
|
+
/**
|
|
74
|
+
* This get whether the share data is locked
|
|
75
|
+
*/
|
|
76
|
+
get isLocked(): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* This gets the last timestamp (in milliseconds) that the share data was updated
|
|
79
|
+
*/
|
|
80
|
+
get lastUpdated(): number;
|
|
81
|
+
/**
|
|
82
|
+
* This gets the rules for the share block
|
|
83
|
+
*/
|
|
84
|
+
get rules(): IShareRuleApplied[];
|
|
85
|
+
/**
|
|
86
|
+
* This gets the elliptical curve used for signing
|
|
87
|
+
*/
|
|
88
|
+
get signingCurve(): EllipticalCurvesSigning;
|
|
89
|
+
/**
|
|
90
|
+
* This gets the structure proofs for the share data
|
|
91
|
+
*/
|
|
92
|
+
get structuralProofs(): IShareDataCryptoProof[];
|
|
93
|
+
/**
|
|
94
|
+
* This gets the transaction history for the share block
|
|
95
|
+
*/
|
|
96
|
+
get transactionHistory(): IShareDataTransactionHistory[];
|
|
97
|
+
/**
|
|
98
|
+
* This gets the version of the share data
|
|
99
|
+
*/
|
|
100
|
+
get version(): number;
|
|
40
101
|
/**
|
|
41
102
|
* This adds an event to the share data
|
|
42
103
|
* @param event the event to add
|
|
43
104
|
*/
|
|
44
105
|
addEvent(event: IShareDataEvent): void;
|
|
45
106
|
/**
|
|
46
|
-
* This adds a
|
|
47
|
-
* @param
|
|
48
|
-
|
|
107
|
+
* This adds a function to the share block.
|
|
108
|
+
* @param func the function to add to the share block
|
|
109
|
+
*/
|
|
110
|
+
addFunction(func: IShareFunction<any, (...args: any[]) => any, any>, cryptoProof: IShareDataCryptoProof): void;
|
|
111
|
+
/**
|
|
112
|
+
* This adds a rule to the share block.
|
|
113
|
+
* @param rule the rule to add to the share block
|
|
114
|
+
*/
|
|
115
|
+
addRule(rule: IShareRuleApplied, cryptoProof: IShareDataCryptoProof): void;
|
|
116
|
+
/**
|
|
117
|
+
* Append a pre-validated transaction to the history. Pass `transactionTime`
|
|
118
|
+
* when the caller needs the recorded timestamp to be deterministic — for
|
|
119
|
+
* example, when a wire-format payload is being reconstructed and the
|
|
120
|
+
* resulting share-data state must hash identically to the one the
|
|
121
|
+
* remote signer produced. Omit it for ordinary live calls; defaults to
|
|
122
|
+
* `Date.now()`.
|
|
123
|
+
*
|
|
124
|
+
* Pass `proof` when replaying a persisted transaction so the rebuilt
|
|
125
|
+
* history entry carries the same proposal proof the live entry did. The
|
|
126
|
+
* canonical share-data hash folds `transactionHistory` in, so omitting the
|
|
127
|
+
* proof here would make a replayed block hash differently from the original
|
|
128
|
+
* and break verification of any later transaction's proof.
|
|
49
129
|
*/
|
|
50
|
-
addTransactionAlreadyValidated(proposedData: IShareData, rulesEvaluation: IShareRuleEvalutionResult, transactionFunction: IShareFunction<any, (...args: any[]) => any, any
|
|
130
|
+
addTransactionAlreadyValidated(proposedData: IShareData, rulesEvaluation: IShareRuleEvalutionResult, transactionFunction: IShareFunction<any, (...args: any[]) => any, any>, transactionTime?: number, proof?: IShareDataCryptoProof): void;
|
|
51
131
|
/**
|
|
52
132
|
* This adds a transaction to the share block but the transaction has not yet been validated
|
|
53
133
|
*
|
|
134
|
+
* The unsigned/internal apply path: it runs the rule engine and records the
|
|
135
|
+
* outcome but carries no proposal proof, so it does NOT attest that any key
|
|
136
|
+
* holder authorized the change. New runtime mutations should go through
|
|
137
|
+
* {@link addTransaction}, which verifies a transaction proposal proof first.
|
|
138
|
+
* Retained for internal replay/seed callers that operate before the signed
|
|
139
|
+
* boundary is in play.
|
|
140
|
+
*
|
|
54
141
|
* @param proposedData the proposed data
|
|
55
142
|
* @param transactionFunction the function that was attempted
|
|
56
143
|
*/
|
|
57
|
-
addTransactionNotValidated(proposedData: IShareData, transactionFunction: IShareFunction<any, (...args: any[]) => any, any>):
|
|
144
|
+
addTransactionNotValidated(proposedData: IShareData, transactionFunction: IShareFunction<any, (...args: any[]) => any, any>): {
|
|
145
|
+
accepted: boolean;
|
|
146
|
+
transactionId: string;
|
|
147
|
+
};
|
|
58
148
|
/**
|
|
59
|
-
*
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
*
|
|
149
|
+
* Signed runtime mutation path. Verifies that `proof` cryptographically
|
|
150
|
+
* authorizes applying `transactionFunction` to move this share-data to
|
|
151
|
+
* exactly `proposedData`, then runs the rule engine and records the
|
|
152
|
+
* outcome. The recorded history entry carries `proof`, so the audit log
|
|
153
|
+
* itself holds the signature — not merely "which function ran."
|
|
154
|
+
*
|
|
155
|
+
* Four gates, in order:
|
|
156
|
+
* 1. The function must be registered on this block.
|
|
157
|
+
* 2. The function must be addressable (`id` set) and the proof must be
|
|
158
|
+
* minted for that same id (`proof.purpose === transactionFunction.id`).
|
|
159
|
+
* This binds the proof to *this* function so a proof minted for one
|
|
160
|
+
* function can't be replayed to drive another even if the proposed
|
|
161
|
+
* state would satisfy both functions' rules.
|
|
162
|
+
* 3. The proof's signer must be authorized for this block —
|
|
163
|
+
* `proof.publicKey === creationPublicKey`. Signature validity alone
|
|
164
|
+
* only proves *someone* signed the transition; this binds the
|
|
165
|
+
* *authorized* someone (the block's creation key, the same key the
|
|
166
|
+
* HTTP create/delete ACL authorizes against). Without it any valid
|
|
167
|
+
* keypair could sign a legal transition.
|
|
168
|
+
* 4. The proof must verify against the current state AND `proposedData`
|
|
169
|
+
* (closes the amount-replay hole — see
|
|
170
|
+
* `verifyTransactionProposalProof`).
|
|
171
|
+
*
|
|
172
|
+
* Throws {@link ShareDataTransactionNotAuthorizedError} when the signer is
|
|
173
|
+
* not authorized (gate 3), {@link ShareDataTransactionProofFailedError} on
|
|
174
|
+
* any other auth failure — both before the rule engine runs and before any
|
|
175
|
+
* state is touched.
|
|
176
|
+
*
|
|
177
|
+
* @param proposedData the proposed next state
|
|
178
|
+
* @param transactionFunction the function producing `proposedData`
|
|
179
|
+
* @param proof the transaction proposal proof authorizing the change
|
|
64
180
|
*/
|
|
65
|
-
|
|
181
|
+
addTransaction(proposedData: IShareData, transactionFunction: IShareFunction<any, (...args: any[]) => any, any>, proof: IShareDataCryptoProof): {
|
|
182
|
+
accepted: boolean;
|
|
183
|
+
transactionId: string;
|
|
184
|
+
};
|
|
66
185
|
/**
|
|
67
|
-
*
|
|
186
|
+
* Shared rule-evaluate → apply-if-valid → record path used by both
|
|
187
|
+
* {@link addTransactionNotValidated} (no proof) and {@link addTransaction}
|
|
188
|
+
* (proof already verified by the caller). When `proof` is supplied it is
|
|
189
|
+
* recorded on the history entry so the audit log carries the signature.
|
|
68
190
|
*/
|
|
69
|
-
|
|
191
|
+
private evaluateAndApply;
|
|
70
192
|
/**
|
|
71
193
|
* This copies a share data object to a new transaction number
|
|
72
194
|
* @param transactionNumber the number of the transaction to run until.
|
|
195
|
+
* @param publicKey the public key of the application that will be the new owner of the share data
|
|
196
|
+
*/
|
|
197
|
+
copyTo(transactionNumber: number, publicKey: string): ShareData;
|
|
198
|
+
/**
|
|
199
|
+
* This adds a cryptographic proof to the share data
|
|
200
|
+
* @param proof the cryptographic proof to add
|
|
201
|
+
*/
|
|
202
|
+
addCryptoProof(proof: IShareDataCryptoProof): void;
|
|
203
|
+
/**
|
|
204
|
+
* Verifies that `proof` is a faithful attestation of this share-data's
|
|
205
|
+
* current structural state under `proof.purpose`. Returns `true` on
|
|
206
|
+
* success; throws `ShareDataStructuralProofFailedError` on any mismatch
|
|
207
|
+
* (hash, previousHash, signature, or purpose).
|
|
208
|
+
*/
|
|
209
|
+
verifyStructuralProof(proof: IShareDataCryptoProof, curve?: EllipticalCurvesSigning): true;
|
|
210
|
+
/**
|
|
211
|
+
* Verifies that `proof` authorizes applying a transaction that moves this
|
|
212
|
+
* share-data to exactly `proposedData`. Unlike {@link verifyStructuralProof}
|
|
213
|
+
* (which binds only the current state under a purpose), this additionally
|
|
214
|
+
* binds the proposed state — a proof minted for one proposed state will not
|
|
215
|
+
* verify against any other. Returns `true`; throws
|
|
216
|
+
* `ShareDataTransactionProofFailedError` on any mismatch.
|
|
217
|
+
*/
|
|
218
|
+
verifyTransactionProof(proof: IShareDataCryptoProof, proposedData: IShareData, curve?: EllipticalCurvesSigning): true;
|
|
219
|
+
/**
|
|
220
|
+
* This adds a structure proof to the share data
|
|
221
|
+
* @param proof the structure proof to add
|
|
222
|
+
*/
|
|
223
|
+
addStructuralProof(proof: IShareDataCryptoProof): void;
|
|
224
|
+
/**
|
|
225
|
+
* This initializes the share data object and locks it
|
|
73
226
|
*/
|
|
74
|
-
|
|
227
|
+
initialize(): void;
|
|
75
228
|
}
|
|
76
229
|
//# sourceMappingURL=share-data.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share-data.d.ts","sourceRoot":"","sources":["../../src/share-data/share-data.ts"],"names":[],"mappings":"AACA,OAAO,EACH,UAAU,EACV,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,4BAA4B,
|
|
1
|
+
{"version":3,"file":"share-data.d.ts","sourceRoot":"","sources":["../../src/share-data/share-data.ts"],"names":[],"mappings":"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"}
|