Repository navigation
3.15.0
MPC 3.15.0
This release expands foreign-transaction support to Avalanche (#4145) and Ethereum (#4235), and adds SVM to the contract interface (#4136). It also introduces operator-prepaid attestation storage (#4016), TCB status reporting for attestation-cli (#4228), and a declarative CLI for generating whitelist proposals (#4287).
🚀 Features
-
#4025(@gilcu3): Add backup-cli service based on RPCs (#4025)
-
#4016(@barakeinav1): (contract) Operator-prepaid attestation storage (grant counter) (#4016)
-
#4049(@haiyuechen-nearone): EVM chains RPC probing logic (#4049)
-
#4032(@netrome): Add optional payload hash to foreign transaction requests (#4032)
-
#3922(@kevindeforth): (interface) Typed vote and admin methods on MpcContractHandle (#3922)
-
#4067(@haiyuechen-nearone): Probe Bitcoin provider by genesis block hash (#4067)
-
#3912(@anodar): (node) Gate verify-foreign-tx on available chains via the watch channel (#3912)
-
#4069(@haiyuechen-nearone): Probe Aptos providers by ledger chain id (#4069)
-
#4145(@frolvanya): (foreign-tx) Avalanche and adi support (#4145)
-
#4205(@kevindeforth): Expose finality status for e2e test framework and unify syntax with codebase (#4205)
-
#3886(@metalurgical): (mpc-contract) Cancel_node_migration() function in contract (#3886)
-
#4054(@anodar): (node) Chain-compatible presignature selection for verifying foreign transactions (#4054)
-
#4070(@haiyuechen-nearone): Probe Sui providers by genesis checkpoint digest (#4070)
-
#4228(@gilcu3): Add tcb-status support for attestation-cli (#4228)
-
#4203(@anodar): (node) Narrow verify-foreign-tx leader selection to chain supporters (#4203)
-
#4235(@frolvanya): (foreign-tx) Ethereum support (#4235)
-
#4136(@frolvanya): (foreign-tx) Svm support in contract interface (#4136)
-
#4236(@barakeinav1): (node) Metrics for attestation freshness (#4236)
-
#4234(@anodar): Accept foreign chain requests based on available chain (#4234)
-
#4071(@haiyuechen-nearone): Periodically report foreign chain RPC provider health (#4071)
-
#4285(@pbeza): (attestation-cli) Report the early TCB evaluation data set (#4285)
-
#4296(@anodar): Support {} host-label wildcard in on-chain base_url (#4296)
-
#4266(@kevindeforth): Make chain-gateways monitoring logic generic for other back-ends (#4266)
-
#4287(@anodar): Implement CLI that generates whitelist proposal declaratively (#4287)
-
#4310(@haiyuechen-nearone): (inspector) Split foreign chain inspection verdicts from inspector errors (#4310)
-
#4352(@gilcu3): (contract) Move whitelist foreign chain vote to json for readability (#4352)
-
#4348(@pbeza): (tee) Name TCB component statuses and advisory IDs in attestation rejection reasons (#4348)
🐛 Bug Fixes
-
#4087(@gilcu3): Do not crash on wrong participants in Start message (#4087)
-
#4132(@haiyuechen-nearone): Compare foreign chain whitelist header names case insensitively (#4132)
-
#4142(@gilcu3): Remove duplicate type AuthenticatedParticipantId from contract API (#4142)
-
#4073(@barakeinav1): (contract) Size max_scan and the sweep gas budget together (#4073)
-
#4157(@SimonRastikian): Surfacing failure by replacing join_all with select_all (#4157)
-
#4201(@pbeza): (node) Keep attestation tasks alive after submission retry timeout (#4201)
-
#4311(@gilcu3): (node) Check participant sets match during resharing and keygen (#4311)
-
#4281(@pbeza): (node) Retry attestation submission only until the next resubmission tick (#4281)
-
#4328(@pbeza): (node) Bound the dstack RPC calls in attestation generation (#4328)
-
#4341(@gilcu3): Warn about mismatched tls keys during migration (#4341)
-
#4339(@gilcu3): Make sure empty keysets fail loudly during put-keyshares (#4339)
-
#4334(@haiyuechen-nearone): Cap the number of extractors in a foreign transaction request (#4334)
🚜 Refactor
-
#4099(@SimonRastikian): (scripts) Rename prepare-release.sh to prepare-github-releas… (#4099)
-
#3939(@kevindeforth): (sandbox) Use mpc contract interface (#3939)
-
#4143(@pbeza): (test-utils) Read the collateral straight from the captured
public_data.json(#4143) -
#4147(@gilcu3): (contract) Add api module root and lift shared test fixtures (#4147)
-
#4148(@gilcu3): (contract) Move shared request and auth plumbing into api/common.rs (#4148)
-
#4155(@gilcu3): (contract) Move public-key views and signing into api/keys.rs and api/sign.rs (#4155)
-
#4160(@gilcu3): (contract) Move confidential key derivation into api/ckd.rs (#4160)
-
#4161(@gilcu3): (contract) Move init, migrate and top-level views into api/lifecycle.rs (#4161)
-
#4159(@kevindeforth): (devnet) Hand out access keys as shared handles (#4159)
-
#4163(@gilcu3): (contract) Move governance and key-event votes (#4163)
-
#4185(@gilcu3): (contract) Move contract-update proposals into api/update.rs (#4185)
-
#4190(@gilcu3): (contract) Move node migration into api/node_migration.rs (#4190)
-
#4189(@kevindeforth): (devnet) Typed mpc-contract calls (#4189)
-
#4193(@gilcu3): (contract) Move TEE verifier votes into api/tee_verifier.rs (#4193)
-
#4194(@gilcu3): (contract) Move TEE measurement votes into api/tee_measurements.rs (#4194)
-
#4198(@gilcu3): (contract) Move clean_tee_status into api/tee_measurements.rs (#4198)
-
#4197(@gilcu3): (contract) Move TEE attestation lifecycle into api/attestation.rs (#4197)
-
#4202(@gilcu3): (contract) Move the foreign-tx request path into api/foreign_chain.rs (#4202)
-
#4206(@gilcu3): (contract) Move foreign-chain support and provider policy (#4206)
-
#4207(@kevindeforth): Add typed init call to mpc contract interface (#4207)
-
#4227(@SimonRastikian): Simplifying storage by giving it to the client directly - #3851 (#4227)
-
#4238(@SimonRastikian): Enforcing strong typing in governance.rs (#4238)
-
#4269(@gilcu3): (contract) Use UpdateId and Keyset from dtos in the API (#4269)
-
#4278(@gilcu3): (contract) Use internal config::Config type instead of dto (#4278)
-
#4274(@anodar): Foreign chain impl block and test utils into separate package (#4274)
-
#4239(@SimonRastikian): Renaming threshold in verifier_votes.rs and reducing code redundancy (#4239)
-
#4290(@gilcu3): Define attestation types in their own crate (#4290)
-
#4293(@gilcu3): Move tee vote types in the contract public API to dtos crate (#4293)
-
#4244(@haiyuechen-nearone): Inject the inspectors into RPC probing path (#4244)
-
#4320(@pbeza): (contract) Trim
VerificationContextto carry onlyTcbInfo(#4320) -
#4315(@anodar): Chain entry validation into contract interface (#4315)
📚 Documentation
-
#4066(@barakeinav1): (migration) Clarify backup-cli node address format and migration port (#4066)
-
#4097(@anodar): Add section in onboarding doc about foreign chain configs (#4097)
-
#4331(@kevindeforth): Distinguish live and archived documentation (#4331)
-
#4332(@kevindeforth): Explain repository layout and shared validation placement (#4332)
-
#4355(@kevindeforth): Sort docs into guide/development/archived (#4355)
-
#4357(@kevindeforth): Organize docs (#4357)
-
#4358(@kevindeforth): Move docs to correct folder (#4358)
-
#4360(@kevindeforth): Sort more docs into guide/development/archive (#4360)
-
#4361(@kevindeforth): Archive the per-node foreign-chain RPC configuration design (#4361)
-
#4362(@kevindeforth): Sort more docs into guide/development/design/archive (#4362)
🧪 Testing
-
#4165(@pbeza): (contract) Sandbox tests for the attestation flow against the real tee-verifier (#4165)
⚙️ Miscellaneous Tasks
-
#4062(@gilcu3): E2e test in cargo-make now compatible with nextest filters (#4062)
-
#4061(@gilcu3): Include salt and info in ckd key derivation example (#4061)
-
#4074(@pbeza): Convert doc references to intra-doc links and document conventions in
AGENTS.md(#4074) -
#4081(@gilcu3): Update contract migrations after 3.14 release (#4081)
-
#4086(@gilcu3): Remove old unused metrics from contract (#4086)
-
#4116(@pbeza): (deny) Ignore the unmaintained advisories for
imand its dependencies (#4116) -
#4113(@dependabot[bot]): Bump the rust-minor-and-patch group with 4 updates (#4113)
-
#4125(@barakeinav1): Install catatonit for repro-env podman builds (#4125)
-
#4128(@barakeinav1): Install catatonit in the image-publishing workflows (#4128)
-
#4115(@barakeinav1): (contract) Correct the grants map in the design doc and measure its row cost (#4115)
-
#4109(@pbeza): (test-utils) Regenerate attestation fixtures with a retained signer key (#4109)
-
#4164(@dependabot[bot]): Bump the rust-minor-and-patch group with 5 updates (#4164)
-
#4168(@anodar): Update aptos tx in testnet config for foreign-chain-config-tester (#4168)
-
#4175(@anodar): Bump up h2 according to RUSTSEC-2026-0258 (#4175)
-
#4184(@gilcu3): Fix the skopeo image to use an immutable tag (#4184)
-
#4213(@gilcu3): Include action updates in dependabot (#4213)
-
#4216(@dependabot[bot]): Bump the github-actions group across 1 directory with 6 updates (#4216)
-
#4218(@dependabot[bot]): Bump the rust-minor-and-patch group across 1 directory with 2 updates (#4218)
-
#4219(@dependabot[bot]): Bump near-kit from 0.14.0 to 0.15.0 (#4219)
-
#4224(@kevindeforth): Remove legacy struct from mpc node and tee context post contract upgrade (#4224)
-
#4256(@gilcu3): (contract) Move away from near-sdk PublicKey type (#4256)
-
#4264(@SimonRastikian): Revert "fix: Surfacing failure by replacing join_all with try_join" (#4264)
-
#4265(@barakeinav1): (tee) Align reportData and node-key docs with the code (#4265)
-
#4284(@gilcu3): Workaround rust-analyzer bug around shadowing (#4284)
-
#4279(@netrome): (standards) Don't require
must_prefix on all panicking test helpers (#4279) -
#4282(@gilcu3): (node) Remove monitor_attestation_removal (#4282)
-
#4295(@gilcu3): Bump several important deps with potential sec changes (#4295)
-
#4302(@dependabot[bot]): Bump the github-actions group across 1 directory with 2 updates (#4302)
-
#4303(@dependabot[bot]): Bump the rust-minor-and-patch group with 3 updates (#4303)
-
#4305(@dependabot[bot]): Bump near-kit from 0.15.0 to 0.17.0 (#4305)
-
#4306(@dependabot[bot]): Bump gcloud-sdk from 0.30.2 to 0.31.0 (#4306)
-
#4300(@gilcu3): Remove json schemars from the contract, avoid future reintroduction (#4300)
-
#4316(@kevindeforth): Move stuff from chain-gateway to near-contract-transport (#4316)
-
#4317(@kevindeforth): View call marker deserializers (#4317)
-
#4350(@github-actions[bot]): Bump to nearcore 2.13.4 (#4350)
Docker images
-
nearone/mpc-node:3.15.0
Manifest digest:sha256:0ae2ee850b3513462f394c58a4a4533f8ca8f4e96e9ecb3f5584a5485fdeea4d -
nearone/mpc-node-gcp:3.15.0
Manifest digest:sha256:c0cb39ad3aace1eae5cc413efe28387b0f1984e1f7b11e21afa93ba02200e58c -
nearone/mpc-launcher:3.15.0
Manifest digest:sha256:2d6df6e40f6fee0d98db44df7bb0d98c52e177947a194db2525094b457df15d0
MPC contract
- digest:
sha256:c0e2d40e524d757ad7d8854747ae50173d91d7589e83081b5a0a5c35aa3ba356