koilib 2.7.0 → 2.8.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/dist/koinos.js +70 -25
- package/dist/koinos.min.js +1 -1
- package/lib/Serializer.d.ts +6 -2
- package/lib/Serializer.js +10 -4
- package/lib/Serializer.js.map +1 -1
- package/lib/Signer.d.ts +20 -6
- package/lib/Signer.js +60 -21
- package/lib/Signer.js.map +1 -1
- package/lib/browser/Serializer.d.ts +6 -2
- package/lib/browser/Serializer.js +10 -4
- package/lib/browser/Serializer.js.map +1 -1
- package/lib/browser/Signer.d.ts +20 -6
- package/lib/browser/Signer.js +60 -21
- package/lib/browser/Signer.js.map +1 -1
- package/package.json +1 -1
package/lib/browser/Signer.js
CHANGED
|
@@ -109,7 +109,6 @@ class Signer {
|
|
|
109
109
|
}
|
|
110
110
|
else {
|
|
111
111
|
this.serializer = new Serializer_1.Serializer(protocol_proto_json_1.default, {
|
|
112
|
-
defaultTypeName: "active_transaction_data",
|
|
113
112
|
bytesConversion: false,
|
|
114
113
|
});
|
|
115
114
|
}
|
|
@@ -211,15 +210,12 @@ class Signer {
|
|
|
211
210
|
}
|
|
212
211
|
}
|
|
213
212
|
/**
|
|
214
|
-
* Function to sign a
|
|
215
|
-
*
|
|
216
|
-
*
|
|
217
|
-
* @
|
|
213
|
+
* Function to sign a hash value. It returns the signature encoded
|
|
214
|
+
* in base64. The signature is in compact format with the
|
|
215
|
+
* recovery byte
|
|
216
|
+
* @param hash Hash value. Also known as digest
|
|
218
217
|
*/
|
|
219
|
-
async
|
|
220
|
-
if (!tx.active)
|
|
221
|
-
throw new Error("Active data is not defined");
|
|
222
|
-
const hash = (0, sha256_1.sha256)((0, utils_1.decodeBase64)(tx.active));
|
|
218
|
+
async signHash(hash) {
|
|
223
219
|
const [compSignature, recovery] = await secp.sign(hash, this.privateKey, {
|
|
224
220
|
recovered: true,
|
|
225
221
|
canonical: true,
|
|
@@ -228,11 +224,41 @@ class Signer {
|
|
|
228
224
|
const compactSignature = new Uint8Array(65);
|
|
229
225
|
compactSignature.set([recovery + 31], 0);
|
|
230
226
|
compactSignature.set(compSignature, 1);
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
227
|
+
return (0, utils_1.encodeBase64)(compactSignature);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Function to sign a transaction. It's important to remark that
|
|
231
|
+
* the transaction parameter is modified inside this function.
|
|
232
|
+
* @param tx - Unsigned transaction
|
|
233
|
+
*/
|
|
234
|
+
async signTransaction(tx) {
|
|
235
|
+
if (!tx.active)
|
|
236
|
+
throw new Error("Active data is not defined");
|
|
237
|
+
const hash = (0, sha256_1.sha256)((0, utils_1.decodeBase64)(tx.active));
|
|
238
|
+
tx.signature_data = await this.signHash(hash);
|
|
239
|
+
// multihash 0x1220. 12: code sha2-256. 20: length (32 bytes)
|
|
240
|
+
tx.id = `0x1220${(0, utils_1.toHexString)(hash)}`;
|
|
234
241
|
return tx;
|
|
235
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Function to sign a block for federated consensus. That is,
|
|
245
|
+
* just the ecdsa signature. For other algorithms, like PoW,
|
|
246
|
+
* you have to sign the block and then process the signature
|
|
247
|
+
* to add the extra data (nonce in the case of PoW).
|
|
248
|
+
* @param block - Unsigned block
|
|
249
|
+
*/
|
|
250
|
+
async signBlock(block) {
|
|
251
|
+
const activeBytes = (0, utils_1.decodeBase64)(block.active);
|
|
252
|
+
const headerBytes = await this.serializer.serialize(block.header, "block_header", { bytesConversion: true });
|
|
253
|
+
const headerActiveBytes = new Uint8Array(headerBytes.length + activeBytes.length);
|
|
254
|
+
headerActiveBytes.set(headerBytes, 0);
|
|
255
|
+
headerActiveBytes.set(activeBytes, headerBytes.length);
|
|
256
|
+
const hash = (0, sha256_1.sha256)(headerActiveBytes);
|
|
257
|
+
block.signature_data = await this.signHash(hash);
|
|
258
|
+
// multihash 0x1220. 12: code sha2-256. 20: length (32 bytes)
|
|
259
|
+
block.id = `0x1220${(0, utils_1.toHexString)(hash)}`;
|
|
260
|
+
return block;
|
|
261
|
+
}
|
|
236
262
|
/**
|
|
237
263
|
* Function to sign and send a transaction. It internally uses
|
|
238
264
|
* [[Provider.sendTransaction]]
|
|
@@ -298,7 +324,7 @@ class Signer {
|
|
|
298
324
|
* defaultTypeName: "pow_signature_data",
|
|
299
325
|
* });
|
|
300
326
|
*
|
|
301
|
-
* const signer = await
|
|
327
|
+
* const signer = await signer.recoverPublicKey(block, {
|
|
302
328
|
* transformSignature: async (signatureData) => {
|
|
303
329
|
* const powSignatureData = await serializer.deserialize(signatureData);
|
|
304
330
|
* return powSignatureData.recoverable_signature;
|
|
@@ -306,7 +332,7 @@ class Signer {
|
|
|
306
332
|
* });
|
|
307
333
|
* ```
|
|
308
334
|
*/
|
|
309
|
-
|
|
335
|
+
async recoverPublicKey(txOrBlock, opts) {
|
|
310
336
|
if (!txOrBlock.active)
|
|
311
337
|
throw new Error("active is not defined");
|
|
312
338
|
if (!txOrBlock.signature_data)
|
|
@@ -319,7 +345,20 @@ class Signer {
|
|
|
319
345
|
if (opts && typeof opts.compressed !== "undefined") {
|
|
320
346
|
compressed = opts.compressed;
|
|
321
347
|
}
|
|
322
|
-
const
|
|
348
|
+
const block = txOrBlock;
|
|
349
|
+
let hash;
|
|
350
|
+
const activeBytes = (0, utils_1.decodeBase64)(block.active);
|
|
351
|
+
if (block.header) {
|
|
352
|
+
const headerBytes = await this.serializer.serialize(block.header, "block_header", { bytesConversion: true });
|
|
353
|
+
const headerActiveBytes = new Uint8Array(headerBytes.length + activeBytes.length);
|
|
354
|
+
headerActiveBytes.set(headerBytes, 0);
|
|
355
|
+
headerActiveBytes.set(activeBytes, headerBytes.length);
|
|
356
|
+
hash = (0, sha256_1.sha256)(headerActiveBytes);
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
// transaction
|
|
360
|
+
hash = (0, sha256_1.sha256)(activeBytes);
|
|
361
|
+
}
|
|
323
362
|
const compactSignatureHex = (0, utils_1.toHexString)((0, utils_1.decodeBase64)(signatureData));
|
|
324
363
|
const recovery = Number(`0x${compactSignatureHex.slice(0, 2)}`) - 31;
|
|
325
364
|
const rHex = compactSignatureHex.slice(2, 66);
|
|
@@ -340,7 +379,7 @@ class Signer {
|
|
|
340
379
|
* The output format can be compressed (default) or uncompressed.
|
|
341
380
|
* @example
|
|
342
381
|
* ```ts
|
|
343
|
-
* const publicKey = await
|
|
382
|
+
* const publicKey = await signer.recoverAddress(tx);
|
|
344
383
|
* ```
|
|
345
384
|
*
|
|
346
385
|
* If the signature data contains more data, like in the
|
|
@@ -374,7 +413,7 @@ class Signer {
|
|
|
374
413
|
* defaultTypeName: "pow_signature_data",
|
|
375
414
|
* });
|
|
376
415
|
*
|
|
377
|
-
* const signer = await
|
|
416
|
+
* const signer = await signer.recoverAddress(block, {
|
|
378
417
|
* transformSignature: async (signatureData) => {
|
|
379
418
|
* const powSignatureData = await serializer.deserialize(signatureData);
|
|
380
419
|
* return powSignatureData.recoverable_signature;
|
|
@@ -382,8 +421,8 @@ class Signer {
|
|
|
382
421
|
* });
|
|
383
422
|
* ```
|
|
384
423
|
*/
|
|
385
|
-
|
|
386
|
-
const publicKey = await
|
|
424
|
+
async recoverAddress(txOrBlock, opts) {
|
|
425
|
+
const publicKey = await this.recoverPublicKey(txOrBlock, opts);
|
|
387
426
|
return (0, utils_1.bitcoinAddress)((0, utils_1.toUint8Array)(publicKey));
|
|
388
427
|
}
|
|
389
428
|
/**
|
|
@@ -410,7 +449,7 @@ class Signer {
|
|
|
410
449
|
nonce,
|
|
411
450
|
operations,
|
|
412
451
|
};
|
|
413
|
-
const buffer = await this.serializer.serialize(activeData2);
|
|
452
|
+
const buffer = await this.serializer.serialize(activeData2, "active_transaction_data");
|
|
414
453
|
return {
|
|
415
454
|
active: (0, utils_1.encodeBase64)(buffer),
|
|
416
455
|
};
|
|
@@ -421,7 +460,7 @@ class Signer {
|
|
|
421
460
|
async decodeTransaction(tx) {
|
|
422
461
|
if (!tx.active)
|
|
423
462
|
throw new Error("Active data is not defined");
|
|
424
|
-
return this.serializer.deserialize(tx.active);
|
|
463
|
+
return this.serializer.deserialize(tx.active, "active_transaction_data");
|
|
425
464
|
}
|
|
426
465
|
}
|
|
427
466
|
exports.Signer = Signer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Signer.js","sourceRoot":"","sources":["../../src/Signer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAAsC;AACtC,iDAA8C;AAC9C,uDAAyC;AAUzC,gGAAiE;AACjE,mCAQiB;AACjB,6CAA0C;AAkB1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,MAAa,MAAM;IA0BjB;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAWX;QACC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAC5E,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,CAAC,UAAU,EAAE;YAChB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;SAChC;aAAM;YACL,IAAI,CAAC,UAAU,GAAG,IAAI,uBAAU,CAAC,6BAAY,EAAE;gBAC7C,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"Signer.js","sourceRoot":"","sources":["../../src/Signer.ts"],"names":[],"mappings":"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"}
|