# ZIP 205: Deployment of the Sapling Network Upgrade

Status: Final

Owners: Daira-Emma Hopwood

Snapshot: a34cfc091434275120ff017c92c3b50d3cef623a

Source date: 2026-10-16T02:56:04+01:00

[Source revision](https://github.com/zcash/zips/commit/a34cfc091434275120ff017c92c3b50d3cef623a)

[Official source](https://zips.z.cash/zip-0205) · [Source file](https://github.com/zcash/zips/blob/a34cfc091434275120ff017c92c3b50d3cef623a/zips/zip-0205.rst)

Preamble

**ZIP**: 205

**Title**: Deployment of the Sapling Network Upgrade

**Owners**: [Daira-Emma Hopwood](mailto:daira@jacaranda.org)

**Credits**: Simon Liu

**Status**: Final

**Category**: Consensus / Network

**Created**: 2018-10-08

**License**: MIT

<a id="terminology"></a>

## Terminology

The key words "MUST" and "SHOULD" in this document are to be interpreted as described in BCP 14<a id="fnref1"></a>
[1](#fn1) when, and only when, they appear in all capitals.

The terms "consensus branch" and "network upgrade" in this document are to be interpreted as described in ZIP 200.<a id="fnref2"></a>
[2](#fn2)

The terms "Testnet" and "Mainnet" are to be interpreted as described in section 3.12 of the Zcash Protocol Specification<a id="fnref3"></a>
[3](#fn3).

The terms below are to be interpreted as follows:

**Sapling**: 

Code-name for the second Zcash network upgrade, also known as Network Upgrade 1.

<a id="abstract"></a>

## Abstract

This proposal defines the deployment of the Sapling network upgrade. In addition, it describes a hard fork that occurred on Testnet to allow "minimum-difficulty" blocks.

<a id="specification"></a>

## Specification

<a id="sapling-deployment"></a>

### Sapling deployment

The primary sources of information about Sapling consensus protocol changes are:

- The Zcash Protocol Specification<a id="fnref4"></a>
  [4](#fn4).

- Transaction Signature Validation for Sapling<a id="fnref5"></a>
  [5](#fn5).

- Network Upgrade Mechanism<a id="fnref6"></a>
  [6](#fn6).

The network handshake and peer management mechanisms defined in<a id="fnref7"></a>
[7](#fn7) also apply to this upgrade.

The following network upgrade constants<a id="fnref8"></a>
[8](#fn8) are defined for the Sapling upgrade:

**CONSENSUS_BRANCH_ID**: 

`0x76b809bb`

**ACTIVATION_HEIGHT (Sapling)**: 

Testnet: 280000

Mainnet: 419200

On Testnet, Sapling had activated prior to this height, but that consensus branch was rolled back. A subsequent hard fork occurred on Testnet, changing the difficulty algorithm to accept "minimum-difficulty" blocks under certain conditions starting at block height 299188.

On both Mainnet and Testnet, Sapling-compatible nodes MUST advertise protocol version 170007 or later. The minimum peer protocol version that Sapling-compatible nodes will connect to, remains 170002.

Pre-Sapling nodes are defined as nodes advertising a protocol version less than 170007.

Approximately three days (defined in terms of block height) before the Sapling activation height, Sapling-compatible nodes will change the behaviour of their peer connection logic in order to prefer pre-Sapling peers for eviction from the set of peer connections.

```
/** The period before a network upgrade activates, where connections to upgrading peers are preferred (in blocks). */
static const int NETWORK_UPGRADE_PEER_PREFERENCE_BLOCK_PERIOD = 24 * 24 * 3;
```

The implementation is similar to that for Overwinter which was described in <a id="fnref9"></a>
[9](#fn9).

Once Sapling activates on Testnet or Mainnet, Sapling nodes SHOULD take steps to:

- reject new connections from pre-Sapling nodes;

- disconnect any existing connections to pre-Sapling nodes.

<a id="change-to-difficulty-adjustment-on-testnet"></a>

### Change to difficulty adjustment on Testnet

Section 7.6.3 of the Zcash Protocol Specification<a id="fnref10"></a>
[10](#fn10) describes the algorithm used to adjust the difficulty of a block (defined in terms of a "target threshold") based on the `nTime` and `nBits` fields of preceding blocks.

This algorithm changed on Testnet, starting from block 299188, to allow "minimum-difficulty" blocks. If the block time of a block from this height onward is greater than 15 minutes after that of the preceding block, then the block is a minimum-difficulty block. In that case its `nBits` field MUST be set to ToCompact(PoWLimit), where PoWLimit is the value defined for Testnet in section 5.3 of the Zcash Protocol Specification<a id="fnref11"></a>
[11](#fn11), and ToCompact is as defined in section 7.7.4 of that specification<a id="fnref12"></a>
[12](#fn12).

Note: a previous revision of this ZIP incorrectly said that only the target threshold of minimum-difficulty blocks is affected. In fact the `nBits` field is modified as well, and this affects difficulty adjustment for subsequent blocks.

This change does not affect Mainnet.

<a id="backward-compatibility"></a>

## Backward compatibility

Prior to the network upgrade activating, Sapling and pre-Sapling nodes are compatible and can connect to each other. However, Sapling nodes will have a preference for connecting to other Sapling nodes, so pre-Sapling nodes will gradually be disconnected in the run up to activation.

Once the network upgrades, even though pre-Sapling nodes can still accept the numerically larger protocol version used by Sapling as being valid, Sapling nodes will always disconnect peers using lower protocol versions.

<a id="support-in-zcashd"></a>

## Support in zcashd

Support for Sapling consensus rules was implemented in zcashd version 2.0.0. The majority of support for RPC calls and persistence of Sapling z-addresses was implemented in version 2.0.1. Both of these versions advertise protocol version 170007.

<a id="references"></a>

## References

---

1. [Information on BCP 14 — "RFC 2119: Key words for use in RFCs to Indicate Requirement Levels" and "RFC 8174: Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words"](https://www.rfc-editor.org/info/bcp14)[↩︎](#fnref1)

2. [ZIP 200: Network Upgrade Mechanism](/zip/200)[↩︎](#fnref2)

3. [Zcash Protocol Specification, Version 2021.2.16. Section 3.12: Mainnet and Testnet](protocol/protocol.pdf#networks)[↩︎](#fnref3)

4. [Zcash Protocol Specification, Version 2021.2.16 or later](protocol/protocol.pdf)[↩︎](#fnref4)

5. [ZIP 243: Transaction Signature Validation for Sapling](/zip/243)[↩︎](#fnref5)

6. [ZIP 200: Network Upgrade Mechanism](/zip/200)[↩︎](#fnref6)

7. [ZIP 201: Network Peer Management for Overwinter](/zip/201)[↩︎](#fnref7)

8. [ZIP 200: Network Upgrade Mechanism](/zip/200)[↩︎](#fnref8)

9. [ZIP 201: Network Peer Management for Overwinter](/zip/201)[↩︎](#fnref9)

10. [Zcash Protocol Specification, Version 2021.2.16. Section 7.7.3: Difficulty adjustment](protocol/protocol.pdf#diffadjustment)[↩︎](#fnref10)

11. [Zcash Protocol Specification, Version 2021.2.16. Section 5.3: Constants](protocol/protocol.pdf#constants)[↩︎](#fnref11)

12. [Zcash Protocol Specification, Version 2021.2.16. Section 7.7.4: nBits conversion](protocol/protocol.pdf#nbits)[↩︎](#fnref12)

## Citation relationships

Cites: [ZIP 200](https://zip-tools-web.harpocrates.workers.dev/zip/200), [ZIP 201](https://zip-tools-web.harpocrates.workers.dev/zip/201), [ZIP 243](https://zip-tools-web.harpocrates.workers.dev/zip/243)

Cited by: [ZIP 173](https://zip-tools-web.harpocrates.workers.dev/zip/173), [ZIP 208](https://zip-tools-web.harpocrates.workers.dev/zip/208), [ZIP 210](https://zip-tools-web.harpocrates.workers.dev/zip/210), [ZIP 211](https://zip-tools-web.harpocrates.workers.dev/zip/211), [ZIP 213](https://zip-tools-web.harpocrates.workers.dev/zip/213), [ZIP 218](https://zip-tools-web.harpocrates.workers.dev/zip/218), [ZIP 243](https://zip-tools-web.harpocrates.workers.dev/zip/243), [ZIP 308](https://zip-tools-web.harpocrates.workers.dev/zip/308)