@ckb-ccc/core 0.0.8-alpha.3 → 0.0.9-alpha.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 (143) hide show
  1. package/dist/ckb/script.js +2 -2
  2. package/dist/ckb/transaction.js +2 -2
  3. package/dist/client/client.d.ts +1 -0
  4. package/dist/client/client.d.ts.map +1 -1
  5. package/dist/client/client.js +1 -0
  6. package/dist/client/clientPublicMainnet.advanced.d.ts.map +1 -1
  7. package/dist/client/clientPublicMainnet.advanced.js +35 -1
  8. package/dist/client/clientPublicTestnet.advanced.d.ts.map +1 -1
  9. package/dist/client/clientPublicTestnet.advanced.js +20 -0
  10. package/dist/hasher/index.d.ts +17 -2
  11. package/dist/hasher/index.d.ts.map +1 -1
  12. package/dist/hasher/index.js +19 -2
  13. package/dist/signer/nostr/signerNostr.js +2 -2
  14. package/dist/signer/signer/index.d.ts +12 -0
  15. package/dist/signer/signer/index.d.ts.map +1 -1
  16. package/dist/signer/signer/index.js +18 -0
  17. package/dist.commonjs/address/address.advanced.d.ts +24 -29
  18. package/dist.commonjs/address/address.advanced.js +89 -115
  19. package/dist.commonjs/address/advanced.d.ts +1 -1
  20. package/dist.commonjs/address/advanced.js +14 -30
  21. package/dist.commonjs/address/index.d.ts +44 -51
  22. package/dist.commonjs/address/index.js +65 -84
  23. package/dist.commonjs/advanced.d.ts +1 -1
  24. package/dist.commonjs/advanced.js +22 -47
  25. package/dist.commonjs/advancedBarrel.d.ts +1 -1
  26. package/dist.commonjs/advancedBarrel.js +14 -30
  27. package/dist.commonjs/barrel.d.ts +1 -1
  28. package/dist.commonjs/barrel.js +14 -30
  29. package/dist.commonjs/bytes/advanced.d.ts +2 -11
  30. package/dist.commonjs/bytes/index.d.ts +3 -9
  31. package/dist.commonjs/bytes/index.js +26 -28
  32. package/dist.commonjs/ckb/advanced.d.ts +1 -1
  33. package/dist.commonjs/ckb/advanced.js +22 -47
  34. package/dist.commonjs/ckb/index.d.ts +1 -1
  35. package/dist.commonjs/ckb/index.js +14 -30
  36. package/dist.commonjs/ckb/molecule.advanced/generated.d.ts +260 -420
  37. package/dist.commonjs/ckb/molecule.advanced/generated.js +1332 -1536
  38. package/dist.commonjs/ckb/molecule.advanced/index.d.ts +3 -3
  39. package/dist.commonjs/ckb/molecule.advanced/index.js +18 -34
  40. package/dist.commonjs/ckb/script.advanced.d.ts +1 -1
  41. package/dist.commonjs/ckb/script.advanced.js +9 -12
  42. package/dist.commonjs/ckb/script.d.ts +117 -121
  43. package/dist.commonjs/ckb/script.js +176 -220
  44. package/dist.commonjs/ckb/transaction.advanced.d.ts +1 -1
  45. package/dist.commonjs/ckb/transaction.advanced.js +4 -4
  46. package/dist.commonjs/ckb/transaction.d.ts +717 -792
  47. package/dist.commonjs/ckb/transaction.js +1155 -1383
  48. package/dist.commonjs/client/advanced.d.ts +1 -1
  49. package/dist.commonjs/client/advanced.js +14 -30
  50. package/dist.commonjs/client/client.advanced.d.ts +6 -23
  51. package/dist.commonjs/client/client.advanced.js +61 -89
  52. package/dist.commonjs/client/client.d.ts +54 -113
  53. package/dist.commonjs/client/client.d.ts.map +1 -1
  54. package/dist.commonjs/client/client.js +182 -214
  55. package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts +4 -8
  56. package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts.map +1 -1
  57. package/dist.commonjs/client/clientPublicMainnet.advanced.js +161 -144
  58. package/dist.commonjs/client/clientPublicMainnet.d.ts +6 -8
  59. package/dist.commonjs/client/clientPublicMainnet.js +15 -17
  60. package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts +3 -6
  61. package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts.map +1 -1
  62. package/dist.commonjs/client/clientPublicTestnet.advanced.js +199 -204
  63. package/dist.commonjs/client/clientPublicTestnet.d.ts +6 -8
  64. package/dist.commonjs/client/clientPublicTestnet.js +13 -13
  65. package/dist.commonjs/client/clientTypes.advanced.d.ts +14 -14
  66. package/dist.commonjs/client/clientTypes.advanced.js +1 -1
  67. package/dist.commonjs/client/clientTypes.d.ts +26 -51
  68. package/dist.commonjs/client/clientTypes.js +22 -56
  69. package/dist.commonjs/client/index.d.ts +1 -1
  70. package/dist.commonjs/client/index.js +14 -30
  71. package/dist.commonjs/client/jsonRpc/advanced.d.ts +1 -1
  72. package/dist.commonjs/client/jsonRpc/advanced.js +14 -30
  73. package/dist.commonjs/client/jsonRpc/index.d.ts +75 -94
  74. package/dist.commonjs/client/jsonRpc/index.js +108 -135
  75. package/dist.commonjs/client/jsonRpc/transformers.d.ts +36 -76
  76. package/dist.commonjs/client/jsonRpc/transformers.js +152 -174
  77. package/dist.commonjs/client/jsonRpc/types.d.ts +38 -38
  78. package/dist.commonjs/fixedPoint/index.d.ts +3 -9
  79. package/dist.commonjs/fixedPoint/index.js +20 -26
  80. package/dist.commonjs/fixedPoint/index.test.d.ts +1 -1
  81. package/dist.commonjs/fixedPoint/index.test.js +36 -42
  82. package/dist.commonjs/hasher/advanced.d.ts +1 -1
  83. package/dist.commonjs/hasher/index.d.ts +53 -38
  84. package/dist.commonjs/hasher/index.d.ts.map +1 -1
  85. package/dist.commonjs/hasher/index.js +69 -58
  86. package/dist.commonjs/hex/index.d.ts +1 -1
  87. package/dist.commonjs/hex/index.js +1 -1
  88. package/dist.commonjs/index.d.ts +1 -1
  89. package/dist.commonjs/index.js +22 -47
  90. package/dist.commonjs/num/index.d.ts +1 -1
  91. package/dist.commonjs/num/index.js +27 -39
  92. package/dist.commonjs/signer/btc/index.d.ts +1 -1
  93. package/dist.commonjs/signer/btc/index.js +14 -30
  94. package/dist.commonjs/signer/btc/signerBtc.d.ts +47 -47
  95. package/dist.commonjs/signer/btc/signerBtc.js +66 -89
  96. package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.d.ts +45 -45
  97. package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.js +52 -52
  98. package/dist.commonjs/signer/btc/verify.d.ts +2 -6
  99. package/dist.commonjs/signer/btc/verify.js +3 -10
  100. package/dist.commonjs/signer/ckb/index.d.ts +1 -1
  101. package/dist.commonjs/signer/ckb/index.js +14 -30
  102. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.d.ts +45 -45
  103. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.js +56 -56
  104. package/dist.commonjs/signer/ckb/verifyJoyId.d.ts +2 -6
  105. package/dist.commonjs/signer/ckb/verifyJoyId.js +8 -11
  106. package/dist.commonjs/signer/dummy/alwaysError.d.ts +4 -4
  107. package/dist.commonjs/signer/dummy/alwaysError.js +7 -7
  108. package/dist.commonjs/signer/dummy/dummy.d.ts +7 -7
  109. package/dist.commonjs/signer/dummy/dummy.js +16 -16
  110. package/dist.commonjs/signer/dummy/index.d.ts +1 -1
  111. package/dist.commonjs/signer/dummy/index.js +14 -30
  112. package/dist.commonjs/signer/dummy/openLink.d.ts +4 -4
  113. package/dist.commonjs/signer/dummy/openLink.js +7 -7
  114. package/dist.commonjs/signer/evm/index.d.ts +1 -1
  115. package/dist.commonjs/signer/evm/index.js +14 -30
  116. package/dist.commonjs/signer/evm/signerEvm.d.ts +38 -42
  117. package/dist.commonjs/signer/evm/signerEvm.js +70 -105
  118. package/dist.commonjs/signer/evm/signerEvmAddressReadonly.d.ts +37 -37
  119. package/dist.commonjs/signer/evm/signerEvmAddressReadonly.js +42 -42
  120. package/dist.commonjs/signer/evm/verify.d.ts +2 -6
  121. package/dist.commonjs/signer/evm/verify.js +2 -7
  122. package/dist.commonjs/signer/index.d.ts +1 -1
  123. package/dist.commonjs/signer/index.js +14 -30
  124. package/dist.commonjs/signer/nostr/index.d.ts +1 -1
  125. package/dist.commonjs/signer/nostr/index.js +14 -30
  126. package/dist.commonjs/signer/nostr/signerNostr.d.ts +57 -57
  127. package/dist.commonjs/signer/nostr/signerNostr.js +71 -100
  128. package/dist.commonjs/signer/nostr/verify.d.ts +3 -9
  129. package/dist.commonjs/signer/nostr/verify.js +39 -50
  130. package/dist.commonjs/signer/signer/index.d.ts +162 -156
  131. package/dist.commonjs/signer/signer/index.d.ts.map +1 -1
  132. package/dist.commonjs/signer/signer/index.js +199 -208
  133. package/dist.commonjs/utils/index.d.ts +8 -38
  134. package/dist.commonjs/utils/index.js +12 -18
  135. package/package.json +3 -3
  136. package/src/ckb/script.ts +2 -2
  137. package/src/ckb/transaction.ts +2 -2
  138. package/src/client/client.ts +1 -0
  139. package/src/client/clientPublicMainnet.advanced.ts +40 -1
  140. package/src/client/clientPublicTestnet.advanced.ts +23 -0
  141. package/src/hasher/index.ts +27 -2
  142. package/src/signer/nostr/signerNostr.ts +2 -2
  143. package/src/signer/signer/index.ts +45 -0
@@ -34,6 +34,7 @@ export enum KnownScript {
34
34
  COTA = "COTA",
35
35
  OmniLock = "OmniLock",
36
36
  NostrLock = "NostrLock",
37
+ UniqueType = "UniqueType",
37
38
  SingleUseLock = "SingleUseLock",
38
39
  OutputTypeProxyLock = "OutputTypeProxyLock",
39
40
  }
@@ -147,7 +147,46 @@ export const MAINNET_SCRIPTS: Record<
147
147
  },
148
148
  ],
149
149
  },
150
- [KnownScript.NostrLock]: undefined,
150
+ [KnownScript.NostrLock]: {
151
+ codeHash:
152
+ "0x641a89ad2f77721b803cd50d01351c1f308444072d5fa20088567196c0574c68",
153
+ hashType: "type",
154
+ cellDeps: [
155
+ {
156
+ cellDep: {
157
+ outPoint: {
158
+ txHash:
159
+ "0x1911208b136957d5f7c1708a8835edfe8ae1d02700d5cb2c3a6aacf4d5906306",
160
+ index: 0,
161
+ },
162
+ depType: "code",
163
+ },
164
+ type: {
165
+ codeHash:
166
+ "0x00000000000000000000000000000000000000000000000000545950455f4944",
167
+ hashType: "type",
168
+ args: "0xfad8cb75eb0bb01718e2336002064568bc05887af107f74ed5dd501829e192f8",
169
+ },
170
+ },
171
+ ],
172
+ },
173
+ [KnownScript.UniqueType]: {
174
+ codeHash:
175
+ "0x2c8c11c985da60b0a330c61a85507416d6382c130ba67f0c47ab071e00aec628",
176
+ hashType: "data1",
177
+ cellDeps: [
178
+ {
179
+ cellDep: {
180
+ outPoint: {
181
+ txHash:
182
+ "0x67524c01c0cb5492e499c7c7e406f2f9d823e162d6b0cf432eacde0c9808c2ad",
183
+ index: 0,
184
+ },
185
+ depType: "code",
186
+ },
187
+ },
188
+ ],
189
+ },
151
190
  [KnownScript.SingleUseLock]: undefined,
152
191
  [KnownScript.OutputTypeProxyLock]: undefined,
153
192
  };
@@ -175,6 +175,29 @@ export const TESTNET_SCRIPTS: Record<
175
175
  },
176
176
  ],
177
177
  },
178
+ [KnownScript.UniqueType]: {
179
+ codeHash:
180
+ "0x8e341bcfec6393dcd41e635733ff2dca00a6af546949f70c57a706c0f344df8b",
181
+ hashType: "type",
182
+ cellDeps: [
183
+ {
184
+ cellDep: {
185
+ outPoint: {
186
+ txHash:
187
+ "0xff91b063c78ed06f10a1ed436122bd7d671f9a72ef5f5fa28d05252c17cf4cef",
188
+ index: 0,
189
+ },
190
+ depType: "code",
191
+ },
192
+ type: {
193
+ codeHash:
194
+ "0x00000000000000000000000000000000000000000000000000545950455f4944",
195
+ hashType: "type",
196
+ args: "0xe04976b67600fd25ac50305f77b33aee2c12e3c18e63ece9119e5b32117884b5",
197
+ },
198
+ },
199
+ ],
200
+ },
178
201
  [KnownScript.SingleUseLock]: {
179
202
  codeHash:
180
203
  "0x8290467a512e5b9a6b816469b0edabba1f4ac474e28ffdd604c2a7c76446bbaf",
@@ -1,6 +1,8 @@
1
1
  import blake2b, { Blake2b } from "blake2b";
2
2
  import { BytesLike, bytesFrom } from "../bytes";
3
+ import { CellInput, CellInputLike } from "../ckb";
3
4
  import { Hex } from "../hex";
5
+ import { NumLike, numLeToBytes } from "../num";
4
6
  import { CKB_BLAKE2B_PERSONAL } from "./advanced";
5
7
 
6
8
  export class Hasher {
@@ -67,12 +69,35 @@ export class Hasher {
67
69
  *
68
70
  * @example
69
71
  * ```typescript
70
- * const hash = ckbHash("some data"); // Outputs something like "0x..."
72
+ * const hash = hashCkb("some data"); // Outputs something like "0x..."
71
73
  * ```
72
74
  */
73
75
 
74
- export function ckbHash(...data: BytesLike[]): Hex {
76
+ export function hashCkb(...data: BytesLike[]): Hex {
75
77
  const hasher = new Hasher();
76
78
  data.forEach((d) => hasher.update(d));
77
79
  return hasher.digest();
78
80
  }
81
+
82
+ /**
83
+ * Computes the Type ID hash of the given data.
84
+ *
85
+ * @param cellInput - The first cell input of the transaction.
86
+ * @param outputIndex - The output index of the Type ID cell.
87
+ * @returns The hexadecimal string representation of the hash.
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * const hash = hashTypeId(cellInput, outputIndex); // Outputs something like "0x..."
92
+ * ```
93
+ */
94
+
95
+ export function hashTypeId(
96
+ cellInputLike: CellInputLike,
97
+ outputIndex: NumLike,
98
+ ): Hex {
99
+ return hashCkb(
100
+ CellInput.from(cellInputLike).toBytes(),
101
+ numLeToBytes(outputIndex, 8),
102
+ );
103
+ }
@@ -3,7 +3,7 @@ import { Address } from "../../address";
3
3
  import { BytesLike, bytesConcat, bytesFrom } from "../../bytes";
4
4
  import { Transaction, TransactionLike, WitnessArgs } from "../../ckb";
5
5
  import { KnownScript } from "../../client";
6
- import { ckbHash } from "../../hasher";
6
+ import { hashCkb } from "../../hasher";
7
7
  import { Hex, hexFrom } from "../../hex";
8
8
  import { Signer, SignerSignType, SignerType } from "../signer";
9
9
  import { buildNostrEventFromMessage } from "./verify";
@@ -80,7 +80,7 @@ export abstract class SignerNostr extends Signer {
80
80
  await Address.fromKnownScript(
81
81
  this.client,
82
82
  KnownScript.NostrLock,
83
- hexFrom(bytesConcat([0x00], ckbHash(publicKey).slice(0, 42))),
83
+ hexFrom(bytesConcat([0x00], hashCkb(publicKey).slice(0, 42))),
84
84
  ),
85
85
  ];
86
86
  }
@@ -27,6 +27,23 @@ export enum SignerType {
27
27
  Nostr = "Nostr",
28
28
  }
29
29
 
30
+ export type NetworkPreference = {
31
+ addressPrefix: string;
32
+ signerType: SignerType;
33
+ network: string;
34
+ /*
35
+ Wallet signers should check if the wallet is using preferred networks.
36
+ If not, try to switch to the first preferred network.
37
+ If non preferred, let users choose what they want.
38
+
39
+ BTC: // They made a mess...
40
+ btc
41
+ btcTestnet
42
+ btcSignet // OKX
43
+ fractalBtc // UniSat
44
+ */
45
+ };
46
+
30
47
  export class Signature {
31
48
  constructor(
32
49
  public signature: string,
@@ -49,6 +66,27 @@ export abstract class Signer {
49
66
  return this.client_;
50
67
  }
51
68
 
69
+ // Returns the preference if we need to switch network
70
+ // undefined otherwise
71
+ matchNetworkPreference(
72
+ preferences: NetworkPreference[],
73
+ currentNetwork: string,
74
+ ) {
75
+ if (
76
+ preferences.some(({ signerType, addressPrefix, network }) => {
77
+ signerType === this.type &&
78
+ addressPrefix === this.client.addressPrefix &&
79
+ network === currentNetwork;
80
+ })
81
+ ) {
82
+ return;
83
+ }
84
+ return preferences.find(
85
+ ({ signerType, addressPrefix }) =>
86
+ signerType === this.type && addressPrefix === this.client.addressPrefix,
87
+ );
88
+ }
89
+
52
90
  static async verifyMessage(
53
91
  message: string | BytesLike,
54
92
  signature: Signature,
@@ -99,6 +137,13 @@ export abstract class Signer {
99
137
  */
100
138
  abstract connect(): Promise<void>;
101
139
 
140
+ /**
141
+ * Disconnects to the signer.
142
+ *
143
+ * @returns A promise that resolves when the signer is disconnected.
144
+ */
145
+ async disconnect(): Promise<void> {}
146
+
102
147
  /**
103
148
  * Check if the signer is connected.
104
149
  *