@did-btcr2/method 0.20.0 → 0.22.0
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 +223 -1
- package/dist/browser.js +3316 -3292
- package/dist/browser.mjs +3316 -3292
- package/dist/cjs/core/beacon/singleton.js +6 -9
- package/dist/cjs/core/beacon/singleton.js.map +1 -1
- package/dist/cjs/core/resolve.js +41 -37
- package/dist/cjs/core/resolve.js.map +1 -1
- package/dist/cjs/core/update.js +3 -4
- package/dist/cjs/core/update.js.map +1 -1
- package/dist/cjs/did-btcr2.js +32 -28
- package/dist/cjs/did-btcr2.js.map +1 -1
- package/dist/cjs/utils/did-document-builder.js +0 -6
- package/dist/cjs/utils/did-document-builder.js.map +1 -1
- package/dist/cjs/utils/did-document.js +31 -24
- package/dist/cjs/utils/did-document.js.map +1 -1
- package/dist/esm/core/beacon/singleton.js +6 -9
- package/dist/esm/core/beacon/singleton.js.map +1 -1
- package/dist/esm/core/resolve.js +41 -37
- package/dist/esm/core/resolve.js.map +1 -1
- package/dist/esm/core/update.js +3 -4
- package/dist/esm/core/update.js.map +1 -1
- package/dist/esm/did-btcr2.js +32 -28
- package/dist/esm/did-btcr2.js.map +1 -1
- package/dist/esm/utils/did-document-builder.js +0 -6
- package/dist/esm/utils/did-document-builder.js.map +1 -1
- package/dist/esm/utils/did-document.js +31 -24
- package/dist/esm/utils/did-document.js.map +1 -1
- package/dist/types/core/beacon/singleton.d.ts +1 -1
- package/dist/types/core/beacon/singleton.d.ts.map +1 -1
- package/dist/types/core/resolve.d.ts +7 -4
- package/dist/types/core/resolve.d.ts.map +1 -1
- package/dist/types/core/update.d.ts.map +1 -1
- package/dist/types/did-btcr2.d.ts +8 -4
- package/dist/types/did-btcr2.d.ts.map +1 -1
- package/dist/types/utils/did-document-builder.d.ts +0 -1
- package/dist/types/utils/did-document-builder.d.ts.map +1 -1
- package/dist/types/utils/did-document.d.ts +12 -9
- package/dist/types/utils/did-document.d.ts.map +1 -1
- package/package.json +7 -6
- package/src/core/beacon/singleton.ts +7 -9
- package/src/core/resolve.ts +59 -47
- package/src/core/update.ts +3 -3
- package/src/did-btcr2.ts +34 -32
- package/src/utils/did-document-builder.ts +0 -7
- package/src/utils/did-document.ts +41 -30
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { INVALID_SIDECAR_DATA, MISSING_UPDATE_DATA } from '@did-btcr2/common';
|
|
1
|
+
import { Canonicalization, INVALID_SIDECAR_DATA, MISSING_UPDATE_DATA } from '@did-btcr2/common';
|
|
2
2
|
import { SchnorrKeyPair } from '@did-btcr2/keypair';
|
|
3
3
|
import { Signer } from '@did-btcr2/kms';
|
|
4
4
|
import { opcodes, Psbt, script } from 'bitcoinjs-lib';
|
|
5
5
|
import { base58btc } from 'multiformats/bases/base58';
|
|
6
|
-
import { canonicalization } from '../../did-btcr2.js';
|
|
7
6
|
import { Beacon } from './beacon.js';
|
|
8
7
|
import { SingletonBeaconError } from './error.js';
|
|
9
8
|
/**
|
|
10
9
|
* Implements {@link https://dcdpr.github.io/did-btcr2/terminology.html#singleton-beacon | Singleton Beacon}.
|
|
11
10
|
* @class SingletonBeacon
|
|
12
11
|
* @type {SingletonBeacon}
|
|
13
|
-
* @extends {
|
|
12
|
+
* @extends {Beacon}
|
|
14
13
|
*/
|
|
15
14
|
export class SingletonBeacon extends Beacon {
|
|
16
15
|
/**
|
|
@@ -40,7 +39,7 @@ export class SingletonBeacon extends Beacon {
|
|
|
40
39
|
throw new SingletonBeaconError(`BTCR2 Signed Update not found for update hash ${updateHash}.`, MISSING_UPDATE_DATA, signal);
|
|
41
40
|
}
|
|
42
41
|
// Canonicalize, hash and encode to base58 the signed update object found in sidecar or CAS
|
|
43
|
-
const encodedUpdate =
|
|
42
|
+
const encodedUpdate = Canonicalization.process(signedUpdate, { encoding: 'base58' });
|
|
44
43
|
// Encode the signal bytes hex string to base58
|
|
45
44
|
const signalBytes = base58btc.encode(Buffer.from(updateHash, 'hex'));
|
|
46
45
|
// Check for mismatch between found sidecar/cas update hash and onchain beacon signal hash
|
|
@@ -80,7 +79,7 @@ export class SingletonBeacon extends Beacon {
|
|
|
80
79
|
// Get the previous tx to the utxo being spent
|
|
81
80
|
const prevTx = await bitcoin.network.rest.transaction.getHex(utxo.txid);
|
|
82
81
|
// Canonicalize and hash the signed update for OP_RETURN output
|
|
83
|
-
const updateHash =
|
|
82
|
+
const updateHash = Canonicalization.andHash(signedUpdate);
|
|
84
83
|
// Construct a spend transaction
|
|
85
84
|
const spendTx = new Psbt({ network: bitcoin.network.data })
|
|
86
85
|
// Spend tx contains the utxo as its input
|
|
@@ -96,9 +95,6 @@ export class SingletonBeacon extends Beacon {
|
|
|
96
95
|
.addOutput({ script: script.compile([opcodes.OP_RETURN, updateHash]), value: 0n });
|
|
97
96
|
// Construct a Schnorr key pair from the secret key
|
|
98
97
|
const keyPair = SchnorrKeyPair.fromSecret(secretKey);
|
|
99
|
-
if (!keyPair) {
|
|
100
|
-
throw new SingletonBeaconError('Key pair not found.', 'KEY_PAIR_NOT_FOUND', { secretKey });
|
|
101
|
-
}
|
|
102
98
|
// Construct a signer object from the key pair and bitcoin network
|
|
103
99
|
const signer = new Signer({ keyPair, network: bitcoin.network.name });
|
|
104
100
|
// Sign 0th input, finalize extract to hex in prep for broadcast
|
|
@@ -108,7 +104,8 @@ export class SingletonBeacon extends Beacon {
|
|
|
108
104
|
.toHex();
|
|
109
105
|
// Broadcast spendTx to the Bitcoin network.
|
|
110
106
|
const txid = await bitcoin.network.rest.transaction.send(signedTx);
|
|
111
|
-
|
|
107
|
+
// Log the txid of the broadcasted transaction
|
|
108
|
+
console.info(`Singleton Beacon Signal Broadcasted with txid: ${txid}`);
|
|
112
109
|
// Return the signed update
|
|
113
110
|
return signedUpdate;
|
|
114
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singleton.js","sourceRoot":"","sources":["../../../../src/core/beacon/singleton.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAY,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"singleton.js","sourceRoot":"","sources":["../../../../src/core/beacon/singleton.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/core/resolve.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { getNetwork } from '@did-btcr2/bitcoin';
|
|
2
|
-
import { DateUtils, IdentifierHrp, INVALID_DID, INVALID_DID_DOCUMENT, INVALID_DID_UPDATE, JSONPatch, JSONUtils, LATE_PUBLISHING_ERROR, MISSING_UPDATE_DATA, ResolveError } from '@did-btcr2/common';
|
|
2
|
+
import { Canonicalization, DateUtils, IdentifierHrp, INVALID_DID, INVALID_DID_DOCUMENT, INVALID_DID_UPDATE, JSONPatch, JSONUtils, LATE_PUBLISHING_ERROR, MISSING_UPDATE_DATA, ResolveError } from '@did-btcr2/common';
|
|
3
3
|
import { BIP340Cryptosuite, BIP340DataIntegrityProof, SchnorrMultikey } from '@did-btcr2/cryptosuite';
|
|
4
4
|
import { CompressedSecp256k1PublicKey } from '@did-btcr2/keypair';
|
|
5
5
|
import { bytesToHex } from '@noble/hashes/utils';
|
|
6
|
-
import {
|
|
6
|
+
import { DidBtcr2 } from '../did-btcr2.js';
|
|
7
7
|
import { Appendix } from '../utils/appendix.js';
|
|
8
8
|
import { DidDocument, ID_PLACEHOLDER_VALUE } from '../utils/did-document.js';
|
|
9
9
|
import { BeaconFactory } from './beacon/factory.js';
|
|
@@ -41,7 +41,6 @@ export class Resolve {
|
|
|
41
41
|
});
|
|
42
42
|
return new DidDocument({
|
|
43
43
|
id: did,
|
|
44
|
-
controller: [did],
|
|
45
44
|
verificationMethod: [{
|
|
46
45
|
id: `${did}#initialKey`,
|
|
47
46
|
type: 'Multikey',
|
|
@@ -60,7 +59,7 @@ export class Resolve {
|
|
|
60
59
|
*/
|
|
61
60
|
static async external(didComponents, genesisDocument) {
|
|
62
61
|
// Canonicalize and sha256 hash the currentDocument
|
|
63
|
-
const hashBytes =
|
|
62
|
+
const hashBytes = Canonicalization.process(genesisDocument, { encoding: 'hex' });
|
|
64
63
|
// Compare the genesisBytes to the hashBytes
|
|
65
64
|
const genesisBytes = bytesToHex(didComponents.genesisBytes);
|
|
66
65
|
// If the genesisBytes do not match the hashBytes, throw an error
|
|
@@ -84,13 +83,13 @@ export class Resolve {
|
|
|
84
83
|
const updateMap = new Map();
|
|
85
84
|
if (sidecar.updates?.length)
|
|
86
85
|
for (const update of sidecar.updates) {
|
|
87
|
-
updateMap.set(
|
|
86
|
+
updateMap.set(Canonicalization.process(update, { encoding: 'hex' }), update);
|
|
88
87
|
}
|
|
89
88
|
// CAS Announcements map
|
|
90
89
|
const casMap = new Map();
|
|
91
90
|
if (sidecar.casUpdates?.length)
|
|
92
91
|
for (const update of sidecar.casUpdates) {
|
|
93
|
-
casMap.set(
|
|
92
|
+
casMap.set(Canonicalization.process(update, { encoding: 'hex' }), update);
|
|
94
93
|
}
|
|
95
94
|
// SMT Proofs map
|
|
96
95
|
const smtMap = new Map();
|
|
@@ -144,14 +143,14 @@ export class Resolve {
|
|
|
144
143
|
? await BeaconSignalDiscovery.indexer(beaconServices, bitcoin)
|
|
145
144
|
: await BeaconSignalDiscovery.fullnode(beaconServices, bitcoin);
|
|
146
145
|
// Process each beacon's signals in parallel
|
|
147
|
-
const promises = Array.from(beaconServicesSignals.entries()).map(async ([service, signals]) => {
|
|
146
|
+
const promises = await Promise.all(Array.from(beaconServicesSignals.entries()).map(async ([service, signals]) => {
|
|
148
147
|
// Skip beacons with no signals
|
|
149
148
|
if (!signals.length)
|
|
150
149
|
return [];
|
|
151
150
|
// Establish a typed beacon and process its signals
|
|
152
151
|
return BeaconFactory.establish(service).processSignals(signals, sidecarData);
|
|
153
|
-
});
|
|
154
|
-
return
|
|
152
|
+
}));
|
|
153
|
+
return promises.flat();
|
|
155
154
|
}
|
|
156
155
|
/**
|
|
157
156
|
* Implements subsection {@link https://dcdpr.github.io/did-btcr2/operations/resolve.html#process-updates | 7.2.f Process updates Array}.
|
|
@@ -170,26 +169,30 @@ export class Resolve {
|
|
|
170
169
|
const updates = unsortedUpdates.sort(([upd0, blk0], [upd1, blk1]) => upd0.targetVersionId - upd1.targetVersionId || blk0.height - blk1.height);
|
|
171
170
|
// Create a default response object
|
|
172
171
|
const response = {
|
|
173
|
-
currentDocument,
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
172
|
+
didDocument: currentDocument,
|
|
173
|
+
metadata: {
|
|
174
|
+
versionId: `${currentVersionId}`,
|
|
175
|
+
confirmations: 0,
|
|
176
|
+
updated: '',
|
|
177
|
+
deactivated: currentDocument.deactivated || false
|
|
178
|
+
}
|
|
177
179
|
};
|
|
178
180
|
// Iterate over each (update block) pair
|
|
179
181
|
for (const [update, block] of updates) {
|
|
180
182
|
// Get the hash of the current document
|
|
181
|
-
const currentDocumentHash =
|
|
182
|
-
//
|
|
183
|
-
|
|
184
|
-
// Safely convert versionTime to timestamp
|
|
185
|
-
const vTime = DateUtils.dateStringToTimestamp(versionTime || '');
|
|
186
|
-
// Safely convert block.blocktime to timestamp
|
|
187
|
-
const bTime = DateUtils.blocktimeToTimestamp(block.time);
|
|
183
|
+
const currentDocumentHash = Canonicalization.process(response.didDocument, { encoding: 'base58' });
|
|
184
|
+
// Safely convert block.time to timestamp
|
|
185
|
+
const blocktime = DateUtils.blocktimeToTimestamp(block.time);
|
|
188
186
|
// Set the updated field to the blocktime of the current update
|
|
189
|
-
response.updated = DateUtils.toISOStringNonFractional(
|
|
187
|
+
response.metadata.updated = DateUtils.toISOStringNonFractional(blocktime);
|
|
188
|
+
// Set confirmations to the block confirmations
|
|
189
|
+
response.metadata.confirmations = block.confirmations;
|
|
190
190
|
// if resolutionOptions.versionTime is defined and the blocktime is more recent, return currentDocument
|
|
191
|
-
if (
|
|
192
|
-
|
|
191
|
+
if (versionTime) {
|
|
192
|
+
// Safely convert versionTime to timestamp
|
|
193
|
+
if (blocktime > DateUtils.dateStringToTimestamp(versionTime)) {
|
|
194
|
+
return response;
|
|
195
|
+
}
|
|
193
196
|
}
|
|
194
197
|
// Check update.targetVersionId against currentVersionId
|
|
195
198
|
// If update.targetVersionId <= currentVersionId, confirm duplicate update
|
|
@@ -199,37 +202,38 @@ export class Resolve {
|
|
|
199
202
|
}
|
|
200
203
|
// If update.targetVersionId == currentVersionId + 1, apply the update
|
|
201
204
|
else if (update.targetVersionId === currentVersionId + 1) {
|
|
202
|
-
// Prepend `z` to the sourceHash if it does not start with it
|
|
203
|
-
const sourceHash = update.sourceHash.startsWith('z') ? update.sourceHash : `z${update.sourceHash}`;
|
|
204
205
|
// Check if update.sourceHash !== currentDocumentHash
|
|
205
|
-
if (sourceHash !== currentDocumentHash) {
|
|
206
|
+
if (update.sourceHash !== currentDocumentHash) {
|
|
206
207
|
// Raise an INVALID_DID_UPDATE error if they do not match
|
|
207
|
-
throw new ResolveError(`Hash mismatch: update.sourceHash !== currentDocumentHash`, INVALID_DID_UPDATE, { sourceHash, currentDocumentHash });
|
|
208
|
+
throw new ResolveError(`Hash mismatch: update.sourceHash !== currentDocumentHash`, INVALID_DID_UPDATE, { sourceHash: update.sourceHash, currentDocumentHash });
|
|
208
209
|
}
|
|
209
210
|
// Apply the update to the currentDocument and set it in the response
|
|
210
|
-
response.
|
|
211
|
+
response.didDocument = await this.applyUpdate(response.didDocument, update);
|
|
211
212
|
// Create unsigned_update by removing the proof property from update.
|
|
212
213
|
const unsignedUpdate = JSONUtils.deleteKeys(update, ['proof']);
|
|
213
214
|
// Push the canonicalized unsigned update hash to the updateHashHistory
|
|
214
|
-
updateHashHistory.push(
|
|
215
|
+
updateHashHistory.push(Canonicalization.process(unsignedUpdate, { encoding: 'base58' }));
|
|
215
216
|
}
|
|
216
217
|
// If update.targetVersionId > currentVersionId + 1, throw LATE_PUBLISHING error
|
|
217
218
|
else if (update.targetVersionId > currentVersionId + 1) {
|
|
218
219
|
throw new ResolveError(`Version Id Mismatch: targetVersionId cannot be > currentVersionId + 1`, 'LATE_PUBLISHING_ERROR', {
|
|
219
220
|
targetVersionId: update.targetVersionId,
|
|
220
|
-
currentVersionId:
|
|
221
|
+
currentVersionId: currentVersionId + 1
|
|
221
222
|
});
|
|
222
223
|
}
|
|
223
224
|
// Increment currentVersionId
|
|
224
225
|
currentVersionId++;
|
|
225
|
-
// Set
|
|
226
|
-
response.versionId = `${currentVersionId}`;
|
|
226
|
+
// Set response.versionId to be the new currentVersionId
|
|
227
|
+
response.metadata.versionId = `${currentVersionId}`;
|
|
227
228
|
// If resolutionOptions.versionId is defined and <= currentVersionId, return currentDocument
|
|
228
229
|
if (currentVersionId >= Number(versionId)) {
|
|
229
230
|
return response;
|
|
230
231
|
}
|
|
231
232
|
// Check if the current document is deactivated before further processing
|
|
232
233
|
if (currentDocument.deactivated) {
|
|
234
|
+
// Set the response deactivated flag to true
|
|
235
|
+
response.metadata.deactivated = currentDocument.deactivated;
|
|
236
|
+
// If deactivated, stop processing further updates and return the response
|
|
233
237
|
return response;
|
|
234
238
|
}
|
|
235
239
|
}
|
|
@@ -244,10 +248,10 @@ export class Resolve {
|
|
|
244
248
|
*/
|
|
245
249
|
static confirmDuplicate(update, updateHashHistory) {
|
|
246
250
|
// Create unsigned_update by removing the proof property from update.
|
|
247
|
-
const unsignedUpdate =
|
|
251
|
+
const { proof: _, ...unsignedUpdate } = update;
|
|
248
252
|
// Hash unsignedUpdate with JSON Document Hashing algorithm
|
|
249
|
-
const unsignedUpdateHash =
|
|
250
|
-
//
|
|
253
|
+
const unsignedUpdateHash = Canonicalization.process(unsignedUpdate);
|
|
254
|
+
// Let historicalUpdateHash equal updateHashHistory[updateHashIndex].
|
|
251
255
|
const historicalUpdateHash = updateHashHistory[update.targetVersionId - 2];
|
|
252
256
|
// Check if the updateHash matches the historical hash
|
|
253
257
|
if (updateHashHistory[update.targetVersionId - 2] !== unsignedUpdateHash) {
|
|
@@ -292,7 +296,7 @@ export class Resolve {
|
|
|
292
296
|
// Construct a new BIP340Cryptosuite with the SchnorrMultikey.
|
|
293
297
|
const cryptosuite = new BIP340Cryptosuite(multikey);
|
|
294
298
|
// Canonicalize the update
|
|
295
|
-
const canonicalUpdate =
|
|
299
|
+
const canonicalUpdate = Canonicalization.canonicalize(update);
|
|
296
300
|
// Construct a DataIntegrityProof with the cryptosuite
|
|
297
301
|
const diProof = new BIP340DataIntegrityProof(cryptosuite);
|
|
298
302
|
// Call the verifyProof method
|
|
@@ -306,7 +310,7 @@ export class Resolve {
|
|
|
306
310
|
// Verify that updatedDocument is conformant to DID Core v1.1.
|
|
307
311
|
DidDocument.validate(updatedDocument);
|
|
308
312
|
// Canonicalize and hash the updatedDocument to get the currentDocumentHash.
|
|
309
|
-
const currentDocumentHash =
|
|
313
|
+
const currentDocumentHash = Canonicalization.process(updatedDocument, { encoding: 'base58' });
|
|
310
314
|
// Prepare the update targetHash for comparison with currentDocumentHash.
|
|
311
315
|
const updateTargetHash = update.targetHash.startsWith('z') ? update.targetHash : `z${update.targetHash}`;
|
|
312
316
|
// Make sure the update.targetHash equals currentDocumentHash.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/core/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,SAAS,EACT,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,EAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/core/resolve.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/core/update.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { INVALID_DID_UPDATE, JSONPatch, UpdateError } from '@did-btcr2/common';
|
|
1
|
+
import { Canonicalization, INVALID_DID_UPDATE, JSONPatch, UpdateError } from '@did-btcr2/common';
|
|
2
2
|
import { SchnorrMultikey } from '@did-btcr2/cryptosuite';
|
|
3
|
-
import { canonicalization } from '../did-btcr2.js';
|
|
4
3
|
import { DidDocument } from '../utils/did-document.js';
|
|
5
4
|
import { BeaconFactory } from './beacon/factory.js';
|
|
6
5
|
/**
|
|
@@ -38,7 +37,7 @@ export class Update {
|
|
|
38
37
|
patch: patches,
|
|
39
38
|
targetHash: '',
|
|
40
39
|
targetVersionId: sourceVersionId + 1,
|
|
41
|
-
sourceHash:
|
|
40
|
+
sourceHash: Canonicalization.process(sourceDocument, { encoding: 'base58' }),
|
|
42
41
|
};
|
|
43
42
|
// Apply all JSON patches to sourceDocument.
|
|
44
43
|
const targetDocument = JSONPatch.apply(sourceDocument, patches);
|
|
@@ -51,7 +50,7 @@ export class Update {
|
|
|
51
50
|
throw new UpdateError('Error validating targetDocument: ' + (error instanceof Error ? error.message : String(error)), INVALID_DID_UPDATE, targetDocument);
|
|
52
51
|
}
|
|
53
52
|
// Set the targetHash by canonicalizing the targetDocument and encoding it in base58.
|
|
54
|
-
unsignedUpdate.targetHash =
|
|
53
|
+
unsignedUpdate.targetHash = Canonicalization.process(targetDocument, { encoding: 'base58' });
|
|
55
54
|
// Return unsignedUpdate.
|
|
56
55
|
return unsignedUpdate;
|
|
57
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/core/update.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,SAAS,EAGT,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,eAAe,EAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/core/update.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/did-btcr2.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BitcoinNetworkConnection } from '@did-btcr2/bitcoin';
|
|
2
|
-
import {
|
|
2
|
+
import { IdentifierHrp, INVALID_DID_DOCUMENT, INVALID_DID_UPDATE, METHOD_NOT_SUPPORTED, MethodError, MISSING_UPDATE_DATA, ResolveError, UpdateError } from '@did-btcr2/common';
|
|
3
3
|
import { Did, DidError, DidErrorCode, EMPTY_DID_RESOLUTION_RESULT } from '@web5/dids';
|
|
4
4
|
import { initEccLib } from 'bitcoinjs-lib';
|
|
5
5
|
import * as tinysecp from 'tiny-secp256k1';
|
|
@@ -9,8 +9,6 @@ import { Resolve } from './core/resolve.js';
|
|
|
9
9
|
import { Update } from './core/update.js';
|
|
10
10
|
import { Appendix } from './utils/appendix.js';
|
|
11
11
|
// TODO: convert to API driver?
|
|
12
|
-
export const canonicalization = new Canonicalization();
|
|
13
|
-
// TODO: convert to API driver?
|
|
14
12
|
/** Initialize tiny secp256k1 */
|
|
15
13
|
initEccLib(tinysecp);
|
|
16
14
|
/**
|
|
@@ -41,8 +39,13 @@ export class DidBtcr2 {
|
|
|
41
39
|
* @param {string} options.network The Bitcoin network to use for the identifier, e.g. 'bitcoin', 'testnet', etc. Defaults to 'bitcoin'.
|
|
42
40
|
* @returns {Promise<Btcr2Identifier>} Promise resolving to a Btcr2Identifier string.
|
|
43
41
|
* @throws {MethodError} if any of the checks fail
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* const genesisBytes = SchnorrKeyPair.generate().publicKey.compressed;
|
|
45
|
+
* const did = DidBtcr2.create(genesisBytes, { idType: 'KEY', network: 'regtest' });
|
|
46
|
+
* ```
|
|
44
47
|
*/
|
|
45
|
-
static
|
|
48
|
+
static create(genesisBytes, options) {
|
|
46
49
|
// Deconstruct the idType, version and network from the options, setting defaults if not given
|
|
47
50
|
const { idType, version = 1, network = 'bitcoin' } = options || {};
|
|
48
51
|
if (!idType) {
|
|
@@ -68,20 +71,22 @@ export class DidBtcr2 {
|
|
|
68
71
|
* @example
|
|
69
72
|
* ```ts
|
|
70
73
|
* const resolution = await DidBtcr2.resolve(
|
|
71
|
-
* 'did:btcr2:
|
|
74
|
+
* 'did:btcr2:k1qgpr45cheptyjekl3cex80xfnkwhxnlclecwwf92gvdjrszm2uwhzlcxu5xte'
|
|
72
75
|
* )
|
|
73
76
|
* ```
|
|
74
77
|
*/
|
|
75
|
-
static async resolve(did, resolutionOptions = {
|
|
78
|
+
static async resolve(did, resolutionOptions = {}) {
|
|
76
79
|
try {
|
|
80
|
+
// Set versionId from resolutionOptions
|
|
81
|
+
const versionId = resolutionOptions.versionId;
|
|
77
82
|
// Initialize an empty DID Resolution Result
|
|
78
83
|
const didResolutionResult = {
|
|
79
84
|
'@context': 'https://w3id.org/did-resolution/v1',
|
|
80
85
|
didResolutionMetadata: { contentType: 'application/ld+json' },
|
|
81
86
|
didDocumentMetadata: {
|
|
87
|
+
versionId,
|
|
82
88
|
deactivated: false,
|
|
83
89
|
updated: undefined,
|
|
84
|
-
versionId: resolutionOptions.versionId,
|
|
85
90
|
confirmations: undefined,
|
|
86
91
|
},
|
|
87
92
|
didDocument: null,
|
|
@@ -90,22 +95,13 @@ export class DidBtcr2 {
|
|
|
90
95
|
const didComponents = Identifier.decode(did);
|
|
91
96
|
// Process sidecar if provided
|
|
92
97
|
const sidecarData = Resolve.sidecarData(resolutionOptions.sidecar);
|
|
93
|
-
// Check if bitcoin driver provided
|
|
94
|
-
if (!resolutionOptions?.drivers?.bitcoin) {
|
|
95
|
-
// If not, initialize default drivers
|
|
96
|
-
resolutionOptions.drivers = resolutionOptions.drivers || {};
|
|
97
|
-
// Set bitcoin driver to default BitcoinNetworkConnection
|
|
98
|
-
resolutionOptions.drivers.bitcoin = new BitcoinNetworkConnection();
|
|
99
|
-
// Set the network based on the decoded identifier
|
|
100
|
-
resolutionOptions.drivers.bitcoin.setActiveNetwork(didComponents.network);
|
|
101
|
-
}
|
|
102
98
|
// Parse the genesis document from the resolution options if provided
|
|
103
99
|
const genesisDocument = resolutionOptions.sidecar?.genesisDocument;
|
|
104
100
|
// Since genesisDocument is optional, check if it exists
|
|
105
101
|
if (!genesisDocument) {
|
|
106
102
|
// If no genesisDocument and x HRP, throw MISSING_UPDATE_DATA error
|
|
107
103
|
if (didComponents.hrp === IdentifierHrp.x)
|
|
108
|
-
throw new ResolveError('External resolution requires genesisDocument', MISSING_UPDATE_DATA,
|
|
104
|
+
throw new ResolveError('External resolution requires genesisDocument', MISSING_UPDATE_DATA, resolutionOptions);
|
|
109
105
|
}
|
|
110
106
|
// Establish the current document
|
|
111
107
|
const currentDocument = await Resolve.currentDocument(didComponents, genesisDocument);
|
|
@@ -113,26 +109,34 @@ export class DidBtcr2 {
|
|
|
113
109
|
const beaconServices = currentDocument.service
|
|
114
110
|
.filter(BeaconUtils.isBeaconService)
|
|
115
111
|
.map(BeaconUtils.parseBeaconServiceEndpoint);
|
|
116
|
-
|
|
112
|
+
// Check if bitcoin driver provided
|
|
113
|
+
if (!resolutionOptions?.drivers?.bitcoin) {
|
|
114
|
+
// If not, initialize default drivers
|
|
115
|
+
resolutionOptions.drivers = resolutionOptions.drivers || {};
|
|
116
|
+
// Set bitcoin driver to default BitcoinNetworkConnection
|
|
117
|
+
resolutionOptions.drivers.bitcoin = new BitcoinNetworkConnection();
|
|
118
|
+
// Set the network based on the decoded identifier
|
|
119
|
+
resolutionOptions.drivers.bitcoin.setActiveNetwork(didComponents.network);
|
|
120
|
+
}
|
|
121
|
+
// Get the bitcoin driver from the resolution options
|
|
122
|
+
const bitcoin = resolutionOptions.drivers.bitcoin;
|
|
117
123
|
// Process the Beacon Signals to get the required updates
|
|
118
|
-
const unsortedUpdates = await Resolve.beaconSignals(beaconServices, sidecarData,
|
|
119
|
-
console.log('unsortedUpdates', unsortedUpdates);
|
|
124
|
+
const unsortedUpdates = await Resolve.beaconSignals(beaconServices, sidecarData, bitcoin);
|
|
120
125
|
// If no updates found, return the current document
|
|
121
126
|
if (!unsortedUpdates.length) {
|
|
122
|
-
// Set the
|
|
127
|
+
// Set the didDocument in didResolutionResult based on currentDocument
|
|
123
128
|
didResolutionResult.didDocument = currentDocument;
|
|
124
|
-
// Set
|
|
129
|
+
// Set other required fields in the didResolutionResult
|
|
125
130
|
didResolutionResult.didDocumentMetadata.deactivated = !!currentDocument.deactivated;
|
|
131
|
+
didResolutionResult.didDocumentMetadata.versionId = versionId ?? '1';
|
|
126
132
|
// Return the didResolutionResult early
|
|
127
133
|
return didResolutionResult;
|
|
128
134
|
}
|
|
129
135
|
// Process the updates to apply updates to bring the current DID Document to its more current state
|
|
130
|
-
const result = await Resolve.updates(currentDocument, unsortedUpdates, resolutionOptions.versionTime,
|
|
136
|
+
const result = await Resolve.updates(currentDocument, unsortedUpdates, resolutionOptions.versionTime, versionId);
|
|
131
137
|
// Set all of the required fields in the didResolutionResult
|
|
132
|
-
didResolutionResult.didDocument = result.
|
|
133
|
-
didResolutionResult.didDocumentMetadata
|
|
134
|
-
didResolutionResult.didDocumentMetadata.versionId = result.versionId;
|
|
135
|
-
didResolutionResult.didDocumentMetadata.deactivated = !!result.currentDocument.deactivated;
|
|
138
|
+
didResolutionResult.didDocument = result.didDocument;
|
|
139
|
+
didResolutionResult.didDocumentMetadata = result.metadata;
|
|
136
140
|
// Return didResolutionResult;
|
|
137
141
|
return didResolutionResult;
|
|
138
142
|
}
|
|
@@ -215,7 +219,7 @@ export class DidBtcr2 {
|
|
|
215
219
|
// If no bitcoin network connection provided, initialize default
|
|
216
220
|
bitcoin ??= new BitcoinNetworkConnection();
|
|
217
221
|
// Announce the signed update to the blockchain using the specified beacon(s)
|
|
218
|
-
|
|
222
|
+
await Update.announce(beaconService, signed, secretKey, bitcoin);
|
|
219
223
|
// Return signed update if announced successfully
|
|
220
224
|
return signed;
|
|
221
225
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"did-btcr2.js","sourceRoot":"","sources":["../../src/did-btcr2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"did-btcr2.js","sourceRoot":"","sources":["../../src/did-btcr2.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,12 +17,6 @@ export class DidDocumentBuilder {
|
|
|
17
17
|
this.document['@context'] = initialDocument['@context'];
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
withController(controller) {
|
|
21
|
-
if (controller) {
|
|
22
|
-
this.document.controller = controller ?? [this.document.id];
|
|
23
|
-
}
|
|
24
|
-
return this;
|
|
25
|
-
}
|
|
26
20
|
withAuthentication(authentication) {
|
|
27
21
|
if (authentication) {
|
|
28
22
|
this.document.authentication = authentication;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"did-document-builder.js","sourceRoot":"","sources":["../../../src/utils/did-document-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,EAAE,WAAW,EAAyB,MAAM,mBAAmB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IACrB,QAAQ,GAAyB,EAAE,CAAC;IAE5C,YAAY,eAAqC;QAC/C,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,gBAAgB,CAAC,gCAAgC,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;QACtG,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,eAAe,CAAC,kBAAkB,IAAI,EAAE,CAAC;QAE5E,IAAI,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"did-document-builder.js","sourceRoot":"","sources":["../../../src/utils/did-document-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,EAAE,WAAW,EAAyB,MAAM,mBAAmB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IACrB,QAAQ,GAAyB,EAAE,CAAC;IAE5C,YAAY,eAAqC;QAC/C,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,gBAAgB,CAAC,gCAAgC,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;QACtG,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,eAAe,CAAC,kBAAkB,IAAI,EAAE,CAAC;QAE5E,IAAI,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,kBAAkB,CAAC,cAAqD;QACtE,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB,CAAC,eAAsD;QACxE,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,eAAe,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wBAAwB,CAAC,oBAA2D;QAClF,IAAI,oBAAoB,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wBAAwB,CAAC,oBAA2D;QAClF,IAAI,oBAAoB,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,OAA6B;QACvC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,QAAuB,CAAC,CAAC;QAElE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,IAAI,WAAW,CAAC,GAAwB,CAAC,KAAK,SAAS,EAAE,CAAC;gBACxD,OAAO,WAAW,CAAC,GAAwB,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;CACF"}
|