# 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">&nbsp;depends on&nbsp;</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">&nbsp;&nbsp;[ZIP 230/246]&nbsp;&nbsp;<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">&nbsp;wallet&nbsp;</div>| zcashd ```