• Home
    • Contact

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃

    Table of Contents

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - 192a

    Selllaaammm değerli okuyucularım😊 , ben Elif Hilal! 🔮 öncelikle yazılarımı okuduğunuz için teşekkür ederim. Aranızda beni tanımayan veya ilk defa ismimi duyanlar varsa, kendimi tanıtmak için buraya bir link bırakayım.

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - 6851

    Geçtiğimiz haftalarda bir yazı serisine başlayacağımdan bahsetmiştim. Serinin ilk yazısında Stablecoin’lere değindim. Aşağıya linki ekliyorum.

    Bu uzun soluklu yazı serisinde, Purdue Üniversitesi’nin Blockchain derslerinden öğrendiğim ne varsa sizlerle paylaşmaya çalışıyorum. Ara sıra yazılarım gecikiyor, kusura bakmayın.🙂

    Bu hafta öğrendiklerim ve dolayısıyla bu yazının içeriğinde bahsedeceğim konular şu şekilde:

  • Smart Contracts
  • Hybrid Smart Contracts
  • Upgradeable smart contracts
  • Smart Contract Benefits
  • Smart Contract Examples
  • NOT : Yazıda DON olarak karşılaşacağınız ifade Decentralized Oracle Network’tür, yani Merkeziyetsiz Oracle Ağı. Çok karşılaşacağınız için uyarayım dedim :)

    Ve birkaç detay konu daha işledik🙂 Hazırsanız derste dinlediklerimi, araştırdıklarımı ve kendi fikirlerimi toparlayıp açıklıyorum👉🏻

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - a67d

    📌Smart Contracts / Akıllı Sözleşmeler🛠️

    Akıllı sözleşmeler, daha önceden tanımlanmış belirli koşullar yerine getirildiğinde, bir blockchain ağında çalışan programlardır. Yani aslında biz akıllı sözleşmeler, bir blockchain ağında yürütülen bilgisayar programlarıdır diyebiliriz.

    Akıllı sözleşmeler ilk olarak 1994 yılında Amerikalı bilgisayar bilimcisi ve kriptograf Nick Szabo tarafından icat edildi. (Hocamız Nick Szabo’dan bahsederken bir deha olarak söz ediyor, multidisipliner ve bu disiplinleri harika bir şekilde bir araya getiren bir deha) Nick Szabo bir yazısında, aşağıdaki gibi geniş bir akıllı sözleşme tanımından bahsetmiş:

    “Ortak sözleşme koşullarını yerine getirmek, hem kötü niyetli hem de tesadüfi istisnaları en aza indirmek ve güvenilir aracılara olan ihtiyacı en aza indirmek” gibi genel amaçlarla “bir sözleşmenin şartlarını yerine getiren bilgisayarlı bir işlem protokolüdür”
    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - a76e

    Otomat makineleri gibi sistemlerde genel bir akıllı sözleşme kavramı benzerliği çok popüler oldu, eminim sizler de duymuşsunuzdur. Otomat’a ne kadar para atarsanız o fiyata uygun bir ürün alırsınız. Akıllı sözleşmeler de bu mantıkla çalışır.

    Bu arada Nick Szabo’nun ilk kez akıllı sözleşme tabirini kullandığı yazısını da okumalısınız kesinlikle :

    Akıllı sözleşmeler, bir sözleşmenin şartlarını, sözleşme şartları yerine getirildiğinde otomatik olarak yürütülen bilgisayar koduna çevirerek sözleşmeleri dijitalleştirir.

    Yani bu ne demek? Güven kavramını insanlardan alıp teknolojiye veriyoruz demek. Merkezi bir sunucu yerine merkeziyetsiz bir blockchain üzerinde çalışan akıllı sözleşmeler, birden fazla tarafın; bir sonuca doğru, zamanında ve manipülasyona karşı korumalı bir şekilde ulaşmasını sağlar. Bu sebeple güven kavramı teknolojinin kendisi tarafından otomatik olarak sağlanır. ‍ Akıllı sözleşmeler aslında güçlü ve sağlam bir altyapıya sahiptir. Çünkü, merkezi bir yöneticileri yoktur ve bu da tek hedefli saldırılara karşı korumalı oldukları anlamına gelir. (Bu konu derste biraz tartışıldı ama en temel halinin bu , çünkü yanlış ve eksik yazılan kodların ciddi anlamda büyük hasarlara yol açacağını bilmemiz lazım.)

    Bu arada bahsetmeden geçmeyeceğim. Temmuz 2022 itibariyle, Ethereum hala en popüler DApp platformu olarak kabul ediliyormuş.Bildiğimiz üzere DApp’lerin çoğu Ethereum blockchainini kullanır ve platform, en yüksek sayıda günlük aktif kullanıcıya ve akıllı sözleşmelere sahiptir.

    Ethereum’un popülaritesi, akıllı sözleşmeler sunan ilk blockchain olması gerçeğinden kaynaklanmaktadır.

    Ethereum akıllı sözleşmeleri genellikle Solidity veya Vyper gibi üst düzey bir dilde yazılır. Eğer smart contract developer olma yolundaysanız bu dillere ağırlık vermeniz iyi olur.

    Bu konuda nasıl smart contract developer olurum diye düşünenlere şu yazıyı bırakıyorum :

    Her iki dil de EVM bayt kodu kullanılarak derlenir. Günümüzde akıllı sözleşmeleri destekleyen çok sayıda başka blockchain de var elbette.

    Akıllı Sözleşmelerin Çalışma Prensipleri🛠️

    Akıllı sözleşmeler, şu mantıkla çalışan programlardır: “x olayı olursa/olduğunda, ardından y eylemini yürütün.”

    Bunu Nick Szabo’nun tabiriyle şöyle de ifade edebiliriz :

    Akıllı sözleşme için basit bir metafor, otomatlardır. Belirli girdiler, önceden belirlenmiş çıktıları garanti eder;

  • Bir ürün seçiyorsunuz
  • Otomat, ürünü satın almak için gereken tutarı gösterir
  • Doğru miktarı girersiniz
  • Otomat, doğru miktarı girdiğinizi doğrular
  • Otomat, tercih edilen ürünü verir
  • Otomat, yalnızca tüm gereksinimler karşılandıktan sonra istediğiniz ürünü verecektir. Bir ürün seçmezseniz veya yeterince para koymazsanız, satış makinesi ürününüzü vermez. Akıllı sözleşmeler de böyle çalışır.

    Bir akıllı sözleşme, birden çok farklı koşula sahip olabilir ve bir uygulama, birbirine bağlı bir dizi süreci desteklemek için birden çok akıllı sözleşmeye sahip olabilir. Yani bir uygulamanın sadece bir tane akıllı sözleşme ile çalıştığını düşünmeyin. Akıllı sözleşme programlama için birden fazla akıllı sözleşme dili de vardır ve bunlardan en popüleri Solidity’dir. Hocamız Rust programlama dilini daha çok seviyor ve kullanmayı öneriyor ancak bu dilin kullanımı birazcık daha sınırlıdır, bunu bilmekte fayda var 😊 ‍ Herhangi bir developer akıllı bir sözleşme oluşturabilir. Örneğin kendi amaçları için, fonlarını otomatik olarak en yüksek kazanç sağlayan uygulamaya kaydıran kişisel bir getiri fon toplayıcı sözleşmesi gibi, bunu halka açık bir blok zincirinde çalıştırabilir.

    Bununla birlikte, birçok akıllı sözleşme, birbirini tanıyan veya tanımayan ve birbirlerine güvenmeleri gerekmeyen birden fazla bağımsız tarafı içerir.
    Bu arada, bence bu bilgi çok güzel bir bilgi ; akıllı sözleşme, akıllı sözleşmeyle kimin, hangi zamanlarda etkileşim kurabileceğini ve hangi girdilerin hangi çıktılarla sonuçlanacağını içerecek şekilde, kullanıcıların onunla tam olarak nasıl etkileşim kurabileceğini tanımlayabiliyor.

    Smart Contract çalışma süreci şu şekildedir :

  • Akıllı sözleşmede tanımlanan bir fonksiyonu yürütmek için akıllı sözleşmenin adresi alınır.
  • State (Durum) değişikliği yapan her fonksiyon bir işlem çağırır.
  • İşlemin onaylanması için madenciler tarafından işlenmesi gerekir.
  • Başarılı bir madencilik işlemi sonrasında oluşan yeni blok içerisinde bu işlem olacaktır.
  • Madenci tarafından oluşturulan yeni blok eş düğümlere yayınlanacaktır.
  • Yeni blok, yerel blokzincirde resmi bir blok haline gelmek üzere eş düğümler tarafından doğrulanacaktır.
  • Smart Contract Örnekleri🛠️

    👀 Akıllı sözleşmenin amaçlarından biri, belirli bir iş sürecini otomatikleştirmektir. Küresel ticaret için basit bir akıllı sözleşme örneği aşağıdaki gibi terimleri içerebilir:

  • Örnek 1: Mallar zamanında ulaşırsa, satıcıdan tedarikçiye tam tutarda bir ödeme yapılacak.
  • Örnek 2: Mallar bir gün geç gelirse, satıcıdan tedarikçiye tam tutarın %98'i kadar bir ödeme yap.
  • Şimdi bu örneklerde diyeceksiniz ki, malların geç gelip gelmediğini Blockchain nerden biliyor? İşte bu harika bir soru. Bu sorunun cevabı Oracle’dır. Oracle’lar Blockchain’e dünyadaki verileri verirler. (garip bir cümle oldu :D) Oracle hakkında detaylı bilgiye şu yazımdan ulaşabilirsiniz :

    Diğer akıllı sözleşmeler, herhangi bir izne ihtiyaç duymadan herkesin etkileşimde bulunabileceği genel merkezi olmayan uygulamaları (dApp’ler) destekler. Public dApp’ler genellikle açık kaynaklıdır, bu nedenle dünyadaki herkes onlarla etkileşim kurup kurmamaya karar vermeden önce tam olarak nasıl çalıştıklarını inceleyebilir. Kamuya açık bir dApp örneği, aşağıdaki terimlere sahip olabilecek merkeziyetsiz bir borç verme/borç alma piyasasıdır:

  • Örnek 1: Kullanıcı belirli bir akıllı sözleşmeye teminat yatırırsa, teminat değerinin %50'sine kadar bir kredi alabilir (yani, 100$’lık depozito verirse, 50$’a kadar kredi alabilir).
  • Örnek 2: Kullanıcının teminatlandırma oranı (teminat/ödenmemiş kredi değeri) %200'ün altına düşerse, kullanıcının teminatı otomatik olarak tasfiye edilir ve para kaybetmemeleri için borç verenlere aktarılır.
  • Örnek 3: Borç veren, faiz oranı ödemelerinin bir kısmı için hak talebinde bulunurken; borç verenler, diğer kullanıcıların önceden tanımlanmış teminatlandırma oranlarında ödünç alabileceği belirli bir sözleşmeye fon yatırabilir.
  • Akıllı Sözleşmelerin Faydaları👀

    Çoğu geleneksel dijital sözleşme, birbirini tanımayan ya da az tanıyan iki taraf arasında gerçekleşir ki bu durum da her iki tarafın da taahhütlerini yerine getirmeme riskini taşır. Bu da daha büyük hukuki sorunşara yol açar. Hiç şaşmaz.

    Karşı taraf riskini çözmek için dijital sözleşmeler genellikle sözleşmenin şartlarını uygulayabilen bir banka gibi daha büyük, merkezi kurumlar tarafından yürütülür. Bu dijital sözleşmeler doğrudan bir kullanıcı ile büyük bir şirket arasında olabilir veya iki kullanıcı arasında güvenilir bir aracı olarak hareket eden büyük bir şirketi içerebilir. Tabi bu da , başka bir üçüncü bir tarafa güvenmeyi gerektirdiğinden hiçbir sorunu tam anlamıyla çözmez. Sadece daha büyük risk demektir.

    Oraclelar, akıllı sözleşme uygulamalarının harici olayları doğrulayabilmesi, harici sistemlerde eylemleri tetikleyebilmesi ve zincir üzerinde yapılması mümkün veya pratik olmayan hesaplamalardan yararlanabilmesi için blok zincirlerine dış dünyaya güvenli köprüleri sağlar.

    Diğer derste oracle’lar üzerine konuştuk ve epey tartıştık. Bir sonraki yazımda detaylıca ele alacağım :)

    Hibrit Akıllı Sözleşmeler🎁

    Hibrit akıllı sözleşmeler, özellikle her ortam diğerinin sağlamadığı özellikleri sağlama konusunda uzmanlaştığı için, ne bir blockchain ne de bir oracle ağının tek başına başaramayacağı üstün bir uygulama oluşturmak için birbirinden tamamen farklı iki bilgi işlem ortamını senkronize eder.🙂

    Hibrit akıllı sözleşmeler, her şeyden önce iki bölümden oluşan uygulamalardır:

    İki bileşen, tek bir hibrit akıllı sözleşme uygulaması oluşturmak için birbirleriyle sorunsuz ve güvenli bir şekilde entegre olur ve çalışırlar.

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - 3661
    Hibrit akıllı sözleşmeler, özellikle her ortam diğerinin sağlamadığı özellikleri sağlama konusunda uzmanlaştığı için, ne bir blockchain ne de bir oracle ağının tek başına başaramayacağı üstün bir uygulama oluşturmak için birbirinden tamamen farklı iki bilgi işlem ortamını birbirine entegre eder.

    Hibrit Akıllı Sözleşmeler, Zincir İçi ve Zincir Dışı Hesaplamayı Nasıl Birleştirir? 🛠️

    Zincir içi ve zincir dışı bileşenler arasındaki farkı daha iyi anlamak için, her birinin farklı rollerini tanımlayacağız:

    Zincir Üzerinde: Blockchain

  • Kullanıcı varlıklarının yetkili bir şekilde gözetimini sağlayan ve özel anahtarlarla etkileşime giren kalıcı bir defter tutmak
  • Kullanıcılar arasında değer aktaran geri alınamaz işlemleri işleyerek nihai ödemeyi gerçekleştirmek
  • Bir DON (merkeziyetsiz oracle ağı) tarafından gerçekleştirilen zincir dışı hizmetlerin düzgün çalışmasını sağlamak için anlaşmazlık çözümü sağlamak
  • Zincir Dışı: Merkeziyetsiz Oracle Ağı

    Peki Merkeziyetsiz Oracleların görevi ne?

  • Blok zincirleri ve Layer-2 çözümleri üzerinde çalışan akıllı sözleşmelere harici API’lerden veri getirmek, doğrulamak, güvenliğini sağlamak ve iletmek
  • Blok zincirleri ve Layer-2 çözümleri üzerinde çalışan akıllı sözleşmeler için çeşitli hesaplama türleri gerçekleştirmek
  • Akıllı sözleşme kodunun çıkışlarını diğer blok zincirlerine veya harici sistemlere aktarmak
  • Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - 4b43

    Hibrit Akıllı Sözleşmeler Nerede Kullanılır?👻🛠️

    Merkeziyetsiz oraclelar yani DON’lar, gizlilik veya ölçeklenebilirlik gerektiren çok sayıda akıllı sözleşme uygulamasının kilidini açıyor. Ne gibi uygulamalar mesela?

    Hibrit akıllı sözleşmeler, sosyal sistemlerde matematik tabanlı ekonomik adalet ve şeffaflık için yeni bir emsal oluşturmak için daha önce hiç görülmemiş yeni kullanım durumlarına da yol açıyor.

    Halihazırda veya yakın gelecekte hibrit akıllı sözleşmelerden etkilenecek olan başlıca endüstrilerden bazıları şunlar:

  • Kimlikler — Artık Blockchain tabanlı kimlikler söz konusu. Yakın gelecekte otomatik ve gizliliği koruyan hatta doğrulanabilen kimlik bilgilerinin zincire aktarılması söz konusu olacak. Akıllı sözleşmeler, gereken kişisel bilgileri ve bunları aldıktan sonra gerçekleştirilen eylemleri tanımlayabilirken, DON’lar bir kullanıcının kişisel bilgilerini kamuya ifşa etmeden, karşı tarafa ifşa etmeden ve/veya harici bir sistemde saklamadan doğrulayan hesaplamalar yapabilir.
  • Finans Sektörü — Sansüre dayanıklı, manipülasyona dayanıklı, küresel olarak erişilebilir ve şeffaf olan açık finansal piyasalar değişime uğrayacak gibi gözüküyor. Akıllı sözleşmeler hem alıcılar hem de satıcılar için katılım kurallarını tanımlayabilirken, DON’lar harici verileri kullanarak ürünleri fiyatlandırabilir ve piyasaları düzenleyebilir ve ayrıca işlem gizleme, KYC (know your customer-müşterini tanı) doğrulaması, adil işlem siparişi ve yüksek hız gibi isteğe bağlı özellikler için hesaplamalar yapabilir.
  • Tedarik Zinciri — Sanırım en çok duyacağımız sektör bu 😊 Paylaşılan bir defter üzerinde çalışan, ürün hatlarını dijitalleştiren ve/veya doğrulanmış verileri kullanarak farklı sistemlerdeki eylemleri otomatikleştiren çok taraflı ticaret anlaşmaları olarak ifade edebiliriz. Akıllı sözleşmeler çeşitli sorumlulukları, ödeme koşullarını ve cezaları ana hatlarıyla belirleyebilirken, DON’lar gönderilerin izlenmesine, kalite kontrolün izlenmesine, müşteri kimliklerinin doğrulanmasına ve gizliliği koruyan hesaplamaların ve IoT ağlarından, web’den gelen harici veri beslemelerinin bir kombinasyonunu kullanarak ödemeleri tetiklemesine yardımcı olabilir.
  • Sigortacılık Sektörü — Önceden belirlenmiş olaylara dayanarak iki taraflı parametrik sigortalar harika bir örnek. Akıllı sözleşmeler, primleri ve talep süreçlerini tanımlayabilirken, DON’lar, taleplerin fiyatlandırılması ve hakemlik edilmesi için sözleşmeyi harici veri akışlarına bağlayabilir. DON’lar ayrıca risk değerlendirmesi hesaplamaları yapabilir, karmaşık risk değerlendirmesi çıktıları alabilir (ör. bir bulut platformundan) ve kimlikleri gizli bir şekilde doğrulayabilir.
  • Oyun Sektörü — Özellikle ödüllerin verilmesini otomatikleştiren, kullanıcılara NFT’ler aracılığıyla oyun içi varlıkların tam mülkiyetini veren ve tüm oyuncuların eşit kazanma şansına sahip olduğunun kesin kanıtını sağlayan oyun platformları epey değişecek gibi gözüküyor.
  • Akıllı sözleşmeler oyun ve ödül dağıtım modellerini tanımlayabilirken DON’lar kanıtlanabilir şekilde tarafsız oyun ve adil ödül dağıtımları sağlamak için manipülasyona dayanıklı rastgelelik/randomness sağlayabilir. DON’lar ile oyun dApp’leri, artırılmış gerçeklik için IoT sensör okumaları gibi gerçek dünya veri akışlarını da bağlayabilir ve daha yüksek performans elde etmek için belirli oyun işlevlerini zincir dışında işleyebilir.

  • Pazarlama Sektörü— Ödülleri veriye dayalı performans hedeflerine dayalı olarak gerçek zamanlı olarak otomatik olarak dağıtan pazarlama kampanyalarından bahsediyorum. Akıllı sözleşmeler, belirli kilometre taşlarıyla kademeli bir ödeme modeli tanımlayabilirken, DON’lar performans ölçümlerinin isabet ettiğini doğrulayabilir ve gelişmiş kampanya değerlendirmeleri için müşteri verileri ve daha geniş pazar eğilimleri hakkında gizli hesaplamalar sağlayabilir.
  • Yönetişim — paylaşılan sistemleri ve havuzlanmış varlıkları güvenli ve adil bir şekilde yöneten dağıtılmış topluluklar. Akıllı sözleşmeler tüm yönetim çerçevesini tanımlayabilirken DON’lar kar paylaşımını tetiklemek, paylaşılan ücretleri düşürmek, Sybil saldırılarını azaltmak için kimlikleri kontrol etmek, üyelik taahhütlerini doğrulamak ve hatta karar vermeyi otomatikleştirmek için harici veriler ve hesaplamalar sağlayabilir.
  • Nihayetinde DON’lar, blok zincirlerinin doğal olarak desteklemediği tüm hizmetleri ve ayrıca kriptografik güvenlik garantilerini mevcut veri ve sistemlere genişleterek zincir dışı önyükleme hizmetlerini sağlayabilir.

    Hibrit bir akıllı sözleşme mimarisi, merkeziyetsiz sistemlere dayalı daha geniş bir işbirliği vizyonunun gerçekleştirilmesine yardımcı olarak, blok zincirlerinin ve blok zinciri olmayan altyapının güvenli, güvenilir, ölçeklenebilir, gizli, özelleştirilebilir ve/veya evrensel olarak bağlantılı bir şekilde sorunsuz bir şekilde etkileşime girmesine olanak tanır.

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - 1ace

    Upgradable Smart Contracts 🦾

    Dersrte hocamızın söylediği ve not aldığım bir cümle var. “Errors are inevitable parts of software development.” Yani, “hatalar, yazılım geliştirmenin kaçınılmaz bir parçasıdır” Hayatımızın da öyle, değil mi? 😅

    Yukarıda da değindiğim üzere, akıllı sözleşme, blok zincirinde depolanan yürütülebilir bayt kodudur. Kod, bir akıllı sözleşme adresine deploy edildikten sonra, kod asla değiştirilemez (geniş kapsamlı silme olan kendi kendini yok etme istisnası hariç). Bu çok temel yani Blockchain 101 bilgisidir. Dolayısıyla kendisine deploy edilen akıllı sözleşmeleri içeren Ethereum blok zincirinde depolanan veriler de değişmezdir.

    Öyleyse, akıllı sözleşmelerde kod değiştirilemezse, upgradable akıllı sözleşmeleri nasıl ele alacağız?🤔 Gerçekten gerekli midir değiştirmek ya da güncellemek?

    Geleneksel akıllı sözleşme modelleri, bu tür düzeltmelere izin vermez. Bunun yerine, developerların her özellik eklemek veya bir hatayı düzeltmek istediklerinde yeni bir sözleşme deploy etmeleri gerekir. Başlangıçta büyük bir sorun gibi görünmese de, kod tabanı büyüdüğünde çok büyük bir yük olacak ve daha büyük sorunlara yol açacaktır. Ve her seferinde, protokolün mevcut durumunu yansıtmak için verilerin eski sözleşmeden yeni bir sözleşmeye taşınması gerekir. Yani uzar da uzar🗨

    Bir akıllı sözleşmeyi neden değiştirmemiz gerekir derseniz eğer ana nedenler şöyledir diyebiliriz:

  • Hatalar vardır ve bunları düzeltmek için
  • İşlevselliği geliştirmek için
  • Artık gerekli olmayan veya yararlı olmadığı düşünülen işlevleri değiştirmek için
  • Ethereum gazının daha verimli kullanımı için kodu optimize etmek için
  • Teknolojiye ve toplumdaki gelişmelere daha iyi yanıt vermek için
  • Tüm bir kullanıcı topluluğunu; uygulamanın yeni bir sürümüne geçirme ihtiyacını ortadan kaldırmak için
  • Yukarıda gördüğümüz sebeplerden ötürü akıllı sözleşmeler değişme ihtiyacı hissederler.

    Ama tekrar etmekte fayda var, akıllı sözleşmelerin kendileri değişemez. Bir blok zincirine deploy edildikten sonra kalıcı olurlarv ve değiştirilemezler.

    Fakat bir dApp, “backend” için uyum sağlamak için birlikte çalışan bir veya daha fazla akıllı sözleşmeye sahip olacak şekilde tasarlanabilir. Nasıl yani?Bu, akıllı sözleşmeler arasındaki etkileşim modelini yükseltebileceğimiz anlamına gelir.

    Bir akıllı sözleşmeyi upgrade etmek yani yükseltmek, deploy edilen bir akıllı sözleşmenin kodunu değiştirdiğimiz anlamına gelmez; bu, bir akıllı sözleşmeyi diğeriyle değiştirdiğimiz anlamına gelir.😊

    Akıllı sözleşme yükseltmesi, sözleşmenin durumunu korurken akıllı sözleşmenin iş mantığını değiştirmeyi içerir. Özellikle akıllı sözleşmeler bağlamında yükseltilebilirlik ve değişebilirliğin aynı olmadığını açıklığa kavuşturmak önemlidir.

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - d3d5

    Ethereum ağındaki bir adrese dağıtılan bir programı değiştiremezsiniz. Sürekli söylediğimin farkındayım kusura bakmayın fakar bu ayrımı anlamak bütün sistemi anlamanızı sağlar. Kullanıcılar bir akıllı sözleşmeyle etkileşim kurduğunda yürütülen kodu değiştirebilirsiniz.

    Bu, yükseltme işlemi hangi yöntemlerle yapılabilir:

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - e838

    Açıkladığım metotlar üzerinde birkaç dakika durduk, ama Proxy en çk karşılaşacağımız yöntem.

    Yükseltilebilirlikten bahsettiğimizde, bu, istemcinin her zaman aynı sözleşme (proxy) ile etkileşime girdiği, ancak temel mantığın gerektiğinde önceki verileri kaybetmeden değiştirilebileceği (yükseltilebileceği) anlamına gelir.
    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - 4b9a

    Diamond yükseltme modelinin, geleneksel proxy yükseltme modellerine göre bazı avantajları vardır:

    👀 Proxy Nedir?

    Akıllı sözleşmeler genellikle “Proxy Modeli” adı verilen bir yazılım mimarisi modeli kullanılarak yükseltilir. Yazılım tasarımında “proxy” kelimesi ne anlama geliyor?

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - b291

    EVM’nin , farklı bir harici sözleşmeden bayt kodunu alan ve bu bayt kodunu orijinal sözleşmenin depolama bağlamında yürüten,Delegatecall (delege çağrısı) adlı özel bir işlem kodu vardır. Bu, İnternetten bir komut dosyası indirip onu ev bilgisayarınızda çalıştırmaya eşdeğerdir, bu nedenle bu, yalnızca bilinen güvenilir harici sözleşmelerde son derece dikkatli kullanılmalıdır.

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - a458

    Örnek olarak bir ERC20 tokenını ele alalım. Bayt kodu, kimin mint etmeye uygun olduğunu, transfer vergileri olup olmadığını, duraklatılabilir olup olmadığını vb. belirten bir çift işlevdir. Depolama bağlamı, hamil adreslerinin hamil bakiyeleriyle eşlenmesi gibi verileri içerir. Delege çağrısının kullanılması, ERC20'nin depolama bağlamı/tutucu dengelerini korumaktan sorumlu olduğu, ancak işlev mantığı/basma kurallarını harici bir akıllı sözleşmeye devrettiği anlamına gelir. Ayrıca, işlev mantığınızı hangi akıllı sözleşmeye devredeceğinizi değiştirebilirsiniz. OpenZeppelin docs sayfasında detaylı bilgiye ulaşabilirsiniz.

    Ama unutmayın, büyük güç, büyük sorumluluk getirir😉

    Akıllı bir sözleşme olan bir proxy’nin “sabit” (yani değişmeyen) kendi Ethereum sözleşme adresi vardır. Böylece sistemdeki diğer akıllı sözleşmeleri değiştirebilir ve proxy akıllı sözleşmeyi yeni konumlandırılmış akıllı sözleşmenin doğru adresiyle güncelleyebilirsiniz.

    DApp’in son kullanıcıları proxy aracılığıyla doğrudan ve diğer akıllı sözleşmelerle yalnızca dolaylı olarak etkileşime girer.

    Dolayısıyla, akıllı sözleşme geliştirmede, Proxy Modeli aşağıdaki iki parça aracılığıyla elde edilir:

    Aşağıda tartışacağımız proxy modelinin üç yaygın çeşidi vardır.

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - 1c12

    Proxy Pattern türleri

    Şu anda üç tür proxy modeli vardır:

  • Diamond Pattern : EIP-2532
  • Transparent (Şeffaf) Proxy Pattern
  • Universal upgradeable proxy standard/Evrensel yükseltilebilir proxy standardı (UUPS): EIP-1822
  • Bu üçünün farklarını uzun uzun anlatmak bu yazının konusu değil, derste de uzun uzun üzerinde durmadık fakat şu görsel sizlere yardımcı olabilir:

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - 2097

    Basit Proxy Örneği

    Basit bir proxy, aşağıda gösterilen mimariye sahiptir.

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - 3b49

    Biraz daha inceleyelim 🙂 Açıkcası derste 55 dakika konuşuldu ama hepsini yazamadım, özetleyerek not aldığım kısımları açıklıyorum.

    EVM’de “execution context” dediğimiz bir bölüm var. Think of this as the space in which code is executed.

    Dolayısıyla, proxy sözleşmesinin ve diğer tüm akıllı sözleşmelerin kendi ‘execution context’ yani yürütme ortamları vardır. Proxy sözleşmesi ayrıca, verilerin kendi ether dengesiyle birlikte blok zincirinde kalıcı olarak depolandığı kendi deposuna sahiptir. Birlikte, akıllı sözleşmenin tuttuğu veriler ve denge “state” olarak adlandırılır ve state, yürütme ortamının bir parçasıdır.

    Proxy sözleşmesi, dApp’i oluşturan diğer akıllı sözleşmelerin adreslerini takip etmek için storage variables/depolama değişkenlerini kullanır. Bu şekilde işlemleri yönlendirebilir ve ilgili akıllı sözleşmeyi çağırabilir.

    Proxy sözleşmesi, dApp’i oluşturan diğer akıllı sözleşmelerin adreslerini takip etmek için depolama değişkenlerini kullanır. Zaten bu şekilde işlemleri yönlendirebilir ve ilgili akıllı sözleşmeyi çağırabilir.

    Ancak mesaj aramalarını doğru sözleşmeye iletmek için kullanılan daha zekice bir numara var. Proxy sözleşmesi, mantık sözleşmesine yalnızca normal bir işlev çağrısı yapmaz; Delegatecall adı verilen bir yöntemi kullanır.

    Delegatecall bir sözleşmenin çalışma zamanında farklı bir adresten dinamik olarak kod yükleyebileceği anlamına gelir.

    Aslında göründüğünden daha karmaşık ve uzun bir konu fakat buraya kadar notları paylaşacağım. Detaylı bilgi için yukarıda verdiğim linklerden yardım alabilirsiniz.👽

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - 1ffa

    Evrensel Yükseltilebilir Proxy ( UUPS — The Universal Upgradable Proxy Standard)🎉

    Evrensel Yükseltilebilir Proxy Standardı (UUPS), tüm sözleşmelerle evrensel uyumluluğa sahip proxy sözleşmeleri için bir standart oluşturmanın bir yolu olarak EIP1822'de önerilmişti. Bu model ayrıca Solidity’nin delegatecall işlemini kullanır, ancak Şeffaf proxy modelinde tüm yükseltmeler proxy sözleşmesi tarafından yönetilirken, UUPS’de yükseltmeler mantık sözleşmesi tarafından, özellikle de mantık sözleşmesinin devraldığı “proxiable” akıllı sözleşme tarafından yönetilir. Farkları budur. (en önemli farkları demek daha doğru) Bu, daha sonraki bir tarihte kaldırılabileceği veya yükseltme işlevlerini eklemeyi unutursanız yanlışlıkla “dondurulabileceği” anlamına gelir. Ancak, daha odaklı kod sayesinde, şeffaf bir proxy’ye kıyasla hem dağıtım hem de etkileşim maliyetlerini azaltır.

    Solidity derleyicisi, aynı sözleşme içinde ortaya çıkan işlev çakışmalarını tespit edebildiğinden, üst sözleşmede yükseltme mantığının varlığı, derleyicinin bu tür çakışmaları belirlemesine yardımcı olur ve bu da bunların olasılığını azaltır.
    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - 0b4d

    Özetlemek gerekirse;

  • Akıllı sözleşme yükseltmesi/güncellemesi, deploy sonrası aşamada keşfedilen güvenlik açıklarını düzeltmeyi kolaylaştırabilir. Evet bu iyi bir şey fakat,merkeziyetsizlik ve güvenlik açısından önemli parametreleri olan kod değişmezliği fikrini birazcık kötü etkiler🤖
  • Developerlar, merkeziyetsiz uygulamalara yeni özellikler eklemek için mantık yükseltmelerini kullanabilir. Fakat o zaman burada developerların gerçekten ne yaptığını bilen insanlar olması sorunu doğar. Kafalarına göre değişiklik yapmamalılar.
  • Akıllı sözleşme yükseltmeleri, hatalar hızla düzeltilebildiği için son kullanıcılar için güvenliği artırır fakat kodlarda daha fazla karışıklığa yol açacaktır.
  • Sözleşme yükseltmeleri, geliştiricilere farklı özellikleri denemeleri ve zaman içinde dapp’leri iyileştirmeleri için daha fazla alan sağlar. Fakat, akıllı sözleşmelerdeki güvenli olmayan erişim kontrolü veya merkezileştirme, kötü niyetli aktörlerin yetkisiz yükseltmeler gerçekleştirmesini kolaylaştırabilir.
  • Yani hr sistemin iyi ve kötü yanları var.🙊

    Bu yazıda bana fikir ve öneriler veren değerli çalışma arkadaşım Patrick Collins’in videosunu da buraya bırakıyorum :

    Daha detaylı ve teknik bilgiler için belgeler:

  • Austin’in makaleleri
  • Austin demişken hemen kendisinin resmini de buraya bırakayım

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - 91b7Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - 01c4
  • fangjun.eth makaleleri
  • OpenZeppelin makaleleri ve dokümanları
  • Sizler de bu konularda daha fazla bilgiye ulaşmak isterseniz yukarıdaki kaynaklardan başlayabilirsiniz.💥

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - ba41

    Serinin diğer yazısında görüşmek üzere🌻

    Purdue’den Blockchain’e Dair Öğrendiklerim Serisi#2 🎃 image - 86fa

    💻 Bu arada Blockchain ekosisteminde düzenlediğim etkinliklerden haberdar olmak için Meetup sayfama kaydolabilir, Telegram grubuma girebilir, Twitter’dan takip edebilirsiniz!👻 Umarım yazılar, içerikler ve paylaşımlarım sizlere fayda sağlıyordur. Bana ulaşmaktan çekinmeyin 🔮

    Karakod is a global software development firm specializing in AI, blockchain, IoT and more. We provide innovative solutions to help you protect and grow your business in the digital age.

    • Karakod LinkedIn
    • info@karakod.net

    The Digital Legal Guide — Join the Newsletter!

    Subscribe to our newsletter for the latest insights on tech, startups, and more.

    Services

      Blockchain Infrastructure

      • Smart Contract Development
      • Private Blockchain Deployment
      • Node Operations & Integration
      • Token Economy Design
      • Decentralized Application Development
      • Blockchain Security Audit

      Cybersecurity & Cloud Security

      • Cloud Infrastructure Hardening
      • Security Operations & Monitoring
      • Zero-Trust Architecture
      • Identity & Access Management (IAM)
      • Threat Intelligence & Risk Assessment
      • Compliance & Security Frameworks

      AI Systems & Automation

      • Machine Learning Solutions
      • Intelligent Process Automation
      • AI Integration & Deployment
      • AI Audit
      • Computer Vision Solutions
      • Predictive Analytics & Automation
    © 2025 Karakod. All rights reserved.