Skip to content

Releases: near/nearcore

2.13.0-rc.2

2.13.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@pugachAG pugachAG released this 26 Jun 11:46
Immutable release. Only release title and notes can be modified.
CODE_COLOR: CODE_GREEN_TESTNET
RELEASE_VERSION: 2.13.0-rc.2
PROTOCOL_UPGRADE: FALSE
DATABASE_UPGRADE: FALSE
SECURITY_UPGRADE: FALSE

This release includes #15969 and #15975 on top of 2.13.0-rc.1.

2.13.0-rc.1

2.13.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@pugachAG pugachAG released this 23 Jun 13:04
Immutable release. Only release title and notes can be modified.
CODE_COLOR: CODE_YELLOW_TESTNET
RELEASE_VERSION: 2.13.0-rc.1
PROTOCOL_UPGRADE: TRUE
DATABASE_UPGRADE: TRUE
SECURITY_UPGRADE: FALSE

Protocol Changes

  • Opt-in strict nonce mode for transactions. A transaction may opt in to require its nonce be exactly the previous nonce for that access key plus one; such transactions are rejected when the nonce repeats or skips a value. Transactions that do not opt in keep the existing monotonic nonce behavior. (#15361, #15402)
  • Stabilized the FIPS 204 ML-DSA-65 post-quantum signature scheme as a third transaction-signature and access-key scheme alongside ed25519 and secp256k1. Public keys are stored on-trie as a 32-byte SHA3-256 hash rather than the full 1952 bytes, and ML-DSA-65 signature verification is charged an extra 100 Ggas at transaction conversion to cover its higher verification cost. (#15731)
  • Ensure delegate action returns the correct error consistently. (#15458)
  • Fix action_delete_account not accounting for the global contract identifier when checking the account deletion storage limit. For accounts using a global contract, the check overcounted storage usage by the identifier size (32 bytes, or the account id length for GlobalByAccount), so they were slightly harder to delete. (#15752)
  • Fix a bug in receiver verification for a DeterministicStateInitAction inside a DelegateAction that made it impossible to create deterministic accounts through meta transactions. (#15812)
  • Stabilized gas keys (NEP-611): a new access key type that carries a pre-funded NEAR balance and up to 1,024 independent nonce sequences. Transactions signed with a gas key pay gas costs from the key's balance rather than the signer's account balance. (#15183)
  • Added a new DelegateV2 meta-transaction action that lets gas keys (NEP-611) sign relayed (meta) transactions. Unlike the existing Delegate action, whose nonce is the signing access key's plain nonce, DelegateV2 carries a TransactionNonce that selects either the access key's nonce or one of a gas key's parallel nonce sequences by index. The signed payload is versioned so future variants can be added without a new action type. (#15904, #15905, #15906)
  • Stabilized the promise_yield_create_with_id and promise_yield_resume_with_yield_id host functions, which let a contract supply its own deterministic 32-byte yield ID when creating a yield/resume promise instead of storing the runtime-generated data_id in state. This avoids the storage cost of tracking yields, enabling use cases such as in-contract mempools. (#15602)
  • Increased the cost of creating new accounts from ~0.0008 NEAR to ~0.007 NEAR (NEP-642), paid in gas. The gas will now be purchased at a higher price than before (at least min_gas_purchase_price = 0.001 NEAR/TGas) to cover the cost of creating new accounts. Gas will still be burned at the same price as before (usually min_gas_price = 0.0001 NEAR/TGas) and the price difference will be refunded, so the total cost of a transaction will stay the same. However the balance required to start a transaction will be 10x higher than before, as the price at which gas is purchased will be 10x higher than before. For any operation which creates an account, the protocol will deduct ~0.007 NEAR from the gas refund to cover the cost of creating an account.
  • Meta transactions with gas key support via Action::DelegateV2. (#15183)
  • Extend the existing sticky chunk-producer-to-shard assignment to resharding boundaries. Previously stickiness was keyed by ShardIndex, which is unstable across a shard layout change; switch to keying by ShardId, and when a shard splits distribute the parent's chunk producers across its child shards using greedy stake-balanced bin-packing. Reduces unnecessary state sync after resharding.
  • Skip transactions whose hash already appeared earlier in the same chunk. A transaction hash is also its outcome id, and outcomes are committed (via the chunk outcome root) keyed by that id.
  • Recompute block_ordinal and epoch_sync_data_hash against local chain state when validating received block headers.
  • Emit ExecutionMetadata::V4 from chunk producers. V4 carries a per-action Vec<AccountContract>: one entry per action in the receipt, recording the contract attached to the receiver account immediately before that action ran. Captured for every action kind (not just FunctionCall), so consumers can see what code an account had even on receipts that did not invoke a contract. AccountContract::None is emitted when the account has no contract deployed, when it did not exist (e.g. the CreateAccount slot that materialized it), or for unexecuted trailing slots after a mid-receipt failure. Order matches the receipt's actions vector. (#15822)
  • Authenticate ContractCodeResponse messages with a chunk-producer signature, matching the signed-message pattern already used by ChunkContractAccesses and ContractCodeRequest.
  • Stabilized continuous epoch sync: epoch sync proofs are maintained incrementally at each epoch boundary, and block headers are garbage-collected on non-archival nodes. Enabling this feature performs a DB migration (48 → 49) to store the compressed proof. (#15476)
  • Stabilized dynamic resharding: shards are now split automatically at epoch boundaries based on runtime state size, without requiring a protocol upgrade to ship a new hard-coded shard layout. (#15823)
  • Clamp the gas admission check used when forwarding buffered receipts under congestion control to allowed_shard_outgoing_gas, so a receipt whose gas exceeds the per-shard outgoing budget can still be forwarded when the shard is in the "allowed" set. (#15924)

Non-protocol Changes

  • EXPERIMENTAL_receipt_to_tx accepts optional block_height, shard_id, window hint params. On a column miss with a hint set, the handler scans execution outcomes around the hint. Best-effort: long emit-to-execute delays may return UnknownReceipt instead of a terminal tx. Resharding boundaries are handled. New node-config knobs: receipt_to_tx_max_hint_window (default 20), receipt_to_tx_max_hop_distance (default 20), receipt_to_tx_max_outcomes_per_request (default 20_000). Operators serving cold-archival queries should consider raising these.
  • Added pagination to EXPERIMENTAL_view_state and the view_state query. The request takes after_key_base64 and limit, and the response returns last_key to fetch the following page. (#15743)

Protocol upgrade voting

This release upgrades the protocol version from 84 to 85.
Voting for protocol version 84 will start on Tuesday June 30th 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 85 is expected to happen 7-14 hours after the voting epoch ends.

2.12.0

Choose a tag to compare

@pugachAG pugachAG released this 03 Jun 12:57
Immutable release. Only release title and notes can be modified.
CODE_COLOR: CODE_YELLOW_MAINNET
RELEASE_VERSION: 2.12.0
PROTOCOL_UPGRADE: TRUE
DATABASE_UPGRADE: TRUE
SECURITY_UPGRADE: FALSE

Protocol Changes

  • The contract runtime has been upgraded to use the new Wasmtime-based runtime.
  • The contract runtime now allows for bulk memory instructions in Wasm code.

Non-protocol Changes

  • Fix VM compilation and cache metrics (near_vm_runner_compilation_seconds, near_vm_compiled_contract_cache_*) not being reported for contract deployment, global contract distribution, and pipelining code paths. Add new near_vm_compiled_contract_memory_cache_hits_total metric to distinguish in-memory cache hits from disk hits. (#15580)
  • Removed deprecated fields from EpochConfig, GenesisConfig, and ProtocolConfigView: num_block_producer_seats_per_shard, avg_hidden_validator_seats_per_shard, num_chunk_only_producer_seats.
  • New EXPERIMENTAL_receipt_to_tx RPC method that resolves a receipt ID back to the originating transaction hash and sender account. Requires save_receipt_to_tx config enabled and all-shards tracking. (#15414)
  • New sync handler (sync-v2) replaces the legacy sync implementation with a clean state machine. Nodes are routed through one of two paths based on how far behind they are: near-horizon nodes sync blocks directly, while far-horizon nodes follow the full pipeline (epoch sync, header sync, state sync, block sync). (#15335)
  • Epoch sync proofs are now maintained incrementally at each epoch boundary instead of being derived on demand. Block headers are garbage collected alongside block bodies on non-archival nodes, reducing disk usage. (#15412)
  • Validator key consistency check runs once per epoch to detect mismatches between the node's validator key and the key registered on chain. Misconfigured nodes will exit via panic. (#15417)
  • State sync status now shows download and apply parts progress. (#15391)
  • Fix: allow Disconnect message on Tier3 connections. (#15405)
  • Fix: gracefully handle expired peer in peer_connection_attempt. (#15390)
  • Archival nodes with split storage (cold store) will run a one-time migration on startup that is expected to take 1–2 hours depending on disk performance. Expect downtime. Nodes without cold store are not affected. (#15503)

Protocol upgrade voting

This release upgrades the protocol version from 83 to 84.
Voting for protocol version 84 will start on Wednesday June 10th 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 84 is expected to happen 7-14 hours after the voting epoch ends.

2.12.0-rc.2

2.12.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@pugachAG pugachAG released this 27 May 08:18
Immutable release. Only release title and notes can be modified.
CODE_COLOR: CODE_GREEN_TESTNET
RELEASE_VERSION: 2.12.0-rc.2
PROTOCOL_UPGRADE: FALSE
DATABASE_UPGRADE: FALSE
SECURITY_UPGRADE: FALSE

This release includes #15755 and #15782 on top of 2.12.0-rc.1.

2.12.0-rc.1

2.12.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@pugachAG pugachAG released this 25 May 12:59
Immutable release. Only release title and notes can be modified.
CODE_COLOR: CODE_YELLOW_TESTNET
RELEASE_VERSION: 2.12.0-rc.1
PROTOCOL_UPGRADE: TRUE
DATABASE_UPGRADE: TRUE
SECURITY_UPGRADE: FALSE

Protocol Changes

  • The contract runtime has been upgraded to use the new Wasmtime-based runtime.
  • The contract runtime now allows for bulk memory instructions in Wasm code.

Non-protocol Changes

  • Fix VM compilation and cache metrics (near_vm_runner_compilation_seconds, near_vm_compiled_contract_cache_*) not being reported for contract deployment, global contract distribution, and pipelining code paths. Add new near_vm_compiled_contract_memory_cache_hits_total metric to distinguish in-memory cache hits from disk hits. (#15580)
  • Removed deprecated fields from EpochConfig, GenesisConfig, and ProtocolConfigView: num_block_producer_seats_per_shard, avg_hidden_validator_seats_per_shard, num_chunk_only_producer_seats.
  • New EXPERIMENTAL_receipt_to_tx RPC method that resolves a receipt ID back to the originating transaction hash and sender account. Requires save_receipt_to_tx config enabled and all-shards tracking. (#15414)
  • New sync handler (sync-v2) replaces the legacy sync implementation with a clean state machine. Nodes are routed through one of two paths based on how far behind they are: near-horizon nodes sync blocks directly, while far-horizon nodes follow the full pipeline (epoch sync, header sync, state sync, block sync). (#15335)
  • Epoch sync proofs are now maintained incrementally at each epoch boundary instead of being derived on demand. Block headers are garbage collected alongside block bodies on non-archival nodes, reducing disk usage. (#15412)
  • Validator key consistency check runs once per epoch to detect mismatches between the node's validator key and the key registered on chain. Misconfigured nodes will exit via panic. (#15417)
  • State sync status now shows download and apply parts progress. (#15391)
  • Fix: allow Disconnect message on Tier3 connections. (#15405)
  • Fix: gracefully handle expired peer in peer_connection_attempt. (#15390)
  • Archival nodes with split storage (cold store) will run a one-time migration on startup that is expected to take 1–2 hours depending on disk performance. Expect downtime. Nodes without cold store are not affected. (#15503)

Protocol upgrade voting

This release upgrades the protocol version from 83 to 84.
Voting for protocol version 84 will start on Monday June 1st 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 84 is expected to happen 7-14 hours after the voting epoch ends.

2.11.1

Choose a tag to compare

@pugachAG pugachAG released this 21 Apr 12:59
CODE_COLOR: CODE_RED_MAINNET, CODE_RED_TESTNET
RELEASE_VERSION: 2.11.1
PROTOCOL_UPGRADE: FALSE
DATABASE_UPGRADE: FALSE
SECURITY_UPGRADE: TRUE

This release fixes critical flaws in nearcore code that could cause node crash.
Upgrade as soon as possible to avoid node downtime.

2.11.0

Choose a tag to compare

@pugachAG pugachAG released this 01 Apr 12:56
CODE_COLOR: CODE_YELLOW_MAINNET
RELEASE_VERSION: 2.11.0
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_resume after promise_yield_create will always work. Previously there were some cases where calling resume would fail if called too quickly after create. 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 DeleteAccount action 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_burnt field.
  • 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_forward RPC 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_state RPC silently dropping patches when a block was being processed concurrently, by removing an unnecessary clear() call that raced with new patches. (#14893)
  • Added experimental.tier3_public_addr network 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 Monday 2026-04-13 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.

2.11.0-rc.5

2.11.0-rc.5 Pre-release
Pre-release

Choose a tag to compare

@pugachAG pugachAG released this 30 Mar 16:25
CODE_COLOR: CODE_GREEN_TESTNET
RELEASE_VERSION: 2.11.0-rc.5
PROTOCOL_UPGRADE: FALSE
DATABASE_UPGRADE: FALSE
SECURITY_UPGRADE: FALSE

This release includes #15465 and reverts #15007 on top of 2.11.0-rc.4.

2.11.0-rc.4

2.11.0-rc.4 Pre-release
Pre-release

Choose a tag to compare

@pugachAG pugachAG released this 24 Mar 11:43
CODE_COLOR: CODE_GREEN_TESTNET
RELEASE_VERSION: 2.11.0-rc.4
PROTOCOL_UPGRADE: FALSE
DATABASE_UPGRADE: FALSE
SECURITY_UPGRADE: FALSE

This release includes #15430 and #15437 on top of 2.11.0-rc.3.

2.11.0-rc.3

2.11.0-rc.3 Pre-release
Pre-release

Choose a tag to compare

@pugachAG pugachAG released this 19 Mar 17:26
CODE_COLOR: CODE_GREEN_TESTNET
RELEASE_VERSION: 2.11.0-rc.3
PROTOCOL_UPGRADE: FALSE
DATABASE_UPGRADE: FALSE
SECURITY_UPGRADE: FALSE

This release includes #15415 on top of 2.11.0-rc.2.