MPC (Chain Signatures) 3.0.0
Finally we're releasing the 3.0.0 bundle, featuring support for running MPC nodes on TDX servers with dstack.
- The newest stable release in the 3.0 line: MPC (Chain Signatures) 3.0.6
- Newest MPC (Chain Signatures): MPC (Chain Signatures) 3.18.0
MPC 3.0.0 release
Finally we're releasing the 3.0.0 bundle, featuring support for running MPC nodes on TDX servers with dstack.
Upgrading from 2.2.0
The MPC 3.0.0 contract can run with 2.2.0 nodes, but MPC 3.0.0 nodes can not run with a 2.2.0 contract.
Therefore, to upgrade a 2.2.0 network to 3.0.0 the following steps are needed:
- Migrate node secrets. This happens automatically by running the latest 2.2.0
mainnet-releaseandtestnet-releaseimages. Ensure you have asecrets.jsonfile in yourMPC_HOMEdirectory. - Vote for the 3.0.0 contract.
- Upgrade all nodes to run 3.0.0.
Main features
While this release feautres a lot of changes, some main features are:
- Confidential Key Derivation.
- The MPC contract now contains a method to query deterministic confidential keys.
- TEE attestations.
- MPC nodes now can produce TEE attestations when running on TDX servers with Dstack. The code features a guide on how to set this up as well.
- The MPC contract can validate and kick-out any nodes with invalid attestations.
- Upgraded key management.
- MPC nodes now generate their own keys for communicating with each other and the contract. This is a security requirement for the TEE migration.
- Migration service.
- The contract now allows backup services to be registered, enabling MPC nodes to securely back up their sensitive key shares.
What's Changed
๐ Features
#489(@kevindeforth): (devnet) Loadtest tracks success statistics (#489)
#410(@pbeza): (contract) Add support for TEE (#410)
#511(@DSharifi): (contract) Add method to contract to get allowed image hashes (#511)
#468(@kevindeforth): (Tee) Automatic kickout mechanism for invalid TEE status (#468)
#509(@pbeza): (contract) Verification of TEE RTMRs 0-2 and MRTD (#509)
#513(@DSharifi): (indexer) Periodically fetch allowed image hashes from mpc contract (#513)
#525(@DSharifi): (tee) Node monitors latest allowed image hashes from contract (#525)
#524(@barakeinav1): Initial launcher script (#524)
#445(@kuksag): (tee) Generate p2p key/near signer key inside MPC node (#445)
#516(@pbeza): (contract) Verification of RTMR3 (#516)
#537(@pbeza): (contract) Verify
report_datafield of the TEE quote (#537)#541(@barakeinav1): (remote attestation ) RTMRs and app_compose field checks (#541)
#543(@DSharifi): Submit remote attestation on startup (#543)
#553(@kevindeforth): (Tee) Join logic for new participant and readme (#553)
#558(@kevindeforth): (devnet) Enable ssd support (#558)
#576(@kevindeforth): (pytest) Interactive pytest (#576)
#560(@kevindeforth): Enable network hardship simulation (#560)
#639(@barakeinav1): (tee) Add p2p public key to StaticWebData and http endpoint (#639)
#632(@pbeza): (tee) Custom attestation module (#632)
#653(@pbeza): (tee) Implement attestation quote generation in attestation module (#653)
#665(@DSharifi): (contract) Key resharing can be cancelled on the contract (#665)
#684(@kevindeforth): (metrics) Expose peers block height metric (#684)
#683(@pbeza): (tee) Implement TEE quote verification in attestation module (#683)
#722(@gilcu3): Added TEE enabled dockerfile + github workflow (#722)
#734(@gilcu3): Add support for cargo-near reproducible build (#734)
#711(@pbeza): (tee) Add Docker image verification logic to attestation (#711)
#776(@kevindeforth): Export account balances as metric (#776)
#747(@barakeinav1): Add CLI script to deploy the Launcher in dstack CVM (#747)
#769(@andrei-near): Build info metrics (#769)
#885(@gilcu3): Add CKD support to the MPC contract (#885)
#934(@gilcu3): Add DomainId to CKDRequest (#934)
#956(@gilcu3): CKD support in indexer - node/src/indexer/ changes (#956)
#957(@gilcu3): CKD support in indexer - store + web changes (#957)
#942(@pbeza): (tee) Clean TEE state when concluding a resharing (#942)
#964(@andrei-near): Overwrite mpc/near configs from ENV vars (#964)
#968(@gilcu3): CKD indexer - queue refactor (#968)
#974(@gilcu3): CKD provider support (#974)
#967(@netrome): Cli option to configure attestation authority (#967)
#985(@gilcu3): Added pytests for CKD (#985)
#1008(@gilcu3): DomainId separation enforcement in the contract (#1008)
#1032(@kevindeforth): Improve asset cleanup behavior when entering running or resharing (#1032)
#1038(@gilcu3): Make leader explicit in completed requests (#1038)
#1023(@gilcu3): CKD support in devnet (#1023)
#1061(@kevindeforth): Change of participant set leads to exit of running state. (#1061)
#1064(@gilcu3): Achieve reproducible builds for the mpc node and launcher (#1064)
#1070(@barakeinav1): (pytest) Restrict signer keys to MPC contract method (clean) (#1070)
#1153(@andrei-near): Failed cluster signatures metrics main (#1153)
#1162(@kevindeforth): Contract supports migration service (#1162)
#1155(@barakeinav1): Devnet add missing image_hash and latest_allowed_hash_file (#1155)
#1197(@DSharifi): Enforce all participants to have valid attestations (#1197)
#1219(@gilcu3): Update to use new ts rerandomization+coordinator API (#1219)
#1233(@kevindeforth): Metrics tracking participant ids in failed signature computations (#1233)
#1215(@kevindeforth): Import keyshares into empty keyshare storage (#1215)
#1225(@gilcu3): New dtos_contract::PublicKey type (#1225)
#1223(@pbeza): Re-submit attestation if node detects it has no attestation on chain (#1223)
#1241(@gilcu3): Add near_sdk compatible serde serialization for dto types + Bls types (#1241)
#1250(@kevindeforth): Indexer fetches migration state from contract and displays it on a web-endpoint (#1250)
#1239(@gilcu3): Ckd bls pivot (#1239)
#1267(@kevindeforth): Onboarding logic for MPC node (#1267)
#1272(@gilcu3): Support CKD with BLS in pytests (#1272)
#1289(@pbeza): Scaffold initial backup service (#1289)
#1216(@kevindeforth): Import keyshares into non empty keyshare storage (#1216)
#1283(@kevindeforth): Migration service web server and client logic (#1283)
#1270(@barakeinav1): Add public key enforcement feature (#1270)
#1300(@gilcu3): Add read-only getter for keyshares (#1300)
#1301(@gilcu3): Backup_cli store secrets in json file (#1301)
#1313(@barakeinav1): Add enforcement that contract call are by attested participants (#1313)
#1317(@gilcu3): Backup-cli http over mtls support (#1317)
#1319(@kevindeforth): Mpc node spawns recovery web endpoint (1295) (#1319)
#1316(@barakeinav1): Use pre predecessor_account_id (#1316)
#1329(@Copilot): Add secrets.json migration support for 2.2.0 โ 3.0.0 upgrade path (#1329)
#1339(@gilcu3): Update to current ts version, more changes than I expected, some tricky deps changes as well (#1339)
#1353(@gilcu3): Ensure docker compose file is up to date in get docker compose hash (#1353)
#1333(@pbeza): Implement public key registration for the backup service (#1333)
#1366(@barakeinav1): Update launcher to remove old MPC container (#1366)
#1369(@netrome): More detailed error messages when attestation validation fails (#1369)
#1375(@netrome): Don't enforce secure time (#1375)
#1380(@netrome): (launcher) Allow passing through NEAR_TESTS_PROTOCOL_UPGRADE_OVERRIDE env var (#1380)
#1376(@kevindeforth): Send AES-256 encrypted secrets over mutual TLS instead of plaintext (#1376)
#1384(@pbeza): Implement
KeyshareStorageAdapterfor keyshare persistence (#1384)
๐ Bug Fixes
#552(@pbeza): (tee) Hotfix of TEE
report_dataverification (#552)#585(@pbeza): (tee) Ensure quote verification status is
UpToDate(#585)#578(@kevindeforth): (devnet) Refill contract account for initalization (#578)
#595(@kevindeforth): Ignore peers who are behind in a computation (#595)
#589(@barakeinav1): Harden launcher docker-compose config against privilege escalation (#589)
#617(@DSharifi): (dstack) Bump dstack rust sdk version (#617)
#627(@DSharifi): (tee) Don't re-encode tdx_quote to hex (#627)
#629(@DSharifi): (tee) Serialize
quote_collateralto aserde_json::Valueinstead of String (#629)#588(@barakeinav1): (launcher) Enforce env var allow-list and custom host/port parsing in user-config (#588)
#620(@DSharifi): (dstack) Bump dstack rust sdk version (#620)
#612(@DSharifi): Create tokio enter guard for spawning TEE related tasks (#612)
#667(@andrei-near): Add boot nodes at near indexer config init state (#667)
#680(@kuksag): Adjust invariant checks when selecting participants (#680)
#705(@kevindeforth): (deployment) Gcp start script key error (#705)
#704(@netrome): Transparent serialization for Hash32 (#704)
#715(@kevindeforth): (devnet) Compatibility with upcoming mpc node version 3.0.0 (#715)
#724(@gilcu3): Fixes test_from_str_valid test in the contract crate (#724)
#740(@gilcu3): Display error message when participant list is empty in mpc-node generate-test-configs (#740)
#755(@andrei-near): Bumping nearcore to 2.7.0-rc4 (#755)
#768(@DSharifi): Defer creating
allowed_image_hashfile until write (#768)#762(@barakeinav1): (launcher) Fixing of issues found during testing (#762)
#778(@kevindeforth): Spawn mointor docker images task before listening to blocks indefinitely (#778)
#785(@jaswinder6991): Update README.md to fix the broken link to Cait-Sith blog post (#785)
#800(@gilcu3): Replay all RTMR3 required events (#800)
#802(@DSharifi): Node ignores peers lagging 50 blocks behind (#802)
#780(@barakeinav1): (node) Enforce RTMR3 validation on event checks (#780)
#807(@kevindeforth): Node abort_key_event_instance instead of abort_key_event (#807)
#774(@gilcu3): Verify docker compose hashes correctly (#774)
#816(@barakeinav1): (contract) Correct tee_status and verify_tee logic (#816)
#838(@gilcu3): Fix typos and name inconsistencies (#838)
#852(@kevindeforth): Api mismatch for submitting participant info (#852)
#851(@kevindeforth): Propose join and rename to submit_participant_info (#851)
#788(@gilcu3): Use download_config parameter in mpc-node cli (#788)
#887(@pbeza): (tee) Ensure participants run valid TEE or none (#887)
#925(@kevindeforth): Increase gas limit for sign calls (#925)
#928(@gilcu3): CI get docker manifest timeouts (#928)
#955(@gilcu3): Add domainid ckdrequest again (#955)
#971(@pbeza): (tee) Avoid passing
ExpectedMeasurementsas a parameter in contract (#971)#997(@think-in-universe): Redundant secure_time validation for app compose (#997)
#1022(@gilcu3): Use correct assert_matches (#1022)
#1031(@netrome): Use version controlled contracts in compatibility tests (#1031)
#1040(@netrome): Add missing bs58 dependency in contract_history crate (#1040)
#1096(@DSharifi): Return participants with invalid attestation in error message (#1096)
#1149(@netrome): Ignore broken tests (#1149)
#1146(@pbeza): Don't cleanup allowed hashes on getters (#1146)
#738(@robin-near): Stream while syncing instead of waiting for full sync. (#738)
#1170(@gilcu3): Add needed deps in dockerfile, remove unnecessary (#1170)
#1165(@pbeza): Contract was refunding too much of deposit (#1165)
#1189(@pbeza): Address post-merge code review comments for PR #1183 (#1189)
#1193(@gilcu3): Restore exact workflow before #1113 not including MPC launcher (#1193)
#1174(@DSharifi): Node should retry attestation submission until its observed onchain (#1174)
#1202(@pbeza): Resubmit participant info more frequently (#1202)
#1229(@netrome): Run attestation requests within a tokio runtime (#1229)
#1247(@pbeza):
tee_authority::get_with_backoffwas ending up in a hot loop (#1247)#1258(@netrome): Remove references to stale scripts (#1258)
#1266(@gilcu3): Devnet using ckd with BLS (#1266)
#1281(@gilcu3): Use more efficient DomainRegistry (#1281)
#1282(@gilcu3): Remaining issues in TDX external guide (#1282)
#1330(@gilcu3): Bug wasm execution failed error when running mpc localnet nodes (#1330)
#1350(@netrome): Use port 24566 instead of 24567 for boot node arg in localnet guide (#1350)
#1358(@gilcu3): Ensure hex serialization in vote-code-hash (#1358)
#1364(@netrome): Disable state sync in localnet (#1364)
#1365(@gilcu3): Github actions by pinning versions, added zizmor to CI (#1365)
#1374(@gilcu3): Continue when receiver has lagged messages and log event (#1374)
#1381(@barakeinav1): Update operator guide with correct port configuration (#1381)
#1382(@gilcu3): Update the measurements that are actually used in the contract (#1382)
๐ Refactor
#670(@barakeinav1): (launcher) Update user-config format and values (#670)
#758(@pbeza): (tee) Move attestation generation logic (#758)
#882(@DSharifi): (attestation) Remove
TcbInfowrapper struct (#882)#884(@DSharifi): Remove
Quotewrapper struct in attestation (#884)#890(@netrome): Consistent usage of SerializableEdwardsPoint in crypto_shared/types.rs (#890)
#998(@netrome): Get rid of
mod.rsfiles (#998)#1098(@DSharifi): Make
verify_tee_participantAPI infallible (#1098)
๐ Documentation
#733(@gilcu3): Added doc on how to deploy an MPC node within a TEE (#733)
#886(@barakeinav1): Operator guide first version (#886)
#877(@kevindeforth): Document disaster recovery plan (#877)
#954(@DSharifi): Update readme to list testnet RPC providers for devnet tool (#954)
#980(@barakeinav1): Tdx cloud providers (#980)
#983(@barakeinav1): Update operator's guide with CVM update flow (#983)
#979(@barakeinav1): TEE design doc (#979)
#992(@barakeinav1): Explain how to get dstack logs (#992)
#993(@barakeinav1): Add link to HLD (#993)
#1002(@think-in-universe): Make the launcher docs more readable (#1002)
#999(@barakeinav1): Port collision documentation (#999)
#1001(@barakeinav1): Update production_settings (#1001)
#1033(@barakeinav1): Add explanation about key generation (#1033)
#1030(@barakeinav1): How to add MPC node key into account (#1030)
#1043(@barakeinav1): Getting lasted MPC hash from the contract (#1043)
#1045(@barakeinav1): Voting_new_hash (#1045)
#1041(@barakeinav1): Add vote_new_parameters documentation (#1041)
#1059(@barakeinav1): Update TEE difference table (#1059)
#1048(@barakeinav1): Update local key provider section (#1048)
#1072(@barakeinav1): Update information about MPC node retrieval (#1072)
#1062(@barakeinav1): Add submit_participant_info details (#1062)
#1106(@barakeinav1): Add reproducible build instructions for Dstack (#1106)
#1154(@barakeinav1): Update RTMR generation instructions for dstack 0.5.4 (#1154)
#1178(@pbeza): Update contract README with gas cost details (#1178)
#1256(@netrome): Document contract interface crate (#1256)
#1262(@netrome): Operator guide includes installation instructions for dstack-vmm instead of referencing their readme (#1262)
#1278(@pbeza): (localnet) Refine
localnetsetup instructions (#1278)
๐งช Testing
#481(@DSharifi): Test that threshold from previous running state is used when serving sign requests in resharing (#481)
#498(@kevindeforth): (node) Add timeout to avoid race condition in integration test (#498)
#555(@kevindeforth): (pytest) Resolve pytest nonce conflicts (#555)
#682(@DSharifi): Create pytest to test cancellation of key resharing (#682)
#746(@pbeza): (tee) Add an integration test for attestation verification (#746)
#819(@pbeza): (tee) Add contract integration test for MPC image hash voting (#819)
#834(@DSharifi): Re-organize tests in attestation crate (#834)
#828(@pbeza): (contract) Integration test to ensure contract rejects invalid remote attestations (#828)
#1099(@pbeza): Expired attestation kickout flow (#1099)
#1168(@DSharifi): Move sandbox integration tests into separate directory. (#1168)
#1183(@pbeza): Add grace period test for multi-node voting (#1183)
#1186(@DSharifi): Rewrite upgrade test as a sandbox integration tests (#1186)
#1200(@DSharifi): Wait for TEE attestations on resharings in pytests (#1200)
#986(@DSharifi): Proposal for adding new participant without valid TEE attestation should fail (#986)
#1211(@DSharifi): Resolve flaky test caused by ordering of attestations (#1211)
#1066(@pbeza): (contract) System test for
submit_tee_participant_info(#1066)
โ๏ธ Miscellaneous Tasks
#493(@netrome): Update devnet docs (#493)
#494(@netrome): Initial Changelog + CI check (#494)
#508(@kuksag): (pytests) Split cluster setup logic (#508)
#526(@DSharifi): Increase bytes allocated to version in report data from u8 to u16 (#526)
#549(@kevindeforth): (tee) Launcher cleanup (#549)
#564(@DSharifi): Fix docker build and publish action (#564)
#571(@andrei-near): Sanitize docker build CI to replace invalid tag symbol (#571)
#572(@kuksag): Remove p2p and signer key retrival via gcp (#572)
#569(@netrome): Enable support for JSON logging (#569)
#586(@sergey-ni): Migrated stats into IndexerState (#586)
#574(@DSharifi): Add info logs when creating file handle for TEE image hash (#574)
#573(@kuksag): Add
near_responder_idand number of responder keys ingcp-start.shlogic (#573)#575(@DSharifi): Keep MPC node running if image hash is disallowed (#575)
#615(@netrome): Bump nearcore to
2.7.0-rc.2(#615)#640(@gilcu3): Rename cait-sith -> threshold-signatures (#640)
#631(@netrome): Define release process (#631)
#649(@andrei-near): Build Docker image as part of CI tests (#649)
#651(@DSharifi): Use workspace for dependencies (#651)
#659(@DSharifi): Add
--enable-bulk-memory-optrequirement in contract readme (#659)#662(@DSharifi): Do not wait for indexer sync before generating TEE attestation (#662)
#669(@DSharifi): Use the right
protocol_statetype for MpcContractV1 state (#669)#673(@DSharifi): Update pytest build step to include
--enable-bulk-memoryflag (#673)#677(@DSharifi): Setup
blackas formatter for pytest code (#677)#686(@kuksag): Make python formatter apply for the whole repo (#686)
#633(@IkerAlus): (readme) Eddsa example in readme.md (#633)
#685(@kuksag): Add TEE Launcher image building step to CI (#685)
#692(@kuksag): Fix failing CI for TEE Launcher build (#692)
#688(@kuksag): Add
tee_launchertests in CI (#688)#694(@kuksag): Specify TEE Launcher image from
nearoneregistry (#694)#700(@DSharifi): Remove unused threshold parameter in start_cluster_with_mpc (#700)
#707(@kevindeforth): (deployment) Gcp start bash script: avoid unnecessary warning (#707)
#708(@kevindeforth): Rename web endpoint /get_public_data to /public_data (#708)
#718(@netrome): Override org-wide issue template (#718)
#720(@netrome): Move MPC node modules to
lib.rs(#720)#742(@DSharifi): (devnet) Add support for voting new approved code hash on devnet (#742)
#749(@kuksag): Remove mpc-keys crate in contract (#749)
#660(@hackpk): (lazy_static) Replace lazy_static with LazyLock (#660)
#750(@kuksag): Add python linter (#750)
#751(@kuksag): Allow contract to generate ABI (#751)
#773(@gilcu3): Execute python lint/format CI only when needed (#773)
#775(@DSharifi): Remove i/o code from attestation crate (#775)
#783(@gilcu3): Unify near-sdk versions (#783)
#787(@kevindeforth): (ci) Split ci-tests into multiple jobs (#787)
#790(@gilcu3): Remove nightly features from fmt config (#790)
#793(@gilcu3): Fix cargo-near install failure in CI (#793)
#792(@barakeinav1): (launcher) Small update of variable and file name for better clarity (#792)
#796(@kevindeforth): (pytests) Speedup - reduce rpc poll timeout and send txs in parallel (#796)
#798(@kevindeforth): (ci) Add clippy all-features (#798)
#810(@kevindeforth): (pytest) Improve test_lost_assets.py performance and coverage (#810)
#812(@kevindeforth): (pytest) Fix flaky test_signature_lifecycle (#812)
#813(@gilcu3): Use our own fork of dcap-qvl v0.2.4 (#813)
#821(@gilcu3): Remove default features prometheus (#821)
#806(@DSharifi): Implement serde + borsh (de)serialization for attestation crate types (#806)
#822(@gilcu3): Upd near-crypto in infra/scripts/generate_keys/ (#822)
#840(@DSharifi): Update
dcap-qvlcrate to upstream version (#840)#833(@barakeinav1): (launcher script) Update readme (#833)
#870(@DSharifi): Replace
YamlValuewith a String wrapper for docker_compose_file (#870)#835(@DSharifi): Add docker TEE build as a CI check (#835)
#871(@gilcu3): Added test_vote_code_hash_doesnt_accept_account_id_not_in_participant_list test (#871)
#873(@DSharifi): Implement borsh schema for attestation crate types (#873)
#874(@kevindeforth): (test) More detailed error checking in contract test (#874)
#876(@DSharifi): Update phala cloud API endpoint for collateral generation (#876)
#869(@pbeza): (tee) Remove account key from report data (#869)
#867(@gilcu3): Integrate ts#22 refactor (#867)
#878(@DSharifi): Integrate the attestation module into the contract code (#878)
#889(@DSharifi): Remove
near_cryptofrom attestation crate (#889)#922(@kevindeforth): (contract) Remove stale log of random seed in contract (#922)
#933(@DSharifi): Remove
near_cryptodependency from smart contract (#933)#937(@DSharifi): Move config.rs unit test behind feature gated test module (#937)
#872(@barakeinav1): (deploy script) Update MPC node ports (#872)
#914(@DSharifi): [breaking] Remove near_crypto from node code (#914)
#963(@kevindeforth): (node) Move tls into crate (#963)
#989(@gilcu3): Bump version tracing-subscriber (#989)
#991(@gilcu3): Bump dcap-qvl to released version (#991)
#995(@DSharifi): Use configuration value instead of constant for
TEE_UPGRADE_PERIOD(#995)#1000(@DSharifi): Upgrade
ed25519-dalekversion in contract (#1000)#1004(@DSharifi): Use crates.io version of dstack-sdk (#1004)
#1010(@netrome): Enable running with dstack TEE authority in start.sh (#1010)
#1007(@DSharifi): Delete
docker_release_tee.yamlworkflow (#1007)#1011(@gilcu3): Fix warning while building contract in pytests (#1011)
#1021(@gilcu3): Fix deployment start script (#1021)
#1013(@DSharifi): Use
test_utilscrate for image hashes in contract tests (#1013)#1018(@barakeinav1): Set MPC authority stared by launcher to always expect real TDX HW (#1018)
#1036(@andrei-near): Test for new docker images (#1036)
#1047(@gilcu3): Avoid storing migration contract binary (#1047)
#1016(@DSharifi): Enhance mock attestation struct with conditional validation (#1016)
#1068(@kevindeforth): (test) Fix resharing tests (#1068)
#1082(@kevindeforth): Update disaster recovery doc (#1082)
#1093(@gilcu3): Refactor to adapt to API changes in threshold-signatures (#1093)
#1104(@barakeinav1): Unify launcher folders (#1104)
#1108(@DSharifi): Remove redundant and duplicate clippy check for
devnetcrate (#1108)#1101(@DSharifi): Create an interface for submitting transactions with response (#1101)
#1113(@gilcu3): Update ci to use reproducible builds (#1113)
#1102(@DSharifi): Move contract crate into root workspace (#1102)
#1116(@gilcu3): Add detailed steps for mpc node image code inspection during upgrades (#1116)
#1122(@DSharifi): Fix build script for builds in detached head (#1122)
#1124(@gilcu3): Added security policy (#1124)
#1125(@DSharifi): Pin serde to
1.0.2191to fix compilation issue withdstack-sdk(#1125)#1127(@gilcu3): (ci) Separate CI actions for launcher and node (#1127)
#1131(@gilcu3): (docs) Update docs after #1127 (#1131)
#1136(@DSharifi): Move all workspace members in to
/cratesdirectory (#1136)#1115(@barakeinav1): Update user guide with dstack 0.5.4 changes (#1115)
#1143(@gilcu3): Adapt to API changes in ts#78 (#1143)
#1120(@kevindeforth): Index nodes by account id & TLS key in TEE State (#1120)
#1142(@gilcu3): Use workspace versions in contract Cargo.toml (#1142)
#1111(@DSharifi): Remove enum
VersionedMpcContractcontract state in favor of a single version struct (#1111)#1157(@gilcu3): Bring back legacy CI (#1157)
#1159(@DSharifi): Update error message in image hash watcher (#1159)
#1151(@DSharifi): Create DTO types for the attestation submission method (#1151)
#1166(@DSharifi): Use time durations instead of block numbers for tee grace period (#1166)
#1190(@gilcu3): Make sure devnet tests ckd (#1190)
#1141(@DSharifi): Add github action for unused dependencies (#1141)
#1221(@pbeza): Remove redundant
allowattribute (#1221)#1230(@DSharifi): Use base58 encoding for public key serialization on node HTTP server. (#1230)
#1231(@DSharifi): Document how to run a local mpc network (#1231)
#1251(@gilcu3): Remove unneeded deps in attestation crate (#1251)
#1253(@gilcu3): Added systemd service for VMM (#1253)
#1273(@kevindeforth): Resolve flaky integration tests (#1273)
#1261(@gilcu3): Contract unit tests for ckd (#1261)
#1276(@kevindeforth): Contract move helpers (#1276)
#1274(@gilcu3): Add support for CKD BLS in contract sandbox tests (#1274)
#1305(@kevindeforth): Use read-write lock for keyshare storage (#1305)
#1315(@DSharifi): Enforce sorted cargo dependencies on CI (#1315)
#1323(@netrome): Bump nearcore to 2.9.0 (#1323)
#1326(@netrome): Use pinned nextest version and standard installation action (#1326)
#1338(@gilcu3): Use proper serialization format for PersistentSecrets (#1338)
#1336(@netrome): Add support for dockerized localnet (#1336)
#1340(@pbeza): Cargo update and fix deprecated API usage (#1340)
#1347(@Copilot): Document reproducible builds in README.md (#1347)
#1352(@gilcu3): Use 0 as SOURCE_DATE_EPOCH for repro builds (#1352)
#1344(@gilcu3): Move test-utils to ts repo (#1344)
#1378(@gilcu3): Updated hard-coded TCB info for 3.0.0 release (#1378)
New Contributors
- @barakeinav1 made their first contribution in https://github.com/near/mpc/pull/524
- @sergey-ni made their first contribution in https://github.com/near/mpc/pull/586
- @IkerAlus made their first contribution in https://github.com/near/mpc/pull/633
- @hackpk made their first contribution in https://github.com/near/mpc/pull/660
- @jaswinder6991 made their first contribution in https://github.com/near/mpc/pull/785
- @think-in-universe made their first contribution in https://github.com/near/mpc/pull/997
- @Copilot made their first contribution in https://github.com/near/mpc/pull/1329
Full Changelog: https://github.com/near/mpc/compare/2.2.0...3.0.0
Docker images
- nearone/mpc-node:3.0.0
- Manifest digest: ``
- Image ID:
sha256:5239dd098bd53fea2b8d527e6885733d8b79dda2dc1fc3fbc871db77096454bd
- nearone/mpc-launcher:3.0.0
- Manifest digest:
sha256:4b7ab5fac94b7ecd6ba180cf655c5700595c61a3945c321ddbe104b3993aaf83 - Image ID:
sha256:90de0813776b83e40c8483ce85a0dfe8e8f6c6deba24ce835f28baf0d3d2628b
- Manifest digest:
Binaries
- mpc-node v3.0.0 (Linux x86_64, glibc): mpc-node-v3.0.0-linux-x86_64.tar.gz
- mpc-contract v3.0.0 (WASM + ABI): mpc-contract-v3.0.0.tar.gz