Přeskočit na hlavní obsah

Nastavení web3.js pro použití blockchainu Ethereum v JavaScriptu

web3.js
javascript
Začátečník
jdourlens
11. dubna 2020
3 minuta čtení

V tomto tutoriálu se podíváme, jak začít s web3.js (opens in a new tab) pro interakci s blockchainem Etherea. Web3.js lze použít jak na frontendu, tak na backendu ke čtení dat z blockchainu, provádění transakcí, a dokonce i k nasazení chytrých kontraktů.

Prvním krokem je zahrnout web3.js do vašeho projektu. Chcete-li jej použít na webové stránce, můžete knihovnu importovat přímo pomocí CDN, jako je JSDeliver.

1<script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>

Pokud dáváte přednost instalaci knihovny pro použití ve vašem backendu nebo front-endovém projektu, který používá sestavení, můžete ji nainstalovat pomocí npm:

npm install web3 --save

Chcete-li poté importovat Web3.js do skriptu Node.js nebo front-endového projektu Browserify, můžete použít následující řádek JavaScriptu:

1const Web3 = require("web3")

Nyní, když jsme knihovnu zahrnuli do projektu, ji musíme inicializovat. Váš projekt musí být schopen komunikovat s blockchainem. Většina knihoven pro Ethereum komunikuje s uzlem prostřednictvím volání RPC. Pro inicializaci poskytovatele Web3 vytvoříme instanci Web3 a jako konstruktor předáme URL adresu poskytovatele. Pokud máte na svém počítači spuštěný uzel nebo instanci ganache (opens in a new tab), bude to vypadat takto:

1const web3 = new Web3("http://localhost:8545")

Pokud chcete přistupovat přímo k hostovanému uzlu, můžete najít možnosti na stránce uzly jako služba.

1const web3 = new Web3("https://cloudflare-eth.com")

Abychom otestovali, že jsme správně nakonfigurovali naši instanci Web3, zkusíme načíst číslo posledního bloku pomocí funkce getBlockNumber. Tato funkce přijímá jako parametr zpětné volání (callback) a vrací číslo bloku jako celé číslo.

1var Web3 = require("web3")
2const web3 = new Web3("https://cloudflare-eth.com")
3
4web3.eth.getBlockNumber(function (error, result) {
5 console.log(result)
6})

Pokud tento program spustíte, jednoduše vypíše číslo posledního bloku: vrchol blockchainu. Můžete také použít volání funkcí await/async, abyste se vyhnuli vnořování zpětných volání (callbacks) ve vašem kódu:

1async function getBlockNumber() {
2 const latestBlockNumber = await web3.eth.getBlockNumber()
3 console.log(latestBlockNumber)
4 return latestBlockNumber
5}
6
7getBlockNumber()

Všechny dostupné funkce v instanci Web3 si můžete prohlédnout v oficiální dokumentaci web3.js (opens in a new tab).

Většina knihoven Web3 je asynchronních, protože na pozadí knihovna provádí JSON-RPC volání na uzel, který posílá zpět výsledek.

Pokud pracujete v prohlížeči, některé peněženky přímo vkládají instanci Web3 a měli byste se ji pokusit použít, kdykoli je to možné, zejména pokud plánujete interagovat s ethereovou adresou uživatele za účelem provádění transakcí.

Zde je úryvek kódu pro zjištění, zda je k dispozici peněženka MetaMask, a pokud ano, pokus o její povolení. To vám později umožní číst zůstatek uživatele a umožní mu ověřovat transakce, které po něm chcete, aby na blockchainu Etherea provedl:

1if (window.ethereum != null) {
2 state.web3 = new Web3(window.ethereum)
3 try {
4 // V případě potřeby si vyžádejte přístup k účtu
5 await window.ethereum.enable()
6 // Účty jsou nyní odhaleny
7 } catch (error) {
8 // Uživatel odepřel přístup k účtu...
9 }
10}
Zobrazit vše

Existují alternativy k web3.js, jako je Ethers.js (opens in a new tab), které se také běžně používají. V dalším tutoriálu se podíváme, jak snadno naslouchat novým příchozím blokům na blockchainu a vidět, co obsahují (opens in a new tab).

Stránka naposledy aktualizována: 21. srpna 2025

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