Skip to content

1.21.0

Choose a tag to compare

@ppca ppca released this 20 Oct 09:04
· 91 commits to develop since this release
1.21.0
7fe18b5

Summary

Bumps the workspace version from 1.20.0 to 1.21.0.

  • Midnight bidirectional calls follow the canonical SDK: request ids, attestations and response events match @sig-net/midnight 0.25.0-rc.1, the attestation signs a hash of the output, and executionDest is 64 bytes (#1354, #1372, #1443). Publishing is more reliable: duplicate publishes are cut, the RPC client leaves a stale backend, proof-server requests use a fresh connection, and a submit the node failed to validate is retried (#1445, #1458, #1469, #1470).
  • Bidirectional admission follows processable: schemas are limited and checked, the Ethereum chain id is checked, only targets with an execution watcher are accepted, and the reserved attestation path is refused (#1321, #1400, #1422). A decode error no longer attests failure, and an undecodable output parks the request on every chain (#1302, #1421).
  • Response encoding fixes: Borsh responses use native widths, multi-field ABI responses are one tuple, and contract calls with one or two bytes of calldata are traced (#1396, #1397, #1467).
  • Solana events are parsed from inner instructions, so none are lost to truncated logs (#1399).
  • Ethereum drops Helios and no longer sends duplicate respond transactions (#1349, #1382).
  • Tron: HTTP client, protocol protos and transaction signing (not yet enabled) (#1374, #1394, #1411).
  • RPC retries: one shared cooldown per chain, typed failure classification, and indexers restarted by the supervisor with backoff (#1415, #1418, #1436, #1459).
  • Node: /sync is authenticated, the /state endpoint is removed, Redis calls time out, and unknown key versions are rejected in derivation (#1361, #1377, #1401, #1438).

Breaking changes

  • Node–Node: 1.20.0 and 1.21.0 nodes admit, encode or attest some requests differently, so while both versions run, those requests may not complete:
    • Midnight: request ids, attestations and caller binding (#1354, #1355, #1372, #1443).
    • Admission rules: schema limits, chain id, supported targets and the reserved attestation path (#1321, #1400, #1422).
    • A decode error no longer attests failure (#1302).
    • Borsh and ABI response encoding (#1396, #1397).
    • Ethereum contract calls with one or two bytes of calldata are traced (#1467).
    • Solana events are parsed from inner instructions (#1399).
    • /sync requests and replies are signed and encrypted (#1361).
  • Network–Applications:
    • Midnight: request ids, the attestation digest and the RespondBidirectionalEvent layout change, and executionDest is 64 bytes. Applications must move to @sig-net/midnight 0.25.0-rc.1 and the matching singleton (#1443).
    • Solana, Hydration and Canton: output schemas with tuples, nested arrays, arrays of bytes or string, more than 32 fields or fixed arrays longer than 256 are refused at admission (#1422).
    • Bidirectional requests can only target Ethereum; other targets are refused (#1400).
    • Ethereum-targeted transactions must carry the configured network's chain id (#1422).
    • Requests with a key version other than 0 or 1 are refused. signet-crypto derive functions now return Result (#1438).
  • Operator:
    • Mainnet deployments must set MPC_ETH_NETWORK=mainnet; it defaults to sepolia, and a mismatch refuses every Ethereum-targeted request. All nodes must set the same network (#1422).
    • --eth-light-client, --eth-helios-data-path and --eth-consensus-rpc-http-url are removed; drop them from node configs (#1349).
    • The /state endpoint is removed; use /status or /metrics (#1377).
    • OpenTelemetry export now follows --opentelemetry-level (MPC_OPENTELEMETRY_LEVEL), which defaults to off; set it to keep exporting (#1406).
    • A node whose GCP key share does not decode now stays in Starting instead of rejoining without key material (#1389).