ox 1.6.0 → 1.6.2

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # ox
2
2
 
3
+ ## 1.6.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#385](https://github.com/wevm/ox/pull/385) [`8100dbf`](https://github.com/wevm/ox/commit/8100dbf8d4835d27b241d0078616e8852b2a77f2) Thanks [@struong](https://github.com/struong)! - Fixed `WithdrawalSenderTag.from` to include the Zone withdrawal fallback nonce.
8
+
9
+ ## 1.6.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [#365](https://github.com/wevm/ox/pull/365) [`c8bcc7e`](https://github.com/wevm/ox/commit/c8bcc7e7b85bf319f8acdbf386d303314cbabbff) Thanks [@RezaRahemtola](https://github.com/RezaRahemtola)! - Fixed `Json.stringify` throwing `TypeError` when a replacer returned a `bigint` unchanged.
14
+
3
15
  ## 1.6.0
4
16
 
5
17
  ### Minor Changes
package/dist/core/Json.js CHANGED
@@ -125,7 +125,7 @@ export function parse(string, reviver) {
125
125
  export function stringify(value, replacer, space) {
126
126
  return JSON.stringify(value, (key, value) => {
127
127
  if (typeof replacer === 'function')
128
- return replacer(key, value);
128
+ value = replacer(key, value);
129
129
  if (typeof value === 'bigint')
130
130
  return value.toString() + bigIntSuffix;
131
131
  return value;
@@ -1 +1 @@
1
- {"version":3,"file":"Json.js","sourceRoot":"","sources":["../../src/core/Json.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAAG,WAAW,CAAA;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;IACvC,IAAI,MAAM,KAAK,SAAS;QACtB,MAAM,IAAI,SAAS,CACjB,uCAAuC,OAAO,KAAK,KAAK,CACzD,CAAA;IACH,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3E,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YACzB,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAA;QAC9D,OAAO,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC3D,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3B,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAA;IACnD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;YACjC,uEAAuE;YACvE,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IAC/B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC;aAC1D,IAAI,EAAE;aACN,MAAM,CAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC7B,MAAM,CAAC,GAAI,KAAiC,CAAC,GAAG,CAAC,CAAA;YACjD,MAAM,KAAK,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;YAClC,IAAI,KAAK,KAAK,SAAS;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAA;YACpE,OAAO,GAAG,CAAA;QACZ,CAAC,EAAE,EAAE,CAAC,CAAA;QACR,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IACjC,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,KAAK,CACnB,MAAc,EACd,OAAqD;IAErD,0EAA0E;IAC1E,0EAA0E;IAC1E,iEAAiE;IACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,IAAI,OAAO,OAAO,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACrE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,MAAM,CAAA;QACpB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC3D,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAA;QACrD,OAAO,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACpE,CAAC,CAAC,CAAA;AACJ,CAAC;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,SAAS,CACvB,KAAU,EACV,QAA+D,EAC/D,KAAuB;IAEvB,OAAO,IAAI,CAAC,SAAS,CACnB,KAAK,EACL,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACb,IAAI,OAAO,QAAQ,KAAK,UAAU;YAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,GAAG,YAAY,CAAA;QACrE,OAAO,KAAK,CAAA;IACd,CAAC,EACD,KAAK,CACN,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"Json.js","sourceRoot":"","sources":["../../src/core/Json.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,11 @@ import * as Hex from '../core/Hex.js';
5
5
  * `WithdrawalProcessed` event for a Zone withdrawal.
6
6
  *
7
7
  * The `transactionHash` is the Zone transaction containing the
8
- * `ZoneOutbox.requestWithdrawal` call. The protocol defines the sender tag as
9
- * `keccak256(abi.encodePacked(sender, transactionHash))`.
8
+ * `ZoneOutbox.requestWithdrawal` call. The protocol defines a user withdrawal
9
+ * sender tag as
10
+ * `keccak256(abi.encodePacked(sender, transactionHash, fallbackNonce))`.
11
+ * Internal deposit bounce-backs use the canonical zero-sender tag derived from
12
+ * `address(0)` and `bytes32(0)` without a fallback nonce.
10
13
  *
11
14
  * [Authenticated Withdrawals Specification](https://github.com/tempoxyz/zones/blob/main/specs/spec.md#authenticated-withdrawals)
12
15
  *
@@ -15,18 +18,21 @@ import * as Hex from '../core/Hex.js';
15
18
  * import { WithdrawalSenderTag } from 'ox/tempo'
16
19
  *
17
20
  * const senderTag = WithdrawalSenderTag.from({
21
+ * fallbackNonce: 19n,
18
22
  * sender: '0x1234567890abcdef1234567890abcdef12345678',
19
23
  * transactionHash:
20
24
  * '0xabababababababababababababababababababababababababababababababab'
21
25
  * })
22
26
  * ```
23
27
  *
24
- * @param value - Withdrawal sender and Zone transaction hash.
28
+ * @param value - Withdrawal sender, Zone transaction hash, and fallback nonce.
25
29
  * @returns The sender tag.
26
30
  */
27
31
  export declare function from(value: from.Value): Hex.Hex;
28
32
  export declare namespace from {
29
33
  type Value = {
34
+ /** Public nonce assigned to the withdrawal's private fallback recipient. */
35
+ fallbackNonce: bigint;
30
36
  /** Address that requested the withdrawal. */
31
37
  sender: Address.Address;
32
38
  /** Hash of the Zone transaction containing `ZoneOutbox.requestWithdrawal`. */
@@ -1 +1 @@
1
- {"version":3,"file":"WithdrawalSenderTag.d.ts","sourceRoot":"","sources":["../../src/tempo/WithdrawalSenderTag.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAE7C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAQ/C;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,KAAY,KAAK,GAAG;QAClB,6CAA6C;QAC7C,MAAM,EAAE,OAAO,CAAC,OAAO,CAAA;QACvB,8EAA8E;QAC9E,eAAe,EAAE,GAAG,CAAC,GAAG,CAAA;KACzB,CAAA;CACF"}
1
+ {"version":3,"file":"WithdrawalSenderTag.d.ts","sourceRoot":"","sources":["../../src/tempo/WithdrawalSenderTag.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAE7C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAqB/C;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,KAAY,KAAK,GAAG;QAClB,4EAA4E;QAC5E,aAAa,EAAE,MAAM,CAAA;QACrB,6CAA6C;QAC7C,MAAM,EAAE,OAAO,CAAC,OAAO,CAAA;QACvB,8EAA8E;QAC9E,eAAe,EAAE,GAAG,CAAC,GAAG,CAAA;KACzB,CAAA;CACF"}
@@ -5,8 +5,11 @@ import * as Hash from '../core/Hash.js';
5
5
  * `WithdrawalProcessed` event for a Zone withdrawal.
6
6
  *
7
7
  * The `transactionHash` is the Zone transaction containing the
8
- * `ZoneOutbox.requestWithdrawal` call. The protocol defines the sender tag as
9
- * `keccak256(abi.encodePacked(sender, transactionHash))`.
8
+ * `ZoneOutbox.requestWithdrawal` call. The protocol defines a user withdrawal
9
+ * sender tag as
10
+ * `keccak256(abi.encodePacked(sender, transactionHash, fallbackNonce))`.
11
+ * Internal deposit bounce-backs use the canonical zero-sender tag derived from
12
+ * `address(0)` and `bytes32(0)` without a fallback nonce.
10
13
  *
11
14
  * [Authenticated Withdrawals Specification](https://github.com/tempoxyz/zones/blob/main/specs/spec.md#authenticated-withdrawals)
12
15
  *
@@ -15,17 +18,24 @@ import * as Hash from '../core/Hash.js';
15
18
  * import { WithdrawalSenderTag } from 'ox/tempo'
16
19
  *
17
20
  * const senderTag = WithdrawalSenderTag.from({
21
+ * fallbackNonce: 19n,
18
22
  * sender: '0x1234567890abcdef1234567890abcdef12345678',
19
23
  * transactionHash:
20
24
  * '0xabababababababababababababababababababababababababababababababab'
21
25
  * })
22
26
  * ```
23
27
  *
24
- * @param value - Withdrawal sender and Zone transaction hash.
28
+ * @param value - Withdrawal sender, Zone transaction hash, and fallback nonce.
25
29
  * @returns The sender tag.
26
30
  */
27
31
  export function from(value) {
28
- const { sender, transactionHash } = value;
29
- return Hash.keccak256(AbiParameters.encodePacked(['address', 'bytes32'], [sender, transactionHash]));
32
+ const { fallbackNonce, sender, transactionHash } = value;
33
+ if (sender === '0x0000000000000000000000000000000000000000' &&
34
+ fallbackNonce === 0n)
35
+ return Hash.keccak256(AbiParameters.encodePacked(['address', 'bytes32'], [
36
+ sender,
37
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
38
+ ]));
39
+ return Hash.keccak256(AbiParameters.encodePacked(['address', 'bytes32', 'uint64'], [sender, transactionHash, fallbackNonce]));
30
40
  }
31
41
  //# sourceMappingURL=WithdrawalSenderTag.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WithdrawalSenderTag.js","sourceRoot":"","sources":["../../src/tempo/WithdrawalSenderTag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAA;AAEzD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AAGvC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,IAAI,CAAC,KAAiB;IACpC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAA;IACzC,OAAO,IAAI,CAAC,SAAS,CACnB,aAAa,CAAC,YAAY,CACxB,CAAC,SAAS,EAAE,SAAS,CAAC,EACtB,CAAC,MAAM,EAAE,eAAe,CAAC,CAC1B,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"WithdrawalSenderTag.js","sourceRoot":"","sources":["../../src/tempo/WithdrawalSenderTag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAA;AAEzD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AAGvC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,IAAI,CAAC,KAAiB;IACpC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAA;IACxD,IACE,MAAM,KAAK,4CAA4C;QACvD,aAAa,KAAK,EAAE;QAEpB,OAAO,IAAI,CAAC,SAAS,CACnB,aAAa,CAAC,YAAY,CACxB,CAAC,SAAS,EAAE,SAAS,CAAC,EACtB;YACE,MAAM;YACN,oEAAoE;SACrE,CACF,CACF,CAAA;IACH,OAAO,IAAI,CAAC,SAAS,CACnB,aAAa,CAAC,YAAY,CACxB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,EAChC,CAAC,MAAM,EAAE,eAAe,EAAE,aAAa,CAAC,CACzC,CACF,CAAA;AACH,CAAC"}
@@ -528,8 +528,8 @@ export * as VirtualMaster from './VirtualMaster.js';
528
528
  * Utilities for deriving the sender tag that correlates a Zone withdrawal with
529
529
  * its indexed parent-chain `WithdrawalProcessed` event.
530
530
  *
531
- * The sender tag commits to the withdrawal sender and the Zone transaction hash
532
- * containing the `ZoneOutbox.requestWithdrawal` call.
531
+ * The sender tag commits to the withdrawal sender, the Zone transaction hash
532
+ * containing the `ZoneOutbox.requestWithdrawal` call, and the fallback nonce.
533
533
  *
534
534
  * [Authenticated Withdrawals Specification](https://github.com/tempoxyz/zones/blob/main/specs/spec.md#authenticated-withdrawals)
535
535
  *
@@ -538,6 +538,7 @@ export * as VirtualMaster from './VirtualMaster.js';
538
538
  * import { WithdrawalSenderTag } from 'ox/tempo'
539
539
  *
540
540
  * const senderTag = WithdrawalSenderTag.from({
541
+ * fallbackNonce: 19n,
541
542
  * sender: '0x1234567890abcdef1234567890abcdef12345678',
542
543
  * transactionHash:
543
544
  * '0xabababababababababababababababababababababababababababababababab'
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tempo/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAGhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AACzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAA;AACjE;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAC3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tempo/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAGhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AACzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAA;AACjE;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAC3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA"}
@@ -529,8 +529,8 @@ export * as VirtualMaster from './VirtualMaster.js';
529
529
  * Utilities for deriving the sender tag that correlates a Zone withdrawal with
530
530
  * its indexed parent-chain `WithdrawalProcessed` event.
531
531
  *
532
- * The sender tag commits to the withdrawal sender and the Zone transaction hash
533
- * containing the `ZoneOutbox.requestWithdrawal` call.
532
+ * The sender tag commits to the withdrawal sender, the Zone transaction hash
533
+ * containing the `ZoneOutbox.requestWithdrawal` call, and the fallback nonce.
534
534
  *
535
535
  * [Authenticated Withdrawals Specification](https://github.com/tempoxyz/zones/blob/main/specs/spec.md#authenticated-withdrawals)
536
536
  *
@@ -539,6 +539,7 @@ export * as VirtualMaster from './VirtualMaster.js';
539
539
  * import { WithdrawalSenderTag } from 'ox/tempo'
540
540
  *
541
541
  * const senderTag = WithdrawalSenderTag.from({
542
+ * fallbackNonce: 19n,
542
543
  * sender: '0x1234567890abcdef1234567890abcdef12345678',
543
544
  * transactionHash:
544
545
  * '0xabababababababababababababababababababababababababababababababab'
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tempo/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,2DAA2D;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AACzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAA;AACjE;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAC3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tempo/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,2DAA2D;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AACzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAA;AACjE;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAC3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "ox",
3
3
  "description": "Ethereum Standard Library",
4
4
  "type": "module",
5
- "version": "1.6.0",
5
+ "version": "1.6.2",
6
6
  "main": "./dist/index.js",
7
7
  "sideEffects": false,
8
8
  "license": "MIT",
package/src/core/Json.ts CHANGED
@@ -147,7 +147,7 @@ export function stringify(
147
147
  return JSON.stringify(
148
148
  value,
149
149
  (key, value) => {
150
- if (typeof replacer === 'function') return replacer(key, value)
150
+ if (typeof replacer === 'function') value = replacer(key, value)
151
151
  if (typeof value === 'bigint') return value.toString() + bigIntSuffix
152
152
  return value
153
153
  },
@@ -177,6 +177,12 @@ describe('Json.stringify', () => {
177
177
  ).toEqual('{"foo":"bar","baz":{"value":"69!"}}')
178
178
  })
179
179
 
180
+ test('args: replacer with bigint returned unchanged', () => {
181
+ expect(
182
+ Json.stringify({ a: 5n }, (_key, value) => value),
183
+ ).toMatchInlineSnapshot(`"{"a":"5#__bigint"}"`)
184
+ })
185
+
180
186
  test('args: space', () => {
181
187
  expect(
182
188
  Json.stringify(
@@ -5,6 +5,7 @@ import { expectTypeOf, test } from 'vp/test'
5
5
  test('from', () => {
6
6
  expectTypeOf(
7
7
  WithdrawalSenderTag.from({
8
+ fallbackNonce: 19n,
8
9
  sender: '0x1234567890abcdef1234567890abcdef12345678',
9
10
  transactionHash:
10
11
  '0xabababababababababababababababababababababababababababababababab',
@@ -1,22 +1,26 @@
1
1
  import { WithdrawalSenderTag } from 'ox/tempo'
2
2
  import { expect, test } from 'vp/test'
3
3
 
4
- test('from', () => {
4
+ test('from: production withdrawal', () => {
5
5
  const senderTag = WithdrawalSenderTag.from({
6
- sender: '0x1234567890abcdef1234567890abcdef12345678',
6
+ fallbackNonce: 19n,
7
+ sender: '0x0F0896dbf0465E5c07963301dcFEA1101Fa91EaC',
7
8
  transactionHash:
8
- '0xabababababababababababababababababababababababababababababababab',
9
+ '0xae628bdc4bd24a9f9a917825a208baa16c384ab8a96a40cd5146bd20d9b3f6d9',
9
10
  })
10
11
  expect(senderTag).toMatchInlineSnapshot(
11
- `"0x3362fade7333b56b9f3582089ec5915b8a6f6ac13e73a7f90c169e3eb81d8a5e"`,
12
+ `"0xf1acbae45cd689281144042331e3379cf631a8d2db83057ccf38754a0b0108f2"`,
12
13
  )
13
14
  })
14
15
 
15
- test('deterministic', () => {
16
- const value = {
17
- sender: '0x1234567890abcdef1234567890abcdef12345678',
16
+ test('from: internal deposit bounce-back', () => {
17
+ const senderTag = WithdrawalSenderTag.from({
18
+ fallbackNonce: 0n,
19
+ sender: '0x0000000000000000000000000000000000000000',
18
20
  transactionHash:
19
21
  '0xabababababababababababababababababababababababababababababababab',
20
- } as const
21
- expect(WithdrawalSenderTag.from(value)).toBe(WithdrawalSenderTag.from(value))
22
+ })
23
+ expect(senderTag).toMatchInlineSnapshot(
24
+ `"0xa86d54e9aab41ae5e520ff0062ff1b4cbd0b2192bb01080a058bb170d84e6457"`,
25
+ )
22
26
  })
@@ -8,8 +8,11 @@ import * as Hex from '../core/Hex.js'
8
8
  * `WithdrawalProcessed` event for a Zone withdrawal.
9
9
  *
10
10
  * The `transactionHash` is the Zone transaction containing the
11
- * `ZoneOutbox.requestWithdrawal` call. The protocol defines the sender tag as
12
- * `keccak256(abi.encodePacked(sender, transactionHash))`.
11
+ * `ZoneOutbox.requestWithdrawal` call. The protocol defines a user withdrawal
12
+ * sender tag as
13
+ * `keccak256(abi.encodePacked(sender, transactionHash, fallbackNonce))`.
14
+ * Internal deposit bounce-backs use the canonical zero-sender tag derived from
15
+ * `address(0)` and `bytes32(0)` without a fallback nonce.
13
16
  *
14
17
  * [Authenticated Withdrawals Specification](https://github.com/tempoxyz/zones/blob/main/specs/spec.md#authenticated-withdrawals)
15
18
  *
@@ -18,27 +21,43 @@ import * as Hex from '../core/Hex.js'
18
21
  * import { WithdrawalSenderTag } from 'ox/tempo'
19
22
  *
20
23
  * const senderTag = WithdrawalSenderTag.from({
24
+ * fallbackNonce: 19n,
21
25
  * sender: '0x1234567890abcdef1234567890abcdef12345678',
22
26
  * transactionHash:
23
27
  * '0xabababababababababababababababababababababababababababababababab'
24
28
  * })
25
29
  * ```
26
30
  *
27
- * @param value - Withdrawal sender and Zone transaction hash.
31
+ * @param value - Withdrawal sender, Zone transaction hash, and fallback nonce.
28
32
  * @returns The sender tag.
29
33
  */
30
34
  export function from(value: from.Value): Hex.Hex {
31
- const { sender, transactionHash } = value
35
+ const { fallbackNonce, sender, transactionHash } = value
36
+ if (
37
+ sender === '0x0000000000000000000000000000000000000000' &&
38
+ fallbackNonce === 0n
39
+ )
40
+ return Hash.keccak256(
41
+ AbiParameters.encodePacked(
42
+ ['address', 'bytes32'],
43
+ [
44
+ sender,
45
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
46
+ ],
47
+ ),
48
+ )
32
49
  return Hash.keccak256(
33
50
  AbiParameters.encodePacked(
34
- ['address', 'bytes32'],
35
- [sender, transactionHash],
51
+ ['address', 'bytes32', 'uint64'],
52
+ [sender, transactionHash, fallbackNonce],
36
53
  ),
37
54
  )
38
55
  }
39
56
 
40
57
  export declare namespace from {
41
58
  export type Value = {
59
+ /** Public nonce assigned to the withdrawal's private fallback recipient. */
60
+ fallbackNonce: bigint
42
61
  /** Address that requested the withdrawal. */
43
62
  sender: Address.Address
44
63
  /** Hash of the Zone transaction containing `ZoneOutbox.requestWithdrawal`. */
@@ -533,8 +533,8 @@ export * as VirtualMaster from './VirtualMaster.js'
533
533
  * Utilities for deriving the sender tag that correlates a Zone withdrawal with
534
534
  * its indexed parent-chain `WithdrawalProcessed` event.
535
535
  *
536
- * The sender tag commits to the withdrawal sender and the Zone transaction hash
537
- * containing the `ZoneOutbox.requestWithdrawal` call.
536
+ * The sender tag commits to the withdrawal sender, the Zone transaction hash
537
+ * containing the `ZoneOutbox.requestWithdrawal` call, and the fallback nonce.
538
538
  *
539
539
  * [Authenticated Withdrawals Specification](https://github.com/tempoxyz/zones/blob/main/specs/spec.md#authenticated-withdrawals)
540
540
  *
@@ -543,6 +543,7 @@ export * as VirtualMaster from './VirtualMaster.js'
543
543
  * import { WithdrawalSenderTag } from 'ox/tempo'
544
544
  *
545
545
  * const senderTag = WithdrawalSenderTag.from({
546
+ * fallbackNonce: 19n,
546
547
  * sender: '0x1234567890abcdef1234567890abcdef12345678',
547
548
  * transactionHash:
548
549
  * '0xabababababababababababababababababababababababababababababababab'
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  /** @internal */
2
- export const version = '1.6.0'
2
+ export const version = '1.6.2'