---
# System prepended metadata

title: SMART CONTRACT - Ethereum

---

<h1>Bölüm 1 - SMART CONTRACT - Ethereum</h1>

Çok uzun zaman önce yazdığım ama yayınlamadığım bir notum, biraz güncelleyip yayınlamaya çalıştım. 

***Şimdi, Biraz Ethereum (Hesaplar) Bahsedelim***

Hesap Türleri;
- Harici olarak sahiplenilmiş hesaplar(EOA) - özel anahtarı olan herhangi biri tarafından kontrol edilir.
- Sözleşme Hesabı - kod tarafından kontrol edilen, ağ içinde yayılmış bir akıllı sözleşmedir.

Her ikisi de ETH ve token tutabilir, gönderebiir ve dağıtılmış akıllı sözleşmelerle etkileşime girebilir. 


---

***Bir Hesabın İncelenmesi***

**nonce**: Harici olarak hesaptan gönderilmiş ya da sözleşme hesabı tarafından yaratılmış sözleşmelerin sayısını belirten bir sayaç. Verilen tek seferlik sayı ile her bir hesap için sadece bir işlem yürütülebilir (Replay Attacks'a karşı koruma sağlar).

**balance**: Bu adrese ait wei sayısı. Wei, ETH'nin birimidir ve ETH başına 1e+18(10^18) wei bulunur.

**codeHash**: Bu hash değeri, EVM üzerinde ki bir hesabın kodunu temsil eder. Sözleşme hesaplarına, farklı işlemler gerçekleştirebilen kod parçacıkları programlanmıştır. Hesap bir mesaj çağrısı olduysa bu EVM kodu çalışır. Diğer hesap alanların aksine değiştirilemez. Bu türde ki tüm kod parçaları, daha sonra geri alınmak üzere durum veri tabanında (state database) karşılıklı gelen hash'leri altında bulunur. 

**storageRoot**: Bazen depolama hash'i ya da depolama kökü olarak da bilinir. Hesabın depolama içeriğini kodlayan bir [Merkle Patricia](https://ethereum.org/tr/developers/docs/data-structures-and-encoding/patricia-merkle-trie/) ağaç kök düğümünün 256 bit hash değeri, (256 bit tamsayı değerleri arasında eşleşme), 256 bitlik tamsayı anahtarının 256 bitlik keccak hash değerine eşleyen bir yapıdır. Varsayılan olarak boştur(depolama içeriği - başlangıçta boştur). 

![](https://hackmd.io/_uploads/rkm-xB39A.png)



***NOT: Hesap, cüzdan demek değildir.***






---








<h2>İşlemler (Transaction)</h2>

**from**: İşlemi imzalayacak olan göndericinin adresi.

**recipient**: Alıcı adres.

**signature**: Gönderenin tanımlayıcısı. İmza, yetki verme.

**nonce**: Hesabın işlem sayısını belirten ve ardışık olarak artan bir sayaç.

**value**: Göndericiden alıcıya aktarılacak ETH miktarı.

**gasLimit**: İşlem tarafından tütketilebilecek maksimum gaz miktarı.

**maxPriorityFeePerGas**: Doğrulayıcıya bir bahşiş olarak eklenmesi için harcanan gazın maksimum fiyatı.

**maxFeePerGas**: İşlem için ödenebilecek gaz birimi başına maksimum ücret.


---

### Gas
Belirtildiği gibi, işlemlerin yürütülmesi gas harcar. Basit bir transaction ~21.000 birim gaz gerektirir. 

Örneğin Bob'un 1 ETH'yi Alice'e 190 gwei *baseFeePesGas* ve 10 gwei *maxPriorityFeePerGas* ile göndermesi için aşağıdaki ücreti ödemesi gerekir. (Bob'un)

> (190+10) * 21.000 = 4.200.000 gwei
> veya 
> 0,0042 ETH

Bob'un hesabı -1,0042 ETH borçlandırılacak Alice'in hesabı 1 ETH alacaklandırılacak.

![](https://hackmd.io/_uploads/S1ZRIH35R.png)

##### İşlemde kullanılmayan gas, kullanıcı hesabına iade edilir.

---

## İşlem Yaşam Döngüsü 
İşlem gönderildikten sonra.


1- Bir işlem kriptografik olarak oluşturulur. 
2- İşlem sonrasında ağa yayınlanır ve diğer bekleyen ağ işlemlerinden oluşan işlem havuzuna eklenir.
3- Bir doğrulayıcı, işlemi doğrulamak ve *"başarılı"* olarak değerlendirmek için işleminizi seçmeli ve bir blok eklemelidir. 
4- Zaman geçtikçe işlemi taşıyan blok önce *"kanıtlanmış"* sonrasında *"sonlandırılmış"* şeklinde güncellenecektir. Bu yükseltmeler işleminizin başarılı olduğunu ve asla değişmeyeceğini daha netleştirir. 


Devamı : [Bölüm 2](https://hackmd.io/@yigitraphy/rJ4ulvhqR)