# Dependencies between potential protocol changes
```mermaid
---
theme: 'base'
config:
themeVariables:
fontSize: 18px
fontFamily: sans
---
flowchart RL
classDef nu7 fill:#ffe8e8,stroke:#d08080,font-weight:600;
classDef txfmt fill:#f0ffff,stroke:#80a0b0;
classDef key fill:#f0f0f0,stroke:#c8c8c8,font-size:28px;
dep([<div style="margin:0.2em">Dependency</div>]) ~~~ usecase{{<div style="margin:0.2em">Use case</div>}} ~~~ NU7[Proposed for NU7]:::nu7 ~~~ Feature ~~~ needtx[Transaction/block<br>format change]:::txfmt ~~~~ A -->|<div style="font-size:18px;background-color:#ffffff"> depends on </div>| B ~~~~ Key:::key
```
Note: Don't read too much into headings. Their length is constrained by a rendering limitation so they are not as nuanced as they could be.
```mermaid
---
theme: 'base'
config:
themeVariables:
fontSize: 18px
fontFamily: sans
flowchart:
diagramPadding: 2
nodeSpacing: 40
padding: 6
subGraphTitleMargin:
top: -6
bottom: 16
rankSpacing: 38
wrappingWidth: 1000
curve: 'basis'
---
flowchart RL
classDef benefit fill:#e8fde8,stroke:#909090;
classDef category fill:#ffffec,stroke:#a0a0a0;
classDef importantcategory fill:#ffffd0,stroke:#909090;
classDef nu7 fill:#ffe8e8,stroke:#d08080,font-weight:600;
classDef txfmt fill:#f0ffff,stroke:#80a0b0;
classDef key fill:#ffffff,font-size:22px,font-weight:600;
classDef invisible opacity:0;
%% graph layout hacks
zcashd ~~~ bolt
zcashd ~~~ csv
zcashd ~~~ onchainvote
%% Primary blockers
primary:::importantcategory
subgraph primary[<div style="margin:0.7ex;font-size:22px;font-weight:500">Primary blockers</div>]
dummy:::invisible ~~~ zcashd([<div style="padding:0.5ex">zcashd<br>Deprecation</div>])
zallet[Zallet 1.0]
zaino([<div style="padding:0.5ex">Zaino<br>libraries</div>])
end
zallet --> zaino
zcashd --> zallet
%% Required in some NU for new features
txv6["<div style="background-color:#f0ffff"> [ZIP 230/246] <br><div style="font-size:20px">v6 tx</div></div>"]:::nu7
txv6 --> zcashd
ZSAs --> zcashd
%% Proposed NU7 features
fees["[ZIP 2002]<br>Explicit Fees"]:::nu7
keyrot["[ZIP ]<br>Key Rotation"]:::nu7
lockbox["[ZIP ] Ongoing<br>Lockbox<br>Disbursement"]:::nu7
NSM["[ZIP 233]<br>NSM"]:::nu7
NSMuse["[ZIP 234/235]<br>NSM usage"]:::nu7
sprout["[ZIP 2003]<br>Disable Sprout"]:::nu7
s1:::benefit
subgraph s1[<div style="margin-top:0.9ex;font-size:21px">Benefit to combine</div>]
memo["[ZIP 231]<br>Memo Bundles"]:::nu7
ZSAs["[ZIP 226/227]<br><div style='font-size:20px'>ZSAs</div>"]:::nu7
QRecoverability["<div style='padding-left:0.5em;padding-right:0.5em'>[ZIP ] Quantum<br>Recoverability</div>"]:::nu7
frost["[ZIP 312]<br>FROST"]
end
sprout ~~~ fees --> txv6
NSM --> txv6
keyrot --> txv6
lockbox ---> txv6
memo --> txv6
QRecoverability --> txv6
ZSAs --> txv6
NSMuse --> NSM
lockbox --> keyrot
lockbox --> frost
%% Things enabled by proposed NU7 features
authaddr[Authenticated<br>Reply<br>Addresses]
pruning{{<div style="margin:0.2em">Memo pruning</div>}}
authaddr --> memo
pruning --> memo
%% Ongoing R&D
ongoingrnd:::importantcategory
subgraph ongoingrnd[<div style="margin:0.7ex;font-size:22px;font-weight:500">Ongoing R&D</div>]
txcontrol[Payment<br>Approval] --> txcontroltx[Payment<br>Approval tx<br>format change]:::txfmt
Crosslink[<div style="font-size:21px;margin:0.1em">Crosslink</div>] --> crosslinkblk[Block header<br>change or<br>equivalent]:::txfmt
Tachyon[<div style="font-size:21px;margin:0.1em">Tachyon</div>] --> tachyontx[Tachyon tx<br>format change]:::txfmt
swaps[Atomic<br>Swaps]
longterm[Long-term<br>storage] --> longtermtx[Long-term storage<br>tx format change]:::txfmt
QRecovery[Quantum<br>Recovery] --> QRecoverytx[Quantum Recovery<br>tx format change]:::txfmt --> QRecoverability
end
%% Fake edge to fix render; this dependency does not exist.
crosslinkblk ~~~ zcashd
swaps ---> ZSAs
Crosslink --> zcashd
Tachyon --> zcashd
%% Speculative R&D
speculativernd:::category
subgraph speculativernd[<div style="margin:0.8ex;font-size:22px;font-weight:500">Speculative R&D</div>]
tzetx[TZE tx<br>format change]:::txfmt
TZEs["[ZIP 222]<br>TZEs"]
bolt["[ZIP 309]<br>BOLT"]
stark[Ztarknet]
eip1559["Automatic fee<br>adjustment"]
proofofbal["Proof-of-<br>Balance"]
onchainvote["On-Chain Voting"]
end
bolt --> TZEs
stark --> TZEs
TZEs --> tzetx
eip1559 --> zcashd
onchainvote --> proofofbal
%% Other things that have fallen by the wayside
wayside:::category
subgraph wayside[<div style="margin-top:0.9ex;font-size:22px;font-weight:500">By the wayside</div>]
csv["[ZIP 68/112/113]<br>CSV"]
poolret["[ZIP 319]<br>Pool Retirement"]
limitsap["[ZIP 219] Disable<br>moving into Sapling"]
limittra["Disable moving<br>into transparent"]
end
limitsap --> poolret
limittra --> poolret
poolret --->|<div style="font-size:20px;background-color:#ffffec"> wallet </div>| zcashd
```