EXECUTIVE SUMMARY
Bullz Tower is a play-to-earn decentralized application with a visually interactive web interface. Players can upgrade up to 3 traders across 8 floors by burning BLZT tokens. For each additional trader or floor, the daily interest rate (paid in newly minted BLZT tokens) increases, up to 1%.
It is recommended that users thoroughly review the whitepaper and this report in their entirety to fully understand the application's fundamentals and risks.
We found one critical-severity issue with the smart contract, as detailed in the Findings section. The deployment team has resolved this issue.
SCOPE
FUNDAMENTALS
Bullz Tower play-to-earn decentralized application can also be considered a ROI dApp, where users can earn up to 1% daily interest depending on the number of BLZT tokens invested. Earnings are generated as newly minted BLZT tokens. Tokens are invested by burning them, instead of transferring the tokens to the smart contract.
The contract also features a leaderboard that rewards the top referrers each week.
Upgrading a floor:
Interest Rate:
Referral:
Leaderboard:
Upgrade cost for trader 1 (per floor):
Upgrade cost for trader 2 (per floor):
Upgrade cost for trader 3 (per floor):
Other information:
FINDINGS
INTERACTION | SEVERITY |
---|---|
[CPFC-1] interest rate is incorrect | RESOLVED |
CPFC-1: The interest rate does not match the expected values based on the whitepaper. The actual value is approximately 100x too low. This was identified by both static analysis and unit testing. This was resolved by the deployer team.
UNIT TESTS
INTERACTION | RESULT |
---|---|
[CPUT-1] upgrade | OK |
[CPUT-2] withdraw | OK |
[CPUT-3] accumulation cutoff | OK |
[CPUT-4] interest rate | OK |
[CPUT-5] leaderboard | OK |
Unit testing was conducted to verify possible exploits, validate the logic, and ensure it aligns with the project's fundamentals. It was done so successfully.
PRIVILEGES
RECOMMENDATIONS
The UPGRADE, REALIZE, WITHDRAW, and LEADERBOARD events should use an index on the user parameter to allow for easier data fetching from nodes. Adding an index on the user parameter for these events will optimize queries where filtering on a specific user is required. This will improve overall performance and reduce load times when retrieving event data for a particular user. Implementing indexes appropriately based on query patterns is an important database optimization that can greatly improve the speed and efficiency of data access.