Postmortem Report: Pre-Sale Round 1
Background: The CheckerChain protocol scheduled a Round 1 Pre-Sale event on Feb 15, 2022 at 1:00 PM EST. This event introduced an important milestone to enable purchases of CHECKR tokens:
- 10m CHECKR tokens available for 1875 Whitelisted Wallet
- Price set at $0.004 with max cap of 50k CHECKR tokens per wallet.
Issue Faced: On Feb 15, CheckerChain team scheduled an AMA in Twitter space before 30 minutes of the presale event. As we proceeded, AMA went for a longer period and we decided to kickstart presale 1 hour late. During AMA session, the majority of the community wanted clarity and transparency in team members, Github, smart-contracts, and UI/UX before pre-sale. Hence we rescheduled the pre-sale for Feb 16, 2022 at 1:00 PM EST.
On Feb 15, 2022 at 1:00 PM EST, when we launched the mainnet version of pre-sale page, multiple issues were reported in our Telegram & Twitter where users were not able to connect wallet and make any purchases.
Investigation: Technical team immediately investigated the issues and found 2 root causes:
- Feature for enabling whitelisted wallets to connect had a bug
- Network change in the callTransactions was not working when moving from testnet to mainnet
Technical notes about above both issues from our tech team:
- On whitelisting of wallets, we had a JSON file ready with all the whitelisted addresses. But there was a test code that didn't allow any users to connect to their wallets. So, we identified the mistake as we were deploying but the deployment process takes at least 15 minutes. So, a chain of deployment caused a delay at the first.
- So, after above issue was fixed, we realized that the transaction was not going through properly. We were testing the features on testnet from couple of days ago and we switched to mainnet just an hour before the sale. But it didn't work as expected. We were using sendTransaction method from https://www.npmjs.com/package/@elrondnetwork/dapp-core . We used the SmartContract class from @elrondnetwork/erdjs, which didn't support chainId to make changes to the chainId on the mainnet. Since, it was working on testnet, we assumed that the same goes for the mainnet too. But it didn't worked that way, so we had to take a little time to investigate the issue and put a hack to it.
Fix: We fixed the first issue but the second one took time as the documentation of packages was not clear. Then we reached out to Elrond Dev community where we found hints of solutions. Then we fixed the issue but we were already delayed by 1 hour or so. The main reasons for these 2 bugs were from our side while migrating to mainnet and partially from missing documentation on Elrond packages.
Impact: Once the issue was resolved, Round 1 got sold out within 5 minutes. That shows a strong community and we felt a greater need to take responsibility going forward. However, even after resolving these issues, there still appeared one issue
- Users who tried purchases of 50k CHECKR tokens got failed transaction
This last issue was caused by rounding off in exchange price.
Compensating our community: We are looking into compensating our community for all pain that they had to go through during this situation. We deeply apologize that all of you had to go through frustration, confusion, and inconvenience.
- A total of 1,000,000 CHECKR tokens will be airdropped for whitelisted wallets. There are a lot of people who got banned or kick out from the community because of inappropriate behaviors. We will remove such wallets from the list by investigating further.
- For all users who got failed transactions for 50k CHECKR purchase, the team will take 5,000,000 CHECKR tokens out of team allocation. A special presale will happen for these wallets at the same price of Round 1 but max cap of 25k tokens.
Both of these compensations will be executed after the completion of Round 3.
Learnings: We sincerely apologize for the inconvenience and we are all hands on deck to make CheckerChain one of the best utility dApp in blockchain history. One of the biggest thing that went wrong in this event was: we did not allocate enough time for testing. Presale feature was developed and executed within 5 days. There are only a few teams that can do the same level of design, application, smart contracts that we did in the last 5 days. We will learn from this event and execute our dApp and future features in an extremely planned way. We are happy to have our strong community supporting us in tough times. We are here to make things happen; we are here to stay!
Last modified 1yr ago