koilib 1.5.0 → 2.3.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/lib/Signer.js CHANGED
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- /* eslint-disable no-param-reassign */
3
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
3
  if (k2 === undefined) k2 = k;
5
4
  Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
@@ -19,15 +18,17 @@ var __importStar = (this && this.__importStar) || function (mod) {
19
18
  __setModuleDefault(result, mod);
20
19
  return result;
21
20
  };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
22
24
  Object.defineProperty(exports, "__esModule", { value: true });
23
25
  exports.Signer = void 0;
26
+ /* eslint-disable no-param-reassign */
24
27
  const js_sha256_1 = require("js-sha256");
25
28
  const secp = __importStar(require("noble-secp256k1"));
26
- const abi_1 = require("./abi");
27
- const Multihash_1 = require("./Multihash");
28
- const serializer_1 = require("./serializer");
29
+ const protocol_proto_json_1 = __importDefault(require("./jsonDescriptors/protocol-proto.json"));
29
30
  const utils_1 = require("./utils");
30
- const VariableBlob_1 = require("./VariableBlob");
31
+ const Serializer_1 = require("./Serializer");
31
32
  /**
32
33
  * The Signer Class contains the private key needed to sign transactions.
33
34
  * It can be created using the seed, wif, or private key
@@ -35,7 +36,8 @@ const VariableBlob_1 = require("./VariableBlob");
35
36
  * @example
36
37
  * using private key as hex string
37
38
  * ```ts
38
- * var signer = new Signer("ec8601a24f81decd57f4b611b5ac6eb801cb3780bb02c0f9cdfe9d09daaddf9c");
39
+ * var privateKey = "ec8601a24f81decd57f4b611b5ac6eb801cb3780bb02c0f9cdfe9d09daaddf9c";
40
+ * var signer = new Signer({ privateKey });
39
41
  * ```
40
42
  * <br>
41
43
  *
@@ -47,14 +49,15 @@ const VariableBlob_1 = require("./VariableBlob");
47
49
  * 1, 203, 55, 128, 187, 2, 192, 249,
48
50
  * 205, 254, 157, 9, 218, 173, 223, 156
49
51
  * ]);
50
- * var signer = new Signer(buffer);
52
+ * var signer = new Signer({ privateKey: buffer });
51
53
  * ```
52
54
  *
53
55
  * <br>
54
56
  *
55
57
  * using private key as bigint
56
58
  * ```ts
57
- * var signer = new Signer(106982601049961974618234078204952280507266494766432547312316920283818886029212n);
59
+ * var privateKey = 106982601049961974618234078204952280507266494766432547312316920283818886029212n;
60
+ * var signer = new Signer({ privateKey });
58
61
  * ```
59
62
  *
60
63
  * <br>
@@ -70,6 +73,15 @@ const VariableBlob_1 = require("./VariableBlob");
70
73
  * ```ts
71
74
  * var signer = Signer.fromWif("L59UtJcTdNBnrH2QSBA5beSUhRufRu3g6tScDTite6Msuj7U93tM");
72
75
  * ```
76
+ *
77
+ * <br>
78
+ *
79
+ * defining a provider
80
+ * ```ts
81
+ * var provider = new Provider(["https://example.com/jsonrpc"]);
82
+ * var privateKey = "ec8601a24f81decd57f4b611b5ac6eb801cb3780bb02c0f9cdfe9d09daaddf9c";
83
+ * var signer = new Signer({ privateKey, provider });
84
+ * ```
73
85
  */
74
86
  class Signer {
75
87
  /**
@@ -79,22 +91,34 @@ class Signer {
79
91
  *
80
92
  * @param privateKey - Private key as hexstring, bigint or Uint8Array
81
93
  * @param compressed - compressed format is true by default
94
+ * @param provider - provider to connect with the blockchain
82
95
  * @example
83
96
  * ```ts
84
- * cons signer = new Signer("ec8601a24f81decd57f4b611b5ac6eb801cb3780bb02c0f9cdfe9d09daaddf9c");
97
+ * const privateKey = "ec8601a24f81decd57f4b611b5ac6eb801cb3780bb02c0f9cdfe9d09daaddf9c";
98
+ * cons signer = new Signer({ privateKey });
85
99
  * console.log(signer.getAddress());
86
100
  * // 1MbL6mG8ASAvSYdoMnGUfG3ZXkmQ2dpL5b
87
101
  * ```
88
102
  */
89
- constructor(privateKey, compressed = true) {
90
- this.compressed = compressed;
91
- this.privateKey = privateKey;
92
- if (typeof privateKey === "string") {
93
- this.publicKey = secp.getPublicKey(privateKey, this.compressed);
103
+ constructor(c) {
104
+ this.compressed = typeof c.compressed === "undefined" ? true : c.compressed;
105
+ this.privateKey = c.privateKey;
106
+ this.provider = c.provider;
107
+ if (c.serializer) {
108
+ this.serializer = c.serializer;
109
+ }
110
+ else {
111
+ this.serializer = new Serializer_1.Serializer(protocol_proto_json_1.default, {
112
+ defaultTypeName: "active_transaction_data",
113
+ bytesConversion: false,
114
+ });
115
+ }
116
+ if (typeof c.privateKey === "string") {
117
+ this.publicKey = secp.getPublicKey(c.privateKey, this.compressed);
94
118
  this.address = utils_1.bitcoinAddress(utils_1.toUint8Array(this.publicKey));
95
119
  }
96
120
  else {
97
- this.publicKey = secp.getPublicKey(privateKey, this.compressed);
121
+ this.publicKey = secp.getPublicKey(c.privateKey, this.compressed);
98
122
  this.address = utils_1.bitcoinAddress(this.publicKey);
99
123
  }
100
124
  }
@@ -112,7 +136,10 @@ class Signer {
112
136
  static fromWif(wif) {
113
137
  const compressed = wif[0] !== "5";
114
138
  const privateKey = utils_1.bitcoinDecode(wif);
115
- return new Signer(utils_1.toHexString(privateKey), compressed);
139
+ return new Signer({
140
+ privateKey: utils_1.toHexString(privateKey),
141
+ compressed,
142
+ });
116
143
  }
117
144
  /**
118
145
  * Function to import a private key from the seed
@@ -128,7 +155,7 @@ class Signer {
128
155
  */
129
156
  static fromSeed(seed, compressed) {
130
157
  const privateKey = js_sha256_1.sha256(seed);
131
- return new Signer(privateKey, compressed);
158
+ return new Signer({ privateKey, compressed });
132
159
  }
133
160
  /**
134
161
  * @param compressed - determines if the address should be
@@ -190,8 +217,9 @@ class Signer {
190
217
  * @returns
191
218
  */
192
219
  async signTransaction(tx) {
193
- const blobActiveData = serializer_1.serialize(tx.active_data, abi_1.abiActiveData);
194
- const hash = js_sha256_1.sha256(blobActiveData.buffer);
220
+ if (!tx.active)
221
+ throw new Error("Active data is not defined");
222
+ const hash = js_sha256_1.sha256(utils_1.decodeBase64(tx.active));
195
223
  const [hex, recovery] = await secp.sign(hash, this.privateKey, {
196
224
  recovered: true,
197
225
  canonical: true,
@@ -201,30 +229,96 @@ class Signer {
201
229
  const rHex = r.toString(16).padStart(64, "0");
202
230
  const sHex = s.toString(16).padStart(64, "0");
203
231
  const recId = (recovery + 31).toString(16).padStart(2, "0");
204
- tx.signature_data = new VariableBlob_1.VariableBlob(utils_1.toUint8Array(recId + rHex + sHex)).toString();
205
- tx.id = new Multihash_1.Multihash(utils_1.toUint8Array(hash)).toString();
232
+ tx.signature_data = utils_1.encodeBase64(utils_1.toUint8Array(recId + rHex + sHex));
233
+ const multihash = `0x1220${hash}`; // 12: code sha2-256. 20: length (32 bytes)
234
+ tx.id = multihash;
206
235
  return tx;
207
236
  }
208
237
  /**
209
- * Function to recover the public key from a signed transaction.
210
- * The output format can be compressed or uncompressed.
211
- * @param tx - signed transaction
212
- * @param compressed - output format (compressed by default)
238
+ * Function to sign and send a transaction. It internally uses
239
+ * [[Provider.sendTransaction]]
240
+ * @param tx - Transaction to send. It will be signed inside this function
241
+ * if it is not signed yet
242
+ * @param _abis - Collection of Abis to parse the operations in the
243
+ * transaction. This parameter is optional.
244
+ * @returns
245
+ */
246
+ async sendTransaction(tx, _abis) {
247
+ if (!tx.signature_data || !tx.id)
248
+ await this.signTransaction(tx);
249
+ if (!this.provider)
250
+ throw new Error("provider is undefined");
251
+ return this.provider.sendTransaction(tx);
252
+ }
253
+ /**
254
+ * Function to recover the public key from a signed
255
+ * transaction or block.
256
+ * The output format can be compressed (default) or uncompressed.
257
+ *
258
+ * @example
259
+ * ```ts
260
+ * const publicKey = await Signer.recoverPublicKey(tx);
261
+ * ```
262
+ *
263
+ * If the signature data contains more data, like in the
264
+ * blocks for PoW consensus, use the "transformSignature"
265
+ * function to extract the signature.
266
+ *
267
+ * @example
268
+ * ```ts
269
+ * const powDescriptorJson = {
270
+ * nested: {
271
+ * mypackage: {
272
+ * nested: {
273
+ * pow_signature_data: {
274
+ * fields: {
275
+ * nonce: {
276
+ * type: "bytes",
277
+ * id: 1,
278
+ * },
279
+ * recoverable_signature: {
280
+ * type: "bytes",
281
+ * id: 2,
282
+ * },
283
+ * },
284
+ * },
285
+ * },
286
+ * },
287
+ * },
288
+ * };
289
+ *
290
+ * const serializer = new Serializer(powDescriptorJson, {
291
+ * defaultTypeName: "pow_signature_data",
292
+ * });
293
+ *
294
+ * const signer = await Signer.recoverPublicKey(block, {
295
+ * transformSignature: async (signatureData) => {
296
+ * const powSignatureData = await serializer.deserialize(signatureData);
297
+ * return powSignatureData.recoverable_signature;
298
+ * },
299
+ * });
300
+ * ```
213
301
  */
214
- static recoverPublicKey(tx, compressed = true) {
215
- if (!tx.active_data)
216
- throw new Error("active_data is not defined");
217
- if (!tx.signature_data)
302
+ static async recoverPublicKey(txOrBlock, opts) {
303
+ if (!txOrBlock.active)
304
+ throw new Error("active is not defined");
305
+ if (!txOrBlock.signature_data)
218
306
  throw new Error("signature_data is not defined");
219
- const blobActiveData = serializer_1.serialize(tx.active_data, abi_1.abiActiveData);
220
- const hash = js_sha256_1.sha256(blobActiveData.buffer);
221
- const bufferCompactSignature = new VariableBlob_1.VariableBlob(tx.signature_data).buffer;
222
- const compactSignatureHex = utils_1.toHexString(bufferCompactSignature);
223
- const recovery = Number("0x" + compactSignatureHex.slice(0, 2)) - 31;
307
+ let signatureData = txOrBlock.signature_data;
308
+ if (opts && typeof opts.transformSignature === "function") {
309
+ signatureData = await opts.transformSignature(txOrBlock.signature_data);
310
+ }
311
+ let compressed = true;
312
+ if (opts && typeof opts.compressed !== "undefined") {
313
+ compressed = opts.compressed;
314
+ }
315
+ const hash = js_sha256_1.sha256(utils_1.decodeBase64(txOrBlock.active));
316
+ const compactSignatureHex = utils_1.toHexString(utils_1.decodeBase64(signatureData));
317
+ const recovery = Number(`0x${compactSignatureHex.slice(0, 2)}`) - 31;
224
318
  const rHex = compactSignatureHex.slice(2, 66);
225
319
  const sHex = compactSignatureHex.slice(66);
226
- const r = BigInt("0x" + rHex);
227
- const s = BigInt("0x" + sHex);
320
+ const r = BigInt(`0x${rHex}`);
321
+ const s = BigInt(`0x${sHex}`);
228
322
  const sig = new secp.Signature(r, s);
229
323
  const publicKey = secp.recoverPublicKey(hash, sig.toHex(), recovery);
230
324
  if (!publicKey)
@@ -234,15 +328,94 @@ class Signer {
234
328
  return secp.Point.fromHex(publicKey).toHex(true);
235
329
  }
236
330
  /**
237
- * Function to recover the signer address from a signed transaction.
238
- * The output format can be compressed or uncompressed.
239
- * @param tx - signed transaction
240
- * @param compressed - output format (compressed by default)
331
+ * Function to recover the signer address from a signed
332
+ * transaction or block.
333
+ * The output format can be compressed (default) or uncompressed.
334
+ * @example
335
+ * ```ts
336
+ * const publicKey = await Signer.recoverAddress(tx);
337
+ * ```
338
+ *
339
+ * If the signature data contains more data, like in the
340
+ * blocks for PoW consensus, use the "transformSignature"
341
+ * function to extract the signature.
342
+ *
343
+ * @example
344
+ * ```ts
345
+ * const powDescriptorJson = {
346
+ * nested: {
347
+ * mypackage: {
348
+ * nested: {
349
+ * pow_signature_data: {
350
+ * fields: {
351
+ * nonce: {
352
+ * type: "bytes",
353
+ * id: 1,
354
+ * },
355
+ * recoverable_signature: {
356
+ * type: "bytes",
357
+ * id: 2,
358
+ * },
359
+ * },
360
+ * },
361
+ * },
362
+ * },
363
+ * },
364
+ * };
365
+ *
366
+ * const serializer = new Serializer(powDescriptorJson, {
367
+ * defaultTypeName: "pow_signature_data",
368
+ * });
369
+ *
370
+ * const signer = await Signer.recoverAddress(block, {
371
+ * transformSignature: async (signatureData) => {
372
+ * const powSignatureData = await serializer.deserialize(signatureData);
373
+ * return powSignatureData.recoverable_signature;
374
+ * },
375
+ * });
376
+ * ```
241
377
  */
242
- static recoverAddress(tx, compressed = true) {
243
- const publicKey = Signer.recoverPublicKey(tx, compressed);
378
+ static async recoverAddress(txOrBlock, opts) {
379
+ const publicKey = await Signer.recoverPublicKey(txOrBlock, opts);
244
380
  return utils_1.bitcoinAddress(utils_1.toUint8Array(publicKey));
245
381
  }
382
+ /**
383
+ * Function to encode a transaction
384
+ * @param activeData - Active data consists of nonce, rc_limit, and
385
+ * operations. Do not set the nonce to get it from the blockchain
386
+ * using the provider. The rc_limit is 1000000 by default.
387
+ * @returns A transaction encoded. The active field is encoded in
388
+ * base64url
389
+ */
390
+ async encodeTransaction(activeData) {
391
+ let { nonce } = activeData;
392
+ if (activeData.nonce === undefined) {
393
+ if (!this.provider)
394
+ throw new Error("Cannot get the nonce because provider is undefined. To skip this call set a nonce in the parameters");
395
+ // TODO: Option to resolve names
396
+ // this depends on the final architecture for names on Koinos
397
+ nonce = await this.provider.getNonce(this.getAddress());
398
+ }
399
+ const rcLimit = activeData.rc_limit === undefined ? 1000000 : activeData.rc_limit;
400
+ const operations = activeData.operations ? activeData.operations : [];
401
+ const activeData2 = {
402
+ rc_limit: rcLimit,
403
+ nonce,
404
+ operations,
405
+ };
406
+ const buffer = await this.serializer.serialize(activeData2);
407
+ return {
408
+ active: utils_1.encodeBase64(buffer),
409
+ };
410
+ }
411
+ /**
412
+ * Function to decode a transaction
413
+ */
414
+ async decodeTransaction(tx) {
415
+ if (!tx.active)
416
+ throw new Error("Active data is not defined");
417
+ return this.serializer.deserialize(tx.active);
418
+ }
246
419
  }
247
420
  exports.Signer = Signer;
248
421
  exports.default = Signer;
package/lib/Signer.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Signer.js","sourceRoot":"","sources":["../src/Signer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Signer.js","sourceRoot":"","sources":["../src/Signer.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,15 +1,7 @@
1
1
  /*! koilib - MIT License (c) Julian Gonzalez (joticajulian@gmail.com) */
2
2
  export * as utils from "./utils";
3
+ export * as interfaces from "./interface";
3
4
  export * from "./Contract";
4
- export * from "./Multihash";
5
- export * as serializer from "./serializer";
6
- export * from "./VariableBlob";
7
5
  export * from "./Signer";
8
6
  export * from "./Provider";
9
- export * from "./Wallet";
10
- export * from "./interface";
11
- /**
12
- * This namespace contains relevant ABIs and the definition of the
13
- * interface. For details on how to create ABIs see [[Abi | ABI Interface]]
14
- */
15
- export * as abi from "./abi";
7
+ export * from "./Serializer";
package/lib/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- /*! koilib - MIT License (c) Julian Gonzalez (joticajulian@gmail.com) */
3
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
3
  if (k2 === undefined) k2 = k;
5
4
  Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
@@ -23,19 +22,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
23
22
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
24
23
  };
25
24
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.abi = exports.serializer = exports.utils = void 0;
25
+ exports.interfaces = exports.utils = void 0;
26
+ /*! koilib - MIT License (c) Julian Gonzalez (joticajulian@gmail.com) */
27
+ // eslint-disable import/no-cycle
27
28
  exports.utils = __importStar(require("./utils"));
29
+ exports.interfaces = __importStar(require("./interface"));
28
30
  __exportStar(require("./Contract"), exports);
29
- __exportStar(require("./Multihash"), exports);
30
- exports.serializer = __importStar(require("./serializer"));
31
- __exportStar(require("./VariableBlob"), exports);
32
31
  __exportStar(require("./Signer"), exports);
33
32
  __exportStar(require("./Provider"), exports);
34
- __exportStar(require("./Wallet"), exports);
35
- __exportStar(require("./interface"), exports);
36
- /**
37
- * This namespace contains relevant ABIs and the definition of the
38
- * interface. For details on how to create ABIs see [[Abi | ABI Interface]]
39
- */
40
- exports.abi = __importStar(require("./abi"));
33
+ __exportStar(require("./Serializer"), exports);
41
34
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,wEAAwE;;;;;;;;;;;;;;;;;;;;;;;;;AAExE,iDAAiC;AACjC,6CAA2B;AAC3B,8CAA4B;AAC5B,2DAA2C;AAC3C,iDAA+B;AAC/B,2CAAyB;AACzB,6CAA2B;AAC3B,2CAAyB;AACzB,8CAA4B;AAE5B;;;GAGG;AACH,6CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wEAAwE;AACxE,iCAAiC;AACjC,iDAAiC;AACjC,0DAA0C;AAC1C,6CAA2B;AAC3B,2CAAyB;AACzB,6CAA2B;AAC3B,+CAA6B"}
package/lib/index2.js CHANGED
@@ -22,20 +22,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
23
  const utils = __importStar(require("./utils"));
24
24
  const Contract_1 = require("./Contract");
25
- const Multihash_1 = require("./Multihash");
26
- const serializer = __importStar(require("./serializer"));
27
- const VariableBlob_1 = require("./VariableBlob");
28
25
  const Signer_1 = require("./Signer");
29
26
  const Provider_1 = require("./Provider");
30
- const Wallet_1 = require("./Wallet");
31
- const abi = __importStar(require("./abi"));
27
+ const Serializer_1 = require("./Serializer");
32
28
  window.utils = utils;
33
29
  window.Contract = Contract_1.Contract;
34
- window.Multihash = Multihash_1.Multihash;
35
- window.serializer = serializer;
36
30
  window.Signer = Signer_1.Signer;
37
- window.VariableBlob = VariableBlob_1.VariableBlob;
38
- window.Wallet = Wallet_1.Wallet;
39
31
  window.Provider = Provider_1.Provider;
40
- window.abi = abi;
32
+ window.Serializer = Serializer_1.Serializer;
41
33
  //# sourceMappingURL=index2.js.map
package/lib/index2.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index2.js","sourceRoot":"","sources":["../src/index2.ts"],"names":[],"mappings":";AAAA,wEAAwE;;;;;;;;;;;;;;;;;;;;;AAExE,+CAAiC;AACjC,yCAAsC;AACtC,2CAAwC;AACxC,yDAA2C;AAC3C,iDAA8C;AAC9C,qCAAkC;AAClC,yCAAsC;AACtC,qCAAkC;AAClC,2CAA6B;AAI7B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,MAAM,CAAC,QAAQ,GAAG,mBAAQ,CAAC;AAC3B,MAAM,CAAC,SAAS,GAAG,qBAAS,CAAC;AAC7B,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;AAC/B,MAAM,CAAC,MAAM,GAAG,eAAM,CAAC;AACvB,MAAM,CAAC,YAAY,GAAG,2BAAY,CAAC;AACnC,MAAM,CAAC,MAAM,GAAG,eAAM,CAAC;AACvB,MAAM,CAAC,QAAQ,GAAG,mBAAQ,CAAC;AAC3B,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"index2.js","sourceRoot":"","sources":["../src/index2.ts"],"names":[],"mappings":";AAAA,wEAAwE;;;;;;;;;;;;;;;;;;;;;AAExE,+CAAiC;AACjC,yCAAsC;AACtC,qCAAkC;AAClC,yCAAsC;AACtC,6CAA0C;AAI1C,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,MAAM,CAAC,QAAQ,GAAG,mBAAQ,CAAC;AAC3B,MAAM,CAAC,MAAM,GAAG,eAAM,CAAC;AACvB,MAAM,CAAC,QAAQ,GAAG,mBAAQ,CAAC;AAC3B,MAAM,CAAC,UAAU,GAAG,uBAAU,CAAC"}