@ckb-ccc/core 0.0.5-alpha.8 → 0.0.7-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.
- package/dist/address/address.advanced.d.ts.map +1 -1
- package/dist/address/address.advanced.js +2 -5
- package/dist/address/index.d.ts +1 -1
- package/dist/address/index.d.ts.map +1 -1
- package/dist/address/index.js +2 -5
- package/dist/ckb/script.d.ts +43 -1
- package/dist/ckb/script.d.ts.map +1 -1
- package/dist/ckb/script.js +51 -0
- package/dist/ckb/transaction.d.ts +215 -27
- package/dist/ckb/transaction.d.ts.map +1 -1
- package/dist/ckb/transaction.js +472 -32
- package/dist/client/advanced.d.ts +2 -0
- package/dist/client/advanced.d.ts.map +1 -1
- package/dist/client/advanced.js +2 -0
- package/dist/client/client.advanced.d.ts +10 -0
- package/dist/client/client.advanced.d.ts.map +1 -0
- package/dist/client/client.advanced.js +80 -0
- package/dist/client/client.d.ts +50 -13
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +145 -15
- package/dist/client/clientPublicMainnet.advanced.d.ts +4 -2
- package/dist/client/clientPublicMainnet.advanced.d.ts.map +1 -1
- package/dist/client/clientPublicMainnet.advanced.js +103 -0
- package/dist/client/clientPublicMainnet.d.ts +4 -2
- package/dist/client/clientPublicMainnet.d.ts.map +1 -1
- package/dist/client/clientPublicMainnet.js +9 -1
- package/dist/client/clientPublicTestnet.advanced.d.ts +4 -2
- package/dist/client/clientPublicTestnet.advanced.d.ts.map +1 -1
- package/dist/client/clientPublicTestnet.advanced.js +155 -0
- package/dist/client/clientPublicTestnet.d.ts +4 -2
- package/dist/client/clientPublicTestnet.d.ts.map +1 -1
- package/dist/client/clientPublicTestnet.js +6 -1
- package/dist/client/clientTypes.advanced.d.ts +23 -0
- package/dist/client/clientTypes.advanced.d.ts.map +1 -0
- package/dist/client/clientTypes.advanced.js +4 -0
- package/dist/client/clientTypes.d.ts +22 -36
- package/dist/client/clientTypes.d.ts.map +1 -1
- package/dist/client/clientTypes.js +15 -12
- package/dist/client/jsonRpc/index.d.ts +3 -3
- package/dist/client/jsonRpc/index.d.ts.map +1 -1
- package/dist/client/jsonRpc/index.js +3 -3
- package/dist/client/jsonRpc/transformers.d.ts +5 -7
- package/dist/client/jsonRpc/transformers.d.ts.map +1 -1
- package/dist/client/jsonRpc/transformers.js +8 -6
- package/dist/hasher/index.d.ts +1 -1
- package/dist/hasher/index.d.ts.map +1 -1
- package/dist/hasher/index.js +4 -2
- package/dist/num/index.d.ts +12 -0
- package/dist/num/index.d.ts.map +1 -1
- package/dist/num/index.js +21 -0
- package/dist/signer/btc/signerBtc.d.ts.map +1 -1
- package/dist/signer/btc/signerBtc.js +6 -3
- package/dist/signer/btc/signerBtcPublicKeyReadonly.d.ts +0 -6
- package/dist/signer/btc/signerBtcPublicKeyReadonly.d.ts.map +1 -1
- package/dist/signer/btc/signerBtcPublicKeyReadonly.js +0 -8
- package/dist/signer/btc/verify.d.ts.map +1 -1
- package/dist/signer/btc/verify.js +5 -2
- package/dist/signer/ckb/signerCkbScriptReadonly.d.ts +0 -6
- package/dist/signer/ckb/signerCkbScriptReadonly.d.ts.map +1 -1
- package/dist/signer/ckb/signerCkbScriptReadonly.js +0 -8
- package/dist/signer/dummy/alwaysError.d.ts +0 -1
- package/dist/signer/dummy/alwaysError.d.ts.map +1 -1
- package/dist/signer/dummy/alwaysError.js +0 -3
- package/dist/signer/dummy/openLink.d.ts +0 -1
- package/dist/signer/dummy/openLink.d.ts.map +1 -1
- package/dist/signer/dummy/openLink.js +0 -3
- package/dist/signer/evm/signerEvm.d.ts.map +1 -1
- package/dist/signer/evm/signerEvm.js +7 -5
- package/dist/signer/evm/signerEvmAddressReadonly.d.ts +0 -6
- package/dist/signer/evm/signerEvmAddressReadonly.d.ts.map +1 -1
- package/dist/signer/evm/signerEvmAddressReadonly.js +0 -8
- package/dist/signer/index.d.ts +1 -0
- package/dist/signer/index.d.ts.map +1 -1
- package/dist/signer/index.js +1 -0
- package/dist/signer/nostr/index.d.ts +2 -0
- package/dist/signer/nostr/index.d.ts.map +1 -0
- package/dist/signer/nostr/index.js +1 -0
- package/dist/signer/nostr/signerNostr.d.ts +66 -0
- package/dist/signer/nostr/signerNostr.d.ts.map +1 -0
- package/dist/signer/nostr/signerNostr.js +85 -0
- package/dist/signer/nostr/verify.d.ts +5 -0
- package/dist/signer/nostr/verify.d.ts.map +1 -0
- package/dist/signer/nostr/verify.js +48 -0
- package/dist/signer/signer/index.d.ts +7 -12
- package/dist/signer/signer/index.d.ts.map +1 -1
- package/dist/signer/signer/index.js +11 -4
- package/dist/utils/index.d.ts +59 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +17 -0
- package/dist.commonjs/address/address.advanced.d.ts +29 -24
- package/dist.commonjs/address/address.advanced.d.ts.map +1 -1
- package/dist.commonjs/address/address.advanced.js +115 -92
- package/dist.commonjs/address/advanced.d.ts +1 -1
- package/dist.commonjs/address/advanced.js +30 -14
- package/dist.commonjs/address/index.d.ts +51 -44
- package/dist.commonjs/address/index.d.ts.map +1 -1
- package/dist.commonjs/address/index.js +84 -68
- package/dist.commonjs/advanced.d.ts +1 -1
- package/dist.commonjs/advanced.js +47 -22
- package/dist.commonjs/advancedBarrel.d.ts +1 -1
- package/dist.commonjs/advancedBarrel.js +30 -14
- package/dist.commonjs/barrel.d.ts +1 -1
- package/dist.commonjs/barrel.js +30 -14
- package/dist.commonjs/bytes/advanced.d.ts +11 -2
- package/dist.commonjs/bytes/index.d.ts +9 -3
- package/dist.commonjs/bytes/index.js +28 -26
- package/dist.commonjs/ckb/advanced.d.ts +1 -1
- package/dist.commonjs/ckb/advanced.js +47 -22
- package/dist.commonjs/ckb/index.d.ts +1 -1
- package/dist.commonjs/ckb/index.js +30 -14
- package/dist.commonjs/ckb/molecule.advanced/generated.d.ts +420 -260
- package/dist.commonjs/ckb/molecule.advanced/generated.js +1536 -1332
- package/dist.commonjs/ckb/molecule.advanced/index.d.ts +3 -3
- package/dist.commonjs/ckb/molecule.advanced/index.js +34 -18
- package/dist.commonjs/ckb/script.advanced.d.ts +1 -1
- package/dist.commonjs/ckb/script.advanced.js +12 -9
- package/dist.commonjs/ckb/script.d.ts +123 -77
- package/dist.commonjs/ckb/script.d.ts.map +1 -1
- package/dist.commonjs/ckb/script.js +221 -126
- package/dist.commonjs/ckb/transaction.advanced.d.ts +1 -1
- package/dist.commonjs/ckb/transaction.advanced.js +4 -4
- package/dist.commonjs/ckb/transaction.d.ts +796 -533
- package/dist.commonjs/ckb/transaction.d.ts.map +1 -1
- package/dist.commonjs/ckb/transaction.js +1372 -702
- package/dist.commonjs/client/advanced.d.ts +3 -1
- package/dist.commonjs/client/advanced.d.ts.map +1 -1
- package/dist.commonjs/client/advanced.js +32 -14
- package/dist.commonjs/client/client.advanced.d.ts +27 -0
- package/dist.commonjs/client/client.advanced.d.ts.map +1 -0
- package/dist.commonjs/client/client.advanced.js +116 -0
- package/dist.commonjs/client/client.d.ts +118 -21
- package/dist.commonjs/client/client.d.ts.map +1 -1
- package/dist.commonjs/client/client.js +219 -55
- package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts +9 -3
- package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/clientPublicMainnet.advanced.js +144 -24
- package/dist.commonjs/client/clientPublicMainnet.d.ts +9 -5
- package/dist.commonjs/client/clientPublicMainnet.d.ts.map +1 -1
- package/dist.commonjs/client/clientPublicMainnet.js +18 -8
- package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts +8 -3
- package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/clientPublicTestnet.advanced.js +204 -24
- package/dist.commonjs/client/clientPublicTestnet.d.ts +9 -5
- package/dist.commonjs/client/clientPublicTestnet.d.ts.map +1 -1
- package/dist.commonjs/client/clientPublicTestnet.js +14 -9
- package/dist.commonjs/client/clientTypes.advanced.d.ts +23 -0
- package/dist.commonjs/client/clientTypes.advanced.d.ts.map +1 -0
- package/dist.commonjs/client/clientTypes.advanced.js +8 -0
- package/dist.commonjs/client/clientTypes.d.ts +57 -46
- package/dist.commonjs/client/clientTypes.d.ts.map +1 -1
- package/dist.commonjs/client/clientTypes.js +60 -22
- package/dist.commonjs/client/index.d.ts +1 -1
- package/dist.commonjs/client/index.js +30 -14
- package/dist.commonjs/client/jsonRpc/advanced.d.ts +1 -1
- package/dist.commonjs/client/jsonRpc/advanced.js +30 -14
- package/dist.commonjs/client/jsonRpc/index.d.ts +94 -75
- package/dist.commonjs/client/jsonRpc/index.d.ts.map +1 -1
- package/dist.commonjs/client/jsonRpc/index.js +135 -108
- package/dist.commonjs/client/jsonRpc/transformers.d.ts +76 -38
- package/dist.commonjs/client/jsonRpc/transformers.d.ts.map +1 -1
- package/dist.commonjs/client/jsonRpc/transformers.js +174 -150
- package/dist.commonjs/client/jsonRpc/types.d.ts +38 -38
- package/dist.commonjs/fixedPoint/index.d.ts +9 -3
- package/dist.commonjs/fixedPoint/index.js +26 -20
- package/dist.commonjs/fixedPoint/index.test.d.ts +1 -1
- package/dist.commonjs/fixedPoint/index.test.js +42 -36
- package/dist.commonjs/hasher/advanced.d.ts +1 -1
- package/dist.commonjs/hasher/index.d.ts +37 -37
- package/dist.commonjs/hasher/index.d.ts.map +1 -1
- package/dist.commonjs/hasher/index.js +55 -46
- package/dist.commonjs/hex/index.d.ts +1 -1
- package/dist.commonjs/hex/index.js +1 -1
- package/dist.commonjs/index.d.ts +1 -1
- package/dist.commonjs/index.js +47 -22
- package/dist.commonjs/num/index.d.ts +13 -1
- package/dist.commonjs/num/index.d.ts.map +1 -1
- package/dist.commonjs/num/index.js +53 -19
- package/dist.commonjs/signer/btc/index.d.ts +1 -1
- package/dist.commonjs/signer/btc/index.js +30 -14
- package/dist.commonjs/signer/btc/signerBtc.d.ts +47 -47
- package/dist.commonjs/signer/btc/signerBtc.d.ts.map +1 -1
- package/dist.commonjs/signer/btc/signerBtc.js +89 -63
- package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.d.ts +45 -51
- package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.d.ts.map +1 -1
- package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.js +52 -60
- package/dist.commonjs/signer/btc/verify.d.ts +6 -2
- package/dist.commonjs/signer/btc/verify.d.ts.map +1 -1
- package/dist.commonjs/signer/btc/verify.js +13 -3
- package/dist.commonjs/signer/ckb/index.d.ts +1 -1
- package/dist.commonjs/signer/ckb/index.js +30 -14
- package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.d.ts +45 -51
- package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.d.ts.map +1 -1
- package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.js +56 -64
- package/dist.commonjs/signer/ckb/verifyJoyId.d.ts +6 -2
- package/dist.commonjs/signer/ckb/verifyJoyId.js +11 -8
- package/dist.commonjs/signer/dummy/alwaysError.d.ts +4 -5
- package/dist.commonjs/signer/dummy/alwaysError.d.ts.map +1 -1
- package/dist.commonjs/signer/dummy/alwaysError.js +7 -10
- package/dist.commonjs/signer/dummy/dummy.d.ts +7 -7
- package/dist.commonjs/signer/dummy/dummy.js +16 -16
- package/dist.commonjs/signer/dummy/index.d.ts +1 -1
- package/dist.commonjs/signer/dummy/index.js +30 -14
- package/dist.commonjs/signer/dummy/openLink.d.ts +4 -5
- package/dist.commonjs/signer/dummy/openLink.d.ts.map +1 -1
- package/dist.commonjs/signer/dummy/openLink.js +7 -10
- package/dist.commonjs/signer/evm/index.d.ts +1 -1
- package/dist.commonjs/signer/evm/index.js +30 -14
- package/dist.commonjs/signer/evm/signerEvm.d.ts +42 -38
- package/dist.commonjs/signer/evm/signerEvm.d.ts.map +1 -1
- package/dist.commonjs/signer/evm/signerEvm.js +106 -69
- package/dist.commonjs/signer/evm/signerEvmAddressReadonly.d.ts +37 -43
- package/dist.commonjs/signer/evm/signerEvmAddressReadonly.d.ts.map +1 -1
- package/dist.commonjs/signer/evm/signerEvmAddressReadonly.js +42 -50
- package/dist.commonjs/signer/evm/verify.d.ts +6 -2
- package/dist.commonjs/signer/evm/verify.js +7 -2
- package/dist.commonjs/signer/index.d.ts +2 -1
- package/dist.commonjs/signer/index.d.ts.map +1 -1
- package/dist.commonjs/signer/index.js +31 -14
- package/dist.commonjs/signer/nostr/index.d.ts +2 -0
- package/dist.commonjs/signer/nostr/index.d.ts.map +1 -0
- package/dist.commonjs/signer/nostr/index.js +33 -0
- package/dist.commonjs/signer/nostr/signerNostr.d.ts +66 -0
- package/dist.commonjs/signer/nostr/signerNostr.d.ts.map +1 -0
- package/dist.commonjs/signer/nostr/signerNostr.js +118 -0
- package/dist.commonjs/signer/nostr/verify.d.ts +11 -0
- package/dist.commonjs/signer/nostr/verify.d.ts.map +1 -0
- package/dist.commonjs/signer/nostr/verify.js +64 -0
- package/dist.commonjs/signer/signer/index.d.ts +156 -155
- package/dist.commonjs/signer/signer/index.d.ts.map +1 -1
- package/dist.commonjs/signer/signer/index.js +209 -175
- package/dist.commonjs/utils/index.d.ts +95 -6
- package/dist.commonjs/utils/index.d.ts.map +1 -1
- package/dist.commonjs/utils/index.js +30 -6
- package/package.json +4 -3
- package/src/address/address.advanced.ts +2 -5
- package/src/address/index.ts +2 -5
- package/src/ckb/script.ts +62 -2
- package/src/ckb/transaction.ts +678 -58
- package/src/client/advanced.ts +2 -0
- package/src/client/client.advanced.ts +134 -0
- package/src/client/client.ts +236 -25
- package/src/client/clientPublicMainnet.advanced.ts +117 -2
- package/src/client/clientPublicMainnet.ts +14 -3
- package/src/client/clientPublicTestnet.advanced.ts +176 -2
- package/src/client/clientPublicTestnet.ts +9 -3
- package/src/client/clientTypes.advanced.ts +26 -0
- package/src/client/clientTypes.ts +41 -43
- package/src/client/jsonRpc/index.ts +4 -4
- package/src/client/jsonRpc/transformers.ts +13 -11
- package/src/hasher/index.ts +4 -2
- package/src/num/index.ts +22 -0
- package/src/signer/btc/signerBtc.ts +6 -8
- package/src/signer/btc/signerBtcPublicKeyReadonly.ts +0 -9
- package/src/signer/btc/verify.ts +6 -3
- package/src/signer/ckb/signerCkbScriptReadonly.ts +0 -9
- package/src/signer/dummy/alwaysError.ts +0 -4
- package/src/signer/dummy/openLink.ts +0 -4
- package/src/signer/evm/signerEvm.ts +11 -11
- package/src/signer/evm/signerEvmAddressReadonly.ts +0 -9
- package/src/signer/index.ts +1 -0
- package/src/signer/nostr/index.ts +1 -0
- package/src/signer/nostr/signerNostr.ts +135 -0
- package/src/signer/nostr/verify.ts +63 -0
- package/src/signer/signer/index.ts +15 -11
- package/src/utils/index.ts +108 -0
|
@@ -44,7 +44,7 @@ export class SignerBtc extends Signer {
|
|
|
44
44
|
const publicKey = await this.getBtcPublicKey();
|
|
45
45
|
const hash = ripemd160(sha256(bytesFrom(publicKey)));
|
|
46
46
|
return [
|
|
47
|
-
await Address.fromKnownScript(KnownScript.OmniLock, hexFrom([0x04, ...hash, 0x00])
|
|
47
|
+
await Address.fromKnownScript(this.client, KnownScript.OmniLock, hexFrom([0x04, ...hash, 0x00])),
|
|
48
48
|
];
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
@@ -54,8 +54,11 @@ export class SignerBtc extends Signer {
|
|
|
54
54
|
* @returns A promise that resolves to the prepared Transaction object.
|
|
55
55
|
*/
|
|
56
56
|
async prepareTransaction(txLike) {
|
|
57
|
+
const tx = Transaction.from(txLike);
|
|
57
58
|
const { script } = await this.getRecommendedAddressObj();
|
|
58
|
-
|
|
59
|
+
await tx.addCellDepsOfKnownScripts(this.client, KnownScript.OmniLock);
|
|
60
|
+
await tx.prepareSighashAllWitness(script, 85, this.client);
|
|
61
|
+
return tx;
|
|
59
62
|
}
|
|
60
63
|
/**
|
|
61
64
|
* Signs a transaction without modifying it.
|
|
@@ -74,7 +77,7 @@ export class SignerBtc extends Signer {
|
|
|
74
77
|
signature[0] = 31 + ((signature[0] - 27) % 4);
|
|
75
78
|
const witness = WitnessArgs.fromBytes(tx.witnesses[info.position]);
|
|
76
79
|
witness.lock = hexFrom(bytesConcat(numToBytes(5 * 4 + signature.length, 4), numToBytes(4 * 4, 4), numToBytes(5 * 4 + signature.length, 4), numToBytes(5 * 4 + signature.length, 4), numToBytes(signature.length, 4), signature));
|
|
77
|
-
tx.
|
|
80
|
+
tx.setWitnessArgsAt(info.position, witness);
|
|
78
81
|
return tx;
|
|
79
82
|
}
|
|
80
83
|
}
|
|
@@ -16,12 +16,6 @@ export declare class SignerBtcPublicKeyReadonly extends SignerBtc {
|
|
|
16
16
|
* @param publicKey - The public key associated with the signer.
|
|
17
17
|
*/
|
|
18
18
|
constructor(client: Client, account: string, publicKey: HexLike);
|
|
19
|
-
/**
|
|
20
|
-
* Construct a new signer with the client replaced.
|
|
21
|
-
*
|
|
22
|
-
* @returns A promise that resolves the new Signer.
|
|
23
|
-
*/
|
|
24
|
-
replaceClient(client: Client): Promise<SignerBtcPublicKeyReadonly>;
|
|
25
19
|
/**
|
|
26
20
|
* Connects to the client. This implementation does nothing as the class is read-only.
|
|
27
21
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signerBtcPublicKeyReadonly.d.ts","sourceRoot":"","sources":["../../../src/signer/btc/signerBtcPublicKeyReadonly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,SAAS;IAYrD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAM;IAEhC;;;;;;OAMG;gBAED,MAAM,EAAE,MAAM,EACG,OAAO,EAAE,MAAM,EAChC,SAAS,EAAE,OAAO;IAOpB;;;;OAIG;IACG,
|
|
1
|
+
{"version":3,"file":"signerBtcPublicKeyReadonly.d.ts","sourceRoot":"","sources":["../../../src/signer/btc/signerBtcPublicKeyReadonly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,SAAS;IAYrD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAM;IAEhC;;;;;;OAMG;gBAED,MAAM,EAAE,MAAM,EACG,OAAO,EAAE,MAAM,EAChC,SAAS,EAAE,OAAO;IAOpB;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;;;;;;;;OASG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAItC;;;;;;;;;OASG;IACG,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC;CAGtC"}
|
|
@@ -17,14 +17,6 @@ export class SignerBtcPublicKeyReadonly extends SignerBtc {
|
|
|
17
17
|
this.account = account;
|
|
18
18
|
this.publicKey = hexFrom(publicKey);
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Construct a new signer with the client replaced.
|
|
22
|
-
*
|
|
23
|
-
* @returns A promise that resolves the new Signer.
|
|
24
|
-
*/
|
|
25
|
-
async replaceClient(client) {
|
|
26
|
-
return new SignerBtcPublicKeyReadonly(client, this.account, this.publicKey);
|
|
27
|
-
}
|
|
28
20
|
/**
|
|
29
21
|
* Connects to the client. This implementation does nothing as the class is read-only.
|
|
30
22
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/signer/btc/verify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/signer/btc/verify.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAa,MAAM,aAAa,CAAC;AAGnD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAOT"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { secp256k1 } from "@noble/curves/secp256k1";
|
|
2
|
+
import { magicHash } from "bitcoinjs-message";
|
|
3
|
+
import { bytesFrom } from "../../bytes";
|
|
2
4
|
import { hexFrom } from "../../hex";
|
|
3
5
|
export function verifyMessageBtcEcdsa(message, signature, publicKey) {
|
|
4
6
|
const challenge = typeof message === "string" ? message : hexFrom(message).slice(2);
|
|
5
|
-
|
|
7
|
+
const [_, ...rawSign] = bytesFrom(signature, "base64");
|
|
8
|
+
return secp256k1.verify(bytesFrom(rawSign), magicHash(challenge), publicKey);
|
|
6
9
|
}
|
|
@@ -17,12 +17,6 @@ export declare class SignerCkbScriptReadonly extends Signer {
|
|
|
17
17
|
* @param script - The script associated with the signer.
|
|
18
18
|
*/
|
|
19
19
|
constructor(client: Client, script: ScriptLike);
|
|
20
|
-
/**
|
|
21
|
-
* Construct a new signer with the client replaced.
|
|
22
|
-
*
|
|
23
|
-
* @returns A promise that resolves the new Signer.
|
|
24
|
-
*/
|
|
25
|
-
replaceClient(client: Client): Promise<SignerCkbScriptReadonly>;
|
|
26
20
|
/**
|
|
27
21
|
* Connects to the client. This implementation does nothing as the class is read-only.
|
|
28
22
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signerCkbScriptReadonly.d.ts","sourceRoot":"","sources":["../../../src/signer/ckb/signerCkbScriptReadonly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAU,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE/D;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,MAAM;IACjD,IAAI,IAAI,IAAI,UAAU,CAErB;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;IAM9C;;;;OAIG;IACG,
|
|
1
|
+
{"version":3,"file":"signerCkbScriptReadonly.d.ts","sourceRoot":"","sources":["../../../src/signer/ckb/signerCkbScriptReadonly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAU,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE/D;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,MAAM;IACjD,IAAI,IAAI,IAAI,UAAU,CAErB;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;IAM9C;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;;;;;;;;OASG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3C;;;;;;;;;OASG;IAEG,cAAc,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAG3C"}
|
|
@@ -22,14 +22,6 @@ export class SignerCkbScriptReadonly extends Signer {
|
|
|
22
22
|
super(client);
|
|
23
23
|
this.script = Script.from(script);
|
|
24
24
|
}
|
|
25
|
-
/**
|
|
26
|
-
* Construct a new signer with the client replaced.
|
|
27
|
-
*
|
|
28
|
-
* @returns A promise that resolves the new Signer.
|
|
29
|
-
*/
|
|
30
|
-
async replaceClient(client) {
|
|
31
|
-
return new SignerCkbScriptReadonly(client, this.script);
|
|
32
|
-
}
|
|
33
25
|
/**
|
|
34
26
|
* Connects to the client. This implementation does nothing as the class is read-only.
|
|
35
27
|
*
|
|
@@ -4,7 +4,6 @@ import { SignerDummy } from "./dummy";
|
|
|
4
4
|
export declare class SignerAlwaysError extends SignerDummy {
|
|
5
5
|
private readonly message;
|
|
6
6
|
constructor(client: Client, type: SignerType, message: string);
|
|
7
|
-
replaceClient(client: Client): Promise<SignerAlwaysError>;
|
|
8
7
|
connect(): Promise<void>;
|
|
9
8
|
}
|
|
10
9
|
//# sourceMappingURL=alwaysError.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alwaysError.d.ts","sourceRoot":"","sources":["../../../src/signer/dummy/alwaysError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,qBAAa,iBAAkB,SAAQ,WAAW;IAI9C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFxB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,EACC,OAAO,EAAE,MAAM;IAK5B,
|
|
1
|
+
{"version":3,"file":"alwaysError.d.ts","sourceRoot":"","sources":["../../../src/signer/dummy/alwaysError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,qBAAa,iBAAkB,SAAQ,WAAW;IAI9C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAFxB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,EACC,OAAO,EAAE,MAAM;IAK5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -4,9 +4,6 @@ export class SignerAlwaysError extends SignerDummy {
|
|
|
4
4
|
super(client, type);
|
|
5
5
|
this.message = message;
|
|
6
6
|
}
|
|
7
|
-
async replaceClient(client) {
|
|
8
|
-
return new SignerAlwaysError(client, this.type, this.message);
|
|
9
|
-
}
|
|
10
7
|
async connect() {
|
|
11
8
|
throw new Error(this.message);
|
|
12
9
|
}
|
|
@@ -4,7 +4,6 @@ import { SignerDummy } from "./dummy";
|
|
|
4
4
|
export declare class SignerOpenLink extends SignerDummy {
|
|
5
5
|
private readonly link;
|
|
6
6
|
constructor(client: Client, type: SignerType, link: string);
|
|
7
|
-
replaceClient(client: Client): Promise<SignerOpenLink>;
|
|
8
7
|
connect(): Promise<void>;
|
|
9
8
|
}
|
|
10
9
|
//# sourceMappingURL=openLink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openLink.d.ts","sourceRoot":"","sources":["../../../src/signer/dummy/openLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,qBAAa,cAAe,SAAQ,WAAW;IAI3C,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,EACC,IAAI,EAAE,MAAM;IAKzB,
|
|
1
|
+
{"version":3,"file":"openLink.d.ts","sourceRoot":"","sources":["../../../src/signer/dummy/openLink.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,qBAAa,cAAe,SAAQ,WAAW;IAI3C,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,EACC,IAAI,EAAE,MAAM;IAKzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signerEvm.d.ts","sourceRoot":"","sources":["../../../src/signer/evm/signerEvm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAA0B,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAe,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"signerEvm.d.ts","sourceRoot":"","sources":["../../../src/signer/evm/signerEvm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAA0B,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAe,MAAM,WAAW,CAAC;AAK9E,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE/D;;;GAGG;AACH,8BAAsB,SAAU,SAAQ,MAAM;IAC5C,IAAI,IAAI,IAAI,UAAU,CAErB;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED;;;;OAIG;IACH,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAEzC;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3C;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAQpC,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ5D,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQrE;;;;;OAKG;IACG,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAWvE;;;;;OAKG;IACG,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAsBlE,iCAAiC,CACrC,EAAE,EAAE,WAAW,EACf,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,GAC9C,OAAO,CAAC,WAAW,CAAC;CA6BxB"}
|
|
@@ -4,6 +4,7 @@ import { Transaction, WitnessArgs } from "../../ckb";
|
|
|
4
4
|
import { KnownScript } from "../../client";
|
|
5
5
|
import { hexFrom } from "../../hex";
|
|
6
6
|
import { numToBytes } from "../../num";
|
|
7
|
+
import { reduceAsync } from "../../utils";
|
|
7
8
|
import { Signer, SignerSignType, SignerType } from "../signer";
|
|
8
9
|
/**
|
|
9
10
|
* An abstract class extending Signer for Ethereum Virtual Machine (EVM) based signing operations.
|
|
@@ -37,10 +38,10 @@ export class SignerEvm extends Signer {
|
|
|
37
38
|
];
|
|
38
39
|
}
|
|
39
40
|
async _getOmniLockEvmAddressObj(account) {
|
|
40
|
-
return Address.fromKnownScript(KnownScript.OmniLock, hexFrom([0x12, ...bytesFrom(account), 0x00])
|
|
41
|
+
return Address.fromKnownScript(this.client, KnownScript.OmniLock, hexFrom([0x12, ...bytesFrom(account), 0x00]));
|
|
41
42
|
}
|
|
42
43
|
async _getOmniLockOldEvmAddressObj(account) {
|
|
43
|
-
return Address.fromKnownScript(KnownScript.OmniLock, hexFrom([0x1, ...bytesFrom(account), 0x00])
|
|
44
|
+
return Address.fromKnownScript(this.client, KnownScript.OmniLock, hexFrom([0x1, ...bytesFrom(account), 0x00]));
|
|
44
45
|
}
|
|
45
46
|
/**
|
|
46
47
|
* prepare a transaction before signing. This method is not implemented and should be overridden by subclasses.
|
|
@@ -49,8 +50,9 @@ export class SignerEvm extends Signer {
|
|
|
49
50
|
* @returns A promise that resolves to the prepared Transaction object.
|
|
50
51
|
*/
|
|
51
52
|
async prepareTransaction(txLike) {
|
|
52
|
-
const
|
|
53
|
-
|
|
53
|
+
const tx = Transaction.from(txLike);
|
|
54
|
+
await tx.addCellDepsOfKnownScripts(this.client, KnownScript.OmniLock);
|
|
55
|
+
return reduceAsync(await this.getAddressObjs(), (tx, { script }) => tx.prepareSighashAllWitness(script, 85, this.client), tx);
|
|
54
56
|
}
|
|
55
57
|
/**
|
|
56
58
|
* Signs a transaction without modifying it.
|
|
@@ -78,7 +80,7 @@ export class SignerEvm extends Signer {
|
|
|
78
80
|
}
|
|
79
81
|
const witness = WitnessArgs.fromBytes(tx.witnesses[info.position]);
|
|
80
82
|
witness.lock = hexFrom(bytesConcat(numToBytes(5 * 4 + signature.length, 4), numToBytes(4 * 4, 4), numToBytes(5 * 4 + signature.length, 4), numToBytes(5 * 4 + signature.length, 4), numToBytes(signature.length, 4), signature));
|
|
81
|
-
tx.
|
|
83
|
+
tx.setWitnessArgsAt(info.position, witness);
|
|
82
84
|
return tx;
|
|
83
85
|
}
|
|
84
86
|
}
|
|
@@ -14,12 +14,6 @@ export declare class SignerEvmAddressReadonly extends SignerEvm {
|
|
|
14
14
|
* @param address - The EVM address associated with the signer.
|
|
15
15
|
*/
|
|
16
16
|
constructor(client: Client, address: HexLike);
|
|
17
|
-
/**
|
|
18
|
-
* Construct a new signer with the client replaced.
|
|
19
|
-
*
|
|
20
|
-
* @returns A promise that resolves the new Signer.
|
|
21
|
-
*/
|
|
22
|
-
replaceClient(client: Client): Promise<SignerEvmAddressReadonly>;
|
|
23
17
|
/**
|
|
24
18
|
* Connects to the client. This implementation does nothing as the class is read-only.
|
|
25
19
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signerEvmAddressReadonly.d.ts","sourceRoot":"","sources":["../../../src/signer/evm/signerEvmAddressReadonly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAO,OAAO,EAAW,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,SAAS;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAM;IAE9B;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAM5C
|
|
1
|
+
{"version":3,"file":"signerEvmAddressReadonly.d.ts","sourceRoot":"","sources":["../../../src/signer/evm/signerEvmAddressReadonly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAO,OAAO,EAAW,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,SAAS;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAM;IAE9B;;;;;OAKG;gBACS,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAM5C;;;;;;;;;OASG;IAEG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;;;;;;;;OASG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAGvC"}
|
|
@@ -15,14 +15,6 @@ export class SignerEvmAddressReadonly extends SignerEvm {
|
|
|
15
15
|
super(client);
|
|
16
16
|
this.address = hexFrom(address);
|
|
17
17
|
}
|
|
18
|
-
/**
|
|
19
|
-
* Construct a new signer with the client replaced.
|
|
20
|
-
*
|
|
21
|
-
* @returns A promise that resolves the new Signer.
|
|
22
|
-
*/
|
|
23
|
-
async replaceClient(client) {
|
|
24
|
-
return new SignerEvmAddressReadonly(client, this.address);
|
|
25
|
-
}
|
|
26
18
|
/**
|
|
27
19
|
* Connects to the client. This implementation does nothing as the class is read-only.
|
|
28
20
|
*
|
package/dist/signer/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
package/dist/signer/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signer/nostr/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./signerNostr";
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Address } from "../../address";
|
|
2
|
+
import { BytesLike } from "../../bytes";
|
|
3
|
+
import { Transaction, TransactionLike } from "../../ckb";
|
|
4
|
+
import { Hex } from "../../hex";
|
|
5
|
+
import { Signer, SignerSignType, SignerType } from "../signer";
|
|
6
|
+
export interface NostrEvent {
|
|
7
|
+
id?: string;
|
|
8
|
+
pubkey?: string;
|
|
9
|
+
sig?: string;
|
|
10
|
+
created_at: number;
|
|
11
|
+
kind: number;
|
|
12
|
+
tags: string[][];
|
|
13
|
+
content: string;
|
|
14
|
+
}
|
|
15
|
+
export declare abstract class SignerNostr extends Signer {
|
|
16
|
+
static CKB_SIG_HASH_ALL_TAG: string;
|
|
17
|
+
static CKB_UNLOCK_EVENT_KIND: number;
|
|
18
|
+
static CKB_UNLOCK_EVENT_CONTENT: string;
|
|
19
|
+
get type(): SignerType;
|
|
20
|
+
get signType(): SignerSignType;
|
|
21
|
+
/**
|
|
22
|
+
* Gets the Nostr public key associated with the signer.
|
|
23
|
+
*
|
|
24
|
+
* @returns A promise that resolves to a string representing the Nostr public key.
|
|
25
|
+
*/
|
|
26
|
+
abstract getNostrPublicKey(): Promise<Hex>;
|
|
27
|
+
/**
|
|
28
|
+
* Sign a nostr event.
|
|
29
|
+
*
|
|
30
|
+
* @returns A promise that resolves to the signed event.
|
|
31
|
+
*/
|
|
32
|
+
abstract signNostrEvent(event: NostrEvent): Promise<Required<NostrEvent>>;
|
|
33
|
+
/**
|
|
34
|
+
* Sign a message.
|
|
35
|
+
*
|
|
36
|
+
* @returns A promise that resolves to the signature.
|
|
37
|
+
*/
|
|
38
|
+
signMessageRaw(message: string | BytesLike): Promise<Hex>;
|
|
39
|
+
/**
|
|
40
|
+
* Gets the internal address, which is the EVM account in this case.
|
|
41
|
+
*
|
|
42
|
+
* @returns A promise that resolves to a string representing the internal address.
|
|
43
|
+
*/
|
|
44
|
+
getInternalAddress(): Promise<string>;
|
|
45
|
+
/**
|
|
46
|
+
* Gets an array of Address objects representing the known script addresses for the signer.
|
|
47
|
+
*
|
|
48
|
+
* @returns A promise that resolves to an array of Address objects.
|
|
49
|
+
*/
|
|
50
|
+
getAddressObjs(): Promise<Address[]>;
|
|
51
|
+
/**
|
|
52
|
+
* prepare a transaction before signing.
|
|
53
|
+
*
|
|
54
|
+
* @param txLike - The transaction to prepare, represented as a TransactionLike object.
|
|
55
|
+
* @returns A promise that resolves to the prepared Transaction object.
|
|
56
|
+
*/
|
|
57
|
+
prepareTransaction(txLike: TransactionLike): Promise<Transaction>;
|
|
58
|
+
/**
|
|
59
|
+
* Signs a transaction without modifying it.
|
|
60
|
+
*
|
|
61
|
+
* @param txLike - The transaction to sign, represented as a TransactionLike object.
|
|
62
|
+
* @returns A promise that resolves to a signed Transaction object.
|
|
63
|
+
*/
|
|
64
|
+
signOnlyTransaction(txLike: TransactionLike): Promise<Transaction>;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=signerNostr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signerNostr.d.ts","sourceRoot":"","sources":["../../../src/signer/nostr/signerNostr.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAA0B,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAe,MAAM,WAAW,CAAC;AAGtE,OAAO,EAAE,GAAG,EAAW,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG/D,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,8BAAsB,WAAY,SAAQ,MAAM;IAC9C,MAAM,CAAC,oBAAoB,SAAqB;IAChD,MAAM,CAAC,qBAAqB,SAAS;IACrC,MAAM,CAAC,wBAAwB,SACkH;IAEjJ,IAAI,IAAI,IAAI,UAAU,CAErB;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC;IAE1C;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEzE;;;;OAIG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;IAM/D;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAO3C;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAW1C;;;;;OAKG;IACG,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAQvE;;;;;OAKG;IACG,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;CA2BzE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { bech32 } from "bech32";
|
|
2
|
+
import { Address } from "../../address";
|
|
3
|
+
import { bytesConcat, bytesFrom } from "../../bytes";
|
|
4
|
+
import { Transaction, WitnessArgs } from "../../ckb";
|
|
5
|
+
import { KnownScript } from "../../client";
|
|
6
|
+
import { ckbHash } from "../../hasher";
|
|
7
|
+
import { hexFrom } from "../../hex";
|
|
8
|
+
import { Signer, SignerSignType, SignerType } from "../signer";
|
|
9
|
+
import { buildNostrEventFromMessage } from "./verify";
|
|
10
|
+
export class SignerNostr extends Signer {
|
|
11
|
+
get type() {
|
|
12
|
+
return SignerType.Nostr;
|
|
13
|
+
}
|
|
14
|
+
get signType() {
|
|
15
|
+
return SignerSignType.NostrEvent;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Sign a message.
|
|
19
|
+
*
|
|
20
|
+
* @returns A promise that resolves to the signature.
|
|
21
|
+
*/
|
|
22
|
+
async signMessageRaw(message) {
|
|
23
|
+
return hexFrom((await this.signNostrEvent(buildNostrEventFromMessage(message))).sig);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Gets the internal address, which is the EVM account in this case.
|
|
27
|
+
*
|
|
28
|
+
* @returns A promise that resolves to a string representing the internal address.
|
|
29
|
+
*/
|
|
30
|
+
async getInternalAddress() {
|
|
31
|
+
return bech32.encode("npub", bech32.toWords(bytesFrom(await this.getNostrPublicKey())));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Gets an array of Address objects representing the known script addresses for the signer.
|
|
35
|
+
*
|
|
36
|
+
* @returns A promise that resolves to an array of Address objects.
|
|
37
|
+
*/
|
|
38
|
+
async getAddressObjs() {
|
|
39
|
+
const publicKey = await this.getNostrPublicKey();
|
|
40
|
+
return [
|
|
41
|
+
await Address.fromKnownScript(this.client, KnownScript.NostrLock, hexFrom(bytesConcat([0x00], ckbHash(publicKey).slice(0, 42)))),
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* prepare a transaction before signing.
|
|
46
|
+
*
|
|
47
|
+
* @param txLike - The transaction to prepare, represented as a TransactionLike object.
|
|
48
|
+
* @returns A promise that resolves to the prepared Transaction object.
|
|
49
|
+
*/
|
|
50
|
+
async prepareTransaction(txLike) {
|
|
51
|
+
const tx = Transaction.from(txLike);
|
|
52
|
+
const { script } = await this.getRecommendedAddressObj();
|
|
53
|
+
await tx.addCellDepsOfKnownScripts(this.client, KnownScript.NostrLock);
|
|
54
|
+
await tx.prepareSighashAllWitness(script, 572, this.client);
|
|
55
|
+
return tx;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Signs a transaction without modifying it.
|
|
59
|
+
*
|
|
60
|
+
* @param txLike - The transaction to sign, represented as a TransactionLike object.
|
|
61
|
+
* @returns A promise that resolves to a signed Transaction object.
|
|
62
|
+
*/
|
|
63
|
+
async signOnlyTransaction(txLike) {
|
|
64
|
+
let tx = Transaction.from(txLike);
|
|
65
|
+
const { script } = await this.getRecommendedAddressObj();
|
|
66
|
+
const info = await tx.getSignHashInfo(script, this.client);
|
|
67
|
+
if (!info) {
|
|
68
|
+
return tx;
|
|
69
|
+
}
|
|
70
|
+
const signedEvent = bytesFrom(JSON.stringify(await this.signNostrEvent({
|
|
71
|
+
pubkey: (await this.getNostrPublicKey()).slice(2),
|
|
72
|
+
tags: [[SignerNostr.CKB_SIG_HASH_ALL_TAG, info.message.slice(2)]],
|
|
73
|
+
created_at: Math.floor(Date.now() / 1000),
|
|
74
|
+
kind: SignerNostr.CKB_UNLOCK_EVENT_KIND,
|
|
75
|
+
content: SignerNostr.CKB_UNLOCK_EVENT_CONTENT,
|
|
76
|
+
})), "utf8");
|
|
77
|
+
const witness = WitnessArgs.fromBytes(tx.witnesses[info.position]);
|
|
78
|
+
witness.lock = hexFrom(signedEvent);
|
|
79
|
+
tx.setWitnessArgsAt(info.position, witness);
|
|
80
|
+
return tx;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
SignerNostr.CKB_SIG_HASH_ALL_TAG = "ckb_sighash_all";
|
|
84
|
+
SignerNostr.CKB_UNLOCK_EVENT_KIND = 23334;
|
|
85
|
+
SignerNostr.CKB_UNLOCK_EVENT_CONTENT = "Signing a CKB transaction\n\nIMPORTANT: Please verify the integrity and authenticity of connected Nostr client before signing this message\n";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { BytesLike } from "../../bytes";
|
|
2
|
+
import { NostrEvent } from "./signerNostr";
|
|
3
|
+
export declare function buildNostrEventFromMessage(message: string | BytesLike): NostrEvent;
|
|
4
|
+
export declare function verifyMessageNostrEvent(message: string | BytesLike, signature: string, address: string): boolean;
|
|
5
|
+
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/signer/nostr/verify.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAa,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,UAAU,CA2BZ;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAoBT"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { schnorr } from "@noble/curves/secp256k1";
|
|
2
|
+
import { sha256 } from "@noble/hashes/sha256";
|
|
3
|
+
import { bech32 } from "bech32";
|
|
4
|
+
import { bytesFrom } from "../../bytes";
|
|
5
|
+
import { hexFrom } from "../../hex";
|
|
6
|
+
export function buildNostrEventFromMessage(message) {
|
|
7
|
+
if (typeof message === "string") {
|
|
8
|
+
try {
|
|
9
|
+
const event = JSON.parse(message);
|
|
10
|
+
if (typeof event === "object" &&
|
|
11
|
+
typeof event.created_at === "number" &&
|
|
12
|
+
typeof event.kind === "number" &&
|
|
13
|
+
typeof event.content === "string" &&
|
|
14
|
+
Array.isArray(event.args) &&
|
|
15
|
+
event.args.every((tag) => Array.isArray(tag) &&
|
|
16
|
+
tag.every((v) => typeof v === "string"))) {
|
|
17
|
+
return event;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
catch (_) { }
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
kind: 23335,
|
|
24
|
+
created_at: 0,
|
|
25
|
+
content: typeof message === "string" ? message : hexFrom(message),
|
|
26
|
+
tags: [],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export function verifyMessageNostrEvent(message, signature, address) {
|
|
30
|
+
const { words } = bech32.decode(address);
|
|
31
|
+
const publicKey = hexFrom(bech32.fromWords(words)).slice(2);
|
|
32
|
+
const event = buildNostrEventFromMessage(message);
|
|
33
|
+
const serialized = JSON.stringify([
|
|
34
|
+
0,
|
|
35
|
+
publicKey,
|
|
36
|
+
event.created_at,
|
|
37
|
+
event.kind,
|
|
38
|
+
event.tags,
|
|
39
|
+
event.content,
|
|
40
|
+
]);
|
|
41
|
+
const eventHash = hexFrom(sha256(bytesFrom(serialized, "utf8")));
|
|
42
|
+
try {
|
|
43
|
+
return schnorr.verify(signature.slice(2), eventHash.slice(2), publicKey);
|
|
44
|
+
}
|
|
45
|
+
catch (_) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -8,7 +8,8 @@ export declare enum SignerSignType {
|
|
|
8
8
|
Unknown = "Unknown",
|
|
9
9
|
BtcEcdsa = "BtcEcdsa",
|
|
10
10
|
EvmPersonal = "EvmPersonal",
|
|
11
|
-
JoyId = "JoyId"
|
|
11
|
+
JoyId = "JoyId",
|
|
12
|
+
NostrEvent = "NostrEvent"
|
|
12
13
|
}
|
|
13
14
|
/**
|
|
14
15
|
* An enumeration of signer display types in wallet.
|
|
@@ -16,7 +17,8 @@ export declare enum SignerSignType {
|
|
|
16
17
|
export declare enum SignerType {
|
|
17
18
|
EVM = "EVM",
|
|
18
19
|
BTC = "BTC",
|
|
19
|
-
CKB = "CKB"
|
|
20
|
+
CKB = "CKB",
|
|
21
|
+
Nostr = "Nostr"
|
|
20
22
|
}
|
|
21
23
|
export declare class Signature {
|
|
22
24
|
signature: string;
|
|
@@ -36,23 +38,16 @@ export declare abstract class Signer {
|
|
|
36
38
|
get client(): Client;
|
|
37
39
|
static verifyMessage(message: string | BytesLike, signature: Signature): Promise<boolean>;
|
|
38
40
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* @returns A promise that resolves the new Signer.
|
|
41
|
+
* Replace the current client.
|
|
42
|
+
* returns false if the new client is invalid for this signer.
|
|
42
43
|
*/
|
|
43
|
-
|
|
44
|
+
replaceClient(client: Client): Promise<boolean>;
|
|
44
45
|
/**
|
|
45
46
|
* Connects to the signer.
|
|
46
47
|
*
|
|
47
48
|
* @returns A promise that resolves when the connection is complete.
|
|
48
49
|
*/
|
|
49
50
|
abstract connect(): Promise<void>;
|
|
50
|
-
/**
|
|
51
|
-
* Disconnects to the signer.
|
|
52
|
-
*
|
|
53
|
-
* @returns A promise that resolves when disconnected.
|
|
54
|
-
*/
|
|
55
|
-
disconnect(): Promise<void>;
|
|
56
51
|
/**
|
|
57
52
|
* Check if the signer is connected.
|
|
58
53
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signer/signer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signer/signer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAMhC,oBAAY,cAAc;IACxB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,UAAU,eAAe;CAC1B;AAED;;GAEG;AACH,oBAAY,UAAU;IACpB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,KAAK,UAAU;CAChB;AAED,qBAAa,SAAS;IAEX,SAAS,EAAE,MAAM;IACjB,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,cAAc;gBAFxB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,cAAc;CAElC;AAED;;;GAGG;AACH,8BAAsB,MAAM;IACd,SAAS,CAAC,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM;IAErC,QAAQ,KAAK,IAAI,IAAI,UAAU,CAAC;IAChC,QAAQ,KAAK,QAAQ,IAAI,cAAc,CAAC;IAExC,IAAI,MAAM,IAAI,MAAM,CAEnB;WAEY,aAAa,CACxB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,OAAO,CAAC;IA+BnB;;;OAGG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD;;;;OAIG;IACH,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAEjC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAExC;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAE9C;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAIpC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAE7C;;;;;OAKG;IACG,wBAAwB,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvE;;;;;OAKG;IACG,qBAAqB,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlE;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAMvC;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC;IAMhC;;;;;;OAMG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAQlE;;;;;;OAMG;IACH,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAItD;;;;;;;OAOG;IACG,aAAa,CACjB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,OAAO,CAAC;IAenB;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAItE;;;;;OAKG;IACG,eAAe,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IAIxD;;;;;OAKG;IACG,eAAe,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAKhE;;;;;;OAMG;IACH,kBAAkB,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAI5D;;;;;;OAMG;IACH,mBAAmB,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;CAG9D;AAED;;GAEG;AACH,qBAAa,UAAU;IAEZ,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,MAAM;gBADd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM;CAExB;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { verifyMessageBtcEcdsa } from "../btc";
|
|
2
2
|
import { verifyMessageJoyId } from "../ckb/verifyJoyId";
|
|
3
3
|
import { verifyMessageEvmPersonal } from "../evm/verify";
|
|
4
|
+
import { verifyMessageNostrEvent } from "../nostr/verify";
|
|
4
5
|
export var SignerSignType;
|
|
5
6
|
(function (SignerSignType) {
|
|
6
7
|
SignerSignType["Unknown"] = "Unknown";
|
|
7
8
|
SignerSignType["BtcEcdsa"] = "BtcEcdsa";
|
|
8
9
|
SignerSignType["EvmPersonal"] = "EvmPersonal";
|
|
9
10
|
SignerSignType["JoyId"] = "JoyId";
|
|
11
|
+
SignerSignType["NostrEvent"] = "NostrEvent";
|
|
10
12
|
})(SignerSignType || (SignerSignType = {}));
|
|
11
13
|
/**
|
|
12
14
|
* An enumeration of signer display types in wallet.
|
|
@@ -16,6 +18,7 @@ export var SignerType;
|
|
|
16
18
|
SignerType["EVM"] = "EVM";
|
|
17
19
|
SignerType["BTC"] = "BTC";
|
|
18
20
|
SignerType["CKB"] = "CKB";
|
|
21
|
+
SignerType["Nostr"] = "Nostr";
|
|
19
22
|
})(SignerType || (SignerType = {}));
|
|
20
23
|
export class Signature {
|
|
21
24
|
constructor(signature, identity, signType) {
|
|
@@ -43,16 +46,20 @@ export class Signer {
|
|
|
43
46
|
return verifyMessageBtcEcdsa(message, signature.signature, signature.identity);
|
|
44
47
|
case SignerSignType.JoyId:
|
|
45
48
|
return verifyMessageJoyId(message, signature.signature, signature.identity);
|
|
49
|
+
case SignerSignType.NostrEvent:
|
|
50
|
+
return verifyMessageNostrEvent(message, signature.signature, signature.identity);
|
|
46
51
|
case SignerSignType.Unknown:
|
|
47
52
|
throw new Error("Unknown signer sign type");
|
|
48
53
|
}
|
|
49
54
|
}
|
|
50
55
|
/**
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* @returns A promise that resolves when disconnected.
|
|
56
|
+
* Replace the current client.
|
|
57
|
+
* returns false if the new client is invalid for this signer.
|
|
54
58
|
*/
|
|
55
|
-
async
|
|
59
|
+
async replaceClient(client) {
|
|
60
|
+
this.client_ = client;
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
56
63
|
/**
|
|
57
64
|
* Gets the identity for verifying signature, usually it's address
|
|
58
65
|
*
|