From 3cf9d11da8b94638a255b7b3df2829dde1d7e875 Mon Sep 17 00:00:00 2001 From: nighthawk24 Date: Sun, 11 Oct 2020 23:47:16 -0400 Subject: [PATCH 01/38] Draft ZIP for reducing default tx fee --- zip-reduce-shielded_tx_fee.rst | 117 +++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 zip-reduce-shielded_tx_fee.rst diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst new file mode 100644 index 000000000..b0c06e516 --- /dev/null +++ b/zip-reduce-shielded_tx_fee.rst @@ -0,0 +1,117 @@ +:: + + ZIP: XXX + Title: Reduce default Shielded Transaction fee to 1000 zats + Owners: Aditya Bharadwaj + Original-Author: Aditya Bharadwaj + Status: Draft + Community Status: Request for comments : https://forum.zcashcommunity.com/t/zip-reduce-default-shielded-transaction-fee-to-1000-zats/37566 + Category: Consensus + Created: 2020-10-11 + License: MIT + + +Terminology +=========== + +The key words "MUST", "SHOULD", "SHOULD NOT", "MAY", "RECOMMENDED", +"OPTIONAL", and "REQUIRED" in this document are to be interpreted as +described in RFC 2119. [#RFC2119]_ + +"Z" refers to shielded address. +"T" refers to transparent address. + +The term "default transaction fee" in this document is in reference +to Z to Z transaction fee paid to miners on the Zcash network +for the work on includning the shielded transaction in a block. + + +Abstract +======== + +The goal of this ZIP is to discuss ideas around fee reduction, +collect feedback from wallet developers, miners & Zcash users +for consensus on reducing the default transaction fees and +get the Zcash default transaction fee reduced from 10,000 zats +to 1000 zats. + +With reduced fees, it will be cheaper to transact on the Zcash network, +while also inviting novel use cases for privacy +preserving applications that would benefit from the Privacy, +Security and Programmable Money aspects of the Zcash chain. + + +Out of Scope for this Proposal +============ + +Discussion around transaction fees for T to T, T to Z or Z to T. + + +Motivation +============ + +The default transaction fee presently is 0.0001 ZEC or 10,000 zats. +With ZEC market price of $100, a user can send 10,000 transactions +for 1 ZEC, that turns out to 1 cent per transaction and it rises +with the increase in the price of ZEC. + +With increase in light wallet adoptions on mobile clients, many users +will be new to the Zcash eco-system. And the fact that the +transaction fees are paid by the sender (not the receiver) is +new information to users who might use Zcash for e-commerce +and app interactions that might result in several transactions each day. + +Privacy must not cost a premium. The cost of 10 shielded transactions +buys 1GB of mobile data `in India today `__ + +Zcash users must be able to do more with their ZEC balance +than worry about paying the premium for shielded transactions. + + +Requirements for consensus +------------------------- + +The change to the default transaction fees must be undertaken sooner +as it gets difficult to gain consensus with the growth in the network +of wallets, exchanges, miners and other parties involved. + +The following parties need to be part of the consensus: + +* The technical aspects of a lower default fee need to be evaluated. +* A guarantee from mining groups is required to include the lowered +default fee transactions in the next block. +* Wallet developers need to update the software to use the new fee. +* Zcash documentation and community outreach must be undertaken to +make the change known. + + +Security and privacy considerations +----------- + +Unique transaction fees can cause linkability within transactions, +hence this change must be accepted by majority, if not all popular +shielded transaction software providers before announcing the change + + +ZIP Editors +----------- + +The current ZIP Editor is Aditya Bharadwaj, representing the Nighthawk Wallet. +Additional Editors will be selected by consensus among the current Editors. + + +ZIP Comments +============ + +Comments from the community on the ZIP should occur on the Zcash +Community Forum and the comment fields of the pull requests in +any open ZIPs. Editors will use these sources to judge rough consensus. + + +References +========== + +.. [#RFC2119] `Key words for use in RFCs to Indicate Requirement Levels `_ +.. [#zooko-1] `Zooko tweet on reducing tx fees `_ +.. [#zooko-2] `Zooko tweet on sharing tx fee with wallet developer `_ + From 0973905d6076c1f50f29a640be10ce4142c5a234 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Mon, 12 Oct 2020 09:23:51 -0400 Subject: [PATCH 02/38] Update zip-reduce-shielded_tx_fee.rst Fix formatting. Co-authored-by: Dimitris Apostolou --- zip-reduce-shielded_tx_fee.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index b0c06e516..2c2382026 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -62,7 +62,7 @@ new information to users who might use Zcash for e-commerce and app interactions that might result in several transactions each day. Privacy must not cost a premium. The cost of 10 shielded transactions -buys 1GB of mobile data `in India today `__ +buys 1GB of mobile data `in India today `. Zcash users must be able to do more with their ZEC balance than worry about paying the premium for shielded transactions. @@ -114,4 +114,3 @@ References .. [#RFC2119] `Key words for use in RFCs to Indicate Requirement Levels `_ .. [#zooko-1] `Zooko tweet on reducing tx fees `_ .. [#zooko-2] `Zooko tweet on sharing tx fee with wallet developer `_ - From a62c68a5ecae937e0431c67239c75f94d6275eda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Mon, 12 Oct 2020 09:26:51 -0400 Subject: [PATCH 03/38] Update zip-reduce-shielded_tx_fee.rst Fix spelling. Co-authored-by: Dimitris Apostolou --- zip-reduce-shielded_tx_fee.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 2c2382026..21414bc29 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -23,7 +23,7 @@ described in RFC 2119. [#RFC2119]_ The term "default transaction fee" in this document is in reference to Z to Z transaction fee paid to miners on the Zcash network -for the work on includning the shielded transaction in a block. +for the work on including the shielded transaction in a block. Abstract From 05a6e97aabf5806b8da1dd44b8941b0a9f8cae65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Mon, 12 Oct 2020 09:27:12 -0400 Subject: [PATCH 04/38] Update zip-reduce-shielded_tx_fee.rst Co-authored-by: Dimitris Apostolou --- zip-reduce-shielded_tx_fee.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 21414bc29..89d84703c 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -90,7 +90,7 @@ Security and privacy considerations Unique transaction fees can cause linkability within transactions, hence this change must be accepted by majority, if not all popular -shielded transaction software providers before announcing the change +shielded transaction software providers before announcing the change. ZIP Editors From bb2acb6c145bc1c12ac10f93c5d3989d5a374a9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Tue, 20 Oct 2020 20:27:14 -0400 Subject: [PATCH 05/38] Update ZIP #313 Add Activation & UX Guidance. --- zip-reduce-shielded_tx_fee.rst | 51 +++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 89d84703c..4ecc9cf48 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -1,10 +1,10 @@ :: - ZIP: XXX + ZIP: 313 Title: Reduce default Shielded Transaction fee to 1000 zats Owners: Aditya Bharadwaj Original-Author: Aditya Bharadwaj - Status: Draft + Status: Active Community Status: Request for comments : https://forum.zcashcommunity.com/t/zip-reduce-default-shielded-transaction-fee-to-1000-zats/37566 Category: Consensus Created: 2020-10-11 @@ -21,18 +21,18 @@ described in RFC 2119. [#RFC2119]_ "Z" refers to shielded address. "T" refers to transparent address. -The term "default transaction fee" in this document is in reference -to Z to Z transaction fee paid to miners on the Zcash network -for the work on including the shielded transaction in a block. +The term "default transaction fee" or "conventional transaction fee" +in this document is in reference to Z to Z transaction fee paid +to miners on the Zcash network for the work on including +the shielded transaction in a block. Abstract ======== -The goal of this ZIP is to discuss ideas around fee reduction, -collect feedback from wallet developers, miners & Zcash users +The goal of this ZIP is to gather wallet developers, miners & Zcash users for consensus on reducing the default transaction fees and -get the Zcash default transaction fee reduced from 10,000 zats +to get the Zcash default transaction fee reduced from 10,000 zats to 1000 zats. With reduced fees, it will be cheaper to transact on the Zcash network, @@ -71,18 +71,15 @@ than worry about paying the premium for shielded transactions. Requirements for consensus ------------------------- -The change to the default transaction fees must be undertaken sooner +The change to the conventional transaction fees must be undertaken sooner as it gets difficult to gain consensus with the growth in the network -of wallets, exchanges, miners and other parties involved. +of wallets, exchanges, miners and third parties involved. The following parties need to be part of the consensus: -* The technical aspects of a lower default fee need to be evaluated. -* A guarantee from mining groups is required to include the lowered -default fee transactions in the next block. -* Wallet developers need to update the software to use the new fee. -* Zcash documentation and community outreach must be undertaken to -make the change known. +* A guarantee from mining groups is required to include the lowered default fee transactions in the next block. +* Wallet developers need to provide commitment to update the software to use the new fee. +* Zcash documentation and community outreach must be undertaken to make the change known. Security and privacy considerations @@ -92,6 +89,26 @@ Unique transaction fees can cause linkability within transactions, hence this change must be accepted by majority, if not all popular shielded transaction software providers before announcing the change. +Varying/unique fees are bad for privacy, for the short term before blocks get full, +it’s fine for everyone to use a constant fee. [#nathan-1]_ + +Long term, the issue of fees needs to be re-visited as the blocks start getting consistently full. +And the possibility of a DoS scenario becomes critical in nature. New ZIP with flexible fees [#ian-1]_ +along with scaling solutions need to be evaluated and applied. + + +Activation +============ + +* The recommended fee of 0.00001 ot 1000 zats must be activated at block 1046400 to coincide with the `Canopy upgrade. ` +* With a grace period of ~4 weeks (block 1080000) to upgrade to the reduced default transaction fee for zcashd and core clients used by exchanges & service providers. + + +UX Guidance +============ + +Wallets must prevent users from altering the fee for shielded transactions. + ZIP Editors ----------- @@ -112,5 +129,7 @@ References ========== .. [#RFC2119] `Key words for use in RFCs to Indicate Requirement Levels `_ +.. [#nathan-1] `Conventional Shielded Fees `_ +.. [#ian-1] `Mechanism for fee suggester/oracle `_ .. [#zooko-1] `Zooko tweet on reducing tx fees `_ .. [#zooko-2] `Zooko tweet on sharing tx fee with wallet developer `_ From bd1e9b2631f252cf068ac6baaf7ed1ec620354c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Thu, 5 Nov 2020 02:41:27 -0500 Subject: [PATCH 06/38] Fix typo --- zip-reduce-shielded_tx_fee.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 4ecc9cf48..26ea4d434 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -100,7 +100,7 @@ along with scaling solutions need to be evaluated and applied. Activation ============ -* The recommended fee of 0.00001 ot 1000 zats must be activated at block 1046400 to coincide with the `Canopy upgrade. ` +* The recommended fee of 0.00001 or 1000 zats must be activated at block 1046400 to coincide with the `Canopy upgrade. ` * With a grace period of ~4 weeks (block 1080000) to upgrade to the reduced default transaction fee for zcashd and core clients used by exchanges & service providers. From f4c693553030ec0ae1350fa8b9c5a3a26cc968d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Thu, 5 Nov 2020 21:15:13 -0500 Subject: [PATCH 07/38] Added Support Wallets Updated activation terminology. --- zip-reduce-shielded_tx_fee.rst | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 26ea4d434..bebc6f65b 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -100,10 +100,16 @@ along with scaling solutions need to be evaluated and applied. Activation ============ -* The recommended fee of 0.00001 or 1000 zats must be activated at block 1046400 to coincide with the `Canopy upgrade. ` +* The recommended fee of 0.00001 or 1000 zats must start activation at block 1046400 to coincide with the `Canopy upgrade. ` * With a grace period of ~4 weeks (block 1080000) to upgrade to the reduced default transaction fee for zcashd and core clients used by exchanges & service providers. +Support +============ + +Zbay, Zecwallet Suite(Zecwallet Lite for Desktop/iOS/Android & Zecwallet FullNode) and Nighthawk Wallet Android & iOS have agreed to implement the reduced fees. + + UX Guidance ============ From ccbb876fe8a9388f24bfc469b466a2030cc9c622 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Thu, 5 Nov 2020 21:16:00 -0500 Subject: [PATCH 08/38] ZIP ownership terminology Co-authored-by: Nathan Wilcox --- zip-reduce-shielded_tx_fee.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index bebc6f65b..8e48493f9 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -116,10 +116,10 @@ UX Guidance Wallets must prevent users from altering the fee for shielded transactions. -ZIP Editors +ZIP Owners ----------- -The current ZIP Editor is Aditya Bharadwaj, representing the Nighthawk Wallet. +The current ZIP Owner is Aditya Bharadwaj, representing the Nighthawk Wallet. Additional Editors will be selected by consensus among the current Editors. From adaf4cf84aaf03f64c1e40f20d56875d349a03b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Thu, 5 Nov 2020 21:18:52 -0500 Subject: [PATCH 09/38] Update zip-reduce-shielded_tx_fee.rst Co-authored-by: Nathan Wilcox --- zip-reduce-shielded_tx_fee.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 8e48493f9..e334db7f4 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -85,7 +85,7 @@ The following parties need to be part of the consensus: Security and privacy considerations ----------- -Unique transaction fees can cause linkability within transactions, +Unique transaction fees may reveal specific users or wallets or wallet versions which reduces privacy for those specific users and the rest of the network. hence this change must be accepted by majority, if not all popular shielded transaction software providers before announcing the change. From ccef71edefd745dff7ce35bc1dead85de417ea9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Thu, 5 Nov 2020 21:22:47 -0500 Subject: [PATCH 10/38] Update zip-reduce-shielded_tx_fee.rst Co-authored-by: Nathan Wilcox --- zip-reduce-shielded_tx_fee.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index e334db7f4..57422f474 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -92,7 +92,7 @@ shielded transaction software providers before announcing the change. Varying/unique fees are bad for privacy, for the short term before blocks get full, it’s fine for everyone to use a constant fee. [#nathan-1]_ -Long term, the issue of fees needs to be re-visited as the blocks start getting consistently full. +Long term, the issue of fees needs to be re-visited in separate future proposals as the blocks start getting consistently full. And the possibility of a DoS scenario becomes critical in nature. New ZIP with flexible fees [#ian-1]_ along with scaling solutions need to be evaluated and applied. From a39730ce76dcaa0b29da2d39a35b5e0fbd033eaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Thu, 5 Nov 2020 22:06:28 -0500 Subject: [PATCH 11/38] Update zip-reduce-shielded_tx_fee.rst Co-authored-by: Nathan Wilcox --- zip-reduce-shielded_tx_fee.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 57422f474..64577a8a0 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -90,7 +90,7 @@ hence this change must be accepted by majority, if not all popular shielded transaction software providers before announcing the change. Varying/unique fees are bad for privacy, for the short term before blocks get full, -it’s fine for everyone to use a constant fee. [#nathan-1]_ +it’s fine for everyone to use a constant fee, as long as that is enough to compensate miners for including the transaction. [#nathan-1]_ Long term, the issue of fees needs to be re-visited in separate future proposals as the blocks start getting consistently full. And the possibility of a DoS scenario becomes critical in nature. New ZIP with flexible fees [#ian-1]_ From 549403dad51eaf078468dc8162ff067b8dfeab2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Thu, 5 Nov 2020 22:09:26 -0500 Subject: [PATCH 12/38] DoS section Co-authored-by: Nathan Wilcox --- zip-reduce-shielded_tx_fee.rst | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 64577a8a0..160a28b84 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -93,8 +93,20 @@ Varying/unique fees are bad for privacy, for the short term before blocks get fu it’s fine for everyone to use a constant fee, as long as that is enough to compensate miners for including the transaction. [#nathan-1]_ Long term, the issue of fees needs to be re-visited in separate future proposals as the blocks start getting consistently full. -And the possibility of a DoS scenario becomes critical in nature. New ZIP with flexible fees [#ian-1]_ -along with scaling solutions need to be evaluated and applied. +New ZIPs with flexible fees, such as [#ian-1]_, along with scaling solutions need to be evaluated and applied. + +Denial Of Service Vulnerability +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +A transaction-rate-based denial of service attack occurs when an attacker generates enough transactions over a window of time to prevent legitimate transactions from being mined, or to hinder syncing blocks for full nodes or miners. + +There are two primary protections to this kind of attack in Zcash: the block size limit, and variable transaction fees. The block size limit ensures that full nodes and miners can sync blocks even if they are completely full. However it does not protect users sending legitimate transactions to have their transactions confirmed in a timely manner. + +Variable fees can mitigate this kind of denial of service because in there are more transactions available than can fit into a single block, a miner is assumed to choose the transactions that pay the highest fees. If legitimate wallets increase their fees during this condition, the attacker must also increase the fees of their transactions. This imposes a growing and ongoing cost to the attacker which limits the time window they can continue the attack. + +This proposal does not alter how fees are paid from transactions to miners. However, it does require wallets to use a fixed flat fee. Therefore during a transaction rate DoS attack, legitimate fees may not rise, so an attacker can extend an attacker for a longer window for the same cost. + +This ZIP does not address this concern. A future ZIP should address this issue for shielded wallets. Activation From 9e663595ebfddf98fe60d5a73821cc29fc6f4539 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Thu, 5 Nov 2020 22:09:54 -0500 Subject: [PATCH 13/38] Update zip-reduce-shielded_tx_fee.rst Co-authored-by: Nathan Wilcox --- zip-reduce-shielded_tx_fee.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 160a28b84..d5d36e425 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -133,7 +133,10 @@ ZIP Owners The current ZIP Owner is Aditya Bharadwaj, representing the Nighthawk Wallet. Additional Editors will be selected by consensus among the current Editors. +Acknowledgements +~~~~~~~~~~~~~~~ +Thanks to Nate Wilcox for improve the Denial of Service section. ZIP Comments ============ From 0795dd67cf986d0b9ed8a64d9460038594c0cb4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Tue, 17 Nov 2020 00:05:58 -0500 Subject: [PATCH 14/38] Update Activation Schedule --- zip-reduce-shielded_tx_fee.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index d5d36e425..bbc086217 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -112,8 +112,8 @@ This ZIP does not address this concern. A future ZIP should address this issue f Activation ============ -* The recommended fee of 0.00001 or 1000 zats must start activation at block 1046400 to coincide with the `Canopy upgrade. ` -* With a grace period of ~4 weeks (block 1080000) to upgrade to the reduced default transaction fee for zcashd and core clients used by exchanges & service providers. +* The new default fee of 0.00001 or 1000 zats must start activation at block 1,080,000 +* With a grace period of ~4 weeks (block 1,120,000) to upgrade to the reduced default transaction fee for zcashd and core clients used by exchanges & service providers. Support From 4210404693c3dc14c4a02ca5c144b08719cc23ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Tue, 17 Nov 2020 00:09:01 -0500 Subject: [PATCH 15/38] Accept suggestions to change Editors to Owners. Co-authored-by: Nathan Wilcox --- zip-reduce-shielded_tx_fee.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index bbc086217..25b4585ad 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -132,7 +132,7 @@ ZIP Owners ----------- The current ZIP Owner is Aditya Bharadwaj, representing the Nighthawk Wallet. -Additional Editors will be selected by consensus among the current Editors. +Additional Owners will be selected by consensus among the current Owners. Acknowledgements ~~~~~~~~~~~~~~~ From 8049d103dcf4616a7b367b81a5a1d4978b79a750 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Tue, 17 Nov 2020 00:09:16 -0500 Subject: [PATCH 16/38] Update zip-reduce-shielded_tx_fee.rst Co-authored-by: Nathan Wilcox --- zip-reduce-shielded_tx_fee.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 25b4585ad..c18eabff1 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -143,7 +143,7 @@ ZIP Comments Comments from the community on the ZIP should occur on the Zcash Community Forum and the comment fields of the pull requests in -any open ZIPs. Editors will use these sources to judge rough consensus. +any open ZIPs. Owners will use these sources to judge rough consensus. References From dc52b7e6e625fcaa1ea833519468a36d33b7ca9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Tue, 17 Nov 2020 00:15:05 -0500 Subject: [PATCH 17/38] Add notice to wallet devs to monitor Zcash network --- zip-reduce-shielded_tx_fee.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index c18eabff1..df1dc55ae 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -126,6 +126,7 @@ UX Guidance ============ Wallets must prevent users from altering the fee for shielded transactions. +Additionally, all wallet developers and operators should monitor the Zcash network for rapid growth in transaction rates. As we tend toward fuller blocks, we should proactively address the issue of growing mempool in a separate follow up ZIP. ZIP Owners From 842d1e3d00de8b0084032a492d65ef3d0047e0ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:02:26 -0500 Subject: [PATCH 18/38] Modify ZIP to specify default fee for all transactions Update naming from zats to zatoshis Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index df1dc55ae..249ab4855 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -1,7 +1,7 @@ :: ZIP: 313 - Title: Reduce default Shielded Transaction fee to 1000 zats + Title: Reduce Default Transaction Fee to 1000 zatoshis Owners: Aditya Bharadwaj Original-Author: Aditya Bharadwaj Status: Active From 5ec589fb9bdaeccf71999eda369dee2c344c751e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:03:04 -0500 Subject: [PATCH 19/38] Remove Original-Author field Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 249ab4855..363c3aab7 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -3,7 +3,6 @@ ZIP: 313 Title: Reduce Default Transaction Fee to 1000 zatoshis Owners: Aditya Bharadwaj - Original-Author: Aditya Bharadwaj Status: Active Community Status: Request for comments : https://forum.zcashcommunity.com/t/zip-reduce-default-shielded-transaction-fee-to-1000-zats/37566 Category: Consensus From ea4ff4b713f102646a561ff79736aa9581ad2d3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:03:30 -0500 Subject: [PATCH 20/38] Update category Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 363c3aab7..8f1522c5f 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -5,7 +5,7 @@ Owners: Aditya Bharadwaj Status: Active Community Status: Request for comments : https://forum.zcashcommunity.com/t/zip-reduce-default-shielded-transaction-fee-to-1000-zats/37566 - Category: Consensus + Category: Wallet Created: 2020-10-11 License: MIT From 147cae005991e4b3604b34cf7095151b1ca3f406 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:03:49 -0500 Subject: [PATCH 21/38] Update status Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 8f1522c5f..34abd0269 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -3,7 +3,7 @@ ZIP: 313 Title: Reduce Default Transaction Fee to 1000 zatoshis Owners: Aditya Bharadwaj - Status: Active + Status: Proposed Community Status: Request for comments : https://forum.zcashcommunity.com/t/zip-reduce-default-shielded-transaction-fee-to-1000-zats/37566 Category: Wallet Created: 2020-10-11 From c02bb0cf8b81d78a4a0b29fb58d521c7d735943b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:05:54 -0500 Subject: [PATCH 22/38] Update wording and harmonizing. Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 34abd0269..995d5a0a3 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -30,9 +30,13 @@ Abstract ======== The goal of this ZIP is to gather wallet developers, miners & Zcash users -for consensus on reducing the default transaction fees and -to get the Zcash default transaction fee reduced from 10,000 zats -to 1000 zats. +for social consensus on reducing the conventional transaction fees and +to get the Zcash conventional transaction fee reduced from 10,000 zatoshis +to 1,000 zatoshis. + +In addition, this specification harmonizes transaction fees between different +kinds of transaction (involving shielded addresses, transparent addresses, or +both), as proposed in [#ecosystem-wide-tx-fee]_. With reduced fees, it will be cheaper to transact on the Zcash network, while also inviting novel use cases for privacy From 9b321cf2001a3c1d2701dcd2b23b7064f7739112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:08:04 -0500 Subject: [PATCH 23/38] Include all tx types in scope Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 6 ------ 1 file changed, 6 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 995d5a0a3..087c97083 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -44,12 +44,6 @@ preserving applications that would benefit from the Privacy, Security and Programmable Money aspects of the Zcash chain. -Out of Scope for this Proposal -============ - -Discussion around transaction fees for T to T, T to Z or Z to T. - - Motivation ============ From fc3f63a5ae555d6ff27bab3470272c590bad12cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:08:20 -0500 Subject: [PATCH 24/38] Fix formatting Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 087c97083..6c0ba6494 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -45,7 +45,7 @@ Security and Programmable Money aspects of the Zcash chain. Motivation -============ +========== The default transaction fee presently is 0.0001 ZEC or 10,000 zats. With ZEC market price of $100, a user can send 10,000 transactions From 6bb093a0ec538a19591ab20c09c37dd7c231365f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:08:55 -0500 Subject: [PATCH 25/38] Add Zooko's last name Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 6c0ba6494..8b0acb18a 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -150,5 +150,5 @@ References .. [#RFC2119] `Key words for use in RFCs to Indicate Requirement Levels `_ .. [#nathan-1] `Conventional Shielded Fees `_ .. [#ian-1] `Mechanism for fee suggester/oracle `_ -.. [#zooko-1] `Zooko tweet on reducing tx fees `_ -.. [#zooko-2] `Zooko tweet on sharing tx fee with wallet developer `_ +.. [#zooko-1] `Zooko Wilcox. Tweet on reducing tx fees `_ +.. [#zooko-2] `Zooko Wilcox. Tweet on sharing tx fee with wallet developer `_ From 730d2b45b0a2217130030f68ac1d7ba23fbd3aa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:09:21 -0500 Subject: [PATCH 26/38] Add Ian Miers name Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 8b0acb18a..8ddf42606 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -149,6 +149,6 @@ References .. [#RFC2119] `Key words for use in RFCs to Indicate Requirement Levels `_ .. [#nathan-1] `Conventional Shielded Fees `_ -.. [#ian-1] `Mechanism for fee suggester/oracle `_ +.. [#ian-1] `Ian Miers. Mechanism for fee suggester/oracle `_ .. [#zooko-1] `Zooko Wilcox. Tweet on reducing tx fees `_ .. [#zooko-2] `Zooko Wilcox. Tweet on sharing tx fee with wallet developer `_ From 1b4698c960b3dd71fb2f92754cb4be85305fe50c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:12:22 -0500 Subject: [PATCH 27/38] Remove ZIP Comments field Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 8 -------- 1 file changed, 8 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 8ddf42606..702b3afc8 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -136,14 +136,6 @@ Additional Owners will be selected by consensus among the current Owners. Thanks to Nate Wilcox for improve the Denial of Service section. -ZIP Comments -============ - -Comments from the community on the ZIP should occur on the Zcash -Community Forum and the comment fields of the pull requests in -any open ZIPs. Owners will use these sources to judge rough consensus. - - References ========== From 2dae3071279b6bb10ffab481d7f8189ce4d01933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:12:45 -0500 Subject: [PATCH 28/38] Fix grammar Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 702b3afc8..560e6ac10 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -131,10 +131,11 @@ ZIP Owners The current ZIP Owner is Aditya Bharadwaj, representing the Nighthawk Wallet. Additional Owners will be selected by consensus among the current Owners. -Acknowledgements -~~~~~~~~~~~~~~~ +Acknowledgements +================ + +Thanks to Nathan Wilcox for suggesting improvements to the denial of service section. -Thanks to Nate Wilcox for improve the Denial of Service section. References ========== From 38d0a8c95f06271e20e00366e21d222606937282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:13:52 -0500 Subject: [PATCH 29/38] Move text Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 5 ----- 1 file changed, 5 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 560e6ac10..a535bcdc6 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -38,11 +38,6 @@ In addition, this specification harmonizes transaction fees between different kinds of transaction (involving shielded addresses, transparent addresses, or both), as proposed in [#ecosystem-wide-tx-fee]_. -With reduced fees, it will be cheaper to transact on the Zcash network, -while also inviting novel use cases for privacy -preserving applications that would benefit from the Privacy, -Security and Programmable Money aspects of the Zcash chain. - Motivation ========== From ba7eb97b046e30810517f9b092e914d2af74af60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:14:12 -0500 Subject: [PATCH 30/38] Move text Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index a535bcdc6..56d25c9b0 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -59,6 +59,13 @@ buys 1GB of mobile data `in India today Date: Sun, 20 Dec 2020 16:35:21 -0500 Subject: [PATCH 31/38] Update wording Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 56d25c9b0..1b6a45103 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -20,10 +20,10 @@ described in RFC 2119. [#RFC2119]_ "Z" refers to shielded address. "T" refers to transparent address. -The term "default transaction fee" or "conventional transaction fee" -in this document is in reference to Z to Z transaction fee paid -to miners on the Zcash network for the work on including -the shielded transaction in a block. +The term "conventional transaction fee" in this document is in reference +to the value of a transaction fee that is conventionally used by wallets, +and that a user can reasonably expect miners on the Zcash network to accept +for including a transaction in a block. Abstract From 79afded36577ad507e3b018829d8205bf469976c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:36:00 -0500 Subject: [PATCH 32/38] Update grammar Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 1b6a45103..f2925da7f 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -42,10 +42,10 @@ both), as proposed in [#ecosystem-wide-tx-fee]_. Motivation ========== -The default transaction fee presently is 0.0001 ZEC or 10,000 zats. -With ZEC market price of $100, a user can send 10,000 transactions -for 1 ZEC, that turns out to 1 cent per transaction and it rises -with the increase in the price of ZEC. +The default transaction fee presently is 0.0001 ZEC or 10,000 zatoshis. +At a ZEC market price of USD 100, for example, a user can send 10,000 +transactions for 1 ZEC. This works out to 1 U.S. cent per transaction and +it rises with any increase in the price of ZEC. With increase in light wallet adoptions on mobile clients, many users will be new to the Zcash eco-system. And the fact that the From 755d79f4f2dfd359e1877353007ebcad970bdc67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:57:27 -0500 Subject: [PATCH 33/38] Apply suggestions from code review Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 70 +++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 30 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index f2925da7f..bccf2441a 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -70,7 +70,7 @@ expected to improve usability, consistency, and predictability. Requirements for consensus ------------------------- -The change to the conventional transaction fees must be undertaken sooner +The change to the conventional transaction fees should be undertaken soon as it gets difficult to gain consensus with the growth in the network of wallets, exchanges, miners and third parties involved. @@ -82,57 +82,67 @@ The following parties need to be part of the consensus: Security and privacy considerations ------------ +----------------------------------- -Unique transaction fees may reveal specific users or wallets or wallet versions which reduces privacy for those specific users and the rest of the network. -hence this change must be accepted by majority, if not all popular -shielded transaction software providers before announcing the change. +Unique transaction fees may reveal specific users or wallets or wallet versions, +which would reduce privacy for those specific users and the rest of the network. +Hence this change should be accepted by a majority of shielded transaction +software providers before deploying the change. -Varying/unique fees are bad for privacy, for the short term before blocks get full, -it’s fine for everyone to use a constant fee, as long as that is enough to compensate miners for including the transaction. [#nathan-1]_ +Varying/unique fees are bad for privacy. For the short term before blocks get full, +it is fine for everyone to use a constant fee, as long as it is enough to compensate +miners for including the transaction. [#nathan-1]_ -Long term, the issue of fees needs to be re-visited in separate future proposals as the blocks start getting consistently full. -New ZIPs with flexible fees, such as [#ian-1]_, along with scaling solutions need to be evaluated and applied. +Long term, the issue of fees needs to be re-visited in separate future proposals as the +blocks start getting consistently full. New ZIPs with flexible fees, such as [#ian-1]_, +along with scaling solutions need to be evaluated and applied. Denial Of Service Vulnerability ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A transaction-rate-based denial of service attack occurs when an attacker generates enough transactions over a window of time to prevent legitimate transactions from being mined, or to hinder syncing blocks for full nodes or miners. -There are two primary protections to this kind of attack in Zcash: the block size limit, and variable transaction fees. The block size limit ensures that full nodes and miners can sync blocks even if they are completely full. However it does not protect users sending legitimate transactions to have their transactions confirmed in a timely manner. +There are two primary protections to this kind of attack in Zcash: the block size limit, and +transaction fees. The block size limit ensures that full nodes and miners can keep up with +the block chain even if blocks are completely full. However, users sending legitimate +transactions may not have their transactions confirmed in a timely manner. -Variable fees can mitigate this kind of denial of service because in there are more transactions available than can fit into a single block, a miner is assumed to choose the transactions that pay the highest fees. If legitimate wallets increase their fees during this condition, the attacker must also increase the fees of their transactions. This imposes a growing and ongoing cost to the attacker which limits the time window they can continue the attack. +Variable fees could mitigate this kind of denial of service: if there are more +transactions available than can fit into a single block, then a miner will typically +choose the transactions that pay the highest fees. If legitimate wallets were to +increase their fees during this condition, the attacker would also increase the +fees of their transactions. It is sometimes argued that this would impose a cost +to the attacker that would limit the time window they can continue the attack. +However, there is little evidence that the actual costs involved would be a sufficient +disincentive. -This proposal does not alter how fees are paid from transactions to miners. However, it does require wallets to use a fixed flat fee. Therefore during a transaction rate DoS attack, legitimate fees may not rise, so an attacker can extend an attacker for a longer window for the same cost. +This proposal does not alter how fees are paid from transactions to miners. However, +it does establish a fixed flat fee that wallets are expected to use. Therefore during a +transaction rate denial-of-service attack, legitimate fees from those wallets will not +rise, so an attacker can extend an attack for a longer window for the same cost. -This ZIP does not address this concern. A future ZIP should address this issue for shielded wallets. +This ZIP does not address this concern. A future ZIP should address this issue. +Wallet developers and operators should monitor the Zcash network for rapid growth +in transaction rates. Activation -============ +========== -* The new default fee of 0.00001 or 1000 zats must start activation at block 1,080,000 -* With a grace period of ~4 weeks (block 1,120,000) to upgrade to the reduced default transaction fee for zcashd and core clients used by exchanges & service providers. +Wallets implementing this specification will use a default fee of 0.00001 ZEC +(1000 zatoshis) from block 1,080,000. Support -============ - -Zbay, Zecwallet Suite(Zecwallet Lite for Desktop/iOS/Android & Zecwallet FullNode) and Nighthawk Wallet Android & iOS have agreed to implement the reduced fees. - - -UX Guidance -============ - -Wallets must prevent users from altering the fee for shielded transactions. -Additionally, all wallet developers and operators should monitor the Zcash network for rapid growth in transaction rates. As we tend toward fuller blocks, we should proactively address the issue of growing mempool in a separate follow up ZIP. +======= +The developers of the following wallets intend to implement the reduced fees: +* Zbay; +* Zecwallet Suite (Zecwallet Lite for Desktop/iOS/Android & Zecwallet FullNode); +* Nighthawk Wallet for Android & iOS; +* zcashd built-in wallet. -ZIP Owners ------------ -The current ZIP Owner is Aditya Bharadwaj, representing the Nighthawk Wallet. -Additional Owners will be selected by consensus among the current Owners. Acknowledgements ================ From 67bbc459cb103802ccf1a5899c89bf63112df3d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 16:58:08 -0500 Subject: [PATCH 34/38] Apply suggestions from code review Co-authored-by: Daira Hopwood --- zip-reduce-shielded_tx_fee.rst | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index bccf2441a..dd9989e81 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -17,9 +17,6 @@ The key words "MUST", "SHOULD", "SHOULD NOT", "MAY", "RECOMMENDED", "OPTIONAL", and "REQUIRED" in this document are to be interpreted as described in RFC 2119. [#RFC2119]_ -"Z" refers to shielded address. -"T" refers to transparent address. - The term "conventional transaction fee" in this document is in reference to the value of a transaction fee that is conventionally used by wallets, and that a user can reasonably expect miners on the Zcash network to accept @@ -67,7 +64,7 @@ aspects of the Zcash chain. The harmonization of fees between different kinds of transaction can be expected to improve usability, consistency, and predictability. -Requirements for consensus +Requirements for adoption ------------------------- The change to the conventional transaction fees should be undertaken soon From 4051868b094fb508208992d9e9b32c3f7a4f8519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 17:04:29 -0500 Subject: [PATCH 35/38] Formatting, Suggestions and add Acknowledgement --- zip-reduce-shielded_tx_fee.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index dd9989e81..7ce322259 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -2,7 +2,7 @@ ZIP: 313 Title: Reduce Default Transaction Fee to 1000 zatoshis - Owners: Aditya Bharadwaj + Owners: Aditya Bharadwaj Status: Proposed Community Status: Request for comments : https://forum.zcashcommunity.com/t/zip-reduce-default-shielded-transaction-fee-to-1000-zats/37566 Category: Wallet @@ -13,8 +13,7 @@ Terminology =========== -The key words "MUST", "SHOULD", "SHOULD NOT", "MAY", "RECOMMENDED", -"OPTIONAL", and "REQUIRED" in this document are to be interpreted as +The key words "MUST" and "SHOULD" in this document are to be interpreted as described in RFC 2119. [#RFC2119]_ The term "conventional transaction fee" in this document is in reference @@ -144,6 +143,7 @@ Acknowledgements ================ Thanks to Nathan Wilcox for suggesting improvements to the denial of service section. +Thanks to Daira Hopwood for reviewing and fixing the wording in this ZIP. References From 0aa739fd4337ddb697a73b9ea28e4af25f709c43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ad=C3=AD?= Date: Sun, 20 Dec 2020 17:10:10 -0500 Subject: [PATCH 36/38] Remove guarantee wording. --- zip-reduce-shielded_tx_fee.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst index 7ce322259..266e45d18 100644 --- a/zip-reduce-shielded_tx_fee.rst +++ b/zip-reduce-shielded_tx_fee.rst @@ -72,7 +72,7 @@ of wallets, exchanges, miners and third parties involved. The following parties need to be part of the consensus: -* A guarantee from mining groups is required to include the lowered default fee transactions in the next block. +* Support from mining groups is required to include the lowered default fee transactions in the next block. * Wallet developers need to provide commitment to update the software to use the new fee. * Zcash documentation and community outreach must be undertaken to make the change known. From 3a2adec658d47330f43e204cf94e0c5e4e336c44 Mon Sep 17 00:00:00 2001 From: Daira Hopwood Date: Wed, 23 Dec 2020 02:29:23 +0000 Subject: [PATCH 37/38] Rename zip-reduce-shielded_tx_fee.rst to zip-0313.rst . Signed-off-by: Daira Hopwood --- zip-0313.rst | 156 ++++++++++++++++++++++++++++++++- zip-reduce-shielded_tx_fee.rst | 156 --------------------------------- 2 files changed, 152 insertions(+), 160 deletions(-) delete mode 100644 zip-reduce-shielded_tx_fee.rst diff --git a/zip-0313.rst b/zip-0313.rst index 6e42ad8c9..266e45d18 100644 --- a/zip-0313.rst +++ b/zip-0313.rst @@ -1,8 +1,156 @@ :: ZIP: 313 - Title: Reduce Default Transaction Fee - Status: Reserved + Title: Reduce Default Transaction Fee to 1000 zatoshis + Owners: Aditya Bharadwaj + Status: Proposed + Community Status: Request for comments : https://forum.zcashcommunity.com/t/zip-reduce-default-shielded-transaction-fee-to-1000-zats/37566 Category: Wallet - Pull-Request: - Discussions-To: + Created: 2020-10-11 + License: MIT + + +Terminology +=========== + +The key words "MUST" and "SHOULD" in this document are to be interpreted as +described in RFC 2119. [#RFC2119]_ + +The term "conventional transaction fee" in this document is in reference +to the value of a transaction fee that is conventionally used by wallets, +and that a user can reasonably expect miners on the Zcash network to accept +for including a transaction in a block. + + +Abstract +======== + +The goal of this ZIP is to gather wallet developers, miners & Zcash users +for social consensus on reducing the conventional transaction fees and +to get the Zcash conventional transaction fee reduced from 10,000 zatoshis +to 1,000 zatoshis. + +In addition, this specification harmonizes transaction fees between different +kinds of transaction (involving shielded addresses, transparent addresses, or +both), as proposed in [#ecosystem-wide-tx-fee]_. + + +Motivation +========== + +The default transaction fee presently is 0.0001 ZEC or 10,000 zatoshis. +At a ZEC market price of USD 100, for example, a user can send 10,000 +transactions for 1 ZEC. This works out to 1 U.S. cent per transaction and +it rises with any increase in the price of ZEC. + +With increase in light wallet adoptions on mobile clients, many users +will be new to the Zcash eco-system. And the fact that the +transaction fees are paid by the sender (not the receiver) is +new information to users who might use Zcash for e-commerce +and app interactions that might result in several transactions each day. + +Privacy must not cost a premium. The cost of 10 shielded transactions +buys 1GB of mobile data `in India today `. + +Zcash users must be able to do more with their ZEC balance +than worry about paying the premium for shielded transactions. + +With reduced fees, it will be cheaper to transact on the Zcash network, +while also inviting novel use cases for privacy-preserving applications +that would benefit from the privacy, security, and programmable money +aspects of the Zcash chain. + +The harmonization of fees between different kinds of transaction can be +expected to improve usability, consistency, and predictability. + +Requirements for adoption +------------------------- + +The change to the conventional transaction fees should be undertaken soon +as it gets difficult to gain consensus with the growth in the network +of wallets, exchanges, miners and third parties involved. + +The following parties need to be part of the consensus: + +* Support from mining groups is required to include the lowered default fee transactions in the next block. +* Wallet developers need to provide commitment to update the software to use the new fee. +* Zcash documentation and community outreach must be undertaken to make the change known. + + +Security and privacy considerations +----------------------------------- + +Unique transaction fees may reveal specific users or wallets or wallet versions, +which would reduce privacy for those specific users and the rest of the network. +Hence this change should be accepted by a majority of shielded transaction +software providers before deploying the change. + +Varying/unique fees are bad for privacy. For the short term before blocks get full, +it is fine for everyone to use a constant fee, as long as it is enough to compensate +miners for including the transaction. [#nathan-1]_ + +Long term, the issue of fees needs to be re-visited in separate future proposals as the +blocks start getting consistently full. New ZIPs with flexible fees, such as [#ian-1]_, +along with scaling solutions need to be evaluated and applied. + +Denial Of Service Vulnerability +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +A transaction-rate-based denial of service attack occurs when an attacker generates enough transactions over a window of time to prevent legitimate transactions from being mined, or to hinder syncing blocks for full nodes or miners. + +There are two primary protections to this kind of attack in Zcash: the block size limit, and +transaction fees. The block size limit ensures that full nodes and miners can keep up with +the block chain even if blocks are completely full. However, users sending legitimate +transactions may not have their transactions confirmed in a timely manner. + +Variable fees could mitigate this kind of denial of service: if there are more +transactions available than can fit into a single block, then a miner will typically +choose the transactions that pay the highest fees. If legitimate wallets were to +increase their fees during this condition, the attacker would also increase the +fees of their transactions. It is sometimes argued that this would impose a cost +to the attacker that would limit the time window they can continue the attack. +However, there is little evidence that the actual costs involved would be a sufficient +disincentive. + +This proposal does not alter how fees are paid from transactions to miners. However, +it does establish a fixed flat fee that wallets are expected to use. Therefore during a +transaction rate denial-of-service attack, legitimate fees from those wallets will not +rise, so an attacker can extend an attack for a longer window for the same cost. + +This ZIP does not address this concern. A future ZIP should address this issue. +Wallet developers and operators should monitor the Zcash network for rapid growth +in transaction rates. + + +Activation +========== + +Wallets implementing this specification will use a default fee of 0.00001 ZEC +(1000 zatoshis) from block 1,080,000. + + +Support +======= + +The developers of the following wallets intend to implement the reduced fees: +* Zbay; +* Zecwallet Suite (Zecwallet Lite for Desktop/iOS/Android & Zecwallet FullNode); +* Nighthawk Wallet for Android & iOS; +* zcashd built-in wallet. + + +Acknowledgements +================ + +Thanks to Nathan Wilcox for suggesting improvements to the denial of service section. +Thanks to Daira Hopwood for reviewing and fixing the wording in this ZIP. + + +References +========== + +.. [#RFC2119] `Key words for use in RFCs to Indicate Requirement Levels `_ +.. [#nathan-1] `Conventional Shielded Fees `_ +.. [#ian-1] `Ian Miers. Mechanism for fee suggester/oracle `_ +.. [#zooko-1] `Zooko Wilcox. Tweet on reducing tx fees `_ +.. [#zooko-2] `Zooko Wilcox. Tweet on sharing tx fee with wallet developer `_ diff --git a/zip-reduce-shielded_tx_fee.rst b/zip-reduce-shielded_tx_fee.rst deleted file mode 100644 index 266e45d18..000000000 --- a/zip-reduce-shielded_tx_fee.rst +++ /dev/null @@ -1,156 +0,0 @@ -:: - - ZIP: 313 - Title: Reduce Default Transaction Fee to 1000 zatoshis - Owners: Aditya Bharadwaj - Status: Proposed - Community Status: Request for comments : https://forum.zcashcommunity.com/t/zip-reduce-default-shielded-transaction-fee-to-1000-zats/37566 - Category: Wallet - Created: 2020-10-11 - License: MIT - - -Terminology -=========== - -The key words "MUST" and "SHOULD" in this document are to be interpreted as -described in RFC 2119. [#RFC2119]_ - -The term "conventional transaction fee" in this document is in reference -to the value of a transaction fee that is conventionally used by wallets, -and that a user can reasonably expect miners on the Zcash network to accept -for including a transaction in a block. - - -Abstract -======== - -The goal of this ZIP is to gather wallet developers, miners & Zcash users -for social consensus on reducing the conventional transaction fees and -to get the Zcash conventional transaction fee reduced from 10,000 zatoshis -to 1,000 zatoshis. - -In addition, this specification harmonizes transaction fees between different -kinds of transaction (involving shielded addresses, transparent addresses, or -both), as proposed in [#ecosystem-wide-tx-fee]_. - - -Motivation -========== - -The default transaction fee presently is 0.0001 ZEC or 10,000 zatoshis. -At a ZEC market price of USD 100, for example, a user can send 10,000 -transactions for 1 ZEC. This works out to 1 U.S. cent per transaction and -it rises with any increase in the price of ZEC. - -With increase in light wallet adoptions on mobile clients, many users -will be new to the Zcash eco-system. And the fact that the -transaction fees are paid by the sender (not the receiver) is -new information to users who might use Zcash for e-commerce -and app interactions that might result in several transactions each day. - -Privacy must not cost a premium. The cost of 10 shielded transactions -buys 1GB of mobile data `in India today `. - -Zcash users must be able to do more with their ZEC balance -than worry about paying the premium for shielded transactions. - -With reduced fees, it will be cheaper to transact on the Zcash network, -while also inviting novel use cases for privacy-preserving applications -that would benefit from the privacy, security, and programmable money -aspects of the Zcash chain. - -The harmonization of fees between different kinds of transaction can be -expected to improve usability, consistency, and predictability. - -Requirements for adoption -------------------------- - -The change to the conventional transaction fees should be undertaken soon -as it gets difficult to gain consensus with the growth in the network -of wallets, exchanges, miners and third parties involved. - -The following parties need to be part of the consensus: - -* Support from mining groups is required to include the lowered default fee transactions in the next block. -* Wallet developers need to provide commitment to update the software to use the new fee. -* Zcash documentation and community outreach must be undertaken to make the change known. - - -Security and privacy considerations ------------------------------------ - -Unique transaction fees may reveal specific users or wallets or wallet versions, -which would reduce privacy for those specific users and the rest of the network. -Hence this change should be accepted by a majority of shielded transaction -software providers before deploying the change. - -Varying/unique fees are bad for privacy. For the short term before blocks get full, -it is fine for everyone to use a constant fee, as long as it is enough to compensate -miners for including the transaction. [#nathan-1]_ - -Long term, the issue of fees needs to be re-visited in separate future proposals as the -blocks start getting consistently full. New ZIPs with flexible fees, such as [#ian-1]_, -along with scaling solutions need to be evaluated and applied. - -Denial Of Service Vulnerability -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -A transaction-rate-based denial of service attack occurs when an attacker generates enough transactions over a window of time to prevent legitimate transactions from being mined, or to hinder syncing blocks for full nodes or miners. - -There are two primary protections to this kind of attack in Zcash: the block size limit, and -transaction fees. The block size limit ensures that full nodes and miners can keep up with -the block chain even if blocks are completely full. However, users sending legitimate -transactions may not have their transactions confirmed in a timely manner. - -Variable fees could mitigate this kind of denial of service: if there are more -transactions available than can fit into a single block, then a miner will typically -choose the transactions that pay the highest fees. If legitimate wallets were to -increase their fees during this condition, the attacker would also increase the -fees of their transactions. It is sometimes argued that this would impose a cost -to the attacker that would limit the time window they can continue the attack. -However, there is little evidence that the actual costs involved would be a sufficient -disincentive. - -This proposal does not alter how fees are paid from transactions to miners. However, -it does establish a fixed flat fee that wallets are expected to use. Therefore during a -transaction rate denial-of-service attack, legitimate fees from those wallets will not -rise, so an attacker can extend an attack for a longer window for the same cost. - -This ZIP does not address this concern. A future ZIP should address this issue. -Wallet developers and operators should monitor the Zcash network for rapid growth -in transaction rates. - - -Activation -========== - -Wallets implementing this specification will use a default fee of 0.00001 ZEC -(1000 zatoshis) from block 1,080,000. - - -Support -======= - -The developers of the following wallets intend to implement the reduced fees: -* Zbay; -* Zecwallet Suite (Zecwallet Lite for Desktop/iOS/Android & Zecwallet FullNode); -* Nighthawk Wallet for Android & iOS; -* zcashd built-in wallet. - - -Acknowledgements -================ - -Thanks to Nathan Wilcox for suggesting improvements to the denial of service section. -Thanks to Daira Hopwood for reviewing and fixing the wording in this ZIP. - - -References -========== - -.. [#RFC2119] `Key words for use in RFCs to Indicate Requirement Levels `_ -.. [#nathan-1] `Conventional Shielded Fees `_ -.. [#ian-1] `Ian Miers. Mechanism for fee suggester/oracle `_ -.. [#zooko-1] `Zooko Wilcox. Tweet on reducing tx fees `_ -.. [#zooko-2] `Zooko Wilcox. Tweet on sharing tx fee with wallet developer `_ From 4a36917e50faff3839e8e60a2684780185173b92 Mon Sep 17 00:00:00 2001 From: Daira Hopwood Date: Wed, 23 Dec 2020 02:32:27 +0000 Subject: [PATCH 38/38] ZIP 313: final editing, and add more detail about zcashd support. Co-authored-by: Deirdre Connolly Signed-off-by: Daira Hopwood --- README.rst | 2 +- index.html | 2 +- zip-0313.html | 141 ++++++++++++++++++++++++++++++++++++++++++++++-- zip-0313.rst | 146 ++++++++++++++++++++++++++++++++------------------ 4 files changed, 232 insertions(+), 59 deletions(-) diff --git a/README.rst b/README.rst index b7aae2c2b..620d6ff7a 100644 --- a/README.rst +++ b/README.rst @@ -116,7 +116,7 @@ Index of ZIPs 310 Security Properties of Sapling Viewing Keys Draft 311 Sapling Payment Disclosure Reserved 312 Shielded Multisignatures using FROST Reserved - 313 Reduce Default Transaction Fee Reserved + 313 Reduce Conventional Transaction Fee to 1000 zatoshis Active 321 Payment Request URIs Proposed 339 Wallet Recovery Words Reserved 400 Wallet.dat format Draft diff --git a/index.html b/index.html index b9d14d9fb..f63001e0c 100644 --- a/index.html +++ b/index.html @@ -89,7 +89,7 @@ 310 Security Properties of Sapling Viewing Keys Draft 311 Sapling Payment Disclosure Reserved 312 Shielded Multisignatures using FROST Reserved - 313 Reduce Default Transaction Fee Reserved + 313 Reduce Conventional Transaction Fee to 1000 zatoshis Active 321 Payment Request URIs Proposed 339 Wallet Recovery Words Reserved 400 Wallet.dat format Draft diff --git a/zip-0313.html b/zip-0313.html index 28f0056de..e216f2515 100644 --- a/zip-0313.html +++ b/zip-0313.html @@ -1,17 +1,148 @@ - ZIP 313: Reduce Default Transaction Fee + ZIP 313: Reduce Conventional Transaction Fee to 1000 zatoshis
ZIP: 313
-Title: Reduce Default Transaction Fee
-Status: Reserved
+Title: Reduce Conventional Transaction Fee to 1000 zatoshis
+Owners: Aditya Bharadwaj <nighthawkwallet@protonmail.com>
+Credits: Daira Hopwood
+         Deirdre Connolly
+         Nathan Wilcox
+Status: Active
 Category: Wallet
-Pull-Request: <https://github.com/zcash/zips/pull/408>
-Discussions-To: <https://forum.zcashcommunity.com/t/zip-reduce-default-shielded-transaction-fee-to-1000-zats/37566/41>
+Created: 2020-10-11 +License: MIT +Discussions-To: <https://forum.zcashcommunity.com/t/zip-reduce-default-shielded-transaction-fee-to-1000-zats/37566> +Pull-Request: <https://github.com/zcash/zips/pull/408> +

Terminology

+

The term "conventional transaction fee" in this document is in reference to the value of a transaction fee that is conventionally used by wallets, and that a user can reasonably expect miners on the Zcash network to accept for including a transaction in a block.

+
+

Abstract

+

The goal of this ZIP is to gather wallet developers, miners & Zcash users for social consensus on reducing the conventional transaction fees and to get the Zcash conventional transaction fee reduced from 10,000 zatoshis to 1,000 zatoshis.

+

In addition, this specification harmonizes transaction fees between different kinds of transaction (involving shielded addresses, transparent addresses, or both), as proposed in 6.

+
+

Motivation

+

The conventional transaction fee presently is 0.0001 ZEC or 10,000 zatoshis. At a ZEC market price of USD 100, for example, a user can send 10,000 transactions for 1 ZEC. This works out to 1 U.S. cent per transaction and it rises with any increase in the price of ZEC.

+

With increase in light wallet adoptions on mobile clients, many users will be new to the Zcash eco-system. And the fact that the transaction fees are paid by the sender (not the receiver) is new information to users who might use Zcash for e-commerce and app interactions that might result in several transactions each day.

+

Privacy must not cost a premium. The cost of 10 shielded transactions buys 1GB of mobile data in India today <https://www.cable.co.uk/mobiles/worldwide-data-pricing/>.

+

Zcash users must be able to do more with their ZEC balance than worry about paying the premium for shielded transactions.

+

With reduced fees, it will be cheaper to transact on the Zcash network, while also inviting novel use cases for privacy-preserving applications that would benefit from the privacy, security, and programmable money aspects of the Zcash chain.

+

The harmonization of fees between different kinds of transaction can be expected to improve usability, consistency, and predictability.

+

Requirements for adoption

+

The change to the conventional transaction fees should be undertaken soon as it gets difficult to gain consensus with the growth in the network of wallets, exchanges, miners and third parties involved.

+

The following parties need to be part of the consensus:

+
    +
  • Support from mining groups is required to include the lowered conventional fee transactions in the next block.
  • +
  • Wallet developers need to provide commitment to update the software to use the new fee.
  • +
  • Zcash documentation and community outreach must be undertaken to make the change known.
  • +
+
+

Security and privacy considerations

+

Unique transaction fees may reveal specific users or wallets or wallet versions, which would reduce privacy for those specific users and the rest of the network. Hence this change should be accepted by a majority of shielded transaction software providers before deploying the change.

+

Varying/unique fees are bad for privacy. For the short term before blocks get full, it is fine for everyone to use a constant fee, as long as it is enough to compensate miners for including the transaction. 1

+

Long term, the issue of fees needs to be re-visited in separate future proposals as the blocks start getting consistently full. New ZIPs with flexible fees, such as 2, along with scaling solutions, will need to be evaluated and applied.

+

Denial of Service Vulnerability

+

A transaction-rate-based denial of service attack occurs when an attacker generates enough transactions over a window of time to prevent legitimate transactions from being mined, or to hinder syncing blocks for full nodes or miners.

+

There are two primary protections to this kind of attack in Zcash: the block size limit, and transaction fees. The block size limit ensures that full nodes and miners can keep up with the block chain even if blocks are completely full. However, users sending legitimate transactions may not have their transactions confirmed in a timely manner.

+

Variable fees could mitigate this kind of denial of service: if there are more transactions available than can fit into a single block, then a miner will typically choose the transactions that pay the highest fees. If legitimate wallets were to increase their fees during this condition, the attacker would also increase the fees of their transactions. It is sometimes argued that this would impose a cost to the attacker that would limit the time window for which they can continue the attack. However, there is little evidence that the actual costs involved would be a sufficient disincentive.

+

This proposal does not alter how fees are paid from transactions to miners. However, it does establish a fixed flat fee that wallets are expected to use. Therefore during a transaction rate denial-of-service attack, legitimate fees from those wallets will not rise, so an attacker can extend an attack for a longer window for the same cost.

+

This ZIP does not address this concern. A future ZIP should address this issue. Wallet developers and operators should monitor the Zcash network for rapid growth in transaction rates.

+
+
+
+

Specification

+

Wallets implementing this specification will use a default fee of 0.00001 ZEC (1000 zatoshis) from block 1,080,000, for all transactions.

+

Transaction relaying

+

zcashd, and potentially other node implementations, implements fee-based restrictions on relaying of mempool transactions. Nodes that normally relay transactions are expected to do so for transactions that pay at least the conventional fee, unless there are other reasons not to do so for robustness or denial-of-service mitigation.

+

In zcashd 4.2.0, this change is implemented by 7.

+
+

Mempool size limiting

+

zcashd limits the size of the mempool as described in 8. This specifies a low_fee_penalty that is added to the "eviction weight" if the transaction pays a fee less than (in the original ZIP) 10,000 zatoshis. This threshold is modified to match the new conventional fee in zcashd 4.2.0.

+
+
+

Support

+

The developers of the following wallets intend to implement the reduced fees:

+
    +
  • Zbay;
  • +
  • Zecwallet Suite (Zecwallet Lite for Desktop/iOS/Android & Zecwallet FullNode);
  • +
  • Nighthawk Wallet for Android & iOS;
  • +
  • zcashd built-in wallet 5.
  • +
+

In zcashd this fee change is implemented in version 4.2.0 (not dependent on block height), and in that version is limited to transactions created using z_* RPC APIs. It is planned to extend this to all transactions in a future version 6.

+
+

Acknowledgements

+

Thanks to Nathan Wilcox for suggesting improvements to the denial of service section. Thanks to Daira Hopwood and Deirdre Connolly for reviewing and fixing the wording in this ZIP.

+
+

References

+ + + + + + + +
1Conventional Shielded Fees
+ + + + + + + +
2Ian Miers. Mechanism for fee suggester/oracle
+ + + + + + + +
3Zooko Wilcox. Tweet on reducing tx fees
+ + + + + + + +
4Zooko Wilcox. Tweet on sharing tx fee with wallet developer
+ + + + + + + +
5Reduce default fee to 1000 zatoshis
+ + + + + + + +
6Ecosystem-wide standard transaction fee
+ + + + + + + +
7zcashd commit e6a44ff: Always allow transactions paying at least DEFAULT_FEE to be relayed
+ + + + + + + +
8ZIP 401: Addressing mempool denial-of-service
+
\ No newline at end of file diff --git a/zip-0313.rst b/zip-0313.rst index 266e45d18..e5121b4a9 100644 --- a/zip-0313.rst +++ b/zip-0313.rst @@ -1,21 +1,22 @@ :: ZIP: 313 - Title: Reduce Default Transaction Fee to 1000 zatoshis + Title: Reduce Conventional Transaction Fee to 1000 zatoshis Owners: Aditya Bharadwaj - Status: Proposed - Community Status: Request for comments : https://forum.zcashcommunity.com/t/zip-reduce-default-shielded-transaction-fee-to-1000-zats/37566 + Credits: Daira Hopwood + Deirdre Connolly + Nathan Wilcox + Status: Active Category: Wallet Created: 2020-10-11 License: MIT + Discussions-To: + Pull-Request: Terminology =========== -The key words "MUST" and "SHOULD" in this document are to be interpreted as -described in RFC 2119. [#RFC2119]_ - The term "conventional transaction fee" in this document is in reference to the value of a transaction fee that is conventionally used by wallets, and that a user can reasonably expect miners on the Zcash network to accept @@ -32,28 +33,28 @@ to 1,000 zatoshis. In addition, this specification harmonizes transaction fees between different kinds of transaction (involving shielded addresses, transparent addresses, or -both), as proposed in [#ecosystem-wide-tx-fee]_. +both), as proposed in [#zcash-2942]_. Motivation ========== -The default transaction fee presently is 0.0001 ZEC or 10,000 zatoshis. +The conventional transaction fee presently is 0.0001 ZEC or 10,000 zatoshis. At a ZEC market price of USD 100, for example, a user can send 10,000 transactions for 1 ZEC. This works out to 1 U.S. cent per transaction and it rises with any increase in the price of ZEC. -With increase in light wallet adoptions on mobile clients, many users -will be new to the Zcash eco-system. And the fact that the -transaction fees are paid by the sender (not the receiver) is -new information to users who might use Zcash for e-commerce -and app interactions that might result in several transactions each day. +With increase in light wallet adoptions on mobile clients, many users will +be new to the Zcash eco-system. And the fact that the transaction fees are +paid by the sender (not the receiver) is new information to users who might +use Zcash for e-commerce and app interactions that might result in several +transactions each day. Privacy must not cost a premium. The cost of 10 shielded transactions buys 1GB of mobile data `in India today `. -Zcash users must be able to do more with their ZEC balance -than worry about paying the premium for shielded transactions. +Zcash users must be able to do more with their ZEC balance than worry about +paying the premium for shielded transactions. With reduced fees, it will be cheaper to transact on the Zcash network, while also inviting novel use cases for privacy-preserving applications @@ -72,9 +73,12 @@ of wallets, exchanges, miners and third parties involved. The following parties need to be part of the consensus: -* Support from mining groups is required to include the lowered default fee transactions in the next block. -* Wallet developers need to provide commitment to update the software to use the new fee. -* Zcash documentation and community outreach must be undertaken to make the change known. +* Support from mining groups is required to include the lowered conventional + fee transactions in the next block. +* Wallet developers need to provide commitment to update the software to use + the new fee. +* Zcash documentation and community outreach must be undertaken to make the + change known. Security and privacy considerations @@ -85,72 +89,110 @@ which would reduce privacy for those specific users and the rest of the network. Hence this change should be accepted by a majority of shielded transaction software providers before deploying the change. -Varying/unique fees are bad for privacy. For the short term before blocks get full, -it is fine for everyone to use a constant fee, as long as it is enough to compensate -miners for including the transaction. [#nathan-1]_ +Varying/unique fees are bad for privacy. For the short term before blocks get +full, it is fine for everyone to use a constant fee, as long as it is enough to +compensate miners for including the transaction. [#nathan-1]_ -Long term, the issue of fees needs to be re-visited in separate future proposals as the -blocks start getting consistently full. New ZIPs with flexible fees, such as [#ian-1]_, -along with scaling solutions need to be evaluated and applied. +Long term, the issue of fees needs to be re-visited in separate future +proposals as the blocks start getting consistently full. New ZIPs with +flexible fees, such as [#ian-1]_, along with scaling solutions, will need +to be evaluated and applied. -Denial Of Service Vulnerability +Denial of Service Vulnerability ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -A transaction-rate-based denial of service attack occurs when an attacker generates enough transactions over a window of time to prevent legitimate transactions from being mined, or to hinder syncing blocks for full nodes or miners. - -There are two primary protections to this kind of attack in Zcash: the block size limit, and -transaction fees. The block size limit ensures that full nodes and miners can keep up with -the block chain even if blocks are completely full. However, users sending legitimate -transactions may not have their transactions confirmed in a timely manner. - -Variable fees could mitigate this kind of denial of service: if there are more -transactions available than can fit into a single block, then a miner will typically -choose the transactions that pay the highest fees. If legitimate wallets were to -increase their fees during this condition, the attacker would also increase the -fees of their transactions. It is sometimes argued that this would impose a cost -to the attacker that would limit the time window they can continue the attack. -However, there is little evidence that the actual costs involved would be a sufficient +A transaction-rate-based denial of service attack occurs when an attacker +generates enough transactions over a window of time to prevent legitimate +transactions from being mined, or to hinder syncing blocks for full nodes +or miners. + +There are two primary protections to this kind of attack in Zcash: the +block size limit, and transaction fees. The block size limit ensures that +full nodes and miners can keep up with the block chain even if blocks are +completely full. However, users sending legitimate transactions may not +have their transactions confirmed in a timely manner. + +Variable fees could mitigate this kind of denial of service: if there are +more transactions available than can fit into a single block, then a miner +will typically choose the transactions that pay the highest fees. If +legitimate wallets were to increase their fees during this condition, the +attacker would also increase the fees of their transactions. It is +sometimes argued that this would impose a cost to the attacker that would +limit the time window for which they can continue the attack. However, there +is little evidence that the actual costs involved would be a sufficient disincentive. -This proposal does not alter how fees are paid from transactions to miners. However, -it does establish a fixed flat fee that wallets are expected to use. Therefore during a -transaction rate denial-of-service attack, legitimate fees from those wallets will not -rise, so an attacker can extend an attack for a longer window for the same cost. +This proposal does not alter how fees are paid from transactions to miners. +However, it does establish a fixed flat fee that wallets are expected to +use. Therefore during a transaction rate denial-of-service attack, legitimate +fees from those wallets will not rise, so an attacker can extend an attack +for a longer window for the same cost. This ZIP does not address this concern. A future ZIP should address this issue. -Wallet developers and operators should monitor the Zcash network for rapid growth -in transaction rates. +Wallet developers and operators should monitor the Zcash network for rapid +growth in transaction rates. -Activation -========== +Specification +============= Wallets implementing this specification will use a default fee of 0.00001 ZEC -(1000 zatoshis) from block 1,080,000. +(1000 zatoshis) from block 1,080,000, for all transactions. + + +Transaction relaying +-------------------- + +zcashd, and potentially other node implementations, implements fee-based +restrictions on relaying of mempool transactions. Nodes that normally relay +transactions are expected to do so for transactions that pay at least the +conventional fee, unless there are other reasons not to do so for robustness +or denial-of-service mitigation. + +In zcashd 4.2.0, this change is implemented by [#zcash-relaying]_. + + +Mempool size limiting +--------------------- + +zcashd limits the size of the mempool as described in [#zip-0401]_. This +specifies a *low\_fee\_penalty* that is added to the "eviction weight" if the +transaction pays a fee less than (in the original ZIP) 10,000 zatoshis. This +threshold is modified to match the new conventional fee in zcashd 4.2.0. Support ======= The developers of the following wallets intend to implement the reduced fees: + * Zbay; * Zecwallet Suite (Zecwallet Lite for Desktop/iOS/Android & Zecwallet FullNode); * Nighthawk Wallet for Android & iOS; -* zcashd built-in wallet. +* zcashd built-in wallet [#zcash-4916]_. + +In zcashd this fee change is implemented in version 4.2.0 (not dependent on +block height), and in that version is limited to transactions created using +`z_*` RPC APIs. It is planned to extend this to all transactions in a future +version [#zcash-2942]_. Acknowledgements ================ -Thanks to Nathan Wilcox for suggesting improvements to the denial of service section. -Thanks to Daira Hopwood for reviewing and fixing the wording in this ZIP. +Thanks to Nathan Wilcox for suggesting improvements to the denial of service +section. Thanks to Daira Hopwood and Deirdre Connolly for reviewing and fixing +the wording in this ZIP. References ========== -.. [#RFC2119] `Key words for use in RFCs to Indicate Requirement Levels `_ .. [#nathan-1] `Conventional Shielded Fees `_ .. [#ian-1] `Ian Miers. Mechanism for fee suggester/oracle `_ .. [#zooko-1] `Zooko Wilcox. Tweet on reducing tx fees `_ .. [#zooko-2] `Zooko Wilcox. Tweet on sharing tx fee with wallet developer `_ +.. [#zcash-4916] `Reduce default fee to 1000 zatoshis `_ +.. [#zcash-2942] `Ecosystem-wide standard transaction fee `_ +.. [#zcash-relaying] `zcashd commit e6a44ff: Always allow transactions paying at least DEFAULT_FEE to be relayed `_ +.. [#zip-0401] `ZIP 401: Addressing mempool denial-of-service `_