# Assignment 1: Taxed Token Program

The goal of this first assignment is to familiarize with the token program. In this assignment, you'll extend the token program we developed earlier by implementing a transaction tax feature. This feature will allow the admin to receive a percentage of the transfer as tax.

### Learning Objectives

By completing this assignment, you will:

* Apply your knowledge of Leo programming for state management
* Implement more complex token interactions
* Understand how to handle percentage-based calculations

### Tasks

1. Implement tax collection for the `transfer_private` function. The tax should be added to the private balance of the `ADMIN` address.
2. Implement tax collection for the `transfer_public` function. The tax should be added to the public balance of the `ADMIN` address.
3. Implement tax collection for the `transfer_public_to_private` function. The tax should be added to the public balance of the `ADMIN` address.
4. Implement tax collection for the `transfer_private_to_public` function. The tax should be added to the public balance of the `ADMIN` address.

The tax should be hard coded as a constant: `TAX`. It should be represented as a u16 representing the per ten thousand value of the amount sent. For instance if the tax `u16` is set as 15, the tax should be the floor of 0.15% of the amount per transfer. The tax should be deducted from the amount of token spent, and credited to the balance of `ADMIN` address, according to the specifiactions above.
