the traditional web3 way of helping the project launch is listing the project token to the community. It has many drawbacks and here I would just simply list some of them. 1st: what if this project is a rugged project? project owner could run away because he uses his own wallet to launch and sale his token. 2rd: the token price is not determined by the market but himself. I propose the standardization of the ILO in the form of smart contracts by creating AMM liquidity pools, the project owner would provide the project token, which can be called the token A A, and for anyone who participate in the ILO would provide another form of asset, for example ETH, both token A and eth together form the AMM liquidity pool TokenA-ETH pair, and after the fundraising time ends, the project team takes half of the LP token, and the ILO participants take the rest half. so with this approach, it's not with the project owner's address but the liquidity pool address. community participant don't need to worry about project owner running away. also by forming a liquidity pool to help the token launch. the price of the token is determined by AMM mechanism so we can say it's determined by market. this model aligns with the well-known (3, 3) game theory proposed by OlympusDAO. Following the ILO fundraising, we can categorize the behavior of the community and developers into three groups: 1. Buying TokenA; 2. Adding/holding liquidity; 3. Removing liquidity and selling TokenA. Each purchase of TokenA increases the amount of ETH that LP can convert, while adding and holding LP enhances the community's access to better prices and reduces slippage. Liquidity removal itself is not destructive as it doesn't directly impact the price. However, further selling would lead to shared losses among all LP holders, as there would be less ETH available for redemption.
for the smart contract side, I write it with solidity and build it along with doing the testing. I use the hardhat to write the test script and with console.log to print the messages so I know what errors happening along the way and trouble shooting it.
for the frontend side, I use react and wagmi to build it. I tried to architecture the frontend using the MVC pattern, store the pure contract read/write interaction with the hook. and store the controller and view logic in component section the frontend I have uploaded in this repo. https://github.com/freeflowthought/ILO_frontend