Break our contract. Get paid in BLK.

The BlockHaus presale contract is live on Polygon and buyers pay into it in USDT. It has not been audited by any independent firm. We would rather a developer finds a problem now than a thief finds it later.

20,000 of 20,000 BLK left in the pot.

What we pay

SeverityRewardWhat it means
Critical20,000 BLKAnyone can take USDT or BLK out of the contract, take funds from a buyer, or change the token supply.
High15,000 BLKSomeone can buy at the wrong price, receive more BLK than they paid for, or stop the sale for everyone without the owner key.
Medium10,000 BLKA buyer can lose funds through normal use, or an owner control does something different from what the code says it does.
Low5,000 BLKWrong values from a view function, wrong event data, or rounding that works against the buyer.

The pot is 20,000 BLK in total. Rewards come out of that one pot in the order valid reports arrive, and the first person to report a bug is the one paid for it. A critical report pays the full 20,000 BLK and closes the bounty. If a smaller reward is due and less is left in the pot than it is worth, we pay what is left. When the pot is empty this page says so.

What is in scope

Both are verified on Polygonscan, so the source you read there is the code that runs.

What is not a bug

These owner powers exist on purpose and are listed here so nobody spends time on them. The owner key sits on a Ledger hardware wallet, offline.

Also out of scope: this website, phishing, gas savings, anything that needs the owner key stolen first, and bugs in USDT or Polygon itself.

How to report

Email hi@theblockhaus.io, or reply to the email we sent you. Include:

Test on a fork, never against the live contract with other people's money. We reply to every report, and every one goes in the public log below with our verdict. If we rate a bug lower than you think it deserves, say so and we will set out our reasoning in the log.

BLK is a presale token. It has no guaranteed value and cannot be traded until it is listed on an exchange, and no listing date is fixed. We cannot pay rewards to residents of the United States, the United Kingdom, the United Arab Emirates, or any country under UK sanctions.

Every report so far

DateSeverityFindingVerdictPaid
6 Oct 2026 None withdrawUnsoldBlk() can be called while the sale is open, which stops purchases until BLK is sent back to the contract. Not a bug. Taking back unsold BLK is an owner power listed above. Buyers keep their USDT, and the sale resumes once BLK is returned. Nothing due
6 Oct 2026 None The $2M hard cap check in buy() can never trigger, because the four phase targets add up to exactly $2M. Not a bug. The phase targets are fixed in the contract and cannot change, so nothing behaves wrongly. A fair code note. Nothing due
6 Oct 2026 None openPresale() does not check that the contract holds BLK before the sale opens. Not a bug. Opening the sale is an owner power listed above. Purchases would fail cleanly with no loss to buyers. Nothing due
6 Oct 2026 None advancePhase() can be called before the sale opens. Not a bug. Moving the sale to the next phase is an owner power listed above. Nothing due
6 Oct 2026 None The minimum and maximum purchase can be set for a phase that has already finished. Not a bug. Setting purchase limits is an owner power listed above, and the setting has no effect on a finished phase. Nothing due