Why should you read this article?
- More perspective on dAPP. Why do I use Smart Contract instead of something centralized?
Tips when building apps on EVM-chain (Etherium, Binance Smart Chain, ...)
- The reason this dApp failed (If it fails in the future ♂️)
What app is that?
Morphling is a dApp that allows people in crypto-banned countries to join Binance Launchpad, specifically China.
Why build this?
If any of you are used to sending money to CZ or Binance, you must be familiar with a Feature on Binance: Launchpad
With recent data, most of these Launchpad rounds bring huge profits to investors and are almost risk-free, as long as you hold BNB, you got money 🤑
However, there is one problem: Binance does not allow users in some countries to join Launchpad, typically China.
Users from the following countries or regions will not be able to participate in token sales on the Binance Launchpad platform:
Belarus, People's Republic of China, Democratic Republic of Congo, Cuba, Iraq, Iran, North Korea, Sudan, Syria, United States of America and its territories (American Samoa, Guam, the Northern Mariana Islands, Puerto Rico, and the U.S. Virgin Islands), Zimbabwe.
To get around this limitation, some of my Chinese colleagues have sent me BNB to join the Launchpad. It was time to hold the BNB number with a value of more than $100,000, in my mind, those questions popped up:
- What if I lose this BNB number?
- What if I "accidentally" lose it? Can the guys in China catch me? Or do I do a few things to build trust and then wait for more than 10 million and then "accidentally" lose it?
- After getting the token from Binance, how can I share it with everyone?
When I joined Launchpad to help the other guys, I also encountered some pretty annoying things like:
- I need to calculate the share ratio for each one, it's quite boring, sometimes I have a few BNB put in, then the calculation is messed up again.
- While holding Launchpad, someone withdraws BNB because the loan interest is increasing dramatically 🏃♂️, or sometimes while holding, someone deposits extra BNB to participate.
- Distribute the reward for each person. This part is the most annoying to me because it takes lots of time. After calculating the number of BNB and Token to distribute to each person, I must:
Ask for their Address, confirm, go to Binance to withdraw, input OTP email, input OTP password, input OTP 2FA, input my YubiKey, confirm that they have received Token😫. And each user I will have to redo this series twice because Binance does not support sending BNB and Token at the same time.
There was a time when I sent the wrong Token via BNB, so I had to send all the tokens to him and ask him to re-distribute the token to others. And my friend also had to do endless steps like me to re-distribute it.
If we look broadly, it can be seen that this model only works based on individual beliefs with each other. That party trust me, so they send lots of BNB to me, I also really trust them once I sent all the rewards to that person.
So I came up with
It's a Dota hero famous for his ability to change between Agility and Strength (Damage and HP)
My idea is quite simple, the system will have 3 pools
- Cover pool
- Staking pool
- Reward pool
- To solve the trust issue when I am the representative holding BNB, I will need to put some money in to make a trust. When things go wrong, this pool cover will be un-locked to distribute among those who have put BNB into staking.
- After it's time to hold BNB on Launchpad, I will lock the staking pool and withdraw funds from this pool, then put it on Binance to join the launchpad.
- Finally, when Binance gave me back my BNB and Token. I just need to withdraw and put it into the pool. Then this pool will be divided equally according to the rate deposited in the staking pool
- If any unexpected issue has occurred 🤕, the cover pool will turn into claimable state so that everyone who has staked BNB can get cover to cover the risk → I haven't implemented this feature since it gonna take lots of thinking.
By circulating BNB and tokens in the 3 pools above, I don't have to run the calculation, distribute tokens to everyone manually (Save me 10 minutes for each user, and reduce the risk of wrong input number, or sent by mistake at the same time). In addition, the timing of returning tokens to everyone is also quite sensitive, price can go up and down!
Nothing for free, I charge 5% for the reward token. So if I do it manually, holding about $10,000 will only get paid about $50-$100, the risk ratio is too high. Therefore, if I can scale this model, I can have a decent cash flow without doing much
Ex: 100 users, each deposit 5BNB and get about $100 token reward each person
So I can make a profit: 100*100*5% = $500 already (Depending on the Pump level of the reward token, the profit may be different)
My part of the risk will be pushed to the Smart Contract side, or I will not suffer anything, or I will lose everything
It's not that easy 😌
In terms of operation, it is quite simple, but if you think more deeply, you will need to handle a lot of questions?
- If the cover is too little, will the user trust to stake BNB?
- What if the amount of cover is greater than the amount of BNB in the staking pool? Then just put 1BNB and then claim to redeem 1.2BNB cover is done, it's a risk-free investment in a few minutes 🤷♂️.
- If after getting the token, BNB from Launchpad, if I eat a little less and then deposit it into the Reward pool, how will the Users side handle it?
- What's the use of this dApp when buying a Binance account in another country?
- Usually, the token payment time will be delayed randomly compared to the time that the token is listed on the exchange, if that token dumps or pumps, how does it affect this model?
- Each user participating in Launchpad will be limited to the maximum number of tokens that can be purchased, called Hardcap, so if I need to to run this modal to many other Binance accounts, I need to design the modal so that they will not take BNB and run away.
Why Smart Contracts?
Naming a piece of code that runs on ETH or BSC is something that I find very cool! Why not call it Decentralize Logic, Distributed code,...
By definition, a contract is an agreement between 3 parties: Party A, Party B, and a third party to ensure fairness between Party A and Party B. In fact, all contracts that you agree to. For daily transactions such as labor contracts, real estate purchase and sale contracts, etc., the third party is the state.
The smart contract is 3rd party to ensure the cooperation of party A and party B is the logical lines that you code. Therefore, in terms, the economic model in Smart Contract must be very careful and carefully calculated. It's like you're coding a strict referee in a football match.
As you can see, in
Morphling, there is party A: BNB recipient to join Launchpad, party B: stake BNB to profit from participating in Launchpad. And the third party, which is a smart contract that is responsible for ensuring that Party A does not cheat on Party B, and Party B does not cheat on Party A or if even they cheat, then, in the end, the cheater will also be the one pay the bill 😭
Therefore, designing a set of rules for this Smart Contract guy needs a lot of brain 🧠 power and it is the most basic foundation in the era of Decentralized everything. Does your platform have developers? Are there any users using it? Is anyone participating in running the node? Is there any user deposit liquidity pool?... All must be built on the set of rules it defines.
This is a very difficult and interesting problem, maybe I will write more on this topic, but basically, the Rules will be built on 2 basic fundamentals:
- Game theory
- Nash equilibrium
Where's the code?
I'm beta testing this app, so I won't publicize the code at the moment, but will soon. Stay tuned!
I'm thinking of a way to show some problems/tips during app build like a timeline. But right now, it's not built yet, so I leave this section blank