ox 0.14.21 → 0.14.23

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
+ ## 0.14.23
4
+
5
+ ### Patch Changes
6
+
7
+ - [#252](https://github.com/wevm/ox/pull/252) [`19cd833`](https://github.com/wevm/ox/commit/19cd83342bfddc682a8897f0cb5c383e8954586d) Thanks [@jxom](https://github.com/jxom)! - Added TIP-20 channel reserve constants, channel id computation, and voucher signing helpers.
8
+
9
+ ## 0.14.22
10
+
11
+ ### Patch Changes
12
+
13
+ - [#227](https://github.com/wevm/ox/pull/227) [`ffa64c0`](https://github.com/wevm/ox/commit/ffa64c0d56c218a9cf3aaa93570c6fa6ef187864) Thanks [@Genmin](https://github.com/Genmin)! - Fixed `Secp256k1.verify` narrowing signature branches before address recovery.
14
+
3
15
  ## 0.14.21
4
16
 
5
17
  ### Patch Changes
@@ -72,9 +72,9 @@ function sign(options) {
72
72
  };
73
73
  }
74
74
  function verify(options) {
75
- const { address, hash, payload, publicKey, signature } = options;
76
- if (address)
77
- return Address.isEqual(address, recoverAddress({ payload, signature }));
78
- return secp256k1_1.secp256k1.verify(signature, Bytes.from(payload), PublicKey.toBytes(publicKey), ...(hash ? [{ prehash: true, lowS: true }] : []));
75
+ const { hash, payload } = options;
76
+ if (options.address)
77
+ return Address.isEqual(options.address, recoverAddress({ payload, signature: options.signature }));
78
+ return secp256k1_1.secp256k1.verify(options.signature, Bytes.from(payload), PublicKey.toBytes(options.publicKey), ...(hash ? [{ prehash: true, lowS: true }] : []));
79
79
  }
80
80
  //# sourceMappingURL=Secp256k1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Secp256k1.js","sourceRoot":"","sources":["../../core/Secp256k1.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Secp256k1.js","sourceRoot":"","sources":["../../core/Secp256k1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.voucherTypehash = exports.closeGracePeriod = exports.address = void 0;
4
+ exports.computeId = computeId;
5
+ exports.domainSeparator = domainSeparator;
6
+ exports.getVoucherSignPayload = getVoucherSignPayload;
7
+ const AbiParameters = require("../core/AbiParameters.js");
8
+ const Hash = require("../core/Hash.js");
9
+ const Hex = require("../core/Hex.js");
10
+ const TempoAddress = require("./TempoAddress.js");
11
+ const TokenId = require("./TokenId.js");
12
+ const channelIdParameters = AbiParameters.from('address, address, address, address, bytes32, address, bytes32, address, uint256');
13
+ const domainSeparatorParameters = AbiParameters.from('bytes32, bytes32, bytes32, uint256, address');
14
+ const voucherHashParameters = AbiParameters.from('bytes32, bytes32, uint96');
15
+ const eip712DomainTypehash = Hash.keccak256(Hex.fromString('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'));
16
+ const nameHash = Hash.keccak256(Hex.fromString('TIP20 Channel Reserve'));
17
+ const versionHash = Hash.keccak256(Hex.fromString('1'));
18
+ exports.address = '0x4d50500000000000000000000000000000000000';
19
+ exports.closeGracePeriod = 900n;
20
+ exports.voucherTypehash = Hash.keccak256(Hex.fromString('Voucher(bytes32 channelId,uint96 cumulativeAmount)'));
21
+ function computeId(value) {
22
+ return Hash.keccak256(AbiParameters.encode(channelIdParameters, [
23
+ TempoAddress.resolve(value.payer),
24
+ TempoAddress.resolve(value.payee),
25
+ TempoAddress.resolve(value.operator),
26
+ TokenId.toAddress(value.token),
27
+ value.salt,
28
+ TempoAddress.resolve(value.authorizedSigner),
29
+ value.expiringNonceHash,
30
+ exports.address,
31
+ BigInt(value.chainId),
32
+ ]));
33
+ }
34
+ function domainSeparator(value) {
35
+ return Hash.keccak256(AbiParameters.encode(domainSeparatorParameters, [
36
+ eip712DomainTypehash,
37
+ nameHash,
38
+ versionHash,
39
+ BigInt(value.chainId),
40
+ exports.address,
41
+ ]));
42
+ }
43
+ function getVoucherSignPayload(value) {
44
+ const voucherHash = Hash.keccak256(AbiParameters.encode(voucherHashParameters, [
45
+ exports.voucherTypehash,
46
+ value.channelId,
47
+ value.cumulativeAmount,
48
+ ]));
49
+ return Hash.keccak256(Hex.concat('0x1901', domainSeparator({ chainId: value.chainId }), voucherHash));
50
+ }
51
+ //# sourceMappingURL=Channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../tempo/Channel.ts"],"names":[],"mappings":";;;AAsFA,8BAcC;AA8BD,0CAUC;AA+BD,sDAiBC;AA5LD,0DAAyD;AAEzD,wCAAuC;AACvC,sCAAqC;AACrC,kDAAiD;AACjD,wCAAuC;AAEvC,MAAM,mBAAmB,GAAG,aAAa,CAAC,IAAI,CAC5C,iFAAiF,CAClF,CAAA;AACD,MAAM,yBAAyB,GAAG,aAAa,CAAC,IAAI,CAClD,6CAA6C,CAC9C,CAAA;AACD,MAAM,qBAAqB,GAAG,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;AAE5E,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CACzC,GAAG,CAAC,UAAU,CACZ,oFAAoF,CACrF,CACF,CAAA;AACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAAA;AACxE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;AAK1C,QAAA,OAAO,GAClB,4CAA+E,CAAA;AAKpE,QAAA,gBAAgB,GAAG,IAAI,CAAA;AAKvB,QAAA,eAAe,GAAG,IAAI,CAAC,SAAS,CAC3C,GAAG,CAAC,UAAU,CAAC,oDAAoD,CAAC,CACrE,CAAA;AA+CD,SAAgB,SAAS,CAAC,KAAsB;IAC9C,OAAO,IAAI,CAAC,SAAS,CACnB,aAAa,CAAC,MAAM,CAAC,mBAAmB,EAAE;QACxC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACjC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACjC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QACpC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9B,KAAK,CAAC,IAAI;QACV,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAC5C,KAAK,CAAC,iBAAiB;QACvB,eAAO;QACP,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;KACtB,CAAC,CACH,CAAA;AACH,CAAC;AA8BD,SAAgB,eAAe,CAAC,KAA4B;IAC1D,OAAO,IAAI,CAAC,SAAS,CACnB,aAAa,CAAC,MAAM,CAAC,yBAAyB,EAAE;QAC9C,oBAAoB;QACpB,QAAQ;QACR,WAAW;QACX,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QACrB,eAAO;KACR,CAAC,CACH,CAAA;AACH,CAAC;AA+BD,SAAgB,qBAAqB,CACnC,KAAkC;IAElC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAChC,aAAa,CAAC,MAAM,CAAC,qBAAqB,EAAE;QAC1C,uBAAe;QACf,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,gBAAgB;KACvB,CAAC,CACH,CAAA;IACD,OAAO,IAAI,CAAC,SAAS,CACnB,GAAG,CAAC,MAAM,CACR,QAAQ,EACR,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAC3C,WAAW,CACZ,CACF,CAAA;AACH,CAAC"}
@@ -1,7 +1,8 @@
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.PoolId = exports.Period = exports.KeyAuthorization = 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.PoolId = exports.Period = exports.KeyAuthorization = exports.Channel = exports.AuthorizationTempo = void 0;
4
4
  exports.AuthorizationTempo = require("./AuthorizationTempo.js");
5
+ exports.Channel = require("./Channel.js");
5
6
  exports.KeyAuthorization = require("./KeyAuthorization.js");
6
7
  exports.Period = require("./Period.js");
7
8
  exports.PoolId = require("./PoolId.js");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":";;;AAoCA,gEAA6D;AAwC7D,4DAAyD;AA6BzD,wCAAqC;AAsBrC,wCAAqC;AAoBrC,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;AAqBnD,wCAAqC;AAmCrC,sEAAmE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":";;;AAoCA,gEAA6D;AA0B7D,0CAAuC;AAwCvC,4DAAyD;AA6BzD,wCAAqC;AAsBrC,wCAAqC;AAoBrC,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;AAqBnD,wCAAqC;AAmCrC,sEAAmE"}
package/_cjs/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = '0.14.21';
4
+ exports.version = '0.14.23';
5
5
  //# sourceMappingURL=version.js.map
@@ -210,9 +210,9 @@ export function sign(options) {
210
210
  * @returns Whether the payload was signed by the provided address.
211
211
  */
212
212
  export function verify(options) {
213
- const { address, hash, payload, publicKey, signature } = options;
214
- if (address)
215
- return Address.isEqual(address, recoverAddress({ payload, signature }));
216
- return secp256k1.verify(signature, Bytes.from(payload), PublicKey.toBytes(publicKey), ...(hash ? [{ prehash: true, lowS: true }] : []));
213
+ const { hash, payload } = options;
214
+ if (options.address)
215
+ return Address.isEqual(options.address, recoverAddress({ payload, signature: options.signature }));
216
+ return secp256k1.verify(options.signature, Bytes.from(payload), PublicKey.toBytes(options.publicKey), ...(hash ? [{ prehash: true, lowS: true }] : []));
217
217
  }
218
218
  //# sourceMappingURL=Secp256k1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Secp256k1.js","sourceRoot":"","sources":["../../core/Secp256k1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAA;AAEhD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAG3C,qDAAqD;AACrD,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAA;AAE9B;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAC3B,UAAqC,EAAE;IAEvC,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IAC9B,MAAM,UAAU,GAAG,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAC3C,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,CAAA;IAE9C,OAAO;QACL,UAAU,EAAE,UAAmB;QAC/B,SAAS;KACV,CAAA;AACH,CAAC;AAwBD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAC1B,OAA6B;IAE7B,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,eAAe,CAAC,cAAc,CACpD,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC9B,CAAA;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAgBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAoC;IAEpC,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IACrD,MAAM,KAAK,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,CAC7C,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACpC,CAAA;IACD,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAChC,SAAS,CAAC,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACtE,CAAA;IACD,MAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA,CAAC,oBAAoB;IACtE,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,GAAG,CAAC,SAAS,CAAC,YAAY,CAAU,CAAA;IAC7D,OAAO,YAAqB,CAAA;AAC9B,CAAC;AA8BD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAwC,EAAE;IAE1C,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAA;IAChD,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAU,CAAA;IACtD,OAAO,KAAc,CAAA;AACvB,CAAC;AAkBD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,cAAc,CAC5B,OAA+B;IAE/B,OAAO,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;AACzD,CAAC;AAkBD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAiC;IAEjC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IACtC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;IACnC,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,SAAS,CACxC,MAAM,CAAC,CAAC,CAAC,EACT,MAAM,CAAC,CAAC,CAAC,CACV,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IACzB,MAAM,KAAK,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IACzE,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAgBD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,IAAI,CAAC,OAAqB;IACxC,MAAM,EACJ,YAAY,GAAG,OAAO,CAAC,YAAY,EACnC,IAAI,EACJ,OAAO,EACP,UAAU,GACX,GAAG,OAAO,CAAA;IACX,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,IAAI,CACvC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EACnB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EACtB;QACE,YAAY,EACV,OAAO,YAAY,KAAK,SAAS;YAC/B,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,IAAI,EAAE,IAAI;QACV,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnC,CACF,CAAA;IACD,OAAO;QACL,CAAC;QACD,CAAC;QACD,OAAO,EAAE,QAAQ;KAClB,CAAA;AACH,CAAC;AA0BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,MAAM,CAAC,OAAuB;IAC5C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IAChE,IAAI,OAAO;QACT,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;IACzE,OAAO,SAAS,CAAC,MAAM,CACrB,SAAS,EACT,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EACnB,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAC5B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CACjD,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"Secp256k1.js","sourceRoot":"","sources":["../../core/Secp256k1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import * as AbiParameters from '../core/AbiParameters.js';
2
+ import * as Hash from '../core/Hash.js';
3
+ import * as Hex from '../core/Hex.js';
4
+ import * as TempoAddress from './TempoAddress.js';
5
+ import * as TokenId from './TokenId.js';
6
+ const channelIdParameters = AbiParameters.from('address, address, address, address, bytes32, address, bytes32, address, uint256');
7
+ const domainSeparatorParameters = AbiParameters.from('bytes32, bytes32, bytes32, uint256, address');
8
+ const voucherHashParameters = AbiParameters.from('bytes32, bytes32, uint96');
9
+ const eip712DomainTypehash = Hash.keccak256(Hex.fromString('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'));
10
+ const nameHash = Hash.keccak256(Hex.fromString('TIP20 Channel Reserve'));
11
+ const versionHash = Hash.keccak256(Hex.fromString('1'));
12
+ /**
13
+ * TIP-20 channel reserve precompile address.
14
+ */
15
+ export const address = '0x4d50500000000000000000000000000000000000';
16
+ /**
17
+ * Delay between payer `requestClose` and `withdraw`, in seconds.
18
+ */
19
+ export const closeGracePeriod = 900n;
20
+ /**
21
+ * EIP-712 type hash for `Voucher(bytes32 channelId,uint96 cumulativeAmount)`.
22
+ */
23
+ export const voucherTypehash = Hash.keccak256(Hex.fromString('Voucher(bytes32 channelId,uint96 cumulativeAmount)'));
24
+ /**
25
+ * Computes the canonical TIP-20 channel id for a descriptor.
26
+ *
27
+ * Mirrors `computeChannelId` on the TIP-20 channel reserve precompile without
28
+ * performing an RPC call.
29
+ *
30
+ * @example
31
+ * ```ts twoslash
32
+ * import { Channel } from 'ox/tempo'
33
+ *
34
+ * const channelId = Channel.computeId({
35
+ * authorizedSigner: '0x0000000000000000000000000000000000000000',
36
+ * chainId: 4217,
37
+ * expiringNonceHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
38
+ * operator: '0x0000000000000000000000000000000000000000',
39
+ * payee: '0x2222222222222222222222222222222222222222',
40
+ * payer: '0x1111111111111111111111111111111111111111',
41
+ * salt: '0x0000000000000000000000000000000000000000000000000000000000000001',
42
+ * token: 1n,
43
+ * })
44
+ * ```
45
+ *
46
+ * @param value - Channel descriptor and chain id.
47
+ * @returns The channel id.
48
+ */
49
+ export function computeId(value) {
50
+ return Hash.keccak256(AbiParameters.encode(channelIdParameters, [
51
+ TempoAddress.resolve(value.payer),
52
+ TempoAddress.resolve(value.payee),
53
+ TempoAddress.resolve(value.operator),
54
+ TokenId.toAddress(value.token),
55
+ value.salt,
56
+ TempoAddress.resolve(value.authorizedSigner),
57
+ value.expiringNonceHash,
58
+ address,
59
+ BigInt(value.chainId),
60
+ ]));
61
+ }
62
+ /**
63
+ * Computes the EIP-712 domain separator for the TIP-20 channel reserve.
64
+ *
65
+ * Mirrors `domainSeparator` on the TIP-20 channel reserve precompile without
66
+ * performing an RPC call.
67
+ *
68
+ * @example
69
+ * ```ts twoslash
70
+ * import { Channel } from 'ox/tempo'
71
+ *
72
+ * const separator = Channel.domainSeparator({ chainId: 4217 })
73
+ * ```
74
+ *
75
+ * @param value - Chain id.
76
+ * @returns The EIP-712 domain separator.
77
+ */
78
+ export function domainSeparator(value) {
79
+ return Hash.keccak256(AbiParameters.encode(domainSeparatorParameters, [
80
+ eip712DomainTypehash,
81
+ nameHash,
82
+ versionHash,
83
+ BigInt(value.chainId),
84
+ address,
85
+ ]));
86
+ }
87
+ /**
88
+ * Computes the EIP-712 sign payload for a TIP-20 channel voucher.
89
+ *
90
+ * Mirrors `getVoucherDigest` on the TIP-20 channel reserve precompile without
91
+ * performing an RPC call.
92
+ *
93
+ * @example
94
+ * ```ts twoslash
95
+ * import { Channel } from 'ox/tempo'
96
+ *
97
+ * const payload = Channel.getVoucherSignPayload({
98
+ * chainId: 4217,
99
+ * channelId: '0x0000000000000000000000000000000000000000000000000000000000000000',
100
+ * cumulativeAmount: 1n,
101
+ * })
102
+ * ```
103
+ *
104
+ * @param value - Voucher fields and chain id.
105
+ * @returns The voucher sign payload.
106
+ */
107
+ export function getVoucherSignPayload(value) {
108
+ const voucherHash = Hash.keccak256(AbiParameters.encode(voucherHashParameters, [
109
+ voucherTypehash,
110
+ value.channelId,
111
+ value.cumulativeAmount,
112
+ ]));
113
+ return Hash.keccak256(Hex.concat('0x1901', domainSeparator({ chainId: value.chainId }), voucherHash));
114
+ }
115
+ //# sourceMappingURL=Channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Channel.js","sourceRoot":"","sources":["../../tempo/Channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAA;AAEzD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC,MAAM,mBAAmB,GAAG,aAAa,CAAC,IAAI,CAC5C,iFAAiF,CAClF,CAAA;AACD,MAAM,yBAAyB,GAAG,aAAa,CAAC,IAAI,CAClD,6CAA6C,CAC9C,CAAA;AACD,MAAM,qBAAqB,GAAG,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;AAE5E,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CACzC,GAAG,CAAC,UAAU,CACZ,oFAAoF,CACrF,CACF,CAAA;AACD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAAA;AACxE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;AAEvD;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAClB,4CAA+E,CAAA;AAEjF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAC3C,GAAG,CAAC,UAAU,CAAC,oDAAoD,CAAC,CACrE,CAAA;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,SAAS,CAAC,KAAsB;IAC9C,OAAO,IAAI,CAAC,SAAS,CACnB,aAAa,CAAC,MAAM,CAAC,mBAAmB,EAAE;QACxC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACjC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACjC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QACpC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9B,KAAK,CAAC,IAAI;QACV,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAC5C,KAAK,CAAC,iBAAiB;QACvB,OAAO;QACP,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;KACtB,CAAC,CACH,CAAA;AACH,CAAC;AAcD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAAC,KAA4B;IAC1D,OAAO,IAAI,CAAC,SAAS,CACnB,aAAa,CAAC,MAAM,CAAC,yBAAyB,EAAE;QAC9C,oBAAoB;QACpB,QAAQ;QACR,WAAW;QACX,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QACrB,OAAO;KACR,CAAC,CACH,CAAA;AACH,CAAC;AAWD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAkC;IAElC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAChC,aAAa,CAAC,MAAM,CAAC,qBAAqB,EAAE;QAC1C,eAAe;QACf,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,gBAAgB;KACvB,CAAC,CACH,CAAA;IACD,OAAO,IAAI,CAAC,SAAS,CACnB,GAAG,CAAC,MAAM,CACR,QAAQ,EACR,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAC3C,WAAW,CACZ,CACF,CAAA;AACH,CAAC"}
@@ -31,6 +31,32 @@
31
31
  * @category Reference
32
32
  */
33
33
  export * as AuthorizationTempo from './AuthorizationTempo.js';
34
+ /**
35
+ * TIP-20 channel reserve constants and deterministic hashing utilities.
36
+ *
37
+ * The channel reserve precompile exposes helper methods for channel identifiers,
38
+ * voucher sign payloads, and its EIP-712 domain separator. These utilities compute the
39
+ * same values locally when the chain id and channel fields are known.
40
+ *
41
+ * @example
42
+ * ```ts twoslash
43
+ * import { Channel } from 'ox/tempo'
44
+ *
45
+ * const channelId = Channel.computeId({
46
+ * authorizedSigner: '0x0000000000000000000000000000000000000000',
47
+ * chainId: 4217,
48
+ * expiringNonceHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
49
+ * operator: '0x0000000000000000000000000000000000000000',
50
+ * payee: '0x2222222222222222222222222222222222222222',
51
+ * payer: '0x1111111111111111111111111111111111111111',
52
+ * salt: '0x0000000000000000000000000000000000000000000000000000000000000001',
53
+ * token: 1n,
54
+ * })
55
+ * ```
56
+ *
57
+ * @category Reference
58
+ */
59
+ export * as Channel from './Channel.js';
34
60
  /**
35
61
  * Tempo key authorization utilities for provisioning and signing access keys.
36
62
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AACzD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAC3D;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AACzD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAC3D;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA"}
package/_esm/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /** @internal */
2
- export const version = '0.14.21';
2
+ export const version = '0.14.23';
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Secp256k1.d.ts","sourceRoot":"","sources":["../../core/Secp256k1.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAEhD,qDAAqD;AACrD,eAAO,MAAM,KAAK,yDAAY,CAAA;AAE9B;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,EAAE,SAAS,KAAK,GAAG,OAAO,GAAG,KAAK,EAC9D,OAAO,GAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAM,GACtC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAS9B;AAED,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC;IACrC,KAAK,OAAO,CAAC,EAAE,SAAS,KAAK,GAAG,OAAO,GAAG,KAAK,IAAI;QACjD;;;WAGG;QACH,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAA;KACtC,CAAA;IAED,KAAK,UAAU,CAAC,EAAE,SAAS,KAAK,GAAG,OAAO,IAAI;QAC5C,UAAU,EACN,CAAC,EAAE,SAAS,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAC1C,CAAC,EAAE,SAAS,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAA;QACxC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAA;KAC/B,CAAA;IAED,KAAK,SAAS,GACV,GAAG,CAAC,SAAS,CAAC,SAAS,GACvB,SAAS,CAAC,IAAI,CAAC,SAAS,GACxB,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,CAAC,OAAO,GAC5B,SAAS,CAAC,SAAS,CAMrB;AAED,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,KAAK,OAAO,GAAG;QACb;;WAEG;QACH,UAAU,EAAE,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAA;KAClC,CAAA;IAED,KAAK,SAAS,GACV,GAAG,CAAC,IAAI,CAAC,SAAS,GAClB,SAAS,CAAC,IAAI,CAAC,SAAS,GACxB,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,EAAE,SAAS,KAAK,GAAG,OAAO,GAAG,KAAK,EAChE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,GACnC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,CAWhC;AAED,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,KAAK,OAAO,CAAC,EAAE,SAAS,KAAK,GAAG,OAAO,GAAG,KAAK,IAAI;QACjD;;;WAGG;QACH,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAA;QACrC;;WAEG;QACH,UAAU,EAAE,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAA;QACjC;;WAEG;QACH,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;KACxC,CAAA;IAED,KAAK,UAAU,CAAC,EAAE,SAAS,KAAK,GAAG,OAAO,IACtC,CAAC,EAAE,SAAS,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAC1C,CAAC,EAAE,SAAS,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAA;IAExC,KAAK,SAAS,GACV,GAAG,CAAC,IAAI,CAAC,SAAS,GAClB,SAAS,CAAC,KAAK,CAAC,SAAS,GACzB,GAAG,CAAC,SAAS,CAAC,SAAS,GACvB,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,KAAK,GAAG,OAAO,GAAG,KAAK,EACjE,OAAO,GAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAM,GACzC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAKjC;AAED,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,KAAK,OAAO,CAAC,EAAE,SAAS,KAAK,GAAG,OAAO,GAAG,KAAK,IAAI;QACjD;;;WAGG;QACH,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAA;KACtC,CAAA;IAED,KAAK,UAAU,CAAC,EAAE,SAAS,KAAK,GAAG,OAAO,IACtC,CAAC,EAAE,SAAS,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAC1C,CAAC,EAAE,SAAS,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAA;IAExC,KAAK,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,eAAe,CAAA;CAClE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,cAAc,CAAC,OAAO,GAC9B,cAAc,CAAC,UAAU,CAE3B;AAED,MAAM,CAAC,OAAO,WAAW,cAAc,CAAC;IACtC,KAAK,OAAO,GAAG;QACb,+BAA+B;QAC/B,OAAO,EAAE,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAA;QAC9B,gCAAgC;QAChC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAA;KAC/B,CAAA;IAED,KAAK,UAAU,GAAG,OAAO,CAAC,OAAO,CAAA;IAEjC,KAAK,SAAS,GACV,OAAO,CAAC,aAAa,CAAC,SAAS,GAC/B,gBAAgB,CAAC,SAAS,GAC1B,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,CAAC,OAAO,GAChC,SAAS,CAAC,SAAS,CASrB;AAED,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,KAAK,OAAO,GAAG;QACb,+BAA+B;QAC/B,OAAO,EAAE,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAA;QAC9B,gCAAgC;QAChC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAA;KAC/B,CAAA;IAED,KAAK,SAAS,GACV,SAAS,CAAC,IAAI,CAAC,SAAS,GACxB,GAAG,CAAC,IAAI,CAAC,SAAS,GAClB,MAAM,CAAC,eAAe,CAAA;CAC3B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS,CAwB/D;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,KAAK,OAAO,GAAG;QACb;;;WAGG;QACH,YAAY,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,SAAS,CAAA;QAC1D;;WAEG;QACH,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAC1B;;WAEG;QACH,OAAO,EAAE,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAA;QAC9B;;WAEG;QACH,UAAU,EAAE,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAA;KAClC,CAAA;IAED,KAAK,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,eAAe,CAAA;CAC/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAUvD;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,OAAO,GAAG;QACb,mFAAmF;QACnF,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAC1B,+BAA+B;QAC/B,OAAO,EAAE,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAA;KAC/B,GAAG,KAAK,CACL;QACE,uCAAuC;QACvC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;QACxB,gCAAgC;QAChC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAA;KAC/B,GACD;QACE,0CAA0C;QAC1C,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACvC,gCAAgC;QAChC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;KACtC,CACJ,CAAA;IAED,KAAK,SAAS,GAAG,MAAM,CAAC,eAAe,CAAA;CACxC"}
1
+ {"version":3,"file":"Secp256k1.d.ts","sourceRoot":"","sources":["../../core/Secp256k1.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ import * as AbiParameters from '../core/AbiParameters.js';
2
+ import * as Hash from '../core/Hash.js';
3
+ import * as Hex from '../core/Hex.js';
4
+ import * as TempoAddress from './TempoAddress.js';
5
+ import * as TokenId from './TokenId.js';
6
+ /**
7
+ * TIP-20 channel reserve precompile address.
8
+ */
9
+ export declare const address: "0x4d50500000000000000000000000000000000000";
10
+ /**
11
+ * Delay between payer `requestClose` and `withdraw`, in seconds.
12
+ */
13
+ export declare const closeGracePeriod = 900n;
14
+ /**
15
+ * EIP-712 type hash for `Voucher(bytes32 channelId,uint96 cumulativeAmount)`.
16
+ */
17
+ export declare const voucherTypehash: `0x${string}`;
18
+ /**
19
+ * TIP-20 channel descriptor.
20
+ */
21
+ export type Descriptor = {
22
+ /** Account that funded the channel and receives refunds. */
23
+ payer: TempoAddress.Address;
24
+ /** Account that receives settled voucher payments. */
25
+ payee: TempoAddress.Address;
26
+ /** Optional relayer allowed to submit `settle` for the payee. */
27
+ operator: TempoAddress.Address;
28
+ /** TIP-20 token address held by the channel. */
29
+ token: TokenId.TokenIdOrAddress<TempoAddress.Address>;
30
+ /** User-supplied salt to distinguish otherwise identical channels. */
31
+ salt: Hex.Hex;
32
+ /** Optional signer for vouchers. Zero means `payer` signs. */
33
+ authorizedSigner: TempoAddress.Address;
34
+ /** Transaction-derived hash assigned when the channel was opened. */
35
+ expiringNonceHash: Hex.Hex;
36
+ };
37
+ /**
38
+ * Computes the canonical TIP-20 channel id for a descriptor.
39
+ *
40
+ * Mirrors `computeChannelId` on the TIP-20 channel reserve precompile without
41
+ * performing an RPC call.
42
+ *
43
+ * @example
44
+ * ```ts twoslash
45
+ * import { Channel } from 'ox/tempo'
46
+ *
47
+ * const channelId = Channel.computeId({
48
+ * authorizedSigner: '0x0000000000000000000000000000000000000000',
49
+ * chainId: 4217,
50
+ * expiringNonceHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
51
+ * operator: '0x0000000000000000000000000000000000000000',
52
+ * payee: '0x2222222222222222222222222222222222222222',
53
+ * payer: '0x1111111111111111111111111111111111111111',
54
+ * salt: '0x0000000000000000000000000000000000000000000000000000000000000001',
55
+ * token: 1n,
56
+ * })
57
+ * ```
58
+ *
59
+ * @param value - Channel descriptor and chain id.
60
+ * @returns The channel id.
61
+ */
62
+ export declare function computeId(value: computeId.Value): Hex.Hex;
63
+ export declare namespace computeId {
64
+ type Value = Descriptor & {
65
+ /** Chain id used by the channel reserve precompile. */
66
+ chainId: number | bigint;
67
+ };
68
+ type ErrorType = AbiParameters.encode.ErrorType | Hash.keccak256.ErrorType | TempoAddress.parse.ErrorType;
69
+ }
70
+ /**
71
+ * Computes the EIP-712 domain separator for the TIP-20 channel reserve.
72
+ *
73
+ * Mirrors `domainSeparator` on the TIP-20 channel reserve precompile without
74
+ * performing an RPC call.
75
+ *
76
+ * @example
77
+ * ```ts twoslash
78
+ * import { Channel } from 'ox/tempo'
79
+ *
80
+ * const separator = Channel.domainSeparator({ chainId: 4217 })
81
+ * ```
82
+ *
83
+ * @param value - Chain id.
84
+ * @returns The EIP-712 domain separator.
85
+ */
86
+ export declare function domainSeparator(value: domainSeparator.Value): Hex.Hex;
87
+ export declare namespace domainSeparator {
88
+ type Value = {
89
+ /** Chain id used by the channel reserve precompile. */
90
+ chainId: number | bigint;
91
+ };
92
+ type ErrorType = AbiParameters.encode.ErrorType | Hash.keccak256.ErrorType;
93
+ }
94
+ /**
95
+ * Computes the EIP-712 sign payload for a TIP-20 channel voucher.
96
+ *
97
+ * Mirrors `getVoucherDigest` on the TIP-20 channel reserve precompile without
98
+ * performing an RPC call.
99
+ *
100
+ * @example
101
+ * ```ts twoslash
102
+ * import { Channel } from 'ox/tempo'
103
+ *
104
+ * const payload = Channel.getVoucherSignPayload({
105
+ * chainId: 4217,
106
+ * channelId: '0x0000000000000000000000000000000000000000000000000000000000000000',
107
+ * cumulativeAmount: 1n,
108
+ * })
109
+ * ```
110
+ *
111
+ * @param value - Voucher fields and chain id.
112
+ * @returns The voucher sign payload.
113
+ */
114
+ export declare function getVoucherSignPayload(value: getVoucherSignPayload.Value): Hex.Hex;
115
+ export declare namespace getVoucherSignPayload {
116
+ type Value = {
117
+ /** Chain id used by the channel reserve precompile. */
118
+ chainId: number | bigint;
119
+ /** Channel id. */
120
+ channelId: Hex.Hex;
121
+ /** Total voucher amount signed for the channel. */
122
+ cumulativeAmount: bigint;
123
+ };
124
+ type ErrorType = AbiParameters.encode.ErrorType | domainSeparator.ErrorType | Hash.keccak256.ErrorType;
125
+ }
126
+ //# sourceMappingURL=Channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../../tempo/Channel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAA;AAEzD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAkBvC;;GAEG;AACH,eAAO,MAAM,OAAO,8CAC6D,CAAA;AAEjF;;GAEG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAA;AAEpC;;GAEG;AACH,eAAO,MAAM,eAAe,eAE3B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,4DAA4D;IAC5D,KAAK,EAAE,YAAY,CAAC,OAAO,CAAA;IAC3B,sDAAsD;IACtD,KAAK,EAAE,YAAY,CAAC,OAAO,CAAA;IAC3B,iEAAiE;IACjE,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAA;IAC9B,gDAAgD;IAChD,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IACrD,sEAAsE;IACtE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAA;IACb,8DAA8D;IAC9D,gBAAgB,EAAE,YAAY,CAAC,OAAO,CAAA;IACtC,qEAAqE;IACrE,iBAAiB,EAAE,GAAG,CAAC,GAAG,CAAA;CAC3B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAczD;AAED,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC;IACjC,KAAK,KAAK,GAAG,UAAU,GAAG;QACxB,uDAAuD;QACvD,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KACzB,CAAA;IAED,KAAK,SAAS,GACV,aAAa,CAAC,MAAM,CAAC,SAAS,GAC9B,IAAI,CAAC,SAAS,CAAC,SAAS,GACxB,YAAY,CAAC,KAAK,CAAC,SAAS,CAAA;CACjC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAUrE;AAED,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,KAAK,KAAK,GAAG;QACX,uDAAuD;QACvD,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KACzB,CAAA;IAED,KAAK,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAA;CAC3E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,qBAAqB,CAAC,KAAK,GACjC,GAAG,CAAC,GAAG,CAeT;AAED,MAAM,CAAC,OAAO,WAAW,qBAAqB,CAAC;IAC7C,KAAK,KAAK,GAAG;QACX,uDAAuD;QACvD,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;QACxB,kBAAkB;QAClB,SAAS,EAAE,GAAG,CAAC,GAAG,CAAA;QAClB,mDAAmD;QACnD,gBAAgB,EAAE,MAAM,CAAA;KACzB,CAAA;IAED,KAAK,SAAS,GACV,aAAa,CAAC,MAAM,CAAC,SAAS,GAC9B,eAAe,CAAC,SAAS,GACzB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAA;CAC7B"}
@@ -33,6 +33,32 @@ export type {};
33
33
  * @category Reference
34
34
  */
35
35
  export * as AuthorizationTempo from './AuthorizationTempo.js';
36
+ /**
37
+ * TIP-20 channel reserve constants and deterministic hashing utilities.
38
+ *
39
+ * The channel reserve precompile exposes helper methods for channel identifiers,
40
+ * voucher sign payloads, and its EIP-712 domain separator. These utilities compute the
41
+ * same values locally when the chain id and channel fields are known.
42
+ *
43
+ * @example
44
+ * ```ts twoslash
45
+ * import { Channel } from 'ox/tempo'
46
+ *
47
+ * const channelId = Channel.computeId({
48
+ * authorizedSigner: '0x0000000000000000000000000000000000000000',
49
+ * chainId: 4217,
50
+ * expiringNonceHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
51
+ * operator: '0x0000000000000000000000000000000000000000',
52
+ * payee: '0x2222222222222222222222222222222222222222',
53
+ * payer: '0x1111111111111111111111111111111111111111',
54
+ * salt: '0x0000000000000000000000000000000000000000000000000000000000000001',
55
+ * token: 1n,
56
+ * })
57
+ * ```
58
+ *
59
+ * @category Reference
60
+ */
61
+ export * as Channel from './Channel.js';
36
62
  /**
37
63
  * Tempo key authorization utilities for provisioning and signing access keys.
38
64
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,YAAY,EAAE,CAAA;AAEd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AACzD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAC3D;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,YAAY,EAAE,CAAA;AAEd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AACzD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAC3D;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA"}
@@ -1,3 +1,3 @@
1
1
  /** @internal */
2
- export declare const version = "0.14.21";
2
+ export declare const version = "0.14.23";
3
3
  //# sourceMappingURL=version.d.ts.map
package/core/Secp256k1.ts CHANGED
@@ -386,13 +386,16 @@ export declare namespace sign {
386
386
  * @returns Whether the payload was signed by the provided address.
387
387
  */
388
388
  export function verify(options: verify.Options): boolean {
389
- const { address, hash, payload, publicKey, signature } = options
390
- if (address)
391
- return Address.isEqual(address, recoverAddress({ payload, signature }))
389
+ const { hash, payload } = options
390
+ if (options.address)
391
+ return Address.isEqual(
392
+ options.address,
393
+ recoverAddress({ payload, signature: options.signature }),
394
+ )
392
395
  return secp256k1.verify(
393
- signature,
396
+ options.signature,
394
397
  Bytes.from(payload),
395
- PublicKey.toBytes(publicKey),
398
+ PublicKey.toBytes(options.publicKey),
396
399
  ...(hash ? [{ prehash: true, lowS: true }] : []),
397
400
  )
398
401
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ox",
3
3
  "description": "Ethereum Standard Library",
4
- "version": "0.14.21",
4
+ "version": "0.14.23",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",
@@ -504,6 +504,11 @@
504
504
  "import": "./_esm/tempo/AuthorizationTempo.js",
505
505
  "default": "./_cjs/tempo/AuthorizationTempo.js"
506
506
  },
507
+ "./tempo/Channel": {
508
+ "types": "./_types/tempo/Channel.d.ts",
509
+ "import": "./_esm/tempo/Channel.js",
510
+ "default": "./_cjs/tempo/Channel.js"
511
+ },
507
512
  "./tempo/KeyAuthorization": {
508
513
  "types": "./_types/tempo/KeyAuthorization.d.ts",
509
514
  "import": "./_esm/tempo/KeyAuthorization.js",
@@ -0,0 +1,6 @@
1
+ {
2
+ "type": "module",
3
+ "types": "../../_types/tempo/Channel.d.ts",
4
+ "main": "../../_cjs/tempo/Channel.js",
5
+ "module": "../../_esm/tempo/Channel.js"
6
+ }
@@ -0,0 +1,121 @@
1
+ import { Hash, Hex, TypedData } from 'ox'
2
+ import { Channel } from 'ox/tempo'
3
+ import { describe, expect, test } from 'vitest'
4
+
5
+ const descriptor = {
6
+ authorizedSigner: '0x3333333333333333333333333333333333333333',
7
+ chainId: 4217,
8
+ expiringNonceHash:
9
+ '0x0000000000000000000000000000000000000000000000000000000000000002',
10
+ operator: '0x0000000000000000000000000000000000000000',
11
+ payee: '0x2222222222222222222222222222222222222222',
12
+ payer: '0x1111111111111111111111111111111111111111',
13
+ salt: '0x0000000000000000000000000000000000000000000000000000000000000001',
14
+ token: 1n,
15
+ } as const
16
+
17
+ describe('address', () => {
18
+ test('default', () => {
19
+ expect(Channel.address).toMatchInlineSnapshot(
20
+ `"0x4d50500000000000000000000000000000000000"`,
21
+ )
22
+ })
23
+ })
24
+
25
+ describe('closeGracePeriod', () => {
26
+ test('default', () => {
27
+ expect(Channel.closeGracePeriod).toMatchInlineSnapshot(`900n`)
28
+ })
29
+ })
30
+
31
+ describe('voucherTypehash', () => {
32
+ test('default', () => {
33
+ expect(Channel.voucherTypehash).toBe(
34
+ Hash.keccak256(
35
+ Hex.fromString('Voucher(bytes32 channelId,uint96 cumulativeAmount)'),
36
+ ),
37
+ )
38
+ expect(Channel.voucherTypehash).toMatchInlineSnapshot(
39
+ `"0x4730b4b2fe8de522475e80e010877c5b58ad10eb07fd0436615ee123f743bbe8"`,
40
+ )
41
+ })
42
+ })
43
+
44
+ describe('computeId', () => {
45
+ test('default', () => {
46
+ expect(Channel.computeId(descriptor)).toMatchInlineSnapshot(
47
+ `"0xa392474fdbb5c6753e8789236893343f11200f43ba53cca09c0cda3651946ef2"`,
48
+ )
49
+ })
50
+
51
+ test('address inputs', () => {
52
+ expect(
53
+ Channel.computeId({
54
+ ...descriptor,
55
+ payee: 'tempox0x2222222222222222222222222222222222222222',
56
+ token: 'tempox0x20c0000000000000000000000000000000000001',
57
+ }),
58
+ ).toBe(Channel.computeId(descriptor))
59
+ })
60
+
61
+ test('chain id bigint', () => {
62
+ expect(Channel.computeId({ ...descriptor, chainId: 4217n })).toBe(
63
+ Channel.computeId(descriptor),
64
+ )
65
+ })
66
+ })
67
+
68
+ describe('domainSeparator', () => {
69
+ test('default', () => {
70
+ const separator = Channel.domainSeparator({ chainId: descriptor.chainId })
71
+
72
+ expect(separator).toBe(
73
+ TypedData.domainSeparator({
74
+ name: 'TIP20 Channel Reserve',
75
+ version: '1',
76
+ chainId: descriptor.chainId,
77
+ verifyingContract: Channel.address,
78
+ }),
79
+ )
80
+ expect(separator).toMatchInlineSnapshot(
81
+ `"0x6465ffa0b0c1e7cfc1a894ba54d79615bc06fd7cc9cfec558f3df82189d17367"`,
82
+ )
83
+ })
84
+ })
85
+
86
+ describe('getVoucherSignPayload', () => {
87
+ test('default', () => {
88
+ const channelId = Channel.computeId(descriptor)
89
+ const cumulativeAmount = 100n
90
+ const payload = Channel.getVoucherSignPayload({
91
+ chainId: descriptor.chainId,
92
+ channelId,
93
+ cumulativeAmount,
94
+ })
95
+
96
+ expect(payload).toBe(
97
+ TypedData.getSignPayload({
98
+ domain: {
99
+ name: 'TIP20 Channel Reserve',
100
+ version: '1',
101
+ chainId: descriptor.chainId,
102
+ verifyingContract: Channel.address,
103
+ },
104
+ message: {
105
+ channelId,
106
+ cumulativeAmount,
107
+ },
108
+ primaryType: 'Voucher',
109
+ types: {
110
+ Voucher: [
111
+ { name: 'channelId', type: 'bytes32' },
112
+ { name: 'cumulativeAmount', type: 'uint96' },
113
+ ],
114
+ },
115
+ }),
116
+ )
117
+ expect(payload).toMatchInlineSnapshot(
118
+ `"0x22bb33a0c0d3e04c9312dd8c70c80154e953fef495dd76ffa14388a9c7f987d3"`,
119
+ )
120
+ })
121
+ })
@@ -0,0 +1,205 @@
1
+ import * as AbiParameters from '../core/AbiParameters.js'
2
+ import type * as Address from '../core/Address.js'
3
+ import * as Hash from '../core/Hash.js'
4
+ import * as Hex from '../core/Hex.js'
5
+ import * as TempoAddress from './TempoAddress.js'
6
+ import * as TokenId from './TokenId.js'
7
+
8
+ const channelIdParameters = AbiParameters.from(
9
+ 'address, address, address, address, bytes32, address, bytes32, address, uint256',
10
+ )
11
+ const domainSeparatorParameters = AbiParameters.from(
12
+ 'bytes32, bytes32, bytes32, uint256, address',
13
+ )
14
+ const voucherHashParameters = AbiParameters.from('bytes32, bytes32, uint96')
15
+
16
+ const eip712DomainTypehash = Hash.keccak256(
17
+ Hex.fromString(
18
+ 'EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)',
19
+ ),
20
+ )
21
+ const nameHash = Hash.keccak256(Hex.fromString('TIP20 Channel Reserve'))
22
+ const versionHash = Hash.keccak256(Hex.fromString('1'))
23
+
24
+ /**
25
+ * TIP-20 channel reserve precompile address.
26
+ */
27
+ export const address =
28
+ '0x4d50500000000000000000000000000000000000' as const satisfies Address.Address
29
+
30
+ /**
31
+ * Delay between payer `requestClose` and `withdraw`, in seconds.
32
+ */
33
+ export const closeGracePeriod = 900n
34
+
35
+ /**
36
+ * EIP-712 type hash for `Voucher(bytes32 channelId,uint96 cumulativeAmount)`.
37
+ */
38
+ export const voucherTypehash = Hash.keccak256(
39
+ Hex.fromString('Voucher(bytes32 channelId,uint96 cumulativeAmount)'),
40
+ )
41
+
42
+ /**
43
+ * TIP-20 channel descriptor.
44
+ */
45
+ export type Descriptor = {
46
+ /** Account that funded the channel and receives refunds. */
47
+ payer: TempoAddress.Address
48
+ /** Account that receives settled voucher payments. */
49
+ payee: TempoAddress.Address
50
+ /** Optional relayer allowed to submit `settle` for the payee. */
51
+ operator: TempoAddress.Address
52
+ /** TIP-20 token address held by the channel. */
53
+ token: TokenId.TokenIdOrAddress<TempoAddress.Address>
54
+ /** User-supplied salt to distinguish otherwise identical channels. */
55
+ salt: Hex.Hex
56
+ /** Optional signer for vouchers. Zero means `payer` signs. */
57
+ authorizedSigner: TempoAddress.Address
58
+ /** Transaction-derived hash assigned when the channel was opened. */
59
+ expiringNonceHash: Hex.Hex
60
+ }
61
+
62
+ /**
63
+ * Computes the canonical TIP-20 channel id for a descriptor.
64
+ *
65
+ * Mirrors `computeChannelId` on the TIP-20 channel reserve precompile without
66
+ * performing an RPC call.
67
+ *
68
+ * @example
69
+ * ```ts twoslash
70
+ * import { Channel } from 'ox/tempo'
71
+ *
72
+ * const channelId = Channel.computeId({
73
+ * authorizedSigner: '0x0000000000000000000000000000000000000000',
74
+ * chainId: 4217,
75
+ * expiringNonceHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
76
+ * operator: '0x0000000000000000000000000000000000000000',
77
+ * payee: '0x2222222222222222222222222222222222222222',
78
+ * payer: '0x1111111111111111111111111111111111111111',
79
+ * salt: '0x0000000000000000000000000000000000000000000000000000000000000001',
80
+ * token: 1n,
81
+ * })
82
+ * ```
83
+ *
84
+ * @param value - Channel descriptor and chain id.
85
+ * @returns The channel id.
86
+ */
87
+ export function computeId(value: computeId.Value): Hex.Hex {
88
+ return Hash.keccak256(
89
+ AbiParameters.encode(channelIdParameters, [
90
+ TempoAddress.resolve(value.payer),
91
+ TempoAddress.resolve(value.payee),
92
+ TempoAddress.resolve(value.operator),
93
+ TokenId.toAddress(value.token),
94
+ value.salt,
95
+ TempoAddress.resolve(value.authorizedSigner),
96
+ value.expiringNonceHash,
97
+ address,
98
+ BigInt(value.chainId),
99
+ ]),
100
+ )
101
+ }
102
+
103
+ export declare namespace computeId {
104
+ type Value = Descriptor & {
105
+ /** Chain id used by the channel reserve precompile. */
106
+ chainId: number | bigint
107
+ }
108
+
109
+ type ErrorType =
110
+ | AbiParameters.encode.ErrorType
111
+ | Hash.keccak256.ErrorType
112
+ | TempoAddress.parse.ErrorType
113
+ }
114
+
115
+ /**
116
+ * Computes the EIP-712 domain separator for the TIP-20 channel reserve.
117
+ *
118
+ * Mirrors `domainSeparator` on the TIP-20 channel reserve precompile without
119
+ * performing an RPC call.
120
+ *
121
+ * @example
122
+ * ```ts twoslash
123
+ * import { Channel } from 'ox/tempo'
124
+ *
125
+ * const separator = Channel.domainSeparator({ chainId: 4217 })
126
+ * ```
127
+ *
128
+ * @param value - Chain id.
129
+ * @returns The EIP-712 domain separator.
130
+ */
131
+ export function domainSeparator(value: domainSeparator.Value): Hex.Hex {
132
+ return Hash.keccak256(
133
+ AbiParameters.encode(domainSeparatorParameters, [
134
+ eip712DomainTypehash,
135
+ nameHash,
136
+ versionHash,
137
+ BigInt(value.chainId),
138
+ address,
139
+ ]),
140
+ )
141
+ }
142
+
143
+ export declare namespace domainSeparator {
144
+ type Value = {
145
+ /** Chain id used by the channel reserve precompile. */
146
+ chainId: number | bigint
147
+ }
148
+
149
+ type ErrorType = AbiParameters.encode.ErrorType | Hash.keccak256.ErrorType
150
+ }
151
+
152
+ /**
153
+ * Computes the EIP-712 sign payload for a TIP-20 channel voucher.
154
+ *
155
+ * Mirrors `getVoucherDigest` on the TIP-20 channel reserve precompile without
156
+ * performing an RPC call.
157
+ *
158
+ * @example
159
+ * ```ts twoslash
160
+ * import { Channel } from 'ox/tempo'
161
+ *
162
+ * const payload = Channel.getVoucherSignPayload({
163
+ * chainId: 4217,
164
+ * channelId: '0x0000000000000000000000000000000000000000000000000000000000000000',
165
+ * cumulativeAmount: 1n,
166
+ * })
167
+ * ```
168
+ *
169
+ * @param value - Voucher fields and chain id.
170
+ * @returns The voucher sign payload.
171
+ */
172
+ export function getVoucherSignPayload(
173
+ value: getVoucherSignPayload.Value,
174
+ ): Hex.Hex {
175
+ const voucherHash = Hash.keccak256(
176
+ AbiParameters.encode(voucherHashParameters, [
177
+ voucherTypehash,
178
+ value.channelId,
179
+ value.cumulativeAmount,
180
+ ]),
181
+ )
182
+ return Hash.keccak256(
183
+ Hex.concat(
184
+ '0x1901',
185
+ domainSeparator({ chainId: value.chainId }),
186
+ voucherHash,
187
+ ),
188
+ )
189
+ }
190
+
191
+ export declare namespace getVoucherSignPayload {
192
+ type Value = {
193
+ /** Chain id used by the channel reserve precompile. */
194
+ chainId: number | bigint
195
+ /** Channel id. */
196
+ channelId: Hex.Hex
197
+ /** Total voucher amount signed for the channel. */
198
+ cumulativeAmount: bigint
199
+ }
200
+
201
+ type ErrorType =
202
+ | AbiParameters.encode.ErrorType
203
+ | domainSeparator.ErrorType
204
+ | Hash.keccak256.ErrorType
205
+ }
@@ -171,7 +171,7 @@ describe('serialize', () => {
171
171
  })
172
172
 
173
173
  const credentials = import.meta.env.VITE_TEMPO_CREDENTIALS
174
- const rpcUrl = 'https://rpc-zone-006-private.tempoxyz.dev'
174
+ const rpcUrl = 'https://rpc-zone-b.testnet.tempo.xyz'
175
175
 
176
176
  describe('e2e', () => {
177
177
  test.skipIf(!credentials)('succeeds with auth token', async () => {
package/tempo/index.ts CHANGED
@@ -35,6 +35,32 @@ export type {}
35
35
  * @category Reference
36
36
  */
37
37
  export * as AuthorizationTempo from './AuthorizationTempo.js'
38
+ /**
39
+ * TIP-20 channel reserve constants and deterministic hashing utilities.
40
+ *
41
+ * The channel reserve precompile exposes helper methods for channel identifiers,
42
+ * voucher sign payloads, and its EIP-712 domain separator. These utilities compute the
43
+ * same values locally when the chain id and channel fields are known.
44
+ *
45
+ * @example
46
+ * ```ts twoslash
47
+ * import { Channel } from 'ox/tempo'
48
+ *
49
+ * const channelId = Channel.computeId({
50
+ * authorizedSigner: '0x0000000000000000000000000000000000000000',
51
+ * chainId: 4217,
52
+ * expiringNonceHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
53
+ * operator: '0x0000000000000000000000000000000000000000',
54
+ * payee: '0x2222222222222222222222222222222222222222',
55
+ * payer: '0x1111111111111111111111111111111111111111',
56
+ * salt: '0x0000000000000000000000000000000000000000000000000000000000000001',
57
+ * token: 1n,
58
+ * })
59
+ * ```
60
+ *
61
+ * @category Reference
62
+ */
63
+ export * as Channel from './Channel.js'
38
64
  /**
39
65
  * Tempo key authorization utilities for provisioning and signing access keys.
40
66
  *
package/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  /** @internal */
2
- export const version = '0.14.21'
2
+ export const version = '0.14.23'