@0xsequence/wallet-primitives 3.0.0-beta.2 → 3.0.0-beta.4
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +12 -0
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +20 -1
- package/dist/context.js.map +1 -1
- package/dist/erc-6492.js +7 -7
- package/dist/extensions/index.d.ts +1 -0
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +5 -0
- package/dist/extensions/index.js.map +1 -1
- package/package.json +6 -6
- package/src/constants.ts +1 -1
- package/src/context.ts +22 -1
- package/src/erc-6492.ts +7 -7
- package/src/extensions/index.ts +6 -0
- package/test/address.test.ts +14 -1
- package/test/erc-6492.test.ts +7 -7
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
package/dist/constants.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const ZeroAddress: "0x0000000000000000000000000000000000000000";
|
|
2
2
|
export declare const PlaceholderAddress: "0xffff0000ffff0000ffff0000ffff0000ffff0000";
|
|
3
|
-
export declare const DefaultGuestAddress: "
|
|
3
|
+
export declare const DefaultGuestAddress: "0x0000000000006Ac72ed1d192fa28f0058D3F8806";
|
|
4
4
|
export declare const IS_VALID_SIGNATURE: {
|
|
5
5
|
readonly name: "isValidSignature";
|
|
6
6
|
readonly type: "function";
|
package/dist/constants.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Abi } from 'ox';
|
|
2
2
|
export const ZeroAddress = '0x0000000000000000000000000000000000000000';
|
|
3
3
|
export const PlaceholderAddress = '0xffff0000ffff0000ffff0000ffff0000ffff0000';
|
|
4
|
-
export const DefaultGuestAddress = '
|
|
4
|
+
export const DefaultGuestAddress = '0x0000000000006Ac72ed1d192fa28f0058D3F8806';
|
|
5
5
|
// ERC1271
|
|
6
6
|
export const IS_VALID_SIGNATURE = Abi.from([
|
|
7
7
|
'function isValidSignature(bytes32 _hash, bytes memory _signature) public view returns (bytes4 magicValue)',
|
package/dist/context.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export declare const Rc3: Context;
|
|
|
18
18
|
export declare const Rc3_4337: Context;
|
|
19
19
|
export declare const Rc4: Context;
|
|
20
20
|
export declare const Rc4_4337: Context;
|
|
21
|
+
export declare const Rc5: Context;
|
|
22
|
+
export declare const Rc5_4337: Context;
|
|
21
23
|
export type KnownContext = Context & {
|
|
22
24
|
name: string;
|
|
23
25
|
development: boolean;
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAA;AAEjC,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,CAAC,EAAE;QACR,UAAU,EAAE,OAAO,CAAC,OAAO,CAAA;KAC5B,CAAA;CACF,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB,MAAM,EAAE,OAAO,CAAC,OAAO,CAAA;IACvB,MAAM,EAAE,OAAO,CAAC,OAAO,CAAA;IACvB,YAAY,EAAE,GAAG,CAAC,GAAG,CAAA;IACrB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,OAKlB,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,OAKlB,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,OAUvB,CAAA;AAED,eAAO,MAAM,GAAG,EAAE,OAKjB,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,OAUtB,CAAA;AAED,eAAO,MAAM,GAAG,EAAE,OAKjB,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,OAUtB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAA;AAEjC,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,CAAC,EAAE;QACR,UAAU,EAAE,OAAO,CAAC,OAAO,CAAA;KAC5B,CAAA;CACF,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB,MAAM,EAAE,OAAO,CAAC,OAAO,CAAA;IACvB,MAAM,EAAE,OAAO,CAAC,OAAO,CAAA;IACvB,YAAY,EAAE,GAAG,CAAC,GAAG,CAAA;IACrB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,OAKlB,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,OAKlB,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,OAUvB,CAAA;AAED,eAAO,MAAM,GAAG,EAAE,OAKjB,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,OAUtB,CAAA;AAED,eAAO,MAAM,GAAG,EAAE,OAKjB,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,OAUtB,CAAA;AAED,eAAO,MAAM,GAAG,EAAE,OAKjB,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,OAUtB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,YAAY,EAUvC,CAAA;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,YAAY,CAExE"}
|
package/dist/context.js
CHANGED
|
@@ -45,7 +45,7 @@ export const Rc4 = {
|
|
|
45
45
|
creationCode: '0x6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d30545af43d82803e903d91601f57fd5bf3',
|
|
46
46
|
};
|
|
47
47
|
export const Rc4_4337 = {
|
|
48
|
-
factory: '
|
|
48
|
+
factory: '0x00000000000018A77519fcCCa060c2537c9D6d3F',
|
|
49
49
|
stage1: '0x0000000000003add039FF84b064B7347Fc23C444',
|
|
50
50
|
stage2: '0x4B3E5735665057A0A15eE448A7293bC01e3b4De9',
|
|
51
51
|
creationCode: '0x6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d30545af43d82803e903d91601f57fd5bf3',
|
|
@@ -55,6 +55,23 @@ export const Rc4_4337 = {
|
|
|
55
55
|
},
|
|
56
56
|
},
|
|
57
57
|
};
|
|
58
|
+
export const Rc5 = {
|
|
59
|
+
factory: '0x00000000000018A77519fcCCa060c2537c9D6d3F',
|
|
60
|
+
stage1: '0x0000000000001f3C39d61698ab21131a12134454',
|
|
61
|
+
stage2: '0xD0ae8eF93b7DA4eabb32Ec4d81b7a501DCa04D4C',
|
|
62
|
+
creationCode: '0x6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d30545af43d82803e903d91601f57fd5bf3',
|
|
63
|
+
};
|
|
64
|
+
export const Rc5_4337 = {
|
|
65
|
+
factory: '0x00000000000018A77519fcCCa060c2537c9D6d3F',
|
|
66
|
+
stage1: '0x0000000000009caFdeDb6f64Bf5F31a22124B2a8',
|
|
67
|
+
stage2: '0xcBca3328a731deffE6Ce4c2fb51b585c3c37FB92',
|
|
68
|
+
creationCode: '0x6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d30545af43d82803e903d91601f57fd5bf3',
|
|
69
|
+
capabilities: {
|
|
70
|
+
erc4337: {
|
|
71
|
+
entrypoint: '0x0000000071727De22E5E9d8BAf0edAc6f37da032',
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
};
|
|
58
75
|
export const KnownContexts = [
|
|
59
76
|
{ name: 'Dev1', development: true, ...Dev1 },
|
|
60
77
|
{ name: 'Dev2', development: true, ...Dev2 },
|
|
@@ -63,6 +80,8 @@ export const KnownContexts = [
|
|
|
63
80
|
{ name: 'Rc3_4337', development: true, ...Rc3_4337 },
|
|
64
81
|
{ name: 'Rc4', development: false, ...Rc4 },
|
|
65
82
|
{ name: 'Rc4_4337', development: false, ...Rc4_4337 },
|
|
83
|
+
{ name: 'Rc5', development: false, ...Rc5 },
|
|
84
|
+
{ name: 'Rc5_4337', development: false, ...Rc5_4337 },
|
|
66
85
|
];
|
|
67
86
|
export function isKnownContext(context) {
|
|
68
87
|
return context.name !== undefined && context.development !== undefined;
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,IAAI,GAAY;IAC3B,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,4CAA4C;IACpD,MAAM,EAAE,4CAA4C;IACpD,YAAY,EAAE,4FAA4F;CAC3G,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAY;IAC3B,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,4CAA4C;IACpD,MAAM,EAAE,4CAA4C;IACpD,YAAY,EAAE,kGAAkG;CACjH,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAY;IAChC,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,4CAA4C;IACpD,MAAM,EAAE,4CAA4C;IACpD,YAAY,EAAE,kGAAkG;IAChH,YAAY,EAAE;QACZ,OAAO,EAAE;YACP,UAAU,EAAE,4CAA4C;SACzD;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAY;IAC1B,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,4CAA4C;IACpD,MAAM,EAAE,4CAA4C;IACpD,YAAY,EAAE,kGAAkG;CACjH,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAY;IAC/B,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,4CAA4C;IACpD,MAAM,EAAE,4CAA4C;IACpD,YAAY,EAAE,kGAAkG;IAChH,YAAY,EAAE;QACZ,OAAO,EAAE;YACP,UAAU,EAAE,4CAA4C;SACzD;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAY;IAC1B,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,4CAA4C;IACpD,MAAM,EAAE,4CAA4C;IACpD,YAAY,EAAE,kGAAkG;CACjH,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAY;IAC/B,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,4CAA4C;IACpD,MAAM,EAAE,4CAA4C;IACpD,YAAY,EAAE,kGAAkG;IAChH,YAAY,EAAE;QACZ,OAAO,EAAE;YACP,UAAU,EAAE,4CAA4C;SACzD;KACF;CACF,CAAA;AAOD,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;IAC5C,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE;IAC5C,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE;IACtD,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE;IAC1C,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE;IACpD,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,GAAG,EAAE;IAC3C,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE;CACtD,CAAA;AAED,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAQ,OAAwB,CAAC,IAAI,KAAK,SAAS,IAAK,OAAwB,CAAC,WAAW,KAAK,SAAS,CAAA;AAC5G,CAAC"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/erc-6492.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AbiFunction, AbiParameters, Bytes, Hex } from 'ox';
|
|
2
|
-
import {
|
|
2
|
+
import { SignatureErc6492 } from 'ox/erc6492';
|
|
3
3
|
import { DEPLOY } from './constants.js';
|
|
4
4
|
const EIP_6492_OFFCHAIN_DEPLOY_CODE = '0x608060405234801561001057600080fd5b5060405161124a38038061124a83398101604081905261002f91610124565b600060405161003d906100dd565b604051809103906000f080158015610059573d6000803e3d6000fd5b5090506000816001600160a01b0316638f0684308686866040518463ffffffff1660e01b815260040161008e939291906101fb565b6020604051808303816000875af11580156100ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d19190610244565b9050806000526001601ff35b610fdc8061026e83390190565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561011b578181015183820152602001610103565b50506000910152565b60008060006060848603121561013957600080fd5b83516001600160a01b038116811461015057600080fd5b6020850151604086015191945092506001600160401b038082111561017457600080fd5b818601915086601f83011261018857600080fd5b81518181111561019a5761019a6100ea565b604051601f8201601f19908116603f011681019083821181831017156101c2576101c26100ea565b816040528281528960208487010111156101db57600080fd5b6101ec836020830160208801610100565b80955050505050509250925092565b60018060a01b0384168152826020820152606060408201526000825180606084015261022e816080850160208701610100565b601f01601f191691909101608001949350505050565b60006020828403121561025657600080fd5b8151801515811461026657600080fd5b939250505056fe608060405234801561001057600080fd5b50610fbc806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806376be4cea1161005057806376be4cea146100a65780638f068430146100b957806398ef1ed8146100cc57600080fd5b80631c6453271461006c5780633d787b6314610093575b600080fd5b61007f61007a366004610ad4565b6100df565b604051901515815260200160405180910390f35b61007f6100a1366004610ad4565b61023d565b61007f6100b4366004610b3e565b61031e565b61007f6100c7366004610ad4565b6108e1565b61007f6100da366004610ad4565b61096e565b6040517f76be4cea00000000000000000000000000000000000000000000000000000000815260009030906376be4cea9061012890889088908890889088908190600401610bc3565b6020604051808303816000875af1925050508015610181575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261017e91810190610c45565b60015b610232573d8080156101af576040519150601f19603f3d011682016040523d82523d6000602084013e6101b4565b606091505b508051600181900361022757816000815181106101d3576101d3610c69565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f0100000000000000000000000000000000000000000000000000000000000000149250610235915050565b600092505050610235565b90505b949350505050565b6040517f76be4cea00000000000000000000000000000000000000000000000000000000815260009030906376be4cea906102879088908890889088906001908990600401610bc3565b6020604051808303816000875af19250505080156102e0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526102dd91810190610c45565b60015b610232573d80801561030e576040519150601f19603f3d011682016040523d82523d6000602084013e610313565b606091505b506000915050610235565b600073ffffffffffffffffffffffffffffffffffffffff87163b6060827f64926492649264926492649264926492649264926492649264926492649264928888610369602082610c98565b610375928b9290610cd8565b61037e91610d02565b1490508015610484576000606089828a610399602082610c98565b926103a693929190610cd8565b8101906103b39190610e18565b955090925090508415806103c45750865b1561047d576000808373ffffffffffffffffffffffffffffffffffffffff16836040516103f19190610eb2565b6000604051808303816000865af19150503d806000811461042e576040519150601f19603f3d011682016040523d82523d6000602084013e610433565b606091505b50915091508161047a57806040517f9d0d6e2d0000000000000000000000000000000000000000000000000000000081526004016104719190610f18565b60405180910390fd5b50505b50506104be565b87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294505050505b80806104ca5750600083115b156106bb576040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b1690631626ba7e90610523908c908690600401610f2b565b602060405180830381865afa92505050801561057a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261057791810190610f44565b60015b61060f573d8080156105a8576040519150601f19603f3d011682016040523d82523d6000602084013e6105ad565b606091505b50851580156105bc5750600084115b156105db576105d08b8b8b8b8b600161031e565b9450505050506108d7565b806040517f6f2a95990000000000000000000000000000000000000000000000000000000081526004016104719190610f18565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f1626ba7e000000000000000000000000000000000000000000000000000000001480158161065f575086155b801561066b5750600085115b1561068b5761067f8c8c8c8c8c600161031e565b955050505050506108d7565b841580156106965750825b80156106a0575087155b156106af57806000526001601ffd5b94506108d79350505050565b6041871461074b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5369676e617475726556616c696461746f72237265636f7665725369676e657260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610471565b600061075a6020828a8c610cd8565b61076391610d02565b90506000610775604060208b8d610cd8565b61077e91610d02565b905060008a8a604081811061079557610795610c69565b919091013560f81c915050601b81148015906107b557508060ff16601c14155b15610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f5369676e617475726556616c696461746f723a20696e76616c6964207369676e60448201527f617475726520762076616c7565000000000000000000000000000000000000006064820152608401610471565b6040805160008152602081018083528e905260ff831691810191909152606081018490526080810183905273ffffffffffffffffffffffffffffffffffffffff8e169060019060a0016020604051602081039080840390855afa1580156108ad573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff161496505050505050505b9695505050505050565b6040517f76be4cea00000000000000000000000000000000000000000000000000000000815260009030906376be4cea9061092b9088908890889088906001908990600401610bc3565b6020604051808303816000875af115801561094a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102329190610c45565b6040517f76be4cea00000000000000000000000000000000000000000000000000000000815260009030906376be4cea906109b790889088908890889088908190600401610bc3565b6020604051808303816000875af1925050508015610a10575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610a0d91810190610c45565b60015b610232573d808015610a3e576040519150601f19603f3d011682016040523d82523d6000602084013e610a43565b606091505b5080516001819003610a6257816000815181106101d3576101d3610c69565b8082fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610a8857600080fd5b50565b60008083601f840112610a9d57600080fd5b50813567ffffffffffffffff811115610ab557600080fd5b602083019150836020828501011115610acd57600080fd5b9250929050565b60008060008060608587031215610aea57600080fd5b8435610af581610a66565b935060208501359250604085013567ffffffffffffffff811115610b1857600080fd5b610b2487828801610a8b565b95989497509550505050565b8015158114610a8857600080fd5b60008060008060008060a08789031215610b5757600080fd5b8635610b6281610a66565b955060208701359450604087013567ffffffffffffffff811115610b8557600080fd5b610b9189828a01610a8b565b9095509350506060870135610ba581610b30565b91506080870135610bb581610b30565b809150509295509295509295565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015260a060408201528360a0820152838560c0830137600060c085830181019190915292151560608201529015156080820152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909101019392505050565b600060208284031215610c5757600080fd5b8151610c6281610b30565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81810381811115610cd2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60008085851115610ce857600080fd5b83861115610cf557600080fd5b5050820193919092039150565b80356020831015610cd2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610d7e57600080fd5b813567ffffffffffffffff80821115610d9957610d99610d3e565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610ddf57610ddf610d3e565b81604052838152866020858801011115610df857600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610e2d57600080fd5b8335610e3881610a66565b9250602084013567ffffffffffffffff80821115610e5557600080fd5b610e6187838801610d6d565b93506040860135915080821115610e7757600080fd5b50610e8486828701610d6d565b9150509250925092565b60005b83811015610ea9578181015183820152602001610e91565b50506000910152565b60008251610ec4818460208701610e8e565b9190910192915050565b60008151808452610ee6816020860160208601610e8e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610c626020830184610ece565b8281526040602082015260006102356040830184610ece565b600060208284031215610f5657600080fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c6257600080fdfea26469706673582212201a72aed4b15ffb05b6502997a9bb655992e06590bd26b336dfbb153d7ff6f34b64736f6c63430008120033';
|
|
5
5
|
export function deploy(deployHash, context) {
|
|
@@ -12,7 +12,7 @@ export function deploy(deployHash, context) {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
export function wrap(signature, { to, data }) {
|
|
15
|
-
const encoded = Hex.concat(AbiParameters.encode([{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }], [to, Hex.from(data), Hex.from(signature)]),
|
|
15
|
+
const encoded = Hex.concat(AbiParameters.encode([{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }], [to, Hex.from(data), Hex.from(signature)]), SignatureErc6492.magicBytes);
|
|
16
16
|
switch (typeof signature) {
|
|
17
17
|
case 'object':
|
|
18
18
|
return Hex.toBytes(encoded);
|
|
@@ -23,18 +23,18 @@ export function wrap(signature, { to, data }) {
|
|
|
23
23
|
export function decode(signature) {
|
|
24
24
|
switch (typeof signature) {
|
|
25
25
|
case 'object':
|
|
26
|
-
if (Bytes.toHex(signature.subarray(-
|
|
27
|
-
|
|
28
|
-
const [to, data, decoded] = AbiParameters.decode([{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }], signature.subarray(0, -
|
|
26
|
+
if (Bytes.toHex(signature.subarray(-SignatureErc6492.magicBytes.slice(2).length / 2)) ===
|
|
27
|
+
SignatureErc6492.magicBytes) {
|
|
28
|
+
const [to, data, decoded] = AbiParameters.decode([{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }], signature.subarray(0, -SignatureErc6492.magicBytes.slice(2).length / 2));
|
|
29
29
|
return { signature: Hex.toBytes(decoded), erc6492: { to, data: Hex.toBytes(data) } };
|
|
30
30
|
}
|
|
31
31
|
else {
|
|
32
32
|
return { signature };
|
|
33
33
|
}
|
|
34
34
|
case 'string':
|
|
35
|
-
if (signature.endsWith(
|
|
35
|
+
if (signature.endsWith(SignatureErc6492.magicBytes.slice(2))) {
|
|
36
36
|
try {
|
|
37
|
-
const [to, data, decoded] = AbiParameters.decode([{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }], signature.slice(0, -
|
|
37
|
+
const [to, data, decoded] = AbiParameters.decode([{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }], signature.slice(0, -SignatureErc6492.magicBytes.slice(2).length));
|
|
38
38
|
return { signature: decoded, erc6492: { to, data: data } };
|
|
39
39
|
}
|
|
40
40
|
catch {
|
|
@@ -8,6 +8,7 @@ export declare const Dev1: Extensions;
|
|
|
8
8
|
export declare const Dev2: Extensions;
|
|
9
9
|
export declare const Rc3: Extensions;
|
|
10
10
|
export declare const Rc4: Extensions;
|
|
11
|
+
export declare const Rc5: Extensions;
|
|
11
12
|
export * as Passkeys from './passkeys.js';
|
|
12
13
|
export * as Recovery from './recovery.js';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAE5B,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,UAIlB,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,UAIlB,CAAA;AAED,eAAO,MAAM,GAAG,EAAE,UAIjB,CAAA;AAED,eAAO,MAAM,GAAG,EAAE,UAIjB,CAAA;AAED,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAA;AAE5B,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,UAIlB,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,UAIlB,CAAA;AAED,eAAO,MAAM,GAAG,EAAE,UAIjB,CAAA;AAED,eAAO,MAAM,GAAG,EAAE,UAIjB,CAAA;AAED,eAAO,MAAM,GAAG,EAAE,UAIjB,CAAA;AAED,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA"}
|
package/dist/extensions/index.js
CHANGED
|
@@ -18,6 +18,11 @@ export const Rc4 = {
|
|
|
18
18
|
recovery: '0x000000000001FC499c3E177DD56Febb0A4bc15b7',
|
|
19
19
|
sessions: '0x00000000000030Bcc832F7d657f50D6Be35C92b3',
|
|
20
20
|
};
|
|
21
|
+
export const Rc5 = {
|
|
22
|
+
passkeys: '0x0000000000005204F3711851EAD52CC9c241499a',
|
|
23
|
+
recovery: '0x000000000000AB36D17eB1150116371520565205',
|
|
24
|
+
sessions: '0x00000000000030Bcc832F7d657f50D6Be35C92b3',
|
|
25
|
+
};
|
|
21
26
|
export * as Passkeys from './passkeys.js';
|
|
22
27
|
export * as Recovery from './recovery.js';
|
|
23
28
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,IAAI,GAAe;IAC9B,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;CACvD,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAe;IAC9B,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;CACvD,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAe;IAC7B,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;CACvD,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAe;IAC7B,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;CACvD,CAAA;AAED,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,IAAI,GAAe;IAC9B,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;CACvD,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAe;IAC9B,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;CACvD,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAe;IAC7B,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;CACvD,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAe;IAC7B,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;CACvD,CAAA;AAED,MAAM,CAAC,MAAM,GAAG,GAAe;IAC7B,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;CACvD,CAAA;AAED,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@0xsequence/wallet-primitives",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.4",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
|
-
"@vitest/coverage-v8": "^
|
|
18
|
-
"typescript": "^5.
|
|
19
|
-
"vitest": "^
|
|
20
|
-
"@repo/typescript-config": "^0.0.0"
|
|
17
|
+
"@vitest/coverage-v8": "^4.0.14",
|
|
18
|
+
"typescript": "^5.9.3",
|
|
19
|
+
"vitest": "^4.0.14",
|
|
20
|
+
"@repo/typescript-config": "^0.0.1-beta.0"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"ox": "^0.
|
|
23
|
+
"ox": "^0.9.17"
|
|
24
24
|
},
|
|
25
25
|
"scripts": {
|
|
26
26
|
"build": "tsc",
|
package/src/constants.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Abi } from 'ox'
|
|
|
3
3
|
export const ZeroAddress = '0x0000000000000000000000000000000000000000' as const
|
|
4
4
|
export const PlaceholderAddress = '0xffff0000ffff0000ffff0000ffff0000ffff0000' as const
|
|
5
5
|
|
|
6
|
-
export const DefaultGuestAddress = '
|
|
6
|
+
export const DefaultGuestAddress = '0x0000000000006Ac72ed1d192fa28f0058D3F8806' as const
|
|
7
7
|
|
|
8
8
|
// ERC1271
|
|
9
9
|
export const IS_VALID_SIGNATURE = Abi.from([
|
package/src/context.ts
CHANGED
|
@@ -67,7 +67,7 @@ export const Rc4: Context = {
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
export const Rc4_4337: Context = {
|
|
70
|
-
factory: '
|
|
70
|
+
factory: '0x00000000000018A77519fcCCa060c2537c9D6d3F',
|
|
71
71
|
stage1: '0x0000000000003add039FF84b064B7347Fc23C444',
|
|
72
72
|
stage2: '0x4B3E5735665057A0A15eE448A7293bC01e3b4De9',
|
|
73
73
|
creationCode: '0x6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d30545af43d82803e903d91601f57fd5bf3',
|
|
@@ -78,6 +78,25 @@ export const Rc4_4337: Context = {
|
|
|
78
78
|
},
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
export const Rc5: Context = {
|
|
82
|
+
factory: '0x00000000000018A77519fcCCa060c2537c9D6d3F',
|
|
83
|
+
stage1: '0x0000000000001f3C39d61698ab21131a12134454',
|
|
84
|
+
stage2: '0xD0ae8eF93b7DA4eabb32Ec4d81b7a501DCa04D4C',
|
|
85
|
+
creationCode: '0x6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d30545af43d82803e903d91601f57fd5bf3',
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export const Rc5_4337: Context = {
|
|
89
|
+
factory: '0x00000000000018A77519fcCCa060c2537c9D6d3F',
|
|
90
|
+
stage1: '0x0000000000009caFdeDb6f64Bf5F31a22124B2a8',
|
|
91
|
+
stage2: '0xcBca3328a731deffE6Ce4c2fb51b585c3c37FB92',
|
|
92
|
+
creationCode: '0x6041600e3d396021805130553df33d3d36153402601f57363d3d373d363d30545af43d82803e903d91601f57fd5bf3',
|
|
93
|
+
capabilities: {
|
|
94
|
+
erc4337: {
|
|
95
|
+
entrypoint: '0x0000000071727De22E5E9d8BAf0edAc6f37da032',
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
}
|
|
99
|
+
|
|
81
100
|
export type KnownContext = Context & {
|
|
82
101
|
name: string
|
|
83
102
|
development: boolean
|
|
@@ -91,6 +110,8 @@ export const KnownContexts: KnownContext[] = [
|
|
|
91
110
|
{ name: 'Rc3_4337', development: true, ...Rc3_4337 },
|
|
92
111
|
{ name: 'Rc4', development: false, ...Rc4 },
|
|
93
112
|
{ name: 'Rc4_4337', development: false, ...Rc4_4337 },
|
|
113
|
+
{ name: 'Rc5', development: false, ...Rc5 },
|
|
114
|
+
{ name: 'Rc5_4337', development: false, ...Rc5_4337 },
|
|
94
115
|
]
|
|
95
116
|
|
|
96
117
|
export function isKnownContext(context: Context): context is KnownContext {
|
package/src/erc-6492.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AbiFunction, AbiParameters, Address, Bytes, Hex, Provider } from 'ox'
|
|
2
|
-
import {
|
|
2
|
+
import { SignatureErc6492 } from 'ox/erc6492'
|
|
3
3
|
import { DEPLOY } from './constants.js'
|
|
4
4
|
import { Context } from './context.js'
|
|
5
5
|
|
|
@@ -29,7 +29,7 @@ export function wrap<T extends Bytes.Bytes | Hex.Hex>(
|
|
|
29
29
|
[{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }],
|
|
30
30
|
[to, Hex.from(data), Hex.from(signature)],
|
|
31
31
|
),
|
|
32
|
-
|
|
32
|
+
SignatureErc6492.magicBytes,
|
|
33
33
|
)
|
|
34
34
|
|
|
35
35
|
switch (typeof signature) {
|
|
@@ -46,12 +46,12 @@ export function decode<T extends Bytes.Bytes | Hex.Hex>(
|
|
|
46
46
|
switch (typeof signature) {
|
|
47
47
|
case 'object':
|
|
48
48
|
if (
|
|
49
|
-
Bytes.toHex(signature.subarray(-
|
|
50
|
-
|
|
49
|
+
Bytes.toHex(signature.subarray(-SignatureErc6492.magicBytes.slice(2).length / 2)) ===
|
|
50
|
+
SignatureErc6492.magicBytes
|
|
51
51
|
) {
|
|
52
52
|
const [to, data, decoded] = AbiParameters.decode(
|
|
53
53
|
[{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }],
|
|
54
|
-
signature.subarray(0, -
|
|
54
|
+
signature.subarray(0, -SignatureErc6492.magicBytes.slice(2).length / 2),
|
|
55
55
|
)
|
|
56
56
|
return { signature: Hex.toBytes(decoded) as T, erc6492: { to, data: Hex.toBytes(data) as T } }
|
|
57
57
|
} else {
|
|
@@ -59,11 +59,11 @@ export function decode<T extends Bytes.Bytes | Hex.Hex>(
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
case 'string':
|
|
62
|
-
if (signature.endsWith(
|
|
62
|
+
if (signature.endsWith(SignatureErc6492.magicBytes.slice(2))) {
|
|
63
63
|
try {
|
|
64
64
|
const [to, data, decoded] = AbiParameters.decode(
|
|
65
65
|
[{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }],
|
|
66
|
-
signature.slice(0, -
|
|
66
|
+
signature.slice(0, -SignatureErc6492.magicBytes.slice(2).length) as Hex.Hex,
|
|
67
67
|
)
|
|
68
68
|
return { signature: decoded as T, erc6492: { to, data: data as T } }
|
|
69
69
|
} catch {
|
package/src/extensions/index.ts
CHANGED
|
@@ -30,5 +30,11 @@ export const Rc4: Extensions = {
|
|
|
30
30
|
sessions: '0x00000000000030Bcc832F7d657f50D6Be35C92b3',
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
export const Rc5: Extensions = {
|
|
34
|
+
passkeys: '0x0000000000005204F3711851EAD52CC9c241499a',
|
|
35
|
+
recovery: '0x000000000000AB36D17eB1150116371520565205',
|
|
36
|
+
sessions: '0x00000000000030Bcc832F7d657f50D6Be35C92b3',
|
|
37
|
+
}
|
|
38
|
+
|
|
33
39
|
export * as Passkeys from './passkeys.js'
|
|
34
40
|
export * as Recovery from './recovery.js'
|
package/test/address.test.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { describe, expect, it } from 'vitest'
|
|
|
2
2
|
import { Address, Bytes, Hash, Hex } from 'ox'
|
|
3
3
|
|
|
4
4
|
import { from } from '../src/address.js'
|
|
5
|
-
import { Context, Dev1, Dev2, Rc3, Rc4 } from '../src/context.js'
|
|
5
|
+
import { Context, Dev1, Dev2, Rc3, Rc4, Rc5 } from '../src/context.js'
|
|
6
6
|
import { Config, hashConfiguration } from '../src/config.js'
|
|
7
7
|
|
|
8
8
|
describe('Address', () => {
|
|
@@ -134,6 +134,19 @@ describe('Address', () => {
|
|
|
134
134
|
expect(address).not.toBe(dev2Address)
|
|
135
135
|
})
|
|
136
136
|
|
|
137
|
+
it('should work with Rc5 context', () => {
|
|
138
|
+
const { stage2, ...rc5Context } = Rc5
|
|
139
|
+
const address = from(sampleConfig, rc5Context)
|
|
140
|
+
|
|
141
|
+
expect(() => Address.assert(address)).not.toThrow()
|
|
142
|
+
expect(address).toMatch(/^0x[a-fA-F0-9]{40}$/)
|
|
143
|
+
|
|
144
|
+
// Should be different from Dev2
|
|
145
|
+
const { stage2: _, ...dev2Context } = Dev2
|
|
146
|
+
const dev2Address = from(sampleConfig, dev2Context)
|
|
147
|
+
expect(address).not.toBe(dev2Address)
|
|
148
|
+
})
|
|
149
|
+
|
|
137
150
|
it('should handle complex topology configurations', () => {
|
|
138
151
|
const complexConfig: Config = {
|
|
139
152
|
threshold: 2n,
|
package/test/erc-6492.test.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, expect, it, vi } from 'vitest'
|
|
2
2
|
import { Address, Bytes, Hex, Provider } from 'ox'
|
|
3
|
-
import {
|
|
3
|
+
import { SignatureErc6492 } from 'ox/erc6492'
|
|
4
4
|
|
|
5
5
|
import { deploy, wrap, decode, isValid } from '../src/erc-6492.js'
|
|
6
6
|
import { Context } from '../src/context.js'
|
|
@@ -82,7 +82,7 @@ describe('ERC-6492', () => {
|
|
|
82
82
|
expect(result.startsWith('0x')).toBe(true)
|
|
83
83
|
|
|
84
84
|
// Should end with the magic bytes
|
|
85
|
-
expect(result.endsWith(
|
|
85
|
+
expect(result.endsWith(SignatureErc6492.magicBytes.slice(2))).toBe(true)
|
|
86
86
|
|
|
87
87
|
// Should contain the original signature data somewhere
|
|
88
88
|
expect(result.length).toBeGreaterThan(testSignature.length)
|
|
@@ -96,7 +96,7 @@ describe('ERC-6492', () => {
|
|
|
96
96
|
|
|
97
97
|
// Convert to hex to check magic bytes
|
|
98
98
|
const resultHex = Bytes.toHex(result)
|
|
99
|
-
expect(resultHex.endsWith(
|
|
99
|
+
expect(resultHex.endsWith(SignatureErc6492.magicBytes.slice(2))).toBe(true)
|
|
100
100
|
})
|
|
101
101
|
|
|
102
102
|
it('should return same type as input signature', () => {
|
|
@@ -133,7 +133,7 @@ describe('ERC-6492', () => {
|
|
|
133
133
|
// The wrapped signature should contain encoded: address, bytes (data), bytes (signature)
|
|
134
134
|
expect(result.length).toBeGreaterThan(testSignature.length + deployData.data.length)
|
|
135
135
|
expect(result).toContain(testAddress.slice(2)) // Address without 0x
|
|
136
|
-
expect(result.endsWith(
|
|
136
|
+
expect(result.endsWith(SignatureErc6492.magicBytes.slice(2))).toBe(true)
|
|
137
137
|
})
|
|
138
138
|
})
|
|
139
139
|
|
|
@@ -209,7 +209,7 @@ describe('ERC-6492', () => {
|
|
|
209
209
|
|
|
210
210
|
it('should handle malformed wrapped signature gracefully', () => {
|
|
211
211
|
// Create a signature that ends with magic bytes but has invalid encoding
|
|
212
|
-
const malformedSig = ('0x1234' +
|
|
212
|
+
const malformedSig = ('0x1234' + SignatureErc6492.magicBytes.slice(2)) as Hex.Hex
|
|
213
213
|
const result = decode(malformedSig)
|
|
214
214
|
|
|
215
215
|
// Should return original signature when decoding fails
|
|
@@ -391,7 +391,7 @@ describe('ERC-6492', () => {
|
|
|
391
391
|
|
|
392
392
|
// 2. Wrap signature with deploy data
|
|
393
393
|
const wrappedSig = wrap(testSignature, deployCall)
|
|
394
|
-
expect(wrappedSig.endsWith(
|
|
394
|
+
expect(wrappedSig.endsWith(SignatureErc6492.magicBytes.slice(2))).toBe(true)
|
|
395
395
|
|
|
396
396
|
// 3. Decode wrapped signature
|
|
397
397
|
const decoded = decode(wrappedSig)
|
|
@@ -457,7 +457,7 @@ describe('ERC-6492', () => {
|
|
|
457
457
|
|
|
458
458
|
it('should handle signatures that accidentally contain magic bytes', () => {
|
|
459
459
|
// Create a signature that contains the magic bytes but isn't wrapped
|
|
460
|
-
const magicInSignature = (testSignature +
|
|
460
|
+
const magicInSignature = (testSignature + SignatureErc6492.magicBytes.slice(2) + '1234') as Hex.Hex
|
|
461
461
|
const result = decode(magicInSignature)
|
|
462
462
|
|
|
463
463
|
// Should try to decode, but if it fails, should return original
|