Introduction
Given the status of the signaling proposals, we would like to begin the discussion around the software features to be included in the next release (v1.1.0). This discussion is around the implementation of Optional Feature # 1 - Wallet Exemption to On-chain Tax (Binance Request 1/2).
Binance has requested that the internal movement between Binance owned wallets be exempt from the burn tax (currently set to 0.2%). A list of Binance owned wallets has been provided to the community via announcement. It was confirmed with Binance that movement to and from Binance wallets will still be taxed. This means deposits and withdrawals are not exempt, but rather only the internal movements between wallets will be exempt for their internal security purposes. The implementation of this whitelist feature will be parameterized, with the initial list set to the provided Binance list.
Technical Code Description
Please see the following for the code that will be included for this feature.
We introduce new logic within the burn Antehandler method. When a transaction is processed, the message type is selected. Send messages, and multisend messages can be exempt from the burn tax. The sufficient criteria is that both the sender and recipient must be in the list of exempt addresses. If this is the case, the burntax antehandler does not withdraw the tax and continues forward in processing the transaction. If this condition is not met, the message is taxed as normal.
Note: Both the sender and receiver addresses must be included in the exemption list to be exempt from the taxes.
Test Results
TestFilterRecipient:
Test Msgs for various cases:
- MsgSend(binance → binance)
- MsgSend(normal → normal)
- MsgSend(binance → normal), MsgSend(binance → binance)
- MsgSend(binance → binance), MsgMultiSend(binance → normal, binance → binance)
Send Msg to BurnTaxFeeDecorator
Check amount burn before and after
Check community pool before and after
Check FeeCollector before and after
Tax Exemption List Governance Test:
- Create a node
- Make a gov to add addresses to Tax Exemption List
- Check if tax exemption list has those addresses
Upgrade check: Make sure that state migration in x/treasury module works and Binance addresses are added to Tax Exemption List
Governance Parameters
This is a new type of proposal (different from a parameter change proposal) that adds and removes addresses from a tax exemption list.
AddBurnTaxExemptionAddressProposal
type AddBurnTaxExemptionAddressProposal struct {
Title string // Title of the Proposal
Description string // Description of the Proposal
ExemptionAddress []string // List of addresses to be added to tax exemption
}
Example JSON
{
"type": "treasury/AddBurnTaxExemptionAddressProposal",
"value": {
"title": "proposal title",
"description": "proposal description",
"exemption_address": ["terra1dczz24r33fwlj0q5ra7rcdryjpk9hxm8rwy39t","terra1qt8mrv72gtvmnca9z6ftzd7slqhaf8m60aa7ye"]
}
}
RemoveBurnTaxExemptionAddressProposal
type RemoveBurnTaxExemptionAddressProposal struct {
Title string // Title of the Proposal
Description string // Description of the Proposal
ExemptionAddress []string // List of addresses to be removed from tax exemption
}
Example JSON
{
"type": "treasury/RemoveBurnTaxExemptionAddressProposal",
"value": {
"title": "proposal title",
"description": "proposal description",
"exemption_address": ["terra1dczz24r33fwlj0q5ra7rcdryjpk9hxm8rwy39t","terra1qt8mrv72gtvmnca9z6ftzd7slqhaf8m60aa7ye"]
}
}