Chainhunters
Met de opkomst van DeFi en de explosieve groei van nieuwe ERC-20 tokens, zien we ook steeds meer zogeheten ‘honeypot checkers’. Deze tools beweren dat ze kunnen detecteren of een token je toelaat om te kopen, maar niet meer te verkopen. In de praktijk blijkt echter dat niet alle honeypot checkers hun belofte waarmaken. Sommige slimme ontwikkelaars misleiden deze checkers, waardoor je alsnog tegen een token aanloopt die je niet kunt verkopen.
In dit artikel leggen we uit hoe dit werkt, zodat je weet waar je op moet letten en niet blindelings vertrouwt op die ‘honeypot checker’-uitkomst.
Een honeypot is een ERC-20 token die zo is ontworpen dat je ‘m vaak eenvoudig kunt kopen, maar niet (of heel beperkt) kunt verkopen. Dit kan op verschillende manieren in de code worden geïmplementeerd, zoals:
transfer
-functie die simpelweg niet werkt na aankoop.balance
van andere wallets te manipuleren, waardoor verkopen wordt geblokkeerd.Het resultaat is hetzelfde: je komt er niet meer vanaf nadat je hebt gekocht.
Een honeypot checker is een tool (of script) die probeert te achterhalen of een token een honeypot is. Het doet dit vaak door:
transfer
-functie ‘normaal’ werkt.Een honeypot checker kan in veel gevallen nuttig zijn, maar er bestaan manieren om deze tools te misleiden, waardoor ze ten onrechte aangeven dat een token “veilig” zou zijn.
Scammers kunnen de checker foppen door conditionele logica in de transfer
-functie te plaatsen:
function transfer(address to, uint256 amount) public returns (bool) { // Pseudocode: alleen transacties met een bepaald tokenbedrag laten slagen // Zo slaagt de testtransactie van de checker wel, maar echte verkooppogingen niet. if (amount == 1 * 10**18) { // bijvoorbeeld 1 token // Doe de normale transfer (checker denkt nu dat alles werkt) } else { revert("Transfer blocked"); } return true; }
In dit voorbeeld is alleen het precieze bedrag van 1 token verplaatsbaar. Checkers versturen meestal kleine testtransacties, waardoor ze ten onrechte concluderen dat het token verkoopbaar is. Maar als je daarna een groter of willekeurig bedrag probeert te verkopen, krijg je een foutmelding.
Ook kan de ontwikkelaar de checks omzeilen door op slimme wijze tokens aan te maken zonder gebruik te maken van de standaard mint
-functie in Solidity. Bijvoorbeeld:
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Honeypot { function generateTokens(uint256 amount) public { assembly { // Sla tokens op in een specifieke storage slot // zonder de gebruikelijke Events of checks te activeren. mstore(0x40, 0x60) sstore(0, amount) } } }
Een honeypot checker die alleen zoekt naar een standaard ‘mint’-functie, concludeert dan onterecht dat het token niet gemint kan worden. Ondertussen kunnen de oplichters onbeperkt tokens genereren of manipuleren via de verborgen assembly-code.
Honeypot checkers zijn handig, maar geen garantie. Ze werken vaak met een reeks standaard-tests en aannames over de code. Door net buiten die standaarden te denken of door niet opvallende achterdeurtjes, kan een contract gemakkelijk aan een checker ontsnappen en mensen alsnog in de val lokken.
‘Honeypot checkers’ kunnen een nuttige eerste indruk geven, maar ze kunnen niet alle slimme trucs detecteren die scammers gebruiken. De code kan eenvoudig worden aangepast om deze tools te misleiden. Wil je jezelf beschermen? Dan blijft het belangrijk om:
Heb je een verdachte token gespot of ben je slachtoffer geworden? Neem contact met ons op via onze site. Samen kunnen we de cryptowereld veiliger maken.