@ckb-ccc/eip6963 0.0.3-alpha.0 → 0.0.4-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/signer.d.ts +2 -5
- package/dist/signer.d.ts.map +1 -1
- package/dist/signer.js +6 -28
- package/package.json +3 -3
- package/src/signer.ts +6 -54
package/dist/signer.d.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { ccc } from "@ckb-ccc/core";
|
|
2
2
|
import { ProviderDetail as EIP6963ProviderDetail } from "./eip6963.advanced";
|
|
3
|
-
export declare class Signer extends ccc.
|
|
3
|
+
export declare class Signer extends ccc.SignerEvm {
|
|
4
4
|
readonly detail: EIP6963ProviderDetail;
|
|
5
5
|
constructor(client: ccc.Client, detail: EIP6963ProviderDetail);
|
|
6
|
-
|
|
7
|
-
getInternalAddress(): Promise<string>;
|
|
8
|
-
getAddressObjs(): Promise<ccc.Address[]>;
|
|
6
|
+
getEvmAccount(): Promise<`0x${string}`>;
|
|
9
7
|
connect(): Promise<void>;
|
|
10
8
|
signMessage(message: string | ccc.BytesLike): Promise<ccc.Hex>;
|
|
11
|
-
signOnlyTransaction(tx: ccc.Transaction): Promise<ccc.Transaction>;
|
|
12
9
|
}
|
|
13
10
|
//# sourceMappingURL=signer.d.ts.map
|
package/dist/signer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,qBAAa,MAAO,SAAQ,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,qBAAa,MAAO,SAAQ,GAAG,CAAC,SAAS;aAGrB,MAAM,EAAE,qBAAqB;gBAD7C,MAAM,EAAE,GAAG,CAAC,MAAM,EACF,MAAM,EAAE,qBAAqB;IAKzC,aAAa;IAIb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;CAUrE"}
|
package/dist/signer.js
CHANGED
|
@@ -1,43 +1,21 @@
|
|
|
1
1
|
import { ccc } from "@ckb-ccc/core";
|
|
2
|
-
export class Signer extends ccc.
|
|
2
|
+
export class Signer extends ccc.SignerEvm {
|
|
3
3
|
constructor(client, detail) {
|
|
4
4
|
super(client);
|
|
5
5
|
this.detail = detail;
|
|
6
6
|
}
|
|
7
|
-
async
|
|
8
|
-
return this.detail.provider.request({ method: "eth_accounts" });
|
|
9
|
-
}
|
|
10
|
-
async getInternalAddress() {
|
|
11
|
-
return (await this.getEVMAccounts())[0];
|
|
12
|
-
}
|
|
13
|
-
async getAddressObjs() {
|
|
14
|
-
const accounts = await this.getEVMAccounts();
|
|
15
|
-
return Promise.all(accounts.map((account) => ccc.Address.fromKnownScript(ccc.KnownScript.OmniLock, ccc.hexFrom([0x12, ...ccc.bytesFrom(account), 0x00]), this.client)));
|
|
7
|
+
async getEvmAccount() {
|
|
8
|
+
return (await this.detail.provider.request({ method: "eth_accounts" }))[0];
|
|
16
9
|
}
|
|
17
10
|
async connect() {
|
|
18
11
|
await this.detail.provider.request({ method: "eth_requestAccounts" });
|
|
19
12
|
}
|
|
20
13
|
async signMessage(message) {
|
|
21
|
-
const challenge = typeof message === "string" ? message :
|
|
22
|
-
const
|
|
14
|
+
const challenge = typeof message === "string" ? ccc.bytesFrom(message, "utf8") : message;
|
|
15
|
+
const address = await this.getEvmAccount();
|
|
23
16
|
return this.detail.provider.request({
|
|
24
17
|
method: "personal_sign",
|
|
25
|
-
params: [challenge, address],
|
|
18
|
+
params: [ccc.hexFrom(challenge), address],
|
|
26
19
|
});
|
|
27
20
|
}
|
|
28
|
-
async signOnlyTransaction(tx) {
|
|
29
|
-
const { script } = await this.getRecommendedAddressObj();
|
|
30
|
-
const info = await ccc.getSignHashInfo(tx, script);
|
|
31
|
-
if (!info) {
|
|
32
|
-
return tx;
|
|
33
|
-
}
|
|
34
|
-
const signature = ccc.bytesFrom(await this.signMessage(`CKB transaction: ${info.message}`));
|
|
35
|
-
if (signature[signature.length - 1] >= 27) {
|
|
36
|
-
signature[signature.length - 1] -= 27;
|
|
37
|
-
}
|
|
38
|
-
const witness = ccc.WitnessArgs.fromBytes(tx.witnesses[info.position]);
|
|
39
|
-
witness.lock = ccc.hexFrom(ccc.bytesConcat(ccc.numToBytes(5 * 4 + signature.length, 4), ccc.numToBytes(4 * 4, 4), ccc.numToBytes(5 * 4 + signature.length, 4), ccc.numToBytes(5 * 4 + signature.length, 4), ccc.numToBytes(signature.length, 4), signature));
|
|
40
|
-
tx.witnesses[info.position] = ccc.hexFrom(witness.toBytes());
|
|
41
|
-
return tx;
|
|
42
|
-
}
|
|
43
21
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ckb-ccc/eip6963",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4-alpha.0",
|
|
4
4
|
"description": "Common Chains Connector's support for EIP6963",
|
|
5
5
|
"author": "Hanssen0 <hanssen0@hanssen0.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@ckb-ccc/core": "0.0.
|
|
38
|
+
"@ckb-ccc/core": "0.0.4-alpha.0"
|
|
39
39
|
},
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "e49045ed4b2778c92d6f49b79c17125245141a21"
|
|
41
41
|
}
|
package/src/signer.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ccc } from "@ckb-ccc/core";
|
|
2
2
|
import { ProviderDetail as EIP6963ProviderDetail } from "./eip6963.advanced";
|
|
3
3
|
|
|
4
|
-
export class Signer extends ccc.
|
|
4
|
+
export class Signer extends ccc.SignerEvm {
|
|
5
5
|
constructor(
|
|
6
6
|
client: ccc.Client,
|
|
7
7
|
public readonly detail: EIP6963ProviderDetail,
|
|
@@ -9,25 +9,8 @@ export class Signer extends ccc.Signer {
|
|
|
9
9
|
super(client);
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
async
|
|
13
|
-
return this.detail.provider.request({ method: "eth_accounts" });
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
async getInternalAddress(): Promise<string> {
|
|
17
|
-
return (await this.getEVMAccounts())[0];
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
async getAddressObjs(): Promise<ccc.Address[]> {
|
|
21
|
-
const accounts = await this.getEVMAccounts();
|
|
22
|
-
return Promise.all(
|
|
23
|
-
accounts.map((account) =>
|
|
24
|
-
ccc.Address.fromKnownScript(
|
|
25
|
-
ccc.KnownScript.OmniLock,
|
|
26
|
-
ccc.hexFrom([0x12, ...ccc.bytesFrom(account), 0x00]),
|
|
27
|
-
this.client,
|
|
28
|
-
),
|
|
29
|
-
),
|
|
30
|
-
);
|
|
12
|
+
async getEvmAccount() {
|
|
13
|
+
return (await this.detail.provider.request({ method: "eth_accounts" }))[0];
|
|
31
14
|
}
|
|
32
15
|
|
|
33
16
|
async connect(): Promise<void> {
|
|
@@ -36,43 +19,12 @@ export class Signer extends ccc.Signer {
|
|
|
36
19
|
|
|
37
20
|
async signMessage(message: string | ccc.BytesLike): Promise<ccc.Hex> {
|
|
38
21
|
const challenge =
|
|
39
|
-
typeof message === "string" ? message :
|
|
40
|
-
const
|
|
22
|
+
typeof message === "string" ? ccc.bytesFrom(message, "utf8") : message;
|
|
23
|
+
const address = await this.getEvmAccount();
|
|
41
24
|
|
|
42
25
|
return this.detail.provider.request({
|
|
43
26
|
method: "personal_sign",
|
|
44
|
-
params: [challenge, address],
|
|
27
|
+
params: [ccc.hexFrom(challenge), address],
|
|
45
28
|
});
|
|
46
29
|
}
|
|
47
|
-
|
|
48
|
-
async signOnlyTransaction(tx: ccc.Transaction): Promise<ccc.Transaction> {
|
|
49
|
-
const { script } = await this.getRecommendedAddressObj();
|
|
50
|
-
const info = await ccc.getSignHashInfo(tx, script);
|
|
51
|
-
if (!info) {
|
|
52
|
-
return tx;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const signature = ccc.bytesFrom(
|
|
56
|
-
await this.signMessage(`CKB transaction: ${info.message}`),
|
|
57
|
-
);
|
|
58
|
-
if (signature[signature.length - 1] >= 27) {
|
|
59
|
-
signature[signature.length - 1] -= 27;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
const witness = ccc.WitnessArgs.fromBytes(tx.witnesses[info.position]);
|
|
63
|
-
witness.lock = ccc.hexFrom(
|
|
64
|
-
ccc.bytesConcat(
|
|
65
|
-
ccc.numToBytes(5 * 4 + signature.length, 4),
|
|
66
|
-
ccc.numToBytes(4 * 4, 4),
|
|
67
|
-
ccc.numToBytes(5 * 4 + signature.length, 4),
|
|
68
|
-
ccc.numToBytes(5 * 4 + signature.length, 4),
|
|
69
|
-
ccc.numToBytes(signature.length, 4),
|
|
70
|
-
signature,
|
|
71
|
-
),
|
|
72
|
-
);
|
|
73
|
-
|
|
74
|
-
tx.witnesses[info.position] = ccc.hexFrom(witness.toBytes());
|
|
75
|
-
|
|
76
|
-
return tx;
|
|
77
|
-
}
|
|
78
30
|
}
|