Skip to content

Commit 50857d2

Browse files
committed
docs: list zkir v3 known issues for the release
A full compile probe of main under --feature-zkir-v3 leaves two files failing, both on compact#757, so the release stays on the v2 default and only the secp256k1 modules opt into v3.
1 parent 0b0e27c commit 50857d2

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1616
- **Breaking:** Verify `ShieldedMultiSigV2` and `ShieldedMultiSigV3` approvals with `secp256k1EcdsaVerifyLowS` from the new `crypto/Ecdsa` module, removing `stubVerifySignature` from both presets. `execute` / `mint` / `burn` now take `Vector<2, Secp256k1Point>` public keys and `Vector<2, Secp256k1EcdsaSignature>` signatures, and signer commitments hash the public-key coordinates (`pkX`, `pkY`) instead of a `Bytes<64>` key. `ShieldedMultiSigV2`'s `execute` digest is now domain-separated and bound to the contract instance (`kernel.self()`) and the full recipient (kind and address). Both presets share the verification logic through the new `EcdsaSignerManager` module, which unifies the signer-commitment domain separator on `multisig:signer:`; `ShieldedMultiSigV2` previously used `MultiSig:signer:`, so its commitments change again. The module owns the instance salt and the signer registry, so `ShieldedMultiSigV3`'s `ledger()` reader no longer exposes `_instanceSalt`, and `ShieldedMultiSigV2` no longer exports the `VerificationState` and `SignerCommitmentInput` structs, which were part of its generated artifact types. These primitives require ZKIR v3, so `compile:multisig` now passes `--feature-zkir-v3`. (#826)
1717
- Upgrade the Compact toolchain and Midnight dependencies: compiler `0.31.0``0.34.0`, `@midnight-ntwrk/compact-runtime` `0.16.0``0.19.0`, `@midnight-ntwrk/ledger-v8` `8.1.0``@midnightntwrk/ledger-v9` `1.0.0-rc.3`, `@midnight-ntwrk/compact-js` `2.5.1``2.5.5-rc.8`, the `midnight-js` packages `4.1.1``5.0.0-beta.7`, and `@openzeppelin/compact-simulator` `^0.3.1``^0.4.0`. Contract `pragma language_version` raised `>= 0.23.0``>= 0.26.0` (the language version shipped with compiler 0.34.0). (#841)
1818

19+
### Known issues
20+
21+
- Compiler 0.34.0 emits ZKIR v2 by default, and this release targets v2. Only `crypto/Ecdsa`, `multisig/EcdsaSignerManager` and the `ShieldedMultiSigV2` / `ShieldedMultiSigV3` presets need `--feature-zkir-v3`, because the `Secp256k1` types live in the v3 library; `compile:crypto` and `compile:multisig` pass it.
22+
- Under `--feature-zkir-v3`, any impure circuit that reaches `ElGamal.encryptPoint` (notably `ConfidentialFungibleToken`) fails at key generation with `Unsupported test_eq: JubjubScalar == JubjubScalar`, because the ZKIR v3 backend has no `JubjubScalar` equality ([LFDT-Minokawa/compact#757](https://github.com/LFDT-Minokawa/compact/issues/757)). A source-level fix, comparing the derived point instead of the scalar, lands in the next release.
23+
- Under `--feature-zkir-v3`, exporting `ElGamal.derivePk` as an impure circuit panics with `ZkStdLibArch must enable jubjub` ([LFDT-Minokawa/compact#616](https://github.com/LFDT-Minokawa/compact/issues/616)). There is no source workaround.
24+
- `@openzeppelin/compact-builder` below `0.0.5` (used by `compact-compiler`) reports a failed compile as success on Linux and writes no artifact. This release's lockfile resolves `0.0.5`; downstream users should upgrade before trusting a green compile. ([OpenZeppelin/compact-tools#162](https://github.com/OpenZeppelin/compact-tools/pull/162))
25+
1926
## 0.3.0-alpha.2 (2026-08-11)
2027

2128
### Changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,12 @@ Compiling 14 circuits:
189189
Overall progress [====================] 14/14
190190
```
191191
192+
ZKIR v3: the library targets ZKIR v2, the compiler 0.34.0 default. Pass
193+
`--feature-zkir-v3` only when the contract imports the secp256k1-based modules
194+
(`crypto/Ecdsa`, `multisig/EcdsaSignerManager`, `ShieldedMultiSigV2`,
195+
`ShieldedMultiSigV3`). Compiling the other modules under v3 currently hits
196+
upstream blockers, listed under [Known issues](CHANGELOG.md#known-issues).
197+
192198
## Development
193199
194200
OpenZeppelin Contracts for Compact exists thanks to its contributors.

0 commit comments

Comments
 (0)