@ckb-ccc/core 0.0.2-alpha.0 → 0.0.2-alpha.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 (208) hide show
  1. package/dist/address/address.advanced.d.ts +5 -0
  2. package/dist/address/address.advanced.d.ts.map +1 -0
  3. package/dist/address/address.advanced.js +68 -0
  4. package/dist/address/advanced.d.ts +7 -9
  5. package/dist/address/advanced.d.ts.map +1 -1
  6. package/dist/address/advanced.js +50 -38
  7. package/dist/address/index.d.ts +20 -5
  8. package/dist/address/index.d.ts.map +1 -1
  9. package/dist/address/index.js +43 -32
  10. package/dist/advanced.d.ts +3 -0
  11. package/dist/advanced.d.ts.map +1 -0
  12. package/dist/{types/index.js → advanced.js} +3 -9
  13. package/dist/advancedBarrel.d.ts +4 -0
  14. package/dist/advancedBarrel.d.ts.map +1 -0
  15. package/dist/advancedBarrel.js +19 -0
  16. package/dist/barrel.d.ts +3 -2
  17. package/dist/barrel.d.ts.map +1 -1
  18. package/dist/barrel.js +3 -2
  19. package/dist/bytes.d.ts +15 -0
  20. package/dist/bytes.d.ts.map +1 -0
  21. package/dist/bytes.js +114 -0
  22. package/dist/ckb/advanced.d.ts +3 -0
  23. package/dist/ckb/advanced.d.ts.map +1 -0
  24. package/dist/ckb/advanced.js +18 -0
  25. package/dist/ckb/hasher.advanced.d.ts +2 -0
  26. package/dist/ckb/hasher.advanced.d.ts.map +1 -0
  27. package/dist/ckb/hasher.advanced.js +4 -0
  28. package/dist/ckb/hasher.d.ts +10 -0
  29. package/dist/ckb/hasher.d.ts.map +1 -0
  30. package/dist/ckb/hasher.js +26 -0
  31. package/dist/ckb/index.d.ts +3 -1
  32. package/dist/ckb/index.d.ts.map +1 -1
  33. package/dist/ckb/index.js +3 -1
  34. package/dist/ckb/types/advanced.d.ts +4 -0
  35. package/dist/ckb/types/advanced.d.ts.map +1 -0
  36. package/dist/ckb/types/advanced.js +32 -0
  37. package/dist/ckb/types/index.d.ts +3 -0
  38. package/dist/ckb/types/index.d.ts.map +1 -0
  39. package/dist/{codec → ckb/types}/index.js +1 -2
  40. package/dist/ckb/types/molecule.advanced/generated.d.ts +355 -0
  41. package/dist/ckb/types/molecule.advanced/generated.d.ts.map +1 -0
  42. package/dist/ckb/types/molecule.advanced/generated.js +1255 -0
  43. package/dist/ckb/types/molecule.advanced/index.d.ts +2 -0
  44. package/dist/ckb/types/molecule.advanced/index.d.ts.map +1 -0
  45. package/dist/ckb/types/molecule.advanced/index.js +17 -0
  46. package/dist/ckb/types/script.advanced.d.ts +4 -0
  47. package/dist/ckb/types/script.advanced.d.ts.map +1 -0
  48. package/dist/{types/ckb.advanced.js → ckb/types/script.advanced.js} +3 -3
  49. package/dist/ckb/types/script.d.ts +26 -0
  50. package/dist/ckb/types/script.d.ts.map +1 -0
  51. package/dist/ckb/types/script.js +75 -0
  52. package/dist/ckb/types/transaction.advanced.d.ts +4 -0
  53. package/dist/ckb/types/transaction.advanced.d.ts.map +1 -0
  54. package/dist/ckb/types/transaction.advanced.js +11 -0
  55. package/dist/ckb/types/transaction.d.ts +127 -0
  56. package/dist/ckb/types/transaction.d.ts.map +1 -0
  57. package/dist/ckb/types/transaction.js +266 -0
  58. package/dist/ckb/viewerCkbScript.d.ts +11 -0
  59. package/dist/ckb/viewerCkbScript.d.ts.map +1 -0
  60. package/dist/ckb/viewerCkbScript.js +18 -0
  61. package/dist/client/advanced.d.ts +3 -0
  62. package/dist/client/advanced.d.ts.map +1 -0
  63. package/dist/client/advanced.js +18 -0
  64. package/dist/client/client.d.ts +7 -4
  65. package/dist/client/client.d.ts.map +1 -1
  66. package/dist/client/client.js +1 -4
  67. package/dist/client/clientPublicMainnet.advanced.d.ts +1 -1
  68. package/dist/client/clientPublicMainnet.advanced.d.ts.map +1 -1
  69. package/dist/client/clientPublicMainnet.d.ts +5 -3
  70. package/dist/client/clientPublicMainnet.d.ts.map +1 -1
  71. package/dist/client/clientPublicMainnet.js +6 -3
  72. package/dist/client/clientPublicTestnet.advanced.d.ts +1 -1
  73. package/dist/client/clientPublicTestnet.advanced.d.ts.map +1 -1
  74. package/dist/client/clientPublicTestnet.d.ts +5 -3
  75. package/dist/client/clientPublicTestnet.d.ts.map +1 -1
  76. package/dist/client/clientPublicTestnet.js +6 -3
  77. package/dist/client/clientTypes.d.ts +2 -0
  78. package/dist/client/clientTypes.d.ts.map +1 -0
  79. package/dist/client/index.d.ts +1 -4
  80. package/dist/client/index.d.ts.map +1 -1
  81. package/dist/client/index.js +1 -19
  82. package/dist/client/jsonRpc/advanced.d.ts +88 -0
  83. package/dist/client/jsonRpc/advanced.d.ts.map +1 -0
  84. package/dist/client/jsonRpc/advanced.js +69 -0
  85. package/dist/client/jsonRpc/index.d.ts +14 -0
  86. package/dist/client/jsonRpc/index.d.ts.map +1 -0
  87. package/dist/client/jsonRpc/index.js +63 -0
  88. package/dist/fixedPoint.d.ts +9 -0
  89. package/dist/fixedPoint.d.ts.map +1 -0
  90. package/dist/fixedPoint.js +30 -0
  91. package/dist/primitive.d.ts +5 -0
  92. package/dist/primitive.d.ts.map +1 -0
  93. package/dist/signer/helpers.d.ts +7 -0
  94. package/dist/signer/helpers.d.ts.map +1 -0
  95. package/dist/signer/helpers.js +35 -0
  96. package/dist/signer/index.d.ts +3 -0
  97. package/dist/signer/index.d.ts.map +1 -0
  98. package/dist/signer/index.js +18 -0
  99. package/dist/signer/signer.d.ts +11 -0
  100. package/dist/signer/signer.d.ts.map +1 -0
  101. package/dist/signer/signer.js +13 -0
  102. package/dist/tsconfig.tsbuildinfo +1 -1
  103. package/dist/viewer.d.ts +8 -5
  104. package/dist/viewer.d.ts.map +1 -1
  105. package/dist/viewer.js +13 -0
  106. package/package.json +13 -5
  107. package/src/address/address.advanced.ts +88 -0
  108. package/src/address/advanced.ts +30 -45
  109. package/src/address/index.ts +70 -5
  110. package/src/advanced.ts +2 -0
  111. package/src/advancedBarrel.ts +3 -0
  112. package/src/barrel.ts +3 -2
  113. package/src/bytes.ts +127 -0
  114. package/src/ckb/advanced.ts +2 -0
  115. package/src/ckb/hasher.advanced.ts +1 -0
  116. package/src/ckb/hasher.ts +30 -0
  117. package/src/ckb/index.ts +3 -1
  118. package/src/ckb/types/advanced.ts +3 -0
  119. package/src/ckb/types/index.ts +2 -0
  120. package/src/ckb/types/molecule.advanced/blockchain.mol +118 -0
  121. package/src/ckb/types/molecule.advanced/generated.d.ts +433 -0
  122. package/src/ckb/types/molecule.advanced/generated.js +1376 -0
  123. package/src/ckb/types/molecule.advanced/index.ts +1 -0
  124. package/src/ckb/types/script.advanced.ts +14 -0
  125. package/src/ckb/types/script.ts +70 -0
  126. package/src/ckb/types/transaction.advanced.ts +10 -0
  127. package/src/ckb/types/transaction.ts +366 -0
  128. package/src/ckb/viewerCkbScript.ts +21 -0
  129. package/src/client/advanced.ts +2 -0
  130. package/src/client/client.ts +11 -4
  131. package/src/client/clientPublicMainnet.advanced.ts +1 -1
  132. package/src/client/clientPublicMainnet.ts +9 -4
  133. package/src/client/clientPublicTestnet.advanced.ts +1 -1
  134. package/src/client/clientPublicTestnet.ts +9 -4
  135. package/src/client/clientTypes.ts +1 -0
  136. package/src/client/index.ts +1 -7
  137. package/src/client/jsonRpc/advanced.ts +93 -0
  138. package/src/client/jsonRpc/index.ts +83 -0
  139. package/src/fixedPoint.ts +53 -0
  140. package/src/primitive.ts +8 -0
  141. package/src/signer/helpers.ts +43 -0
  142. package/src/signer/index.ts +2 -0
  143. package/src/signer/signer.ts +19 -0
  144. package/src/viewer.ts +16 -8
  145. package/dist/address/address.d.ts +0 -8
  146. package/dist/address/address.d.ts.map +0 -1
  147. package/dist/address/address.js +0 -6
  148. package/dist/address/addressKnownScript.d.ts +0 -13
  149. package/dist/address/addressKnownScript.d.ts.map +0 -1
  150. package/dist/address/addressKnownScript.js +0 -27
  151. package/dist/address/addressPlain.d.ts +0 -12
  152. package/dist/address/addressPlain.d.ts.map +0 -1
  153. package/dist/address/addressPlain.js +0 -23
  154. package/dist/address/converter.d.ts +0 -8
  155. package/dist/address/converter.d.ts.map +0 -1
  156. package/dist/address/converter.js +0 -65
  157. package/dist/bundle.d.ts +0 -9
  158. package/dist/bundle.d.ts.map +0 -1
  159. package/dist/bundle.js +0 -25
  160. package/dist/ckb/viewerCkbAddress.d.ts +0 -14
  161. package/dist/ckb/viewerCkbAddress.d.ts.map +0 -1
  162. package/dist/ckb/viewerCkbAddress.js +0 -28
  163. package/dist/codec/bytes.d.ts +0 -4
  164. package/dist/codec/bytes.d.ts.map +0 -1
  165. package/dist/codec/bytes.js +0 -29
  166. package/dist/codec/hashType.d.ts +0 -4
  167. package/dist/codec/hashType.d.ts.map +0 -1
  168. package/dist/codec/hashType.js +0 -13
  169. package/dist/codec/index.d.ts +0 -4
  170. package/dist/codec/index.d.ts.map +0 -1
  171. package/dist/codec/script.d.ts +0 -4
  172. package/dist/codec/script.d.ts.map +0 -1
  173. package/dist/codec/script.js +0 -22
  174. package/dist/signer.d.ts +0 -9
  175. package/dist/signer.d.ts.map +0 -1
  176. package/dist/signer.js +0 -12
  177. package/dist/types/cell.d.ts +0 -5
  178. package/dist/types/cell.d.ts.map +0 -1
  179. package/dist/types/cell.js +0 -8
  180. package/dist/types/ckb.advanced.d.ts +0 -4
  181. package/dist/types/ckb.advanced.d.ts.map +0 -1
  182. package/dist/types/ckb.d.ts +0 -16
  183. package/dist/types/ckb.d.ts.map +0 -1
  184. package/dist/types/ckb.js +0 -36
  185. package/dist/types/index.d.ts +0 -9
  186. package/dist/types/index.d.ts.map +0 -1
  187. package/dist/types/lumos.d.ts +0 -90
  188. package/dist/types/lumos.d.ts.map +0 -1
  189. package/dist/types/primitive.d.ts +0 -3
  190. package/dist/types/primitive.d.ts.map +0 -1
  191. package/src/address/address.ts +0 -9
  192. package/src/address/addressKnownScript.ts +0 -31
  193. package/src/address/addressPlain.ts +0 -27
  194. package/src/address/converter.ts +0 -93
  195. package/src/ckb/viewerCkbAddress.ts +0 -34
  196. package/src/codec/bytes.ts +0 -30
  197. package/src/codec/hashType.ts +0 -10
  198. package/src/codec/index.ts +0 -3
  199. package/src/codec/script.ts +0 -21
  200. package/src/signer.ts +0 -20
  201. package/src/types/cell.ts +0 -5
  202. package/src/types/ckb.advanced.ts +0 -14
  203. package/src/types/ckb.ts +0 -47
  204. package/src/types/index.ts +0 -9
  205. package/src/types/lumos.ts +0 -101
  206. package/src/types/primitive.ts +0 -2
  207. /package/dist/{types/lumos.js → client/clientTypes.js} +0 -0
  208. /package/dist/{types/primitive.js → primitive.js} +0 -0
package/src/barrel.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  export * from "./address";
2
+ export * from "./bytes";
2
3
  export * from "./ckb";
3
4
  export * from "./client";
4
- export * from "./codec";
5
- export * from "./types";
5
+ export * from "./fixedPoint";
6
+ export * from "./primitive";
6
7
  export * from "./signer";
7
8
  export * from "./viewer";
package/src/bytes.ts ADDED
@@ -0,0 +1,127 @@
1
+ import { BytesLike, Hex, HexLike, NumberLike } from "./primitive";
2
+ import { Buffer } from "buffer/";
3
+
4
+ export function concatBytes(...args: BytesLike[]): Uint8Array {
5
+ return new Uint8Array(
6
+ args.reduce((acc: number[], v) => {
7
+ acc.push(...toBytes(v));
8
+ return acc;
9
+ }, []),
10
+ );
11
+ }
12
+
13
+ export function encodeUtf8(val: string): Uint8Array {
14
+ return Buffer.from(val, "utf-8");
15
+ }
16
+
17
+ export function decodeUtf8(val: BytesLike): string {
18
+ return Buffer.from(toBytes(val)).toString("utf-8");
19
+ }
20
+
21
+ export function toBytes(bytes: BytesLike): Uint8Array {
22
+ if (bytes instanceof Uint8Array) {
23
+ return bytes;
24
+ }
25
+
26
+ if (bytes instanceof ArrayBuffer) {
27
+ return new Uint8Array(bytes);
28
+ }
29
+
30
+ if (Array.isArray(bytes)) {
31
+ if (bytes.some((v) => v < 0 || 0xff < v)) {
32
+ throw new Error(`Invalid bytes ${JSON.stringify(bytes)}`);
33
+ }
34
+ return new Uint8Array(bytes);
35
+ }
36
+
37
+ const str = bytes.length % 2 === 0 ? bytes.slice(2) : `0${bytes.slice(2)}`;
38
+ const data = Buffer.from(str, "hex");
39
+ if (data.length * 2 !== str.length) {
40
+ throw new Error(`Invalid bytes ${bytes}`);
41
+ }
42
+ return data;
43
+ }
44
+
45
+ export function toHexFromHex(bytes: HexLike): Hex {
46
+ if (typeof bytes === "string" && !bytes.startsWith("0x")) {
47
+ return `0x${bytes}`;
48
+ }
49
+
50
+ return toHex(bytes);
51
+ }
52
+
53
+ export function toHex(bytes: HexLike): Hex {
54
+ if (typeof bytes === "number") {
55
+ return `0x${bytes.toString(16)}`;
56
+ }
57
+
58
+ if (typeof bytes === "string" && !bytes.startsWith("0x")) {
59
+ return `0x${BigInt(bytes).toString(16)}`;
60
+ }
61
+
62
+ return `0x${Buffer.from(toBytes(bytes as BytesLike)).toString("hex")}`;
63
+ }
64
+
65
+ export function toNumber(val: NumberLike): string {
66
+ return BigInt(val).toString();
67
+ }
68
+
69
+ export function toBytesFromNumber(val: NumberLike, bytes?: number): Uint8Array {
70
+ return toBytesFromLENumber(val, bytes);
71
+ }
72
+
73
+ export function toBytesFromLENumber(
74
+ val: NumberLike,
75
+ bytes?: number,
76
+ ): Uint8Array {
77
+ return toBytesFromBENumber(val, bytes).reverse();
78
+ }
79
+
80
+ export function toBytesFromBENumber(
81
+ val: NumberLike,
82
+ bytes?: number,
83
+ ): Uint8Array {
84
+ let valStr = val;
85
+ if (typeof valStr === "number" || typeof valStr === "bigint") {
86
+ valStr = valStr.toString(16);
87
+ } else if (typeof valStr === "string") {
88
+ if (valStr.startsWith("0x")) {
89
+ valStr = valStr.slice(2);
90
+ } else {
91
+ valStr = BigInt(valStr).toString(16);
92
+ }
93
+ }
94
+
95
+ if (valStr.length % 2 !== 0) {
96
+ valStr = `0${valStr}`;
97
+ }
98
+
99
+ const res = toBytes(`0x${valStr}`);
100
+ if (bytes == null) {
101
+ return res;
102
+ }
103
+ if (res.length > bytes) {
104
+ return res.slice(res.length - bytes);
105
+ }
106
+ return new Uint8Array([
107
+ ...Array.from(Array(bytes - res.length), () => 0),
108
+ ...res,
109
+ ]);
110
+ }
111
+
112
+ export function toNumberFromBytes(val: BytesLike): string {
113
+ return toLENumberFromBytes(val);
114
+ }
115
+
116
+ export function toLENumberFromBytes(val: BytesLike): string {
117
+ return toBENumberFromBytes(toBytes(val).reverse());
118
+ }
119
+
120
+ export function toBENumberFromBytes(val: BytesLike): string {
121
+ const str = toHex(val).replace(/0x0*/, "0x");
122
+ if (str.length === 2) {
123
+ return "0";
124
+ }
125
+
126
+ return BigInt(str).toString();
127
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./hasher.advanced";
2
+ export * from "./types/advanced";
@@ -0,0 +1 @@
1
+ export const CKB_BLAKE2B_PERSONAL = "ckb-default-hash";
@@ -0,0 +1,30 @@
1
+ import blake2b, { Blake2b } from "blake2b";
2
+ import { BytesLike, Hex } from "../primitive";
3
+ import { encodeUtf8, toBytes } from "../bytes";
4
+ import { CKB_BLAKE2B_PERSONAL } from "./hasher.advanced";
5
+
6
+ export class Hasher {
7
+ hasher: Blake2b;
8
+
9
+ constructor(outLength = 32, personal = CKB_BLAKE2B_PERSONAL) {
10
+ this.hasher = blake2b(
11
+ outLength,
12
+ undefined,
13
+ undefined,
14
+ encodeUtf8(personal),
15
+ );
16
+ }
17
+
18
+ update(data: BytesLike): Hasher {
19
+ this.hasher.update(toBytes(data));
20
+ return this;
21
+ }
22
+
23
+ digest(): Hex {
24
+ return `0x${this.hasher.digest("hex")}`;
25
+ }
26
+ }
27
+
28
+ export function ckbHash(data: BytesLike): Hex {
29
+ return new Hasher().update(data).digest();
30
+ }
package/src/ckb/index.ts CHANGED
@@ -1 +1,3 @@
1
- export * from "./viewerCkbAddress";
1
+ export * from "./hasher";
2
+ export * from "./types";
3
+ export * from "./viewerCkbScript";
@@ -0,0 +1,3 @@
1
+ export * from "./script.advanced";
2
+ export * from "./transaction.advanced";
3
+ export * as moleculeCodecCkb from "./molecule.advanced";
@@ -0,0 +1,2 @@
1
+ export * from "./script";
2
+ export * from "./transaction";
@@ -0,0 +1,118 @@
1
+ /* Basic Types */
2
+
3
+ // The `UintN` is used to store a `N` bits unsigned integer
4
+ // as a byte array in little endian.
5
+ array Uint32 [byte; 4];
6
+ array Uint64 [byte; 8];
7
+ array Uint128 [byte; 16];
8
+ array Byte32 [byte; 32];
9
+ array Uint256 [byte; 32];
10
+
11
+ vector Bytes <byte>;
12
+ option BytesOpt (Bytes);
13
+ vector BytesOptVec <BytesOpt>;
14
+ vector BytesVec <Bytes>;
15
+ vector Byte32Vec <Byte32>;
16
+
17
+ /* Types for Chain */
18
+
19
+ option ScriptOpt (Script);
20
+
21
+ array ProposalShortId [byte; 10];
22
+
23
+ vector UncleBlockVec <UncleBlock>;
24
+ vector TransactionVec <Transaction>;
25
+ vector ProposalShortIdVec <ProposalShortId>;
26
+ vector CellDepVec <CellDep>;
27
+ vector CellInputVec <CellInput>;
28
+ vector CellOutputVec <CellOutput>;
29
+
30
+ table Script {
31
+ codeHash: Byte32,
32
+ hashType: byte,
33
+ args: Bytes,
34
+ }
35
+
36
+ struct OutPoint {
37
+ txHash: Byte32,
38
+ index: Uint32,
39
+ }
40
+
41
+ struct CellInput {
42
+ since: Uint64,
43
+ previousOutput: OutPoint,
44
+ }
45
+
46
+ table CellOutput {
47
+ capacity: Uint64,
48
+ lock: Script,
49
+ type: ScriptOpt,
50
+ }
51
+
52
+ struct CellDep {
53
+ outPoint: OutPoint,
54
+ depType: byte,
55
+ }
56
+
57
+ table RawTransaction {
58
+ version: Uint32,
59
+ cellDeps: CellDepVec,
60
+ headerDeps: Byte32Vec,
61
+ inputs: CellInputVec,
62
+ outputs: CellOutputVec,
63
+ outputsData: BytesVec,
64
+ }
65
+
66
+ table Transaction {
67
+ raw: RawTransaction,
68
+ witnesses: BytesVec,
69
+ }
70
+
71
+ struct RawHeader {
72
+ version: Uint32,
73
+ compactTarget: Uint32,
74
+ timestamp: Uint64,
75
+ number: Uint64,
76
+ epoch: Uint64,
77
+ parentHash: Byte32,
78
+ transactionsRoot: Byte32,
79
+ proposalsHash: Byte32,
80
+ extraHash: Byte32,
81
+ dao: Byte32,
82
+ }
83
+
84
+ struct Header {
85
+ raw: RawHeader,
86
+ nonce: Uint128,
87
+ }
88
+
89
+ table UncleBlock {
90
+ header: Header,
91
+ proposals: ProposalShortIdVec,
92
+ }
93
+
94
+ table Block {
95
+ header: Header,
96
+ uncles: UncleBlockVec,
97
+ transactions: TransactionVec,
98
+ proposals: ProposalShortIdVec,
99
+ }
100
+
101
+ table BlockV1 {
102
+ header: Header,
103
+ uncles: UncleBlockVec,
104
+ transactions: TransactionVec,
105
+ proposals: ProposalShortIdVec,
106
+ extension: Bytes,
107
+ }
108
+
109
+ table CellbaseWitness {
110
+ lock: Script,
111
+ message: Bytes,
112
+ }
113
+
114
+ table WitnessArgs {
115
+ lock: BytesOpt, // Lock args
116
+ inputType: BytesOpt, // Type args for input
117
+ outputType: BytesOpt, // Type args for output
118
+ }