驴来 (驴来) security report
Radar AI scanned the verified 驴来 contract on BSC. GoPlus found no honeypot, proxy, blacklist, minting, or pausing indicators. Source review identified three Medium risks: owner-controlled migration can alter pool restrictions and taxation, a reverting dividend callback can block transfers, and the external tax processor receives broad custody of accrued tax. Slither was not run.
No Critical or High vulnerability is proven from the supplied evidence. Three Medium risks were identified. The contract is not currently shown to be a honeypot, but transfer behavior depends on migration state and an externally configured dividend contract.
Trust score: 70/100. Source verified: Yes. Chain: bsc. Contract: 0x54463eea795f0ad7fcbdb7019375c18a58b97777.
This report was last modified on 2026-09-30 and contains 3 material findings.
medium finding: Dividend callback failure can block token transfers
When dividendContract is nonzero, most transfers invoke IDividend.setShare for the sender and recipient. Any revert from either callback causes the entire token transfer to revert, potentially preventing ordinary transfers, sells, or other balance movements for affected accounts.
Evidence: In _afterTokenTransfer(), shouldSkipFrom and shouldSkipTo exclude only the token contract, zero address, burn address, dividend contract, and configured pools. For other addresses, IDividend(dividendContract).setShare(...) is called inside try/catch and failure triggers revert DividendShareUpdateFailed(...). The initializer accepts dividendContract without validating its behavior.
Recommendation: Use a non-blocking dividend update path, allow transfers to proceed when share updates fail, or add a controlled recovery mechanism to disable or replace the dividend integration. Test behavior with reverting and gas-intensive dividend contracts.
medium finding: Owner-controlled migration can bypass pool restrictions and taxes
The owner controls when the token leaves BondingCurve and when migration is finalized. While the contract remains in Migrating, transfers are plain untaxed transfers and pool restrictions are removed. An owner that delays or fails to finalize migration can therefore keep trading behavior outside the intended tax and restriction policy.
Evidence: startMigration() and finalizeMigration() are both onlyOwner. In _transfer(), BondingCurve rejects transfers involving configured pools, while Migrating directly calls _plainTransfer(from, to, amount) without tax.
Recommendation: Use an immutable or externally verifiable migration schedule, restrict the duration of Migrating, emit and monitor state transitions, and confirm that ownership is transferred or renounced only after migration is finalized and the resulting state is validated.
medium finding: Tax processing is a centralized external dependency with custody of accrued tax
The configured taxProcessor receives an effectively unlimited token allowance and controls processing of accrued tax. If processing reverts, the fallback path transfers the contract's entire token balance to taxProcessor. A compromised, malicious, or incorrectly configured processor could therefore capture accrued tax tokens and influence liquidation handling, although the code does not provide it with direct access to arbitrary holder balances.
Evidence: _processTax() sets allowance(address(this), taxProcessor) to type(uint256).max when needed and calls ITaxProcessor(taxProcessor).processTaxTokens(taxAmount). In the catch branch, it transfers balanceOf(address(this)) to taxProcessor via _plainTransfer(address(this), taxProcessor, remainingBalance). taxProcessor is set during initialize() and has no replacement function.
Recommendation: Use least-privilege approvals, cap or reset allowances around each processing call, validate the processor implementation and configuration, add governance or timelock controls for processor selection before initialization, and avoid transferring the entire contract balance in the failure path.