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ého2// MetaMask vkládá do každé stránky jako window.ethereum3const provider = new ethers.BrowserProvider(window.ethereum)45// Plugin MetaMask také umožňuje podepisovat transakce pro6// 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// nebo3var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))45// změna poskytovatele6web3.setProvider("ws://localhost:8546")7// nebo8web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))910// Použití IPC poskytovatele v node.js11var net = require("net")12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // cesta na mac os13// nebo14var web3 = new Web3(15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)16) // cesta na mac os17// cesta na windows: "\\\\.\\pipe\\geth.ipc"18// cesta na linux: "/users/myuser/.ethereum/geth.ipc"Zobrazit všePo 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)56// ...nebo z privátního klíče7walletPrivateKey = new Wallet(walletMnemonic.privateKey)89walletMnemonic.address === walletPrivateKey.address10// true1112// Adresa jako Promise podle Signer API13walletMnemonic.getAddress()14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }1516// Adresa peněženky je také dostupná synchronně17walletMnemonic.address18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'1920// Interní kryptografické komponenty21walletMnemonic.privateKey22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'23walletMnemonic.publicKey24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'2526// Mnemonic peněženky27walletMnemonic.mnemonic28// {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// }3334// Poznámka: Peněženka vytvořená privátním klíčem nemá35// mnemonic (odvození tomu brání)36walletPrivateKey.mnemonic37// null3839// Podepisování zprávy40walletMnemonic.signMessage("Hello World")41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }4243tx = {44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",45 value: utils.parseEther("1.0"),46}4748// Podepisování transakce49walletMnemonic.signTransaction(tx)50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }5152// Metoda connect vrací novou instanci53// Peněženky připojené k poskytovateli54wallet = walletMnemonic.connect(provider)5556// Dotazování sítě57wallet.getBalance()58// { Promise: { BigNumber: "42" } }59wallet.getTransactionCount()60// { Promise: 0 }6162// Odesílání etheru63wallet.sendTransaction(tx)Zobrazit všePř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;45 constructor(uint testInt) { a = testInt;}67 event Event(uint indexed b, bytes32 c);89 event Event2(uint indexed b, bytes32 c);1011 function foo(uint b, bytes32 c) returns(address) {12 Event(b, c);13 return d;14 }15}Zobrazit všeVý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":false19 },{20 "type":"event",21 "name":"Event2",22 "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}],23 "anonymous":false24}]Zobrazit všeTo 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" }45// Č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.
- The Graphopens in a new tab
- Graph Exploreropens in a new tab
- Dokumentaceopens in a new tab
- GitHubopens in a new tab
- Discordopens in a new tab
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!
Související témata
Související návody
- Nastavení Web3.js pro použití ethereového blockchainu v JavaScriptu – Návod na nastavení web3.js ve vašem projektu.
- Volání chytrých kontraktů z JavaScriptu – Podívejte se, jak pomocí tokenu DAI volat funkce kontraktů v JavaScriptu.
- Odesílání transakcí pomocí web3 a Alchemy – Podrobný návod pro odesílání transakcí z backendu.