koilib 2.6.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.
Files changed (43) hide show
  1. package/README.md +5 -5
  2. package/dist/koinos.js +178 -688
  3. package/dist/koinos.min.js +1 -1
  4. package/lib/Contract.d.ts +9 -11
  5. package/lib/Contract.js +12 -12
  6. package/lib/Contract.js.map +1 -1
  7. package/lib/Provider.d.ts +24 -17
  8. package/lib/Provider.js +83 -81
  9. package/lib/Provider.js.map +1 -1
  10. package/lib/Serializer.d.ts +6 -2
  11. package/lib/Serializer.js +10 -4
  12. package/lib/Serializer.js.map +1 -1
  13. package/lib/Signer.d.ts +24 -10
  14. package/lib/Signer.js +71 -24
  15. package/lib/Signer.js.map +1 -1
  16. package/lib/browser/Contract.d.ts +200 -0
  17. package/lib/browser/Contract.js +298 -0
  18. package/lib/browser/Contract.js.map +1 -0
  19. package/lib/browser/Provider.d.ts +160 -0
  20. package/lib/browser/Provider.js +246 -0
  21. package/lib/browser/Provider.js.map +1 -0
  22. package/lib/browser/Serializer.d.ts +85 -0
  23. package/lib/browser/Serializer.js +175 -0
  24. package/lib/browser/Serializer.js.map +1 -0
  25. package/lib/browser/Signer.d.ts +310 -0
  26. package/lib/browser/Signer.js +468 -0
  27. package/lib/browser/Signer.js.map +1 -0
  28. package/lib/browser/index.d.ts +7 -0
  29. package/lib/browser/index.js +34 -0
  30. package/lib/browser/index.js.map +1 -0
  31. package/lib/browser/index2.d.ts +2 -0
  32. package/lib/browser/index2.js +33 -0
  33. package/lib/browser/index2.js.map +1 -0
  34. package/lib/browser/interface.d.ts +279 -0
  35. package/lib/browser/interface.js +3 -0
  36. package/lib/browser/interface.js.map +1 -0
  37. package/lib/browser/jsonDescriptors/krc20-proto.json +183 -0
  38. package/lib/browser/jsonDescriptors/protocol-proto.json +246 -0
  39. package/lib/browser/utils.d.ts +326 -0
  40. package/lib/browser/utils.js +252 -0
  41. package/lib/browser/utils.js.map +1 -0
  42. package/lib/interface.d.ts +22 -21
  43. package/package.json +9 -6
package/lib/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 transaction. It's important to remark that
215
- * the transaction parameter is modified inside this function.
216
- * @param tx - Unsigned transaction
217
- * @returns
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 signTransaction(tx) {
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
- tx.signature_data = (0, utils_1.encodeBase64)(compactSignature);
232
- const multihash = `0x1220${(0, utils_1.toHexString)(hash)}`; // 12: code sha2-256. 20: length (32 bytes)
233
- tx.id = multihash;
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]]
@@ -247,7 +273,15 @@ class Signer {
247
273
  await this.signTransaction(tx);
248
274
  if (!this.provider)
249
275
  throw new Error("provider is undefined");
250
- return this.provider.sendTransaction(tx);
276
+ await this.provider.sendTransaction(tx);
277
+ return {
278
+ ...tx,
279
+ wait: async (type = "byBlock", timeout = 30000) => {
280
+ if (!this.provider)
281
+ throw new Error("provider is undefined");
282
+ return this.provider.wait(tx.id, type, timeout);
283
+ },
284
+ };
251
285
  }
252
286
  /**
253
287
  * Function to recover the public key from a signed
@@ -290,7 +324,7 @@ class Signer {
290
324
  * defaultTypeName: "pow_signature_data",
291
325
  * });
292
326
  *
293
- * const signer = await Signer.recoverPublicKey(block, {
327
+ * const signer = await signer.recoverPublicKey(block, {
294
328
  * transformSignature: async (signatureData) => {
295
329
  * const powSignatureData = await serializer.deserialize(signatureData);
296
330
  * return powSignatureData.recoverable_signature;
@@ -298,7 +332,7 @@ class Signer {
298
332
  * });
299
333
  * ```
300
334
  */
301
- static async recoverPublicKey(txOrBlock, opts) {
335
+ async recoverPublicKey(txOrBlock, opts) {
302
336
  if (!txOrBlock.active)
303
337
  throw new Error("active is not defined");
304
338
  if (!txOrBlock.signature_data)
@@ -311,7 +345,20 @@ class Signer {
311
345
  if (opts && typeof opts.compressed !== "undefined") {
312
346
  compressed = opts.compressed;
313
347
  }
314
- const hash = (0, sha256_1.sha256)((0, utils_1.decodeBase64)(txOrBlock.active));
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
+ }
315
362
  const compactSignatureHex = (0, utils_1.toHexString)((0, utils_1.decodeBase64)(signatureData));
316
363
  const recovery = Number(`0x${compactSignatureHex.slice(0, 2)}`) - 31;
317
364
  const rHex = compactSignatureHex.slice(2, 66);
@@ -332,7 +379,7 @@ class Signer {
332
379
  * The output format can be compressed (default) or uncompressed.
333
380
  * @example
334
381
  * ```ts
335
- * const publicKey = await Signer.recoverAddress(tx);
382
+ * const publicKey = await signer.recoverAddress(tx);
336
383
  * ```
337
384
  *
338
385
  * If the signature data contains more data, like in the
@@ -366,7 +413,7 @@ class Signer {
366
413
  * defaultTypeName: "pow_signature_data",
367
414
  * });
368
415
  *
369
- * const signer = await Signer.recoverAddress(block, {
416
+ * const signer = await signer.recoverAddress(block, {
370
417
  * transformSignature: async (signatureData) => {
371
418
  * const powSignatureData = await serializer.deserialize(signatureData);
372
419
  * return powSignatureData.recoverable_signature;
@@ -374,15 +421,15 @@ class Signer {
374
421
  * });
375
422
  * ```
376
423
  */
377
- static async recoverAddress(txOrBlock, opts) {
378
- const publicKey = await Signer.recoverPublicKey(txOrBlock, opts);
424
+ async recoverAddress(txOrBlock, opts) {
425
+ const publicKey = await this.recoverPublicKey(txOrBlock, opts);
379
426
  return (0, utils_1.bitcoinAddress)((0, utils_1.toUint8Array)(publicKey));
380
427
  }
381
428
  /**
382
429
  * Function to encode a transaction
383
430
  * @param activeData - Active data consists of nonce, rc_limit, and
384
431
  * operations. Do not set the nonce to get it from the blockchain
385
- * using the provider. The rc_limit is 1000000 by default.
432
+ * using the provider. The rc_limit is 1e8 by default.
386
433
  * @returns A transaction encoded. The active field is encoded in
387
434
  * base64url
388
435
  */
@@ -395,14 +442,14 @@ class Signer {
395
442
  // this depends on the final architecture for names on Koinos
396
443
  nonce = await this.provider.getNonce(this.getAddress());
397
444
  }
398
- const rcLimit = activeData.rc_limit === undefined ? 1000000 : activeData.rc_limit;
445
+ const rcLimit = activeData.rc_limit === undefined ? 1e8 : activeData.rc_limit;
399
446
  const operations = activeData.operations ? activeData.operations : [];
400
447
  const activeData2 = {
401
448
  rc_limit: rcLimit,
402
449
  nonce,
403
450
  operations,
404
451
  };
405
- const buffer = await this.serializer.serialize(activeData2);
452
+ const buffer = await this.serializer.serialize(activeData2, "active_transaction_data");
406
453
  return {
407
454
  active: (0, utils_1.encodeBase64)(buffer),
408
455
  };
@@ -413,7 +460,7 @@ class Signer {
413
460
  async decodeTransaction(tx) {
414
461
  if (!tx.active)
415
462
  throw new Error("Active data is not defined");
416
- return this.serializer.deserialize(tx.active);
463
+ return this.serializer.deserialize(tx.active, "active_transaction_data");
417
464
  }
418
465
  }
419
466
  exports.Signer = 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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"}
@@ -0,0 +1,200 @@
1
+ import { Signer, SignerInterface } from "./Signer";
2
+ import { Provider } from "./Provider";
3
+ import { Serializer } from "./Serializer";
4
+ import { CallContractOperationNested, UploadContractOperationNested, TransactionJsonWait, Abi, TransactionOptions, DecodedOperationJson } from "./interface";
5
+ /**
6
+ * The contract class contains the contract ID and contract entries
7
+ * definition needed to encode/decode operations during the
8
+ * interaction with the user and the communication with the RPC node.
9
+ *
10
+ * @example
11
+ *
12
+ * ```ts
13
+ * const { Contract, Provider, Signer, utils } = require("koilib");
14
+ * const rpcNodes = ["http://api.koinos.io:8080"];
15
+ * const privateKey = "f186a5de49797bfd52dc42505c33d75a46822ed5b60046e09d7c336242e20200";
16
+ * const provider = new Provider(rpcNodes);
17
+ * const signer = new Signer({ privateKey, provider });
18
+ * const koinContract = new Contract({
19
+ * id: "19JntSm8pSNETT9aHTwAUHC5RMoaSmgZPJ",
20
+ * abi: utils.Krc20Abi,
21
+ * provider,
22
+ * signer,
23
+ * });
24
+ * const koin = koinContract.functions;
25
+ *
26
+ * // optional: preformat input/output
27
+ * koinContract.abi.methods.balanceOf.preformatInput = (owner) =>
28
+ * ({ owner });
29
+ * koinContract.abi.methods.balanceOf.preformatOutput = (res) =>
30
+ * utils.formatUnits(res.value, 8);
31
+ * koinContract.abi.methods.transfer.preformatInput = (input) => ({
32
+ * from: signer.getAddress(),
33
+ * to: input.to,
34
+ * value: utils.parseUnits(input.value, 8),
35
+ * });
36
+ *
37
+ * async funtion main() {
38
+ * // Get balance
39
+ * const { result } = await koin.balanceOf("12fN2CQnuJM8cMnWZ1hPtM4knjLME8E4PD");
40
+ * console.log(result)
41
+ *
42
+ * // Transfer
43
+ * const { transaction } = await koin.transfer({
44
+ * to: "172AB1FgCsYrRAW5cwQ8KjadgxofvgPFd6",
45
+ * value: "10.0001",
46
+ * });
47
+ * console.log(`Transaction id ${transaction.id} submitted`);
48
+ *
49
+ * // wait to be mined
50
+ * const blockNumber = await transaction.wait();
51
+ * console.log(`Transaction mined. Block number: ${blockNumber}`);
52
+ * }
53
+ *
54
+ * main();
55
+ * ```
56
+ */
57
+ export declare class Contract {
58
+ /**
59
+ * Contract ID
60
+ */
61
+ id?: Uint8Array;
62
+ /**
63
+ * Set of functions to interact with the smart
64
+ * contract. These functions are automatically generated
65
+ * in the constructor of the class
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * const owner = "1Gvqdo9if6v6tFomEuTuMWP1D7H7U9yksb";
70
+ * await koinContract.functions.balanceOf({ owner });
71
+ * ```
72
+ */
73
+ functions: {
74
+ [x: string]: <T = Record<string, unknown>>(args?: unknown, opts?: TransactionOptions) => Promise<{
75
+ operation: CallContractOperationNested;
76
+ transaction?: TransactionJsonWait;
77
+ result?: T;
78
+ }>;
79
+ };
80
+ /**
81
+ * Application Binary Interface
82
+ */
83
+ abi?: Abi;
84
+ /**
85
+ * Signer interacting with the smart contract
86
+ */
87
+ signer?: SignerInterface;
88
+ /**
89
+ * Provider to connect with the blockchain
90
+ */
91
+ provider?: Provider;
92
+ /**
93
+ * Serializer to serialize/deserialize data types
94
+ */
95
+ serializer?: Serializer;
96
+ /**
97
+ * Bytecode. Needed to deploy the smart contract.
98
+ */
99
+ bytecode?: Uint8Array;
100
+ /**
101
+ * Options to apply when creating transactions.
102
+ * By default it set rc_limit to 1e8, sendTransaction true,
103
+ * sendAbis true, and nonce undefined (to get it from the blockchain)
104
+ */
105
+ options: TransactionOptions;
106
+ constructor(c: {
107
+ id?: string;
108
+ abi?: Abi;
109
+ bytecode?: Uint8Array;
110
+ options?: TransactionOptions;
111
+ signer?: Signer;
112
+ provider?: Provider;
113
+ /**
114
+ * Set this option if you can not use _eval_ functions
115
+ * in the current environment. In such cases, the
116
+ * serializer must come from an environment where it
117
+ * is able to use those functions.
118
+ */
119
+ serializer?: Serializer;
120
+ });
121
+ /**
122
+ * Compute contract Id
123
+ */
124
+ static computeContractId(address: string): Uint8Array;
125
+ /**
126
+ * Get contract Id
127
+ */
128
+ getId(): string;
129
+ /**
130
+ * Function to deploy a new smart contract.
131
+ * The Bytecode must be defined in the constructor of the class
132
+ * @example
133
+ * ```ts
134
+ * const privateKey = "f186a5de49797bfd52dc42505c33d75a46822ed5b60046e09d7c336242e20200";
135
+ * const provider = new Provider(["http://api.koinos.io:8080"]);
136
+ * const signer = new Signer({ privateKey, provider });
137
+ * const bytecode = new Uint8Array([1, 2, 3, 4]);
138
+ * const contract = new Contract({ signer, provider, bytecode });
139
+ * const { transaction } = await contract.deploy();
140
+ * // wait to be mined
141
+ * const blockNumber = await transaction.wait();
142
+ * console.log(`Contract uploaded in block number ${blockNumber}`);
143
+ * ```
144
+ */
145
+ deploy(options?: TransactionOptions): Promise<{
146
+ operation: UploadContractOperationNested;
147
+ transaction?: TransactionJsonWait;
148
+ }>;
149
+ /**
150
+ * Encondes a contract operation using Koinos serialization
151
+ * and taking the contract entries as reference to build it
152
+ * @param op - Operation to encode
153
+ * @returns Operation encoded
154
+ * @example
155
+ * ```ts
156
+ * const opEncoded = contract.encodeOperation({
157
+ * name: "transfer",
158
+ * args: {
159
+ * from: "12fN2CQnuJM8cMnWZ1hPtM4knjLME8E4PD",
160
+ * to: "172AB1FgCsYrRAW5cwQ8KjadgxofvgPFd6",
161
+ * value: "1000",
162
+ * }
163
+ * });
164
+ *
165
+ * console.log(opEncoded);
166
+ * // {
167
+ * // call_contract: {
168
+ * // contract_id: "19JntSm8pSNETT9aHTwAUHC5RMoaSmgZPJ",
169
+ * // entry_point: 0x62efa292,
170
+ * // args: "MBWFsaWNlA2JvYgAAAAAAAAPo",
171
+ * // }
172
+ * // }
173
+ * ```
174
+ */
175
+ encodeOperation(op: DecodedOperationJson): Promise<CallContractOperationNested>;
176
+ /**
177
+ * Decodes a contract operation to be human readable
178
+ * @example
179
+ * ```ts
180
+ * const opDecoded = contract.decodeOperation({
181
+ * call_contract: {
182
+ * contract_id: "19JntSm8pSNETT9aHTwAUHC5RMoaSmgZPJ",
183
+ * entry_point: 0x62efa292,
184
+ * args: "MBWFsaWNlA2JvYgAAAAAAAAPo",
185
+ * }
186
+ * });
187
+ * console.log(opDecoded);
188
+ * // {
189
+ * // name: "transfer",
190
+ * // args: {
191
+ * // from: "12fN2CQnuJM8cMnWZ1hPtM4knjLME8E4PD",
192
+ * // to: "172AB1FgCsYrRAW5cwQ8KjadgxofvgPFd6",
193
+ * // value: "1000",
194
+ * // },
195
+ * // }
196
+ * ```
197
+ */
198
+ decodeOperation(op: CallContractOperationNested): Promise<DecodedOperationJson>;
199
+ }
200
+ export default Contract;