@openzeppelin/compact-contracts 0.4.0-alpha.5 → 0.4.0-alpha.6

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.
Files changed (44) hide show
  1. package/README.md +1 -1
  2. package/access/AccessControl.compact +1 -1
  3. package/access/Ownable.compact +1 -1
  4. package/access/ShieldedAccessControl.compact +1 -1
  5. package/access/ZOwnablePK.compact +13 -4
  6. package/crypto/EcdhMask.compact +1 -1
  7. package/crypto/Ecdsa.compact +1 -1
  8. package/crypto/Eip712.compact +1 -1
  9. package/crypto/ElGamal.compact +1 -1
  10. package/multisig/ForwarderPrivate.compact +1 -1
  11. package/multisig/ForwarderShielded.compact +1 -1
  12. package/multisig/ForwarderUnshielded.compact +1 -1
  13. package/multisig/ProposalManager.compact +1 -1
  14. package/multisig/Secp256k1EcdsaMultisig.compact +275 -0
  15. package/multisig/ShieldedTreasury.compact +1 -1
  16. package/multisig/ShieldedTreasuryStateless.compact +1 -1
  17. package/multisig/Signer.compact +1 -1
  18. package/multisig/UnshieldedTreasury.compact +1 -1
  19. package/multisig/examples/ForwarderPrivateExample.compact +1 -1
  20. package/multisig/examples/ForwarderShieldedExample.compact +1 -1
  21. package/multisig/examples/ForwarderUnshieldedExample.compact +1 -1
  22. package/multisig/examples/NativeShieldedTokenIssuerExample.compact +4 -4
  23. package/multisig/examples/ShieldedMultiSigV2Example.compact +6 -8
  24. package/multisig/presets/NativeShieldedTokenIssuer.compact +84 -83
  25. package/multisig/presets/ShieldedMultiSigV2.compact +35 -43
  26. package/package.json +1 -1
  27. package/security/Allowlist.compact +1 -1
  28. package/security/Blocklist.compact +1 -1
  29. package/security/Initializable.compact +1 -1
  30. package/security/Pausable.compact +1 -1
  31. package/token/ConfidentialFungibleToken.compact +1 -1
  32. package/token/FungibleToken.compact +1 -1
  33. package/token/MultiToken.compact +1 -1
  34. package/token/NativeShieldedToken.compact +1 -1
  35. package/token/NativeShieldedTokenCore.compact +1 -1
  36. package/token/NativeShieldedTokenFamily.compact +1 -1
  37. package/token/NonFungibleToken.compact +1 -1
  38. package/token/examples/ZOwnableNativeShieldedTokenExample.compact +109 -0
  39. package/token/extensions/ConfidentialFungibleTokenPublicSupply.compact +1 -1
  40. package/token/extensions/NativeShieldedTokenDerivedNonce.compact +1 -1
  41. package/token/presets/ZOwnableNativeShieldedToken.compact +314 -0
  42. package/utils/EvmAbi.compact +1 -1
  43. package/utils/Utils.compact +1 -1
  44. package/multisig/EcdsaSignerManager.compact +0 -248
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Compact Contracts v0.4.0-alpha.5 (security/Initializable.compact)
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.6 (security/Initializable.compact)
3
3
 
4
4
  pragma language_version >= 0.26.0;
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Compact Contracts v0.4.0-alpha.5 (security/Pausable.compact)
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.6 (security/Pausable.compact)
3
3
 
4
4
  pragma language_version >= 0.26.0;
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Compact Contracts v0.4.0-alpha.5 (token/ConfidentialFungibleToken.compact)
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.6 (token/ConfidentialFungibleToken.compact)
3
3
 
4
4
  pragma language_version >= 0.26.0;
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Compact Contracts v0.4.0-alpha.5 (token/FungibleToken.compact)
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.6 (token/FungibleToken.compact)
3
3
 
4
4
  pragma language_version >= 0.26.0;
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Compact Contracts v0.4.0-alpha.5 (token/MultiToken.compact)
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.6 (token/MultiToken.compact)
3
3
 
4
4
  pragma language_version >= 0.26.0;
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Compact Contracts v0.4.0-alpha.5 (token/NativeShieldedToken.compact)
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.6 (token/NativeShieldedToken.compact)
3
3
 
4
4
  pragma language_version >= 0.26.0;
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Compact Contracts v0.4.0-alpha.5 (token/NativeShieldedTokenCore.compact)
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.6 (token/NativeShieldedTokenCore.compact)
3
3
 
4
4
  pragma language_version >= 0.26.0;
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Compact Contracts v0.4.0-alpha.5 (token/NativeShieldedTokenFamily.compact)
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.6 (token/NativeShieldedTokenFamily.compact)
3
3
 
4
4
  pragma language_version >= 0.26.0;
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Compact Contracts v0.4.0-alpha.5 (token/NonFungibleToken.compact)
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.6 (token/NonFungibleToken.compact)
3
3
 
4
4
  pragma language_version >= 0.26.0;
5
5
 
@@ -0,0 +1,109 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.6 (token/examples/ZOwnableNativeShieldedTokenExample.compact)
3
+
4
+ pragma language_version >= 0.26.0;
5
+
6
+ /**
7
+ * @title ZOwnableNativeShieldedTokenExample
8
+ * @description Deployable reference contract for the
9
+ * `ZOwnableNativeShieldedToken` preset: a native shielded token that only a
10
+ * single shielded owner mints and burns. Holders transfer coins through
11
+ * Zswap directly.
12
+ */
13
+
14
+ import CompactStandardLibrary;
15
+
16
+ import "../presets/ZOwnableNativeShieldedToken" prefix ZOwnableNativeShieldedToken_;
17
+
18
+ export { ZswapCoinPublicKey, ContractAddress, Either, Maybe, ShieldedCoinInfo };
19
+
20
+ // Surface the preset's state unprefixed so `ledger()` readers use the keys the
21
+ // modules declare.
22
+ import {
23
+ _ownerCommitment,
24
+ _counter,
25
+ _instanceSalt,
26
+ _ownableIsInitialized,
27
+ _domain,
28
+ _name,
29
+ _symbol,
30
+ _decimals,
31
+ _isInitialized,
32
+ _totalMinted,
33
+ _totalBurned,
34
+ } from "../presets/ZOwnableNativeShieldedToken";
35
+ export {
36
+ _ownerCommitment,
37
+ _counter,
38
+ _instanceSalt,
39
+ _ownableIsInitialized,
40
+ _domain,
41
+ _name,
42
+ _symbol,
43
+ _decimals,
44
+ _isInitialized,
45
+ _totalMinted,
46
+ _totalBurned,
47
+ };
48
+
49
+ /**
50
+ * @description Deploys the token with its owner, domain and metadata.
51
+ *
52
+ * @warning `ownerId` must be `_computeOwnerId(pk, secretNonce)` for the coin
53
+ * public key the owner's wallet will supply as `ownPublicKey()`. The circuit
54
+ * cannot check this at deploy; any other key leaves the contract with no
55
+ * usable owner and no recovery.
56
+ *
57
+ * @param {Bytes<32>} ownerId - `_computeOwnerId(pk, secretNonce)` of the owner.
58
+ * @param {Bytes<32>} instanceSalt - Random per-deployment salt for the owner commitment.
59
+ * @param {Bytes<32>} tokenDomain - Domain of this contract's token color.
60
+ */
61
+ constructor(
62
+ ownerId: Bytes<32>,
63
+ instanceSalt: Bytes<32>,
64
+ tokenDomain: Bytes<32>,
65
+ name_: Opaque<"string">,
66
+ symbol_: Opaque<"string">,
67
+ decimals_: Uint<8>,
68
+ ) {
69
+ ZOwnableNativeShieldedToken_initialize(
70
+ ownerId,
71
+ instanceSalt,
72
+ tokenDomain,
73
+ name_,
74
+ symbol_,
75
+ decimals_,
76
+ );
77
+ }
78
+
79
+ export circuit mint(recipient: ZswapCoinPublicKey, amount: Uint<64>, nonce: Bytes<32>): ShieldedCoinInfo {
80
+ return ZOwnableNativeShieldedToken_mint(recipient, amount, nonce);
81
+ }
82
+
83
+ export circuit burn(coin: ShieldedCoinInfo, amount: Uint<64>, refundTo: ZswapCoinPublicKey): Maybe<ShieldedCoinInfo> {
84
+ return ZOwnableNativeShieldedToken_burn(coin, amount, refundTo);
85
+ }
86
+
87
+ export circuit transferOwnership(newOwnerId: Bytes<32>): [] {
88
+ ZOwnableNativeShieldedToken_transferOwnership(newOwnerId);
89
+ }
90
+
91
+ export circuit renounceOwnership(): [] {
92
+ ZOwnableNativeShieldedToken_renounceOwnership();
93
+ }
94
+
95
+ export circuit owner(): Bytes<32> {
96
+ return ZOwnableNativeShieldedToken_owner();
97
+ }
98
+
99
+ export pure circuit _computeOwnerId(pk: Either<ZswapCoinPublicKey, ContractAddress>, nonce: Bytes<32>): Bytes<32> {
100
+ return ZOwnableNativeShieldedToken__computeOwnerId(pk, nonce);
101
+ }
102
+
103
+ export circuit totalMinted(): Uint<128> {
104
+ return ZOwnableNativeShieldedToken_totalMinted();
105
+ }
106
+
107
+ export circuit tokenColor(): Bytes<32> {
108
+ return ZOwnableNativeShieldedToken_tokenColor();
109
+ }
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Compact Contracts v0.4.0-alpha.5 (token/extensions/ConfidentialFungibleTokenPublicSupply.compact)
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.6 (token/extensions/ConfidentialFungibleTokenPublicSupply.compact)
3
3
 
4
4
  pragma language_version >= 0.26.0;
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Compact Contracts v0.4.0-alpha.5 (token/extensions/NativeShieldedTokenDerivedNonce.compact)
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.6 (token/extensions/NativeShieldedTokenDerivedNonce.compact)
3
3
 
4
4
  pragma language_version >= 0.26.0;
5
5
 
@@ -0,0 +1,314 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.4 (token/presets/ZOwnableNativeShieldedToken.compact)
3
+
4
+ pragma language_version >= 0.26.0;
5
+
6
+ /**
7
+ * @module ZOwnableNativeShieldedToken
8
+ * @description
9
+ * A native shielded token with a single shielded owner. Only the owner mints
10
+ * (to a coin public key, with a caller-supplied nonce) and burns (a coin the
11
+ * owner's wallet pays into the tx). Minted amounts are counted on-chain.
12
+ *
13
+ * Composes `ZOwnablePK` as `ZOwnablePK_` (owner commitment),
14
+ * `NativeShieldedToken` as `NST_` (one token color) and
15
+ * `NativeShieldedTokenPublicSupply` as `NSTPublicSupply_` (minted total).
16
+ *
17
+ * @dev Derivations:
18
+ * - `H<T>(...)`: `persistentHash<T>`.
19
+ * - Owner id: `id = H<Vector<2, Bytes<32>>>([pk.bytes, secretNonce])`.
20
+ * - Owner commitment: `H<Vector<4, Bytes<32>>>([id, instanceSalt,
21
+ * counter as Field as Bytes<32>, pad(32, "ZOwnablePK:shield:")])`.
22
+ * - Token color: `tokenType(_domain, kernel.self())`.
23
+ *
24
+ * @notice Implementing contracts call `initialize` from their constructor and
25
+ * MUST NOT import the composed modules directly.
26
+ *
27
+ * @notice Privacy:
28
+ * - Public, per tx: every mint amount (the Zswap mint effect and
29
+ * `_totalMinted`), the coin commitments and nullifiers, and which circuit
30
+ * ran.
31
+ * - Public, as state: `_ownerCommitment`, `_counter` (the number of ownership
32
+ * changes), `_instanceSalt`, `_totalMinted`, `_domain`, `_name`, `_symbol`,
33
+ * `_decimals`.
34
+ * - Private: mint `recipient` and `nonce`. Burn `amount`, `coin` and
35
+ * `refundTo`, as long as the observer does not know the coin's nonce. A change
36
+ * output reveals that a burn was partial.
37
+ * - Owner: stored as a commitment to `id`; the key and nonce never leave the
38
+ * proof.
39
+ *
40
+ * @notice Security:
41
+ * - Owner check: proves knowledge of a `(pk, secretNonce)` whose commitment
42
+ * matches. `ownPublicKey()` is prover-supplied, so the check does not bind
43
+ * the submitting wallet; `secretNonce` is the only secret.
44
+ * - Every mutating circuit checks ownership before any token check.
45
+ * - `transferOwnership` is one step; a wrong `newOwnerId` loses the contract.
46
+ * - `renounceOwnership` stops mint and burn forever.
47
+ * - Upgrades: the CMA can replace any circuit's verifier key, so it sits
48
+ * above the owner and should not be a single key.
49
+ * - A failed assert rejects the whole tx; no state moves.
50
+ *
51
+ * @notice Concurrency:
52
+ * - `mint` reads and writes `_totalMinted`; the read pins it, so at most one
53
+ * mint lands per block.
54
+ * - `burn` only reads owner state: burns commute with each other and with one
55
+ * mint.
56
+ * - `transferOwnership` / `renounceOwnership` write the owner commitment and
57
+ * conflict with every owner-gated call and `owner()` in the same block.
58
+ * - Metadata views and `totalMinted` read no owner state; `totalMinted`
59
+ * submitted as a tx conflicts with a same-block mint.
60
+ * - A tx that loses a same-block race fails and must be re-proven against
61
+ * the new state.
62
+ *
63
+ * @notice Scope:
64
+ * Mint and burn only. Holders transfer through Zswap directly. No roles,
65
+ * freeze, seize, contract-held coins, burned total or total supply.
66
+ *
67
+ * @notice Client-side duties:
68
+ * - Build every owner tx with the coin public key in the current `ownerId`
69
+ * and the matching `wit_secretNonce`. A wrong nonce fails the ownership
70
+ * check and reveals nothing.
71
+ * - `ownPublicKey()` is supplied by the client like a witness; the circuit
72
+ * cannot check that it belongs to the submitting wallet. The client is
73
+ * responsible for supplying the coin public key that is in the current
74
+ * `ownerId`; any other key fails the ownership check.
75
+ * - Compute `ownerId` off-chain with `_computeOwnerId`.
76
+ * - `nonce` must be fresh random bytes per mint.
77
+ * - Persist the coin infos `mint` and `burn` return. midnight-js encrypts an
78
+ * output to its recipient only when it can resolve the recipient's
79
+ * encryption key (its own, or one given in
80
+ * `additionalCoinEncPublicKeyMappings`).
81
+ * - Run the proof server where the owner controls it; it sees
82
+ * `wit_secretNonce`.
83
+ *
84
+ * @dev Composition:
85
+ * - Burn accounting: calling `NSTPublicSupply__addBurned` in `burn` would
86
+ * publish every burn amount.
87
+ */
88
+ module ZOwnableNativeShieldedToken {
89
+ import CompactStandardLibrary;
90
+
91
+ import "../../access/ZOwnablePK" prefix ZOwnablePK_;
92
+ import "../NativeShieldedToken" prefix NST_;
93
+ import "../extensions/NativeShieldedTokenPublicSupply" prefix NSTPublicSupply_;
94
+
95
+ // Named import/re-export of the composed modules' state only, so an
96
+ // implementing contract can surface every ledger field under its own key.
97
+ // The circuits stay behind the prefixes above. The ownable flag is aliased
98
+ // because the token module already owns `_isInitialized`.
99
+ // `_totalBurned` is never written, so it stays empty.
100
+ import { _ownerCommitment, _counter, _instanceSalt, _isInitialized as _ownableIsInitialized } from "../../access/ZOwnablePK";
101
+ import { _domain, _name, _symbol, _decimals, _isInitialized } from "../NativeShieldedToken";
102
+ import { _totalMinted, _totalBurned } from "../extensions/NativeShieldedTokenPublicSupply";
103
+
104
+ export { _ownerCommitment, _counter, _instanceSalt, _ownableIsInitialized };
105
+ export { _domain, _name, _symbol, _decimals, _isInitialized };
106
+ export { _totalMinted, _totalBurned };
107
+
108
+ /**
109
+ * @description Sets the owner and the token's domain and metadata.
110
+ *
111
+ * @notice Call from the implementing contract's constructor only. It writes
112
+ * sealed fields, so implementing contracts MUST NOT expose it as a
113
+ * post-deploy circuit.
114
+ *
115
+ * @warning `ownerId` must be `_computeOwnerId(pk, secretNonce)` for the coin
116
+ * public key the owner's wallet will supply as `ownPublicKey()`. The circuit
117
+ * cannot check this at deploy; any other key leaves the contract with no
118
+ * usable owner and no recovery.
119
+ *
120
+ * Requirements:
121
+ *
122
+ * - Contract is not initialized.
123
+ * - `ownerId` is not zero.
124
+ *
125
+ * @param {Bytes<32>} ownerId - `_computeOwnerId(pk, secretNonce)` of the owner.
126
+ * @param {Bytes<32>} instanceSalt - Random per-deployment salt for the owner commitment.
127
+ * @param {Bytes<32>} tokenDomain - Domain of this contract's token color.
128
+ * @param {Opaque<"string">} name_ - The token name.
129
+ * @param {Opaque<"string">} symbol_ - The token symbol.
130
+ * @param {Uint<8>} decimals_ - The token decimals.
131
+ */
132
+ export circuit initialize(
133
+ ownerId: Bytes<32>,
134
+ instanceSalt: Bytes<32>,
135
+ tokenDomain: Bytes<32>,
136
+ name_: Opaque<"string">,
137
+ symbol_: Opaque<"string">,
138
+ decimals_: Uint<8>,
139
+ ): [] {
140
+ ZOwnablePK_initialize(ownerId, instanceSalt);
141
+ NST_initialize(tokenDomain, name_, symbol_, decimals_);
142
+ }
143
+
144
+ /**
145
+ * @description Mints `amount` to `recipient` and adds it to the minted total.
146
+ * Owner only.
147
+ *
148
+ * @constraints k=15, rows=21252
149
+ *
150
+ * Requirements:
151
+ *
152
+ * - Caller is the owner.
153
+ * - `recipient` is not zero.
154
+ *
155
+ * @param {ZswapCoinPublicKey} recipient - Coin public key that receives the coin.
156
+ * @param {Uint<64>} amount - Amount to mint.
157
+ * @param {Bytes<32>} nonce - Fresh random bytes per mint.
158
+ * @returns {ShieldedCoinInfo} The minted coin; persist it.
159
+ */
160
+ export circuit mint(recipient: ZswapCoinPublicKey, amount: Uint<64>, nonce: Bytes<32>): ShieldedCoinInfo {
161
+ ZOwnablePK_assertOnlyOwner();
162
+ const coin = NST__mint(recipient, amount, nonce);
163
+ NSTPublicSupply__addMinted(amount);
164
+ return coin;
165
+ }
166
+
167
+ /**
168
+ * @description Burns `amount` of `coin`, paid into the tx by the caller's
169
+ * wallet, and refunds the rest to `refundTo`. Owner only.
170
+ *
171
+ * @constraints k=16, rows=51814
172
+ *
173
+ * Requirements:
174
+ *
175
+ * - Caller is the owner.
176
+ * - `coin.color` is this token's color.
177
+ * - `amount` <= `coin.value`.
178
+ * - `refundTo` is not zero.
179
+ *
180
+ * @param {ShieldedCoinInfo} coin - Coin of this token, paid into the tx by the caller's wallet.
181
+ * @param {Uint<64>} amount - Amount to burn from `coin`.
182
+ * @param {ZswapCoinPublicKey} refundTo - Coin public key that receives the change.
183
+ * @returns {Maybe<ShieldedCoinInfo>} The refund coin, or `none` on a full burn.
184
+ */
185
+ export circuit burn(coin: ShieldedCoinInfo, amount: Uint<64>, refundTo: ZswapCoinPublicKey): Maybe<ShieldedCoinInfo> {
186
+ ZOwnablePK_assertOnlyOwner();
187
+ return NST__burn(coin, amount, refundTo);
188
+ }
189
+
190
+ /**
191
+ * @description Transfers ownership to `newOwnerId`. Owner only.
192
+ *
193
+ * @warning `newOwnerId` must be `_computeOwnerId(pk, secretNonce)` for the
194
+ * coin public key the new owner's wallet will supply as `ownPublicKey()`.
195
+ * The circuit cannot check this; any other key leaves the contract with no
196
+ * usable owner and no recovery.
197
+ *
198
+ * @constraints k=15, rows=17023
199
+ *
200
+ * Requirements:
201
+ *
202
+ * - Caller is the owner.
203
+ * - `newOwnerId` is not zero.
204
+ *
205
+ * @param {Bytes<32>} newOwnerId - `_computeOwnerId(pk, secretNonce)` of the new owner.
206
+ */
207
+ export circuit transferOwnership(newOwnerId: Bytes<32>): [] {
208
+ ZOwnablePK_transferOwnership(newOwnerId);
209
+ }
210
+
211
+ /**
212
+ * @description Clears the owner. Owner only.
213
+ *
214
+ * @warning Irreversible: mint and burn stop forever.
215
+ *
216
+ * @constraints k=14, rows=10579
217
+ *
218
+ * Requirements:
219
+ *
220
+ * - Caller is the owner.
221
+ */
222
+ export circuit renounceOwnership(): [] {
223
+ ZOwnablePK_renounceOwnership();
224
+ }
225
+
226
+ /**
227
+ * @description Returns the current owner commitment.
228
+ *
229
+ * @constraints k=6, rows=48
230
+ *
231
+ * Requirements:
232
+ *
233
+ * - Contract is initialized.
234
+ */
235
+ export circuit owner(): Bytes<32> {
236
+ return ZOwnablePK_owner();
237
+ }
238
+
239
+ /**
240
+ * @description Returns the owner id `H(pk, nonce)`.
241
+ *
242
+ * Requirements:
243
+ *
244
+ * - `pk` is a coin public key.
245
+ *
246
+ * @param {Either<ZswapCoinPublicKey, ContractAddress>} pk - The owner's coin public key.
247
+ * @param {Bytes<32>} nonce - The owner's secret nonce.
248
+ */
249
+ export pure circuit _computeOwnerId(pk: Either<ZswapCoinPublicKey, ContractAddress>, nonce: Bytes<32>): Bytes<32> {
250
+ return ZOwnablePK__computeOwnerId(pk, nonce);
251
+ }
252
+
253
+ /**
254
+ * @description Returns the total amount ever minted.
255
+ *
256
+ * @constraints k=7, rows=63
257
+ */
258
+ export circuit totalMinted(): Uint<128> {
259
+ return NSTPublicSupply_totalMinted();
260
+ }
261
+
262
+ /**
263
+ * @description Returns the token name.
264
+ *
265
+ * @constraints k=6, rows=26
266
+ *
267
+ * Requirements:
268
+ *
269
+ * - Contract is initialized.
270
+ */
271
+ export circuit name(): Opaque<"string"> {
272
+ return NST_name();
273
+ }
274
+
275
+ /**
276
+ * @description Returns the token symbol.
277
+ *
278
+ * @constraints k=6, rows=26
279
+ *
280
+ * Requirements:
281
+ *
282
+ * - Contract is initialized.
283
+ */
284
+ export circuit symbol(): Opaque<"string"> {
285
+ return NST_symbol();
286
+ }
287
+
288
+ /**
289
+ * @description Returns the token decimals.
290
+ *
291
+ * @constraints k=6, rows=26
292
+ *
293
+ * Requirements:
294
+ *
295
+ * - Contract is initialized.
296
+ */
297
+ export circuit decimals(): Uint<8> {
298
+ return NST_decimals();
299
+ }
300
+
301
+ /**
302
+ * @description Returns this contract's token color,
303
+ * `tokenType(tokenDomain, kernel.self())`.
304
+ *
305
+ * @constraints k=13, rows=3962
306
+ *
307
+ * Requirements:
308
+ *
309
+ * - Contract is initialized.
310
+ */
311
+ export circuit tokenColor(): Bytes<32> {
312
+ return NST_tokenColor();
313
+ }
314
+ }
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Compact Contracts v0.4.0-alpha.5 (utils/EvmAbi.compact)
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.6 (utils/EvmAbi.compact)
3
3
 
4
4
  pragma language_version >= 0.26.0;
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // OpenZeppelin Compact Contracts v0.4.0-alpha.5 (utils/Utils.compact)
2
+ // OpenZeppelin Compact Contracts v0.4.0-alpha.6 (utils/Utils.compact)
3
3
 
4
4
  pragma language_version >= 0.26.0;
5
5