Hey guys. My name is Sergey and I'm a dev from Neutron team. So I took part in a building set of contracts for upcomming Token generation event. I'll give you brief overview of the contracts involved. While I'm talking please interrupt me if you have questions: So all the contracts you can find in our github repo. From start to end these are main parts of TGE: Credits Airdrop Auction Lockdrop Vesting Let's go through them one by one: ## Credits Contract The Credits contract is initialized at genesis and calls the mint function to issue cNTRN tokens, which are used in the Airdrop. The purpose of cNTRN tokens is to prevent users from having NTRN right after the Airdrop. The Config struct contains the DAO contract address, Airdrop contract address, Lockdrop contract address, and the timestamp when users can start withdrawing untrn tokens. ## Airdrop Contract The Airdrop contract is also initialized at genesis. Upon a user's claim, it sets a new Vesting on the Credits contract for that user. The InstantiateMsg struct contains various parameters such as credits contract address, reserve address, merkle root, airdrop and vesting start timestamps, vesting duration, total amount, and the HRP required for building external network addresses during the claim action. ## Auction Contract The Auction contract is initialized at genesis as well. Some of its configuration values, such as denoms and pool_info, are set by the token_info_manager. The Auction contract has several stages, including waiting for start, depositing/withdrawing ATOM/USDC tokens, partial withdrawal of tokens, setting pool size, locking/unlocking LP positions in the Lockdrop contract, and migrating to the Vesting contract. The Config struct contains various parameters related to these stages and configurations. ## Lockdrop Contract The Lockdrop contract is initialized at genesis and is provided with a configured amount of NTRN for incentives. Some of its configuration values, like denoms and pool_info, are also set by the token_info_manager. The Lockdrop contract locks users' LPs for a specified amount of time and uses the Astroport generator contract to handle NTRN rewards generation for users' locked positions. It has several stages like waiting for start, lock/unlock, partial unlock, initializing the pool, and claiming rewards with optional unlocking. The InstantiateMsg struct contains parameters related to these stages and configurations. ## Vesting LP Contract Lastly, the Vesting LP contract is initialized at genesis and is used to vest unlocked LP tokens. The InstantiateMsg struct includes parameters like the owner's address, a list of whitelisted vesting managers, and the token info manager address. In conclusion, these contracts have been designed to facilitate a smooth and secure token generation event. So please let me know if you have any questions or concerns you may have regarding these contracts.