İçeriğe geç

Ethereum Dapp Geliştirme: Web3 Yeni Başlayanlar için Kavramsal Temeller

Bu blog, web3'ün merkeziyetsiz ağlar ve akıllı sözleşmelerle geliştirmeyi nasıl değiştirdiğini ele alarak Ethereum'da başlamak için temel bilgiler ve araçlar sunuyor.

7 dk okuma
Ethereum Dapp Geliştirme: Web3 Yeni Başlayanlar için Kavramsal Temeller

Çevrimiçi etkileşimlerin şeffaflık, güvenlik ve kullanıcı kontrolünü güvence altına alan merkezi olmayan bir ağ tarafından yönetildiği bir dünya hayal edin; blockchain teknolojisiyle güçlendirilen web3'ün vaat ettiği tam da budur. Bu makalede, Ethereum blockchain üzerinde geliştirme yapmayı anlamak için gerekli temel kavramları ve araçları inceleyeceğiz.

Web2'de istemci-sunucu mimarisinin nasıl çalıştığını açıklamak için genellikle "mutfak analojisi" kullanılır. Bu analojide sunucu bir mutfak gibidir; istemci (kullanıcı) ise yemek siparişi vermek gibi bir istek gönderir. Sunucu bu isteği işler ve pişirilmiş bir yemek servis etmeye benzer şekilde veriyi geri döndürür. API ise garson gibi davranır: siparişinizi mutfağa iletir ve yemeğinizi geri getirir; aynı dili konuşmasalar bile istemci ile sunucu arasındaki iletişimi kolaylaştırır.

Bu mutfak analojisini web3'ü açıklamak için de kullanabiliriz; ancak bazı temel farklılıklar söz konusudur: birden fazla özdeş mutfak (node) mevcuttur, bunlardan biri rastgele seçilir ve yemeğinizi almadan önce pişirme ücretini peşin ödemeniz gerekir.

Bir kullanıcı bir dapp ile etkileşime girdiğinde arka planda neler olduğunu anlamak için bu analojilerden yararlanacağız. Analojiler kusursuz olmasa da Ethereum üzerinde geliştirme yolculuğunuza başlamak için zihinsel bir model oluşturmanıza yardımcı olabilir.

Merkezi olmayan node'lar ve akıllı sözleşmeler - birden fazla mutfak

Merkezi olmayan dünyada geleneksel "sunucular" yoktur. Bunun yerine, inanılmaz sonuçlar elde etmek için birlikte çalışan merkezi olmayan node'lar dünya genelinde dağılmış durumdadır. Bu node'lar, her işlemin güvenli ve şeffaf olmasını sağlayan blockchain adlı ortak ve değiştirilemez bir defteri birlikte yönetir. Herhangi bir node işleminizi gerçekleştirebilir veya akıllı sözleşme kodunuzu çalıştırabilir.

Blockchain'de node nedir?

Bir blockchain node'u, bir blockchain protokolüne ait yazılımı çalıştıran ve ağına bağlanan herhangi bir bilgisayardır. Bu node'lar, blockchain altyapısını koruyan kilit paydaşlar olarak merkezi olmayan bir ağın omurgasını oluşturur. Depolama noktaları işlevi görürler; bu nedenle bir kullanıcı blockchain üzerindeki verilere eriştiğinde bir node ile etkileşime giriyor demektir. Node'lar şeffaftır ve ağdaki herkese açıktır.

Blockchain'ler merkezi bir otorite olmadan çalıştığından, kontrol; işlemleri doğrulama ve yönetim protokollerini yürütme gibi görevleri birlikte üstlenen bir node ağına dağıtılmıştır. Bir blockchain üzerindeki tüm token'lar ve akıllı sözleşmeler node'ların içinde yer alır; bu da onları blockchain'in işlevselliği açısından vazgeçilmez kılar. Node'lar olmadan blockchain'lerin temel yapısı var olamazdı.

Akıllı sözleşme nedir?

Akıllı sözleşme, blockchain üzerinde çalışan ve anlaşmanın koşullarının doğrudan içine kodlandığı, kendi kendini yürüten bir programdır. Belirli koşullar sağlandığında sözleşme, üzerinde mutabık kalınan koşulları otomatik olarak uygular ve yürütür; böylece aracılara olan ihtiyacı ortadan kaldırır.

Ancak bu merkezi olmayan ağda önemli bir zorluk, merkezi bir otoritenin yokluğunda node'ların dürüst davranmasını ve kullanıcı isteklerini doğru şekilde işlemesini sağlamaktır. İşte bu noktada "konsensüs" kavramı devreye girer.

Konsensüs mekanizmaları, tüm işlemlerin node'lar tarafından doğrulanmasını ve onaylanmasını sağlayarak dolandırıcılığı ve çifte harcamayı önler; blockchain'in bütünlüğünü korur. Mutfak analojimizi genişletirsek: seçilen mutfak siparişinizi hazırladıktan sonra tamamlanan yemeği ve tarifi diğer mutfaklarla paylaşır. Bu mutfaklar aynı tarifi takip eder, sonuçları karşılaştırır ve siparişin doğru hazırlandığını birlikte onaylayarak ağ genelinde tutarlılık ve doğruluk sağlar.

Akıllı sözleşme yaşam döngüsü yönetimi araçları

Web2'de sunucuları dağıtmak için altyapı yönetmeniz gerekirken, web3 arka uç mantığının büyük bölümünü blockchain üzerindeki akıllı sözleşmelere taşır. Aşağıda akıllı sözleşme geliştirmenin tüm yaşam döngüsünü kolaylaştıran bazı geliştirme ortamları yer almaktadır:

  • Hardhat: Akıllı sözleşmelerin ve uygulamaların düzenlenmesi, derlenmesi, hata ayıklaması ve dağıtımı için bileşenler içeren kapsamlı bir geliştirme ortamıdır. JavaScript konusunda yetkin olduğunuzda ve web teknolojileriyle kapsamlı entegrasyona ihtiyaç duyduğunuzda idealdir.

  • Foundry: Her şeyi Solidity ekosistemi içinde tutan, hızı ve Solidity için yerel desteği sayesinde üretkenliği artıran hızlı ve verimli bir seçenektir.

Hardhat ve Foundry'nin ayrıntılı karşılaştırması için Doğru Ethereum Geliştirme Aracını Seçmek adlı rehberimize göz atın.

  • Remix: Temel işlemler için önceden yüklenmiş eklentilere sahip çevrimiçi bir IDE'dir; yerel olarak herhangi bir şey yüklemenize gerek kalmadan kodu hızlıca test etmek için mükemmeldir.

Geliştiriciler akıllı sözleşme yazmak için çeşitli üst düzey programlama dilleri kullanabilir; bu diller daha sonra düşük düzeyli bytecode'a derlenir. En popüler iki dil şunlardır:

  • Solidity: JavaScript'e benzer söz dizimiyle birçok geliştirici için erişilebilir kılan bir dil olarak bilinir.

  • Vyper: Python benzeri söz dizimiyle gelişmiş güvenlik ve okunabilirlik için tasarlanmıştır.

Diğer diller arasında Yul, Cairo ve Rust yer almakta olup geliştirme ihtiyaçlarınıza bağlı olarak ek seçenekler sunar.

JSON-RPC API - garsonlar

Siparişiniz masanızdan mutfağa nasıl ulaşır ve tamamlanan sipariş masanıza nasıl geri gelir? Elbette garsonlar aracılığıyla!

Web2'de REST API'ler, uygulamanız ile iş mantığının bulunduğu arka uç sunucu arasındaki iletişimi kolaylaştıran "garsonlar" işlevi görür. Bu arka uçla etkileşime geçmek için bir URL ve çeşitli işlemler için belirli endpoint'lere ihtiyaç duyarsınız.

Web3'te blockchain node'uyla etkileşim, bir JSON-RPC API aracılığıyla gerçekleşir. Bu API, birden fazla dapp'in JSON-RPC çağrı gövdesinde iş mantığını içeren sözleşmeyi belirterek aynı URL ile etkileşime girmesini sağlar. JSON-RPC API'lere daha az aşina olsanız da burada gösterildiği gibi tipik HTTP isteklerine benzer şekilde çalışırlar:

curl  -X POST \\
  '<https://linea-goerli.infura.io/v3/2QBbceinBF3CvQvRwe9uaHLsOe>' \\
  --header 'Accept: */*' \\
  --header 'Content-Type: application/json' \\
  --data-raw '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
Kopyala

İsteğin gövdesindeki veri nesnesinin içeriğine yakından bakın:

{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}

JSON-RPC sürümünü, istenen işlem için bir yöntemi (örn. en son blok numarasını alma), isteğe bağlı parametreleri ve isteği takip etmek için bir ID'yi içerir. Bu format, ister veri alma ister blockchain işlemleri gerçekleştirme olsun, Ethereum node'larıyla iletişimi standart hale getirir.

İstekteki URL, kendi Ethereum node'umuzu kurma ve yönetmenin karmaşıklığından ve kaynak gereksinimlerinden bizi kurtaran bir node sağlayıcısı olan Infura'ya işaret eder. Bu URL, blockchain'e açılan bir ağ geçidi işlevi görür.

Pişirme ücretini peşin ödeme konusundaki önceki noktayı hatırlıyor musunuz? Web3'te işlem gerçekleştirmek, işlemin karmaşıklığına ve o anki ağ yoğunluğuna bağlı olarak "Gas ücreti" olarak bilinen bir maliyete yol açar. Ancak blockchain'den veri okumak ücretsizdir.

İşleminizin doğru anlaşılmasını ve yürütülmesini sağlamak için standart bir tanımlama yöntemine ihtiyaç duyulur. İşte bu noktada ABI (Application Binary Interface) devreye girer; bir menü gibi davranarak akıllı sözleşmenin fonksiyonlarıyla nasıl etkileşime girileceğini tanımlar, gerekli parametreleri belirtir ve fonksiyonun nasıl yürütüleceğini açıklar.

Peki dapp'iniz dağıtılmış akıllı sözleşmelerle nasıl iletişim kurar? Daha önce de belirttiğimiz gibi bu, JSON-RPC API kullanımını gerektirir; ancak bu süreci basitleştirmek için çeşitli kütüphaneler yardımcı olabilir. JavaScript'te Ethers.js veya Viem gibi seçenekler mevcuttur; React tabanlı ön uçlar için ise Ethereum'a yönelik bir React Hooks kütüphanesi olan wagmi özellikle kullanışlıdır. Bu kütüphaneler JSON-RPC çağrılarınızı sarmalayarak blockchain ve dağıtılmış sözleşmelerinizle etkileşimi daha yönetilebilir hale getirir.

Viem ve dolayısıyla Wagmi (arka planda viem kullanır), otomatik tamamlama, tür çıkarımı ve statik doğrulama ile geliştirici deneyimini geliştiren güçlü tipli API'ler sunar. Bir ABI sağlayarak viem, otomatik tamamlama sunar ve tür hatalarını kullanıcıları etkilemeden önce yakalar.

Ethers.js mi yoksa viem mi seçeceğinizden emin değil misiniz? Web3 Geliştiricileri için Ayrıntılı Karşılaştırmaya göz atın.

Web3 dapp ön uç geliştirme – yemek yeme

Akıllı sözleşmelerle etkileşime girmenin birden fazla yolu vardır; ancak en popüler yöntemi inceleyelim: blockchain ile etkileşim kurmak için tasarlanmış merkezi olmayan bir web veya mobil uygulama olan dapp aracılığıyla.

Peki bir dapp'i tipik bir web uygulamasından ayıran nedir? Görsel olarak genellikle belirgin bir fark yoktur. Geliştiriciler web3'te React, Next.js veya vanilla JavaScript gibi web2'den tanıdık web framework'lerini kullanabilir ve dapp'leri büyük ölçüde aynı şekilde dağıtabilir. Ancak web3'te yaygın olarak kullanılan IPFS (InterPlanetary File System) veya SWARM gibi merkezi olmayan depolama çözümleri de mevcuttur.

Web3 uygulamalarının büyük çoğunluğundaki belirgin özellik "Cüzdan Bağla" işlevidir. Bir dapp'te "Cüzdan Bağla" seçeneğine tıkladığınızda, uygulamayı cüzdanınızla etkileşime geçmeye yetkilendiriyorsunuz; bu sayede uygulama genel adresinizi okuyabilir ve sizin adınıza işlem talep edebilir. İşlemlerin, kullanıcının ilgili eylemi gerçekleştirmeye yetkili olduğunu doğrulamak amacıyla kimlik doğrulamasından geçmesi gerekir. Bu, özel anahtarınızı kullanan bir süreç olan imzalama yoluyla sağlanır; özel anahtar, bir Ethereum hesabının sahipliğinizi kanıtlayan ve cüzdanınızda güvenle saklanan benzersiz bir tanımlayıcıdır.

Cüzdanlara daha ayrıntılı bakalım: Cüzdanlar, MetaMask'ın en popülerlerinden biri olduğu tarayıcı uzantıları, mobil uygulamalar ve hatta fiziksel cihazlar dahil olmak üzere çeşitli biçimlerde gelir. Gerçek dünyadaki restoranların birden fazla ödeme yöntemini kabul etmesi gibi, dapp'inizde de birden fazla cüzdanı desteklemeniz gerekebilir.

Cüzdan bağlama özelliğini kolayca uygulamak ve çeşitli cüzdan türlerini desteklemek için aşağıdaki araçları kullanmayı düşünebilirsiniz:

Bu araçlar entegrasyon sürecini kolaylaştırarak dapp'iniz ile kullanıcının cüzdanı arasında sorunsuz bir bağlantı sağlayabilir.

Web3 geliştirme dünyasına daha derinlemesine dalmaya hazır mısınız?

Web3 geliştirme, blockchain üzerindeki akıllı sözleşmeleri kullanarak uygulamaların çalışma biçimini değiştirir; uygulamaları kalıcı kılar ve arka uç görevlerini merkezi sunuculardan uzaklaştırır. Bu dönüşüm, geliştiricilerin işlem imzalama, gas ücretlerini yönetme ve JSON-RPC API'leri kullanma gibi konulara aşina olmasını gerektirir; bu da web3'ü geleneksel web2 geliştirmesinden ayırt eder. Bu durum zorlu olabilse de yeni ve heyecan verici olanakların kapısını aralamaktadır.

Web3 geliştirme hakkında daha fazla bilgi edinmek ve en güncel araçlar ile en iyi uygulamalar hakkında bilgi sahibi olmak için geliştirici odaklı içgörüler ve rehberler sunan MetaMask blogunu ziyaret edin.

Yapay zeka tarafından çevrildi. Hatalar içerebilir. Lütfen her zaman bilgileri doğrulayın.

Çeviriyi değerlendir

Bu makalenin yazarı:

  • Kingsley Okonkwo

    Sertifikalı bir Ethereum Blockchain geliştiricisi olan Kingsley, Consensys'te teknik yazar olarak görev yapmakta olup özellikle geliştirici araçlarına odaklanmaktadır. Consensys'e katılmadan önce Kingsley, Gigster ve Braintrust dahil olmak üzere çeşitli platformlarda serbest back-end geliştirici olarak çalışmıştır. 5 yıllık yazılım geliştirme deneyimiyle JavaScript (Node.js ve React), GoLang, SQL ve Docker gibi araçlarda uzmandır. Kingsley, web3 teknolojisinin en güncel olanaklarını kullanarak adım adım eğitimler ve nasıl yapılır kılavuzları hazırlamada öne çıkmakta; bu sayede diğer geliştiricilerin daha iyi dapp'ler oluşturmasına yardımcı olmaktadır. Şu anda Dubai'de yaşayan Kingsley, boş zamanlarında basketbol ve futbol oynamaktan keyif almaktadır.

    Tüm makaleleri oku