Ana içeriğe geç
Change page

JavaScript API kütüphaneleri

Sayfanın son güncellenmesi: 25 Şubat 2026

Bir web uygulamasının Ethereum blokzinciri ile etkileşime girebilmesi (ör. blokzincir verilerini okumak ve/veya ağa işlem göndermek) için bir Ethereum düğümüne bağlanması gerekir.

Bu amaçla her Ethereum istemcisi JSON-RPC spesifikasyonunu uygular, böylece uygulamaların güvenebileceği tek tip bir yöntemler seti bulunur.

Eğer bir Ethereum düğümüne bağlanmak için JavaScript kullanmak istiyorsanız, düz JavaScript'i kullanmak mümkündür ancak ekosistem içinde bunu çok daha kolay hâle getiren birkaç kolaylık kütüphanesi bulunur. Bu kütüphanelerle geliştiriciler, Ethereum ile etkileşime giren JSON RPC taleplerini (arka planda) başlatmak için sezgisel ve tek satırlı yöntemler yazabilirler.

Birleşim'den bu yana bir düğümü çalıştırmak için birbirine bağlı iki Ethereum yazılımı parçasının (bir yürütüm istemcisi ve bir mutabakat istemcisi) gerektiğini lütfen unutmayın. Lütfen düğümünüzün hem bir yürütüm hem de fikir birliği istemcisini içerdiğinden emin olun. Düğümünüz yerel makinenizde değilse (ör. düğümünüz bir AWS örneğinde çalışıyorsa), öğreticideki IP adreslerini buna göre güncelleyin. Daha fazla bilgi için lütfen düğüm çalıştırma sayfamıza bakın.

Ön Koşullar

JavaScript'i anlamanın yanı sıra Ethereum yığınını ve Ethereum istemcilerini anlamak da faydalı olabilir.

Neden bir kütüphane kullanılır?

Bu kütüphaneler, bir Ethereum düğümü ile doğrudan etkileşim kurmanın karmaşıklığının çoğunu ortadan kaldırır. Ayrıca, bir geliştirici olarak Ethereum istemcilerinin karmaşıklıkları ile daha az zaman harcayarak ve uygulamanızın benzersiz işlevselliğine daha fazla zaman ayırabilmeniz için yardımcı işlevler (örneğin, ETH'yi Gwei'ye dönüştürmek) sağlarlar.

Kütüphane özellikleri

Ethereum düğümlerine bağlanma

Bu kütüphaneler, sağlayıcıları kullanarak JSON-RPC, INFURA, Etherscan, Alchemy veya MetaMask üzerinden Ethereum'a bağlanmanıza ve Ethereum verilerini okumanıza olanak tanır.

Uyarı: Web3.js 4 Mart 2025'te arşivlendi. Duyuruyu okuyun (opens in a new tab). Yeni projeler için ethers.js (opens in a new tab) veya viem (opens in a new tab) gibi alternatif kütüphaneleri kullanmayı düşünün.

Ethers örneği

1// Bir BrowserProvider, MetaMask'ın her sayfaya window.ethereum olarak eklediği
2// standart bir Web3 sağlayıcısını sarmalar
3const provider = new ethers.BrowserProvider(window.ethereum)
4
5// MetaMask eklentisi ayrıca ether göndermek için işlemleri imzalamaya
6// ve blokzincirdeki durumu değiştirmek için ödeme yapmaya olanak tanır.
7// Bunun için hesap imzalayıcısına ihtiyacımız var...
8const signer = provider.getSigner()

Web3js örneği

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"
Tümünü göster

Kurulduktan sonra blok zinciri aşağıdakiler için sorgulayabileceksiniz:

  • blok numaraları
  • gaz tahminleri
  • akıllı sözleşme olayları
  • ağ kimliği
  • ve dahası...

Cüzdan işlevselliği

Bu kütüphaneler size cüzdan oluşturma, anahtarları yönetme ve işlemleri imzalama işlevselliği sunar.

İşte Ethers'dan bir örnek

1// Bir anımsatıcı ifadeden bir cüzdan örneği oluşturun...
2mnemonic =
3 "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"
4walletMnemonic = Wallet.fromPhrase(mnemonic)
5
6// ...veya özel bir anahtardan
7walletPrivateKey = new Wallet(walletMnemonic.privateKey)
8
9walletMnemonic.address === walletPrivateKey.address
10// true
11
12// İmzalayıcı API'sine göre bir Promise olarak adres
13walletMnemonic.getAddress()
14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }
15
16// Bir Cüzdan adresi eşzamanlı olarak da kullanılabilir
17walletMnemonic.address
18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'
19
20// Dahili kriptografik bileşenler
21walletMnemonic.privateKey
22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'
23walletMnemonic.publicKey
24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'
25
26// Cüzdan anımsatıcı ifadesi
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// Not: Özel bir anahtarla oluşturulan bir cüzdanın anımsatıcı ifadesi yoktur
35// (türetme bunu engeller)
36walletPrivateKey.mnemonic
37// null
38
39// Bir mesajı imzalama
40walletMnemonic.signMessage("Hello World")
41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }
42
43tx = {
44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",
45 value: utils.parseEther("1.0"),
46}
47
48// Bir işlemi imzalama
49walletMnemonic.signTransaction(tx)
50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }
51
52// connect metodu, bir sağlayıcıya bağlı olan
53// Cüzdan'ın yeni bir örneğini döndürür
54wallet = walletMnemonic.connect(provider)
55
56// Ağı sorgulama
57wallet.getBalance()
58// { Promise: { BigNumber: "42" } }
59wallet.getTransactionCount()
60// { Promise: 0 }
61
62// Ether gönderme
63wallet.sendTransaction(tx)
Tümünü göster

Tüm belgeleri okuyun (opens in a new tab)

Kurulumdan sonra şunları yapabileceksiniz:

  • hesap oluşturabilirsiniz
  • işlem gönderebilirsiniz
  • işlemleri imzalayabilirsiniz
  • ve dahası...

Akıllı sözleşme işlevleriyle etkileşim kurma

Javascript istemci kütüphaneleri, derlenmiş bir sözleşmenin Uygulama İkili Arayüzünü (ABI) okuyarak uygulamanızın akıllı sözleşme fonksiyonlarını çağırmasına olanak tanır.

ABI, esasen sözleşmenin işlevlerini bir JSON formatında açıklar ve bunu normal bir JavaScript nesnesi gibi kullanmanıza izin verir.

Yani aşağıdaki Solidity sözleşmesi:

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}
Tümünü göster

Aşağıdaki JSON ile sonuçlanır:

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}]
Tümünü göster

Bu, şunları yapabileceğiniz anlamına gelir:

  • Akıllı sözleşmeye bir işlem gönderin ve yöntemini uygulayın
  • EVM'de yürütüldüğünde bir yöntem yürütmesinin harcayacağı gazı tahmin etme çağrısı
  • Sözleşme dağıtmak
  • Ve daha fazlası...

Yardımcı fonksiyonlar

Yardımcı fonksiyonlar, Ethereum ile oluşturmayı biraz daha kolaylaştıran kullanışlı kısayollar sunar.

ETH değerleri varsayılan olarak Wei cinsindendir. 1 ETH = 1.000.000.000.000.000.000 WEI – bu, çok sayıda sayıyla uğraştığınız anlamına gelir! web3.utils.toWei sizin için ether'i Wei'ye dönüştürür.

Ve ethers cinsinden şöyle görünür:

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'

Mevcut kütüphaneler

Web3.js - Ethereum JavaScript API'si.

Ethers.js - JavaScript ve TypeScript'te eksiksiz Ethereum cüzdanı uygulaması ve yardımcı programları.

The Graph - Ethereum ve IPFS verilerini dizine eklemek ve GraphQL kullanarak sorgulamak için bir protokol.

Alchemy SDK - Gelişmiş API'lere sahip Ethers.js için bir sarmalayıcı.

viem - Ethereum için TypeScript Arayüzü.

Drift - Dahili önbelleğe alma, kancalar ve test taklitleri içeren TypeScript meta kütüphanesi.

Daha fazla kaynak

Size yardımcı olan bir topluluk kaynağı mı biliyorsunuz? Bu sayfayı düzenleyin ve onu ekleyin!

Bu makale yararlı oldu mu?