![](/img/bg-single.png)
AntiWhale işlevine sahip akıllı sözleşmeler
![](https://lotusmarket.io/storage/files/smart-contracts-with-anti-whale-function/cover.png)
Akıllı sözleşmelerde sahtekarlık şemalarına ayrılan makale serisine devam ediyoruz. Bugün, AntiWhale transfer boyutu sınırlama mekanizması olan akıllı sözleşmeleri inceleyeceğiz.
Bu makalede, AntiWhale mekanizmasının ne olduğuna, Soğuma mekanizmasından nasıl farklılaştığına ve birlikte kullanıldıkları ve ayrı ayrı kullanıldıkları durumlara ayrıntılı olarak bakacağız.
Soğuma mekanizması
Amaç:
Soğuma mekanizması, aynı adresten ardışık işlemler arasında zaman sınırları uygulamak için tasarlanmıştır. Amacı, işlemlerin sıklığını düzenlemek ve kısa zaman aralıklarında aşırı alım veya satım faaliyetini önlemektir.
Gerçekleştirme:
Zaman Sınırları: Soğuma mekanizmaları, genellikle belirli bir adresten son işlemden bu yana geçen süreye dayalı olarak bekleme süreleri belirler. Kullanıcılar, yeni bir işlem başlatmadan önce bekleme süresinin dolmasını beklemek zorundadır.
Göstergeler:
Zaman Damgası Karşılaştırması: Blok zaman damgalarını karşılaştıran veya zamanla ilgili işlevleri kullanan kod segmentlerini arayın. lastTransactionTimestamp gibi durum değişkenleri, son işlemin zamanını izlemek için kullanılabilir.
AntiWhale mekanizması
Amaç:
AntiWhale mekanizmasının temel amacı, tek bir adresten veya küçük bir grup adresden büyük işlemlerin etkisini azaltmaktır, genellikle "balina" olarak adlandırılanlar. Amaç, tokenlerin aynı ellerde aşırı yoğunlaşmasını önlemek ve olası manipülasyonu veya piyasanın istikrarsızlaşmasını engellemektir.
Uygulama:
İşlem boyutu sınırlamaları: AntiWhale mekanizmaları genellikle bireysel işlemlerin boyutu veya değeri üzerinde sınırlar belirler. Belirlenen bir eşiği aşan işlemler, işlem reddi, yüksek ücretler veya diğer yeniden dağıtım mekanizmaları gibi kısıtlamaların uygulanmasına neden olur.
Göstergeler:
İşlemlerin boyutunu veya değerini kontrol eden kod segmentlerini arayın ve maxTransactionAmount veya whaleThreshold gibi durum değişkenlerini kullanın, AntiWhale mekanizmasının varlığını gösterebilirler. AntiWhale, genellikle büyük işlem hacmi olan kullanıcıları etkiler ve büyük sahiplerin tokenlerin yoğunluğuyla ilgilenir.
Soğuma ve AntiWhale Arasındaki Temel Farklar:
Parametreler | AntiWhale | Soğuma |
Parametreler:Etki | AntiWhale:Yüksek işlem hacmine sahip kullanıcıları etkiler. | Soğuma:İşlem boyutundan bağımsız olarak tüm kullanıcıları etkiler. |
Parametreler:Piyasa dinamikleri | AntiWhale:Yoğunluk sorunlarını çözmeye odaklanır. | Soğuma:İşlem sıklığını düzenlemeyi amaçlar. |
Parametreler:Proje Hedefleri | AntiWhale:Hedef, tokenleri dağıtmak ve piyasanın istikrarını sağlamaktır. | Soğuma:Öncelikle piyasa istikrarını sağlamayı ve hızlı işlem yapmayı önlemeyi amaçlar. |
Kullanım Senaryoları:
-
Piyasa manipülasyonunu en aza indirme:
Her iki mekanizma da farklı piyasa manipülasyonu sorunlarını ele almak için birlikte kullanılabilir. AntiWhale mekanizması, büyük işlemlerin boyutunu sınırlayarak, Soğuma mekanizması ise kısa bir süre içinde aynı adreste birden çok işlemin gerçekleşmesini önleyerek yardımcı olur.
Varsayalım ki bir varlık toplam token arzının önemli bir kısmına sahiptir. AntiWhale mekanizması olmadan, bu varlık önemli fiyat dalgalanmalarına neden olabilecek büyük işlemler yapabilir, bu da piyasa manipülasyonuna yol açabilir. Tek bir adresteki işlemlerin maksimum boyutunu veya sıklığını belirli bir süre içinde sınırlayarak, AntiWhale mekanizması, büyük sahiplerin piyasaya gereğinden fazla etki etmesini önlemeyi amaçlar. -
Adil dağıtımı sağlama:
Yeni tokenler veya token satışları bağlamında, birkaç katılımcının toplam arzın orantısız bir payını elde etmesini önlemek. Bireysel bir adresin bir token satışında veya belirli bir dönem içinde satın alabileceği maksimum miktarı sınırlandırmak, daha geniş bir katılımcı grubu arasında tokenlerin daha dengeli bir şekilde dağıtılmasını sağlar. -
Likidite sorunlarıyla mücadele:
Büyük sahiplerin yüksek işlem hacimleri likiditeyi etkileyebilir ve merkezi olmayan borsalarda doğal fiyat keşif sürecini bozabilir. Büyük sahiplerin işlem hızını sınırlayarak, AntiWhale mekanizması daha stabil bir likidite durumu sağlamaya yardımcı olur. -
Fiyat istikrarı:
Hızlı ve büyük ölçekli işlemleri engellemek, fiyatların istikrarlı olmasına yardımcı olabilir. AntiWhale kısıtlamalarını uygulayarak, token fiyatı işlemler arasında piyasa koşullarına daha iyi adapte olabilir. -
Ön alımı önleme:
AntiWhale, ön alımı önlemek için uygulanabilir, burada tüccarlar diğerlerinden önce işlem yapmak için zaman duyarlı bilgileri kullanırlar. AntiWhale mekanizması, işlemleri hızlı bir şekilde gerçekleştirerek elde edilen avantajı azaltabilir. -
Flash-kredi ve tekrar girme saldırılarını hafifletme:
AntiWhale, işlem yürütme hızını sınırlayarak bazı flash-kredi ve tekrar girme saldırılarına karşı ek bir savunma katmanı ekleyebilir.
Token sahipleri için potansiyel riskler:
- AntiWhale sınırlarının çok sıkı belirlenmesi, gerçekten büyük işlemlere ihtiyacı olan kullanıcılar için bir sorun olabilir.
- AntiWhale mekanizmasına aşırı güvenmek, geniş ekosistem dikkate alınmadan uygulandığında, merkezileşmeyi yanlışlıkla teşvik edebilir.
Bu tür tehditlerin akıllı sözleşmelerde var olup olmadığını nasıl bağımsız olarak belirleyebilirsiniz?
Bir akıllı sözleşmede AntiWhale kısıtlama mekanizmasının var olup olmadığını belirlemek önemli bir görevdir, işte bunu yapmanıza yardımcı olacak bazı ipuçları:
- Sözleşme belgelerini öğrenin: İlk olarak sözleşme belgelerini ve teknik özellikleri gözden geçirerek başlayın.
- Transfer işlevlerini analiz edin: Token transferinden sorumlu işlevleri (transfer, transferFrom, vb.) inceleyin. İşlemlere kısıtlamalar getiren koşullu ifadeleri arayın.
- Zaman damgası karşılaştırmalarını kontrol edin: Sözleşmenin blok zaman damgalarını karşılaştırdığı durumları arayın.
- Durum değişkenlerini kontrol edin: AntiWhale ile ilgili bilgileri depolamak için kullanılabilecek durum değişkenlerini inceleyin.
- Zaman hesaplamalarıyla ilgili işlevleri veya değiştiricileri arayın, örneğin block.timestamp, block.number veya now.
- AntiWhale'ın davranışını kontrol eden parametreleri arayın: bunlar maxTransferAmount, maxTxLimit gibi parametreler olabilir. Bu parametreler genellikle sözleşme sahibi tarafından veya bireysel işlem yönetim mekanizmaları aracılığıyla belirlenir.
- Olay günlüklerini analiz edin: Özel olaylar için olay günlüklerini kontrol edin. Uygulamalar, bir işlem gerçekleştirildiğinde ilgili bilgileri günlüğe kaydedebilir, bu da soğutma sürecine dair içgörü sağlar.
- Kullanıcı özel mantığını analiz edin: Sözleşmede kullanıcı kısıtlamaları uygulandıysa, bireysel transfer sınırlarını belirleme mantığını kontrol edin. Bu mantık, kullanıcı özniteliklerini, bakiyeyi veya diğer kriterleri içerebilir.
- Bilgili olun: Topluluğumuzdaki (Telegram kanalı) en son gelişmeleri ve sahtekarlık tespiti için en iyi uygulamaları (Blog ve YouTube kanalımız) takip edin.
İyi haber: Güvenlik Tarayıcımız, vakaların %90'ında (gizli olanlar dahil) transfer kısıtlamalarını (AntiWhale) başarıyla bulur ve hesaplar. Premium abonelik kullanarak fonlarınızı tehditlerden koruyun.
AntiWhale mekanizması piyasa manipülasyonunu önlemek ve token dağıtımını sağlamak için tasarlanmış olsa da, sahtekarlar bu yeteneklerini kullanarak kullanıcıları dolandırabilirler. Aşağıda, AntiWhale mekanizmasıyla token yatırımlarını güvence altına almak için olası senaryolar ve ipuçları bulunmaktadır.
Örnek 1: Soğuma süresiyle işlem miktarı sınırlamaları (Soğuma ile İşlem Miktarı Sınırlamaları)
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;
}
Bu örnek, belirli bir süre içinde tek bir adresten transfer edilebilecek maksimum miktarı sınırlar.
Aynı adreste yapılan işlemler arasında bekleme süresi sağlayan bir soğuma mekanizması içerir. lastTransactionTimestamp dizisi, her adres için son işlem zaman damgasını takip eder.
Örnek 2: Dinamik işlem sınırlamaları (Progresif İşlem Sınırlamaları)
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;
}
Bu örnek, zamanla maksimum işlem miktarının yavaşça arttığı dinamik bir mekanizma kullanır.
maxTransactionIncreaseRate parametresi, maksimum işlem miktarının artış hızını kontrol eder. lastTransactionTimestamp dizisi, her adres için son işlem zaman damgasını takip eder.
Örnek 3: Beyaz liste istisnaları (Beyaz Liste Muafiyeti)
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");
...
}
Bu örnek, AntiWhale kısıtlamalarından belirli adresler için beyaz liste muafiyeti kullanır.
whitelistedAddresses dizisindeki adresler, maksimum işlem miktarı kısıtlamasından muaf tutulur. isWhitelisted dizisi, belirli bir adresin beyaz listede olup olmadığını belirler.
Örnek 4: Kad eme işlem sınırlamaları (Kademe İşlem Sınırlamaları)
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];
}
}
Bu örnek, gönderen adresin bakiyesine bağlı olarak kademe işlem sınırlamaları uygular. Daha düşük bakiyeye sahip kullanıcılar daha yüksek işlem sınırına sahipken, daha yüksek bakiyeye sahip kullanıcılar daha düşük işlem sınırına sahiptir.
getTransactionLimit işlevi, kullanıcının bakiyesine bağlı olarak uygun işlem limitini belirler.
Örnek 5: Büyük işlemlerde ücretler (Büyük İşlemlerde Vergi)
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
...
}
}
Bu örnekte, maksimum işlem miktarını aşan işlemlerde ücret alınmaktadır.
Komisyon oranı (TaxRate), işlem tutarının yüzdesini belirler. Komisyon kesilir ve ardından transferin net miktarı işlenir.
Örnek 6: Kademe sınırları (Çok Düzeyli İşlem Sınırları)
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");
}
}
Bu örnek, işlem miktarına bağlı olarak farklı sınırların uygulandığı çok düzeyli işlem sınırları uygular.
Bu, farklı token hacimleri için değişen düzeylerde işlem sınırlarının belirlenmesine olanak tanır.
Örnek 7: Bakiyeye bağlı dinamik işlem sınırları (Token Bakiyesine Bağlı Dinamik İşlem Sınırları)
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");
...
}
Bu örnek, maksimum işlem miktarını Toplam Arzın bir yüzdesi olarak dinamik olarak hesaplar. maxTransactionPercentage parametresi, tek bir işlem için izin verilen yüzdeyi tanımlar.
Örnek 8: Zaman bağımlı sınırlar (Zaman Bağımlı İşlem Sınırları)
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");
...
}
Bu örnekte, zaman bağımlı işlem kısıtlamaları uygulanır ve işlemler yalnızca belirli bir zaman çerçevesi içinde gerçekleştirilebilir.
startTime ve endTime parametreleri, işlemlerin yapılabileceği dönemi tanımlar.
Örnek 9: Progresif vergilendirme (Progresif Vergilendirme)
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
...
}
Bu örnek, işlem miktarını aşan işlemlerde bir vergilendirme mekanizması sunar.
Vergi oranı zamanla veya belirli koşullara bağlı olarak ayarlanabilir.
Örnek 10: Sahipler bakiyelerine dayalı işlem sınırları (Token Sahiplerinin Bakiyelerine Dayalı Ağırlıklı İşlem Sınırları)
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");
...
}
Bu örnek, hem toplam işlem miktarına hem de bireysel token sahiplerinin bakiyelerine dayalı işlem sınırları uygular.
userTransactionLimit bağlama, belirli adreslerin bakiyelerine dayalı kişiselleştirilmiş sınırlar belirlemenize olanak tanır.
Umarız bu örnekler, akıllı sözleşmelerdeki AntiWhale mekanizmasını daha iyi anlamanıza yardımcı olmuştur.
Blockchain'deki tüm bilgilerin açık olduğu göz önüne alındığında (elbette sözleşmenin kaynak kodunun doğrulanmış olduğu varsayımıyla), bu bilgilerle donanmış olarak akıllı sözleşmeleri bağımsız olarak inceleyebilir ve çeşitli dolandırıcılık şemalarını tanımlayabilirsiniz.
Ancak, biz zaten hepsini sizin için yaptık! Premium abonelik için kaydolun ve akıllı sözleşmelerdeki özellikler üzerindeki özel filtreler ve güncel analizlere erişim sağlayın. Karlı tokenlara başarılı yatırım yapma şansınızı artırın.
Saygılarımızla, Lotus Market ekibi.