Biblioteki inteligentnych kontraktów
Strona ostatnio zaktualizowana: 14 lutego 2026
Nie musisz pisać każdego inteligentnego kontraktu w swoim projekcie od zera. Istnieje wiele bibliotek open source inteligentnych kontraktów. Można w nich znaleźć elementy do utworzenia Twojego projektu, więc nie musisz wymyślać koła od nowa.
Wymagania wstępne
Przed przejściem do bibliotek inteligentnych kontraktów warto dobrze poznać strukturę inteligentnego kontraktu. Przejdź do anatomii inteligentnych kontraktów, jeśli jeszcze tego nie zrobiłeś.
Co zawiera biblioteka
W bibliotekach inteligentnych kontraktów zwykle można znaleźć dwa rodzaje elementów konstrukcyjnych: zachowania wielokrotnego użytku, które można dodać do swoich kontraktów, oraz implementacje różnych standardów.
Zachowania
Pisząc inteligentne kontrakty, jest duża szansa, że będziesz wielokrotnie pisać podobne wzorce, takie jak przypisywanie adresu administratora do wykonywania chronionych operacji w kontrakcie lub dodawanie przycisku awaryjnej pauzy na wypadek nieoczekiwanego problemu.
Biblioteki inteligentnych kontraktów zwykle zapewniają implementacje tych zachowań wielokrotnego użytku jako bibliotekiopens in a new tab lub poprzez dziedziczenieopens in a new tab w Solidity.
Jako przykład poniżej przedstawiono uproszczoną wersję kontraktu Ownableopens in a new tab z biblioteki kontraktów OpenZeppelinopens in a new tab, który wyznacza adres jako właściciela kontraktu i udostępnia modyfikator ograniczający dostęp do metody tylko temu właścicielowi.
1contract Ownable {2 address public owner;34 constructor() internal {5 owner = msg.sender;6 }78 modifier onlyOwner() {9 require(owner == msg.sender, "Ownable: caller is not the owner");10 _;11 }12}Pokaż wszystkoAby w kontrakcie użyć takiego bloku konstrukcyjnego, musisz go najpierw zaimportować, a następnie rozszerzyć na własny kontrakt. Pozwoli to na użycie modyfikatora dostarczonego przez bazowy kontrakt Ownable w celu zabezpieczenia własnych funkcji.
1import ".../Ownable.sol"; // ścieżka do zaimportowanego kontraktu23contract MyContract is Ownable {4 // The following function can only be called by the owner5 function secured() onlyOwner public {6 msg.sender.transfer(1 ether);7 }8}Innym popularnym przykładem jest SafeMathopens in a new tab lub DsMathopens in a new tab. Są to biblioteki (w przeciwieństwie do kontraktów podstawowych), które zapewniają niedostarczane przez język funkcje arytmetyczne z kontrolą przepełnienia. Dobrą praktyką jest używanie którejkolwiek z tych bibliotek zamiast rodzimych operacji arytmetycznych w celu ochrony kontraktu przed przepełnieniami, co może mieć katastrofalne skutki!
Standardy
Aby ułatwić komponowalność i interoperacyjność, społeczność Ethereum zdefiniowała kilka standardów w postaci ERC. Więcej na ich temat można przeczytać w sekcji standardy.
W przypadku uwzględniania ERC w swoich kontraktach lepiej poszukać implementacji standardu niż próbować wdrożyć własną. Wiele bibliotek kontraktów inteligentnych zawiera implementacje dla najpopularniejszych ERC. Na przykład wszechobecny standard wymiennych tokenów ERC20 można znaleźć w HQ20opens in a new tab, DappSysopens in a new tab i OpenZeppelinopens in a new tab. Ponadto niektóre ERC zapewniają również implementacje kanoniczne w ramach samego ERC.
Warto wspomnieć, że niektóre ERC nie są samodzielne, ale stanowią uzupełnienie innych ERC. Na przykład ERC2612opens in a new tab dodaje rozszerzenie do ERC20 w celu poprawy jego użyteczności.
Jak dodać bibliotekę
Zawsze zapoznaj się z dokumentacją dołączanej biblioteki, aby uzyskać szczegółowe instrukcje, jak uwzględnić ją w swoim projekcie. Wiele bibliotek kontraktów Solidity jest spakowanych przy użyciu npm, więc można je po prostu zainstalować za pomocą npm install. Większość narzędzi do kompilowania kontraktów będzie szukać bibliotek inteligentnych kontraktów w node_modules, więc możesz wykonać następujące czynności:
1// to spowoduje wczytanie biblioteki @openzeppelin/contracts library z node_modules2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";34contract MyNFT is ERC721 {5 constructor() ERC721("MyNFT", "MNFT") public { }6}Niezależnie od używanej metody, dołączając bibliotekę, zawsze zwracaj uwagę na wersję języka. Na przykład, nie możesz użyć biblioteki dla Solidity 0.6, jeśli piszesz swoje kontrakty w Solidity 0.5.
Kiedy używać
Korzystanie z biblioteki inteligentnych kontraktów w projekcie ma kilka zalet. Przede wszystkim oszczędza czas, dostarczając gotowe do użycia bloki konstrukcyjne, które możesz dołączyć do swojego systemu, zamiast samodzielnie je kodować.
Dużym plusem jest także bezpieczeństwo. Biblioteki inteligentnych kontraktów typu open source są również często poddawane szczegółowej analizie. Biorąc pod uwagę, że wiele projektów od nich zależy, społeczność ma silną motywację do ciągłego ich sprawdzania. Znacznie częściej można znaleźć błędy w kodzie aplikacji niż w bibliotekach kontraktów wielokrotnego użytku. Niektóre biblioteki przechodzą również zewnętrzne audytyopens in a new tab w celu zapewnienia dodatkowego bezpieczeństwa.
Jednak korzystanie z bibliotek inteligentnych kontraktów niesie ze sobą ryzyko włączenia do projektu kodu, którego nie znasz. Zaimportowanie kontraktu i włączenie go bezpośrednio do projektu jest kuszące, ale bez dobrego zrozumienia tego, co robi ten kontrakt, możesz nieumyślnie wprowadzić problem do swojego systemu z powodu nieoczekiwanego zachowania. Zawsze upewnij się, że przeczytałeś dokumentację importowanego kodu, a następnie przejrzyj sam kod przed włączeniem go do swojego projektu!
Na koniec, podejmując decyzję o włączeniu biblioteki, weź pod uwagę jej ogólne wykorzystanie. Biblioteka przyjęta powszechnie ma zalety wynikające z większej społeczności i większej liczby osób wyszukujących w niej problemy. Bezpieczeństwo powinno być Twoim głównym celem podczas tworzenia za pomocą inteligentnych kontraktów!
Powiązane narzędzia
OpenZeppelin Contracts – najpopularniejsza biblioteka do bezpiecznego tworzenia inteligentnych kontraktów.
DappSys – bezpieczne, proste i elastyczne elementy konstrukcyjne dla inteligentnych kontraktów.
HQ20 – projekt Solidity z kontraktami, bibliotekami i przykładami, które pomogą Ci zbudować w pełni funkcjonalne, zdecentralizowane aplikacje dla realnego świata.
thirdweb Solidity SDK – zapewnia narzędzia potrzebne do wydajnego tworzenia niestandardowych inteligentnych kontraktów
Powiązane samouczki
- Zagadnienia bezpieczeństwa dla deweloperów Ethereum – samouczek na temat zagadnień bezpieczeństwa podczas tworzenia inteligentnych kontraktów, z uwzględnieniem korzystania z bibliotek.
- Zrozumienie inteligentnego kontraktu tokena ERC-20 – samouczek na temat standardu ERC20, udostępniany przez wiele bibliotek.
Dalsza lektura
Znasz jakieś zasoby społeczności, które Ci pomogły? Edytuj tę stronę i dodaj je!