ox 1.4.0 → 1.5.0
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/dist/tempo/WithdrawalSenderTag.d.ts +36 -0
- package/dist/tempo/WithdrawalSenderTag.d.ts.map +1 -0
- package/dist/tempo/WithdrawalSenderTag.js +31 -0
- package/dist/tempo/WithdrawalSenderTag.js.map +1 -0
- package/dist/tempo/index.d.ts +23 -0
- package/dist/tempo/index.d.ts.map +1 -1
- package/dist/tempo/index.js +23 -0
- package/dist/tempo/index.js.map +1 -1
- package/package.json +6 -1
- package/src/tempo/WithdrawalSenderTag.test-d.ts +13 -0
- package/src/tempo/WithdrawalSenderTag.test.ts +22 -0
- package/src/tempo/WithdrawalSenderTag.ts +47 -0
- package/src/tempo/index.ts +24 -0
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# ox
|
|
2
2
|
|
|
3
|
+
## 1.5.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#348](https://github.com/wevm/ox/pull/348) [`fcd16f0`](https://github.com/wevm/ox/commit/fcd16f0c0b76bcc69c14205428dfb56f65d931c2) Thanks [@struong](https://github.com/struong)! - Added `WithdrawalSenderTag` utilities for deriving Tempo Zone withdrawal sender tags.
|
|
8
|
+
|
|
3
9
|
## 1.4.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as Address from '../core/Address.js';
|
|
2
|
+
import * as Hex from '../core/Hex.js';
|
|
3
|
+
/**
|
|
4
|
+
* Derives the sender tag that identifies the indexed parent-chain
|
|
5
|
+
* `WithdrawalProcessed` event for a Zone withdrawal.
|
|
6
|
+
*
|
|
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))`.
|
|
10
|
+
*
|
|
11
|
+
* [Authenticated Withdrawals Specification](https://github.com/tempoxyz/zones/blob/main/specs/spec.md#authenticated-withdrawals)
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts twoslash
|
|
15
|
+
* import { WithdrawalSenderTag } from 'ox/tempo'
|
|
16
|
+
*
|
|
17
|
+
* const senderTag = WithdrawalSenderTag.from({
|
|
18
|
+
* sender: '0x1234567890abcdef1234567890abcdef12345678',
|
|
19
|
+
* transactionHash:
|
|
20
|
+
* '0xabababababababababababababababababababababababababababababababab'
|
|
21
|
+
* })
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @param value - Withdrawal sender and Zone transaction hash.
|
|
25
|
+
* @returns The sender tag.
|
|
26
|
+
*/
|
|
27
|
+
export declare function from(value: from.Value): Hex.Hex;
|
|
28
|
+
export declare namespace from {
|
|
29
|
+
type Value = {
|
|
30
|
+
/** Address that requested the withdrawal. */
|
|
31
|
+
sender: Address.Address;
|
|
32
|
+
/** Hash of the Zone transaction containing `ZoneOutbox.requestWithdrawal`. */
|
|
33
|
+
transactionHash: Hex.Hex;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=WithdrawalSenderTag.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as AbiParameters from '../core/AbiParameters.js';
|
|
2
|
+
import * as Hash from '../core/Hash.js';
|
|
3
|
+
/**
|
|
4
|
+
* Derives the sender tag that identifies the indexed parent-chain
|
|
5
|
+
* `WithdrawalProcessed` event for a Zone withdrawal.
|
|
6
|
+
*
|
|
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))`.
|
|
10
|
+
*
|
|
11
|
+
* [Authenticated Withdrawals Specification](https://github.com/tempoxyz/zones/blob/main/specs/spec.md#authenticated-withdrawals)
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts twoslash
|
|
15
|
+
* import { WithdrawalSenderTag } from 'ox/tempo'
|
|
16
|
+
*
|
|
17
|
+
* const senderTag = WithdrawalSenderTag.from({
|
|
18
|
+
* sender: '0x1234567890abcdef1234567890abcdef12345678',
|
|
19
|
+
* transactionHash:
|
|
20
|
+
* '0xabababababababababababababababababababababababababababababababab'
|
|
21
|
+
* })
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @param value - Withdrawal sender and Zone transaction hash.
|
|
25
|
+
* @returns The sender tag.
|
|
26
|
+
*/
|
|
27
|
+
export function from(value) {
|
|
28
|
+
const { sender, transactionHash } = value;
|
|
29
|
+
return Hash.keccak256(AbiParameters.encodePacked(['address', 'bytes32'], [sender, transactionHash]));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=WithdrawalSenderTag.js.map
|
|
@@ -0,0 +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"}
|
package/dist/tempo/index.d.ts
CHANGED
|
@@ -524,6 +524,29 @@ export * as VirtualAddress from './VirtualAddress.js';
|
|
|
524
524
|
* @category Reference
|
|
525
525
|
*/
|
|
526
526
|
export * as VirtualMaster from './VirtualMaster.js';
|
|
527
|
+
/**
|
|
528
|
+
* Utilities for deriving the sender tag that correlates a Zone withdrawal with
|
|
529
|
+
* its indexed parent-chain `WithdrawalProcessed` event.
|
|
530
|
+
*
|
|
531
|
+
* The sender tag commits to the withdrawal sender and the Zone transaction hash
|
|
532
|
+
* containing the `ZoneOutbox.requestWithdrawal` call.
|
|
533
|
+
*
|
|
534
|
+
* [Authenticated Withdrawals Specification](https://github.com/tempoxyz/zones/blob/main/specs/spec.md#authenticated-withdrawals)
|
|
535
|
+
*
|
|
536
|
+
* @example
|
|
537
|
+
* ```ts twoslash
|
|
538
|
+
* import { WithdrawalSenderTag } from 'ox/tempo'
|
|
539
|
+
*
|
|
540
|
+
* const senderTag = WithdrawalSenderTag.from({
|
|
541
|
+
* sender: '0x1234567890abcdef1234567890abcdef12345678',
|
|
542
|
+
* transactionHash:
|
|
543
|
+
* '0xabababababababababababababababababababababababababababababababab'
|
|
544
|
+
* })
|
|
545
|
+
* ```
|
|
546
|
+
*
|
|
547
|
+
* @category Reference
|
|
548
|
+
*/
|
|
549
|
+
export * as WithdrawalSenderTag from './WithdrawalSenderTag.js';
|
|
527
550
|
/**
|
|
528
551
|
* Zone ID utilities for converting between zone IDs and zone chain IDs.
|
|
529
552
|
*
|
|
@@ -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;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;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"}
|
package/dist/tempo/index.js
CHANGED
|
@@ -525,6 +525,29 @@ export * as VirtualAddress from './VirtualAddress.js';
|
|
|
525
525
|
* @category Reference
|
|
526
526
|
*/
|
|
527
527
|
export * as VirtualMaster from './VirtualMaster.js';
|
|
528
|
+
/**
|
|
529
|
+
* Utilities for deriving the sender tag that correlates a Zone withdrawal with
|
|
530
|
+
* its indexed parent-chain `WithdrawalProcessed` event.
|
|
531
|
+
*
|
|
532
|
+
* The sender tag commits to the withdrawal sender and the Zone transaction hash
|
|
533
|
+
* containing the `ZoneOutbox.requestWithdrawal` call.
|
|
534
|
+
*
|
|
535
|
+
* [Authenticated Withdrawals Specification](https://github.com/tempoxyz/zones/blob/main/specs/spec.md#authenticated-withdrawals)
|
|
536
|
+
*
|
|
537
|
+
* @example
|
|
538
|
+
* ```ts twoslash
|
|
539
|
+
* import { WithdrawalSenderTag } from 'ox/tempo'
|
|
540
|
+
*
|
|
541
|
+
* const senderTag = WithdrawalSenderTag.from({
|
|
542
|
+
* sender: '0x1234567890abcdef1234567890abcdef12345678',
|
|
543
|
+
* transactionHash:
|
|
544
|
+
* '0xabababababababababababababababababababababababababababababababab'
|
|
545
|
+
* })
|
|
546
|
+
* ```
|
|
547
|
+
*
|
|
548
|
+
* @category Reference
|
|
549
|
+
*/
|
|
550
|
+
export * as WithdrawalSenderTag from './WithdrawalSenderTag.js';
|
|
528
551
|
/**
|
|
529
552
|
* Zone ID utilities for converting between zone IDs and zone chain IDs.
|
|
530
553
|
*
|
package/dist/tempo/index.js.map
CHANGED
|
@@ -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;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;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"}
|
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.
|
|
5
|
+
"version": "1.5.0",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"sideEffects": false,
|
|
8
8
|
"license": "MIT",
|
|
@@ -657,6 +657,11 @@
|
|
|
657
657
|
"types": "./dist/tempo/VirtualMaster.d.ts",
|
|
658
658
|
"default": "./dist/tempo/VirtualMaster.js"
|
|
659
659
|
},
|
|
660
|
+
"./tempo/WithdrawalSenderTag": {
|
|
661
|
+
"src": "./src/tempo/WithdrawalSenderTag.ts",
|
|
662
|
+
"types": "./dist/tempo/WithdrawalSenderTag.d.ts",
|
|
663
|
+
"default": "./dist/tempo/WithdrawalSenderTag.js"
|
|
664
|
+
},
|
|
660
665
|
"./tempo/ZoneId": {
|
|
661
666
|
"src": "./src/tempo/ZoneId.ts",
|
|
662
667
|
"types": "./dist/tempo/ZoneId.d.ts",
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Hex } from 'ox'
|
|
2
|
+
import { WithdrawalSenderTag } from 'ox/tempo'
|
|
3
|
+
import { expectTypeOf, test } from 'vp/test'
|
|
4
|
+
|
|
5
|
+
test('from', () => {
|
|
6
|
+
expectTypeOf(
|
|
7
|
+
WithdrawalSenderTag.from({
|
|
8
|
+
sender: '0x1234567890abcdef1234567890abcdef12345678',
|
|
9
|
+
transactionHash:
|
|
10
|
+
'0xabababababababababababababababababababababababababababababababab',
|
|
11
|
+
}),
|
|
12
|
+
).toEqualTypeOf<Hex.Hex>()
|
|
13
|
+
})
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { WithdrawalSenderTag } from 'ox/tempo'
|
|
2
|
+
import { expect, test } from 'vp/test'
|
|
3
|
+
|
|
4
|
+
test('from', () => {
|
|
5
|
+
const senderTag = WithdrawalSenderTag.from({
|
|
6
|
+
sender: '0x1234567890abcdef1234567890abcdef12345678',
|
|
7
|
+
transactionHash:
|
|
8
|
+
'0xabababababababababababababababababababababababababababababababab',
|
|
9
|
+
})
|
|
10
|
+
expect(senderTag).toMatchInlineSnapshot(
|
|
11
|
+
`"0x3362fade7333b56b9f3582089ec5915b8a6f6ac13e73a7f90c169e3eb81d8a5e"`,
|
|
12
|
+
)
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
test('deterministic', () => {
|
|
16
|
+
const value = {
|
|
17
|
+
sender: '0x1234567890abcdef1234567890abcdef12345678',
|
|
18
|
+
transactionHash:
|
|
19
|
+
'0xabababababababababababababababababababababababababababababababab',
|
|
20
|
+
} as const
|
|
21
|
+
expect(WithdrawalSenderTag.from(value)).toBe(WithdrawalSenderTag.from(value))
|
|
22
|
+
})
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import * as AbiParameters from '../core/AbiParameters.js'
|
|
2
|
+
import * as Address from '../core/Address.js'
|
|
3
|
+
import * as Hash from '../core/Hash.js'
|
|
4
|
+
import * as Hex from '../core/Hex.js'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Derives the sender tag that identifies the indexed parent-chain
|
|
8
|
+
* `WithdrawalProcessed` event for a Zone withdrawal.
|
|
9
|
+
*
|
|
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))`.
|
|
13
|
+
*
|
|
14
|
+
* [Authenticated Withdrawals Specification](https://github.com/tempoxyz/zones/blob/main/specs/spec.md#authenticated-withdrawals)
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts twoslash
|
|
18
|
+
* import { WithdrawalSenderTag } from 'ox/tempo'
|
|
19
|
+
*
|
|
20
|
+
* const senderTag = WithdrawalSenderTag.from({
|
|
21
|
+
* sender: '0x1234567890abcdef1234567890abcdef12345678',
|
|
22
|
+
* transactionHash:
|
|
23
|
+
* '0xabababababababababababababababababababababababababababababababab'
|
|
24
|
+
* })
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @param value - Withdrawal sender and Zone transaction hash.
|
|
28
|
+
* @returns The sender tag.
|
|
29
|
+
*/
|
|
30
|
+
export function from(value: from.Value): Hex.Hex {
|
|
31
|
+
const { sender, transactionHash } = value
|
|
32
|
+
return Hash.keccak256(
|
|
33
|
+
AbiParameters.encodePacked(
|
|
34
|
+
['address', 'bytes32'],
|
|
35
|
+
[sender, transactionHash],
|
|
36
|
+
),
|
|
37
|
+
)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export declare namespace from {
|
|
41
|
+
export type Value = {
|
|
42
|
+
/** Address that requested the withdrawal. */
|
|
43
|
+
sender: Address.Address
|
|
44
|
+
/** Hash of the Zone transaction containing `ZoneOutbox.requestWithdrawal`. */
|
|
45
|
+
transactionHash: Hex.Hex
|
|
46
|
+
}
|
|
47
|
+
}
|
package/src/tempo/index.ts
CHANGED
|
@@ -529,6 +529,30 @@ export * as VirtualAddress from './VirtualAddress.js'
|
|
|
529
529
|
*/
|
|
530
530
|
export * as VirtualMaster from './VirtualMaster.js'
|
|
531
531
|
|
|
532
|
+
/**
|
|
533
|
+
* Utilities for deriving the sender tag that correlates a Zone withdrawal with
|
|
534
|
+
* its indexed parent-chain `WithdrawalProcessed` event.
|
|
535
|
+
*
|
|
536
|
+
* The sender tag commits to the withdrawal sender and the Zone transaction hash
|
|
537
|
+
* containing the `ZoneOutbox.requestWithdrawal` call.
|
|
538
|
+
*
|
|
539
|
+
* [Authenticated Withdrawals Specification](https://github.com/tempoxyz/zones/blob/main/specs/spec.md#authenticated-withdrawals)
|
|
540
|
+
*
|
|
541
|
+
* @example
|
|
542
|
+
* ```ts twoslash
|
|
543
|
+
* import { WithdrawalSenderTag } from 'ox/tempo'
|
|
544
|
+
*
|
|
545
|
+
* const senderTag = WithdrawalSenderTag.from({
|
|
546
|
+
* sender: '0x1234567890abcdef1234567890abcdef12345678',
|
|
547
|
+
* transactionHash:
|
|
548
|
+
* '0xabababababababababababababababababababababababababababababababab'
|
|
549
|
+
* })
|
|
550
|
+
* ```
|
|
551
|
+
*
|
|
552
|
+
* @category Reference
|
|
553
|
+
*/
|
|
554
|
+
export * as WithdrawalSenderTag from './WithdrawalSenderTag.js'
|
|
555
|
+
|
|
532
556
|
/**
|
|
533
557
|
* Zone ID utilities for converting between zone IDs and zone chain IDs.
|
|
534
558
|
*
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** @internal */
|
|
2
|
-
export const version = '1.
|
|
2
|
+
export const version = '1.5.0'
|