Přeskočit na hlavní obsah
Change page

JavaScript API knihovny

Stránka naposledy aktualizována: 22. října 2025

Aby mohla webová aplikace komunikovat s blockchainem Etherea (tj. číst data blockchainu a/nebo odesílat transakce do sítě), musí se připojit k uzlu Etherea.

Za tímto účelem každý klient Etherea implementuje specifikaci JSON-RPC, takže existuje jednotná sada metod, na které se aplikace mohou spolehnout.

Pokud chcete pro připojení k síťovému uzlu na Ethereu použít JavaScript, je možné využít vanilla JavaScript, ale v rámci ekosystému existuje několik užitečných knihoven, které vám to značně usnadní. Pomocí těchto knihoven mohou vývojáři psát intuitivní jednořádkové metody pro inicializaci JSON-RPC požadavků, které komunikují s Ethereem.

Vezměte prosím na vědomí, že od sloučení jsou ke spuštění uzlu potřeba dva propojené softwarové programy pro Ethereum – exekuční klient a konsensuální klient. Ujistěte se, že váš síťový uzel obsahuje oba dva. Pokud váš uzel není na vašem místním počítači (např. běží na instanci AWS), aktualizujte podle toho IP adresy v tutoriálu. Další informace naleznete na naší stránce o spuštění uzlu.

Předpoklady

Kromě znalosti JavaScriptu může být užitečné porozumět i Ethereum stacku a klientům Etherea.

Proč používat knihovnu?

Knihovny snižují složitost přímé interakce se síťovým uzlem Etherea. Poskytují také užitečné funkce (např. převod ETH na Gwei), takže jako vývojář můžete strávit méně času řešením složitostí ethereových klientů a více času se věnovat jedinečným funkcím své aplikace.

Funkce knihoven

Připojení k uzlům Ethereum

Tyto knihovny vám pomocí poskytovatelů umožňují připojit se k Ethereu a číst jeho data, ať už prostřednictvím JSON-RPC, INFURY, Etherscanu, Alchemy nebo MetaMasku.

Varování: Web3.js byl 4. března 2025 archivován. Přečtěte si oznámeníopens in a new tab. Pro nové projekty zvažte použití alternativních knihoven, jako jsou ethers.jsopens in a new tab nebo viemopens in a new tab.

Příklad v ethers

1// BrowserProvider obaluje standardního poskytovatele Web3, kterého
2// MetaMask vkládá do každé stránky jako window.ethereum
3const provider = new ethers.BrowserProvider(window.ethereum)
4
5// Plugin MetaMask také umožňuje podepisovat transakce pro
6// odesílání etheru a placení za změnu stavu v rámci blockchainu.
7// K tomu potřebujeme podepisovatele účtu...
8const signer = provider.getSigner()

Příklad ve Web3js

1var web3 = new Web3("http://localhost:8545")
2// nebo
3var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))
4
5// změna poskytovatele
6web3.setProvider("ws://localhost:8546")
7// nebo
8web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))
9
10// Použití IPC poskytovatele v node.js
11var net = require("net")
12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // cesta na mac os
13// nebo
14var web3 = new Web3(
15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)
16) // cesta na mac os
17// cesta na windows: "\\\\.\\pipe\\geth.ipc"
18// cesta na linux: "/users/myuser/.ethereum/geth.ipc"
Zobrazit vše

Po nastavení se budete moci dotazovat na blockchain na:

  • čísla bloků
  • odhady paliva
  • události smart kontraktů
  • id sítě
  • a více...

Funkce peněženky

Tyto knihovny poskytují funkce pro vytváření peněženek, správu klíčů a podepisování transakcí.

Zde jsou příklady z Ethers

1// Vytvoření instance peněženky z mnemonické fráze...
2mnemonic =
3 "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"
4walletMnemonic = Wallet.fromPhrase(mnemonic)
5
6// ...nebo z privátního klíče
7walletPrivateKey = new Wallet(walletMnemonic.privateKey)
8
9walletMnemonic.address === walletPrivateKey.address
10// true
11
12// Adresa jako Promise podle Signer API
13walletMnemonic.getAddress()
14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }
15
16// Adresa peněženky je také dostupná synchronně
17walletMnemonic.address
18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'
19
20// Interní kryptografické komponenty
21walletMnemonic.privateKey
22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'
23walletMnemonic.publicKey
24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'
25
26// Mnemonic peněženky
27walletMnemonic.mnemonic
28// {
29// locale: 'en',
30// path: 'm/44\'/60\'/0\'/0/0',
31// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'
32// }
33
34// Poznámka: Peněženka vytvořená privátním klíčem nemá
35// mnemonic (odvození tomu brání)
36walletPrivateKey.mnemonic
37// null
38
39// Podepisování zprávy
40walletMnemonic.signMessage("Hello World")
41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }
42
43tx = {
44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",
45 value: utils.parseEther("1.0"),
46}
47
48// Podepisování transakce
49walletMnemonic.signTransaction(tx)
50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }
51
52// Metoda connect vrací novou instanci
53// Peněženky připojené k poskytovateli
54wallet = walletMnemonic.connect(provider)
55
56// Dotazování sítě
57wallet.getBalance()
58// { Promise: { BigNumber: "42" } }
59wallet.getTransactionCount()
60// { Promise: 0 }
61
62// Odesílání etheru
63wallet.sendTransaction(tx)
Zobrazit vše

Přečtěte si celou dokumentaciopens in a new tab

Po nastavení budete moci:

  • vytvářet účty
  • odesílat transakce
  • podepisovat transakce
  • a více...

Interakce s funkcemi chytrých kontraktů

Knihovny JavaScriptových klientů umožňují vaší aplikaci volat funkce smart kontraktů načtením aplikačního binárního rozhraní (ABI) zkompilovaného kontraktu.

ABI v podstatě vysvětluje funkce kontraktu ve formátu JSON a umožňuje jej používat jako běžný objekt JavaScriptu.

Takže následující kontrakt v Solidity:

1contract Test {
2 uint a;
3 address d = 0x12345678901234567890123456789012;
4
5 constructor(uint testInt) { a = testInt;}
6
7 event Event(uint indexed b, bytes32 c);
8
9 event Event2(uint indexed b, bytes32 c);
10
11 function foo(uint b, bytes32 c) returns(address) {
12 Event(b, c);
13 return d;
14 }
15}
Zobrazit vše

Výsledekem by byl následující JSON:

1[{
2 "type":"constructor",
3 "payable":false,
4 "stateMutability":"nonpayable"
5 "inputs":[{"name":"testInt","type":"uint256"}],
6 },{
7 "type":"function",
8 "name":"foo",
9 "constant":false,
10 "payable":false,
11 "stateMutability":"nonpayable",
12 "inputs":[{"name":"b","type":"uint256"}, {"name":"c","type":"bytes32"}],
13 "outputs":[{"name":"","type":"address"}]
14 },{
15 "type":"event",
16 "name":"Event",
17 "inputs":[{"indexed":true,"name":"b","type":"uint256"}, {"indexed":false,"name":"c","type":"bytes32"}],
18 "anonymous":false
19 },{
20 "type":"event",
21 "name":"Event2",
22 "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}],
23 "anonymous":false
24}]
Zobrazit vše

To znamená, že můžete:

  • Odeslat transakci do smart kontraktu a provést jeho metodu
  • Zjistit odhad množství paliva, který spotřebuje vykonání metody při spuštění v EVM
  • Nasadit kontrakt
  • A další...

Pomocné funkce

Tyto užitečné funkce poskytují praktické zkratky, které vám usnadní práci s Ethereem.

Hodnoty ETH jsou ve výchozím nastavení ve Wei. 1 ETH = 1 000 000 000 000 000 000 000 000 WEI - to znamená, že máte co do činění se spoustou čísel! web3.utils.toWei za vás převede ether na Wei.

A v etherech to vypadá následovně:

1// Získejte zůstatek na účtu (podle adresy nebo jména ENS).
2balance = await provider.getBalance("ethers.eth")
3// { BigNumber: "2337132817842795605" }
4
5// Často bude potřeba formátovat výstup pro uživatele,
6// kteří preferují zobrazení hodnot v etherech (namísto ve wei)
7ethers.utils.formatEther(balance)
8// '2.337132817842795605'

Dostupné knihovny

Web3.js – JavaScriptové API pro Ethereum.

Ethers.js – Kompletní implementace peněženky pro Ethereum a nástrojů v JavaScriptu a v TypeScriptu.

The Graph – Protokol pro indexování dat Etherea a IPFS a dotazování na ně pomocí GraphQL.

Alchemy SDK – Wrapper nad Ethers.js s vylepšenými API.

viem – TypeScript rozhraní pro Ethereum.

Drift – TypeScriptová meta-knihovna s vestavěným cachováním, hooky a testovacími mocky.

Další čtení

Víte o komunitním zdroji, který vám pomohl? Upravte tuto stránku a přidejte ho!

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