MPC (Chain Signatures) 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…
- The newest stable release in the 3.15 line: MPC (Chain Signatures) 3.15.1
- Newest MPC (Chain Signatures): MPC (Chain Signatures) 3.18.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)
#4251(@anodar): Drop trait bounds from structs (#4251)
#4238(@SimonRastikian): Enforcing strong typing in governance.rs (#4238)
#4269(@gilcu3): (contract) Use UpdateId and Keyset from dtos in the API (#4269)
#4276(@gilcu3): (contract) Use CKDRequest from dtos (#4276)
#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)
#4260(@gilcu3): Add tdx tcb info for operators (#4260)
#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)
#4214(@gilcu3): Keep e2e tests artifacts on failure (#4214)
⚙️ 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)
#4134(@gilcu3): Move runner images to ubuntu 26.04 (#4134)
#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)
#4200(@gilcu3): Add 3.14.1 contract to history (#4200)
#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)
#4232(@gilcu3): Add cache layer for repro-env (#4232)
#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)
#4268(@gilcu3): Update nix (#4268)
#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:0ae2ee850b3513462f394c58a4a4533f8ca8f4e96e9ecb3f5584a5485fdeea4dnearone/mpc-node-gcp:3.15.0 Manifest digest:
sha256:c0cb39ad3aace1eae5cc413efe28387b0f1984e1f7b11e21afa93ba02200e58cnearone/mpc-launcher:3.15.0 Manifest digest:
sha256:2d6df6e40f6fee0d98db44df7bb0d98c52e177947a194db2525094b457df15d0
MPC contract
- digest:
sha256:c0e2d40e524d757ad7d8854747ae50173d91d7589e83081b5a0a5c35aa3ba356