ox 0.14.55 → 0.14.57
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 +48 -0
- package/_cjs/tempo/{MultisigConfig.js → AccountConfig.js} +32 -9
- package/_cjs/tempo/AccountConfig.js.map +1 -0
- package/_cjs/tempo/{MultisigOperation.js → AccountOperation.js} +29 -29
- package/_cjs/tempo/AccountOperation.js.map +1 -0
- package/_cjs/tempo/{MultisigSimulation.js → AccountSimulation.js} +22 -13
- package/_cjs/tempo/AccountSimulation.js.map +1 -0
- package/_cjs/tempo/KeyAuthorization.js +10 -18
- package/_cjs/tempo/KeyAuthorization.js.map +1 -1
- package/_cjs/tempo/SignatureEnvelope.js +64 -64
- package/_cjs/tempo/SignatureEnvelope.js.map +1 -1
- package/_cjs/tempo/TransactionRequest.js +15 -10
- package/_cjs/tempo/TransactionRequest.js.map +1 -1
- package/_cjs/tempo/index.js +4 -4
- package/_cjs/tempo/index.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/tempo/{MultisigConfig.js → AccountConfig.js} +161 -64
- package/_esm/tempo/AccountConfig.js.map +1 -0
- package/_esm/tempo/{MultisigOperation.js → AccountOperation.js} +64 -64
- package/_esm/tempo/AccountOperation.js.map +1 -0
- package/_esm/tempo/{MultisigSimulation.js → AccountSimulation.js} +35 -25
- package/_esm/tempo/AccountSimulation.js.map +1 -0
- package/_esm/tempo/KeyAuthorization.js +16 -19
- package/_esm/tempo/KeyAuthorization.js.map +1 -1
- package/_esm/tempo/SignatureEnvelope.js +71 -71
- package/_esm/tempo/SignatureEnvelope.js.map +1 -1
- package/_esm/tempo/TransactionRequest.js +15 -10
- package/_esm/tempo/TransactionRequest.js.map +1 -1
- package/_esm/tempo/index.js +50 -48
- package/_esm/tempo/index.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/tempo/{MultisigConfig.d.ts → AccountConfig.d.ts} +156 -66
- package/_types/tempo/AccountConfig.d.ts.map +1 -0
- package/_types/tempo/{MultisigOperation.d.ts → AccountOperation.d.ts} +62 -62
- package/_types/tempo/AccountOperation.d.ts.map +1 -0
- package/_types/tempo/{MultisigSimulation.d.ts → AccountSimulation.d.ts} +25 -21
- package/_types/tempo/AccountSimulation.d.ts.map +1 -0
- package/_types/tempo/KeyAuthorization.d.ts +28 -23
- package/_types/tempo/KeyAuthorization.d.ts.map +1 -1
- package/_types/tempo/RpcSchemaTempo.d.ts +13 -13
- package/_types/tempo/RpcSchemaTempo.d.ts.map +1 -1
- package/_types/tempo/SignatureEnvelope.d.ts +36 -33
- package/_types/tempo/SignatureEnvelope.d.ts.map +1 -1
- package/_types/tempo/TransactionRequest.d.ts +11 -9
- package/_types/tempo/TransactionRequest.d.ts.map +1 -1
- package/_types/tempo/index.d.ts +50 -48
- package/_types/tempo/index.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/package.json +31 -31
- package/tempo/AccountConfig/package.json +6 -0
- package/tempo/AccountConfig.test-d/package.json +6 -0
- package/tempo/AccountConfig.test-d.ts +72 -0
- package/tempo/AccountConfig.test.ts +642 -0
- package/tempo/{MultisigConfig.ts → AccountConfig.ts} +212 -75
- package/tempo/AccountOperation/package.json +6 -0
- package/tempo/AccountOperation.test-d/package.json +6 -0
- package/tempo/AccountOperation.test-d.ts +71 -0
- package/tempo/{MultisigOperation.test.ts → AccountOperation.test.ts} +129 -129
- package/tempo/{MultisigOperation.ts → AccountOperation.ts} +95 -97
- package/tempo/AccountSimulation/package.json +6 -0
- package/tempo/AccountSimulation.test-d/package.json +6 -0
- package/tempo/{MultisigSimulation.test-d.ts → AccountSimulation.test-d.ts} +7 -9
- package/tempo/{MultisigSimulation.test.ts → AccountSimulation.test.ts} +73 -29
- package/tempo/{MultisigSimulation.ts → AccountSimulation.ts} +47 -35
- package/tempo/KeyAuthorization.test-d.ts +19 -29
- package/tempo/KeyAuthorization.test.ts +151 -74
- package/tempo/KeyAuthorization.ts +40 -61
- package/tempo/RpcSchemaTempo.test-d.ts +20 -20
- package/tempo/RpcSchemaTempo.ts +13 -13
- package/tempo/SignatureEnvelope.test-d.ts +7 -7
- package/tempo/SignatureEnvelope.test.ts +34 -34
- package/tempo/SignatureEnvelope.ts +107 -103
- package/tempo/Transaction.test.ts +4 -4
- package/tempo/TransactionRequest.test-d.ts +17 -8
- package/tempo/TransactionRequest.test.ts +31 -21
- package/tempo/TransactionRequest.ts +29 -20
- package/tempo/{multisig.e2e.test.ts → configurableAccounts.e2e.test.ts} +16 -16
- package/tempo/index.ts +50 -48
- package/version.ts +1 -1
- package/_cjs/tempo/MultisigConfig.js.map +0 -1
- package/_cjs/tempo/MultisigOperation.js.map +0 -1
- package/_cjs/tempo/MultisigSimulation.js.map +0 -1
- package/_esm/tempo/MultisigConfig.js.map +0 -1
- package/_esm/tempo/MultisigOperation.js.map +0 -1
- package/_esm/tempo/MultisigSimulation.js.map +0 -1
- package/_types/tempo/MultisigConfig.d.ts.map +0 -1
- package/_types/tempo/MultisigOperation.d.ts.map +0 -1
- package/_types/tempo/MultisigSimulation.d.ts.map +0 -1
- package/tempo/MultisigConfig/package.json +0 -6
- package/tempo/MultisigConfig.test-d/package.json +0 -6
- package/tempo/MultisigConfig.test-d.ts +0 -52
- package/tempo/MultisigConfig.test.ts +0 -391
- package/tempo/MultisigOperation/package.json +0 -6
- package/tempo/MultisigOperation.test-d/package.json +0 -6
- package/tempo/MultisigOperation.test-d.ts +0 -71
- package/tempo/MultisigSimulation/package.json +0 -6
- package/tempo/MultisigSimulation.test-d/package.json +0 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,53 @@
|
|
|
1
1
|
# ox
|
|
2
2
|
|
|
3
|
+
## 0.14.57
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#519](https://github.com/wevm/ox/pull/519) [`e9b66c2`](https://github.com/wevm/ox/commit/e9b66c28e3595fd02150f816f1ebf8971deee5d1) Thanks [@jxom](https://github.com/jxom)! - Added `AccountConfig.fromUpgrade` for deriving the version-one config an account installs when it migrates in place with `upgradeAccount` (TIP-1113).
|
|
8
|
+
|
|
9
|
+
- [#519](https://github.com/wevm/ox/pull/519) [`e9b66c2`](https://github.com/wevm/ox/commit/e9b66c28e3595fd02150f816f1ebf8971deee5d1) Thanks [@jxom](https://github.com/jxom)! - Fixed `AccountSimulation.toRpc` passing through empty and 3-byte `keyData`, which the Tempo node rejects, by shimming them into a 2-byte length hint.
|
|
10
|
+
|
|
11
|
+
- [#519](https://github.com/wevm/ox/pull/519) [`e9b66c2`](https://github.com/wevm/ox/commit/e9b66c28e3595fd02150f816f1ebf8971deee5d1) Thanks [@jxom](https://github.com/jxom)! - Renamed the Tempo configurable account hash domains from `tempo:multisig:*` to `tempo:configurable-account:*` to match Tempo main (tempoxyz/tempo#8502), which changes every `AccountConfig.getAddress`, `AccountConfig.getCommitment`, and `AccountConfig.getSignPayload` result.
|
|
12
|
+
|
|
13
|
+
- [#519](https://github.com/wevm/ox/pull/519) [`e9b66c2`](https://github.com/wevm/ox/commit/e9b66c28e3595fd02150f816f1ebf8971deee5d1) Thanks [@jxom](https://github.com/jxom)! - Renamed the configurable account RPC key type from `multisig` to `configurableAccount` and `TransactionRequest.multisigSimulation` to `configurableAccountSimulation`, and added the optional `AccountSimulation` grant `signer`, to match the Tempo node.
|
|
14
|
+
|
|
15
|
+
```diff
|
|
16
|
+
- { keyType: 'multisig', multisigSimulation: spec }
|
|
17
|
+
+ { keyType: 'configurableAccount', configurableAccountSimulation: spec }
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
- [#519](https://github.com/wevm/ox/pull/519) [`e9b66c2`](https://github.com/wevm/ox/commit/e9b66c28e3595fd02150f816f1ebf8971deee5d1) Thanks [@jxom](https://github.com/jxom)! - Stopped requiring an `account` binding on configurable account key grants, so `KeyAuthorization` accepts every grant the Tempo node accepts, and deprecated `KeyAuthorization.MissingAccountError`, which is no longer thrown.
|
|
21
|
+
|
|
22
|
+
## 0.14.56
|
|
23
|
+
|
|
24
|
+
### Patch Changes
|
|
25
|
+
|
|
26
|
+
- [#509](https://github.com/wevm/ox/pull/509) [`3549b12`](https://github.com/wevm/ox/commit/3549b120c0c259d8ecbc3d16b3ae77f72dfbf791) Thanks [@jxom](https://github.com/jxom)! - Renamed the Tempo multisig account APIs to configurable accounts (TIP-1107), including the `account_` relay RPC namespace, raised `AccountConfig.maxThreshold` to `255` per TIP-1114, and added `AccountConfig.update` for deriving the next config after an owner update.
|
|
27
|
+
|
|
28
|
+
```diff
|
|
29
|
+
- import { MultisigConfig, MultisigOperation, MultisigSimulation } from 'ox/tempo'
|
|
30
|
+
+ import { AccountConfig, AccountOperation, AccountSimulation } from 'ox/tempo'
|
|
31
|
+
|
|
32
|
+
- const initialConfig = MultisigConfig.from({ owners, threshold: 2 })
|
|
33
|
+
+ const initialConfig = AccountConfig.from({ owners, threshold: 2 })
|
|
34
|
+
|
|
35
|
+
- SignatureEnvelope.sortMultisigApprovals({ account, config, payload, signatures })
|
|
36
|
+
+ SignatureEnvelope.sortApprovals({ account, config, payload, signatures })
|
|
37
|
+
|
|
38
|
+
- if (signature.type === 'multisig') signature satisfies SignatureEnvelope.Multisig
|
|
39
|
+
+ if (signature.type === 'configurable') signature satisfies SignatureEnvelope.Configurable
|
|
40
|
+
|
|
41
|
+
- KeyAuthorization.from({ account, address, chainId, type: 'multisig' })
|
|
42
|
+
+ KeyAuthorization.from({ account, address, chainId, type: 'configurable' })
|
|
43
|
+
|
|
44
|
+
- TransactionRequest.toRpc({ from, keyType: 'multisig', multisigSimulation })
|
|
45
|
+
+ TransactionRequest.toRpc({ accountSimulation, from, keyType: 'configurable' })
|
|
46
|
+
|
|
47
|
+
- RpcSchema.from<RpcSchemaTempo.Multisig>() // multisig_getConfig, multisig_getOperation, ...
|
|
48
|
+
+ RpcSchema.from<RpcSchemaTempo.Account>() // account_getConfig, account_getOperation, ...
|
|
49
|
+
```
|
|
50
|
+
|
|
3
51
|
## 0.14.55
|
|
4
52
|
|
|
5
53
|
### Patch Changes
|
|
@@ -5,11 +5,13 @@ exports.assert = assert;
|
|
|
5
5
|
exports.from = from;
|
|
6
6
|
exports.fromRpc = fromRpc;
|
|
7
7
|
exports.fromTuple = fromTuple;
|
|
8
|
+
exports.fromUpgrade = fromUpgrade;
|
|
8
9
|
exports.getAddress = getAddress;
|
|
9
10
|
exports.getCommitment = getCommitment;
|
|
10
11
|
exports.getSignPayload = getSignPayload;
|
|
11
12
|
exports.toRpc = toRpc;
|
|
12
13
|
exports.toTuple = toTuple;
|
|
14
|
+
exports.update = update;
|
|
13
15
|
exports.validate = validate;
|
|
14
16
|
const Address = require("../core/Address.js");
|
|
15
17
|
const ContractAddress = require("../core/ContractAddress.js");
|
|
@@ -19,14 +21,15 @@ const Hex = require("../core/Hex.js");
|
|
|
19
21
|
exports.maxOwnerSignatureBytes = 2049;
|
|
20
22
|
exports.maxOwners = 48;
|
|
21
23
|
exports.maxSignatures = 8;
|
|
22
|
-
exports.maxThreshold =
|
|
24
|
+
exports.maxThreshold = 0xff;
|
|
23
25
|
exports.maxVersion = 2n ** 64n - 1n;
|
|
24
26
|
exports.signatureTypeByte = '0x05';
|
|
25
27
|
exports.zeroSalt = `0x${'00'.repeat(32)}`;
|
|
26
|
-
const accountDomain = 'tempo:
|
|
27
|
-
const configDomain = 'tempo:
|
|
28
|
-
const
|
|
29
|
-
const signatureDomain = 'tempo:
|
|
28
|
+
const accountDomain = 'tempo:configurable-account:account';
|
|
29
|
+
const configDomain = 'tempo:configurable-account:config';
|
|
30
|
+
const accountProxyInitCodeHash = '0x583cc63a2e37f645b43eac911b1a6d6de08b83abdc308c61364edda8cfc3bd37';
|
|
31
|
+
const signatureDomain = 'tempo:configurable-account:signature';
|
|
32
|
+
const upgradeDomain = 'tempo:configurable-account:upgrade';
|
|
30
33
|
function assert(config) {
|
|
31
34
|
const { owners, salt, threshold, version = 0n } = config;
|
|
32
35
|
if (typeof salt !== 'undefined' && Hex.size(salt) !== 32)
|
|
@@ -135,6 +138,15 @@ function fromTuple(tuple) {
|
|
|
135
138
|
assert(config);
|
|
136
139
|
return config;
|
|
137
140
|
}
|
|
141
|
+
function fromUpgrade(account, options) {
|
|
142
|
+
Address.assert(account);
|
|
143
|
+
return from({
|
|
144
|
+
owners: options.owners,
|
|
145
|
+
salt: Hash.keccak256(Hex.concat(Hex.fromString(upgradeDomain), account)),
|
|
146
|
+
threshold: options.threshold,
|
|
147
|
+
version: 1n,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
138
150
|
function getAddress(config, options) {
|
|
139
151
|
Address.assert(options.factory);
|
|
140
152
|
assert(config);
|
|
@@ -147,7 +159,7 @@ function getAddress(config, options) {
|
|
|
147
159
|
Hex.fromNumber(owner.weight, { size: 1 }),
|
|
148
160
|
])));
|
|
149
161
|
const account = ContractAddress.fromCreate2({
|
|
150
|
-
bytecodeHash:
|
|
162
|
+
bytecodeHash: accountProxyInitCodeHash,
|
|
151
163
|
from: options.factory,
|
|
152
164
|
salt: accountSalt,
|
|
153
165
|
});
|
|
@@ -198,6 +210,17 @@ function toTuple(config) {
|
|
|
198
210
|
owners,
|
|
199
211
|
];
|
|
200
212
|
}
|
|
213
|
+
function update(config, options) {
|
|
214
|
+
const current = from(config);
|
|
215
|
+
if (current.version === exports.maxVersion)
|
|
216
|
+
throw new InvalidConfigError({ reason: 'version overflow' });
|
|
217
|
+
return from({
|
|
218
|
+
owners: options.owners,
|
|
219
|
+
salt: current.salt,
|
|
220
|
+
threshold: options.threshold,
|
|
221
|
+
version: current.version + 1n,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
201
224
|
function validate(config) {
|
|
202
225
|
try {
|
|
203
226
|
assert(config);
|
|
@@ -209,12 +232,12 @@ function validate(config) {
|
|
|
209
232
|
}
|
|
210
233
|
class InvalidConfigError extends Errors.BaseError {
|
|
211
234
|
constructor({ reason }) {
|
|
212
|
-
super(`Invalid
|
|
235
|
+
super(`Invalid account config: ${reason}.`);
|
|
213
236
|
Object.defineProperty(this, "name", {
|
|
214
237
|
enumerable: true,
|
|
215
238
|
configurable: true,
|
|
216
239
|
writable: true,
|
|
217
|
-
value: '
|
|
240
|
+
value: 'AccountConfig.InvalidConfigError'
|
|
218
241
|
});
|
|
219
242
|
}
|
|
220
243
|
}
|
|
@@ -228,4 +251,4 @@ function assertVersion(version) {
|
|
|
228
251
|
reason: 'version must be an unsigned 64-bit integer',
|
|
229
252
|
});
|
|
230
253
|
}
|
|
231
|
-
//# sourceMappingURL=
|
|
254
|
+
//# sourceMappingURL=AccountConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountConfig.js","sourceRoot":"","sources":["../../tempo/AccountConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,8 @@ const Address = require("../core/Address.js");
|
|
|
12
12
|
const Errors = require("../core/Errors.js");
|
|
13
13
|
const Hash = require("../core/Hash.js");
|
|
14
14
|
const Hex = require("../core/Hex.js");
|
|
15
|
+
const AccountConfig = require("./AccountConfig.js");
|
|
15
16
|
const KeyAuthorization_ = require("./KeyAuthorization.js");
|
|
16
|
-
const MultisigConfig = require("./MultisigConfig.js");
|
|
17
17
|
const SignatureEnvelope = require("./SignatureEnvelope.js");
|
|
18
18
|
const TxEnvelopeTempo = require("./TxEnvelopeTempo.js");
|
|
19
19
|
function getHash(options) {
|
|
@@ -21,7 +21,7 @@ function getHash(options) {
|
|
|
21
21
|
const payload = options.type === 'transaction'
|
|
22
22
|
? TxEnvelopeTempo.getSignPayload(TxEnvelopeTempo.deserialize(options.transaction))
|
|
23
23
|
: KeyAuthorization_.getSignPayload(KeyAuthorization_.deserialize(options.keyAuthorization));
|
|
24
|
-
return
|
|
24
|
+
return AccountConfig.getSignPayload({
|
|
25
25
|
account,
|
|
26
26
|
config,
|
|
27
27
|
payload,
|
|
@@ -33,7 +33,7 @@ async function selectApprovals(options) {
|
|
|
33
33
|
throw new InvalidApprovalError({ reason: 'account is invalid' });
|
|
34
34
|
if (!Hash.validate(hash))
|
|
35
35
|
throw new InvalidApprovalError({ reason: 'hash is invalid' });
|
|
36
|
-
const config =
|
|
36
|
+
const config = AccountConfig.from(options.config);
|
|
37
37
|
return selectApprovals_internal({
|
|
38
38
|
account,
|
|
39
39
|
approvals,
|
|
@@ -52,8 +52,8 @@ function serializeKeyAuthorization(keyAuthorization, options) {
|
|
|
52
52
|
throw new InvalidOperationError({
|
|
53
53
|
reason: 'keyAuthorization is not canonically serialized',
|
|
54
54
|
});
|
|
55
|
-
const config =
|
|
56
|
-
const signatures = SignatureEnvelope.
|
|
55
|
+
const config = AccountConfig.from(options.config);
|
|
56
|
+
const signatures = SignatureEnvelope.sortApprovals({
|
|
57
57
|
account: options.account,
|
|
58
58
|
config,
|
|
59
59
|
payload: KeyAuthorization_.getSignPayload(authorization),
|
|
@@ -72,7 +72,7 @@ function serializeTransaction(operation, options) {
|
|
|
72
72
|
const envelope = TxEnvelopeTempo.deserialize(value.transaction);
|
|
73
73
|
const approvals = options.approvals.map((approval) => assertApproval(value.account, approval, value.config));
|
|
74
74
|
assertRetainedApprovals(value, approvals);
|
|
75
|
-
const signatures = SignatureEnvelope.
|
|
75
|
+
const signatures = SignatureEnvelope.sortApprovals({
|
|
76
76
|
account: value.account,
|
|
77
77
|
config: value.config,
|
|
78
78
|
payload: TxEnvelopeTempo.getSignPayload(envelope),
|
|
@@ -93,7 +93,7 @@ function serializeTransaction(operation, options) {
|
|
|
93
93
|
}
|
|
94
94
|
function from(operation) {
|
|
95
95
|
try {
|
|
96
|
-
const config =
|
|
96
|
+
const config = AccountConfig.from(operation.config);
|
|
97
97
|
if (typeof config.threshold !== 'number' ||
|
|
98
98
|
config.owners.some((owner) => typeof owner.weight !== 'number'))
|
|
99
99
|
throw new InvalidOperationError({
|
|
@@ -129,7 +129,7 @@ function fromRpc(operation) {
|
|
|
129
129
|
});
|
|
130
130
|
return from({
|
|
131
131
|
...operation,
|
|
132
|
-
config:
|
|
132
|
+
config: AccountConfig.fromRpc(operation.config),
|
|
133
133
|
});
|
|
134
134
|
}
|
|
135
135
|
catch (cause) {
|
|
@@ -142,7 +142,7 @@ function toRpc(operation) {
|
|
|
142
142
|
const value = from(operation);
|
|
143
143
|
return {
|
|
144
144
|
...value,
|
|
145
|
-
config:
|
|
145
|
+
config: AccountConfig.toRpc(value.config),
|
|
146
146
|
};
|
|
147
147
|
}
|
|
148
148
|
async function selectApprovals_internal(options) {
|
|
@@ -153,9 +153,9 @@ async function selectApprovals_internal(options) {
|
|
|
153
153
|
const groups = new Map();
|
|
154
154
|
for (const serialized of options.approvals) {
|
|
155
155
|
const signature = SignatureEnvelope.from(serialized);
|
|
156
|
-
if (signature.type === 'keychain' || signature.type === '
|
|
156
|
+
if (signature.type === 'keychain' || signature.type === 'configurable')
|
|
157
157
|
throw new InvalidApprovalError({
|
|
158
|
-
reason: 'only primitive signatures can approve
|
|
158
|
+
reason: 'only primitive signatures can approve an account operation',
|
|
159
159
|
});
|
|
160
160
|
const address = SignatureEnvelope.extractAddress({
|
|
161
161
|
payload: options.hash,
|
|
@@ -201,7 +201,7 @@ async function selectApprovals_internal(options) {
|
|
|
201
201
|
const ranked = valid.sort((a, b) => b.weight - a.weight || compareApprovalAddress(a, b));
|
|
202
202
|
const selected = [];
|
|
203
203
|
let weight = 0;
|
|
204
|
-
for (const approval of ranked.slice(0,
|
|
204
|
+
for (const approval of ranked.slice(0, AccountConfig.maxSignatures)) {
|
|
205
205
|
if (weight >= Number(options.config.threshold))
|
|
206
206
|
break;
|
|
207
207
|
selected.push(approval);
|
|
@@ -250,7 +250,7 @@ function assertBase(operation, config) {
|
|
|
250
250
|
});
|
|
251
251
|
if (operation.weight > 0xff)
|
|
252
252
|
throw new InvalidOperationError({ reason: 'weight exceeds u8 max' });
|
|
253
|
-
if (operation.signatureCount >
|
|
253
|
+
if (operation.signatureCount > AccountConfig.maxSignatures)
|
|
254
254
|
throw new InvalidOperationError({ reason: 'too many selected signatures' });
|
|
255
255
|
if (!Array.isArray(operation.approvals))
|
|
256
256
|
throw new InvalidOperationError({ reason: 'approvals must be an array' });
|
|
@@ -404,9 +404,9 @@ function assertKeyAuthorization(operation, config) {
|
|
|
404
404
|
reason: 'pending key authorizations must be unsigned',
|
|
405
405
|
});
|
|
406
406
|
if (operation.status === 'success') {
|
|
407
|
-
if (signature?.type !== '
|
|
407
|
+
if (signature?.type !== 'configurable')
|
|
408
408
|
throw new InvalidOperationError({
|
|
409
|
-
reason: 'successful key authorizations require a
|
|
409
|
+
reason: 'successful key authorizations require a configurable account signature',
|
|
410
410
|
});
|
|
411
411
|
if (signature.account.toLowerCase() !== operation.account.toLowerCase())
|
|
412
412
|
throw new InvalidOperationError({
|
|
@@ -431,7 +431,7 @@ function assertKeyAuthorization(operation, config) {
|
|
|
431
431
|
}
|
|
432
432
|
function assertApproval(account, serialized, config) {
|
|
433
433
|
const approval = SignatureEnvelope.deserialize(serialized);
|
|
434
|
-
if (approval.type === 'keychain' || approval.type === '
|
|
434
|
+
if (approval.type === 'keychain' || approval.type === 'configurable')
|
|
435
435
|
throw new InvalidOperationError({
|
|
436
436
|
reason: 'only primitive owner approvals are allowed',
|
|
437
437
|
});
|
|
@@ -439,7 +439,7 @@ function assertApproval(account, serialized, config) {
|
|
|
439
439
|
account,
|
|
440
440
|
config,
|
|
441
441
|
signatures: [approval],
|
|
442
|
-
type: '
|
|
442
|
+
type: 'configurable',
|
|
443
443
|
});
|
|
444
444
|
if (SignatureEnvelope.serialize(approval).toLowerCase() !==
|
|
445
445
|
serialized.toLowerCase())
|
|
@@ -469,7 +469,7 @@ function assertSelectedApprovals(operation, selected, authorization) {
|
|
|
469
469
|
});
|
|
470
470
|
retained.splice(index, 1);
|
|
471
471
|
}
|
|
472
|
-
const digest =
|
|
472
|
+
const digest = AccountConfig.getSignPayload({
|
|
473
473
|
account: operation.account,
|
|
474
474
|
config: operation.config,
|
|
475
475
|
payload: KeyAuthorization_.getSignPayload(authorization),
|
|
@@ -498,7 +498,7 @@ function isWeightReachable(weights, signatureCount, weight) {
|
|
|
498
498
|
return reachable[signatureCount].has(weight);
|
|
499
499
|
}
|
|
500
500
|
function assertOperationHash(operation, payload) {
|
|
501
|
-
const hash =
|
|
501
|
+
const hash = AccountConfig.getSignPayload({
|
|
502
502
|
account: operation.account,
|
|
503
503
|
config: operation.config,
|
|
504
504
|
payload,
|
|
@@ -515,9 +515,9 @@ function assertInteger(value, field) {
|
|
|
515
515
|
});
|
|
516
516
|
}
|
|
517
517
|
function sameConfig(a, b) {
|
|
518
|
-
const configA =
|
|
519
|
-
const configB =
|
|
520
|
-
return (Hex.isEqual(configA.salt ??
|
|
518
|
+
const configA = AccountConfig.from(a);
|
|
519
|
+
const configB = AccountConfig.from(b);
|
|
520
|
+
return (Hex.isEqual(configA.salt ?? AccountConfig.zeroSalt, configB.salt ?? AccountConfig.zeroSalt) &&
|
|
521
521
|
configA.threshold === configB.threshold &&
|
|
522
522
|
configA.version === configB.version &&
|
|
523
523
|
configA.owners.length === configB.owners.length &&
|
|
@@ -530,13 +530,13 @@ function sameConfig(a, b) {
|
|
|
530
530
|
class InvalidApprovalError extends Errors.BaseError {
|
|
531
531
|
constructor(options = {}) {
|
|
532
532
|
super(options.reason
|
|
533
|
-
? `Invalid
|
|
534
|
-
: 'Invalid
|
|
533
|
+
? `Invalid operation approval: ${options.reason}.`
|
|
534
|
+
: 'Invalid operation approval.', { cause: options.cause });
|
|
535
535
|
Object.defineProperty(this, "name", {
|
|
536
536
|
enumerable: true,
|
|
537
537
|
configurable: true,
|
|
538
538
|
writable: true,
|
|
539
|
-
value: '
|
|
539
|
+
value: 'AccountOperation.InvalidApprovalError'
|
|
540
540
|
});
|
|
541
541
|
}
|
|
542
542
|
}
|
|
@@ -544,15 +544,15 @@ exports.InvalidApprovalError = InvalidApprovalError;
|
|
|
544
544
|
class InvalidOperationError extends Errors.BaseError {
|
|
545
545
|
constructor(options = {}) {
|
|
546
546
|
super(options.reason
|
|
547
|
-
? `Invalid
|
|
548
|
-
: 'Invalid
|
|
547
|
+
? `Invalid account operation: ${options.reason}.`
|
|
548
|
+
: 'Invalid account operation.', { cause: options.cause });
|
|
549
549
|
Object.defineProperty(this, "name", {
|
|
550
550
|
enumerable: true,
|
|
551
551
|
configurable: true,
|
|
552
552
|
writable: true,
|
|
553
|
-
value: '
|
|
553
|
+
value: 'AccountOperation.InvalidOperationError'
|
|
554
554
|
});
|
|
555
555
|
}
|
|
556
556
|
}
|
|
557
557
|
exports.InvalidOperationError = InvalidOperationError;
|
|
558
|
-
//# sourceMappingURL=
|
|
558
|
+
//# sourceMappingURL=AccountOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountOperation.js","sourceRoot":"","sources":["../../tempo/AccountOperation.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,15 +7,23 @@ const Address = require("../core/Address.js");
|
|
|
7
7
|
const Errors = require("../core/Errors.js");
|
|
8
8
|
const Hex = require("../core/Hex.js");
|
|
9
9
|
const Rlp = require("../core/Rlp.js");
|
|
10
|
-
const
|
|
10
|
+
const AccountConfig = require("./AccountConfig.js");
|
|
11
11
|
function fromRpc(spec) {
|
|
12
|
-
const { approvals, config } = spec;
|
|
12
|
+
const { approvals, config, signer } = spec;
|
|
13
13
|
assertApprovals(approvals);
|
|
14
|
-
|
|
14
|
+
if (signer !== undefined)
|
|
15
|
+
Address.assert(signer);
|
|
16
|
+
return {
|
|
17
|
+
approvals,
|
|
18
|
+
config: deserializeConfig(config),
|
|
19
|
+
...(signer !== undefined ? { signer } : {}),
|
|
20
|
+
};
|
|
15
21
|
}
|
|
16
22
|
function toRpc(spec) {
|
|
17
|
-
const { approvals, config } = spec;
|
|
23
|
+
const { approvals, config, signer } = spec;
|
|
18
24
|
assertApprovals(approvals);
|
|
25
|
+
if (signer !== undefined)
|
|
26
|
+
Address.assert(signer);
|
|
19
27
|
return {
|
|
20
28
|
approvals: approvals.map(({ keyData, keyType, owner }) => ({
|
|
21
29
|
...(keyData !== undefined ? { keyData: shimKeyData(keyData) } : {}),
|
|
@@ -23,6 +31,7 @@ function toRpc(spec) {
|
|
|
23
31
|
owner,
|
|
24
32
|
})),
|
|
25
33
|
config: serializeConfig(config),
|
|
34
|
+
...(signer !== undefined ? { signer } : {}),
|
|
26
35
|
};
|
|
27
36
|
}
|
|
28
37
|
function assertApprovals(approvals) {
|
|
@@ -33,9 +42,9 @@ function assertApprovals(approvals) {
|
|
|
33
42
|
throw new InvalidSimulationError({
|
|
34
43
|
reason: 'only untagged primitive owner approvals are allowed',
|
|
35
44
|
});
|
|
36
|
-
if (approvals.length >
|
|
45
|
+
if (approvals.length > AccountConfig.maxSignatures)
|
|
37
46
|
throw new InvalidSimulationError({
|
|
38
|
-
reason: `approval count exceeds ${
|
|
47
|
+
reason: `approval count exceeds ${AccountConfig.maxSignatures}`,
|
|
39
48
|
});
|
|
40
49
|
}
|
|
41
50
|
function deserializeConfig(config) {
|
|
@@ -57,31 +66,31 @@ function deserializeConfig(config) {
|
|
|
57
66
|
!Address.validate(owner[0]) ||
|
|
58
67
|
Hex.size(owner[1]) > 1))
|
|
59
68
|
throw new InvalidSimulationError({ reason: 'invalid config encoding' });
|
|
60
|
-
const value =
|
|
61
|
-
|
|
69
|
+
const value = AccountConfig.fromTuple(tuple);
|
|
70
|
+
AccountConfig.assert(value);
|
|
62
71
|
if (!Hex.isEqual(config, serializeConfig(value)))
|
|
63
72
|
throw new InvalidSimulationError({ reason: 'noncanonical config encoding' });
|
|
64
73
|
return value;
|
|
65
74
|
}
|
|
66
75
|
function serializeConfig(config) {
|
|
67
|
-
return Rlp.fromHex(
|
|
76
|
+
return Rlp.fromHex(AccountConfig.toTuple(config));
|
|
68
77
|
}
|
|
69
78
|
function shimKeyData(data) {
|
|
70
79
|
const size = Hex.size(data);
|
|
71
|
-
if (size
|
|
80
|
+
if (size === 1 || size === 2 || size === 4)
|
|
72
81
|
return data;
|
|
73
82
|
return Hex.fromNumber(size, { size: 2 });
|
|
74
83
|
}
|
|
75
84
|
class InvalidSimulationError extends Errors.BaseError {
|
|
76
85
|
constructor(options) {
|
|
77
|
-
super(`Invalid
|
|
86
|
+
super(`Invalid account simulation: ${options.reason}.`);
|
|
78
87
|
Object.defineProperty(this, "name", {
|
|
79
88
|
enumerable: true,
|
|
80
89
|
configurable: true,
|
|
81
90
|
writable: true,
|
|
82
|
-
value: '
|
|
91
|
+
value: 'AccountSimulation.InvalidSimulationError'
|
|
83
92
|
});
|
|
84
93
|
}
|
|
85
94
|
}
|
|
86
95
|
exports.InvalidSimulationError = InvalidSimulationError;
|
|
87
|
-
//# sourceMappingURL=
|
|
96
|
+
//# sourceMappingURL=AccountSimulation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountSimulation.js","sourceRoot":"","sources":["../../tempo/AccountSimulation.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,6 @@ const TempoAddress = require("./TempoAddress.js");
|
|
|
19
19
|
function from(authorization, options = {}) {
|
|
20
20
|
if ('keyId' in authorization)
|
|
21
21
|
return fromRpc(authorization);
|
|
22
|
-
assertAccountBinding(authorization.type, authorization.account);
|
|
23
22
|
const auth = authorization;
|
|
24
23
|
if (auth.witness !== undefined)
|
|
25
24
|
assertWitness(auth.witness);
|
|
@@ -69,7 +68,7 @@ function fromRpc(authorization) {
|
|
|
69
68
|
const witness = authorization.witness ?? undefined;
|
|
70
69
|
const isAdmin = authorization.isAdmin ?? undefined;
|
|
71
70
|
const account = authorization.account ?? undefined;
|
|
72
|
-
|
|
71
|
+
const type = keyType === 'configurableAccount' ? 'configurable' : keyType;
|
|
73
72
|
const signature = SignatureEnvelope.fromRpc(authorization.signature);
|
|
74
73
|
assertSignature(signature);
|
|
75
74
|
if (witness !== undefined)
|
|
@@ -100,9 +99,7 @@ function fromRpc(authorization) {
|
|
|
100
99
|
})),
|
|
101
100
|
...(scopes ? { scopes } : {}),
|
|
102
101
|
signature,
|
|
103
|
-
...(
|
|
104
|
-
? { account: account, type: keyType }
|
|
105
|
-
: { type: keyType }),
|
|
102
|
+
...(type === 'configurable' ? { account: account, type } : { type }),
|
|
106
103
|
...(witness !== undefined ? { witness } : {}),
|
|
107
104
|
...(account !== undefined ? { account } : {}),
|
|
108
105
|
...(isAdmin ? { isAdmin: true } : {}),
|
|
@@ -121,7 +118,7 @@ function fromTuple(tuple) {
|
|
|
121
118
|
case '0x02':
|
|
122
119
|
return 'webAuthn';
|
|
123
120
|
case '0x03':
|
|
124
|
-
return '
|
|
121
|
+
return 'configurable';
|
|
125
122
|
default:
|
|
126
123
|
throw new Error(`Invalid key type: ${keyType_hex}`);
|
|
127
124
|
}
|
|
@@ -170,11 +167,10 @@ function fromTuple(tuple) {
|
|
|
170
167
|
const account = isAbsent(rawAccount)
|
|
171
168
|
? undefined
|
|
172
169
|
: rawAccount;
|
|
173
|
-
assertAccountBinding(keyType, account);
|
|
174
170
|
const args = {
|
|
175
171
|
address: keyId,
|
|
176
172
|
chainId: chainId === '0x' ? 0n : Hex.toBigInt(chainId),
|
|
177
|
-
...(keyType === '
|
|
173
|
+
...(keyType === 'configurable'
|
|
178
174
|
? { account: account, type: keyType }
|
|
179
175
|
: { type: keyType }),
|
|
180
176
|
...(expiry !== undefined ? { expiry } : {}),
|
|
@@ -208,7 +204,6 @@ function serialize(authorization) {
|
|
|
208
204
|
return Rlp.fromHex(tuple);
|
|
209
205
|
}
|
|
210
206
|
function toRpc(authorization) {
|
|
211
|
-
assertAccountBinding(authorization.type, authorization.account);
|
|
212
207
|
const { address, scopes, chainId, expiry, limits, type, signature, witness, isAdmin, account, } = authorization;
|
|
213
208
|
assertSignature(signature);
|
|
214
209
|
if (witness !== undefined)
|
|
@@ -239,7 +234,9 @@ function toRpc(authorization) {
|
|
|
239
234
|
chainId: chainId === 0n ? '0x' : Hex.fromNumber(chainId),
|
|
240
235
|
expiry: typeof expiry === 'number' ? Hex.fromNumber(expiry) : null,
|
|
241
236
|
keyId: TempoAddress.resolve(address),
|
|
242
|
-
...(type === '
|
|
237
|
+
...(type === 'configurable'
|
|
238
|
+
? { account, keyType: 'configurableAccount' }
|
|
239
|
+
: { keyType: type }),
|
|
243
240
|
limits: limits?.map(({ token, limit, period }) => ({
|
|
244
241
|
token,
|
|
245
242
|
limit: Hex.fromNumber(limit),
|
|
@@ -253,7 +250,6 @@ function toRpc(authorization) {
|
|
|
253
250
|
};
|
|
254
251
|
}
|
|
255
252
|
function toTuple(authorization) {
|
|
256
|
-
assertAccountBinding(authorization.type, authorization.account);
|
|
257
253
|
const { address, chainId, scopes, expiry, limits, witness, isAdmin, account, } = authorization;
|
|
258
254
|
if (witness !== undefined)
|
|
259
255
|
assertWitness(witness);
|
|
@@ -272,7 +268,7 @@ function toTuple(authorization) {
|
|
|
272
268
|
return '0x01';
|
|
273
269
|
case 'webAuthn':
|
|
274
270
|
return '0x02';
|
|
275
|
-
case '
|
|
271
|
+
case 'configurable':
|
|
276
272
|
return '0x03';
|
|
277
273
|
default:
|
|
278
274
|
throw new Error(`Invalid key type: ${keyType}`);
|
|
@@ -361,10 +357,6 @@ function resolveSelector(selector) {
|
|
|
361
357
|
return selector;
|
|
362
358
|
return AbiItem.getSelector(selector);
|
|
363
359
|
}
|
|
364
|
-
function assertAccountBinding(type, account) {
|
|
365
|
-
if (type === 'multisig' && account == null)
|
|
366
|
-
throw new MissingAccountError();
|
|
367
|
-
}
|
|
368
360
|
function assertWitness(witness) {
|
|
369
361
|
if (Hex.size(witness) !== 32)
|
|
370
362
|
throw new InvalidWitnessSizeError(witness);
|
|
@@ -402,7 +394,7 @@ class InvalidAdminMarkerError extends Error {
|
|
|
402
394
|
exports.InvalidAdminMarkerError = InvalidAdminMarkerError;
|
|
403
395
|
class InvalidSignatureTypeError extends Error {
|
|
404
396
|
constructor(type) {
|
|
405
|
-
super(`Signature type \`${type}\` is invalid for key authorizations; expected \`secp256k1\`, \`p256\`, \`webAuthn\`, or \`
|
|
397
|
+
super(`Signature type \`${type}\` is invalid for key authorizations; expected \`secp256k1\`, \`p256\`, \`webAuthn\`, or \`configurable\`.`);
|
|
406
398
|
Object.defineProperty(this, "name", {
|
|
407
399
|
enumerable: true,
|
|
408
400
|
configurable: true,
|
|
@@ -414,7 +406,7 @@ class InvalidSignatureTypeError extends Error {
|
|
|
414
406
|
exports.InvalidSignatureTypeError = InvalidSignatureTypeError;
|
|
415
407
|
class MissingAccountError extends Error {
|
|
416
408
|
constructor() {
|
|
417
|
-
super('
|
|
409
|
+
super('Configurable account key grants require a parent account binding.');
|
|
418
410
|
Object.defineProperty(this, "name", {
|
|
419
411
|
enumerable: true,
|
|
420
412
|
configurable: true,
|