Kategori: Blockchain

Hardhat Nedir? Nasıl Kullanılır?

Hardhat | Ethereum development environment for professionals by Nomic Labs

Esnek. Genişletilebilir. Hızlı.
Profesyoneller için Ethereum geliştirme ortamı

Hardhat Sitesi

Hardhat, Ethereum yazılımınızı derlemek, dağıtmak, test etmek ve hatalarını ayıklamak için bir geliştirme ortamıdır. Geliştiricilerin, akıllı sözleşmeler ve dApp’ler oluşturma sürecinin doğasında bulunan yinelenen görevleri yönetmelerine ve otomatikleştirmelerine yardımcı olurken, bu iş akışı etrafında daha fazla işlevsellik kolayca tanıtıyor. Bu, akıllı sözleşmelerin özünde derlenmesi, çalıştırılması ve test edilmesi anlamına gelir.

Hardhat, geliştirme için tasarlanmış yerel bir Ethereum ağı olan Hardhat Network ile yerleşik olarak gelir. İşlevselliği, yığın izleri, console.log() ve işlemler başarısız olduğunda açık hata mesajları içeren Solidity hata ayıklamasına odaklanır.

Hardhat ile etkileşim için CLI komutu olan Hardhat Runner, genişletilebilir bir görev çalıştırıcıdır. Görevler ve eklentiler kavramları etrafında tasarlanmıştır. CLI’den Hardhat’ı her çalıştırdığınızda, bir görev çalıştırıyorsunuz. Örneğin. npx hardhat compile, yerleşik derleme görevini çalıştırıyor. Görevler, diğer görevleri çağırarak karmaşık iş akışlarının tanımlanmasına olanak tanır. Kullanıcılar ve eklentiler, mevcut görevleri geçersiz kılarak bu iş akışlarını özelleştirilebilir ve genişletilebilir hale getirebilir.

Hardhat’ın pek çok işlevi eklentilerden gelir ve bir geliştirici olarak hangilerini kullanmak istediğinizi seçmekte özgürsünüz. Hardhat, hangi araçları kullanacağınız konusunda fikirsizdir, ancak bazı yerleşik varsayılanlarla birlikte gelir. Bunların tümü geçersiz kılınabilir.

En basit projeye hardhat yükleme komutu bu şekildedir. Aşağıda genel kullanım şeklimize dair detay var.

npm install --save-dev hardhat

Ethereum ile etkileşim kurmak için bir JavaScript kitaplığı olan Ethers.js’yi ve bunun üzerine kurulmuş basit bir akıllı sözleşme test kitaplığı olan Waffle’ı genellikle ön tanımlı gibi yükleme komutu ile kullanıyoruz. Bu, test için Hardhat’in önerdiği bir seçenektir. Bu yüzden projeye hardhat yükleme komutunu şu şekilde kullanırız. Bu komutu çalıştırın.

npm install --save-dev @nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers ethers

Yeni bir proje oluşturmak için projenin olduğu klasöre gidin ve npx hardhat komutunu verin.

$ npx hardhat
888    888                      888 888               888
888    888                      888 888               888
888    888                      888 888               888
8888888888  8888b.  888d888 .d88888 88888b.   8888b.  888888
888    888     "88b 888P"  d88" 888 888 "88b     "88b 888
888    888 .d888888 888    888  888 888  888 .d888888 888
888    888 888  888 888    Y88b 888 888  888 888  888 Y88b.
888    888 "Y888888 888     "Y88888 888  888 "Y888888  "Y888

Welcome to Hardhat v2.0.8

? What do you want to do? …
❯ Create a sample project
  Create an advanced sample project
  Create an advanced sample project that uses TypeScript
  Create an empty hardhat.config.js
  Quit

Create a sample project ile hızlı başlangıç yapabilirsin. Devamını kendi dökümanından okuyabilirsin.

Şimdi genellikle kullandığımız ayarlardan ve komutlardan bahsedelim.

Kodu compile etmek için:

npx hardhat compile

Test çalıştırmak için:

 npx hardhat test

Local node u çalıştırmak için:

npx hardhat node

Local ağa kontratımızı deploy etmek için:

npx hardhat run scripts/sample-script.js --network localhost

Örnek bir test ağına deploy etmek için:

npx hardhat run scripts/sample-script.js --network ropsten

Komutlarını kullanabilirsin.

Hardhat.config.js dosyası tüm tanımlamaları ve eklemeleri yapacağın bir dosyadır. Komut verildiğinde config dosyası kendiliğinden oluşur daha sonra düzeltme yapabilirsin.

require("@nomiclabs/hardhat-waffle");
const privateKey = "ağlar için kullandığım Metamask privat key";
// This is a sample Hardhat task. To learn how to create your own go to
// https://hardhat.org/guides/create-task.html
task("accounts", "Prints the list of accounts", async (taskArgs, hre) => {
  const accounts = await hre.ethers.getSigners();

  for (const account of accounts) {
    console.log(account.address);
  }
});

// You need to export an object to set up your config
// Go to https://hardhat.org/config/ to learn more

/**
 * @type import('hardhat/config').HardhatUserConfig
 */
 module.exports = {
  solidity: "0.8.3",
  networks: {
// local ağ için 1337 metamask ın bir bugı
    hardhat: {
      chainId: 1337
    },
// infura apisi için kullandığım örnek url
     mumbai: {
      url: "https://polygon-mumbai.infura.io/v3/XXXXXXX",
      accounts: [privateKey]
    },
// alchemy için kullandığım örnek url
    ropsten: {
      url: "https://eth-ropsten.alchemyapi.io/v2/xxxxxxx",
      accounts: [privateKey]
    },
// binance ın kendi verdiği api url si
    binance: {
      url: "https://data-seed-prebsc-1-s1.binance.org:8545",
      chainId: 97,
      gasPrice: 20000000000,
      accounts: [privateKey]
    },
  }
};

Infura Nedir? Nasıl Kullanılır?

Yüksek kullanılabilirlikli API’ler ve Geliştirici Araçları paketimiz, Ethereum ve IPFS ağlarına hızlı ve güvenilir erişim sağlar, böylece yeni nesil yazılım oluşturmaya ve ölçeklendirmeye odaklanabilirsiniz.

Infura Sitesi

Kendi sitelerinde böyle tanımlamışlar. Bir önceki yazıda bahsettiğimiz Alchemy nin alternatifi olarak kullanılmaktadır. Temelde Infura ‘da bize blockchain geliştirme sürecinde test veya main ağlarına tokenları göndermemiz için API sağlar.

Sitesine gidip Register butonundan kayıt olun ve giriş yapın

Giriş yaptıktan sonra Create New Project ile yeni proje oluşturun.

Projenizin ne olduğunu ve ismini belirleyip Create e tıklayın

Oluşan projeden api url sini kopyaladıktan sonra artık servisi kullanmaya hazırsın.

Tebrikler🎉 Hardhat config dosyasını değiştirerek artık seçtiğin ağa kontratlarını gönderebilirsin.

Ek not: Hardhat config dosyanda API ye ulaşabilmek için Metamask cüzdan private keyinizi girmen gerekir.

Alchemy Nedir? Nasıl Kullanılır?

Alchemy, blockchain geliştirmeyi kolaylaştırmaya odaklanan bir blockchain geliştirici platformudur. Blok zinciri uygulamaları oluşturmayı ve çalıştırmayı sorunsuz hale getirmek için bir dizi geliştirici araçları, gelişmiş API’ler ve süper node altyapıları sağlar.

Daha detaylı bilgi için dökümantasyon sayfasını inceleyebilirsin.


Platform, dünyanın en iyi blok zinciri şirketleri de dahil olmak üzere en iyi Ethereum uygulamalarının %70’ini destekler:

Alchemy, local ortamdan test veya main network lere kontratları göndermek için kullanılır.

Alchemy e kayıt olun: https://dashboard.alchemyapi.io/ ve giriş yapın.

App oluşturun

App için gerekli bilgileri girin

Polygon Mumbai için örnek app oluşturma ekranı

Oluşan App inizde key i kopyalayın

App oluşturduktan sonra herhangi bir düzenleme ihtiyacın olması durumunda geri dönüp Edit App diyerek düzeltebilirsin.

Tebrikler!  🎉 kopyaladığın url yi Hardhat config dosyana ekleyerek Alchemy ‘i kullanmaya hazırsın.

Hardhat config dosyası örnek düzenleme

Ek not: Hardhat config dosyanda API ye ulaşabilmek için Metamask cüzdan private keyinizi girmen gerekir.

Blockchain ve Kripto Paralar

Blockchain ve Bitcoin’e Giriş

Dünya blockchain ve bitcoin sayesinde artık dağıtık yapıya geçiyor. Eskiden haberleşme merkeziydi. Posta merkezinde toplanan mektup vs. evraklar merkezden adreslere dağıtılıyordu. İnternet alt yapısı ile birlikte email çıkınca gayri merkezi bir yapıya büründü. Yani birden fazla merkezden birden fazla insana dağılmaya başladı. Örneğin şu an bir mail attığınızda mail sunucusuna gidip ordan alıcısına yönleniyor. Merkeziyeti burada başlıyor. Sosyal medya araçlarının vs. gelişmesinden sonra ise herkesten herkese içerik gidebilir duruma geldi. Yani herkes hem üretebilir hem tüketebilir pozisyona geçti.

Parada bu noktada aynı durumda oluyor. Zamanla ise dijitalleşmeye başladı. Bankalar sayesinde gayri merkezi yönelime giriyor. Bitcoin ile bu tamamen merkeziyetsiz bir yapıya bürünecek gibi duruyor.

Paradan önce takas (değiş-tokuş) ile alışveriş yapılıyordu. Sonra para ortaya çıktı ve para aynı zamanda değer saklama ve transfer aracı oldu. Para esas sanayileşmeden sonra kullanılmaya başladı. Daha sonra ise gelişen internet ve bankacılık sayesinde artık para fiziki bir varlıktan dijital bir hale dönmeye başladı. Örneğin birine eskiden parayı elden veriyorduk. Sonra bankalardan transfer eder olduk. Ve hiç bir fiziki değişim olmadan sadece merkezi (banka) yapı işlem kayıtlarını tutup gönderici ve alıcı arasında bir bağ kurdu. Paranın genel manada aslında bir güven unsuru olduğunu söylemek gerekir. Tabi para kullanım amacı zamanla değişip sermaye olarak kullanılabilir. Bireyler için ise itibari bir unsur haline geldi.

Devamını oku