Blockchain Yazılımcısı Olmak (3) — Ethereum için Geliştirme Araçları

Murat Celiktepe
BlockchainIST Center
4 min readMay 5, 2021

Bu serinin 3. yazısında ise geliştirme yapmak için kullanılan en yaygın toollara beraber bakacağız. Bunlar yeri geldiğinde çok işe yarayan ve özellikle bir proje geliştirirken hayat kurtaran araçlardır.

Infura

Ethereum ile beraber çalışacak bir proje yazdığınızda, bu projenin kontratlarının ağa deploy edilmesi gerekiyor. Yani projenizi test etmek veya direk canlıya almak için bir deployment sürecinden geçmesi gerekiyor. Ethereum ağına herhangi bir şeyi deploy etmek için de tabiki elinizde bir node olması gerekiyor. Geliştirme yaparken herkes elinde node bulunduramayacağı için bir servis gerekiyor. Bu servisi de Infura çok güzel bir şekilde sağlıyor.

Infura, kendiniz herhangi bir zahmete girmeden size hem ethereum testnet hem de mainnet ile haberleşebilme olanağı sağlıyor. Yani projelerinizi ethereum testnet veya mainnete deploy etmek için mükemmel bir araç.

Metamask

Metamask ise temel tanım olarak bir kripto cüzdan denenebilir. Chrome tabanlı bir uzantı servisidir. Yani chrome tabanlı hemen hemen her tarayıcıda direk uzantı olarak mağazadan indirebilirsiniz. Kullanımı oldukça basit olmakla beraber ethereumun her ağını desteklemektedir.

Tek sorun size verilen “mnemonic” adı verilen 12 kelimeyi güzel bir şekilde muhafaza etmenizdir. Cüzdanınıza erişim için kullanacağınız bu 12 kelimeye eğer kaybederseniz bir daha o cüzdana maalesef erişemezsiniz.

Metamask aynı zamanda ethereum üzerindeki DeFi projelerine erişmek için de en çok kullanılan cüzdandır. Bu sebeple metamask’e alışmanızı şiddetle tavsiye ederim. Kullanımı da zaten oldukça basittir.

Remix

Remix ise tarayıcı tabanlı bir IDE olarak tanımlanabilir. Akıllı kontratların yazılıp deploy edildiği bir platform diyebiliriz. Arayüzü ve özellikleri sebebiyle akıllı kontrat yazmak, debug etmek, test etmek için en çok kullanılan IDE’dir.

Remix üzerinde yazdığınız akıllı kontratların bir parçasını debug edebilir ve yazmayı bitirdikten sonra metamask’in de yardımıyla ethereum testnetine çok kolay bir şekilde deploy edebilirsiniz. Bu inanılmaz bir kolaylık ve hız sağlar geliştirme yaparken.

Truffle

Truffle ethereum için en popüler geliştirme framework’ü olarak bilinir. Özellikle sağladığı otomatik test özelliği test sürecini inanılmaz bir şekilde kolaylaştırır. Truffle ile scriptler şeklinde terminalden migrate ve deploy gibi işlemleri çok kolay bir şekilde yapabilirsiniz. Nereye migrate ve deploy edileceği ise tamamen vereceğiniz konfigürasyon ayarlarına göre değişiyor. Tek bir komut satırı ile projenizi ethereuma deploy ettiğinizi düşünün, truffle bunu sağlıyor.

Truffle- Ganache

Truffle Ganache ise bir ethereum ağının bir kopyasını localimizde yani kendi bilgisayarımızda oluşturmamıza olanak tanır. Yani EVM(Ethereum Virtual Machine) kopyasını kendi bilgisayarımızda kurabilir ve onun üzerinde ethereum ile çalışıyormuş gibi çalışabiliriz. Bu da tabiki bize geliştirdiğimiz projeleri sürekli ethereum testnetine deploy etmeden kendi localimizde test etme imkanı sunar. Kısaca bilgisayarımızda private bir testnet oluşturmuş oluyoruz.

Web3.js

Web3.js ise temel olarak bir kütüphane koleksiyonudur. Yerel veya uzaktaki bir ethereum node’una erişim, etkileşim imkanı sunar. Bu sayede proje geliştirirken, ethereum ağı üzerinde yapılacak her işlemi bu kütüphane aracılığıyla yapabilirsiniz. Direk contract methodlarını çağırmak, anlık ethereum ağ bilgilerini çekmek gibi işlemleri kolay bir şekilde yapmaya olanak verir. Açıkçası benimde geliştirme yaparken en çok kullandığım iki kütüphaneden birisidir. Ayrıca Web3.py adından python kütüphanesi de mevcuttur.

Ethers

Ethers de web3.js gibi ethereum ile haberleşmeyi sağlayan bir kütüphanedir. Bu iki kütüphane birbirlerine alternatif olarak kullanılabilirler. Kimi yazılımcı direk ethers kimisi ise web3.js kullanır. Amacınıza her ikiside genel anlamda hizmet ederler.

IPFS

IPFS ise temelde bir storage görevi görür. Akıllı kontrat yazarken, ethereum üzerinde data saklamak istediğinizde fakat ethereuma veri yazmanın maliyetinden de kaçınmak istediğinizde yardımınıza koşan bir sistemdir. Distributed Web (Merkeziyetsiz Internet) sağladığını iddia eden bu sistem, verilerinizi birden fazla node üzerinde tutarak istediğiniz anda o verileri bir link ile çekebilmeye ve izlemeyebilmeye olanak sağlar. Merkeziyetsiz depolamaya ilgisi olanlar mutlaka dökümanlarını okusun.

Bunun dışında araştırmanızı önerebileceğim bir diğer proje ise Arweave ürünüdür. Bu proje de verileri sonsuza kadar internette tutabildiğini iddia eden bir ürüne sahip. Meraklıları mutlaka bir göz atmalı bence.

Truffle Boxes

Yine bir truffle ürünü olan truffle boxes is bir projeye başlarken hazır bir yapı arayanlar için mükemmel bir yer. Bir çok spesifik amaç için hazırlanmış boilerplate’ler yani belli başlı kütüphaneler yüklenmiş, yapılar kurulmuş halde alıp geliştirebileceğiniz proje temelleri mevcuttur. Örnek olarak solidity kontratları, modülleri, frontend görünümleri vs. bir çok paket bulabilirsiniz.

Hardhat

Hardhat ise son zamanla popülerleşmeye başlayan, truffle alternatifi olarak kullanılan ve birçok yazılımcıyı kendisine çekmeye başlayan bir framework olarak tanımlanabilir. Benim de şahsen kullanmaya başladığım ve oldukça yazılımcı dostu özellikleri sayesinde her şeyi kolayca yapabildiğim bir tool diyebilirim. Projenizi compile, test, debug ve deploy etmenize yardımcı olan birçok özelliği vardır.

Evet bunlar geliştirme yaparken en çok kullandığımız araçlar. Sizinde her birinin dökümanına en azından daha detaylı bilgi edinmek için bakmanızı tavsiye ederim. Proje geliştirirken, projenin herhangi bir aşamasında bunlara mutlaka ihtiyacınız olucaktır.

Bu toolları da öğrendikten sonra bir sonraki adım solidity temelleri olucak. Solidity, akıllı kontrat yazmak için oluşturulmuş özel bir dildir. Bu dile hakim olan akıllı kontrat yazmaya hazır hale gelmiş olacaktır.

Bir sonraki yazıda görüşmek üzere…

Murat ÇELİKTEPE

LinkedIn → celiktepemurat

Twitter → muratctp

--

--