ox 0.14.36 → 0.14.37
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 +6 -0
- package/_cjs/core/Hash.js +1 -1
- package/_cjs/core/Hash.js.map +1 -1
- package/_cjs/tempo/MultisigOperation.js +400 -0
- package/_cjs/tempo/MultisigOperation.js.map +1 -0
- package/_cjs/tempo/index.js +2 -1
- package/_cjs/tempo/index.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/core/Hash.js +1 -1
- package/_esm/core/Hash.js.map +1 -1
- package/_esm/tempo/MultisigOperation.js +502 -0
- package/_esm/tempo/MultisigOperation.js.map +1 -0
- package/_esm/tempo/index.js +11 -1
- package/_esm/tempo/index.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/tempo/MultisigOperation.d.ts +153 -0
- package/_types/tempo/MultisigOperation.d.ts.map +1 -0
- package/_types/tempo/RpcSchemaTempo.d.ts +35 -0
- package/_types/tempo/RpcSchemaTempo.d.ts.map +1 -1
- package/_types/tempo/index.d.ts +11 -1
- package/_types/tempo/index.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/core/Hash.ts +1 -1
- package/package.json +16 -1
- package/tempo/MultisigOperation/package.json +6 -0
- package/tempo/MultisigOperation.test-d/package.json +6 -0
- package/tempo/MultisigOperation.test-d.ts +52 -0
- package/tempo/MultisigOperation.test.ts +1052 -0
- package/tempo/MultisigOperation.ts +720 -0
- package/tempo/RpcSchemaTempo.test-d/package.json +6 -0
- package/tempo/RpcSchemaTempo.test-d.ts +56 -0
- package/tempo/RpcSchemaTempo.ts +37 -0
- package/tempo/index.ts +11 -1
- package/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# ox
|
|
2
2
|
|
|
3
|
+
## 0.14.37
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#404](https://github.com/wevm/ox/pull/404) [`2398cf2`](https://github.com/wevm/ox/commit/2398cf2832363dcf240ed3ed32df47940d8bf276) Thanks [@jxom](https://github.com/jxom)! - Added `MultisigOperation` types, validation, and JSON-RPC conversion utilities.
|
|
8
|
+
|
|
3
9
|
## 0.14.36
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
package/_cjs/core/Hash.js
CHANGED
|
@@ -40,6 +40,6 @@ function sha256(value, options = {}) {
|
|
|
40
40
|
return Hex.fromBytes(bytes);
|
|
41
41
|
}
|
|
42
42
|
function validate(value) {
|
|
43
|
-
return
|
|
43
|
+
return value.length === 66 && Hex.validate(value, { strict: true });
|
|
44
44
|
}
|
|
45
45
|
//# sourceMappingURL=Hash.js.map
|
package/_cjs/core/Hash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hash.js","sourceRoot":"","sources":["../../core/Hash.ts"],"names":[],"mappings":";;AA6CA,8BAaC;AA8CD,0BAcC;AAmCD,8BAaC;AAmCD,wBAaC;AAmCD,4BAEC;AA3PD,6CAAyC;AACzC,uDAAsE;AACtE,6CAAkE;AAClE,iDAA6D;AAC7D,oCAAmC;AAEnC,gCAA+B;AAuC/B,SAAgB,SAAS,CAMvB,KAAoC,EACpC,UAAiC,EAAE;IAEnC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,IAAA,iBAAe,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AA8CD,SAAgB,OAAO,CAMrB,GAA0B,EAC1B,KAAoC,EACpC,UAA+B,EAAE;IAEjC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,IAAA,WAAI,EAAC,eAAY,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IACpE,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAmCD,SAAgB,SAAS,CAMvB,KAAoC,EACpC,UAAiC,EAAE;IAEnC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,IAAA,qBAAe,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAmCD,SAAgB,MAAM,CAMpB,KAAoC,EACpC,UAA8B,EAAE;IAEhC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,IAAA,eAAY,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7C,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAmCD,SAAgB,QAAQ,CAAC,KAAa;IACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"Hash.js","sourceRoot":"","sources":["../../core/Hash.ts"],"names":[],"mappings":";;AA6CA,8BAaC;AA8CD,0BAcC;AAmCD,8BAaC;AAmCD,wBAaC;AAmCD,4BAEC;AA3PD,6CAAyC;AACzC,uDAAsE;AACtE,6CAAkE;AAClE,iDAA6D;AAC7D,oCAAmC;AAEnC,gCAA+B;AAuC/B,SAAgB,SAAS,CAMvB,KAAoC,EACpC,UAAiC,EAAE;IAEnC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,IAAA,iBAAe,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AA8CD,SAAgB,OAAO,CAMrB,GAA0B,EAC1B,KAAoC,EACpC,UAA+B,EAAE;IAEjC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,IAAA,WAAI,EAAC,eAAY,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IACpE,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAmCD,SAAgB,SAAS,CAMvB,KAAoC,EACpC,UAAiC,EAAE;IAEnC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,IAAA,qBAAe,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAmCD,SAAgB,MAAM,CAMpB,KAAoC,EACpC,UAA8B,EAAE;IAEhC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,IAAA,eAAY,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7C,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAmCD,SAAgB,QAAQ,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;AACrE,CAAC"}
|
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidOperationError = void 0;
|
|
4
|
+
exports.from = from;
|
|
5
|
+
exports.fromRpc = fromRpc;
|
|
6
|
+
exports.toRpc = toRpc;
|
|
7
|
+
const Address = require("../core/Address.js");
|
|
8
|
+
const Errors = require("../core/Errors.js");
|
|
9
|
+
const Hash = require("../core/Hash.js");
|
|
10
|
+
const Hex = require("../core/Hex.js");
|
|
11
|
+
const KeyAuthorization_ = require("./KeyAuthorization.js");
|
|
12
|
+
const MultisigConfig = require("./MultisigConfig.js");
|
|
13
|
+
const SignatureEnvelope = require("./SignatureEnvelope.js");
|
|
14
|
+
const TxEnvelopeTempo = require("./TxEnvelopeTempo.js");
|
|
15
|
+
const maxConfigVersion = 2n ** 64n - 1n;
|
|
16
|
+
function from(operation) {
|
|
17
|
+
try {
|
|
18
|
+
const config = MultisigConfig.from(operation.config);
|
|
19
|
+
if (typeof config.threshold !== 'number' ||
|
|
20
|
+
config.owners.some((owner) => typeof owner.weight !== 'number'))
|
|
21
|
+
throw new InvalidOperationError({
|
|
22
|
+
reason: 'config threshold and owner weights must be numbers',
|
|
23
|
+
});
|
|
24
|
+
assertBase(operation, config);
|
|
25
|
+
if (operation.type === 'transaction')
|
|
26
|
+
assertTransaction(operation);
|
|
27
|
+
else if (operation.type === 'keyAuthorization')
|
|
28
|
+
assertKeyAuthorization(operation, config);
|
|
29
|
+
else
|
|
30
|
+
throw new InvalidOperationError({ reason: 'unknown operation type' });
|
|
31
|
+
return { ...operation, config };
|
|
32
|
+
}
|
|
33
|
+
catch (cause) {
|
|
34
|
+
if (cause instanceof InvalidOperationError)
|
|
35
|
+
throw cause;
|
|
36
|
+
throw new InvalidOperationError({ cause });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function fromRpc(operation) {
|
|
40
|
+
try {
|
|
41
|
+
if (typeof operation.configVersion !== 'string' ||
|
|
42
|
+
!Hex.validate(operation.configVersion))
|
|
43
|
+
throw new InvalidOperationError({
|
|
44
|
+
reason: 'configVersion must be a hexadecimal quantity',
|
|
45
|
+
});
|
|
46
|
+
const configVersion = Hex.toBigInt(operation.configVersion);
|
|
47
|
+
if (Hex.fromNumber(configVersion) !== operation.configVersion)
|
|
48
|
+
throw new InvalidOperationError({
|
|
49
|
+
reason: 'configVersion must use canonical quantity encoding',
|
|
50
|
+
});
|
|
51
|
+
return from({ ...operation, configVersion });
|
|
52
|
+
}
|
|
53
|
+
catch (cause) {
|
|
54
|
+
if (cause instanceof InvalidOperationError)
|
|
55
|
+
throw cause;
|
|
56
|
+
throw new InvalidOperationError({ cause });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function toRpc(operation) {
|
|
60
|
+
const value = from(operation);
|
|
61
|
+
return {
|
|
62
|
+
...value,
|
|
63
|
+
configVersion: Hex.fromNumber(value.configVersion),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function assertBase(operation, config) {
|
|
67
|
+
if (!Address.validate(operation.account))
|
|
68
|
+
throw new InvalidOperationError({ reason: 'account is invalid' });
|
|
69
|
+
if (Hex.toBigInt(operation.account) === 0n)
|
|
70
|
+
throw new InvalidOperationError({ reason: 'account cannot be zero' });
|
|
71
|
+
if (!Hash.validate(operation.hash))
|
|
72
|
+
throw new InvalidOperationError({ reason: 'hash is invalid' });
|
|
73
|
+
if (typeof operation.init !== 'boolean')
|
|
74
|
+
throw new InvalidOperationError({ reason: 'init must be a boolean' });
|
|
75
|
+
if (typeof operation.configVersion !== 'bigint' ||
|
|
76
|
+
operation.configVersion < 0n ||
|
|
77
|
+
operation.configVersion > maxConfigVersion)
|
|
78
|
+
throw new InvalidOperationError({
|
|
79
|
+
reason: 'configVersion must be an unsigned 64-bit integer',
|
|
80
|
+
});
|
|
81
|
+
assertInteger(operation.createdAt, 'createdAt');
|
|
82
|
+
assertInteger(operation.updatedAt, 'updatedAt');
|
|
83
|
+
if (operation.updatedAt < operation.createdAt)
|
|
84
|
+
throw new InvalidOperationError({
|
|
85
|
+
reason: 'updatedAt cannot precede createdAt',
|
|
86
|
+
});
|
|
87
|
+
assertInteger(operation.signatureCount, 'signatureCount');
|
|
88
|
+
assertInteger(operation.threshold, 'threshold');
|
|
89
|
+
assertInteger(operation.weight, 'weight');
|
|
90
|
+
if (operation.threshold !== Number(config.threshold))
|
|
91
|
+
throw new InvalidOperationError({
|
|
92
|
+
reason: 'threshold must equal config.threshold',
|
|
93
|
+
});
|
|
94
|
+
if (operation.weight > 0xff)
|
|
95
|
+
throw new InvalidOperationError({ reason: 'weight exceeds u8 max' });
|
|
96
|
+
if (operation.signatureCount > MultisigConfig.maxSignatures)
|
|
97
|
+
throw new InvalidOperationError({ reason: 'too many selected signatures' });
|
|
98
|
+
if (!Array.isArray(operation.approvals))
|
|
99
|
+
throw new InvalidOperationError({ reason: 'approvals must be an array' });
|
|
100
|
+
if (operation.approvals.length > config.owners.length)
|
|
101
|
+
throw new InvalidOperationError({ reason: 'too many retained approvals' });
|
|
102
|
+
if (operation.signatureCount > operation.approvals.length)
|
|
103
|
+
throw new InvalidOperationError({
|
|
104
|
+
reason: 'signatureCount exceeds retained approvals',
|
|
105
|
+
});
|
|
106
|
+
if ((operation.signatureCount === 0) !== (operation.weight === 0))
|
|
107
|
+
throw new InvalidOperationError({
|
|
108
|
+
reason: 'signatureCount and weight must both be zero or nonzero',
|
|
109
|
+
});
|
|
110
|
+
const owners = new Map(config.owners.map((owner) => [
|
|
111
|
+
owner.owner.toLowerCase(),
|
|
112
|
+
Number(owner.weight),
|
|
113
|
+
]));
|
|
114
|
+
const approvalWeights = [];
|
|
115
|
+
const seen = new Set();
|
|
116
|
+
for (const approval of operation.approvals) {
|
|
117
|
+
if (typeof approval !== 'string' ||
|
|
118
|
+
!Hex.validate(approval, { strict: true }))
|
|
119
|
+
throw new InvalidOperationError({ reason: 'approval is invalid' });
|
|
120
|
+
const signature = assertApproval(operation.account, approval);
|
|
121
|
+
const address = SignatureEnvelope.extractAddress({
|
|
122
|
+
payload: operation.hash,
|
|
123
|
+
signature,
|
|
124
|
+
});
|
|
125
|
+
const key = address.toLowerCase();
|
|
126
|
+
const weight = owners.get(key);
|
|
127
|
+
if (weight === undefined)
|
|
128
|
+
throw new InvalidOperationError({
|
|
129
|
+
reason: 'approval is from a non-owner',
|
|
130
|
+
});
|
|
131
|
+
if (seen.has(key))
|
|
132
|
+
throw new InvalidOperationError({
|
|
133
|
+
reason: operation.type === 'keyAuthorization'
|
|
134
|
+
? 'key authorization contains duplicate owner approvals'
|
|
135
|
+
: 'duplicate owner approval',
|
|
136
|
+
});
|
|
137
|
+
seen.add(key);
|
|
138
|
+
approvalWeights.push(weight);
|
|
139
|
+
}
|
|
140
|
+
if (!isWeightReachable(approvalWeights, operation.signatureCount, operation.weight))
|
|
141
|
+
throw new InvalidOperationError({
|
|
142
|
+
reason: 'weight is not reachable by signatureCount retained owner approvals',
|
|
143
|
+
});
|
|
144
|
+
if (operation.init) {
|
|
145
|
+
if (operation.configVersion !== 0n)
|
|
146
|
+
throw new InvalidOperationError({
|
|
147
|
+
reason: 'bootstrap operations must use config version zero',
|
|
148
|
+
});
|
|
149
|
+
if (MultisigConfig.getAddress(config).toLowerCase() !==
|
|
150
|
+
operation.account.toLowerCase())
|
|
151
|
+
throw new InvalidOperationError({
|
|
152
|
+
reason: 'bootstrap config does not derive the operation account',
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function assertTransaction(operation) {
|
|
157
|
+
if ('keyAuthorization' in operation &&
|
|
158
|
+
operation.keyAuthorization !== undefined)
|
|
159
|
+
throw new InvalidOperationError({
|
|
160
|
+
reason: 'transaction operations cannot contain keyAuthorization',
|
|
161
|
+
});
|
|
162
|
+
const expiresAt = operation.expiresAt;
|
|
163
|
+
const submissionId = operation.submissionId;
|
|
164
|
+
const transactionHash = operation.transactionHash;
|
|
165
|
+
if (operation.status === 'pending') {
|
|
166
|
+
if (expiresAt !== undefined ||
|
|
167
|
+
submissionId !== undefined ||
|
|
168
|
+
transactionHash !== undefined)
|
|
169
|
+
throw new InvalidOperationError({
|
|
170
|
+
reason: 'pending transactions cannot contain submission fields',
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
else if (operation.status === 'submitting') {
|
|
174
|
+
assertInteger(expiresAt, 'expiresAt');
|
|
175
|
+
if (!Hash.validate(submissionId ?? ''))
|
|
176
|
+
throw new InvalidOperationError({ reason: 'submissionId is invalid' });
|
|
177
|
+
if (submissionId.toLowerCase() === operation.hash.toLowerCase())
|
|
178
|
+
throw new InvalidOperationError({
|
|
179
|
+
reason: 'submissionId must differ from the operation hash',
|
|
180
|
+
});
|
|
181
|
+
if (transactionHash !== undefined)
|
|
182
|
+
throw new InvalidOperationError({
|
|
183
|
+
reason: 'submitting transactions cannot contain transactionHash',
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
else if (operation.status === 'success') {
|
|
187
|
+
if (!Hash.validate(transactionHash ?? ''))
|
|
188
|
+
throw new InvalidOperationError({ reason: 'transactionHash is invalid' });
|
|
189
|
+
if (expiresAt !== undefined || submissionId !== undefined)
|
|
190
|
+
throw new InvalidOperationError({
|
|
191
|
+
reason: 'successful transactions cannot contain submission fields',
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
else
|
|
195
|
+
throw new InvalidOperationError({ reason: 'invalid transaction status' });
|
|
196
|
+
if (operation.status !== 'pending' &&
|
|
197
|
+
(operation.weight < operation.threshold || operation.signatureCount === 0))
|
|
198
|
+
throw new InvalidOperationError({
|
|
199
|
+
reason: 'submitted transactions must have quorum',
|
|
200
|
+
});
|
|
201
|
+
if (typeof operation.transaction !== 'string')
|
|
202
|
+
throw new InvalidOperationError({ reason: 'transaction is invalid' });
|
|
203
|
+
const transaction = TxEnvelopeTempo.deserialize(operation.transaction);
|
|
204
|
+
if (transaction.signature)
|
|
205
|
+
throw new InvalidOperationError({
|
|
206
|
+
reason: 'transaction must not contain an outer sender signature',
|
|
207
|
+
});
|
|
208
|
+
if (transaction.from &&
|
|
209
|
+
transaction.from.toLowerCase() !== operation.account.toLowerCase())
|
|
210
|
+
throw new InvalidOperationError({
|
|
211
|
+
reason: 'transaction sender does not match the operation account',
|
|
212
|
+
});
|
|
213
|
+
assertOperationHash(operation, TxEnvelopeTempo.getSignPayload(transaction));
|
|
214
|
+
const feePayer = operation.transaction.startsWith(TxEnvelopeTempo.feePayerMagic);
|
|
215
|
+
const serialized = TxEnvelopeTempo.serialize(transaction, feePayer
|
|
216
|
+
? transaction.from
|
|
217
|
+
? { format: 'feePayer', sender: transaction.from }
|
|
218
|
+
: { format: 'feePayer' }
|
|
219
|
+
: {});
|
|
220
|
+
if (serialized.toLowerCase() !== operation.transaction.toLowerCase())
|
|
221
|
+
throw new InvalidOperationError({
|
|
222
|
+
reason: 'transaction is not canonically serialized',
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
function assertKeyAuthorization(operation, config) {
|
|
226
|
+
const transactionFields = operation;
|
|
227
|
+
if (transactionFields.expiresAt !== undefined ||
|
|
228
|
+
transactionFields.submissionId !== undefined ||
|
|
229
|
+
transactionFields.transaction !== undefined ||
|
|
230
|
+
transactionFields.transactionHash !== undefined)
|
|
231
|
+
throw new InvalidOperationError({
|
|
232
|
+
reason: 'key authorization operations cannot contain transaction fields',
|
|
233
|
+
});
|
|
234
|
+
if (operation.status !== 'pending' && operation.status !== 'success')
|
|
235
|
+
throw new InvalidOperationError({
|
|
236
|
+
reason: 'invalid key authorization status',
|
|
237
|
+
});
|
|
238
|
+
if (operation.status === 'success' &&
|
|
239
|
+
(operation.weight < operation.threshold || operation.signatureCount === 0))
|
|
240
|
+
throw new InvalidOperationError({
|
|
241
|
+
reason: 'successful key authorizations must have quorum',
|
|
242
|
+
});
|
|
243
|
+
if (operation.status === 'pending' && operation.weight >= operation.threshold)
|
|
244
|
+
throw new InvalidOperationError({
|
|
245
|
+
reason: 'pending key authorizations cannot have quorum',
|
|
246
|
+
});
|
|
247
|
+
if (typeof operation.keyAuthorization !== 'string')
|
|
248
|
+
throw new InvalidOperationError({ reason: 'keyAuthorization is invalid' });
|
|
249
|
+
const authorization = KeyAuthorization_.deserialize(operation.keyAuthorization);
|
|
250
|
+
if (!authorization.account ||
|
|
251
|
+
authorization.account.toLowerCase() !== operation.account.toLowerCase())
|
|
252
|
+
throw new InvalidOperationError({
|
|
253
|
+
reason: 'key authorization account does not match the operation account',
|
|
254
|
+
});
|
|
255
|
+
const signature = authorization.signature;
|
|
256
|
+
if (operation.status === 'pending' && signature)
|
|
257
|
+
throw new InvalidOperationError({
|
|
258
|
+
reason: 'pending key authorizations must be unsigned',
|
|
259
|
+
});
|
|
260
|
+
if (operation.status === 'success') {
|
|
261
|
+
if (signature?.type !== 'multisig')
|
|
262
|
+
throw new InvalidOperationError({
|
|
263
|
+
reason: 'successful key authorizations require a multisig signature',
|
|
264
|
+
});
|
|
265
|
+
if (signature.account.toLowerCase() !== operation.account.toLowerCase())
|
|
266
|
+
throw new InvalidOperationError({
|
|
267
|
+
reason: 'key authorization signature account does not match',
|
|
268
|
+
});
|
|
269
|
+
if (signature.signatures.length !== operation.signatureCount)
|
|
270
|
+
throw new InvalidOperationError({
|
|
271
|
+
reason: 'key authorization signatureCount does not match its signature',
|
|
272
|
+
});
|
|
273
|
+
assertSelectedApprovals(operation, signature.signatures, authorization);
|
|
274
|
+
if (!!signature.init !== operation.init)
|
|
275
|
+
throw new InvalidOperationError({
|
|
276
|
+
reason: 'key authorization bootstrap state does not match',
|
|
277
|
+
});
|
|
278
|
+
if (signature.init && !sameConfig(signature.init, config))
|
|
279
|
+
throw new InvalidOperationError({
|
|
280
|
+
reason: 'key authorization bootstrap config does not match',
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
assertOperationHash(operation, KeyAuthorization_.getSignPayload(authorization));
|
|
284
|
+
if (KeyAuthorization_.serialize(authorization).toLowerCase() !==
|
|
285
|
+
operation.keyAuthorization.toLowerCase())
|
|
286
|
+
throw new InvalidOperationError({
|
|
287
|
+
reason: 'keyAuthorization is not canonically serialized',
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
function assertApproval(account, serialized) {
|
|
291
|
+
const approval = SignatureEnvelope.deserialize(serialized);
|
|
292
|
+
SignatureEnvelope.assert({
|
|
293
|
+
account,
|
|
294
|
+
signatures: [approval],
|
|
295
|
+
type: 'multisig',
|
|
296
|
+
});
|
|
297
|
+
if (SignatureEnvelope.serialize(approval).toLowerCase() !==
|
|
298
|
+
serialized.toLowerCase())
|
|
299
|
+
throw new InvalidOperationError({ reason: 'approval is not canonical' });
|
|
300
|
+
return approval;
|
|
301
|
+
}
|
|
302
|
+
function assertSelectedApprovals(operation, selected, authorization) {
|
|
303
|
+
const retained = operation.approvals.map((approval) => SignatureEnvelope.deserialize(approval));
|
|
304
|
+
for (const approval of selected) {
|
|
305
|
+
const index = retained.findIndex((candidate) => includesApproval(candidate, approval));
|
|
306
|
+
if (index === -1)
|
|
307
|
+
throw new InvalidOperationError({
|
|
308
|
+
reason: 'key authorization signature is not a retained approval',
|
|
309
|
+
});
|
|
310
|
+
retained.splice(index, 1);
|
|
311
|
+
}
|
|
312
|
+
const digest = MultisigConfig.getSignPayload({
|
|
313
|
+
account: operation.account,
|
|
314
|
+
payload: KeyAuthorization_.getSignPayload(authorization),
|
|
315
|
+
version: operation.configVersion,
|
|
316
|
+
});
|
|
317
|
+
const addresses = selected.map((signature) => SignatureEnvelope.extractAddress({ payload: digest, signature }));
|
|
318
|
+
for (let index = 1; index < addresses.length; index++) {
|
|
319
|
+
const previous = Hex.toBigInt(addresses[index - 1]);
|
|
320
|
+
const current = Hex.toBigInt(addresses[index]);
|
|
321
|
+
if (previous === current)
|
|
322
|
+
throw new InvalidOperationError({
|
|
323
|
+
reason: 'key authorization contains duplicate owner approvals',
|
|
324
|
+
});
|
|
325
|
+
if (previous > current)
|
|
326
|
+
throw new InvalidOperationError({
|
|
327
|
+
reason: 'key authorization approvals are not canonically ordered',
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
function includesApproval(retained, selected) {
|
|
332
|
+
if (retained.type !== 'multisig' || selected.type !== 'multisig')
|
|
333
|
+
return (SignatureEnvelope.serialize(retained).toLowerCase() ===
|
|
334
|
+
SignatureEnvelope.serialize(selected).toLowerCase());
|
|
335
|
+
if (retained.account.toLowerCase() !== selected.account.toLowerCase())
|
|
336
|
+
return false;
|
|
337
|
+
let index = 0;
|
|
338
|
+
for (const approval of selected.signatures) {
|
|
339
|
+
while (index < retained.signatures.length &&
|
|
340
|
+
!includesApproval(retained.signatures[index], approval))
|
|
341
|
+
index++;
|
|
342
|
+
if (index === retained.signatures.length)
|
|
343
|
+
return false;
|
|
344
|
+
index++;
|
|
345
|
+
}
|
|
346
|
+
return true;
|
|
347
|
+
}
|
|
348
|
+
function isWeightReachable(weights, signatureCount, weight) {
|
|
349
|
+
const reachable = Array.from({ length: signatureCount + 1 }, () => new Set());
|
|
350
|
+
reachable[0].add(0);
|
|
351
|
+
for (const ownerWeight of weights)
|
|
352
|
+
for (let count = signatureCount; count > 0; count--)
|
|
353
|
+
for (const current of reachable[count - 1])
|
|
354
|
+
reachable[count].add(current + ownerWeight);
|
|
355
|
+
return reachable[signatureCount].has(weight);
|
|
356
|
+
}
|
|
357
|
+
function assertOperationHash(operation, payload) {
|
|
358
|
+
const hash = MultisigConfig.getSignPayload({
|
|
359
|
+
account: operation.account,
|
|
360
|
+
payload,
|
|
361
|
+
version: operation.configVersion,
|
|
362
|
+
});
|
|
363
|
+
if (hash.toLowerCase() !== operation.hash.toLowerCase())
|
|
364
|
+
throw new InvalidOperationError({
|
|
365
|
+
reason: 'hash does not match the operation payload',
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
function assertInteger(value, field) {
|
|
369
|
+
if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0)
|
|
370
|
+
throw new InvalidOperationError({
|
|
371
|
+
reason: `${field} must be a nonnegative safe integer`,
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
function sameConfig(a, b) {
|
|
375
|
+
const configA = MultisigConfig.from(a);
|
|
376
|
+
const configB = MultisigConfig.from(b);
|
|
377
|
+
return (Hex.isEqual(configA.salt ?? MultisigConfig.zeroSalt, configB.salt ?? MultisigConfig.zeroSalt) &&
|
|
378
|
+
configA.threshold === configB.threshold &&
|
|
379
|
+
configA.owners.length === configB.owners.length &&
|
|
380
|
+
configA.owners.every((owner, index) => {
|
|
381
|
+
const other = configB.owners[index];
|
|
382
|
+
return (Address.isEqual(owner.owner, other.owner) &&
|
|
383
|
+
owner.weight === other.weight);
|
|
384
|
+
}));
|
|
385
|
+
}
|
|
386
|
+
class InvalidOperationError extends Errors.BaseError {
|
|
387
|
+
constructor(options = {}) {
|
|
388
|
+
super(options.reason
|
|
389
|
+
? `Invalid multisig operation: ${options.reason}.`
|
|
390
|
+
: 'Invalid multisig operation.', { cause: options.cause });
|
|
391
|
+
Object.defineProperty(this, "name", {
|
|
392
|
+
enumerable: true,
|
|
393
|
+
configurable: true,
|
|
394
|
+
writable: true,
|
|
395
|
+
value: 'MultisigOperation.InvalidOperationError'
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
exports.InvalidOperationError = InvalidOperationError;
|
|
400
|
+
//# sourceMappingURL=MultisigOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultisigOperation.js","sourceRoot":"","sources":["../../tempo/MultisigOperation.ts"],"names":[],"mappings":"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"}
|
package/_cjs/tempo/index.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ZoneRpcAuthentication = exports.ZoneId = exports.VirtualMaster = exports.VirtualAddress = exports.TxEnvelopeTempo = exports.TransactionRequest = exports.TransactionReceipt = exports.Transaction = exports.TokenRole = exports.TokenId = exports.Tick = exports.TempoAddress = exports.SignatureEnvelope = exports.RpcSchemaTempo = exports.ReceivePolicyReceipt = exports.PoolId = exports.Period = exports.MultisigConfig = exports.KeyAuthorization = exports.EarnShares = exports.Channel = exports.AuthorizationTempo = void 0;
|
|
3
|
+
exports.ZoneRpcAuthentication = exports.ZoneId = exports.VirtualMaster = exports.VirtualAddress = exports.TxEnvelopeTempo = exports.TransactionRequest = exports.TransactionReceipt = exports.Transaction = exports.TokenRole = exports.TokenId = exports.Tick = exports.TempoAddress = exports.SignatureEnvelope = exports.RpcSchemaTempo = exports.ReceivePolicyReceipt = exports.PoolId = exports.Period = exports.MultisigOperation = exports.MultisigConfig = exports.KeyAuthorization = exports.EarnShares = exports.Channel = exports.AuthorizationTempo = void 0;
|
|
4
4
|
exports.AuthorizationTempo = require("./AuthorizationTempo.js");
|
|
5
5
|
exports.Channel = require("./Channel.js");
|
|
6
6
|
exports.EarnShares = require("./EarnShares.js");
|
|
7
7
|
exports.KeyAuthorization = require("./KeyAuthorization.js");
|
|
8
8
|
exports.MultisigConfig = require("./MultisigConfig.js");
|
|
9
|
+
exports.MultisigOperation = require("./MultisigOperation.js");
|
|
9
10
|
exports.Period = require("./Period.js");
|
|
10
11
|
exports.PoolId = require("./PoolId.js");
|
|
11
12
|
exports.ReceivePolicyReceipt = require("./ReceivePolicyReceipt.js");
|
package/_cjs/tempo/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":";;;AAoCA,gEAA6D;AA2B7D,0CAAuC;AAsBvC,gDAA6C;AAwC7C,4DAAyD;AA0BzD,wDAAqD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":";;;AAoCA,gEAA6D;AA2B7D,0CAAuC;AAsBvC,gDAA6C;AAwC7C,4DAAyD;AA0BzD,wDAAqD;AASrD,8DAA2D;AA6B3D,wCAAqC;AAsBrC,wCAAqC;AAsBrC,oEAAiE;AAqBjE,wDAAqD;AAuBrD,8DAA2D;AAmB3D,oDAAiD;AAoBjD,oCAAiC;AAqBjC,0CAAuC;AAkBvC,8CAA2C;AAkD3C,kDAA+C;AAuB/C,gEAA6D;AAqB7D,gEAA6D;AA6B7D,0DAAuD;AA4BvD,wDAAqD;AAyBrD,sDAAmD;AAoBnD,wCAAqC;AAmCrC,sEAAmE"}
|
package/_cjs/version.js
CHANGED
package/_esm/core/Hash.js
CHANGED
|
@@ -149,6 +149,6 @@ export function sha256(value, options = {}) {
|
|
|
149
149
|
* @returns Whether the value is a valid hash.
|
|
150
150
|
*/
|
|
151
151
|
export function validate(value) {
|
|
152
|
-
return
|
|
152
|
+
return value.length === 66 && Hex.validate(value, { strict: true });
|
|
153
153
|
}
|
|
154
154
|
//# sourceMappingURL=Hash.js.map
|
package/_esm/core/Hash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hash.js","sourceRoot":"","sources":["../../core/Hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,SAAS,CAMvB,KAAoC,EACpC,UAAiC,EAAE;IAEnC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,OAAO,CAMrB,GAA0B,EAC1B,KAAoC,EACpC,UAA+B,EAAE;IAEjC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IACpE,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,SAAS,CAMvB,KAAoC,EACpC,UAAiC,EAAE;IAEnC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,MAAM,CAMpB,KAAoC,EACpC,UAA8B,EAAE;IAEhC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7C,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"Hash.js","sourceRoot":"","sources":["../../core/Hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,SAAS,CAMvB,KAAoC,EACpC,UAAiC,EAAE;IAEnC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,OAAO,CAMrB,GAA0B,EAC1B,KAAoC,EACpC,UAA+B,EAAE;IAEjC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IACpE,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,SAAS,CAMvB,KAAoC,EACpC,UAAiC,EAAE;IAEnC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,MAAM,CAMpB,KAAoC,EACpC,UAA8B,EAAE;IAEhC,MAAM,EAAE,EAAE,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAA;IACpE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7C,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAc,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;AACtC,CAAC;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,OAAO,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;AACrE,CAAC"}
|