# 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