https://githu
Wallets implementing this specification SHOULD use a conventional fee calculated in zatoshis per the following formula:
\(\begin{array}{rcl}
- logical\_actions &=& \mathsf{max}\big(\mathsf{ceiling}\big(\frac{tx\_in\_total\_size}{p2pkh\_standard\_input\_size}\big),
- \mathsf{ceiling}\big(\frac{tx\_out\_total\_size}{p2pkh\_standard\_output\_size}\big)\big) \;+ \\
- & & 2 \cdot nJoinSplit \;+ \\
- & & \mathsf{max}(nSpendsSapling, nOutputsSapling) \;+ \\
- & & nActionsOrchard \\
- conventional\_fee &=& marginal\_fee \cdot \mathsf{max}(grace\_actions, logical\_actions)
+ contribution_{\,\mathsf{Transparent}} &=&
+ \mathsf{max}\big(\mathsf{ceiling}\big(\frac{tx\_in\_total\_size}{p2pkh\_standard\_input\_size}\big),\,
+ \mathsf{ceiling}\big(\frac{tx\_out\_total\_size}{p2pkh\_standard\_output\_size}\big)\big) \\
+ contribution_{\,\rlap{\mathsf{Sprout}}\phantom{\mathsf{Transparent}}} &=& 2 \cdot nJoinSplit \\
+ contribution_{\,\rlap{\mathsf{Sapling}}\phantom{\mathsf{Transparent}}} &=& \mathsf{max}(nSpendsSapling,\, nOutputsSapling) \\
+ contribution_{\,\rlap{\mathsf{Orchard}}\phantom{\mathsf{Transparent}}} &=& nActionsOrchard \\
+ \\
+ logical\_actions &=& contribution_{\,\mathsf{Transparent}} +
+ contribution_{\,\mathsf{Sprout}} +
+ contribution_{\,\mathsf{Sapling}} +
+ contribution_{\,\mathsf{Orchard}} \\
+ conventional\_fee &=& marginal\_fee \cdot \mathsf{max}(grace\_actions,\, logical\_actions)
\end{array}\)
The inputs to this formula are taken from transaction fields defined in the Zcash protocol specification :