Powrót

3. Poziom zaawansowany

Ukończono: 0%
Kroki: 0/0
  1. 1. Co to jest Taproot?
  2. 2. Mosty blockchain – co to jest?
  3. 3. Czym jest Ethereum Plasma?
  4. 4. Co to jest Ethereum Casper?
  5. 5. Co to jest dowód Zk-SNARK i Zk-STARK
  6. 6. Co to jest Selfish Minning?
  7. 7. Czym jest spoofing na rynku kryptowalut?
  8. 8. Podpisy Schnorra - co to jest?
  9. 9. MimbleWimble
  10. 10. Cyfrowe prawo własności
  11. 11. Czym są ETFy?
  12. 12. Jak sprawdzić projekt kryptowalutowy – czyli tokenomia kryptowalut
  13. 13. Czym jest atak 51% na blockchain?
  14. 14. Czym jest i jak działa DAO? 
  15. 15. Zero-Knowledge Proof- protokół, który szanuje prywatność
  16. 16. Co to jest EOSREX?
  17. 17. Co to jest Proof of Elapsed Time- dowód upływającego czasu (PoET)?
  18. 18. Mirror Protocol – co to jest?
  19. 19. Aktywa syntetyczne
  20. 20. Jak stworzyć własny NFT?
  21. 21. Czym są likwidacje DeFI?
  22. 22. Nowy system tożsamości - Polygon ID
  23. 23. Fundacja Ethereum i protokół Scroll - czym są?
  24. 24. Czym jest bizantyjska tolerancja błędów?
  25. 25. Czym jest skalowalność technologii blockchain?
  26. 26. Interchain Security- nowy protokół Cosmos (Atom)
  27. 27. Coin Mixing vs. Coin Join - definicja, możliwości i zagrożenia
  28. 28. Czym jest Ethereum Virtual Machine MEV?
  29. 29. Co to są tokeny SoulBound SBD?
  30. 30. Co to jest Lido?
  31. 31. Czym są Threshold Signatures i jak działają?
  32. 32. Technologia blockchain i cyberataki
  33. 33. Skrypt Bitcoina - czym jest i co powinieneś wiedzieć na ten temat
  34. 34. Czym jest zkEVM i jakie są jego podstawowe cechy?
  35. 35. Czy poufne transakcje na blockchainie istnieją? Co to jest Confidential Transaction?
  36. 36. Algorytmiczne stablecoiny – wszystko, co powinieneś o nich wiedzieć
  37. 37. Polygon Zk Rollups - co powinieneś wiedzieć na jego temat?
  38. 38. Co to jest Infura Web3?
  39. 39. Mantle – skalowalność Ethereum L2 – jak działa?
  40. 40. Czym jest NEAR Rainbow Bridge?
  41. 41. Liquid Staking Ethereum i tokeny LSD. Co musisz wiedzieć na ten temat?
  42. 42. 10 najlepszych blockchainowych wyroczni. Jak działają? Czym się różnią?
  43. 43. Czym jest Web3.js i Ether.js? Jakie są między nimi podstawowe różnice?
  44. 44. Czym jest StarkWare i rekurencyjne dowody ważności
  45. 45. Quant Network: Skalowalność przyszłości
  46. 46. Polygon zkEVM - wszystko, co powinieneś wiedzieć
  47. 47. Co to jest Optimism (OP) i jak działają jego rollupy?
  48. 48. Czym są węzły RPC node i jak działają?
  49. 49. SEI Network: wszystko, co musisz wiedzieć o rozwiązaniu warstwy 1 dla DeFi
  50. 50. Rodzaje mechanizmów konsensusu Proof-of-Stake: DPoS, LPoS oraz BPoS
  51. 51. Bedrock: krzywa epileptyczna, która zapewnia bezpieczeństwo!
  52. 52. Czym jest Tendermint i jak działa?
  53. 53. Pantos: jak rozwiązać problem transferu tokenów miedzy blockchainami?
  54. 54. Czym jest szyfrowanie asymetryczne?
  55. 55. Funkcja Base-58 w kryptowalutach
  56. 56. Czym jest i jak działa protokół Nostr?
  57. 57. Czym jest i jak działa most XDAI Bridge?
  58. 58. Porównanie Solidity i Rust: Wybór języka programowania w ekosystemie blockchain.
  59. 59. Czym jest Real-Time Operating System (RTOS)?
  60. 60. Czym jest i jak działa Rinkeby Testnet Ethereum?
  61. 61. Czym jest szyfrowanie probabilistyczne?
  62. 62. Czym jest Pinata w Web 3? Wyjaśniamy!
  63. 63. Czym jest EIP-4337? Czy Ethereum Account Abstraction zmieni Web3 na zawsze?
  64. 64. Czym są audyty inteligentnych kontraktów? Jakie firmy się nim zajmują?
  65. 65. Jak działa portfel AirGapped?
  66. 66. Czym jest proto-danksharding (EIP-4844) na Ethereum?
  67. 67. Czym jest i jak działa zdecentralizowana pamięć masowa?
  68. 68. Jak odzyskać kryptowaluty wysłane na niewłaściwy adres lub sieć? Praktyczny poradnik!
  69. 69. Portfel MPC i Obliczenia Wielostronne: Innowacyjna technologia dla prywatności i bezpieczeństwa.
  70. 70. Podpis progowy w kryptografii: zaawansowana technika podpisywania!
  71. 71. Adres Vanity w kryptowalutach: czym jest i jaka jest jego charakterystyka?
  72. 72. Atak Ponownego Wejścia (Reentrancy Attack) na inteligentnych kontraktach: zagrożenie dla bezpieczeństwa blockchain!
  73. 73. Slither: statyczny analizator dla smart kontraktów!
  74. 74. Sandwich Attack w DeFi: wyjaśnienie i zagrożenia!
  75. 75. Blockchain RPC dla Web3: Kluczowa technologia w świecie zdecentralizowanych finansów!
  76. 76. Re-staking: Korzyści z ponownego delegowania środków w stakingu!
  77. 77. Base: Ewolucja transakcji kryptowalutowych dzięki rozwiązaniu warstwy 2 od Coinbase
  78. 78. IPFS: Nowa era zdecentralizowanego przechowywania danych
  79. 79. Typowe luki i zabezpieczenia mostów w technologii blockchain
  80. 80. JumpNet – nowy sidechain Ethereum
Lekcja 73 z 80

73. Slither: statyczny analizator dla smart kontraktów!

Smart kontrakty stały się kluczowym elementem ekosystemu kryptowalut i blockchain. Jednakże, z uwagi na ich złożoność, inteligentne kontrakty są podatne na błędy i ryzyka związane z bezpieczeństwem.

Dlatego też narzędzia, takie jak Slither, są nieocenione w zapewnianiu bezpieczeństwa i niezawodności dla smart kontraktów. W dzisiejszej lekcji przyjrzymy się dokładniej, jak działa Slither oraz jakie korzyści niesie ze sobą dla programistów smart kontraktów.

Czym jest Slither? Definicja statycznego analizatora bezpieczeństwa 

Slither to narzędzie do analizy statycznej bezpieczeństwa inteligentnych kontraktów, które zostało opracowane w 2018 roku przez firmę Trial of Bits.

Według oficjalnej strony, Slither jest frameworkiem do statycznej analizy języka Solidity. Napisany w języku Python 3, uruchamia zestaw detektorów luk w zabezpieczeniach, dostarczając również szczegółowych informacji o danym kontrakcie i oferując interfejs API, co ułatwia prowadzenie dogłębnych analiz.

Dzięki Slitherowi programiści mogą łatwo wykrywać luki w zabezpieczeniach, poprawiać kod i szybciej tworzyć prototypy niestandardowych analiz.

Obecnie Slither znajduje zastosowanie w następujących zadaniach:

  1. Automatyczne wykrywanie luk w zabezpieczeniach bez potrzeby interwencji użytkownika.
  2. Automatyczne wykrywanie optymalizacji kodu w danym smart kontrakcie, które są pomijane przez kompilatory.
  3. Szczegółowe podsumowanie informacji o analizowanych kontraktach, ułatwiające dogłębną analizę ich kodu.
  4. Umożliwienie użytkownikom interakcji z Slitherem poprzez jego API.

Slither jest pierwszym otwartoźródłowym frameworkiem przeznaczonym do analizy statycznej języka Solidity.

Czym jest analiza statyczna? 

Analiza statyczna jest jedną z metod analizy kodu, której celem jest badanie kodu źródłowego bez jego faktycznego wykonania. Jej zadaniem jest identyfikacja potencjalnych problemów i podatności na zagrożenia poprzez analizę struktury, składni i logiki kodu.

W przeciwieństwie do analizy dynamicznej, analiza statyczna nie wpływa na kod ani jego wykonanie. Zamiast tego zapewnia wgląd w potencjalne luki w kodzie przed jego wdrożeniem.

Jak działa Slither? 

Oprogramowanie działa jako integracja rdzenia Slither i systemu do wykrywania luk w bezpieczeństwie inteligentnych kontraktów. W praktyce operuje ono w kilku krokach, co pozwala na uzyskanie dokładnej analizy kodu źródłowego danego smart kontraktu. Oto one:

  1. Analiza AST (Abstract Syntax Tree): Slither rozpoczyna analizę kodu źródłowego danego smart kontraktu poprzez utworzenie jego drzewa składniowego (AST). AST to struktura danych, która reprezentuje kod źródłowy danego smart kontraktu, umożliwiając jego analizę oraz zrozumienie zależności między poszczególnymi elementami.
  2. Analiza reguł: Slither wykorzystuje zestaw predefiniowanych reguł analizy, które są uruchamiane na AST kodu źródłowego. Te reguły obejmują różne aspekty analizy, takie jak identyfikacja potencjalnych błędów, konwencje kodowania, a także odnajdywanie zmiennych i funkcji.
  3. Wykrywanie ryzyk: Slither identyfikuje potencjalne błędy i ryzyka związane z kodem źródłowym smart kontraktu. Mogą to być zagrożenia związane z bezpieczeństwem, takie jak podatności na ataki, oraz ogólne problemy związane z wydajnością i konstrukcją kodu.
  4. Generowanie raportu: Po zakończeniu analizy Slither generuje raport zawierający wyniki analizy wraz z opisem potencjalnych błędów oraz sugestiami dotyczącymi możliwych rozwiązań. Ten raport pomaga programistom zrozumieć, gdzie leżą potencjalne zagrożenia i jak można je rozwiązać.
  5. Poprawki i testy: Na podstawie raportu Slither, programiści mogą wprowadzić poprawki do kodu danego smart kontraktu. Po dokonaniu zmian zaleca się ponowne przeprowadzenie analizy w celu zweryfikowania skuteczności wprowadzonych poprawek i upewnienia się, że kod jest wolny od znanych zagrożeń.

Jak korzystać z oprogramowania Slither? 

Jeśli chcesz przeskanować swoje inteligentne kontrakty pod kątem luk w zabezpieczeniach, przejdź do katalogu zawierającego te kontrakty, a następnie uruchom polecenie „slither”.

Po wykonaniu tego polecenia oprogramowanie przeprowadzi analizę statyczną kodu wszystkich plików inteligentnych kontraktów w danym katalogu. Slither wygeneruje raport zawierający zidentyfikowane przez niego luki w zabezpieczeniach oraz sugestie dotyczące optymalizacji kodu.

Raport wygenerowany przez Slither jest cennym źródłem informacji dla programistów. Dzięki niemu można podjąć odpowiednie działania w celu minimalizacji potencjalnych zagrożeń. Należy jednak pamiętać, że choć analiza Slither jest dokładna, zaleca się dodatkowo ręczne przeglądnięcie kodu dla zwiększenia bezpieczeństwa.

Korzystanie z analizy Slither stanowi istotny krok w procesie zabezpieczania inteligentnych kontraktów. Aby jednak zapewnić im pełne zabezpieczenie, zaleca się podejście bardziej kompleksowe, obejmujące regularne audyty, programy bug bounty oraz aktualizacje.

Jaką funkcję pełni Slither w rozwoju inteligentnych kontraktów? 

To niezastąpione narzędzie w procesie tworzenia inteligentnych kontraktów. Dzięki Slitherowi, deweloperzy mogą wcześnie wykryć i wyeliminować luki w zabezpieczeniach danego kontraktu.

Ciekawostka: Podczas audytu inteligentnych kontraktów w danej firmie zaleca się rozpoczęcie od wykrycia wszystkich luk w zabezpieczeniach za pomocą Slithera.

Korzyści z korzystania z Slither 

Przede wszystkim, Slither zapewnia bezpieczeństwo. Pomaga w identyfikacji potencjalnych podatności danego kontraktu na ataki i błędy związane z bezpieczeństwem, umożliwiając ich naprawę przed wdrożeniem smart kontraktu.

Drugą korzyścią jest poprawa jakości kodu. Analiza przeprowadzona za pomocą Slithera wspomaga poprawę jakości kodu źródłowego poprzez wskazanie konwencji kodowania i potencjalnych optymalizacji.

Slither oszczędza czas. Wczesna analiza kodu umożliwia rozwiązanie problemów już na wczesnym etapie procesu deweloperskiego, co pozwala zaoszczędzić czas i zasoby przeznaczone na poprawianie błędów już na etapie tworzenia inteligentnych kontraktów.

Oprogramowanie to także narzędzie usprawniające audyty. Dla osób odpowiedzialnych za te funkcje, Slither ułatwia analizę kodu i identyfikację potencjalnych zagrożeń.

Podsumowanie

Slither to potężne narzędzie analizy statycznej dla smart kontraktów. Działa poprzez skrupulatną analizę kodu źródłowego, wykrywając potencjalne błędy i ryzyka, a następnie generując szczegółowy raport. Korzystanie z Slithera jest nieocenioną pomocą w zapewnieniu bezpieczeństwa i niezawodności smart kontraktów, co stanowi kluczowy aspekt ekosystemu blockchain.

Programiści oraz audytorzy powinni zdecydowanie rozważyć wykorzystanie tego narzędzia w swojej pracy, aby zminimalizować ryzyko i zagwarantować wysoką jakość swoich projektów.

Uzupełnij dzisiejszą lekcję!

  1. Inteligentne kontrakty (Smart Contracts) – czym są?
  2. Czym są audyty inteligentnych kontraktów?