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 +12 -0
- package/_cjs/core/Secp256k1.js +4 -4
- package/_cjs/core/Secp256k1.js.map +1 -1
- package/_cjs/tempo/Channel.js +51 -0
- package/_cjs/tempo/Channel.js.map +1 -0
- package/_cjs/tempo/index.js +2 -1
- package/_cjs/tempo/index.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/core/Secp256k1.js +4 -4
- package/_esm/core/Secp256k1.js.map +1 -1
- package/_esm/tempo/Channel.js +115 -0
- package/_esm/tempo/Channel.js.map +1 -0
- package/_esm/tempo/index.js +26 -0
- package/_esm/tempo/index.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/core/Secp256k1.d.ts.map +1 -1
- package/_types/tempo/Channel.d.ts +126 -0
- package/_types/tempo/Channel.d.ts.map +1 -0
- package/_types/tempo/index.d.ts +26 -0
- package/_types/tempo/index.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/core/Secp256k1.ts +8 -5
- package/package.json +6 -1
- package/tempo/Channel/package.json +6 -0
- package/tempo/Channel.test.ts +121 -0
- package/tempo/Channel.ts +205 -0
- package/tempo/ZoneRpcAuthentication.test.ts +1 -1
- package/tempo/index.ts +26 -0
- package/version.ts +1 -1
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
|
package/_cjs/core/Secp256k1.js
CHANGED
|
@@ -72,9 +72,9 @@ function sign(options) {
|
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
74
|
function verify(options) {
|
|
75
|
-
const {
|
|
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":";;;AA0BA,sCAWC;AAqCD,oCAQC;AAmCD,0CAaC;AA2CD,4CAOC;AAoCD,wCAIC;AAoCD,4CAWC;AAgCD,oBAwBC;AAgED,
|
|
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"}
|
package/_cjs/tempo/index.js
CHANGED
|
@@ -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");
|
package/_cjs/tempo/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../tempo/index.ts"],"names":[],"mappings":";;;AAoCA,gEAA6D;
|
|
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
package/_esm/core/Secp256k1.js
CHANGED
|
@@ -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 {
|
|
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":"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
|
|
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"}
|
package/_esm/tempo/index.js
CHANGED
|
@@ -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
|
*
|
package/_esm/tempo/index.js.map
CHANGED
|
@@ -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Secp256k1.d.ts","sourceRoot":"","sources":["../../core/Secp256k1.ts"],"names":[],"mappings":"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
|
|
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"}
|
package/_types/tempo/index.d.ts
CHANGED
|
@@ -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"}
|
package/_types/version.d.ts
CHANGED
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 {
|
|
390
|
-
if (address)
|
|
391
|
-
return Address.isEqual(
|
|
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.
|
|
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,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
|
+
})
|
package/tempo/Channel.ts
ADDED
|
@@ -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-
|
|
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.
|
|
2
|
+
export const version = '0.14.23'
|