# Lighthouse on EVM
1. Write a simple non transferable token implementation.
- A numerical score that you can give to users that is non-transferable.
- An authority can mint new tokens to users.
- You should be able to import this token on metamask, and see current balance, token name and symbol.
- Add functionality to make the token transferable only to a set of whitelisted addresses. (this whitelist can be updated by an authority, just like with minting)
- Add functionality to give the authority the power to burn anyone’s tokens.
- tests to prove basic functionality would be great.
- Please use [foundry](https://github.com/foundry-rs/foundry) as the contract development tool
2. Lighthouse contract
- Check out [this](https://github.com/sher9n/Lighthouse/tree/main/contracts/evm/src) for reference. You can use your implementation of NTT instead of the one already implemented.
- Implement gasless transactions (https://opengsn.org/ or anything of your choice)
- Each community has a separate NTT that's created while creating the community
- Now instead of methods to add/burn points, adding new admin etc. We need to implement multisig functionality.
- Proposal flow:
- Proposal is created by an admin with the necessary information.
- Voting must be optimistic, i.e if an admin did not vote during the voting period, then their vote is taken as yes. If more than X (parameter set at community level) admins have voted no then the proposal has failed.
- After the voting period is over, if the proposal has passed, then anyone can call a method to execute it.
- Execution will perform the action the proposal is for.
- Community will store the parameters, i.e quorum, voting duration and you can add more according to your implementation.
- Types of proposals
- adding new admins
- changing quorum
- changing the voting duration
- removing/adding points to a member
- Emit events wherever appropriate.
- Tests that cover all the functionalities outlined above