JavaScript (JS) to język programowania, w którym działa interaktywna część stron internetowych. Wykonuje go każda przeglądarka, a dzięki środowisku Node.js także serwery. W świecie kryptowalut JavaScript jest językiem „frontu”: to w nim napisane są interfejsy giełd zdecentralizowanych, rozszerzenia portfeli i większość bibliotek, przez które aplikacje rozmawiają z blockchainem.
JavaScript nie ma nic wspólnego z Javą poza podobieństwem nazwy. Jego rozszerzeniem jest TypeScript, który dodaje statyczne typy i dominuje w nowych projektach Web3.
Gdzie JavaScript spotyka krypto
| Obszar | Rola JavaScriptu |
|---|---|
| Portfele w przeglądarce | MetaMask i podobne rozszerzenia są napisane w JS/TypeScript i wstrzykują do strony obiekt dostawcy, przez który dApp prosi o podpis. |
| Interfejsy dApps | Strony DEX-ów, protokołów pożyczkowych i marketplace’ów NFT to aplikacje JS (najczęściej React). |
| Biblioteki blockchain | ethers.js i viem do sieci EVM, @solana/web3.js dla Solany – odczyt sald, budowa i wysyłka transakcji. |
| Narzędzia deweloperskie | Hardhat do testów i wdrażania smart kontraktów pisanych w Solidity. |
| Boty i skrypty | Node.js obsługuje API giełd i websockety z danymi rynkowymi. |
Sam smart kontrakt na Ethereum nie jest pisany w JavaScripcie, tylko w Solidity lub Vyperze. JS jest warstwą, która z kontraktem rozmawia.
Biblioteki web3 – co się zmieniło
Przez lata standardem była biblioteka web3.js. Jej opiekun, firma ChainSafe, zakończył jej rozwój w marcu 2025 roku i zalecił przejście na inne rozwiązania. Nowe projekty korzystają głównie z ethers.js (wersja 6) lub viem, często w parze z biblioteką wagmi dla Reacta. Jeśli trafisz na tutorial oparty na web3.js, traktuj go jako materiał historyczny.
Podobnie z Lisk SDK – frameworkiem do budowy własnych blockchainów w JavaScripcie. Lisk w 2024 roku przeszedł na model warstwy L2 w ekosystemie Optimism, więc jego SDK nie jest już głównym kierunkiem rozwoju projektu.
Przykład: dlaczego kwoty tokenów to BigInt
Zwykła liczba w JavaScripcie (typ Number) jest dokładna tylko do 9 007 199 254 740 991, czyli 253 − 1. Tymczasem blockchain zapisuje kwoty w najmniejszych jednostkach.
| Kwota | Miejsca po przecinku | Zapis w jednostkach bazowych | Mieści się w Number? |
|---|---|---|---|
| 1 500,25 USDC | 6 | 1 500 250 000 | tak |
| 12,5 ETH | 18 | 12 500 000 000 000 000 000 wei | nie |
Załóżmy, że skrypt liczy kwotę do wysłania na typie Number. Dla 12,5 ETH wynik może zostać zaokrąglony, a transakcja wyśle inną kwotę niż zamierzona lub zostanie odrzucona. Dlatego ethers.js i viem operują na typie BigInt i funkcjach w rodzaju parseUnits i formatUnits. Klasyczny sygnał ostrzegawczy: w konsoli wyrażenie 0.1 + 0.2 daje 0.30000000000000004. Przy pieniądzach nie liczysz na liczbach zmiennoprzecinkowych.
Bezpieczeństwo – JavaScript jako wektor ataku
- Podmieniony front-end. Nawet bezpieczny kontrakt nie pomoże, jeśli ktoś przejmie domenę lub serwer strony i podmieni skrypt – ten poprosi Cię o podpis zgody na wydanie tokenów.
- Zainfekowane paczki npm. Ataki na łańcuch dostaw polegają na wstrzyknięciu złośliwego kodu do popularnej biblioteki, np. podmieniającego adres odbiorcy.
- Złośliwe rozszerzenia. Fałszywe wersje portfeli w sklepach z rozszerzeniami kradną frazę seed.
- Drainery. Skrypty na stronach phishingowych, które po podpisie wyprowadzają środki z portfela.
Najczęstsze błędy
- Liczenie kwot tokenów na typie Number zamiast BigInt.
- Trzymanie klucza prywatnego lub klucza API w kodzie front-endu, który widzi każdy użytkownik.
- Kopiowanie kodu ze starych tutoriali opartych na nierozwijanych bibliotekach.
- Instalowanie paczek o nazwach łudząco podobnych do oryginału.
- Podpisywanie transakcji bez czytania, co dokładnie wyświetla portfel.
Perspektywa tradera
Nie musisz programować, żeby korzystać z wiedzy o JavaScripcie. Wystarczy świadomość, że interfejs dApp to tylko strona internetowa – może być podmieniona, a ostatnią linią obrony jest ekran potwierdzenia w portfelu. Sprawdzaj adres strony, typ podpisu i kwotę zgody (approve). Jeśli piszesz własne skrypty w Node.js do obsługi API giełdy, zacznij od konta z małym saldem i kluczy bez prawa wypłaty. Do analizy danych i backtestów częściej wybiera się Pythona, a JavaScript sprawdza się w narzędziach działających w przeglądarce i w integracji z portfelami. Wykresy i alerty często łatwiej zbudujesz bez kodu – np. w TradingView, który ma własny język skryptów Pine Script.
Najczęstsze pytania
Czy smart kontrakty pisze się w JavaScripcie?
Na Ethereum i sieciach EVM nie – używa się Solidity lub Vypera. JavaScript służy do testowania, wdrażania i obsługi kontraktów z poziomu aplikacji.
ethers.js czy viem?
Obie są aktywnie rozwijane. ethers.js ma dłuższą historię i wiele przykładów, viem jest nowszy, lżejszy i mocno typowany w TypeScripcie.
Czy web3.js jeszcze działa?
Istniejący kod działa, ale biblioteka nie jest rozwijana od 2025 roku. W nowych projektach lepiej wybrać ethers.js lub viem.
Czym JavaScript różni się od TypeScriptu?
TypeScript to JavaScript z typami, sprawdzanymi przed uruchomieniem. Pomaga wyłapać błędy, np. pomylenie kwoty w ETH z kwotą w wei.
Czy mogę napisać bota tradingowego w JavaScripcie?
Tak, Node.js dobrze obsługuje API i websockety giełd. Do analizy danych i backtestów częściej wybiera się jednak Pythona.
Tekst ma charakter edukacyjny i nie stanowi rekomendacji inwestycyjnej.


