Analise smart-contract
23.01.2024

BlackList DeFi token nasıl belirlenir?

Seri makalelerimizin devamında, akıllı sözleşmelerdeki dolandırıcılık şemalarına adanmış bir dizi devam ediyoruz. Bugün, Kara Liste işlevlerine sahip akıllı sözleşmeleri analiz edeceğiz (BlackList).

Kara Liste işlevlerine sahip akıllı sözleşmelerin tehlikeleri:

Kara liste işlevlerini içeren akıllı sözleşmeler, hem projeler hem de kullanıcıları için belirli riskler ve sorunlar taşır. İşte kara liste işlevleriyle ilişkilendirilen bazı tehlikeler:

  1. Merkezi Kontrol: Kara liste işlevleri genellikle sözleşme sahibine veya yöneticilere merkezi kontrol sağlar.

  2. Haksız Uygulamalar için Kara Listesi Kötüye Kullanımı: Suistimallere (sözleşme sahibi dahil) kara listeyi belirli adreslere hedeflemek için kullanabilir. Bu, hesapların iyi bir neden olmaksızın dondurulmasını veya işlevselliğinin kısıtlanmasını içerebilir.

  3. Şeffaflık eksikliği: Özellikle belgelenmemişse, kara listeleme işlevlerinin varlığı şeffaflık eksikliğine yol açabilir. Kullanıcılar kara listeleme kriterlerinden veya kara listeleme prosedüründen haberdar olmayabilir.

  4. Güvenlik riskleri: Kara Liste güvenli bir şekilde uygulanmazsa, yetkisiz kişilerin kara listeyi manipüle etmesine izin verebilecek zayıflıklar riski vardır, bu da yetkisiz olarak fonların dondurulmasına veya transfer edilmesine yol açabilir.

  5. Kullanıcı güvensizliği: Kara liste işlevlerinin varlığı, varlıklarının net kurallar olmadan kara listeye alınabileceği için kullanıcı güvenini zedeleyebilir.

  6. Token el koyma: Saldırganlar belirli adreslerden token veya varlıkları el koymak için bir kara liste kullanabilir, bu da önemli finansal kayıplara yol açabilir.

Akıllı sözleşmelerde bu tür tehditlerin varlığını bağımsız olarak nasıl belirleyebilirsiniz?

Akıllı sözleşmeyi doğrularken, kara liste işlevleri ile ilişkili tehdit olup olmadığını belirlemek için bazı adımlar atılabilir:

  • Bir akıllı sözleşmeyle çalışmaya başlamadan önce, kara listeleme, dondurma veya hesap işlevselliğini kısıtlama gibi tüm işlevleri içeren kodu dikkatlice okuyun ve inceleyin. Kara listeye adres eklemeyi veya adresleri kara listeden çıkarmayı mümkün kılan işlevleri arayın.

  • Sözleşmeye kimin sahip olduğunu veya yönetimsel kontrolü olduğunu analiz edin. Sahip veya yöneticilerle ilişkilendirilen kontrol derecesini ve hakları değerlendirin.

  • Sözleşme belgelerini inceleyerek kara listeleme işlevlerinin nasıl kullanılması gerektiğini anlayın. Kara listeleme kullanımını kontrol eden yönetim mekanizmaları hakkında bilgi edinin.

  • Şeffaflığı değerlendirin: Sözleşme, kara listeleme kriterlerinin şeffaf olduğundan emin mi? Yanlış pozitiflerin ortadan kaldırılması veya adreslerin kara listeden çıkarılması için net prosedürlerin olup olmadığını kontrol edin.

  • Güvenlik denetimleri: Akıllı sözleşmenin güvenlik denetimlerinden geçip geçmediğini, saygın üçüncü taraf şirketler tarafından kontrol edin.

  • Topluluktan veya çevrimiçi forumlardan gelen geri bildirimlerle kara listelerin projede nasıl kullanıldığına dair bilgi edinin. Topluluk üyelerinin haksız uygulamalar veya şeffaflık eksikliği konusunda ortaya çıkarılan herhangi bir uyarıya dikkat edin.

  • Kapsamlı bir analiz yaparak ve yukarıdaki faktörleri dikkate alarak, akıllı sözleşmelerdeki kara liste işlevleri ile ilişkili riskleri daha iyi değerlendirebilirsiniz. Topluluğumuzdaki en son gelişmelerden (Telegram kanalı) ve dolandırıcılık tespiti için en iyi uygulamalardan haberdar olun (Blog ve YouTube kanalımız).

 

İyi haberler: Güvenlik Tarayıcımız, yaygın (gizli dahil) Kara Liste işlevlerini %99,9 oranında bulur. Premium aboneliğimizi kullanın ve fonlarınızı tehditlerden koruyun.

 

Şimdi, Platformumuzun başarıyla tespit ettiği Kara Liste işlevlerinin birkaç yaygın örneğine göz atacağız.

Bu örneklerin basitleştirilmiş olduğunu ve gerçek uygulamanın farklı olabileceğini unutmayın. Akıllı sözleşmeleri analiz ederken her zaman detaylı bir kod incelemesi yapmalı ve bağlamsal faktörleri dikkate almalısınız.

Örnek 1: Kara Liste'nin Temel İşlevselliği


    contract TokenWithBlackListAndFee {
      address public owner;
      mapping(address => bool) public BlackList;
      uint256 public BlackListFee;
  
      constructor(uint256 _fee) {
          owner = msg.sender;
          BlackListFee = _fee;
      }
  
      modifier onlyOwner() {
          require(msg.sender == owner, "Only the owner can modify the BlackList");
          _;
      }
  
      function addToBlackListWithFee(address _account) public payable onlyOwner {
          require(msg.value >= BlackListFee, "Insufficient fee");
          BlackList[_account] = true;
      }
  
      function removeFromBlackList(address _account) public onlyOwner {
          BlackList[_account] = false;
      }
  }

Tespit İpuçları: (onlyOwner) gibi erişim modifikatörlerine sahip addToBlackList ve removeFromBlackList gibi işlevleri arayın. Bu modifikatörlerin varlığı, sadece Sahibin kara listeyi değiştirebileceği anlamına gelir.

genel ipuçları

Örnek 2: Ücret Mekanizmalı Kara Liste (Ücretli Kara Liste)


    contract TokenWithBlackListAndFee {
      address public owner;
      mapping(address => bool) public BlackList;
      uint256 public BlackListFee;
  
      constructor(uint256 _fee) {
          owner = msg.sender;
          BlackListFee = _fee;
      }
  
      modifier onlyOwner() {
          require(msg.sender == owner, "Only the owner can modify the BlackList");
          _;
      }
  
      function addToBlackListWithFee(address _account) public payable onlyOwner {
          require(msg.value >= BlackListFee, "Insufficient fee");
          BlackList[_account] = true;
      }
  
      function removeFromBlackList(address _account) public onlyOwner {
          BlackList[_account] = false;
      }
  }

Tespit İpuçları: (msg.value) gibi bir ücret gerektiren addToBlackListWithFee gibi işlevleri tanımlayın. Bu çok tehlikeli bir işarettir.

Örnek 3: Zaman bağımlı koşullarla Kara Liste


    contract TokenWithTimeLock {
      address public owner;
      mapping(address => bool) public BlackList;
      uint256 public BlackListTimeLock;
  
      constructor(uint256 _timeLock) {
          owner = msg.sender;
          BlackListTimeLock = _timeLock;
      }
  
      modifier onlyOwner() {
          require(msg.sender == owner, "Only the owner can modify the BlackList");
          _;
      }
  
      function addToBlackListTimed(address _account) public onlyOwner {
          require(block.timestamp >= BlackListTimeLock, "Time lock not yet expired");
          BlackList[_account] = true;
      }
  
      function removeFromBlackList(address _account) public onlyOwner {
          BlackList[_account] = false;
      }
  }

Tespit İpuçları: (addToBlackListTimed gibi) kara listeye blok zamanına bağlı koşullar uygulayan işlevleri tanımlayın. Bu genellikle gecikmeli veya zamanlanmış kara listeler için kullanılır.

Örnek 4: Olay günlüğü tutulan Kara Liste


contract TokenWithBlackListAndEvents {
  address public owner;
  mapping(address => bool) public BlackList;

  event AddressAddedToBlackList(address indexed account);
  event AddressRemovedFromBlackList(address indexed account);

  constructor() {
      owner = msg.sender;
  }

  modifier onlyOwner() {
      require(msg.sender == owner, "Only the owner can modify the BlackList");
      _;
  }

  function addToBlackList(address _account) public onlyOwner {
      BlackList[_account] = true;
      emit AddressAddedToBlackList(_account);
  }

  function removeFromBlackList(address _account) public onlyOwner {
      BlackList[_account] = false;
      emit AddressRemovedFromBlackList(_account);
  }
}

Seri makalelerimizin devamında, akıllı sözleşmelerdeki dolandırıcılık şemalarına adanmış bir dizi devam ediyoruz. Bugün, Kara Liste işlevlerine sahip akıllı sözleşmeleri analiz edeceğiz (BlackList).

Örnek 5: Beyaz Liste İşlevleriyle Kara Liste (Beyaz Liste)


    contract TokenWithBlackListAndWhitelist {
      address public owner;
      mapping(address => bool) public BlackList;
      mapping(address => bool) public whitelist;
  
      constructor() {
          owner = msg.sender;
      }
  
      modifier onlyOwner() {
          require(msg.sender == owner, "Only the owner can modify the lists");
          _;
      }
  
      function addToBlackList(address _account) public onlyOwner {
          BlackList[_account] = true;
      }
  
      function removeFromBlackList(address _account) public onlyOwner {
          BlackList[_account] = false;
      }
  
      function addToWhitelist(address _account) public onlyOwner {
          whitelist[_account] = true;
      }
  
      function removeFromWhitelist(address _account) public onlyOwner {
          whitelist[_account] = false;
      }
  }

Tespit İpuçları:Beyaz liste işlevselliği: Aynı anda hem kara listeleme hem de beyaz listeleme işlevlerine sahip olan sözleşmeleri dikkate alın. Bu çift işlevsellik, sahibin bilgisi olmadan token transferleri veya diğer dolandırıcılık faaliyetleri için sonuçlar doğurabilir.

ortak ipuçları

Örnek 6: Yönetim Kontrolü ile Kara Liste (Yönetim Kontrolü)


    interface Governance {
      function canBlackList(address _caller) external view returns (bool);
  }
  
  contract TokenWithGovernanceControl {
      address public owner;
      address public governanceContract;
      mapping(address => bool) public BlackList;
  
      constructor(address _governanceContract) {
          owner = msg.sender;
          governanceContract = _governanceContract;
      }
  
      modifier onlyOwnerOrGovernance() {
          require(msg.sender == owner || Governance(governanceContract).canBlackList(msg.sender), "Not authorized");
          _;
      }
  
      function addToBlackListGoverned(address _account) public onlyOwnerOrGovernance {
          BlackList[_account] = true;
      }
  
      function removeFromBlackList(address _account) public onlyOwnerOrGovernance {
          BlackList[_account] = false;
      }
  }

Tespit İpuçları:Dış kontrat yöneticileri tarafından kara listeleme faaliyetlerinin kontrol altında olduğu sözleşmeleri tanımlayın. Bir akıllı sözleşmeyi değerlendirirken, kodu dikkatlice analiz edin, erişim kontrollerine, ödeme mekanizmalarına, zamana bağlı koşullara, olay günlüğüne, dolaşımı önleme korumalarına ve diğer önemli faktörlere dikkat edin. Ayrıca, kara liste işlevlerinin kullanımının projenin özelliklerini ve hedeflerini değerlendirirken hangi sonuçları doğurabileceğini göz önünde bulundurun.

Örnek 7: Acil Durdurma ile Kara Liste (Acil Durdurma)


    contract TokenWithEmergencyStop {
      address public owner;
      bool public emergencyStop;
      mapping(address => bool) public BlackList;
  
      constructor() {
          owner = msg.sender;
      }
  
      modifier onlyOwner() {
          require(msg.sender == owner, "Only the owner can modify the BlackList");
          _;
      }
  
      modifier whenNotPaused() {
          require(!emergencyStop, "Contract is paused");
          _;
      }
  
      function addToBlackList(address _account) public onlyOwner whenNotPaused {
          BlackList[_account] = true;
      }
  
      function removeFromBlackList(address _account) public onlyOwner whenNotPaused {
          BlackList[_account] = false;
      }
  
      function toggleEmergencyStop() public onlyOwner {
          emergencyStop = !emergencyStop;
      }
  }

Tespit İpuçları:Çarpma duraklatma mekanizması, kara liste değişiklikleri dahil bazı işlevleri duraklatabilir.

Örnek 8: Dinamik Koşullar ile Kara Liste (Dinamik Koşullar)


    contract TokenWithDynamicBlackList {
      address public owner;
      mapping(address => bool) public BlackList;
  
      constructor() {
          owner = msg.sender;
      }
  
      modifier onlyOwner() {
          require(msg.sender == owner, "Only the owner can modify the BlackList");
          _;
      }
  
      function conditionallyBlackList(address _account, uint256 _threshold) public onlyOwner {
          require(getBalance(_account) < _threshold, "Account balance exceeds threshold");
          BlackList[_account] = true;
      }
  
      function removeFromBlackList(address _account) public onlyOwner {
          BlackList[_account] = false;
      }
  }

Tespit İpuçları:Kara listeleme genellikle belirli koşullar veya olaylara dayanabilir. Kara Liste'yi etkinleştirmeden önce kontrol edilen işlevleri dikkatlice inceleyin. Bu işlevler, bu örnekte sahibin kara listeye eklenmesi için koşul, hesap bakiyesinin belirtilen eşikten yüksek olmasıdır.

Örnek 9: Zaman Kilidili Kaldırma Kara Liste (Zaman Kilidili Kaldırma)


    contract TokenWithTimeLockedRemoval {
      address public owner;
      mapping(address => bool) public BlackList;
      mapping(address => uint256) public removalTimeLock;
  
      constructor() {
          owner = msg.sender;
      }
  
      modifier onlyOwner() {
          require(msg.sender == owner, "Only the owner can modify the BlackList");
          _;
      }
  
      function addToBlackList(address _account) public onlyOwner {
          BlackList[_account] = true;
          removalTimeLock[_account] = block.timestamp + 7 days;
      }
  
      function removeFromBlackList(address _account) public onlyOwner {
          require(block.timestamp >= removalTimeLock[_account], "Time lock not expired");
          BlackList[_account] = false;
          removalTimeLock[_account] = 0;
      }
  }

Tespit İpuçları:Kara listeleme kaldırmanın zamanla sınırlı olduğu sözleşmeleri tanımlayın. Bu tür durumlarda genellikle, block.timestamp'e dayalı zaman hesaplamaları kullanılır.

Örnek 10: Gaz Limiti ile Kara Liste (Gaz Limiti Koruması)


    contract TokenWithGasLimitProtection {
      address public owner;
      mapping(address => bool) public BlackList;
  
      constructor() {
          owner = msg.sender;
      }
  
      modifier onlyOwner() {
          require(msg.sender == owner, "Only the owner can modify the BlackList");
          _;
      }
  
      modifier limitGas() {
          require(gasleft() >= 100000, "Insufficient gas");
          _;
      }
  
      function addToBlackListGasLimited(address _account) public onlyOwner limitGas {
          BlackList[_account] = true;
      }
  
      function removeFromBlackList(address _account) public onlyOwner {
          BlackList[_account] = false;
      }
  }

Tespit İpuçları:Bazı işlevlerin, kara listeleme gibi belirli işlevlerin gaz sınırlarına tabi olduğu sö zleşmeleri tanımlayın.

ortak ipuçları

Örnek 11: Oracle ile Harici Entegrasyonla Kara Liste (Oracle)


    interface Oracle {
      function isBlackListed(address _account) external view returns (bool);
  }
  
  contract TokenWithOracleIntegration {
      address public owner;
      Oracle public oracle;
  
      constructor(address _oracleAddress) {
          owner = msg.sender;
          oracle = Oracle(_oracleAddress);
      }
  
      modifier onlyOwner() {
          require(msg.sender == owner, "Only the owner can modify the BlackList");
          _;
      }
  
      function addToBlackListByOracle(address _account) public onlyOwner {
          require(oracle.isBlackListed(_account), "Oracle did not confirm BlackListing");
      }
  }

Tespit İpuçları:Dış Oracle'lara kara listeleme kararlarını vermek için bağımlı olan sözleşmelerden kaçının. Bir akıllı sözleşmenin kullandığı Oracle'ların güvenilirliğini ve şeffaflığını her zaman kontrol edin.

Örnek 12: Harici bir kontratla etkileşimli Kara Liste


    interface ExternalContract {
      function addToBlackList(address _account) external;
      function removeFromBlackList(address _account) external;
  }
  
  contract TokenWithExternalInteraction {
      address public owner;
      ExternalContract public externalContract;
  
      constructor(address _externalContract) {
          owner = msg.sender;
          externalContract = ExternalContract(_externalContract);
      }
  
      modifier onlyOwner() {
          require(msg.sender == owner, "Only the owner can modify the BlackList");
          _;
      }
  
      function addToBlackListExternal(address _account) public onlyOwner {
          externalContract.addToBlackList(_account);
      }
  
      function removeFromBlackListExternal(address _account) public onlyOwner {
          externalContract.removeFromBlackList(_account);
      }
  }         

Tespit İpuçları: Kara listeleme kararları alırken, özellikle harici bir kontratın kaynak kodunun doğrulanmadığı durumlarda, harici kontratlarla etkileşen kontratlardan kaçının.

Örnek 13: Dinamik Eşik ile Kara Liste (Dinamik Eşik)


    contract TokenWithDynamicThreshold {
      address public owner;
      mapping(address => bool) public BlackList;
      uint256 public dynamicThreshold;
  
      constructor(uint256 _initialThreshold) {
          owner = msg.sender;
          dynamicThreshold = _initialThreshold;
      }
  
      modifier onlyOwner() {
          require(msg.sender == owner, "Only the owner can modify the BlackList");
          _;
      }
  
      function addToBlackListDynamicThreshold(address _account) public onlyOwner {
          require(getBalance(_account) > dynamicThreshold, "Account balance is below threshold");
          BlackList[_account] = true;
      }
  
      function removeFromBlackList(address _account) public onlyOwner {
          BlackList[_account] = false;
      }
  
      function updateDynamicThreshold(uint256 _newThreshold) public onlyOwner {
          dynamicThreshold = _newThreshold;
      }
  }

Tespit İpuçları: Sahibin zamanla eşik değerini (belirli kontrat yöntemlerini çağırarak) ayarlayabileceği dinamik bir eşikle Kara Liste işlevlerinin bulunduğu kontratları tanımlayın.

Kara Liste işlevlerini tanımlama genel ipuçları (Kara Liste)

  1. Adres listesini değiştiren işlevlere bakın:
    Akıllı kontrat kodunu inceleyerek, adres listesini değiştiren işlevleri (örneğin adresleri ekleme veya kaldırma gibi) tanımlayın.

  2. Yalnızca Sahip erişimini kontrol edin:
    Kara liste işlevleri genellikle yalnızca kontrat sahibinin veya yöneticilerin yürütmesine izin veren erişim kısıtlamalarına sahiptir. onlyOwner modifikatörünün veya benzeri erişim kontrol mekanizmalarının kullanımını arayın.

  3. constructor() inşa işlevini kontrol edin:
    Constructor işlevi, kontratın başlangıç durumunu belirtir. Constructor'da başlangıçta bağlı adresleri veya listeleri kontrol edin, bu, bir kara liste olduğunu gösterebilir.

  4. Modifikatör mantığını inceleyin:
    Yalnızca sahibi türünde modifikatör mantığını analiz ederek, kara listeleme ile ilgili işlevlerin hangi koşullar altında gerçekleştirilebileceğini anlayın.

  5. Anahtar terimleri bulun:
    Akıllı kontrat kodunda "BlackList", "addBlackList", "removeBlackList" veya benzer terimleri arayın (en basit durumlarda bu işlevler benzer isimlere sahiptir, daha karmaşık varyantlarda isimler işlevin özünü gizlemek için yansıtmayabilir).

  6. Belgelendirme ve yorumları kontrol edin:
    Kara listeleme işlevlerinden bahsettiği belgeleri ve kontrat yorumlarını gözden geçirin. Geliştiriciler genellikle belirli işlevlerin, kara listeleme dahil, nasıl kullanılması gerektiği hakkında bilgi sağlar.

  7. Harici çağrıları (çağrı) veya olayları (event) kontrol edin:
    Kara listeye bir adres eklenirken veya kaldırılırken tetiklenebilecek harici çağrıları veya olayları arayın. Bu, kara liste ile ilişkili eylemlere dayanarak kontratın harici bileşenlerle nasıl etkileşime girdiğine dair içgörü sağlayabilir.

  8. Kontrat kodunun güncelleme ve yönetim yeteneklerini değerlendirin:
    Kontratın güncelleme mekanizmalarını veya yönetim yapılarını değerlendirin, böylece kara listeleme mantığının değişikliklerine nasıl hazırlıklı olunacağını anlayın. Güncellemelerin nasıl yönetildiğini anlamak, kara listeleme işlevselliğinde potansiyel değişiklikleri tahmin etmek için kritiktir.

  9. Diğer işlevlerde kara liste mantığını inceleyin:
    Kontrattaki diğer işlevleri, belirli eylemleri gerçekleştirmeden önce bir adresin kara listede olup olmadığını belirlemek için kontrol edin.

  10. Kullanım senaryolarını ve tokenomics'i keşfedin:
    Projenin kullanım senaryolarını ve tokenomics'ini anlayın. Proje kullanıcı adres yönetimiyle ilgili veya kullanıcı haklarına ilişkin işlevlere sahipse, kara listeleme için bir neden olabilir.

  11. Olay günlüğü:
    Kara listeleme eylemleriyle ilişkilendirilmiş bir olay günlüğünün varlığını göz önünde bulundurun. Olaylar, önemli durum değişikliklerini kaydetmek için sıkça kullanılır, kontrat davranışına şeffaflık sağlar.

  12. Gaz Limiti Koruması:
    Gaz limit koruması olan işlevlere dikkat edin. Bu, bir güvenlik özelliğinin uygulanması olabilirken, bazı kritik kontrat işlevlerinin kontrol edilmesi veya sınırlandırılması için de kullanılabilir.

  13. Zaman bağımlı koşullar:
    Kara listeleme ile ilgili zaman bağımlı koşulları kontrol edin. Örneğin, kontratlar silme veya diğer zaman duyarlı mekanizmalar üzerinde zaman kilidi uygulayabilir.

  14. Bağımsız denetimler:
    Saygın denetim firmaları tarafından bağımsız olarak denetlenmiş akıllı kontratları arayın. Denetim raporları, kontratın güvenliği ve işlevselliği hakkında içgörü sağlar.

  15. Topluluk geri bildirimini inceleyin:
    Kara liste işlevlerinin varlığı ve kullanımıyla ilgili tartışmalar için topluluk forumlarını, sosyal medyayı veya resmi iletişim kanallarını kontrol edin. Kullanıcılar değerli içgörüler ve endişeler sağlayabilir.

ortak ipuçları

Akıllı kontratları analiz ederken, özelliklerini ve işlevselliğini tam olarak anlamanız kritiktir. Bu ipuçları, kara liste işlevlerinin varlığını belirlemenize ve kontratla etkileşimde bulunma konusunda bilinçli kararlar vermenize yardımcı olacaktır.

Mümkünse, kurumsal standartlara uygun kontratları seçin (örneğin ERC-20). Bu standartlar genellikle incelenir ve güvenilirlikleriyle tanınırlar.

 

Umarız bu örnekler, akıllı kontratlarda Kara Liste şemalarını daha iyi anlamanıza yardımcı olmuştur.

 

Tüm blockchain bilgileri açıktır (tabii ki kontratın kaynak kodu doğrulanmışsa), bu bilgiyle donatılarak akıllı kontratları bağımsız olarak inceleyebilir ve çeşitli dolandırıcılık şemalarını tanımlayabilirsiniz.

Ancak, biz bunu zaten sizin için yaptık! Premium abonelik için kaydolun ve akıllı kontrat işlevlerindeki özel filtreler ve güncel analizlere erişim sağlayın. Karlı tokenlara başarıyla yatırım yapma şansınızı artırın.

Saygılarımızla, Lotus Market ekibi.

All posts

Connect to a wallet

Metamask