# BLV Labs: Report on the TaxExemption Module
Hey, Terra Classic enthusiasts! We’re excited to share the latest update on our second proposal! The BLV Labs team is proud to highlight the progress we’ve made in creating the TaxExemption module. As we move forward in refining Terra Classic’s infrastructure, we remain more committed than ever to deepening community engagement and building a stronger, more resilient ecosystem — together.
## Overview of the TaxExemption module:
The taxexemption module introduces a community-controlled tax exemption (whitelist) system that enables efficient and transparent management of tax-exempt addresses. It is designed to support specific use cases such as:
* Centralized Exchanges (CEXs) like Binance, CoinIn
* Essential ecosystem operations (e.g., burn wallets)
The module provides both flexibility and fairness through a governance-driven design.
## Here’s a breakdown of what we’ve completed over the past 4 weeks
- **Week 1:** Conduct in-depth research and review of the existing Tax Exemption and Tax modules.
- **Week 2:**
1. Add new features and define additional requirements (e.g., new API/CLI commands) based on the current module, if necessary.
2. Write unit tests for all functions within the module.
- **Week 3:**
1. Supplement and finalize the technical documentation.
2. Create comprehensive test cases and perform local environment testing.
- **Week 4:** Conduct final testing in the LUNC testnet environment.
**You can find our works here:https://github.com/classic-terra/core/releases/tag/v3.5.0-rc.0
**Now, Let’s dive into the details in the sections below.**
## Core Functions of the TaxExemption Module
#### `AddTaxExemptionZone`
- Adds a new tax exemption zone to the KVStore under the zone name as the key.
- Each zone defines specific rules for tax exemption based on direction and cross-zone behavior.
#### `ModifyTaxExemptionZone`
- Updates the configuration of an existing tax exemption zone.
- Fails if the zone does not exist.
#### `RemoveTaxExemptionZone`
- Removes a tax exemption zone **and all associated addresses**.
- Cleans up:
- The **Zone Registry**
- The **Address Mapping**
#### `AddTaxExemptionAddress`
- Associates a Bech32-encoded address with a tax exemption zone.
- Ensures:
- The zone exists.
- The address is not already in a different zone.
- If already in the same zone → no changes (idempotent behavior).
#### `RemoveTaxExemptionAddress`
- Removes an address from the tax exemption list only if:
- It exists in the list.
- It is associated with the specified zone.
- Prevents accidental disassociation from unrelated zones.
#### `IsExemptedFromTax`
- Determines whether a transaction between a sender and one or more recipients is exempt from tax.
- Checks:
- Sender and recipient zone assignments.
- Whether their zones allow **Incoming**, **Outgoing**, or **CrossZone** tax-exempt behavior.
# Tax Exemption Module - CLI Guide
A user can query and interact with the `taxexemption` module using the command-line interface (CLI).
---
The tax exemption module provides governance-controlled functionalities to manage tax-exempt zones and addresses. The process involves creating draft proposals, validating their format, and submitting them for governance approval.
----------------------------------------------------------------
Before submitting a proposal, users must create a draft proposal. Each proposal type has a specific msg type. Examples:
Add a tax-exempt zone: terra.taxexemption.v1.MsgAddTaxExemptionZone
Remove a tax-exempt zone: terra.taxexemption.v1.MsgRemoveTaxExemptionZone
Remove addresses from tax-exempt list: terra.taxexemption.v1.MsgRemoveTaxExemptionAddress
Modify a tax exemption zone: terra.taxexemption.v1.MsgModifyTaxExemptionZone
The draft proposal creation command:
```bash
terrad tx gov draft-proposal
```
After creating a proposal, a JSON file will be generated that looks like the one below.
### Messages
```json
{
"messages": [
{
"@type": "/terra.taxexemption.v1.MsgAddTaxExemptionZone",
"zone": "bnb",
"outgoing": false,
"incoming": false,
"cross_zone": false,
"addresses": [
"terra16r0fdcyy6whsfx9nxfx5zhhdwte59kaf3jm502"
],
"authority": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n"
}
],
"metadata": "ipfs://CID",
"deposit": "1000000uluna",
"title": "add zone",
"summary": "sum"
}
```
### Submit Proposal
```bash
terrad tx gov submit-proposal draft_proposal.json --from test0 --keyring-backend test --home mytestnet --fees 5665000uluna
```
---------------------------------------------------------------------------
## 📌 GetCmdQueryTaxable
This command allows users to check whether a transaction from a given sender address to a recipient address is exempt from tax, based on their zone assignment and zone rules.
### 🧾 Syntax
```bash
terrad query taxable [from-address] [to-address]
```
## 📌 GetCmdQueryZonelist
This command allows users to query and retrieve the list of all registered tax exemption zones
### 🧾 Syntax
```bash
simd query taxable zones
```
## 📌 GetCmdQueryExemptlist
This command allows users to query and retrieve all tax-exempt addresses associated with a specific zone.
### 🧾 Syntax
```bash
terrad query taxable addresses [zone-name]
```
## Future Plans
We are excited about the progress made so far and look forward to collaborating with the Terra Classic community to build an even stronger and more efficient ecosystem. Thank you for your continued support!