Akıllı sözleşmelere giriş
Sayfanın son güncellenmesi: 25 Şubat 2026
Akıllı sözleşme nedir?
Bir "akıllı sözleşme" basitçe Ethereum blok zincirinde çalışan bir programdır. Ethereum blok zincirindeki özel bir adreste bulunan bir kod (sözleşmenin fonksiyonları) ve veri (sözleşmenin durumu) koleksiyonudur.
Akıllı sözleşmeler bir tür Ethereum hesabıdır. Bu, onların bir dengeye sahip olduğu ve işlemlerinin hedefi olabilecekleri anlamına gelir. Ancak bir kullanıcı tarafından kontrol edilmezler, bunun yerine ağa dağıtılırlar ve programlandıkları gibi çalışırlar. Sonrasında kullanıcı hesapları akıllı sözleşmede tanımlanmış bir fonksiyonu yürüten işlemler göndererek akıllı sözleşme ile etkileşime geçebilirler. Akıllı sözleşmeler, normal bir sözleşmeye benzer şekilde kurallar belirleyebilir ve bu kuralları kod aracılığıyla zorunlu kılabilirler. Akıllı sözleşmeler varsayılan olarak silinemezler ve onlarla yapılan etkileşimler geri alınamaz.
Ön Koşullar
Yeni başlıyorsanız veya daha az teknik bir giriş arıyorsanız, akıllı sözleşmelere giriş yazımızı öneririz.
Akıllı sözleşmeler dünyasına dalmadan önce hesaplar, işlemler ve ethereum sanal makinesi hakkında bilgi edindiğinizden emin olun.
Dijital bir otomat
Nick Szabo'nun da (opens in a new tab) belirttiği gibi, bir akıllı sözleşme için en iyi metafor belki de bir otomattır. Doğru girdilerle, belli bir çıktı garanti edilir.
Otomattan bir atıştırmalık almak için:
1para + atıştırmalık seçimi = atıştırmalık verildiBu mantık otomatın içine programlanmıştır.
Bir akıllı sözleşme, tıpkı bir otomat gibi içine programlanmış bir mantığa sahiptir. Solidity'de yazılmış bir akıllı sözleşme olsaydı otomatın nasıl görüneceğini aşağıdaki basit örnekte görebilirsiniz:
1pragma solidity 0.8.7;23contract VendingMachine {45 // Sözleşmenin durum değişkenlerini bildirin6 address public owner;7 mapping (address => uint) public cupcakeBalances;89 // 'VendingMachine' sözleşmesi dağıtıldığında:10 // 1. dağıtan adresi sözleşmenin sahibi olarak ayarlayın11 // 2. dağıtılan akıllı sözleşmenin kek bakiyesini 100'e ayarlayın12 constructor() {13 owner = msg.sender;14 cupcakeBalances[address(this)] = 100;15 }1617 // Sahibin akıllı sözleşmenin kek bakiyesini artırmasına izin verin18 function refill(uint amount) public {19 require(msg.sender == owner, "Yalnızca sahibi yeniden doldurabilir.");20 cupcakeBalances[address(this)] += amount;21 }2223 // Herkesin kek satın almasına izin verin24 function purchase(uint amount) public payable {25 require(msg.value >= amount * 1 ether, "Kek başına en az 1 ETH ödemelisiniz");26 require(cupcakeBalances[address(this)] >= amount, "Bu satın alımı tamamlamak için stokta yeterli kek yok");27 cupcakeBalances[address(this)] -= amount;28 cupcakeBalances[msg.sender] += amount;29 }30}Tümünü gösterBir otomatın bir kasiyere olan ihtiyacı yok etmesi gibi, akıllı sözleşmeler de birçok endüstrideki aracıların yerini alabilir.
İzin gerektirmeyen
Herkes bir akıllı sözleşme yazabilir ve onu ağa dağıtabilir. Tek yapmanız gereken bir akıllı sözleşme dilinde kod yazmayı öğrenmek ve sözleşmenizi dağıtmak için yeterli ETH'ye sahip olmaktır. Bir akıllı sözleşmenin dağıtılması teknik olarak bir işlem olduğundan, basit bir ETH transferi için gaz ödediğiniz gibi bunun için de gaz ödemeniz gerekir. Ancak akıllı sözleşme dağıtımının gaz masrafı çok daha fazladır.
Ethereum, akıllı sözleşme yazmak için geliştirici dostu dillere sahiptir:
- Solidity
- Vyper
Ancak, Ethereum sanal makinesinin sözleşmeyi yorumlayabilmesi ve depolayabilmesi için dağıtılmadan önce derlenmeleri gerekir. Derleme hakkında daha fazlası
Birleştirilebilirlik
Akıllı sözleşmeler Ethereum üzerinde herkese açıktır ve açık API'ler olarak düşünülebilirler. Bu, kendi akıllı sözleşmenizde başka akıllı sözleşmeleri çağırarak olanakları büyük ölçüde genişletebileceğiniz anlamına gelir. Sözleşmeler, başka sözleşmeleri bile dağıtabilir.
Akıllı sözleşme birleştirilebilirliği hakkında daha fazla bilgi edinin.
Sınırlamalar
Akıllı sözleşmeler, zincir dışı kaynaklardan veri çekemedikleri için tek başlarına "gerçek dünya" olayları hakkında bilgi toplayamazlar. Dolayısıyla gerçek dünyada gerçekleşen olaylara yanıt veremezler. Bu, tasarımlarının bir gereğidir. Dış bilgiye bağımlı olmak, güvenlik ve merkeziyetsizlik için önemli olan mutabakatı riske atabilir.
Ancak blokzincir uygulamaları için zincir dışından edinilen verileri kullanabilmek önemlidir. Çözüm, zincir dışı verileri alıp akıllı sözleşmeler için kullanılabilir hale getiren araçlar olan kâhinlerdir.
Akıllı sözleşmelerin diğer bir kısıtlaması ise maksimum sözleşme boyutudur. Bir akıllı sözleşme maksimum 24 KB olabilir: Aksi takdirde sahip olduğu gaz tükenir. Bu, Elmas Modeli (The Diamond Pattern) (opens in a new tab) kullanılarak aşılabilir.
Çoklu imzalı (Multisig) sözleşmeler
Çoklu imza sözleşmeleri, bir işlemi gerçekleştirmek için birden fazla geçerli imza gerektiren akıllı sözleşme hesaplarıdır. Bu, önemli miktarda ether veya diğer tokenleri tutan sözleşmeler için tek başarısızlık noktalarından kaçınmak için çok kullanışlıdır. Çoklu imzalar, ayrıca sözleşme yürütme ve anahtar yönetimi sorumluluğunu birden fazla taraf arasında bölüştürür ve tek bir özel anahtarın geri dönüşü olmayan fon kaybına yol açmasını önler. Bu nedenlerle, basit DAO yönetişimi için çoklu imza sözleşmeleri kullanılabilir. Çoklu imzalar, yürütülmek için M olası kabul edilebilir imza arasından N imza gerektirir (burada N ≤ M ve M > 1). N = 3, M = 5 ve N = 4, M = 7 yaygın olarak kullanılır. 4/7 çoklu imza, olası yedi geçerli imzadan dördünü gerektirir. Bu, üç imza kaybolsa bile fonların geri alınabileceği anlamına gelir. Bu durumda, sözleşmenin uygulanabilmesi için anahtar sahiplerinin çoğunluğunun kabul etmesi ve imzalaması gerektiği anlamına da gelir.
Akıllı sözleşme kaynakları
OpenZeppelin Contracts - Güvenli akıllı sözleşme geliştirme kütüphanesi.
- openzeppelin.com/contracts/ (opens in a new tab)
- GitHub (opens in a new tab)
- Topluluk Forumu (opens in a new tab)