Ruka kwenda kwenye maudhui makuu
Change page

Maktaba za JavaScript API

Ukurasa ulihaririwa mwisho: 15 Februari 2026

Ili programu ya wavuti iweze kuingiliana na mnyororo wa bloku wa Ethereum (yaani, kusoma data ya mnyororo wa bloku na/au kutuma miamala kwenye mtandao), lazima iunganishwe na nodi ya Ethereum.

Kwa madhumuni haya, kila mteja wa Ethereum hutekeleza vipimo vya JSON-RPC, kwa hivyo kuna seti sare ya mbinu ambazo programu zinaweza kutegemea.

Ikiwa unataka kutumia JavaScript kuungana na nodi ya Ethereum, inawezekana kutumia JavaScript tupu lakini maktaba kadhaa za kurahisisha zipo ndani ya mfumo ikolojia zinazofanya hili kuwa rahisi zaidi. Kwa maktaba hizi, wasanidi programu wanaweza kuandika njia angavu, za mstari mmoja ili kuanzisha maombi ya JSON-RPC (chini ya pazia) yanayoingiliana na Ethereum.

Tafadhali kumbuka kuwa tangu Muungano, sehemu mbili zilizounganishwa za programu ya Ethereum - mteja wa utekelezaji na mteja wa makubaliano - zinahitajika ili kuendesha nodi. Tafadhali hakikisha nodi yako inajumuisha mteja wa utekelezaji na mteja wa makubaliano. Ikiwa nodi yako haiko kwenye mashine yako ya karibu (k.m., nodi yako inaendeshwa kwenye kielelezo cha AWS) sasisha anwani za IP katika mafunzo ipasavyo. Kwa maelezo zaidi tafadhali angalia ukurasa wetu kuhusu kuendesha nodi.

Mahitaji ya awali

Pamoja na kuelewa JavaScript, inaweza kusaidia kuelewa rundo la Ethereum na wateja wa Ethereum.

Kwa nini utumie maktaba?

Maktaba hizi hurahisisha sehemu kubwa ya utata wa kuingiliana moja kwa moja na nodi ya Ethereum. Pia hutoa kazi za matumizi (k.m., kubadilisha ETH kwenda Gwei) hivyo kama msanidi programu unaweza kutumia muda mfupi kushughulikia ugumu wa wateja wa Ethereum na muda mwingi zaidi kulenga utendaji wa kipekee wa programu yako.

Vipengele vya maktaba

Ungana na nodi za Ethereum

Kwa kutumia watoa huduma, maktaba hizi zinakuruhusu kuungana na Ethereum na kusoma data yake, iwe ni kupitia JSON-RPC, INFURA, Etherscan, Alchemy au MetaMask.

Onyo: Web3.js iliwekwa kwenye kumbukumbu tarehe 4 Machi 2025. Soma tangazoopens in a new tab. Fikiria kutumia maktaba mbadala kama ethers.jsopens in a new tab au viemopens in a new tab kwa miradi mipya.

Mfano wa Ethers

1// A BrowserProvider wraps a standard Web3 provider, which is
2// what MetaMask injects as window.ethereum into each page
3const provider = new ethers.BrowserProvider(window.ethereum)
4
5// The MetaMask plugin also allows signing transactions to
6// send ether and pay to change state within the blockchain.
7// For this, we need the account signer...
8const signer = provider.getSigner()

Mfano wa Web3js

1var web3 = new Web3("http://localhost:8545")
2// or
3var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))
4
5// change provider
6web3.setProvider("ws://localhost:8546")
7// or
8web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))
9
10// Using the IPC provider in node.js
11var net = require("net")
12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // mac os path
13// or
14var web3 = new Web3(
15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)
16) // mac os path
17// on windows the path is: "\\\\.\\pipe\\geth.ipc"
18// on linux the path is: "/users/myuser/.ethereum/geth.ipc"
Onyesha yote

Baada ya kusanidi utaweza kuuliza mnyororo wa bloku kwa:

  • nambari za bloku
  • makadirio ya gesi
  • matukio ya mkataba-erevu
  • kitambulisho cha mtandao
  • na zaidi...

Utendaji wa mkoba

Maktaba hizi hukupa utendaji wa kuunda mikoba, kusimamia funguo na kusaini miamala.

Huu hapa ni mfano kutoka kwa Ethers

1// Create a wallet instance from a mnemonic...
2mnemonic =
3 "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"
4walletMnemonic = Wallet.fromPhrase(mnemonic)
5
6// ...or from a private key
7walletPrivateKey = new Wallet(walletMnemonic.privateKey)
8
9walletMnemonic.address === walletPrivateKey.address
10// true
11
12// The address as a Promise per the Signer API
13walletMnemonic.getAddress()
14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }
15
16// A Wallet address is also available synchronously
17walletMnemonic.address
18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'
19
20// The internal cryptographic components
21walletMnemonic.privateKey
22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'
23walletMnemonic.publicKey
24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'
25
26// The wallet mnemonic
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// Note: A wallet created with a private key does not
35// have a mnemonic (the derivation prevents it)
36walletPrivateKey.mnemonic
37// null
38
39// Signing a message
40walletMnemonic.signMessage("Hello World")
41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }
42
43tx = {
44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",
45 value: utils.parseEther("1.0"),
46}
47
48// Signing a transaction
49walletMnemonic.signTransaction(tx)
50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }
51
52// The connect method returns a new instance of the
53// Wallet connected to a provider
54wallet = walletMnemonic.connect(provider)
55
56// Querying the network
57wallet.getBalance()
58// { Promise: { BigNumber: "42" } }
59wallet.getTransactionCount()
60// { Promise: 0 }
61
62// Sending ether
63wallet.sendTransaction(tx)
Onyesha yote

Soma hati kamiliopens in a new tab

Baada ya kusanidi utaweza:

  • kuunda akaunti
  • kutuma miamala
  • kusaini miamala
  • na zaidi...

Ingiliana na utendaji wa mkataba-erevu

Maktaba za wateja za JavaScript huruhusu programu yako kuita utendaji wa mkataba-erevu kwa kusoma Kiolesura cha Binary cha Programu (ABI) ya mkataba uliokusanywa.

Kimsingi ABI inaelezea utendaji wa mkataba katika muundo wa JSON na hukuruhusu kuitumia kama kitu cha kawaida cha JavaScript.

Kwa hivyo mkataba ufuatao wa 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}
Onyesha yote

Itasababisha JSON ifuatayo:

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}]
Onyesha yote

Hii inamaanisha unaweza:

  • Tuma muamala kwa mkataba-erevu na utekeleze mbinu yake
  • Piga simu ili kukadiria gesi ambayo utekelezaji wa mbinu utachukua unapotekelezwa katika EVM
  • Sambaza mkataba
  • Na zaidi...

Utendaji wa matumizi

Utendaji wa matumizi hukupa njia za mkato zinazofaa ambazo hufanya ujenzi na Ethereum kuwa rahisi kidogo.

Thamani za ETH ziko katika Wei kwa chaguo-msingi. ETH 1 = WEI 1,000,000,000,000,000,000 – hii inamaanisha unashughulika na nambari nyingi! web3.utils.toWei hubadilisha ether kuwa Wei kwa ajili yako.

Na katika ethers inaonekana kama hivi:

1// Get the balance of an account (by address or ENS name)
2balance = await provider.getBalance("ethers.eth")
3// { BigNumber: "2337132817842795605" }
4
5// Often you will need to format the output for the user
6// which prefer to see values in ether (instead of wei)
7ethers.utils.formatEther(balance)
8// '2.337132817842795605'

Maktaba zinazopatikana

Web3.js - API ya JavaScript ya Ethereum.

Ethers.js - Utekelezaji kamili wa mkoba wa Ethereum na huduma katika JavaScript na TypeScript.

The Graph - Itifaki ya kuorodhesha data ya Ethereum na IPFS na kuiuliza kwa kutumia GraphQL.

Alchemy SDK - Kifuniko karibu na Ethers.js na api zilizoboreshwa.

viem - Kiolesura cha TypeScript cha Ethereum.

Drift - Maktaba-meta ya TypeScript iliyo na kashe iliyojengewa ndani, ndoano, na dhihaka za majaribio.

Masomo zaidi

Unajua rasilimali ya jamii iliyokusaidia? Hariri ukurasa huu na uiongeze!_

Je! makala haya yamekusaidia?