Ana içeriğe geç

JavaScript'te Ethereum blok zincirini kullanmak için web3.js'yi kurun

web3.jsjavascript
Acemi
jdourlens
EthereumDev(opens in a new tab)
11 Nisan 2020
2 dakikalık okuma minute read
comp-tutorial-metadata-tip-author 0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE

Bu öğreticide, Ethereum blok zinciri ile etkileşime geçmek için web3.js(opens in a new tab) ile nasıl başlayacağımızı göreceğiz. Web3.js, blok zincirinden veri okumak veya işlem yapmak ve hatta akıllı sözleşmeleri dağıtmak için hem ön uçlarda hem de arka uçlarda kullanılabilir.

İlk adım, projenize web3.js'yi dahil etmektir. Bir web sayfasında kullanmak için, JSDeliver gibi bir CDN kullanarak kütüphaneyi doğrudan içe aktarabilirsiniz.

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

Arka ucunuzda kullanmak üzere kütüphaneyi veya derleme kullanan bir ön uç projesini kurmayı tercih ederseniz, onu npm kullanarak kurabilirsiniz:

npm install web3 --save

Ardından Web3.js'yi bir Node.js komut dosyasına veya Browserify ön uç projesine içe aktarmak için aşağıdaki JavaScript satırını kullanabilirsiniz:

1const Web3 = require("web3")
Kopyala

Şimdi projeye kütüphaneyi dahil ettiğimize göre, onu başlatmamız gerekiyor. Projenizin blok zinciri ile iletişim kurabilmesi gerekiyor. Çoğu Ethereum kütüphanesi bir düğüm ile RPC çağrıları aracılığıyla iletişim kurar. Web3 sağlayıcımızı başlatmak için, sağlayıcının URL'sini yapıcı olarak geçen bir Web3 örneğini başlatacağız. Eğer bir düğümünüz veya bilgisayarınızda çalışan bir ganache örneği(opens in a new tab) varsa şu şekilde gözükecektir:

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

Barındırılan bir düğüme doğrudan erişmek isterseniz, bununla ilgili seçenekleri bir hizmet olarak düğümler içinde bulabilirsiniz.

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

Web3 örneğimizi doğru şekilde yapılandırdığımızı test etmek için getBlockNumber fonksiyonunu kullanarak en son blok numarasını almaya çalışacağız. Bu fonksiyon parametre olarak bir geri aramayı kabul eder ve blok numarasını bir tamsayı olarak döndürür.

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

Bu programı çalıştırırsanız, sadece en son blok numarasını yazdıracaktır: blok zincirinin tepesi. Kodunuzda iç içe geri aramaları önlemek için await/async fonksiyon çağrılarını da kullanabilirsiniz:

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

Web3 örneğinde kullanılabilen tüm fonksiyonları, resmi web3.js belgelerinde(opens in a new tab) görebilirsiniz.

Web3 kütüphanelerinin çoğu eşzamansızdır çünkü arka planda kütüphane, sonucu geri gönderen düğüme JSON RPC çağrıları yapar.

Tarayıcıda çalışıyorsanız, bazı cüzdanlar doğrudan bir Web3 örneği enjekte eder ve özellikle işlem yapmak için kullanıcının Ethereum adresiyle etkileşim kurmayı planlıyorsanız, mümkün olduğunda onu kullanmaya çalışmalısınız.

İşte bir MetaMask cüzdanının mevcut olup olmadığını tespit etmek ve varsa onu etkinleştirmeye çalışmak için bir parçacık. Daha sonra, kullanıcının bakiyesini okumanıza ve Ethereum blok zincirinde yapmak istediğiniz işlemleri doğrulamalarına olanak tanır:

1if (window.ethereum != null) {
2 state.web3 = new Web3(window.ethereum)
3 try {
4 // Request account access if needed
5 await window.ethereum.enable()
6 // Accounts now exposed
7 } catch (error) {
8 // User denied account access...
9 }
10}
Tümünü göster
Kopyala

Ethers.js(opens in a new tab) gibi web3.js alternatifleri de mevcuttur ve sıklıkla kullanılır. Bir sonraki öğreticide, blok zincirindeki yeni gelen blokları kolayca nasıl dinleyeceğinizi ve neler içerdiklerini görmeyi öğreneceğiz(opens in a new tab).

Son düzenleme: @kaanmetu(opens in a new tab), 23 Kasım 2023

Bu rehber yararlı oldu mu?