ox 0.11.0 → 0.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/_cjs/tempo/KeyAuthorization.js +1 -1
- package/_cjs/tempo/KeyAuthorization.js.map +1 -1
- package/_cjs/tempo/TokenId.js +10 -0
- package/_cjs/tempo/TokenId.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/tempo/KeyAuthorization.js +1 -1
- package/_esm/tempo/KeyAuthorization.js.map +1 -1
- package/_esm/tempo/TokenId.js +29 -0
- package/_esm/tempo/TokenId.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/tempo/KeyAuthorization.d.ts +1 -1
- package/_types/tempo/KeyAuthorization.d.ts.map +1 -1
- package/_types/tempo/TokenId.d.ts +30 -0
- package/_types/tempo/TokenId.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/package.json +1 -1
- package/tempo/KeyAuthorization.ts +2 -2
- package/tempo/TokenId.test.ts +33 -0
- package/tempo/TokenId.ts +44 -0
- package/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# ox
|
|
2
2
|
|
|
3
|
+
## 0.11.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#153](https://github.com/wevm/ox/pull/153) [`95ebfcf`](https://github.com/wevm/ox/commit/95ebfcf1caf857b3658c26c26bb2d6ebbd88b904) Thanks [@jxom](https://github.com/jxom)! - Added `TokenId.compute` to compute deterministic TIP-20 token addresses from sender and salt.
|
|
8
|
+
|
|
9
|
+
## 0.11.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`11cde15`](https://github.com/wevm/ox/commit/11cde150fa9ad07c4e2f398c20ab95278a8ab0d5) Thanks [@jxom](https://github.com/jxom)! - Fixed `KeyAuthorization.toRpc`
|
|
14
|
+
|
|
3
15
|
## 0.11.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
|
@@ -83,7 +83,7 @@ function toRpc(authorization) {
|
|
|
83
83
|
const { address, chainId = 0n, expiry, limits, type, signature, } = authorization;
|
|
84
84
|
return {
|
|
85
85
|
chainId: chainId === 0n ? '0x' : Hex.fromNumber(chainId),
|
|
86
|
-
expiry: typeof expiry === 'number' ? Hex.fromNumber(expiry) :
|
|
86
|
+
expiry: typeof expiry === 'number' ? Hex.fromNumber(expiry) : null,
|
|
87
87
|
limits: limits?.map(({ token, limit }) => ({
|
|
88
88
|
token,
|
|
89
89
|
limit: Hex.fromNumber(limit),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyAuthorization.js","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"KeyAuthorization.js","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":"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"}
|
package/_cjs/tempo/TokenId.js
CHANGED
|
@@ -3,7 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.from = from;
|
|
4
4
|
exports.fromAddress = fromAddress;
|
|
5
5
|
exports.toAddress = toAddress;
|
|
6
|
+
exports.compute = compute;
|
|
7
|
+
const AbiParameters = require("../core/AbiParameters.js");
|
|
6
8
|
const Address = require("../core/Address.js");
|
|
9
|
+
const Hash = require("../core/Hash.js");
|
|
7
10
|
const Hex = require("../core/Hex.js");
|
|
8
11
|
const tip20Prefix = '0x20c0';
|
|
9
12
|
function from(tokenIdOrAddress) {
|
|
@@ -25,4 +28,11 @@ function toAddress(tokenId) {
|
|
|
25
28
|
const tokenIdHex = Hex.fromNumber(tokenId, { size: 18 });
|
|
26
29
|
return Hex.concat(tip20Prefix, tokenIdHex);
|
|
27
30
|
}
|
|
31
|
+
function compute(value) {
|
|
32
|
+
const hash = Hash.keccak256(AbiParameters.encode(AbiParameters.from('address, bytes32'), [
|
|
33
|
+
value.sender,
|
|
34
|
+
value.salt,
|
|
35
|
+
]));
|
|
36
|
+
return Hex.concat(Hex.padRight(tip20Prefix, 12), Hex.slice(hash, 0, 8));
|
|
37
|
+
}
|
|
28
38
|
//# sourceMappingURL=TokenId.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenId.js","sourceRoot":"","sources":["../../tempo/TokenId.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"TokenId.js","sourceRoot":"","sources":["../../tempo/TokenId.ts"],"names":[],"mappings":";;AA4BA,oBAOC;AAiBD,kCAIC;AAiBD,8BAQC;AAsBD,0BAWC;AAlHD,0DAAyD;AACzD,8CAA6C;AAC7C,wCAAuC;AACvC,sCAAqC;AAErC,MAAM,WAAW,GAAG,QAAQ,CAAA;AAuB5B,SAAgB,IAAI,CAAC,gBAA2C;IAC9D,IACE,OAAO,gBAAgB,KAAK,QAAQ;QACpC,OAAO,gBAAgB,KAAK,QAAQ;QAEpC,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAA;IACjC,OAAO,WAAW,CAAC,gBAAgB,CAAC,CAAA;AACtC,CAAC;AAiBD,SAAgB,WAAW,CAAC,OAAwB;IAClD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAC3C,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;AAC7D,CAAC;AAiBD,SAAgB,SAAS,CAAC,OAAyB;IACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACvB,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IACxD,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;AAC5C,CAAC;AAsBD,SAAgB,OAAO,CAAC,KAAoB;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CACzB,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;QAC3D,KAAK,CAAC,MAAM;QACZ,KAAK,CAAC,IAAI;KACX,CAAC,CACH,CAAA;IACD,OAAO,GAAG,CAAC,MAAM,CACf,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,EAC7B,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CACH,CAAA;AACtB,CAAC"}
|
package/_cjs/version.js
CHANGED
|
@@ -356,7 +356,7 @@ export function toRpc(authorization) {
|
|
|
356
356
|
const { address, chainId = 0n, expiry, limits, type, signature, } = authorization;
|
|
357
357
|
return {
|
|
358
358
|
chainId: chainId === 0n ? '0x' : Hex.fromNumber(chainId),
|
|
359
|
-
expiry: typeof expiry === 'number' ? Hex.fromNumber(expiry) :
|
|
359
|
+
expiry: typeof expiry === 'number' ? Hex.fromNumber(expiry) : null,
|
|
360
360
|
limits: limits?.map(({ token, limit }) => ({
|
|
361
361
|
token,
|
|
362
362
|
limit: Hex.fromNumber(limit),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyAuthorization.js","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"KeyAuthorization.js","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":"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"}
|
package/_esm/tempo/TokenId.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import * as AbiParameters from '../core/AbiParameters.js';
|
|
1
2
|
import * as Address from '../core/Address.js';
|
|
3
|
+
import * as Hash from '../core/Hash.js';
|
|
2
4
|
import * as Hex from '../core/Hex.js';
|
|
3
5
|
const tip20Prefix = '0x20c0';
|
|
4
6
|
/**
|
|
@@ -68,4 +70,31 @@ export function toAddress(tokenId) {
|
|
|
68
70
|
const tokenIdHex = Hex.fromNumber(tokenId, { size: 18 });
|
|
69
71
|
return Hex.concat(tip20Prefix, tokenIdHex);
|
|
70
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Computes a deterministic TIP-20 token address from a sender address and salt.
|
|
75
|
+
*
|
|
76
|
+
* The address is computed as: `TIP20_PREFIX (12 bytes) || keccak256(abi.encode(sender, salt))[:8]`
|
|
77
|
+
*
|
|
78
|
+
* [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts twoslash
|
|
82
|
+
* import { TokenId } from 'ox/tempo'
|
|
83
|
+
*
|
|
84
|
+
* const address = TokenId.compute({
|
|
85
|
+
* sender: '0x1234567890123456789012345678901234567890',
|
|
86
|
+
* salt: '0x0000000000000000000000000000000000000000000000000000000000000001',
|
|
87
|
+
* })
|
|
88
|
+
* ```
|
|
89
|
+
*
|
|
90
|
+
* @param value - The sender address and salt.
|
|
91
|
+
* @returns The computed TIP-20 token address.
|
|
92
|
+
*/
|
|
93
|
+
export function compute(value) {
|
|
94
|
+
const hash = Hash.keccak256(AbiParameters.encode(AbiParameters.from('address, bytes32'), [
|
|
95
|
+
value.sender,
|
|
96
|
+
value.salt,
|
|
97
|
+
]));
|
|
98
|
+
return Hex.concat(Hex.padRight(tip20Prefix, 12), Hex.slice(hash, 0, 8));
|
|
99
|
+
}
|
|
71
100
|
//# sourceMappingURL=TokenId.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenId.js","sourceRoot":"","sources":["../../tempo/TokenId.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAErC,MAAM,WAAW,GAAG,QAAQ,CAAA;AAK5B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,IAAI,CAAC,gBAA2C;IAC9D,IACE,OAAO,gBAAgB,KAAK,QAAQ;QACpC,OAAO,gBAAgB,KAAK,QAAQ;QAEpC,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAA;IACjC,OAAO,WAAW,CAAC,gBAAgB,CAAC,CAAA;AACtC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CAAC,OAAwB;IAClD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAC3C,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;AAC7D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,SAAS,CAAC,OAAyB;IACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACvB,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IACxD,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;AAC5C,CAAC"}
|
|
1
|
+
{"version":3,"file":"TokenId.js","sourceRoot":"","sources":["../../tempo/TokenId.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAErC,MAAM,WAAW,GAAG,QAAQ,CAAA;AAK5B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,IAAI,CAAC,gBAA2C;IAC9D,IACE,OAAO,gBAAgB,KAAK,QAAQ;QACpC,OAAO,gBAAgB,KAAK,QAAQ;QAEpC,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAA;IACjC,OAAO,WAAW,CAAC,gBAAgB,CAAC,CAAA;AACtC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CAAC,OAAwB;IAClD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAC3C,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;AAC7D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,SAAS,CAAC,OAAyB;IACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACvB,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IACxD,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO,CAAC,KAAoB;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CACzB,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;QAC3D,KAAK,CAAC,MAAM;QACZ,KAAK,CAAC,IAAI;KACX,CAAC,CACH,CAAA;IACD,OAAO,GAAG,CAAC,MAAM,CACf,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,EAC7B,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CACH,CAAA;AACtB,CAAC"}
|
package/_esm/version.js
CHANGED
|
@@ -32,7 +32,7 @@ export type KeyAuthorization<signed extends boolean = boolean, bigintType = bigi
|
|
|
32
32
|
/** Chain ID for replay protection (0 = valid on any chain). */
|
|
33
33
|
chainId?: bigintType | undefined;
|
|
34
34
|
/** Unix timestamp when key expires (0 = never expires). */
|
|
35
|
-
expiry?: numberType | undefined;
|
|
35
|
+
expiry?: numberType | null | undefined;
|
|
36
36
|
/** TIP20 spending limits for this key. */
|
|
37
37
|
limits?: readonly TokenLimit<bigintType>[] | undefined;
|
|
38
38
|
/** Key type. (secp256k1, P256, WebAuthn). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyAuthorization.d.ts","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,gBAAgB,CAC1B,MAAM,SAAS,OAAO,GAAG,OAAO,EAChC,UAAU,GAAG,MAAM,EACnB,UAAU,GAAG,MAAM,IACjB;IACF,2DAA2D;IAC3D,OAAO,EAAE,OAAO,CAAC,OAAO,CAAA;IACxB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;IAChC,2DAA2D;IAC3D,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"KeyAuthorization.d.ts","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as Address from '../core/Address.js';
|
|
2
|
+
import * as Hex from '../core/Hex.js';
|
|
2
3
|
export type TokenId = bigint;
|
|
3
4
|
export type TokenIdOrAddress = TokenId | Address.Address;
|
|
4
5
|
/**
|
|
@@ -52,4 +53,33 @@ export declare function fromAddress(address: Address.Address): TokenId;
|
|
|
52
53
|
* @returns The address.
|
|
53
54
|
*/
|
|
54
55
|
export declare function toAddress(tokenId: TokenIdOrAddress): Address.Address;
|
|
56
|
+
/**
|
|
57
|
+
* Computes a deterministic TIP-20 token address from a sender address and salt.
|
|
58
|
+
*
|
|
59
|
+
* The address is computed as: `TIP20_PREFIX (12 bytes) || keccak256(abi.encode(sender, salt))[:8]`
|
|
60
|
+
*
|
|
61
|
+
* [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts twoslash
|
|
65
|
+
* import { TokenId } from 'ox/tempo'
|
|
66
|
+
*
|
|
67
|
+
* const address = TokenId.compute({
|
|
68
|
+
* sender: '0x1234567890123456789012345678901234567890',
|
|
69
|
+
* salt: '0x0000000000000000000000000000000000000000000000000000000000000001',
|
|
70
|
+
* })
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* @param value - The sender address and salt.
|
|
74
|
+
* @returns The computed TIP-20 token address.
|
|
75
|
+
*/
|
|
76
|
+
export declare function compute(value: compute.Value): Address.Address;
|
|
77
|
+
export declare namespace compute {
|
|
78
|
+
type Value = {
|
|
79
|
+
/** The salt (32 bytes). */
|
|
80
|
+
salt: Hex.Hex;
|
|
81
|
+
/** The sender address. */
|
|
82
|
+
sender: Address.Address;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
55
85
|
//# sourceMappingURL=TokenId.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenId.d.ts","sourceRoot":"","sources":["../../tempo/TokenId.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TokenId.d.ts","sourceRoot":"","sources":["../../tempo/TokenId.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAE7C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAIrC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAC5B,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;AAExD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAOzE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAI7D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAQpE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAW7D;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAY,KAAK,GAAG;QAClB,2BAA2B;QAC3B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAA;QACb,0BAA0B;QAC1B,MAAM,EAAE,OAAO,CAAC,OAAO,CAAA;KACxB,CAAA;CACF"}
|
package/_types/version.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -37,7 +37,7 @@ export type KeyAuthorization<
|
|
|
37
37
|
/** Chain ID for replay protection (0 = valid on any chain). */
|
|
38
38
|
chainId?: bigintType | undefined
|
|
39
39
|
/** Unix timestamp when key expires (0 = never expires). */
|
|
40
|
-
expiry?: numberType | undefined
|
|
40
|
+
expiry?: numberType | null | undefined
|
|
41
41
|
/** TIP20 spending limits for this key. */
|
|
42
42
|
limits?: readonly TokenLimit<bigintType>[] | undefined
|
|
43
43
|
/** Key type. (secp256k1, P256, WebAuthn). */
|
|
@@ -539,7 +539,7 @@ export function toRpc(authorization: Signed): Rpc {
|
|
|
539
539
|
|
|
540
540
|
return {
|
|
541
541
|
chainId: chainId === 0n ? '0x' : Hex.fromNumber(chainId),
|
|
542
|
-
expiry: typeof expiry === 'number' ? Hex.fromNumber(expiry) :
|
|
542
|
+
expiry: typeof expiry === 'number' ? Hex.fromNumber(expiry) : null,
|
|
543
543
|
limits: limits?.map(({ token, limit }) => ({
|
|
544
544
|
token,
|
|
545
545
|
limit: Hex.fromNumber(limit),
|
package/tempo/TokenId.test.ts
CHANGED
|
@@ -38,3 +38,36 @@ test('toAddress', () => {
|
|
|
38
38
|
'0x20c0000000000000000000000000000000000def',
|
|
39
39
|
)
|
|
40
40
|
})
|
|
41
|
+
|
|
42
|
+
test('compute', () => {
|
|
43
|
+
const sender = '0x1234567890123456789012345678901234567890'
|
|
44
|
+
const salt1 =
|
|
45
|
+
'0x0000000000000000000000000000000000000000000000000000000000000001'
|
|
46
|
+
const salt2 =
|
|
47
|
+
'0x0000000000000000000000000000000000000000000000000000000000000002'
|
|
48
|
+
|
|
49
|
+
const address1 = TokenId.compute({ sender, salt: salt1 })
|
|
50
|
+
const address2 = TokenId.compute({ sender, salt: salt2 })
|
|
51
|
+
|
|
52
|
+
// deterministic: same inputs produce same output
|
|
53
|
+
expect(TokenId.compute({ sender, salt: salt1 })).toBe(address1)
|
|
54
|
+
|
|
55
|
+
// different salts produce different addresses
|
|
56
|
+
expect(address1).not.toBe(address2)
|
|
57
|
+
|
|
58
|
+
// addresses have TIP-20 prefix (0x20c0 followed by zeroes for 12 bytes total)
|
|
59
|
+
expect(address1.toLowerCase().startsWith('0x20c000000000000000000000')).toBe(
|
|
60
|
+
true,
|
|
61
|
+
)
|
|
62
|
+
expect(address2.toLowerCase().startsWith('0x20c000000000000000000000')).toBe(
|
|
63
|
+
true,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
// addresses are 20 bytes (40 hex chars + 0x prefix)
|
|
67
|
+
expect(address1.length).toBe(42)
|
|
68
|
+
|
|
69
|
+
// different senders produce different addresses
|
|
70
|
+
const otherSender = '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd'
|
|
71
|
+
const address3 = TokenId.compute({ sender: otherSender, salt: salt1 })
|
|
72
|
+
expect(address3).not.toBe(address1)
|
|
73
|
+
})
|
package/tempo/TokenId.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import * as AbiParameters from '../core/AbiParameters.js'
|
|
1
2
|
import * as Address from '../core/Address.js'
|
|
3
|
+
import * as Hash from '../core/Hash.js'
|
|
2
4
|
import * as Hex from '../core/Hex.js'
|
|
3
5
|
|
|
4
6
|
const tip20Prefix = '0x20c0'
|
|
@@ -78,3 +80,45 @@ export function toAddress(tokenId: TokenIdOrAddress): Address.Address {
|
|
|
78
80
|
const tokenIdHex = Hex.fromNumber(tokenId, { size: 18 })
|
|
79
81
|
return Hex.concat(tip20Prefix, tokenIdHex)
|
|
80
82
|
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Computes a deterministic TIP-20 token address from a sender address and salt.
|
|
86
|
+
*
|
|
87
|
+
* The address is computed as: `TIP20_PREFIX (12 bytes) || keccak256(abi.encode(sender, salt))[:8]`
|
|
88
|
+
*
|
|
89
|
+
* [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```ts twoslash
|
|
93
|
+
* import { TokenId } from 'ox/tempo'
|
|
94
|
+
*
|
|
95
|
+
* const address = TokenId.compute({
|
|
96
|
+
* sender: '0x1234567890123456789012345678901234567890',
|
|
97
|
+
* salt: '0x0000000000000000000000000000000000000000000000000000000000000001',
|
|
98
|
+
* })
|
|
99
|
+
* ```
|
|
100
|
+
*
|
|
101
|
+
* @param value - The sender address and salt.
|
|
102
|
+
* @returns The computed TIP-20 token address.
|
|
103
|
+
*/
|
|
104
|
+
export function compute(value: compute.Value): Address.Address {
|
|
105
|
+
const hash = Hash.keccak256(
|
|
106
|
+
AbiParameters.encode(AbiParameters.from('address, bytes32'), [
|
|
107
|
+
value.sender,
|
|
108
|
+
value.salt,
|
|
109
|
+
]),
|
|
110
|
+
)
|
|
111
|
+
return Hex.concat(
|
|
112
|
+
Hex.padRight(tip20Prefix, 12),
|
|
113
|
+
Hex.slice(hash, 0, 8),
|
|
114
|
+
) as Address.Address
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export declare namespace compute {
|
|
118
|
+
export type Value = {
|
|
119
|
+
/** The salt (32 bytes). */
|
|
120
|
+
salt: Hex.Hex
|
|
121
|
+
/** The sender address. */
|
|
122
|
+
sender: Address.Address
|
|
123
|
+
}
|
|
124
|
+
}
|
package/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** @internal */
|
|
2
|
-
export const version = '0.11.
|
|
2
|
+
export const version = '0.11.2'
|