Ana içeriğe atla

JavaScript'te Ethereum blokzincirini kullanmak için web3.js'i kurun

web3.js
javascript
Başlangıç
jdourlens
11 Nisan 2020
2 dakikalık okuma

Bu eğitimde, Ethereum blokzinciri ile etkileşime geçmek için web3.js (opens in a new tab)'e nasıl başlayacağımızı göreceğiz. Web3.js, blokzincirden veri okumak, işlemler yapmak ve hatta akıllı sözleşmeler dağıtmak için hem ön uçlarda (frontend) hem de arka uçlarda (backend) kullanılabilir.

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

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

Kütüphaneyi arka ucunuzda veya derleme (build) kullanan bir ön uç projesinde kullanmak üzere kurmayı tercih ederseniz, npm kullanarak kurabilirsiniz:

npm install web3 --save

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

const Web3 = require("web3")

Kütüphaneyi projeye dahil ettiğimize göre artık onu başlatmamız gerekiyor. Projenizin blokzincir ile iletişim kurabilmesi gerekir. Çoğu Ethereum kütüphanesi, RPC çağrıları aracılığıyla bir düğüm ile iletişim kurar. Web3 sağlayıcımızı başlatmak için, sağlayıcının URL'sini kurucu (constructor) olarak geçirerek bir Web3 örneği oluşturacağız. Bilgisayarınızda çalışan bir düğüm veya ganache örneğiniz (opens in a new tab) varsa, şu şekilde görünecektir:

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

Barındırılan bir düğüme doğrudan erişmek isterseniz, hizmet olarak düğümler üzerinde seçenekler bulabilirsiniz.

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

Web3 örneğimizi doğru yapılandırdığımızı test etmek için, getBlockNumber işlevini kullanarak en son blok numarasını almayı deneyeceğiz. Bu işlev, parametre olarak bir geri arama (callback) kabul eder ve blok numarasını bir tam sayı olarak döndürür.

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

web3.eth.getBlockNumber(function (error, result) {
  console.log(result)
})

Bu programı çalıştırırsanız, basitçe en son blok numarasını yazdıracaktır: blokzincirin en üstü. Kodunuzda iç içe geçmiş geri aramalardan kaçınmak için await/async işlev çağrılarını da kullanabilirsiniz:

async function getBlockNumber() {
  const latestBlockNumber = await web3.eth.getBlockNumber()
  console.log(latestBlockNumber)
  return latestBlockNumber
}

getBlockNumber()

Web3 örneğinde mevcut olan tüm işlevleri resmi web3.js belgelerinde (opens in a new tab) görebilirsiniz.

Çoğu Web3 kütüphanesi eşzamansızdır (asynchronous) çü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şime geçmeyi planlıyorsanız, mümkün olduğunca bunu kullanmaya çalışmalısınız.

İşte bir MetaMask cüzdanının mevcut olup olmadığını tespit eden ve mevcutsa onu etkinleştirmeye çalışan kod parçacığı. Bu daha sonra kullanıcının bakiyesini okumanıza ve Ethereum blokzincirinde yapmalarını istediğiniz işlemleri doğrulamalarına olanak tanıyacaktır:

web3.js'e alternatif olarak Ethers.js (opens in a new tab) gibi seçenekler de mevcuttur ve yaygın olarak kullanılır. Bir sonraki eğitimde blokzincirine yeni gelen blokları nasıl kolayca dinleyeceğimizi ve neleri içerdiklerini göreceğiz (opens in a new tab).