Přeskočit na hlavní obsah

Kontrolní seznam zabezpečení chytrých kontraktů

chytré kontrakty
bezpečnost
solidity
Středně pokročilý
Trailofbits
7. září 2020
3 minuta čtení

Kontrolní seznam pro vývoj chytrých kontraktů

Zde je obecný postup, který doporučujeme dodržovat při psaní vašich chytrých kontraktů.

Zkontrolujte, zda se nevyskytují známé bezpečnostní problémy:

  • Zkontrolujte své kontrakty pomocí nástroje Slither (opens in a new tab). Obsahuje více než 40 vestavěných detektorů pro běžné zranitelnosti. Spouštějte jej při každém odevzdání nového kódu a zajistěte, aby měl čistý výstup (nebo použijte režim triage k potlačení určitých problémů).
  • Zkontrolujte své kontrakty pomocí nástroje Crytic (opens in a new tab). Kontroluje 50 problémů, které Slither nekontroluje. Crytic může také pomoci vašemu týmu udržet si vzájemný přehled, protože snadno odhaluje bezpečnostní problémy v pull requestech na GitHubu.

Zvažte speciální vlastnosti svého kontraktu:

Vizuálně zkontrolujte kritické bezpečnostní prvky vašeho kódu:

Zdokumentujte kritické bezpečnostní vlastnosti a použijte automatizované generátory testů k jejich vyhodnocení:

  • Naučte se, jak dokumentovat bezpečnostní vlastnosti svého kódu. Zpočátku to není snadné, ale je to nejdůležitější činnost pro dosažení dobrého výsledku. Je to také předpokladem pro použití jakýchkoli pokročilých technik v tomto návodu.
  • Definujte bezpečnostní vlastnosti v jazyce Solidity pro použití s nástroji Echidna (opens in a new tab) a Manticore (opens in a new tab). Zaměřte se na váš stavový automat, řízení přístupu, aritmetické operace, externí interakce a soulad se standardy.
  • Definujte bezpečnostní vlastnosti pomocí Python API nástroje Slither. Zaměřte se na dědičnost, závislosti proměnných, řízení přístupu a další strukturální problémy.
  • Spouštějte své testy vlastností při každém commitu pomocí nástroje Crytic (opens in a new tab). Crytic dokáže zpracovat a vyhodnotit testy bezpečnostních vlastností, takže všichni ve vašem týmu mohou na GitHubu snadno vidět, že procházejí. Neúspěšné testy mohou zablokovat commity.

Nakonec si dejte pozor na problémy, které automatizované nástroje nedokážou snadno najít:

  • Nedostatek soukromí: všichni ostatní mohou vidět vaše transakce, zatímco jsou zařazeny v poolu
  • Front-running transakce
  • Kryptografické operace
  • Rizikové interakce s externími komponenty DeFi

Požádejte o pomoc

Konzultační hodiny k Ethereu (opens in a new tab) se konají každé úterý odpoledne. Tato hodinová, individuální sezení jsou příležitostí zeptat se nás na jakékoli otázky, které máte ohledně bezpečnosti, řešit problémy s používáním našich nástrojů a získat zpětnou vazbu od odborníků na váš současný přístup. Pomůžeme vám projít tímto průvodcem.

Připojte se na náš Slack: Empire Hacking (opens in a new tab). Jsme vždy k dispozici na kanálech #crytic a #ethereum, pokud máte jakékoli dotazy.

Stránka naposledy aktualizována: 7. února 2025

Byl tento tutoriál užitečný?