Ethereum ağının akıllı sözleşme yapısını ve risklerini açıklar.
Ethereumun programlanabilir yapısı
Ethereum, kullanıcıların değer transferinin yanında program çalıştırabilmesine imkân veren açık bir blockchain ağıdır. Ağdaki hesaplar ETH gönderebilir veya akıllı sözleşme adı verilen kod parçalarını çağırabilir. Akıllı sözleşme, önceden yazılmış koşullar gerçekleştiğinde kendi kurallarını uygulayan programdır. Kodun zincir üzerinde çalışması, programın ekonomik amacının anlaşılır, adil veya güvenli olduğu anlamına gelmez. Bir uygulama kullanıcıdan işlem imzası isteyebilir; bu imza yalnızca ekranda görünen başlığa değil, sözleşmenin çağracağı işleme de yetki verebilir. Ethereumun teknik imkânı ile bir uygulamanın güvenilirliği bu nedenle ayrı sorulardır.
Ağdaki kayıtlar herkese açık biçimde incelenebilir olsa da bir adresin arkasındaki gerçek kişi ya da kuruluş otomatik olarak bilinmez. Ayrıca zincirde görülen bir işlem, kullanıcının işlemin bütün sonuçlarını anladığını kanıtlamaz. Ethereum üzerindeki uygulamalar; token takası, borç verme, oyun, dijital koleksiyon veya yönetişim gibi amaçlarla tasarlanabilir. Aynı altyapıyı kullanmaları, aynı risk düzeyine sahip olduklarını göstermez. Eğitimsel incelemede uygulamanın ne yaptığı, hangi sözleşmeleri çağırdığı, hangi yetkileri istediği ve hata durumunda ne olacağı ayrı ayrı değerlendirilir.
EVM ve işlem yürütmesi
Ethereum Virtual Machine, kısa adıyla EVM, Ethereum düğümlerinin akıllı sözleşme kodunu aynı kurallarla yürütmesine yarayan çalışma ortamıdır. Bir kullanıcı sözleşme çağrısı içeren işlem gönderdiğinde, düğümler işlemin imzasını, hesabın bakiyesini ve kodun ürettiği sonucu protokol kurallarına göre doğrular. Kod farklı düğümlerde aynı girdiyle aynı sonucu üretmeyi hedefler. Bu ortak yürütme, dış dünyadan gelen bilginin doğru olduğu, kodun hatasız yazıldığı veya kullanıcının doğru sözleşmeyle etkileşime girdiği güvencesini vermez.
EVMde bir sözleşmenin çağrılması, başka sözleşmelere de çağrı yapabilir. Bu nedenle kullanıcı arayüzünde basit görünen bir düğmenin teknik sonucu birden çok izin, transfer veya durum değişikliği içerebilir. Sözleşmenin kaynak kodunun yayımlanmış olması yararlıdır, ancak herkesin kodu okuyup doğru yorumlayabildiği anlamına gelmez. Kaynak kodun zincirdeki sözleşmeyle eşleşmesi, yükseltme yetkisi bulunup bulunmadığı ve yönetici anahtarlarının rolü de önem taşır. EVM, kurallı yürütme ortamıdır; insan hatasını veya kötü niyetli tasarımı otomatik olarak engelleyen bir denetçi değildir.
Proof of Stake ve doğrulayıcılar
Ethereum ana ağı güncel olarak Proof of Stake mutabakatını kullanır. Bu düzende doğrulayıcılar, ağın tanımladığı stake ve yazılım kuralları çerçevesinde blok önermek veya blokları onaylamak için görev alır. Doğrulayıcıların rolü, her işlemin ekonomik olarak iyi sonuç verdiğine karar vermek değil; işlemlerin ve blokların protokol kurallarına uyup uymadığını denetlemektir. Bir blok önerisinin kabul edilmesi, ilgili dAppin güvenli olduğu veya transferin kullanıcı açısından uygun olduğu anlamına gelmez.
Stake düzeni, doğrulayıcı davranışına ekonomik maliyet bağlamayı amaçlar. Çevrim dışı kalma, çelişkili doğrulama ya da protokolün tanımladığı başka ihlaller belirli yaptırımlara yol açabilir. Ancak stake edilmiş ETH, doğrulayıcılık yazılımı, hizmet sağlayıcının operasyonu ve ağın kendisi farklı risk kaynakları taşır. Doğrulayıcıların yoğunlaşması, istemci yazılımı hatası veya altyapı kesintisi ağın incelenmesi gereken özellikleridir. Proof of Stake, ETH fiyatı, uygulama getirisi veya doğrulayıcı sonucu hakkında garanti veren bir mekanizma değildir.
ETH, gas ve işlem maliyeti
ETH, Ethereumun yerel varlığıdır ve ağda işlem göndermek veya sözleşme çalıştırmak için gereken gas maliyetleri ETH ile ödenir. Gas, işlemin kullandığı hesaplama ve veri alanını ölçmeye yarayan birimdir; kullanıcı açısından görülen toplam ücret, gas miktarı ile işlem anındaki ücret parametrelerinin birleşiminden doğar. Basit bir ETH transferi ile çok adımlı sözleşme çağrısı aynı miktarda kaynak kullanmayabilir. Bu nedenle gönderilen ETH tutarı, işlem ücretini tek başına açıklamaz.
Ağ yoğunlaştığında blok alanı için rekabet artabilir ve ücret tahminleri değişebilir. Düşük ücretle gönderilen geçerli işlem daha uzun süre bekleyebilir; daha yüksek ücret seçimi ise işlemin amaçlanan sözleşmede doğru sonucu doğuracağını garanti etmez. Cüzdan veya hizmet arayüzünde gösterilen ağ ücreti ile hizmetin kendi tahsil ettiği bedeller de aynı kalem olmayabilir. İşlem onayından önce gönderilen tutar, hedef adres, çağrılan sözleşme ve tahmini maliyet ayrı okunmalıdır. Gas kavramı, ağ kullanımının maliyetini açıklar; işlem ya da varlık seçimi için sinyal üretmez.
Akıllı sözleşmeler ve dAppler
Merkeziyetsiz uygulama veya dApp, kullanıcı arayüzünün en az bir bölümünde Ethereum üzerindeki akıllı sözleşmelerle etkileşen uygulamayı anlatır. Bir dAppin web sitesi kapalı olsa bile sözleşme zincirde kalabilir; tersine, sözleşmenin zincirde bulunması kullanıcının ona erişebileceği veya uygulamanın çalışır durumda kalacağı anlamına gelmez. Arayüz, alan adı, cüzdan bağlantısı, oracle verisi ve sözleşme kodu farklı katmanlardır. Her katmanda ayrı hata ya da saldırı olasılığı bulunur.
Bazı sözleşmeler değiştirilemez biçimde dağıtılırken bazıları yükseltilebilir tasarlanır. Yükseltilebilirlik, hatayı düzeltme imkânı sunabilir; fakat kimlerin yeni kod yükleme yetkisi olduğunu da önemli hâle getirir. Çoklu imza cüzdanı, zaman kilidi veya yönetişim süreci gibi kontroller bulunabilir, ancak bunların varlığı tek başına yeterli güvence değildir. Bir dAppi incelerken token fiyatı yerine sözleşme yetkileri, veri kaynağı, bağımlı protokoller ve hata senaryoları üzerinde durmak daha açıklayıcıdır.
Hipotetik token izni ve ücret örneği
Hipotetik örnek: Bir kullanıcı, varsayımsal bir token uygulamasında tokenlerini kullanmak için bir izin işlemi onaylasın. Uygulama ekranda 50 tokenlik kullanım gösterse de imza penceresinde daha yüksek ya da sınırsız harcama izni yer alabilir. Kullanıcı sözleşme adresini ve izin miktarını incelemeden işlemi onaylarsa, sözleşmenin izin verilen sınır içinde token hareketi başlatabilmesi mümkündür. Bu örnek, belirli bir uygulamanın kötü niyetli olduğunu değil, izin işleminin transfer işleminden farklı sonuç doğurabileceğini açıklar.
Aynı varsayımsal durumda ağ yoğunluğu nedeniyle tahmini gas ücreti yükselmiş olsun. Kullanıcı işlemi imzaladığında ücret ödenmesi, uygulamadaki işlemin beklenen ekonomik sonucu verdiği anlamına gelmez; işlem başarısız olsa bile kullanılan hesaplama için ücret oluşabilir. İşlem ayrıntılarını okumak, bütün sözleşme riskini kaldırmaz. Hipotetik örnek herhangi bir token, uygulama veya ETH için kullanım, alım ya da satım önerisi değildir.
Token, anahtar ve sözleşme riskleri
Ethereum üzerindeki tokenler teknik olarak akıllı sözleşme kayıtlarıdır; ETH ile aynı ağda bulunmaları, aynı hakları veya aynı güvenlik düzeyini taşıdıkları anlamına gelmez. Token sözleşmesinde arzı artırma, transferi durdurma, kara liste uygulama veya yönetim yetkisi bulunabilir. Köprüler, oraclelar ve başka sözleşmelere yapılan bağımlılıklar ek saldırı yüzeyi yaratabilir. Denetim raporu bulunması da gelecekte hata olmayacağı, rapor kapsamının bütün yükseltmeleri içerdiği veya ekonomik tasarımın sağlam olduğu garantisi değildir.
Özel anahtar, kurtarma ifadesi, cüzdan bağlantısı ve işlem imzası kullanıcı güvenliğinin farklı parçalarıdır. Sahte dApp sitesi, taklit cüzdan eklentisi, zararlı imza isteği veya sahte destek mesajı erişim kaybına yol açabilir. Ethereum işlemleri teknik olarak geçerli olduğunda geri alma imkânı sınırlı olabilir. Fiyat oynaklığına ek olarak kod, saklama, ağ ücreti ve karşı taraf riski değerlendirilmelidir. Bu ders Ethereumun Proof of Stake, EVM, ETH, gas, akıllı sözleşme ve dApp yapısını açıklar; herhangi bir varlık veya hizmet için öneri içermez.
Kaynaklar
- Technical intro to Ethereum (Ethereum.org)