![](/img/bg-single.png)
Intelligens szerződések AntiWhale funkcióval
![](https://lotusmarket.io/storage/files/smart-contracts-with-anti-whale-function/cover.png)
Folytatjuk a cikksorozatot, amely az okos szerződésekben előforduló csalásos séma leírásának szentelt. Ma az AntiWhale átutalási méretkorlátozó mechanizmusú okos szerződéseket vizsgáljuk.
Ebben a cikkben részletesen megvizsgáljuk, mi is az AntiWhale mechanizmus, hogyan különbözik a Cooldown mechanizmustól, és mikor használják őket együtt, illetve mikor külön-külön.
Cooldown mechanizmus
Cél:
A Cooldown mechanizmus arra szolgál, hogy időkorlátokat írjon elő egymást követő tranzakciók között ugyanattól a címtől. Célja a tranzakciók gyakoriságának szabályozása, és hogy megakadályozza a túlzott vásárlói vagy eladói tevékenységet rövid időközönként.
Megvalósítás:
Időkorlátok: A Cooldown mechanizmusok várakozási időt írnak elő tranzakciók között, gyakran az utolsó tranzakció óta eltelt idő alapján. A felhasználóknak meg kell várniuk, hogy lejárjon a várakozási időszak, mielőtt új tranzakciót indítanának.
Jelzők:
Időbélyeg összehasonlítás: Keresse azokat a kódrészleteket, amelyek blokk időbélyegeket hasonlítanak össze, vagy idővel kapcsolatos funkciókat használnak. Az utolsó tranzakció időbélyeg típusú állapotváltozóit használhatják az utolsó tranzakció idejének nyomon követésére.
AntiWhale mechanizmus
Cél:
Az AntiWhale mechanizmus fő célja a nagy tranzakciók egyetlen címről vagy kis csoport címéről, gyakran „bálnák”-ról nevezett tranzakciók hatásának csökkentése. Célja a tokenek túlzott koncentrációjának megakadályozása ugyanazon kézben, és a piac esetleges manipulációjának vagy destabilizálódásának megfékezése.
Megvalósítás:
Tranzakcióméret korlátok: Az AntiWhale mechanizmusok általában korlátozásokat állítanak be az egyedi tranzakciók méretére vagy értékére. A meghatározott küszöbértéket túllépő tranzakciók esetén korlátozásokat vezetnek be, például tranzakció elutasítása, magas díjak vagy más újraelosztási mechanizmusok.
Jelzők:
Keresse azokat a kódrészleteket, amelyek ellenőrzik a tranzakciók méretét vagy értékét, és olyan állapotváltozókat (például maxTransactionAmount vagy whaleThreshold), amelyek jelenlétére utalhatnak az AntiWhale mechanizmus. Az AntiWhale elsősorban azokat a felhasználókat érinti, akik nagy tranzakciókötegekkel rendelkeznek, és a nagy tulajdonosok kezében lévő tokenek koncentrációjára összpontosít.
Fő különbségek a Cooldown és az AntiWhale között:
Paraméterek | AntiWhale | Cooldown |
Paraméterek: Befolyás | AntiWhale: Főként azokat a felhasználókat érinti, akik nagy tranzakciókötegekkel rendelkeznek. | Cooldown: Minden felhasználóra vonatkozik, függetlenül a tranzakció méretétől. |
Paraméterek: Piaci dinamika | AntiWhale: A koncentrációs problémák megoldására összpontosít. | Cooldown: A tranzakciók gyakoriságának szabályozására irányul. |
Paraméterek: Projekt célkitűzések | AntiWhale: Célja a tokenek elosztása és a piac stabilitásának biztosítása. | Cooldown: Főként a piaci stabilitás biztosítására és a gyors kereskedés megakadályozására irányul. |
Felhasználási forgatókönyvek:
-
Piaci manipuláció minimalizálása:
Mindkét mechanizmus együtt használható a különböző piaci manipulációs problémák kezelésére. Az AntiWhale mechanizmus segít korlátozni a nagy tranzakciók méretét, míg a Cooldown mechanizmus megakadályozza, hogy több tranzakció gyorsan megtörténjen rövid idő alatt.
Tegyük fel, hogy egy entitás jelentős részét birtokolja a teljes token kínálatnak. Az AntiWhale mechanizmus nélkül ez az entitás nagy tranzakciókat végezhetne, amelyek jelentős ár ingadozásokat okozhatnak, piaci manipulációhoz vezethet. Azzal, hogy korlátozza a maximális méretet vagy a tranzakciók gyakoriságát egy címre egy bizonyos időszakon belül, az AntiWhale mechanizmus arra törekszik, hogy megakadályozza, hogy a nagy tulajdonosok túlzott befolyással legyenek a piacon. -
Igazságos elosztás biztosítása:
Új tokenek vagy token értékesítések esetén megakadályozni, hogy néhány résztvevő aránytalan részesedést szerezzen a teljes kínálatból. A maximális összeg meghatározása, amelyet egyé ni cím vásárolhat egy token értékesítés során vagy egy bizonyos időszakban belül, lehetőséget biztosít a tokenek egyenletesebb elosztására a résztvevők szélesebb körében. -
Likviditási problémák kezelése:
A nagy tulajdonosok magas tranzakció kötésének következményeként a likviditást és a decentralizált tőzsdéken a természetes árképzési folyamatot befolyásolhatja. Az AntiWhale mechanizmus segítségével, amely korlátozza a nagy tulajdonosok általi tranzakciók sebességét, fenntarthatóbb likviditási helyzetet lehet fenntartani. -
Árstabilitás:
A gyors és nagyméretű tranzakciók megakadályozása hozzájárulhat az árstabilitáshoz. Az AntiWhale korlátozások érvényesítésével a token árának több ideje van alkalmazkodni a piaci feltételekhez a tranzakciók között. -
Front-running megelőzése:
Az AntiWhale használható front-running elleni küzdelemben is, ahol a kereskedők időérzékeny információkat használnak fel az ügyletek előtti végrehajtásához. Az AntiWhale mechanizmus csökkentheti az általuk szerzett előnyt, hogy gyorsan végrehajtsák a tranzakciókat. -
Flash-kölcsön és reentrancia támadások enyhítése:
Az AntiWhale extra védelmi réteget jelenthet egyes flash-kölcsön és reentrancia támadásokkal szemben a tranzakció végrehajtásának sebességének korlátozásával.
A token tulajdonosok potenciális kockázatai:
- Túl szigorú AntiWhale korlátok beállítása problémát okozhat azoknak a felhasználóknak, akik valóban szükségük van nagy tranzakciókra.
- Az AntiWhale mechanizmus túlzott támaszkodása véletlenül központosítást is elősegíthet, ha nem veszi figyelembe a szélesebb ökoszisztémát.
Hogyan lehet függetlenül eldönteni, hogy ilyen fenyegetések jelen vannak-e az okos szerződésekben?
Fontos feladat meghatározni, hogy van-e jelen AntiWhale korlátozó mechanizmus egy okos szerződésben, íme néhány tipp, amely segíthet ebben:
- Tanulmányozza a szerződés dokumentációját: kezdje a szerződés dokumentációjának és specifikációinak áttekintésével.
- Elemezze az átutalási funkciókat: vizsgálja meg azokat a funkciókat, amelyek felelősek a tokenek átutalásáért (transfer, transferFrom stb.). Keresse azokat a feltételes állításokat, amelyek korlátozásokat írnak elő tranzakciókra.
- Ellenőrizze az időbélyeg összehasonlításokat: keresse azokat az eseteket, amikor a szerződés blokk időbélyegeket hasonlít össze.
- Ellenőrizze az állapotváltozókat: vizsgálja meg az állapotváltozókat, amelyeket az AntiWhale-hez kapcsolódó információk tárolására használhatnak.
- Keresse a időszámítási logikával kapcsolatos funkciókat vagy módosítókat, például block.timestamp, block.number vagy now.
- Keresse azokat a paramétereket, amelyek szabályozzák az AntiWhale viselkedését: ezek lehetnek például maxTransferAmount, maxTxLimit stb. Ezeket a paramétereket gyakran a szerződés tulajdonosa állítja be, vagy az egyedi tranzakciókezelési mechanizmusok révén.
- Elemzze az eseménynaplókat: ellenőrizze az eseménynaplókat speciális események esetén. Az implementációk képesek releváns információkat naplózni egy tranzakció végrehajtásakor, ami betekintést nyújt a hűtési folyamatba.
- Elemzze a felhasználóspecifikus logikát: ha a szerződésben felhasználói korlátozások vannak beépítve, ellenőrizze a logikát az egyedi átutalási korlátok meghatározására. Ez a logika magában foglalhat felhasználói attribútumokat, egyenleget vagy más kritériumokat.
- Legyen tájékozott: Maradjon naprakész a közösség legújabb fejleményeivel kapcsolatban (Telegram csatorna) és a csalások felismerésének legjobb gyakorlataival (Blog és YouTube csatorna).
Jó hír: Biztonsági szkennere sikeresen megtalálja (beleértve a rejtetteket is) és kiszámítja a tranzakciós korlátozásokat (AntiWhale) az esetek 90%-ában. Használja prémium előfizetésünket, és védje meg pénzét a fenyegetésektől.
Bár az AntiWhale mechanizmus a piaci manipuláció megakadályozására és a tokenek elosztásának biztosítására lett kifejlesztve, a csalók képesek lehetnek a képességeit kihasználni a felhasználók átverésére. Az alábbiakban néhány lehetséges forgatókönyv és tipp található a token befektetések biztosítására az AntiWhale mechanizmus jelenlétével.
Példa 1: Tranzakciók mennyiségére vonatkozó korlátok hűtési idővel (Tranzakciós mennyiségi korlátok hűtési idővel)
uint256 public maxTransactionAmount = 1000000; // Maximum transaction amount
uint256 public cooldownTime = 1 days; // Cooldown time between transactions
mapping(address => uint256) private lastTransactionTimestamp;
function transfer(address to, uint256 value) public {
require(value <= maxTransactionAmount, "Exceeded maximum transaction amount");
require(block.timestamp - lastTransactionTimestamp[msg.sender] >= cooldownTime, "Wait for cooldown period to end");
...
lastTransactionTimestamp[msg.sender] = block.timestamp;
}
Ez a példa korlátozza a maximális összeget, amelyet egyetlen cím képes átutalni bizonyos időszak alatt.
Tartalmaz egy hűtési mechanizmust, amely várakozási időt biztosít a tranzakciók között ugyanazon a címen. Az utolsó tranzakció időbélyeg tömb nyomon követi az utolsó tranzakció időbélyegét minden címre.
Példa 2: Dinamikus átutalási korlátozások (Progresszív tranzakciós korlátok)
uint256 public initialMaxTransactionAmount = 500000; // Initial maximum transaction amount
uint256 public maxTransactionIncreaseRate = 20000; // Maximum increase rate per transaction
uint256 public cooldownTime = 2 days; // Cooldown time between transactions
mapping(address => uint256) private lastTransactionTimestamp;
function transfer(address to, uint256 value) public {
uint256 currentMaxTransactionAmount = initialMaxTransactionAmount + (maxTransactionIncreaseRate * (block.timestamp - lastTransactionTimestamp[msg.sender]) / cooldownTime);
require(value <= currentMaxTransactionAmount, "Exceeded maximum transaction amount");
...
lastTransactionTimestamp[msg.sender] = block.timestamp;
}
Ez a példa dinamikus mechanizmust használ, ahol a maximális tranzakciós összeg idővel fokozatosan növekszik.
A maxTransactionIncreaseRate paraméter szabályozza, hogy milyen arányban növekszik a maximális tranzakciós összeg. Az utolsó tr anzakció időbélyeg tömb nyomon követi az utolsó tranzakció időbélyegét minden címre.
Példa 3: Fehérlista kivételek (Fehérlista mentesség)
address[] public whitelistedAddresses;
mapping(address => bool) public isWhitelisted;
uint256 public maxTransactionAmount = 1000000; // Maximum transaction amount
function transfer(address to, uint256 value) public {
require(value <= maxTransactionAmount || isWhitelisted[msg.sender], "Exceeded maximum transaction amount");
...
}
Ez a példa fehérlista mentességet használ specifikus címek számára az AntiWhale korlátozások alól.
A whitelistedAddresses tömbben szereplő címek mentesülnek a maximális tranzakciós összeg korlátozás alól. Az isWhitelisted tömb meghatározza, hogy egy adott cím fehérlistán szerepel-e.
Példa 4: Szintelt tranzakciós korlátozások (Szintelt tranzakciós korlátozások)
Példa: Szintelt korlátok a feladó címegyensúlyától függően
uint256[] public tieredLimits = [5000000, 2000000, 1000000]; // Tiered transaction limits for different address balances
function transfer(address to, uint256 value) public {
require(value <= getTransactionLimit(msg.sender), "Exceeded maximum transaction amount");
...
}
function getTransactionLimit(address user) internal view returns (uint256) {
uint256 userBalance = balanceOf(user);
if (userBalance < 10000) {
return tieredLimits[0];
} else if (userBalance < 50000) {
return tieredLimits[1];
} else {
return tieredLimits[2];
}
}
Ez a példa szintelt tranzakciós korlátokat valósít meg a feladó címének egyensúlyától függően. Az alacsonyabb egyenlegű felhasználók magasabb tranzakciós limitet kapnak, míg a magasabb egyenlegű felhasználók alacsonyabb tranzakciós limitet kapnak.
A getTransactionLimit függvény meghatározza a megfelelő tranzakciós limitet a felhasználó egyensúlya alapján.
5. Példa: Díjak nagy tranzakciók esetén (Adó nagy tranzakciókra)
uint256 public taxRate = 75; // 5% tax rate on transactions exceeding the limit
uint256 public maxTransactionAmount = 1000000; // Maximum transaction amount
function transfer(address to, uint256 value) public {
if (value > maxTransactionAmount) {
uint256 taxAmount = (value * taxRate) / 100;
uint256 netTransferAmount = value - taxAmount;
// Transfer logic here for the net transfer amount
...
} else {
// Transfer logic here for amounts within the limit
...
}
}
Ebben a példában az adót azokra a tranzakciókra számolják fel, amelyek meghaladják a maximális tranzakciós összeget.
Az adókulcs (taxRate) meghatározza a tranzakciós összeg százalékát. Az adó levonásra kerül, majd az átutalás nettó összege feldolgozásra kerül.
6. Példa: Szintelt korlátok (Többszintű tranzakciós korlátok)
uint256 public maxTransactionAmount1 = 500000; // Maximum transaction amount for tier 1 (500,000 tokens)
uint256 public maxTransactionAmount2 = 200000; // Maximum transaction amount for tier 2 (200,000 tokens)
function transfer(address to, uint256 value) public {
if (value <= maxTransactionAmount1) {
...
} else if (value <= maxTransactionAmount2) {
...
} else {
revert("Exceeded maximum transaction amount");
}
}
Ez a példa többszintű tranzakciós korlátokat valósít meg, ahol a tranzakció összegétől függően különböző korlátokat alkalmaznak.
Ez lehetővé teszi, hogy a tranzakciós korlátokat különböző token mennyiségekhez igazítsák.
7. Példa: Dinamikus tranzakciós korlátok egyenleg függvényében (Dinamikus tranzakciós korlátok a Token Egyenleg függvényében)
uint256 public maxTransactionPercentage = 5; // Maximum transaction percentage relative to total token supply
function transfer(address to, uint256 value) public {
uint256 maxTransactionAmount = (totalSupply() * maxTransactionPercentage) / 100;
require(value <= maxTransactionAmount, "Exceeded maximum transaction amount");
...
}
Ebben a példában dinamikusan számítják ki a maximális tranzakciós összeget a Teljes Kínálat százalékaként. A maxTransactionPercentage paraméter meghatározza a megengedett százalékot egyetlen tranzakcióra.
8. Példa: Időfüggő korlátok (Időfüggő tranzakciós korlátok)
uint256 public maxTransactionAmount = 1000000; // Maximum transaction amount (1 million tokens)
uint256 public startTime = 1700000000; // Start time in Unix timestamp
uint256 public endTime = 1800000000; // End time in Unix timestamp
function transfer(address to, uint256 value) public {
require(block.timestamp >= startTime && block.timestamp <= endTime, "Transaction not allowed at this time");
require(value <= maxTransactionAmount, "Exceeded maximum transaction amount");
...
}
Ebben a példában időfüggő tranzakciós korlátokat alkalmaznak, amelyek csak adott időszakban engedélyezik a tranzakciókat.
A startTime és endTime paraméterek meghatározzák azt az időszakot, amikor a tranzakciók engedélyezettek.
9. Példa: Progresszív adózás (Progresszív adózás)
uint256 public maxTransactionAmount = 1000000; // Maximum transaction amount (1 million tokens)
uint256 public taxRate = 2; // Initial tax rate in percentage
function transfer(address to, uint256 value) public {
require(value <= maxTransactionAmount, "Exceeded maximum transaction amount");
uint256 taxAmount = (value * taxRate) / 100;
uint256 netTransferAmount = value - taxAmount;
// Transfer logic here for the net transfer amount
...
}
Ez a példa progresszív adózási mechanizmust mutat be, ahol adót (díjat) vetnek ki a maximális összeget meghaladó tranzakciókra.
Az adó (díj) kulcsát idővel vagy bizonyos feltételek alapján módosíthatják.
10. Példa: Tranzakciós korlátok a tartózkodó egyenlegek alapján (Súlyozott tranzakciós korlátok a Token Tulajdonosok Egyenlegei alapján)
uint256 public maxTotalTransactionAmount = 5000000; // Maximum total transaction amount for all token holders
mapping(address => uint256) public userTransactionLimit; // Transaction limits based on individual token holder balances
function transfer(address to, uint256 value) public {
require(value <= maxTotalTransactionAmount, "Exceeded maximum total transaction amount");
require(value <= userTransactionLimit[msg.sender], "Exceeded individual transaction limit");
...
}
Ez a példa tranzakciós korlátokat valósít meg mind az összes tranzakciós összeg, mind az egyéni token tulajdonosok egyenlege alapján.
A userTransactionLimit lekötés lehetőséget biztosít arra, hogy személyre szabott korlátokat állítsanak be egyes címek egyenlege alapján.
Reméljük, hogy ezek a példák segítettek jobban megérteni az AntiWhale mechanizmust az okos szerződésekben.
Mivel az összes információ a blokkláncon nyilvános (természetesen a szer ződés forráskódjának ellenőrzése esetén), felfegyverkezve ezzel a tudással önállóan tanulmányozhatja az okos szerződéseket és azonosíthatja a különböző csalásokat.
Azonban mi már mindent megtettünk Önért! Iratkozzon fel prémium előfizetésre, és hozzáférést kap az okos szerződések jellemzőinek exkluzív szűrőihez és friss analitikáihoz. Növelje esélyeit a nyereséges tokenekbe történő sikeres befektetésre.
Üdvözlettel, Lotus Market csapata.