permissionless 0.0.15 → 0.0.17
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/CHANGELOG.md +12 -0
- package/_cjs/accounts/biconomy/abi/BiconomySmartAccountAbi.js +102 -0
- package/_cjs/accounts/biconomy/abi/BiconomySmartAccountAbi.js.map +1 -0
- package/_cjs/accounts/biconomy/privateKeyToBiconomySmartAccount.js +15 -0
- package/_cjs/accounts/biconomy/privateKeyToBiconomySmartAccount.js.map +1 -0
- package/_cjs/accounts/biconomy/signerToBiconomySmartAccount.js +195 -0
- package/_cjs/accounts/biconomy/signerToBiconomySmartAccount.js.map +1 -0
- package/_cjs/accounts/index.js +3 -1
- package/_cjs/accounts/index.js.map +1 -1
- package/_cjs/accounts/kernel/signerToEcdsaKernelSmartAccount.js +10 -14
- package/_cjs/accounts/kernel/signerToEcdsaKernelSmartAccount.js.map +1 -1
- package/_cjs/accounts/signerToSafeSmartAccount.js +23 -20
- package/_cjs/accounts/signerToSafeSmartAccount.js.map +1 -1
- package/_cjs/accounts/signerToSimpleSmartAccount.js +5 -7
- package/_cjs/accounts/signerToSimpleSmartAccount.js.map +1 -1
- package/_cjs/accounts/types.js.map +1 -1
- package/_cjs/utils/deepHexlify.js +2 -2
- package/_cjs/utils/deepHexlify.js.map +1 -1
- package/_esm/accounts/biconomy/abi/BiconomySmartAccountAbi.js +105 -0
- package/_esm/accounts/biconomy/abi/BiconomySmartAccountAbi.js.map +1 -0
- package/_esm/accounts/biconomy/privateKeyToBiconomySmartAccount.js +17 -0
- package/_esm/accounts/biconomy/privateKeyToBiconomySmartAccount.js.map +1 -0
- package/_esm/accounts/biconomy/signerToBiconomySmartAccount.js +231 -0
- package/_esm/accounts/biconomy/signerToBiconomySmartAccount.js.map +1 -0
- package/_esm/accounts/index.js +2 -1
- package/_esm/accounts/index.js.map +1 -1
- package/_esm/accounts/kernel/signerToEcdsaKernelSmartAccount.js +11 -15
- package/_esm/accounts/kernel/signerToEcdsaKernelSmartAccount.js.map +1 -1
- package/_esm/accounts/signerToSafeSmartAccount.js +24 -27
- package/_esm/accounts/signerToSafeSmartAccount.js.map +1 -1
- package/_esm/accounts/signerToSimpleSmartAccount.js +5 -7
- package/_esm/accounts/signerToSimpleSmartAccount.js.map +1 -1
- package/_esm/accounts/types.js.map +1 -1
- package/_esm/utils/deepHexlify.js +2 -2
- package/_esm/utils/deepHexlify.js.map +1 -1
- package/_types/accounts/biconomy/abi/BiconomySmartAccountAbi.d.ts +59 -0
- package/_types/accounts/biconomy/abi/BiconomySmartAccountAbi.d.ts.map +1 -0
- package/_types/accounts/biconomy/privateKeyToBiconomySmartAccount.d.ts +13 -0
- package/_types/accounts/biconomy/privateKeyToBiconomySmartAccount.d.ts.map +1 -0
- package/_types/accounts/biconomy/signerToBiconomySmartAccount.d.ts +23 -0
- package/_types/accounts/biconomy/signerToBiconomySmartAccount.d.ts.map +1 -0
- package/_types/accounts/index.d.ts +2 -1
- package/_types/accounts/index.d.ts.map +1 -1
- package/_types/accounts/kernel/signerToEcdsaKernelSmartAccount.d.ts +2 -2
- package/_types/accounts/kernel/signerToEcdsaKernelSmartAccount.d.ts.map +1 -1
- package/_types/accounts/signerToSafeSmartAccount.d.ts +4 -2
- package/_types/accounts/signerToSafeSmartAccount.d.ts.map +1 -1
- package/_types/accounts/signerToSimpleSmartAccount.d.ts +2 -2
- package/_types/accounts/signerToSimpleSmartAccount.d.ts.map +1 -1
- package/_types/accounts/types.d.ts +2 -2
- package/_types/accounts/types.d.ts.map +1 -1
- package/_types/utils/deepHexlify.d.ts.map +1 -1
- package/accounts/biconomy/abi/BiconomySmartAccountAbi.ts +105 -0
- package/accounts/biconomy/privateKeyToBiconomySmartAccount.ts +40 -0
- package/accounts/biconomy/signerToBiconomySmartAccount.ts +364 -0
- package/accounts/index.ts +8 -1
- package/accounts/kernel/signerToEcdsaKernelSmartAccount.ts +17 -19
- package/accounts/signerToSafeSmartAccount.ts +37 -33
- package/accounts/signerToSimpleSmartAccount.ts +11 -12
- package/accounts/types.ts +4 -5
- package/actions/smartAccount/prepareUserOperationRequest.ts +1 -1
- package/package.json +1 -1
- package/utils/deepHexlify.test.ts +0 -2
- package/utils/deepHexlify.ts +6 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../accounts/types.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../accounts/types.ts"],"names":[],"mappings":";;;AAAA,+BAQa;AAIb,MAAa,yCAA0C,SAAQ,gBAAS;IAEpE,YAAY,EAAE,QAAQ,KAA4B,EAAE;QAChD,KAAK,CACD;YACI,6FAA6F;YAC7F,qCAAqC;SACxC,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ;YACI,QAAQ;YACR,QAAQ,EAAE,SAAS;SACtB,CACJ,CAAA;QAXI;;;;mBAAO,2CAA2C;WAAA;IAY3D,CAAC;CACJ;AAdD,8FAcC"}
|
|
@@ -13,10 +13,10 @@ function deepHexlify(obj) {
|
|
|
13
13
|
if (obj == null || typeof obj === "string" || typeof obj === "boolean") {
|
|
14
14
|
return obj;
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
if (typeof obj === "bigint") {
|
|
17
17
|
return (0, viem_1.toHex)(obj);
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
if (obj._isBigNumber != null || typeof obj !== "object") {
|
|
20
20
|
return (0, viem_1.toHex)(obj).replace(/^0x0/, "0x");
|
|
21
21
|
}
|
|
22
22
|
if (Array.isArray(obj)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepHexlify.js","sourceRoot":"","sources":["../../utils/deepHexlify.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAEf,QAAA,wBAAwB,GAAG;IACpC,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,SAAS;CACV,CAAA;AAGV,SAAgB,WAAW,CAAC,GAAQ;IAChC,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;QAC3B,OAAO,SAAS,CAAA;KACnB;IACD,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;QACpE,OAAO,GAAG,CAAA;KACb;
|
|
1
|
+
{"version":3,"file":"deepHexlify.js","sourceRoot":"","sources":["../../utils/deepHexlify.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAEf,QAAA,wBAAwB,GAAG;IACpC,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,SAAS;CACV,CAAA;AAGV,SAAgB,WAAW,CAAC,GAAQ;IAChC,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;QAC3B,OAAO,SAAS,CAAA;KACnB;IACD,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;QACpE,OAAO,GAAG,CAAA;KACb;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QACzB,OAAO,IAAA,YAAK,EAAC,GAAG,CAAC,CAAA;KACpB;IAED,IAAI,GAAG,CAAC,YAAY,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QACrD,OAAO,IAAA,YAAK,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;KAC1C;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACpB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;KAClD;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAE1B,CAAC,GAAQ,EAAE,GAAW,EAAE,EAAE;QACtB,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAChC,OAAO,GAAG,CAAA;IACd,CAAC,EACD,EAAE,CACL,CAAA;AACL,CAAC;AA1BD,kCA0BC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The exeuctor abi, used to execute transactions on the Biconomy Modular Smart Account
|
|
3
|
+
*/
|
|
4
|
+
export const BiconomyExecuteAbi = [
|
|
5
|
+
{
|
|
6
|
+
inputs: [
|
|
7
|
+
{
|
|
8
|
+
internalType: "address",
|
|
9
|
+
name: "dest",
|
|
10
|
+
type: "address"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
internalType: "uint256",
|
|
14
|
+
name: "value",
|
|
15
|
+
type: "uint256"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
internalType: "bytes",
|
|
19
|
+
name: "func",
|
|
20
|
+
type: "bytes"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
name: "execute_ncC",
|
|
24
|
+
outputs: [],
|
|
25
|
+
stateMutability: "nonpayable",
|
|
26
|
+
type: "function"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
inputs: [
|
|
30
|
+
{
|
|
31
|
+
internalType: "address[]",
|
|
32
|
+
name: "dest",
|
|
33
|
+
type: "address[]"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
internalType: "uint256[]",
|
|
37
|
+
name: "value",
|
|
38
|
+
type: "uint256[]"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
internalType: "bytes[]",
|
|
42
|
+
name: "func",
|
|
43
|
+
type: "bytes[]"
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
name: "executeBatch_y6U",
|
|
47
|
+
outputs: [],
|
|
48
|
+
stateMutability: "nonpayable",
|
|
49
|
+
type: "function"
|
|
50
|
+
}
|
|
51
|
+
];
|
|
52
|
+
/**
|
|
53
|
+
* The init abi, used to initialise Biconomy Modular Smart Account / setup default ECDSA module
|
|
54
|
+
*/
|
|
55
|
+
export const BiconomyInitAbi = [
|
|
56
|
+
{
|
|
57
|
+
inputs: [
|
|
58
|
+
{
|
|
59
|
+
internalType: "address",
|
|
60
|
+
name: "handler",
|
|
61
|
+
type: "address"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
internalType: "address",
|
|
65
|
+
name: "moduleSetupContract",
|
|
66
|
+
type: "address"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
internalType: "bytes",
|
|
70
|
+
name: "moduleSetupData",
|
|
71
|
+
type: "bytes"
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
name: "init",
|
|
75
|
+
outputs: [
|
|
76
|
+
{
|
|
77
|
+
internalType: "address",
|
|
78
|
+
name: "",
|
|
79
|
+
type: "address"
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
stateMutability: "nonpayable",
|
|
83
|
+
type: "function"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
inputs: [
|
|
87
|
+
{
|
|
88
|
+
internalType: "address",
|
|
89
|
+
name: "eoaOwner",
|
|
90
|
+
type: "address"
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
name: "initForSmartAccount",
|
|
94
|
+
outputs: [
|
|
95
|
+
{
|
|
96
|
+
internalType: "address",
|
|
97
|
+
name: "",
|
|
98
|
+
type: "address"
|
|
99
|
+
}
|
|
100
|
+
],
|
|
101
|
+
stateMutability: "nonpayable",
|
|
102
|
+
type: "function"
|
|
103
|
+
}
|
|
104
|
+
];
|
|
105
|
+
//# sourceMappingURL=BiconomySmartAccountAbi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BiconomySmartAccountAbi.js","sourceRoot":"","sources":["../../../../accounts/biconomy/abi/BiconomySmartAccountAbi.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B;QACI,MAAM,EAAE;YACJ;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAClB;YACD;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;aAClB;YACD;gBACI,YAAY,EAAE,OAAO;gBACrB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO;aAChB;SACJ;QACD,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACnB;IACD;QACI,MAAM,EAAE;YACJ;gBACI,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,WAAW;aACpB;YACD;gBACI,YAAY,EAAE,WAAW;gBACzB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,WAAW;aACpB;YACD;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;aAClB;SACJ;QACD,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACnB;CACK,CAAA;AAEV;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B;QACI,MAAM,EAAE;YACJ;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;aAClB;YACD;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,SAAS;aAClB;YACD;gBACI,YAAY,EAAE,OAAO;gBACrB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,OAAO;aAChB;SACJ;QACD,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE;YACL;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAClB;SACJ;QACD,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACnB;IACD;QACI,MAAM,EAAE;YACJ;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;aAClB;SACJ;QACD,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE;YACL;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAClB;SACJ;QACD,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACnB;CACJ,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {} from "viem";
|
|
2
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
3
|
+
import { signerToBiconomySmartAccount } from "./signerToBiconomySmartAccount.js";
|
|
4
|
+
/**
|
|
5
|
+
* @description Creates a Biconomy Smart Account from a private key.
|
|
6
|
+
*
|
|
7
|
+
* @returns A Private Key Biconomy Smart Account using ECDSA as default validation module.
|
|
8
|
+
*/
|
|
9
|
+
export async function privateKeyToBiconomySmartAccount(client, { privateKey, entryPoint, index = 0n }) {
|
|
10
|
+
const privateKeyAccount = privateKeyToAccount(privateKey);
|
|
11
|
+
return signerToBiconomySmartAccount(client, {
|
|
12
|
+
signer: privateKeyAccount,
|
|
13
|
+
entryPoint,
|
|
14
|
+
index
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=privateKeyToBiconomySmartAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privateKeyToBiconomySmartAccount.js","sourceRoot":"","sources":["../../../accounts/biconomy/privateKeyToBiconomySmartAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAMN,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAEH,4BAA4B,EAC/B,MAAM,mCAAmC,CAAA;AAE1C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAIlD,MAAkC,EAClC,EACI,UAAU,EACV,UAAU,EACV,KAAK,GAAG,EAAE,EAKb;IAED,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;IACzD,OAAO,4BAA4B,CAAC,MAAM,EAAE;QACxC,MAAM,EAAE,iBAAiB;QACzB,UAAU;QACV,KAAK;KACR,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { concatHex, encodeAbiParameters, encodeFunctionData, encodePacked, getContractAddress, hexToBigInt, keccak256, parseAbiParameters } from "viem";
|
|
2
|
+
import { toAccount } from "viem/accounts";
|
|
3
|
+
import { getBytecode, getChainId, signMessage, signTypedData } from "viem/actions";
|
|
4
|
+
import { getAccountNonce } from "../../actions/public/getAccountNonce.js";
|
|
5
|
+
import { getUserOperationHash } from "../../utils/getUserOperationHash.js";
|
|
6
|
+
import { SignTransactionNotSupportedBySmartAccount } from "../types.js";
|
|
7
|
+
import { BiconomyExecuteAbi, BiconomyInitAbi } from "./abi/BiconomySmartAccountAbi.js";
|
|
8
|
+
/**
|
|
9
|
+
* The account creation ABI for Biconomy Smart Account (from the biconomy SmartAccountFactory)
|
|
10
|
+
*/
|
|
11
|
+
const createAccountAbi = [
|
|
12
|
+
{
|
|
13
|
+
inputs: [
|
|
14
|
+
{
|
|
15
|
+
internalType: "address",
|
|
16
|
+
name: "moduleSetupContract",
|
|
17
|
+
type: "address"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
internalType: "bytes",
|
|
21
|
+
name: "moduleSetupData",
|
|
22
|
+
type: "bytes"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
internalType: "uint256",
|
|
26
|
+
name: "index",
|
|
27
|
+
type: "uint256"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
name: "deployCounterFactualAccount",
|
|
31
|
+
outputs: [
|
|
32
|
+
{
|
|
33
|
+
internalType: "address",
|
|
34
|
+
name: "proxy",
|
|
35
|
+
type: "address"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
stateMutability: "nonpayable",
|
|
39
|
+
type: "function"
|
|
40
|
+
}
|
|
41
|
+
];
|
|
42
|
+
/**
|
|
43
|
+
* Default addresses for Biconomy Smart Account
|
|
44
|
+
*/
|
|
45
|
+
const BICONOMY_ADDRESSES = {
|
|
46
|
+
ECDSA_OWNERSHIP_REGISTRY_MODULE: "0x0000001c5b32F37F5beA87BDD5374eB2aC54eA8e",
|
|
47
|
+
ACCOUNT_V2_0_LOGIC: "0x0000002512019Dafb59528B82CB92D3c5D2423aC",
|
|
48
|
+
FACTORY_ADDRESS: "0x000000a56Aaca3e9a4C479ea6b6CD0DbcB6634F5",
|
|
49
|
+
DEFAULT_FALLBACK_HANDLER_ADDRESS: "0x0bBa6d96BD616BedC6BFaa341742FD43c60b83C1"
|
|
50
|
+
};
|
|
51
|
+
const BICONOMY_PROXY_CREATION_CODE = "0x6080346100aa57601f61012038819003918201601f19168301916001600160401b038311848410176100af578084926020946040528339810103126100aa57516001600160a01b0381168082036100aa5715610065573055604051605a90816100c68239f35b60405162461bcd60e51b815260206004820152601e60248201527f496e76616c696420696d706c656d656e746174696f6e206164647265737300006044820152606490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe608060405230546000808092368280378136915af43d82803e156020573d90f35b3d90fdfea2646970667358221220a03b18dce0be0b4c9afe58a9eb85c35205e2cf087da098bbf1d23945bf89496064736f6c63430008110033";
|
|
52
|
+
/**
|
|
53
|
+
* Get the account initialization code for Biconomy smart account with ECDSA as default authorization module
|
|
54
|
+
* @param owner
|
|
55
|
+
* @param index
|
|
56
|
+
* @param factoryAddress
|
|
57
|
+
* @param ecdsaValidatorAddress
|
|
58
|
+
*/
|
|
59
|
+
const getAccountInitCode = async ({ owner, index, factoryAddress, ecdsaModuleAddress }) => {
|
|
60
|
+
if (!owner)
|
|
61
|
+
throw new Error("Owner account not found");
|
|
62
|
+
// Build the module setup data
|
|
63
|
+
const ecdsaOwnershipInitData = encodeFunctionData({
|
|
64
|
+
abi: BiconomyInitAbi,
|
|
65
|
+
functionName: "initForSmartAccount",
|
|
66
|
+
args: [owner]
|
|
67
|
+
});
|
|
68
|
+
// Build the account init code
|
|
69
|
+
return concatHex([
|
|
70
|
+
factoryAddress,
|
|
71
|
+
encodeFunctionData({
|
|
72
|
+
abi: createAccountAbi,
|
|
73
|
+
functionName: "deployCounterFactualAccount",
|
|
74
|
+
args: [ecdsaModuleAddress, ecdsaOwnershipInitData, index]
|
|
75
|
+
})
|
|
76
|
+
]);
|
|
77
|
+
};
|
|
78
|
+
const getAccountAddress = async ({ factoryAddress, accountLogicAddress, fallbackHandlerAddress, ecdsaModuleAddress, owner, index = 0n }) => {
|
|
79
|
+
// Build the module setup data
|
|
80
|
+
const ecdsaOwnershipInitData = encodeFunctionData({
|
|
81
|
+
abi: BiconomyInitAbi,
|
|
82
|
+
functionName: "initForSmartAccount",
|
|
83
|
+
args: [owner]
|
|
84
|
+
});
|
|
85
|
+
// Build account init code
|
|
86
|
+
const initialisationData = encodeFunctionData({
|
|
87
|
+
abi: BiconomyInitAbi,
|
|
88
|
+
functionName: "init",
|
|
89
|
+
args: [
|
|
90
|
+
fallbackHandlerAddress,
|
|
91
|
+
ecdsaModuleAddress,
|
|
92
|
+
ecdsaOwnershipInitData
|
|
93
|
+
]
|
|
94
|
+
});
|
|
95
|
+
const deploymentCode = encodePacked(["bytes", "uint256"], [BICONOMY_PROXY_CREATION_CODE, hexToBigInt(accountLogicAddress)]);
|
|
96
|
+
const salt = keccak256(encodePacked(["bytes32", "uint256"], [keccak256(encodePacked(["bytes"], [initialisationData])), index]));
|
|
97
|
+
return getContractAddress({
|
|
98
|
+
from: factoryAddress,
|
|
99
|
+
salt,
|
|
100
|
+
bytecode: deploymentCode,
|
|
101
|
+
opcode: "CREATE2"
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Build a Biconomy modular smart account from a private key, that use the ECDSA signer behind the scene
|
|
106
|
+
* @param client
|
|
107
|
+
* @param privateKey
|
|
108
|
+
* @param entryPoint
|
|
109
|
+
* @param index
|
|
110
|
+
* @param factoryAddress
|
|
111
|
+
* @param accountLogicAddress
|
|
112
|
+
* @param ecdsaModuleAddress
|
|
113
|
+
*/
|
|
114
|
+
export async function signerToBiconomySmartAccount(client, { signer, entryPoint, index = 0n, factoryAddress = BICONOMY_ADDRESSES.FACTORY_ADDRESS, accountLogicAddress = BICONOMY_ADDRESSES.ACCOUNT_V2_0_LOGIC, fallbackHandlerAddress = BICONOMY_ADDRESSES.DEFAULT_FALLBACK_HANDLER_ADDRESS, ecdsaModuleAddress = BICONOMY_ADDRESSES.ECDSA_OWNERSHIP_REGISTRY_MODULE }) {
|
|
115
|
+
// Get the private key related account
|
|
116
|
+
const viemSigner = {
|
|
117
|
+
...signer,
|
|
118
|
+
signTransaction: (_, __) => {
|
|
119
|
+
throw new SignTransactionNotSupportedBySmartAccount();
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
// Helper to generate the init code for the smart account
|
|
123
|
+
const generateInitCode = () => getAccountInitCode({
|
|
124
|
+
owner: viemSigner.address,
|
|
125
|
+
index,
|
|
126
|
+
factoryAddress,
|
|
127
|
+
ecdsaModuleAddress
|
|
128
|
+
});
|
|
129
|
+
// Fetch account address and chain id
|
|
130
|
+
const [accountAddress, chainId] = await Promise.all([
|
|
131
|
+
getAccountAddress({
|
|
132
|
+
owner: viemSigner.address,
|
|
133
|
+
ecdsaModuleAddress,
|
|
134
|
+
factoryAddress,
|
|
135
|
+
accountLogicAddress,
|
|
136
|
+
fallbackHandlerAddress,
|
|
137
|
+
index
|
|
138
|
+
}),
|
|
139
|
+
getChainId(client)
|
|
140
|
+
]);
|
|
141
|
+
if (!accountAddress)
|
|
142
|
+
throw new Error("Account address not found");
|
|
143
|
+
// Build the EOA Signer
|
|
144
|
+
const account = toAccount({
|
|
145
|
+
address: accountAddress,
|
|
146
|
+
async signMessage({ message }) {
|
|
147
|
+
return signMessage(client, { account: viemSigner, message });
|
|
148
|
+
},
|
|
149
|
+
async signTransaction(_, __) {
|
|
150
|
+
throw new SignTransactionNotSupportedBySmartAccount();
|
|
151
|
+
},
|
|
152
|
+
async signTypedData(typedData) {
|
|
153
|
+
return signTypedData(client, { account: viemSigner, ...typedData });
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
return {
|
|
157
|
+
...account,
|
|
158
|
+
client: client,
|
|
159
|
+
publicKey: accountAddress,
|
|
160
|
+
entryPoint: entryPoint,
|
|
161
|
+
source: "biconomySmartAccount",
|
|
162
|
+
// Get the nonce of the smart account
|
|
163
|
+
async getNonce() {
|
|
164
|
+
return getAccountNonce(client, {
|
|
165
|
+
sender: accountAddress,
|
|
166
|
+
entryPoint: entryPoint
|
|
167
|
+
});
|
|
168
|
+
},
|
|
169
|
+
// Sign a user operation
|
|
170
|
+
async signUserOperation(userOperation) {
|
|
171
|
+
const hash = getUserOperationHash({
|
|
172
|
+
userOperation: {
|
|
173
|
+
...userOperation,
|
|
174
|
+
signature: "0x"
|
|
175
|
+
},
|
|
176
|
+
entryPoint: entryPoint,
|
|
177
|
+
chainId: chainId
|
|
178
|
+
});
|
|
179
|
+
const signature = await signMessage(client, {
|
|
180
|
+
account: viemSigner,
|
|
181
|
+
message: { raw: hash }
|
|
182
|
+
});
|
|
183
|
+
// userOp signature is encoded module signature + module address
|
|
184
|
+
const signatureWithModuleAddress = encodeAbiParameters(parseAbiParameters("bytes, address"), [signature, ecdsaModuleAddress]);
|
|
185
|
+
return signatureWithModuleAddress;
|
|
186
|
+
},
|
|
187
|
+
// Encode the init code
|
|
188
|
+
async getInitCode() {
|
|
189
|
+
const contractCode = await getBytecode(client, {
|
|
190
|
+
address: accountAddress
|
|
191
|
+
});
|
|
192
|
+
if ((contractCode?.length ?? 0) > 2)
|
|
193
|
+
return "0x";
|
|
194
|
+
return generateInitCode();
|
|
195
|
+
},
|
|
196
|
+
// Encode the deploy call data
|
|
197
|
+
async encodeDeployCallData(_) {
|
|
198
|
+
throw new Error("Doesn't support account deployment");
|
|
199
|
+
},
|
|
200
|
+
// Encode a call
|
|
201
|
+
async encodeCallData(args) {
|
|
202
|
+
if (Array.isArray(args)) {
|
|
203
|
+
// Encode a batched call
|
|
204
|
+
const argsArray = args;
|
|
205
|
+
return encodeFunctionData({
|
|
206
|
+
abi: BiconomyExecuteAbi,
|
|
207
|
+
functionName: "executeBatch_y6U",
|
|
208
|
+
args: [
|
|
209
|
+
argsArray.map((a) => a.to),
|
|
210
|
+
argsArray.map((a) => a.value),
|
|
211
|
+
argsArray.map((a) => a.data)
|
|
212
|
+
]
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
const { to, value, data } = args;
|
|
216
|
+
// Encode a simple call
|
|
217
|
+
return encodeFunctionData({
|
|
218
|
+
abi: BiconomyExecuteAbi,
|
|
219
|
+
functionName: "execute_ncC",
|
|
220
|
+
args: [to, value, data]
|
|
221
|
+
});
|
|
222
|
+
},
|
|
223
|
+
// Get simple dummy signature for ECDSA module authorization
|
|
224
|
+
async getDummySignature() {
|
|
225
|
+
const moduleAddress = BICONOMY_ADDRESSES.ECDSA_OWNERSHIP_REGISTRY_MODULE;
|
|
226
|
+
const dynamicPart = moduleAddress.substring(2).padEnd(40, "0");
|
|
227
|
+
return `0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000${dynamicPart}000000000000000000000000000000000000000000000000000000000000004181d4b4981670cb18f99f0b4a66446df1bf5b204d24cfcb659bf38ba27a4359b5711649ec2423c5e1247245eba2964679b6a1dbb85c992ae40b9b00c6935b02ff1b00000000000000000000000000000000000000000000000000000000000000`;
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=signerToBiconomySmartAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signerToBiconomySmartAccount.js","sourceRoot":"","sources":["../../../accounts/biconomy/signerToBiconomySmartAccount.ts"],"names":[],"mappings":"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"}
|
package/_esm/accounts/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { signerToSimpleSmartAccount } from "./signerToSimpleSmartAccount.js";
|
|
|
3
3
|
import { privateKeyToSafeSmartAccount } from "./privateKeyToSafeSmartAccount.js";
|
|
4
4
|
import { signerToSafeSmartAccount } from "./signerToSafeSmartAccount.js";
|
|
5
5
|
import { signerToEcdsaKernelSmartAccount } from "./kernel/signerToEcdsaKernelSmartAccount.js";
|
|
6
|
+
import { signerToBiconomySmartAccount } from "./biconomy/signerToBiconomySmartAccount.js";
|
|
6
7
|
import { SignTransactionNotSupportedBySmartAccount } from "./types.js";
|
|
7
|
-
export { signerToSafeSmartAccount, signerToSimpleSmartAccount, SignTransactionNotSupportedBySmartAccount, privateKeyToSimpleSmartAccount, privateKeyToSafeSmartAccount, signerToEcdsaKernelSmartAccount };
|
|
8
|
+
export { signerToSafeSmartAccount, signerToSimpleSmartAccount, SignTransactionNotSupportedBySmartAccount, privateKeyToSimpleSmartAccount, privateKeyToSafeSmartAccount, signerToEcdsaKernelSmartAccount, signerToBiconomySmartAccount };
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../accounts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAA;AAEpF,OAAO,EAEH,0BAA0B,EAC7B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAEhF,OAAO,EAGH,wBAAwB,EAC3B,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAEH,+BAA+B,EAClC,MAAM,6CAA6C,CAAA;AAEpD,OAAO,EACH,yCAAyC,EAG5C,MAAM,YAAY,CAAA;AAEnB,OAAO,EAIH,wBAAwB,EAExB,0BAA0B,EAC1B,yCAAyC,EACzC,8BAA8B,EAE9B,4BAA4B,EAE5B,+BAA+B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../accounts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAA;AAEpF,OAAO,EAEH,0BAA0B,EAC7B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAEhF,OAAO,EAGH,wBAAwB,EAC3B,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAEH,+BAA+B,EAClC,MAAM,6CAA6C,CAAA;AAEpD,OAAO,EAEH,4BAA4B,EAC/B,MAAM,4CAA4C,CAAA;AAEnD,OAAO,EACH,yCAAyC,EAG5C,MAAM,YAAY,CAAA;AAEnB,OAAO,EAIH,wBAAwB,EAExB,0BAA0B,EAC1B,yCAAyC,EACzC,8BAA8B,EAE9B,4BAA4B,EAE5B,+BAA+B,EAE/B,4BAA4B,EAC/B,CAAA"}
|
|
@@ -142,14 +142,12 @@ const getAccountAddress = async ({ client, owner, entryPoint, initCodeProvider,
|
|
|
142
142
|
*/
|
|
143
143
|
export async function signerToEcdsaKernelSmartAccount(client, { signer, entryPoint, index = 0n, factoryAddress = KERNEL_ADDRESSES.FACTORY_ADDRESS, accountLogicAddress = KERNEL_ADDRESSES.ACCOUNT_V2_2_LOGIC, ecdsaValidatorAddress = KERNEL_ADDRESSES.ECDSA_VALIDATOR, deployedAccountAddress }) {
|
|
144
144
|
// Get the private key related account
|
|
145
|
-
const viemSigner =
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
throw new SignTransactionNotSupportedBySmartAccount();
|
|
150
|
-
}
|
|
145
|
+
const viemSigner = {
|
|
146
|
+
...signer,
|
|
147
|
+
signTransaction: (_, __) => {
|
|
148
|
+
throw new SignTransactionNotSupportedBySmartAccount();
|
|
151
149
|
}
|
|
152
|
-
|
|
150
|
+
};
|
|
153
151
|
// Helper to generate the init code for the smart account
|
|
154
152
|
const generateInitCode = () => getAccountInitCode({
|
|
155
153
|
owner: viemSigner.address,
|
|
@@ -244,14 +242,12 @@ export async function signerToEcdsaKernelSmartAccount(client, { signer, entryPoi
|
|
|
244
242
|
]
|
|
245
243
|
});
|
|
246
244
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
});
|
|
254
|
-
}
|
|
245
|
+
// Encode a simple call
|
|
246
|
+
return encodeFunctionData({
|
|
247
|
+
abi: KernelExecuteAbi,
|
|
248
|
+
functionName: "execute",
|
|
249
|
+
args: [_tx.to, _tx.value, _tx.data, 0]
|
|
250
|
+
});
|
|
255
251
|
},
|
|
256
252
|
// Get simple dummy signature
|
|
257
253
|
async getDummySignature() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signerToEcdsaKernelSmartAccount.js","sourceRoot":"","sources":["../../../accounts/kernel/signerToEcdsaKernelSmartAccount.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"signerToEcdsaKernelSmartAccount.js","sourceRoot":"","sources":["../../../accounts/kernel/signerToEcdsaKernelSmartAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { concatHex, encodeFunctionData, encodePacked, getContractAddress, hashMessage, hashTypedData, hexToBigInt, keccak256, toBytes, zeroAddress } from "viem";
|
|
1
|
+
import { concat, concatHex, encodeFunctionData, encodePacked, getContractAddress, hashMessage, hashTypedData, hexToBigInt, keccak256, toBytes, zeroAddress } from "viem";
|
|
2
2
|
import { toAccount } from "viem/accounts";
|
|
3
3
|
import { getBytecode, getChainId, readContract, signMessage, signTypedData } from "viem/actions";
|
|
4
4
|
import { getAccountNonce } from "../actions/public/getAccountNonce.js";
|
|
@@ -6,13 +6,17 @@ import { SignTransactionNotSupportedBySmartAccount } from "./types.js";
|
|
|
6
6
|
const EIP712_SAFE_OPERATION_TYPE = {
|
|
7
7
|
SafeOp: [
|
|
8
8
|
{ type: "address", name: "safe" },
|
|
9
|
-
{ type: "bytes", name: "callData" },
|
|
10
9
|
{ type: "uint256", name: "nonce" },
|
|
11
|
-
{ type: "
|
|
12
|
-
{ type: "
|
|
10
|
+
{ type: "bytes", name: "initCode" },
|
|
11
|
+
{ type: "bytes", name: "callData" },
|
|
13
12
|
{ type: "uint256", name: "callGasLimit" },
|
|
13
|
+
{ type: "uint256", name: "verificationGasLimit" },
|
|
14
|
+
{ type: "uint256", name: "preVerificationGas" },
|
|
14
15
|
{ type: "uint256", name: "maxFeePerGas" },
|
|
15
16
|
{ type: "uint256", name: "maxPriorityFeePerGas" },
|
|
17
|
+
{ type: "bytes", name: "paymasterAndData" },
|
|
18
|
+
{ type: "uint48", name: "validAfter" },
|
|
19
|
+
{ type: "uint48", name: "validUntil" },
|
|
16
20
|
{ type: "address", name: "entryPoint" }
|
|
17
21
|
]
|
|
18
22
|
};
|
|
@@ -291,16 +295,14 @@ const getDefaultAddresses = (safeVersion, { addModuleLibAddress: _addModuleLibAd
|
|
|
291
295
|
*
|
|
292
296
|
* @returns A Private Key Simple Account.
|
|
293
297
|
*/
|
|
294
|
-
export async function signerToSafeSmartAccount(client, { signer, safeVersion, entryPoint, addModuleLibAddress: _addModuleLibAddress, safe4337ModuleAddress: _safe4337ModuleAddress, safeProxyFactoryAddress: _safeProxyFactoryAddress, safeSingletonAddress: _safeSingletonAddress, multiSendAddress: _multiSendAddress, multiSendCallOnlyAddress: _multiSendCallOnlyAddress, saltNonce = 0n, safeModules = [], setupTransactions = [] }) {
|
|
298
|
+
export async function signerToSafeSmartAccount(client, { signer, safeVersion, entryPoint, addModuleLibAddress: _addModuleLibAddress, safe4337ModuleAddress: _safe4337ModuleAddress, safeProxyFactoryAddress: _safeProxyFactoryAddress, safeSingletonAddress: _safeSingletonAddress, multiSendAddress: _multiSendAddress, multiSendCallOnlyAddress: _multiSendCallOnlyAddress, saltNonce = 0n, validUntil = 0, validAfter = 0, safeModules = [], setupTransactions = [] }) {
|
|
295
299
|
const chainId = await getChainId(client);
|
|
296
|
-
const viemSigner =
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
throw new SignTransactionNotSupportedBySmartAccount();
|
|
301
|
-
}
|
|
300
|
+
const viemSigner = {
|
|
301
|
+
...signer,
|
|
302
|
+
signTransaction: (_, __) => {
|
|
303
|
+
throw new SignTransactionNotSupportedBySmartAccount();
|
|
302
304
|
}
|
|
303
|
-
|
|
305
|
+
};
|
|
304
306
|
const { addModuleLibAddress, safe4337ModuleAddress, safeProxyFactoryAddress, safeSingletonAddress, multiSendAddress, multiSendCallOnlyAddress } = getDefaultAddresses(safeVersion, {
|
|
305
307
|
addModuleLibAddress: _addModuleLibAddress,
|
|
306
308
|
safe4337ModuleAddress: _safe4337ModuleAddress,
|
|
@@ -379,7 +381,6 @@ export async function signerToSafeSmartAccount(client, { signer, safeVersion, en
|
|
|
379
381
|
});
|
|
380
382
|
},
|
|
381
383
|
async signUserOperation(userOperation) {
|
|
382
|
-
// const timestamps = 0n
|
|
383
384
|
const signatures = [
|
|
384
385
|
{
|
|
385
386
|
signer: viemSigner.address,
|
|
@@ -394,14 +395,17 @@ export async function signerToSafeSmartAccount(client, { signer, safeVersion, en
|
|
|
394
395
|
message: {
|
|
395
396
|
safe: accountAddress,
|
|
396
397
|
callData: userOperation.callData,
|
|
398
|
+
entryPoint: entryPoint,
|
|
397
399
|
nonce: userOperation.nonce,
|
|
400
|
+
initCode: userOperation.initCode,
|
|
401
|
+
maxFeePerGas: userOperation.maxFeePerGas,
|
|
402
|
+
maxPriorityFeePerGas: userOperation.maxPriorityFeePerGas,
|
|
398
403
|
preVerificationGas: userOperation.preVerificationGas,
|
|
399
404
|
verificationGasLimit: userOperation.verificationGasLimit,
|
|
400
405
|
callGasLimit: userOperation.callGasLimit,
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
entryPoint: entryPoint
|
|
406
|
+
paymasterAndData: userOperation.paymasterAndData,
|
|
407
|
+
validAfter: validAfter,
|
|
408
|
+
validUntil: validUntil
|
|
405
409
|
}
|
|
406
410
|
})
|
|
407
411
|
}
|
|
@@ -409,15 +413,8 @@ export async function signerToSafeSmartAccount(client, { signer, safeVersion, en
|
|
|
409
413
|
signatures.sort((left, right) => left.signer
|
|
410
414
|
.toLowerCase()
|
|
411
415
|
.localeCompare(right.signer.toLowerCase()));
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
signatureBytes += sig.data.slice(2);
|
|
415
|
-
}
|
|
416
|
-
// const signatureWithTimestamps = encodePacked(
|
|
417
|
-
// ["uint96", "bytes"],
|
|
418
|
-
// [timestamps, signatureBytes]
|
|
419
|
-
// )
|
|
420
|
-
return signatureBytes;
|
|
416
|
+
const signatureBytes = concat(signatures.map((sig) => sig.data));
|
|
417
|
+
return encodePacked(["uint48", "uint48", "bytes"], [validAfter, validUntil, signatureBytes]);
|
|
421
418
|
},
|
|
422
419
|
async getInitCode() {
|
|
423
420
|
const contractCode = await getBytecode(client, {
|
|
@@ -492,7 +489,7 @@ export async function signerToSafeSmartAccount(client, { signer, safeVersion, en
|
|
|
492
489
|
});
|
|
493
490
|
},
|
|
494
491
|
async getDummySignature() {
|
|
495
|
-
return "
|
|
492
|
+
return "0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";
|
|
496
493
|
}
|
|
497
494
|
};
|
|
498
495
|
}
|