@ckb-ccc/core 0.1.2 → 1.0.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.
Files changed (110) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/address/address.advanced.d.ts.map +1 -1
  3. package/dist/address/address.advanced.js +6 -2
  4. package/dist/barrel.d.ts +1 -1
  5. package/dist/barrel.d.ts.map +1 -1
  6. package/dist/barrel.js +1 -1
  7. package/dist/bytes/index.d.ts +35 -0
  8. package/dist/bytes/index.d.ts.map +1 -1
  9. package/dist/bytes/index.js +60 -4
  10. package/dist/ckb/advanced.d.ts +0 -1
  11. package/dist/ckb/advanced.d.ts.map +1 -1
  12. package/dist/ckb/advanced.js +0 -1
  13. package/dist/ckb/script.d.ts +17 -58
  14. package/dist/ckb/script.d.ts.map +1 -1
  15. package/dist/ckb/script.js +29 -78
  16. package/dist/ckb/transaction.d.ts +125 -264
  17. package/dist/ckb/transaction.d.ts.map +1 -1
  18. package/dist/ckb/transaction.js +146 -357
  19. package/dist/molecule/barrel.d.ts +4 -0
  20. package/dist/molecule/barrel.d.ts.map +1 -0
  21. package/dist/molecule/barrel.js +3 -0
  22. package/dist/molecule/codec.d.ts +2 -0
  23. package/dist/molecule/codec.d.ts.map +1 -1
  24. package/dist/molecule/codec.js +57 -44
  25. package/dist/molecule/entity.d.ts +119 -0
  26. package/dist/molecule/entity.d.ts.map +1 -0
  27. package/dist/molecule/entity.js +134 -0
  28. package/dist/molecule/index.d.ts +1 -2
  29. package/dist/molecule/index.d.ts.map +1 -1
  30. package/dist/molecule/index.js +1 -2
  31. package/dist/molecule/predefined.d.ts +13 -20
  32. package/dist/molecule/predefined.d.ts.map +1 -1
  33. package/dist/molecule/predefined.js +14 -54
  34. package/dist/num/index.d.ts.map +1 -1
  35. package/dist/num/index.js +2 -2
  36. package/dist/signer/btc/verify.js +1 -1
  37. package/dist/signer/doge/verify.d.ts.map +1 -1
  38. package/dist/signer/doge/verify.js +3 -1
  39. package/dist/utils/index.d.ts +3 -0
  40. package/dist/utils/index.d.ts.map +1 -1
  41. package/dist.commonjs/address/address.advanced.d.ts.map +1 -1
  42. package/dist.commonjs/address/address.advanced.js +6 -2
  43. package/dist.commonjs/barrel.d.ts +1 -1
  44. package/dist.commonjs/barrel.d.ts.map +1 -1
  45. package/dist.commonjs/barrel.js +1 -14
  46. package/dist.commonjs/bytes/index.d.ts +35 -0
  47. package/dist.commonjs/bytes/index.d.ts.map +1 -1
  48. package/dist.commonjs/bytes/index.js +62 -4
  49. package/dist.commonjs/ckb/advanced.d.ts +0 -1
  50. package/dist.commonjs/ckb/advanced.d.ts.map +1 -1
  51. package/dist.commonjs/ckb/advanced.js +0 -14
  52. package/dist.commonjs/ckb/script.d.ts +17 -58
  53. package/dist.commonjs/ckb/script.d.ts.map +1 -1
  54. package/dist.commonjs/ckb/script.js +29 -102
  55. package/dist.commonjs/ckb/transaction.d.ts +125 -264
  56. package/dist.commonjs/ckb/transaction.d.ts.map +1 -1
  57. package/dist.commonjs/ckb/transaction.js +167 -408
  58. package/dist.commonjs/molecule/barrel.d.ts +4 -0
  59. package/dist.commonjs/molecule/barrel.d.ts.map +1 -0
  60. package/dist.commonjs/{ckb/molecule.advanced/index.js → molecule/barrel.js} +3 -8
  61. package/dist.commonjs/molecule/codec.d.ts +2 -0
  62. package/dist.commonjs/molecule/codec.d.ts.map +1 -1
  63. package/dist.commonjs/molecule/codec.js +56 -43
  64. package/dist.commonjs/molecule/entity.d.ts +119 -0
  65. package/dist.commonjs/molecule/entity.d.ts.map +1 -0
  66. package/dist.commonjs/molecule/entity.js +139 -0
  67. package/dist.commonjs/molecule/index.d.ts +1 -2
  68. package/dist.commonjs/molecule/index.d.ts.map +1 -1
  69. package/dist.commonjs/molecule/index.js +13 -4
  70. package/dist.commonjs/molecule/predefined.d.ts +13 -20
  71. package/dist.commonjs/molecule/predefined.d.ts.map +1 -1
  72. package/dist.commonjs/molecule/predefined.js +14 -77
  73. package/dist.commonjs/num/index.d.ts.map +1 -1
  74. package/dist.commonjs/num/index.js +2 -2
  75. package/dist.commonjs/signer/btc/verify.js +1 -1
  76. package/dist.commonjs/signer/doge/verify.d.ts.map +1 -1
  77. package/dist.commonjs/signer/doge/verify.js +3 -1
  78. package/dist.commonjs/utils/index.d.ts +3 -0
  79. package/dist.commonjs/utils/index.d.ts.map +1 -1
  80. package/package.json +1 -1
  81. package/src/address/address.advanced.ts +6 -2
  82. package/src/barrel.ts +1 -1
  83. package/src/bytes/index.ts +70 -6
  84. package/src/ckb/advanced.ts +0 -1
  85. package/src/ckb/script.ts +20 -85
  86. package/src/ckb/transaction.ts +123 -416
  87. package/src/molecule/barrel.ts +3 -0
  88. package/src/molecule/codec.ts +82 -66
  89. package/src/molecule/entity.ts +183 -0
  90. package/src/molecule/index.ts +1 -2
  91. package/src/molecule/predefined.ts +20 -69
  92. package/src/num/index.ts +2 -5
  93. package/src/signer/btc/verify.ts +1 -1
  94. package/src/signer/doge/verify.ts +3 -1
  95. package/src/utils/index.ts +5 -0
  96. package/dist/ckb/molecule.advanced/generated.d.ts +0 -355
  97. package/dist/ckb/molecule.advanced/generated.d.ts.map +0 -1
  98. package/dist/ckb/molecule.advanced/generated.js +0 -1468
  99. package/dist/ckb/molecule.advanced/index.d.ts +0 -6
  100. package/dist/ckb/molecule.advanced/index.d.ts.map +0 -1
  101. package/dist/ckb/molecule.advanced/index.js +0 -7
  102. package/dist.commonjs/ckb/molecule.advanced/generated.d.ts +0 -355
  103. package/dist.commonjs/ckb/molecule.advanced/generated.d.ts.map +0 -1
  104. package/dist.commonjs/ckb/molecule.advanced/generated.js +0 -1535
  105. package/dist.commonjs/ckb/molecule.advanced/index.d.ts +0 -6
  106. package/dist.commonjs/ckb/molecule.advanced/index.d.ts.map +0 -1
  107. package/src/ckb/molecule.advanced/blockchain.mol +0 -118
  108. package/src/ckb/molecule.advanced/generated.d.ts +0 -444
  109. package/src/ckb/molecule.advanced/generated.js +0 -1804
  110. package/src/ckb/molecule.advanced/index.ts +0 -11
@@ -1,59 +1,42 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Transaction = exports.CellDepVec = exports.CellDep = exports.DepType = exports.CellOutputVec = exports.CellOutput = exports.CellInputVec = exports.CellInput = exports.OutPoint = exports.ScriptOpt = exports.Script = exports.HashType = exports.Hash = exports.StringOpt = exports.StringVec = exports.String = exports.Byte32Vec = exports.Byte32Opt = exports.Byte32 = exports.BytesVec = exports.BytesOpt = exports.Bytes = exports.Uint512Opt = exports.Uint256Opt = exports.Uint128Opt = exports.Uint64Opt = exports.Uint32Opt = exports.Uint16Opt = exports.Uint8Opt = exports.Uint512 = exports.Uint512BE = exports.Uint512LE = exports.Uint256 = exports.Uint256BE = exports.Uint256LE = exports.Uint128 = exports.Uint128BE = exports.Uint128LE = exports.Uint64 = exports.Uint64BE = exports.Uint64LE = exports.Uint32 = exports.Uint32BE = exports.Uint32LE = exports.Uint16 = exports.Uint16BE = exports.Uint16LE = exports.Uint8 = void 0;
3
+ exports.StringOpt = exports.StringVec = exports.String = exports.Byte32Vec = exports.Byte32Opt = exports.Byte32 = exports.BytesVec = exports.BytesOpt = exports.Bytes = exports.Uint512Vec = exports.Uint512Opt = exports.Uint512 = exports.Uint512BE = exports.Uint512LE = exports.Uint256Vec = exports.Uint256Opt = exports.Uint256 = exports.Uint256BE = exports.Uint256LE = exports.Uint128Vec = exports.Uint128Opt = exports.Uint128 = exports.Uint128BE = exports.Uint128LE = exports.Uint64Vec = exports.Uint64Opt = exports.Uint64 = exports.Uint64BE = exports.Uint64LE = exports.Uint32Vec = exports.Uint32Opt = exports.Uint32 = exports.Uint32BE = exports.Uint32LE = exports.Uint16Vec = exports.Uint16Opt = exports.Uint16 = exports.Uint16BE = exports.Uint16LE = exports.Uint8Vec = exports.Uint8Opt = exports.Uint8 = void 0;
27
4
  const index_js_1 = require("../bytes/index.js");
28
- const ckb = __importStar(require("../ckb/index.js"));
29
5
  const index_js_2 = require("../hex/index.js");
30
6
  const codec_js_1 = require("./codec.js");
31
7
  exports.Uint8 = (0, codec_js_1.uintNumber)(1, true);
8
+ exports.Uint8Opt = (0, codec_js_1.option)(exports.Uint8);
9
+ exports.Uint8Vec = (0, codec_js_1.vector)(exports.Uint8);
32
10
  exports.Uint16LE = (0, codec_js_1.uintNumber)(2, true);
33
11
  exports.Uint16BE = (0, codec_js_1.uintNumber)(2);
34
12
  exports.Uint16 = exports.Uint16LE;
13
+ exports.Uint16Opt = (0, codec_js_1.option)(exports.Uint16);
14
+ exports.Uint16Vec = (0, codec_js_1.vector)(exports.Uint16);
35
15
  exports.Uint32LE = (0, codec_js_1.uintNumber)(4, true);
36
16
  exports.Uint32BE = (0, codec_js_1.uintNumber)(4);
37
17
  exports.Uint32 = exports.Uint32LE;
18
+ exports.Uint32Opt = (0, codec_js_1.option)(exports.Uint32);
19
+ exports.Uint32Vec = (0, codec_js_1.vector)(exports.Uint32);
38
20
  exports.Uint64LE = (0, codec_js_1.uint)(8, true);
39
21
  exports.Uint64BE = (0, codec_js_1.uint)(8);
40
22
  exports.Uint64 = exports.Uint64LE;
23
+ exports.Uint64Opt = (0, codec_js_1.option)(exports.Uint64);
24
+ exports.Uint64Vec = (0, codec_js_1.vector)(exports.Uint64);
41
25
  exports.Uint128LE = (0, codec_js_1.uint)(16, true);
42
26
  exports.Uint128BE = (0, codec_js_1.uint)(16);
43
27
  exports.Uint128 = exports.Uint128LE;
28
+ exports.Uint128Opt = (0, codec_js_1.option)(exports.Uint128);
29
+ exports.Uint128Vec = (0, codec_js_1.vector)(exports.Uint128);
44
30
  exports.Uint256LE = (0, codec_js_1.uint)(32, true);
45
31
  exports.Uint256BE = (0, codec_js_1.uint)(32);
46
32
  exports.Uint256 = exports.Uint256LE;
33
+ exports.Uint256Opt = (0, codec_js_1.option)(exports.Uint256);
34
+ exports.Uint256Vec = (0, codec_js_1.vector)(exports.Uint256);
47
35
  exports.Uint512LE = (0, codec_js_1.uint)(64, true);
48
36
  exports.Uint512BE = (0, codec_js_1.uint)(64);
49
37
  exports.Uint512 = exports.Uint512LE;
50
- exports.Uint8Opt = (0, codec_js_1.option)(exports.Uint8);
51
- exports.Uint16Opt = (0, codec_js_1.option)(exports.Uint16);
52
- exports.Uint32Opt = (0, codec_js_1.option)(exports.Uint32);
53
- exports.Uint64Opt = (0, codec_js_1.option)(exports.Uint64);
54
- exports.Uint128Opt = (0, codec_js_1.option)(exports.Uint128);
55
- exports.Uint256Opt = (0, codec_js_1.option)(exports.Uint256);
56
38
  exports.Uint512Opt = (0, codec_js_1.option)(exports.Uint512);
39
+ exports.Uint512Vec = (0, codec_js_1.vector)(exports.Uint512);
57
40
  exports.Bytes = (0, codec_js_1.byteVec)({
58
41
  encode: (value) => (0, index_js_1.bytesFrom)(value),
59
42
  decode: (buffer) => (0, index_js_2.hexFrom)(buffer),
@@ -73,49 +56,3 @@ exports.String = (0, codec_js_1.byteVec)({
73
56
  });
74
57
  exports.StringVec = (0, codec_js_1.vector)(exports.String);
75
58
  exports.StringOpt = (0, codec_js_1.option)(exports.String);
76
- exports.Hash = exports.Byte32;
77
- exports.HashType = codec_js_1.Codec.from({
78
- byteLength: 1,
79
- encode: ckb.hashTypeToBytes,
80
- decode: ckb.hashTypeFromBytes,
81
- });
82
- exports.Script = (0, codec_js_1.table)({
83
- codeHash: exports.Hash,
84
- hashType: exports.HashType,
85
- args: exports.Bytes,
86
- }).map({ outMap: ckb.Script.from });
87
- exports.ScriptOpt = (0, codec_js_1.option)(exports.Script);
88
- exports.OutPoint = (0, codec_js_1.struct)({
89
- txHash: exports.Hash,
90
- index: exports.Uint32,
91
- }).map({ outMap: ckb.OutPoint.from });
92
- exports.CellInput = (0, codec_js_1.struct)({
93
- previousOutput: exports.OutPoint,
94
- since: exports.Uint64,
95
- }).map({ outMap: ckb.CellInput.from });
96
- exports.CellInputVec = (0, codec_js_1.vector)(exports.CellInput);
97
- exports.CellOutput = (0, codec_js_1.table)({
98
- capacity: exports.Uint64,
99
- lock: exports.Script,
100
- type: exports.ScriptOpt,
101
- }).map({ outMap: ckb.CellOutput.from });
102
- exports.CellOutputVec = (0, codec_js_1.vector)(exports.CellOutput);
103
- exports.DepType = codec_js_1.Codec.from({
104
- byteLength: 1,
105
- encode: ckb.depTypeToBytes,
106
- decode: ckb.depTypeFromBytes,
107
- });
108
- exports.CellDep = (0, codec_js_1.struct)({
109
- outPoint: exports.OutPoint,
110
- depType: exports.DepType,
111
- }).map({ outMap: ckb.CellDep.from });
112
- exports.CellDepVec = (0, codec_js_1.vector)(exports.CellDep);
113
- exports.Transaction = (0, codec_js_1.table)({
114
- version: exports.Uint32,
115
- cellDeps: exports.CellDepVec,
116
- headerDeps: exports.Byte32Vec,
117
- inputs: exports.CellInputVec,
118
- outputs: exports.CellOutputVec,
119
- outputsData: exports.BytesVec,
120
- witnesses: exports.BytesVec,
121
- }).map({ outMap: ckb.Transaction.from });
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/num/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAA0B,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,iBAAiB,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC;AAEzB;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzD;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,CAS7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,CAS7D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAUzC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAE1C;AAED;;;;;;;;;;;;GAYG;AAEH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAE9D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAEhE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAUhE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,GAAG,CAEhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,GAAG,CAElD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,GAAG,CAElD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/num/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAA0B,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,iBAAiB,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC;AAEzB;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzD;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,CAS7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,CAS7D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAUzC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAE1C;AAED;;;;;;;;;;;;GAYG;AAEH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAE9D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAEhE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAOhE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,GAAG,CAEhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,GAAG,CAElD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,GAAG,CAElD"}
@@ -143,7 +143,7 @@ function numBeToBytes(val, bytes) {
143
143
  if (bytes == null) {
144
144
  return rawBytes;
145
145
  }
146
- return (0, index_js_1.bytesConcat)(Array.from(Array(bytes - rawBytes.length), () => 0), rawBytes);
146
+ return (0, index_js_1.bytesConcat)("00".repeat(bytes - rawBytes.length), rawBytes);
147
147
  }
148
148
  /**
149
149
  * Converts a byte array to a Num (bigint) assuming little-endian order.
@@ -173,7 +173,7 @@ function numFromBytes(val) {
173
173
  * ```
174
174
  */
175
175
  function numLeFromBytes(val) {
176
- return numBeFromBytes([...(0, index_js_1.bytesFrom)(val)].reverse());
176
+ return numBeFromBytes((0, index_js_1.bytesFrom)(val).reverse());
177
177
  }
178
178
  /**
179
179
  * Converts a byte array to a Num (bigint) assuming big-endian order.
@@ -37,6 +37,6 @@ function btcPublicKeyFromP2pkhAddress(address) {
37
37
  */
38
38
  function verifyMessageBtcEcdsa(message, signature, publicKey) {
39
39
  const challenge = typeof message === "string" ? message : (0, index_js_2.hexFrom)(message).slice(2);
40
- const [_, ...rawSign] = (0, index_js_1.bytesFrom)(signature, "base64");
40
+ const rawSign = (0, index_js_1.bytesFrom)(signature, "base64").slice(1);
41
41
  return secp256k1_1.secp256k1.verify((0, index_js_1.bytesFrom)(rawSign), (0, bitcoinjs_message_1.magicHash)(challenge), publicKey);
42
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/signer/doge/verify.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAO5D;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAqBT"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/signer/doge/verify.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAO5D;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAuBT"}
@@ -11,7 +11,9 @@ const verify_js_1 = require("../btc/verify.js");
11
11
  */
12
12
  function verifyMessageDogeEcdsa(message, signature, address) {
13
13
  const challenge = typeof message === "string" ? message : (0, index_js_2.hexFrom)(message).slice(2);
14
- const [recoveryBit, ...rawSign] = (0, index_js_1.bytesFrom)(signature, "base64");
14
+ const signatureBytes = (0, index_js_1.bytesFrom)(signature, "base64");
15
+ const recoveryBit = signatureBytes[0];
16
+ const rawSign = signatureBytes.slice(1);
15
17
  const sig = secp256k1_1.secp256k1.Signature.fromCompact((0, index_js_2.hexFrom)(rawSign).slice(2)).addRecoveryBit(recoveryBit - 31);
16
18
  return ((0, verify_js_1.btcPublicKeyFromP2pkhAddress)(address) ===
17
19
  (0, index_js_2.hexFrom)((0, verify_js_1.btcEcdsaPublicKeyHash)(sig
@@ -83,6 +83,9 @@ export declare function reduceAsync<T>(values: T[], accumulator: (a: T, b: T) =>
83
83
  */
84
84
  export declare function reduceAsync<T, V>(values: V[], accumulator: (a: T, b: V, i: number, values: V[]) => Promise<T | undefined | null | void> | T | undefined | null | void, init: T | Promise<T>): Promise<T>;
85
85
  export declare function sleep(ms: NumLike): Promise<unknown>;
86
+ export type Constructor<T> = {
87
+ new (...args: any[]): T;
88
+ };
86
89
  /**
87
90
  * @public
88
91
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,iBAAiB,CAAC;AAEnD;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EACxB,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAC1B,KAAK,EAAE,SAAS,GACf,SAAS,CAAC;AACb;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,SAAS,CAAC;AAChF;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;AACrE;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EACxB,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAC1B,KAAK,EAAE,CAAC,GAAG,SAAS,GACnB,CAAC,GAAG,SAAS,CAAC;AACjB;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EACxB,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAC1B,KAAK,EAAE,CAAC,GAAG,IAAI,GACd,CAAC,GAAG,SAAS,CAAC;AACjB;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EACxB,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAC1B,KAAK,EAAE,SAAS,GAAG,IAAI,GACtB,SAAS,CAAC;AACb;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EACxB,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAC1B,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,GAC1B,CAAC,GAAG,SAAS,CAAC;AAoBjB;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,MAAM,EAAE,CAAC,EAAE,EACX,WAAW,EAAE,CACX,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,KACD,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GACtE,OAAO,CAAC,CAAC,CAAC,CAAC;AACd;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAAE,CAAC,EACpC,MAAM,EAAE,CAAC,EAAE,EACX,WAAW,EAAE,CACX,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,CAAC,EAAE,KACR,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,EACvE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAAC;AAqCd,wBAAgB,KAAK,CAAC,EAAE,EAAE,OAAO,oBAEhC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEpD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,iBAAiB,CAAC;AAEnD;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EACxB,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAC1B,KAAK,EAAE,SAAS,GACf,SAAS,CAAC;AACb;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,SAAS,CAAC;AAChF;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;AACrE;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EACxB,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAC1B,KAAK,EAAE,CAAC,GAAG,SAAS,GACnB,CAAC,GAAG,SAAS,CAAC;AACjB;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EACxB,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAC1B,KAAK,EAAE,CAAC,GAAG,IAAI,GACd,CAAC,GAAG,SAAS,CAAC;AACjB;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EACxB,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAC1B,KAAK,EAAE,SAAS,GAAG,IAAI,GACtB,SAAS,CAAC;AACb;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EACxB,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAC1B,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,GAC1B,CAAC,GAAG,SAAS,CAAC;AAoBjB;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,MAAM,EAAE,CAAC,EAAE,EACX,WAAW,EAAE,CACX,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,KACD,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GACtE,OAAO,CAAC,CAAC,CAAC,CAAC;AACd;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAAE,CAAC,EACpC,MAAM,EAAE,CAAC,EAAE,EACX,WAAW,EAAE,CACX,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,CAAC,EAAE,KACR,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,EACvE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAAC;AAqCd,wBAAgB,KAAK,CAAC,EAAE,EAAE,OAAO,oBAEhC;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAE3B,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEpD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ckb-ccc/core",
3
- "version": "0.1.2",
3
+ "version": "1.0.1",
4
4
  "description": "Core of CCC - CKBer's Codebase",
5
5
  "author": "Hanssen0 <hanssen0@hanssen0.com>",
6
6
  "license": "MIT",
@@ -29,7 +29,9 @@ export function addressPayloadFromString(address: string): {
29
29
  // Try parse full format address
30
30
  try {
31
31
  const { words, prefix } = bech32m.decode(address, ADDRESS_BECH32_LIMIT);
32
- const [formatType, ...payload] = bech32m.fromWords(words);
32
+ const decoded = bech32m.fromWords(words);
33
+ const formatType = decoded[0];
34
+ const payload = decoded.slice(1);
33
35
 
34
36
  if (formatType === (AddressFormat.Full as number)) {
35
37
  return { prefix, format: AddressFormat.Full, payload };
@@ -39,7 +41,9 @@ export function addressPayloadFromString(address: string): {
39
41
  // Try parse legacy 2019 format address
40
42
  try {
41
43
  const { prefix, words } = bech32.decode(address, ADDRESS_BECH32_LIMIT);
42
- const [formatType, ...payload] = bech32.fromWords(words);
44
+ const decoded = bech32.fromWords(words);
45
+ const formatType = decoded[0];
46
+ const payload = decoded.slice(1);
43
47
  if (
44
48
  [
45
49
  AddressFormat.FullData,
package/src/barrel.ts CHANGED
@@ -6,7 +6,7 @@ export * from "./fixedPoint/index.js";
6
6
  export * from "./hasher/index.js";
7
7
  export * from "./hex/index.js";
8
8
  export * from "./keystore/index.js";
9
- export * as mol from "./molecule/index.js";
9
+ export * from "./molecule/index.js";
10
10
  export * from "./num/index.js";
11
11
  export * from "./signer/index.js";
12
12
  export * from "./utils/index.js";
@@ -10,6 +10,41 @@ export type Bytes = Uint8Array;
10
10
  */
11
11
  export type BytesLike = string | Uint8Array | ArrayBuffer | ArrayLike<number>;
12
12
 
13
+ /**
14
+ * Concatenates multiple byte-like arrays to the first number array.
15
+ * @public
16
+ *
17
+ * @param result - The number array as result
18
+ * @param args - The byte-like arrays to concatenate.
19
+ * @returns The first number array
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const concatenatedBytes = [1, 2];
24
+ * bytesConcatTo(
25
+ * concatenatedBytes
26
+ * new Uint8Array([3, 4]),
27
+ * "hello",
28
+ * [5, 6, 7]
29
+ * );
30
+ * console.log(concatenatedBytes); // Outputs [1, 2, 3, 4, /* bytes of "hello" *\/, 5, 6, 7]
31
+ * ```
32
+ */
33
+
34
+ export function bytesConcatTo(
35
+ result: number[],
36
+ ...args: BytesLike[]
37
+ ): number[] {
38
+ return args.reduce((acc: number[], v) => {
39
+ const bytes = bytesFrom(v);
40
+ // Spread operator will cause call stack size exceeded
41
+ for (const byte of bytes) {
42
+ result.push(byte);
43
+ }
44
+ return acc;
45
+ }, result);
46
+ }
47
+
13
48
  /**
14
49
  * Concatenates multiple byte-like arrays into a single byte array.
15
50
  * @public
@@ -30,12 +65,7 @@ export type BytesLike = string | Uint8Array | ArrayBuffer | ArrayLike<number>;
30
65
  */
31
66
 
32
67
  export function bytesConcat(...args: BytesLike[]): Bytes {
33
- return new Uint8Array(
34
- args.reduce((acc: number[], v) => {
35
- acc.push(...bytesFrom(v));
36
- return acc;
37
- }, []),
38
- );
68
+ return new Uint8Array(bytesConcatTo([], ...args));
39
69
  }
40
70
 
41
71
  /**
@@ -118,3 +148,37 @@ export function bytesFrom(
118
148
  }
119
149
  return new Uint8Array(bytes);
120
150
  }
151
+
152
+ /**
153
+ * Compares two byte-like values for equality.
154
+ * @public
155
+ *
156
+ * @param a - The first byte-like value to compare.
157
+ * @param b - The second byte-like value to compare.
158
+ * @returns A boolean indicating whether the two byte-like values are equal.
159
+ *
160
+ * @example
161
+ * ```typescript
162
+ * bytesEq([1], Uint8Array.from([1])) // true
163
+ * ```
164
+ */
165
+ export function bytesEq(a: BytesLike, b: BytesLike): boolean {
166
+ if (a === b) {
167
+ return true;
168
+ }
169
+
170
+ const x = bytesFrom(a);
171
+ const y = bytesFrom(b);
172
+
173
+ if (x.length !== y.length) {
174
+ return false;
175
+ }
176
+
177
+ for (let i = 0; i < x.length; i++) {
178
+ if (x[i] !== y[i]) {
179
+ return false;
180
+ }
181
+ }
182
+
183
+ return true;
184
+ }
@@ -1,3 +1,2 @@
1
- export * as moleculeCodecCkb from "./molecule.advanced/index.js";
2
1
  export * from "./script.advanced.js";
3
2
  export * from "./transaction.advanced.js";
package/src/ckb/script.ts CHANGED
@@ -1,14 +1,19 @@
1
1
  import { Bytes, BytesLike, bytesFrom } from "../bytes/index.js";
2
2
  import { Client, KnownScript } from "../client/index.js";
3
- import { hashCkb } from "../hasher/index.js";
4
3
  import { Hex, HexLike, hexFrom } from "../hex/index.js";
5
- import * as mol from "./molecule.advanced/index.js";
4
+ import { mol } from "../molecule/index.js";
6
5
  import {
7
6
  HASH_TYPES,
8
7
  HASH_TYPE_TO_NUM,
9
8
  NUM_TO_HASH_TYPE,
10
9
  } from "./script.advanced.js";
11
10
 
11
+ export const HashTypeCodec: mol.Codec<HashTypeLike, HashType> = mol.Codec.from({
12
+ byteLength: 1,
13
+ encode: hashTypeToBytes,
14
+ decode: hashTypeFromBytes,
15
+ });
16
+
12
17
  /**
13
18
  * @public
14
19
  */
@@ -102,7 +107,14 @@ export type ScriptLike = {
102
107
  /**
103
108
  * @public
104
109
  */
105
- export class Script {
110
+ @mol.codec(
111
+ mol.table({
112
+ codeHash: mol.Byte32,
113
+ hashType: HashTypeCodec,
114
+ args: mol.Bytes,
115
+ }),
116
+ )
117
+ export class Script extends mol.Entity.Base<ScriptLike, Script>() {
106
118
  /**
107
119
  * Creates an instance of Script.
108
120
  *
@@ -114,7 +126,9 @@ export class Script {
114
126
  public codeHash: Hex,
115
127
  public hashType: HashType,
116
128
  public args: Hex,
117
- ) {}
129
+ ) {
130
+ super();
131
+ }
118
132
 
119
133
  get occupiedSize(): number {
120
134
  return 33 + bytesFrom(this.args).length;
@@ -194,85 +208,6 @@ export class Script {
194
208
  *
195
209
  * @returns An object representing the script in molecule data format.
196
210
  */
197
-
198
- _toMolData() {
199
- return {
200
- codeHash: bytesFrom(this.codeHash),
201
- hashType: hashTypeToBytes(this.hashType),
202
- args: bytesFrom(this.args),
203
- };
204
- }
205
-
206
- /**
207
- * Converts the Script instance to bytes.
208
- *
209
- * @returns A Uint8Array containing the script bytes.
210
- *
211
- * @example
212
- * ```typescript
213
- * const scriptBytes = script.toBytes();
214
- * ```
215
- */
216
-
217
- toBytes(): Bytes {
218
- return bytesFrom(mol.SerializeScript(this._toMolData()));
219
- }
220
-
221
- /**
222
- * Get hash of a script
223
- *
224
- * @returns Hash of this script
225
- *
226
- * @example
227
- * ```typescript
228
- * const hash = script.hash();
229
- * ```
230
- */
231
- hash(): Hex {
232
- return hashCkb(this.toBytes());
233
- }
234
-
235
- /**
236
- * Creates a Script instance from a byte-like value or molecule Script.
237
- *
238
- * @param bytes - The byte-like value or molecule Script to convert.
239
- * @returns A Script instance.
240
- *
241
- * @example
242
- * ```typescript
243
- * const script = Script.fromBytes(new Uint8Array([/* script bytes *\/]));
244
- * ```
245
- */
246
-
247
- static fromBytes(bytes: BytesLike | mol.Script): Script {
248
- const view =
249
- bytes instanceof mol.Script ? bytes : new mol.Script(bytesFrom(bytes));
250
-
251
- return new Script(
252
- hexFrom(view.getCodeHash().raw()),
253
- hashTypeFromBytes([view.getHashType()]),
254
- hexFrom(view.getArgs().raw()),
255
- );
256
- }
257
-
258
- /**
259
- * Compares the current Script instance with another ScriptLike object for equality.
260
- *
261
- * @param val - The ScriptLike object to compare with.
262
- * @returns True if the scripts are equal, otherwise false.
263
- *
264
- * @example
265
- * ```typescript
266
- * const isEqual = script.eq(anotherScript);
267
- * ```
268
- */
269
-
270
- eq(val: ScriptLike): boolean {
271
- const script = Script.from(val);
272
- return (
273
- this.codeHash === script.codeHash &&
274
- this.args === script.args &&
275
- this.hashType === script.hashType
276
- );
277
- }
278
211
  }
212
+
213
+ export const ScriptOpt = mol.option(Script);