CODE_COLOR: CODE_YELLOW_TESTNET
RELEASE_VERSION: 2.11.0-rc.1
PROTOCOL_UPGRADE: TRUE
DATABASE_UPGRADE: TRUE
SECURITY_UPGRADE: FALSE
Protocol Changes
- Contract gas limit is increased from 300 TGas to 1 PGas.
- Yield/Resume improvements - from now on, calling
promise_yield_resumeafterpromise_yield_createwill always work. Previously there were some cases where callingresumewould fail if called too quickly aftercreate. See the github issue for details. Strictly speaking, this could be a breaking change for contracts which expected the resume to fail in these situations, but it shouldn't affect normal use cases. - A promise with a single
DeleteAccountaction and no input promises will be executed immediately after the receipt that created it, before any other receipts for this account. - ETH implicit accounts now use a globally deployed contract instead of a contract embedded in the neard binary.
- Invalid transactions now generate execution outcomes, allowing indexers and RPC to report outcomes for all transactions including failed ones.
- Existing contract code is excluded from chunk state witnesses for deploy-contract and delete-account actions, reducing witness size by using internal trie nodes to check code size instead.
- Fix access key allowance being incorrectly decremented before validation checks that could fail. Previously, allowance was mutated in-place before storage stake and function call permission checks, so a failed transaction could incorrectly reduce the allowance.
- Include tokens burnt as part of global contract deploys in the corresponding execution outcome's
tokens_burntfield. - Fix deterministic account ID creation to allow creation by any incoming transfer (unless it's a refund) and correctly check whether the feature is enabled.
- Add nonce-based idempotency for global contract distribution receipts. Each distribution carries an auto-incremented nonce, and any distribution receipt with a stale nonce is dropped, preventing race conditions during multiple distribution attempts for the same contract.
Non-protocol Changes
- Replace polling for transaction status with event notifications to improve jsonrpc response latency
- Added a database migration to backfill trie data lost due to a bug in resharding. The migration runs automatically on node startup and takes approximately 5 minutes on an archival node. Non-archival nodes are not affected. (#15044)
- Fix
sandbox_fast_forwardRPC returning success before blocks are actually produced, by tracking target height explicitly instead of relying on the delta field which could be temporarily zero during processing. (#14899) - Fix
sandbox_patch_stateRPC silently dropping patches when a block was being processed concurrently, by removing an unnecessaryclear()call that raced with new patches. (#14893) - Added
experimental.tier3_public_addrnetwork config option to manually override the auto-discovered Tier3 public address.
Protocol upgrade voting
This release upgrades the protocol version from 82 to 83.
Voting for protocol version 83 will start on Thursday 2026-03-19 00:00:00 UTC.
To continue participating in consensus, you need to upgrade your node before this time.
If voting succeeds in one epoch, the protocol upgrade to version 83 is expected to happen 7-14 hours after the voting epoch ends.