Przejdź do głównej treści
Change page

Biblioteki API JavaScript

Aby aplikacja internetowa mogła wchodzić w interakcję z blockchainem Ethereum (tj. odczytywać dane z blockchaina i/lub wysyłać transakcje do sieci), musi połączyć się z węzłem Ethereum.

W tym celu każdy klient Ethereum implementuje specyfikację JSON-RPC, dzięki czemu istnieje jednolity zestaw metod, na których mogą polegać aplikacje.

Jeśli chcesz użyć języka JavaScript do połączenia z węzłem Ethereum, możesz użyć czystego JavaScriptu (vanilla JavaScript), ale w ekosystemie istnieje kilka wygodnych bibliotek, które znacznie to ułatwiają. Dzięki tym bibliotekom programiści mogą pisać intuicyjne, jednowierszowe metody do inicjowania żądań JSON-RPC (wewnętrznie), które wchodzą w interakcję z Ethereum.

Należy pamiętać, że od czasu The Merge do uruchomienia węzła wymagane są dwa połączone elementy oprogramowania Ethereum – klient warstwy wykonawczej i klient konsensusu. Upewnij się, że Twój węzeł zawiera zarówno klienta warstwy wykonawczej, jak i klienta konsensusu. Jeśli Twój węzeł nie znajduje się na komputerze lokalnym (np. działa na instancji AWS), odpowiednio zaktualizuj adresy IP w samouczku. Aby uzyskać więcej informacji, odwiedź naszą stronę o uruchamianiu węzła.

Wymagania wstępne

Oprócz znajomości języka JavaScript, pomocne może być zrozumienie stosu Ethereum oraz klientów Ethereum.

Dlaczego warto używać biblioteki?

Te biblioteki ukrywają znaczną część złożoności bezpośredniej interakcji z węzłem Ethereum. Zapewniają również funkcje narzędziowe (np. konwersję ETH na gwei), dzięki czemu jako programista możesz spędzać mniej czasu na radzeniu sobie z zawiłościami klientów Ethereum, a więcej na skupieniu się na unikalnej funkcjonalności swojej aplikacji.

Funkcje bibliotek

Łączenie z węzłami Ethereum

Korzystając z dostawców (providers), biblioteki te pozwalają na połączenie z Ethereum i odczytywanie jego danych, niezależnie od tego, czy odbywa się to przez JSON-RPC, Infura, Etherscan, Alchemy czy MetaMask.

Ostrzeżenie: Biblioteka Web3.js została zarchiwizowana 4 marca 2025 r. Przeczytaj ogłoszenie (opens in a new tab). Rozważ użycie alternatywnych bibliotek, takich jak Ethers.js (opens in a new tab) lub Viem (opens in a new tab) w nowych projektach.

Przykład Ethers

// BrowserProvider opakowuje standardowego dostawcę Web3, którym jest
// to, co MetaMask wstrzykuje jako window.ethereum do każdej strony
const provider = new ethers.BrowserProvider(window.ethereum)

// Wtyczka MetaMask pozwala również na podpisywanie transakcji, aby
// wysyłać ether i płacić za zmianę stanu w blockchain.
// Do tego potrzebujemy obiektu podpisującego konta...
const signer = provider.getSigner()

Przykład Web3.js

Po skonfigurowaniu będziesz w stanie odpytywać blockchain o:

  • numery bloków
  • szacunki gazu
  • zdarzenia inteligentnych kontraktów
  • identyfikator sieci
  • i więcej...

Funkcjonalność portfela

Te biblioteki zapewniają funkcjonalność tworzenia portfeli, zarządzania kluczami i podpisywania transakcji.

Oto przykład z Ethers

Przeczytaj pełną dokumentację (opens in a new tab)

Po skonfigurowaniu będziesz w stanie:

  • tworzyć konta
  • wysyłać transakcje
  • podpisywać transakcje
  • i więcej...

Interakcja z funkcjami inteligentnych kontraktów

Biblioteki klienckie JavaScript pozwalają Twojej aplikacji na wywoływanie funkcji inteligentnych kontraktów poprzez odczytanie binarnego interfejsu aplikacji (ABI) skompilowanego kontraktu.

ABI w zasadzie wyjaśnia funkcje kontraktu w formacie JSON i pozwala na używanie go jak zwykłego obiektu JavaScript.

Zatem następujący kontrakt w języku Solidity:

Dałby w wyniku następujący plik JSON:

Oznacza to, że możesz:

  • Wysłać transakcję do inteligentnego kontraktu i wykonać jego metodę
  • Wywołać oszacowanie gazu, jakie zajmie wykonanie metody w EVM
  • Wdrożyć kontrakt
  • I więcej...

Funkcje narzędziowe

Funkcje narzędziowe zapewniają przydatne skróty, które nieco ułatwiają budowanie z Ethereum.

Wartości ETH są domyślnie wyrażane w wei. 1 ETH = 1 000 000 000 000 000 000 wei – oznacza to, że masz do czynienia z wieloma liczbami! web3.utils.toWei konwertuje ether na wei za Ciebie.

A w Ethers wygląda to tak:

// Pobierz saldo konta (po adresie lub nazwie ENS)
balance = await provider.getBalance("ethers.eth")
// { BigNumber: "2337132817842795605" }

// Często będziesz musiał sformatować dane wyjściowe dla użytkownika,
// który woli widzieć wartości w etherze (zamiast w wei)
ethers.utils.formatEther(balance)
// '2.337132817842795605'

Dostępne biblioteki

Web3.js - API JavaScript dla Ethereum.

Ethers.js - Kompletna implementacja portfela Ethereum i narzędzia w JavaScript i TypeScript.

The Graph - Protokół do indeksowania danych Ethereum i IPFS oraz odpytywania ich za pomocą GraphQL.

Alchemy SDK - Wrapper dla Ethers.js z ulepszonymi API.

Viem - Interfejs TypeScript dla Ethereum.

Codex - Wzbogacone API danych blockchain w czasie rzeczywistym dla dziesiątek łańcuchów.

Drift - Metabiblioteka TypeScript z wbudowanym buforowaniem, hookami i mockami testowymi.

Dalsza lektura

Znasz zasób społeczności, który Ci pomógł? Edytuj tę stronę i dodaj go!

Samouczki: API JavaScript i WebSockets na Ethereum

  • Korzystanie z WebSockets – Jak używać WebSockets z Alchemy, aby subskrybować zdarzenia Ethereum i wykonywać żądania JSON-RPC w czasie rzeczywistym.