3.14.0
MPC 3.14.0
This release adds Sui foreign-transaction support (#3754, #3755), brings async TEE attestation verification (#3714), auto-expiring launcher image hashes (#3564), support for operators changing node URLs (#3806), EdDSA signing of messages shorter than 32 bytes (#3876), and a bump to nearcore 2.13.3 (#4053).
🚀 Features
-
#3667(@kevindeforth): Add metrics to detect starvation and resolve CI flakyness (#3667)
-
#3691(@anodar): Support flag for wiping nearcore data (#3691)
-
#3752(@kevindeforth): (metrics) Expose the TEE image-hash allowlist expiry metrics (#3752)
-
#3754(@frolvanya): (foreign-tx) Sui support in contract interface (#3754)
-
#3781(@gilcu3): Small defense in depth check for the evm inspector (#3781)
-
#3755(@frolvanya): (foreign-tx) Sui inspector (#3755)
-
#3829(@anodar): (node) Register foreign-chain configs via the new contract API (#3829)
-
#3806(@gilcu3): Support operators changing node urls (#3806)
-
#3846(@anodar): (e2e) Extend e2e cluster with new API from available chains (#3846)
-
#3876(@gilcu3): Allow smaller than 32 bytes messages for edDSA (#3876)
-
#3640(@SimonRastikian): Adding reconstruction threshold in node (#3640)
-
#3853(@anodar): (node) Indexer publishes foreign-chain supporters via a watch channel (#3853)
-
#3872(@kevindeforth): (near-contract-transport) Introducing
CallContracttrait enabling different back-ends to share the same contract interface. (#3872) -
#3873(@kevindeforth): Introduce MpcContractHandle as shared contract interface (#3873)
-
#3714(@pbeza): (contract) Async TEE attestation verification, drop
dcap-qvl(#3714) -
#3874(@gilcu3): Require deposits for a few migration functions (#3874)
-
#3908(@pbeza): (contract) Add view for the current TEE verifier account (#3908)
-
#4017(@haiyuechen-nearone): Add expected_network_fingerprint to foreign chain config (#4017)
-
#4013(@haiyuechen-nearone): Starknet RPC healthcheck probing logic (#4013)
-
#3564(@barakeinav1): (contract) Auto-expire unused launcher image hashes (#3564)
🐛 Bug Fixes
-
#3663(@gilcu3): (ci) Order correctly the release candidates versions from nearcore (#3663)
-
#3672(@gilcu3): (docs) Add http prefix to prevent node operators falling into the same trap (#3672)
-
#3678(@gilcu3): A single participant with wrong url should not break the node (#3678)
-
#3659(@gilcu3): Node crash on malformed participant set in task (#3659)
-
#3705(@barakeinav1): (launcher) Reuse MPC container across restarts to preserve logs (#3705)
-
#3736(@barakeinav1): (node) Confirm submit_participant_info via advancing attestation expiry (#3736)
-
#3796(@barakeinav1): (node) Migrate state_sync ExternalStorage → Peers on start (#3796)
-
#3834(@gilcu3): Add timeout for tls incomming connection acceptor (#3834)
-
#3836(@netrome): Report computations lead metrics after finishing computations + more labels (#3836)
-
#3885(@pbeza): (tee-verifier) Inherit repository for reproducible builds (#3885)
-
#3890(@gilcu3): Account timeout properly for lagging nodes (#3890)
-
#3812(@metalurgical): Decryption error message (#3812)
-
#3937(@gilcu3): (tests) Do no attach deposit when not needed (#3937)
-
#3948(@barakeinav1): (attestation) Revert DEFAULT_EXPIRATION_DURATION_SECONDS to 7 days (#3948)
-
#3940(@pbeza): (contract) Drop the deposit for
submit_participant_info(#3940) -
#3995(@gilcu3): Make online assets metric more informative (#3995)
-
#3785(@barakeinav1): (contract) Make mock attestations cleanable via expiry (#3785)
💼 Other
🚜 Refactor
-
#3684(@kevindeforth): Unify gas type to not expose near indexer internals (#3684)
-
#3729(@kevindeforth): Establish contract-interfac/call_args.rs as source of truth (#3729)
-
#3778(@SimonRastikian): Reducing code redundancy (#3778)
-
#3780(@metalurgical): Upgrade aes gcm 0.11.0 (#3780)
-
#3832(@pbeza): (contract) Share NodeId/auth test helpers via
primitives::test_utils(#3832) -
#3828(@anodar): (node) Make VerifyForeignTxProvider methods inherent (#3828)
-
#3772(@haiyuechen-nearone): Deduplicate test port allocators into a single allocator (#3772)
-
#3845(@kevindeforth): Move
ProposeUpdateArgsto the interface crate (#3845) -
#3797(@haiyuechen-nearone): Extract foreign-chain-health-check library from config-tester (#3797)
-
#3870(@kevindeforth): (chain-gateway) Unify view calls behind a single ViewContract trait (#3870)
-
#3871(@kevindeforth): Near-contract-transport crate for NEAR call/view vocabulary (#3871)
-
#3911(@SimonRastikian): Renaming per-domain reconstruction-threshold identifiers (#3911)
-
#3931(@SimonRastikian): THRESHOLD into GOVERNANCE_THRESHOLD (#3931)
-
#3935(@SimonRastikian): Contract internal-only renames from threshold to reconstruction threshold (#3935)
-
#3914(@kevindeforth): Typed sign on MpcContractHandle (#3914)
-
#3811(@metalurgical): Add distinct errors for small_t and q consistency checks (#3811)
-
#3938(@SimonRastikian): Cross-crate type renames (#3938)
-
#3916(@kevindeforth): Typed request_app_private_key on MpcContractHandle (#3916)
-
#3952(@SimonRastikian): (ops) Move prepare-release.sh under scripts/ops/ (#3952)
-
#3798(@SimonRastikian): Shortening the line to StdRng::seed_from_u64 (#3798)
-
#3920(@kevindeforth): Typed propose_update and vote_update on MpcContractHandle (#3920)
📚 Documentation
-
#3614(@barakeinav1): (tdx) Add key-provider "DCAP error" troubleshooting entry (#3614)
-
#3707(@gilcu3): Clarify that OT setup cannot be reused in our implementation (#3707)
-
#3749(@barakeinav1): (migration) Fix backup-key (Step 3) and P2P-key (Step 4) retrieval for TEE nodes (#3749)
-
#3745(@barakeinav1): (tdx) Warn that changing app-compose breaks the sealed disk (#3745)
-
#3824(@barakeinav1): Add reproducibility-verification step to the release guide (#3824)
-
#3675(@netrome): Clarify how to set backup encryption key (#3675)
-
#3882(@pbeza): TEE verifier deploy + vote-in runbook (#3882)
-
#4011(@barakeinav1): (design) Operator-prepaid attestation storage (#4011)
⚡ Performance
🧪 Testing
-
#3656(@gilcu3): Add support for wycheproof vectors verification for signatures (#3656)
-
#3759(@haiyuechen-nearone): Cover all foreign provider auth kinds in verify-foreign-tx e2e (#3759)
-
#3791(@frolvanya): (foreign-tx) Sui inspector tests + localnet docs (#3791)
-
#3855(@pbeza): (localnet) Deploy and vote in the TEE verifier contract (#3855)
-
#3902(@kevindeforth): (contract) Implement CallContract for sandbox tests (#3902)
-
#3899(@kevindeforth): (e2e-tests) Near-kit CallContract backend for MpcContractHandle (#3899)
-
#4007(@gilcu3): Cover all schemes in per-domain threshold integration test (#4007)
⚙️ Miscellaneous Tasks
-
#3670(@gilcu3): Remove noisy warnings in cargo-shear and cargo-deny (#3670)
-
#3688(@barakeinav1): Standardize public debug port to 8080 across deployment templates (#3688)
-
#3698(@dependabot[bot]): Bump the rust-minor-and-patch group with 6 updates (#3698)
-
#3699(@dependabot[bot]): Bump itertools from 0.14.0 to 0.15.0 (#3699)
-
#3730(@kevindeforth): Ignore quick-xml DoS advisories unreachable via our deps (#3730)
-
#3744(@dependabot[bot]): Bump mockall from 0.14.0 to 0.15.0 (#3744)
-
#3741(@dependabot[bot]): Bump near-workspaces from 0.22.2 to 0.22.4 in the rust-minor-and-patch group across 1 directory (#3741)
-
#3771(@gilcu3): (contract) Cleanup migrations after 3.13.0 release (#3771)
-
#3775(@haiyuechen-nearone): Remove orphaned pytest config-generation code (#3775)
-
#3800(@gilcu3): Bump triple timeout and triple metrics bucket sizes (#3800)
-
#3802(@haiyuechen-nearone): Mark foreign-chain rpc auth header values as sensitive (#3802)
-
#3804(@gilcu3): Fix changelog generation for patch releases from a branch (#3804)
-
#3792(@dependabot[bot]): Bump the rust-minor-and-patch group across 1 directory with 3 updates (#3792)
-
#3808(@barakeinav1): Bump to nearcore 2.13.1 (#3808)
-
#3816(@gilcu3): Bump cargo near and use its new check feature (#3816)
-
#3861(@dependabot[bot]): Bump the rust-minor-and-patch group with 7 updates (#3861)
-
#3862(@dependabot[bot]): Bump near-workspaces from 0.22.4 to 0.23.0 (#3862)
-
#3859(@SimonRastikian): Delete orphan update-mpc-node.sh (#3859)
-
#3879(@gilcu3): Make workflow runs cancellable automatically (#3879)
-
#3905(@pbeza): Lower contract WASM size limit to
1235000(#3905) -
#3955(@gilcu3): Job restart not needed when governance threshold changes (#3955)
-
#3956(@gilcu3): Use trait to avoid free-form strings in tracking (#3956)
-
#3974(@dependabot[bot]): Bump quinn-proto from 0.11.14 to 0.11.16 in the cargo group across 1 directory (#3974)
-
#3895(@barakeinav1): (tee) Move cluster deploy/test scripts to mpc-private (#3895)
-
#3989(@gilcu3): Bump claude review and fix env overflow for big PRs (#3989)
-
#3988(@github-actions[bot]): Bump to nearcore 2.13.2 (#3988)
-
#4002(@andrei-near): Fix nightly build sed branch OR tags (#4002)
-
#3980(@dependabot[bot]): Bump syn from 2.0.118 to 3.0.3 (#3980)
-
#3996(@gilcu3): Ensure blstrs scalar Copy types are zeroized (#3996)
-
#3981(@dependabot[bot]): Bump near-kit from 0.11.2 to 0.12.1 (#3981)
-
#4001(@dependabot[bot]): Bump the rust-minor-and-patch group across 1 directory with 20 updates (#4001)
-
#4019(@haiyuechen-nearone): Stop the review bot demanding license notices on dependency bumps (#4019)
-
#4022(@gilcu3): Make nix cache independent of Cargo.lock to avoid invalidating rust caches (#4022)
-
#4018(@haiyuechen-nearone): Bump ruint to 1.20.0 for RUSTSEC-2026-0220 (#4018)
-
#4033(@gilcu3): Add exception for wasmtime 45 vulnerability (#4033)
-
#4042(@dependabot[bot]): Bump serial_test from 3.5.0 to 4.0.1 (#4042)
-
#4041(@dependabot[bot]): Bump base64 from 0.22.1 to 0.23.0 (#4041)
-
#4044(@metalurgical): Bump nearkit from 0.12.1 to 0.14.0 (#4044)
-
#4039(@dependabot[bot]): Bump the rust-minor-and-patch group with 4 updates (#4039)
-
#4048(@anodar): Bump up rkyv as per RUSTSEC 2026-0233/0234/0235 (#4048)
-
#4036(@haiyuechen-nearone): Lint module declaration order by visibility and grouping (#4036)
Docker images
-
nearone/mpc-node:3.14.0
Manifest digest:sha256:c33c0e62192d8fc7976f7947bfa9f72bc942f5e22fa1a10e2ee3ccf8445ecff5 -
nearone/mpc-node-gcp:3.14.0
Manifest digest:sha256:18a17bbad23bcd83b7c1a4b8973d489f94d6e51f6359fa67cf33f98e9c12da1c -
nearone/mpc-launcher:3.14.0
Manifest digest:sha256:5618a93a78c9ac9173e7ebf7c8af173bd675be6832a2f8c2a9a7149ac2678f54
MPC contract
- digest:
sha256:c64ecba185096c6a52aad8477a2a1e6eecd74c8350328bedf5a60ee738807422