Hyperledger ailesi içinde önemli dağıtımlardan birisi olan Hyperledger Sawtooth WhitePaper’in (Beyaz Rapor) Türkçe çevirisini paylaşıyoruz.
Sawtooth: Kısa bir tanıtım
Kelly Olson, Mic Bowman, James Mitchell, Shawn Amundson, Dan Middleton, Cian Montgomery – Ocak 2018
Özet
Günümüzün bilgi paylaşımı için iş süreçleri aracılar, verimsizlikler ve güvenlik endişeleriyle yüklenmektedir. Dağıtılmış muhasebe teknolojisi (veya blokzincirleri) kullanımıyla, şirketler arasındaki iş süreçleri düzenlenebilir ve merkezi bir otorite veya manuel uzlaşma süreçlerine ihtiyaç duymadan kayıtlar senkronize tutulabilir. Bu, işletmelerin maliyetlerini azaltmalarına ve tamamen yeni iş yapma yolları oluşturmalarına yardımcı olabilir. Sawtooth, kurumsal kullanım için dağıtık defterler oluşturmaya yarayan, modülerlik ve genişletilebilirik odaklı bir framwork’dür. Sawtooth, onlarca yıllık sonlu durum makinesi çoğaltma araştırmasına dayanıyor ve herhangi bir fikir birliği mekanizmasını veya “akıllı sözleşme” dilini desteklemek için tasarlandı.
Arka plan
Bitcoin
Blokzincir teknolojisi ilk olarak 2008’de Satoshi Nakamoto tarafından Bitcoin White Paper’ının paylaşılması ile tanıtıldı. Bitcoin blok zinciri, merkezi olmayan eşler arası elektronik para sistemi oluşturmak için tasarlanmıştır. Yaklaşık her 10 dakikada bir, ağdaki düğümler harcanmamış para dizisi ve bunları harcamak için gerekli koşullar üzerinde fikir birliğine varır. “Harcanmamış işlem çıkışı” veya UTXO dizisi olarak da bilinen bu veri kümesi, bir veya daha fazla UTXO’yu ağa işlemler göndererek yeni harcanmamış işlem çıkışı kümesiyle değiştirebilir. Bunu sağlamak amacı ile, ağdaki tüm düğümlerin bu veri setinde fikir birliğine varması için Bitcoin protokolü bir dizi işlem onaylama kuralına ve izinsiz ve anonim katılım imkanı sağlayan, Proof of Work (iş kanıtı) olarak bilinen yeni mutabakat mekanizmasından yararlanır.
Ethereum
Vitalik Buterin 2013 yılında, blokzincir kavramı üzerinde genişletilmiş bir White Paper yayınlayarak Bitcoin protokolünü bir durum geçiş sistemi olarak görüntüledi. Durum makinesi kopyalama, veri kopyalama ve mutabakat sistemi sayesinde hata toleranslı servisler üretme tekniğidir ve ilk olarak Leslie Lamport tarafından 1984’de tanıtılmıştır. Ethereum protokolünün amacı, geliştiricilerin Ethereum durum makinesinde çalışacak ve “akıllı sözleşmeler” uygulayabilmelerini sağlayacak “merkezi olmayan bir uygulama platformu” oluşturmaktı. “Akıllı sözleşmeler” defter ve işlemin şu anki durumunu alır ve yeni bir defter durumu oluşturur. Bu “akıllı sözleşmeler” yalnızca Ethereum’un yerel para birimi olan Ether’in aktarılması için gereken mantığı dikte etmek için değil, aynı zamanda isteğe bağlı anahtar-değer depolarını yönetmek için de kullanılabilir. Bu anahtar-değer depoları en çok, finansal menkul kıymetler, tapu ve alan adları gibi diğer varlıkların mülkiyetini temsil etmek için kullanılır.
Dağıtık Defterler
Ethereum’un piyasaya sürülmesinden bu yana, işletmenin ihtiyaçlarını karşılamak için çeşitli “dağıtık defterler” uygulamaları oluşturulmuştur. Bu dağıtık defter uygulamaları, mevcut protokollere ( Bitcoin — MultiChain, Chain, Blockstream veEthereum — Quorum) genişleyen ve tamamen yeni uygulamalar (Corda ve Fabric)oluşturan yazılımları içerir. Bu uygulamalar genele açık blokzincirlerinden güvenlik, verimlilik, kullanılabilirlik ve gizlilik gibi mevcut protokollerdeki kısıtlamaları ele almak için ayrılmıştır. Bazı dağıtık defterler, temelindeki ağ, günlük katman, akıllı sözleşme ve mutabakat katmanlarındaki değişikliklerin bir sonucu olarak blok zinciri öncüllerinden büyük ölçüde farklıdır, hatta bazıları “blok” veya “zincir” içermeyecek kadar ileri bile gidiyor.
İlgili Teknolojiler
- Eşler arası ağ iletişimi
- Olay odaklı veritabanları
- Çoğaltılmış durum makineleri
- Dağıtık veritabanları
- Çoğaltılmış loglar
- Mutabakat algoritmaları
Sawtooth
Sawtooth, işletme sınıfı dağıtık defterler oluşturmak için bir framework’dür. Güvenlik, ölçeklenebilirlik ve modülerliğe odaklanarak tasarlanmıştır. Sawtooth mimarisinin beş temel bileşeni vardır:
- Mesajlar ve işlemlerin düğümler arasında iletilmesi için eşler arası bir ağ
- Sıralı bir işlem listesi içeren dağıtık bir defter
- Bu işlemlerin içeriğini işlemek için bir durum makinesi / akıllı sözleşme mantık katmanı
- İşlemlerin ardından ortaya çıkan durumu depolamak için dağıtık bir durum depolama alanı
- İşlem sıralaması ve sonuçlanan durum hakkında ağ üzerinde fikir birliği sağlamak için bir mutabakat algoritması
Sawtooth farklı tehdit modellerine, yayılma senaryolarına ve akıllı sözleşme dillerine uyum sağlamak için bir modüler mutabakat arayüzü ve işlem işleme platformu olarak tasarlanmıştır. Sawtooth, temelinde bir gossip network (dedikodu ağı) bulunan “geleneksel” bir blokzincir mimarisine ve kriptografik olarak bağlanmış bir işlem blokları zincirine sahiptir.
Eşler Arası İletişim
Sawtooth ağındaki düğümler birbirlerine TCP üzerinden mesajlar (ØMQ mesajları) göndererek iletişim kurar. Bu mesajlar işlemler, bloklar, eşler ve daha fazlası hakkında bilgiler içerir. Tüm yapılandırılmış mesajlar, Google’ın Protokol Tamponları kullanılarak serileştirilir. Sawtooth şu anda işlemler ve bloklarla ilgili tüm iletilerin ağdaki tüm düğümlere iletilmesini sağlamak için bir gossip network’e güvenmektedir.Bu, Bitcoin ve Ethereum gibi bir çok public blokzincir tasarımıyla tutarlıdır.
Kurumsal dağıtımların gereksinimlerini karşılamak için, Sawtooth eşler arası katmanda ağ izinlerini destekler. Erişim kontrolü listeleri sayesinde, Sawtooth düğümleri şunları kontrol edebilir:
- Kim ağa bağlanabilir ve mevcut defter durumu ile senkronize olabilir?
- Kim mutabakat mesajı gönderebilir ve mutabakat sürecine katılabilir?
- Kim ağa işlem gönderebilir?
Son zamanlarda, yeni uygulamalar işlem verilerinin gizliliğini ve dokunulmazlığını artırmak için küresel yayın tekniğini terk etti. Bunun iki örneği, her ikisi de işlem ayrıntılarının hedefe yönelik olarak paylaşılmasına dayanan R3’ün Corda ve JPMorgan’s Quorum’udur. Bu, finansal kuruluşlar için kilit bir gerekliliktir, çünkü düzenlemeler çoğu zaman şifreli bir formatta bile işlemle ilgili olmayan taraflarla bilgi paylaşımını önler. Sawtooth geliştirme ekibi şu anda bu yeteneği sağlamak için alttaki ØMQ ağ katmanının nasıl genişletilebileceğini araştırıyor.
Dağıtık Log
Blokzincirleri ve tekrarlanan durum makinelerinin kurumsal bileşenlerinden biri, ağdaki düğümlerin tutarlı bir sırada işlem yapmalarını sağlamaktır. Sawtooth’da, sipariş edilen bu işlem listesi, “blokzincir” adı verilen bir veri yapısına monte edilir. ’Blokzincir’, bir genesis bloğuyla başlayan, sıralı bir şifreleme bağlantılı blok seti içerir. Bağlantılı listedeki her blok, sıralı bir işlem kümesi içerir. Düğümler, bu logun doğru sıralanması konusunda bir mutabakat algoritması ile görüş birliğine varırlar. Şu anda Sawtooth blok zinciri, her işlemin toplam siparişine ulaşmaktadır. Yani, her işlem kesinlikle başka bir işlemden önce veya sonradır. Blokzincir yapısını bağımlı olmayan işlemler arasında kısmi siparişe izin verecek şekilde değiştirmek araştırma konularından birisidir. Böyle bir veri yapısı üzerinde yönlü bir düz ağaç. Bu, potansiyel olarak blokzincir ağının ölçeklenebilirliğini geliştirmek ve depolama gereksinimlerini azaltmak için bölümlenmesini veya “paylaşılmasını” sağlar.
Akıllı Sözleşmeler
Akıllı sözleşmeler, bir işlemi girdi olarak alan, işleyen ve çıktı üreten küçük programlardır. Bu, iş mantığının çalıştığı ve belirli bir kullanım durumuna göre uyarlanmış alana özel fonksiyonların uygulandığı blokzincir katmanıdır. Akıllı sözleşmeler, işlemlerin halihazırdaki durumun anlık bir görüntüsüyle birlikte dağıtık log’dan alındığı ve işlem işlendikten sonra dağıtık belleğe yeni bir durumun yazıldığı, bir durum makinesi olarak düşünülmektedir. Bu bakış açısıyla, blokzincir sistemleri, geleneksel çoğaltılmış durum makine mimarisinin objektifinden incelenebilir.
Bir blokzincirinde akıllı sözleşmelerin kullanılması, çok sınırlı bir betik dili sunan Bitcoin ile başladı. Bu komut dosyası dili, belirli işlemler gerçekleştirilirken bile güvenlik açıkları keşfedilince kullanımı kısıtlandı. Ek olarak, Bitcoin blockchain “durumsuz” bir tasarıma sahiptir. İşlemler, hangi girdilerin tüketildiği ve yeni harcanmamış çıktıların yaratıldığı konusunda başarılı da olabilir başarısız da. Bu akıllı sözleşmelerin birden fazla duruma sahip olması veya herhangi bir iç durumu sürdürmesi mümkün değildir. Bu model güvenlik ve ölçeklenebilirlik avantajları sağlarken, defterin kullanımını basit varlık alışverişleriyle sınırlayabilir.
Ethereum, özel olarak oluşturulmuş bir sanal makinede işlemleri işleyerek akıllı sözleşmeler kavramını genişletti. Akıllı sözleşmeler, daha sonra Ethereum Sanal Makine bytecode’una derlenen, genellikle Solidity olan, daha yüksek bir dilde yazılmıştır. Akıllı sözleşme mantığı, sözleşme kodunu yayınlayarak ağa dinamik olarak dağıtılabilir. Bu sözleşme kodu, ağ katılımcıları tarafından daha sonra sözleşme adresine gönderilen işlemleri (transactions) doğrulamak için kullanılacaktır. Bir işlem gerçekleştirildiğinde, akıllı sözleşmenin iç durumu dağıtılmış bir veri deposuna yazılır.
Sawtooth framework’ü, akıllı sözleşmeyi bir durum makinesi veya “işlem işlemcisi” olarak görerek akıllı sözleşmeler kavramını genişletir. Dağıtık log’dan geçtikten sonra, işlemler uygun işlem işlemcisine yönlendirilir. Bu işlem işlemcileri, işlemi işlemeden önce işlemin yükünü ve ilgili durumları almaktan daha iyidir. Sawtooth, hem durumsuz (UTXO) hem de durum bilgisi olan (Ethereum tarzı) modelleri destekleyebilir.
Sawtooth şu anda geliştiricilerin aşağıdaki gibi çeşitli dillerde akıllı sözleşmeler geliştirmelerini sağlamaktadır:
- Yorumlanmış Diller: Python ve Javascript
- Derlenmiş Diller: Rust, C ++ ve Go
- Sanal Makineler: Ethereum Sanal Makinesi ve Java
Akıllı sözleşme dili tasarımındaki temel değişimlerden biri güvenlik ve açıklık arasındadır. Etki alanına özgü bir işlem işlemcisi oluşturarak, bir blok zinciri ağında gerçekleştirilebilecek eylem türlerini sınırlandırmak, güvenliği ve performansı artırabilir. Ayrıca, daha olgun programlama dillerini kullanarak, akıllı sözleşme kodunuzun statik, dinamik ve resmi analizini yapabilen mevcut araçlardan yararlanmak mümkündür.
Özünde Sawtooth akıllı sözleşme işlemlerini işleme diline agnostik yaklaşır. Sawtooth, Solidity sözleşmelerini Hyperledger Burrow EVM entegrasyonu ile çalıştırma yeteneğini kanıtlamıştır. Sawtooth geliştirme ekibi, desteklediği programlama dillerini genişletmeyi ve Chain’in Ivy ve Digital Asset Holding’in DAML’ı gibi mevcut ve yeni ortaya çıkan akıllı sözleşme motorlarıyla entegre olmayı hedeflemektedir.
Sawtooth platformu, platformun işlevselliğine temel olan bir dizi akıllı sözleşme içerir:
- Ayarlar : Zincir üstü yapılandırma ayarlarını saklamak için referans uygulaması sağlar.
- Kimlik : Erişim yönetimini kolaylaştırmak için işlemci ve doğrulayıcı anahtarların zincir iznini işler.
- Doğrulayıcı Kayıt Defteri : Genel muhasebe doğrulayıcılarını ve PoET’in güvenliği için çok önemli olan güvenilir donanım onaylarını kaydetmek için bir metodoloji sunar.
Bu akıllı sözleşmelere ek olarak, Sawtooth ayrıca geliştirme, test etme ve vaka prototiplemesi için bir dizi ek işlem ailesi sunar:
- IntegerKey : Konuşlandırılmış defterleri test etmek için basit bir iş mantığı.
- BlockInfo : Yapılandırılabilir sayıda tarihi blok hakkında bilgi depolamak için bir metodoloji sunar.
- XO : Kullanıcıların, tic-tac-toe, noughts ve crosses ve XO olarak bilinen, basit bir masa oyunu oynamasına izin verir.
- Pazar Yeri : Kullanıcıların, blok zincirinde diğer kullanıcılarla birlikte özelleştirilmiş “varlıklar” miktarları yayınlamalarını ve paylaşmalarını sağlar.
- Tedarik Zinciri : Kullanıcıların tedarik zinciri yoluyla varlıkları izlemelerine ve sıcaklık ve nem gibi transit geçişli mallarla ilgili telemetri verilerini saklamasını sağlar.
- Smallbank : Karşılaştırma ve performans testi için performans analizini gerçekleştirir. Bu işlem ailesi, H-Store Smallbank benchmark’ına dayanmaktadır.
- Seth : EVM sözleşmelerinin uygulanmasını sağlayan Ethereum Sanal Makinesi’nin bir uygulaması.
- HyperDirectory : Kullanıcıların ve izinlerin oluşturulmasına izin veren rol tabanlı bir erişim kontrol sistemi.
Dağıtık Durum
Düğümler arasında durumların tutarlılığını sağlamak, birçok blokzincir uygulaması için önemli bir özelliktir ve çoğaltılmış durum makinelerinin temel amacıdır. Bitcoin’de, durum harcanmamış madeni paraların bir listesinden oluşurken, Ethereum kendi yerel para birimi olan Ether’in yanı sıra ağında çalışan akıllı sözleşmelerin iç durumunu da yönetir. Sawtooth, sözleşme haline getirilmiş durumunu bir Radix Merkle ağacında saklayarak, Ethereum’a benzer bir şekilde durumu yönetir. Her işlem işlemcisine, yazabileceği kendi ad alanı atanır. Serileştirme yöntemi işlem işlemcisinin geliştiricisine bırakılır ve farklı işlemciler farklı serileştirme yöntemlerini uygulayabilir.
Mutabakat Sistemi
Mutabakat (fikir birliği) sistemi , ağdaki düğümlerin işlemlerin sırası ve ortaya çıkan durum üzerinde anlaşmaya vardığı süreçtir. Pek çok fikir birliği protokolü vardır ve her biri gecikme, verimlilik, nüfus büyüklüğü, son durum, sansür direnci, tehdit modeli, başarısızlık modeli ve daha fazlasıyla ilgili farklı özelliklere sahiptir. Sawtooth, fikir birliği mekanizmasının en iyi olduğu konuda temel bir pozisyon almaz, daha çok çeşitli fikir birliği protokollerinin kullanılmasına izin veren bir fikir birliği arayüzü sunar. “Piyango” oy birliği ve “oy kullanma” fikir birliği şeklinde önerilmiş olan iki genel yaklaşım vardır. Genellikle “Nakamoto mutabakat sistemi” olarak adlandırılan ilki, bir tür “piyango” ile bir lider seçer. Daha sonra lider daha önce işlenen blokların zincirine eklenebilecek bir blok önerir. Bitcoin’de, kriptografik bir bulmacayı başarıyla çözen ilk katılımcı lider seçim piyangosunu kazanır. İkinci yaklaşım, geleneksel Bizans Hata Toleransı (BFT) algoritmalarına dayanır ve fikir birliği elde etmek için fikir birliği katılımcıları arasında çok sayıda açık oy kullanır.
Sawtooth, aktif geliştirilmekte olan üç fikir birliği uygulaması sunmaktadır:
- Dev_mode: Yalnızca çökmeye dayalı hata toleransı için geliştiriciler ve test ağları için faydalı olan basitleştirilmiş bir rastgele lider algoritması.
- PoET: “Geçen Zamanın Kanıtı” nın kısaltması olan PoET, Nakamoto tarzı bir mutabakat algoritmasıdır. Bizans aktörlerini içeren büyük ağ popülasyonlarını destekleyebilen üretim sınıfı bir protokol olarak tasarlanmıştır. PoET algoritması hakkında daha fazla bilgiyi burada bulabilirsiniz — PoET 1.0 Özelliği.
- PoET-Simulator: Sawtooth, güvenli talimatları simüle eden bir PoET uygulaması içermektedir. Bu mekanizma geniş çaplı mutabakat popülasyonlarını mümkün kılar, ancak Bizans hatatoleransını ortadan kaldırır.
- RAFT (Geliştirilme Aşamasında): RAFT mutabakat protokolü, çökmeye dayalı hata toleranslı bir “oylama” tarzı mutabakat algoritmasıdır. Yüksek verimli, düşük gecikmeli işlemler için tasarlanmıştır.
Mahremiyet ve Gizlilik
Blokzincir mahremiyeti ve gizliliği, kurum içinde zincirleme uygulamasını benimsemenin en önemli zorluklarından biridir. Bugüne kadar bir blokzincir hakkında gizlilik sağlamak için iki genel yol vardır:
- Endişelerin Ayrılması : Veriler yalnızca bir işlemin ilgili taraflarına gönderilir, bu verilerin isteğe bağlı bir karması tüm blok zinciri düğümlerinde yayınlanır. Bu gizlilik aracı, R3’ün Corda, JPMorgan’s Quorom ve Hyperledger Fabric tarafından kanal modeli aracılığıyla uygulanmıştır. Bu yöntem gizlilik ve verinin yerelliği kaygılarını çözerken, bazı dezavantajları da vardır. Bu modelin en önemli dezavantajı, bir dizi “alt zincir” yaratması ve bu zincirler arasında varlıkları transfer etmenin önemli bir karmaşıklık eklemesi veya gizliliği azaltmasıdır.
- Şifreli Verilerde Hesaplama : Bu yaklaşımda, şifrelenmiş veriler, tüm hesap üzerinden verilerin hesaplanabileceği şekilde yayınlanır. Bu, homomorfik şifreleme veya sıfır-bilgi kanıtları gibi gelişmiş şifreleme teknikleri içerebilir veya Intel® Software Guard Extensions (Intel® SGX) gibi güvenilir bir yürütme ortamından yararlanabilir. Bu yöntem de birkaç dezavantaj ile birlikte geliyor. Bu dezavantajlar, gelişmiş kriptografik tekniklerle güvenilir donanım veya performans ve kullanılabilirlik sınırlamalarına olan ihtiyacı içerebilir.
Şu anda Sawtooth bir gizlilik ve gizlilik yaklaşımı dikte etmiyor. Sawtooth olmak üzere çeşitli yaklaşımlar denedi: https://sawtooth.hyperledger.org/docs/core/releases/0.8.8/examples/private_utxo/overview.html.
Bu alan, aktif bir araştırma alanıdır ve gelecekteki Sawtooth sürümleri için temel bir önceliktir. Sawtooth ekibi, farklı gizlilik modellerinin farklı dağıtımlar için uygun olduğuna ve yaklaşımlarında veri yalıtımı, kriptografik ve güvenilir donanım tekniklerinden yararlanmaya niyetli olduğuna inanmaktadır.
Merkezi Olmayan Yönetim
Sawtooth’un benzersiz özelliklerinden biri, “ayarlar” işlem ailesi tarafından etkinleştirilen zincir üstü yönetim mekanizmasıdır. Ayarlar işlem ailesi, hangi fikir birliği mekanizmasının kullanıldığı ve ağ üzerinde hangi işlem(tx) işlemcilerinin etkinleştirildiği gibi zincir üstü yapılandırma ayarlarını depolamak için bir yöntem sunar.
Ayarlar işlem ailesinin bu tasarımı, değişiklik yapabilen tek bir yetkili anahtar veya birden çok yetkili anahtar olan iki yetkilendirme seçeneğini destekler. Birden fazla anahtar olması durumunda, bir değişiklik yapılmadan önce anahtarların imzaladığı oyların yüzdesi gerekir.
Sawtooth ve Ethereum Uyumluluğu
Sawtooth-Ethereum entegrasyon projesinin öncelikli hedefi, “Seth” olarak adlandırılan, Hyperledger Sawtooth platformuna Ethereum Virtual Machine akıllı sözleşmelerinin yürütülmesine destek sağlamaktır. Bunu mümkün kılmak için, Hyperledger Sawtooth projesi Burrow EVM’i Hyperledger Sawtooth platformuna entegre etmek için Hyperledger Burrow projesiyle birlikte çalıştı.
Seth’in ikincil hedefi, mevcut EVM akıllı sözleşmelerini ve bunlara bağlı DApp’leri Sawtooth’a taşımayı kolaylaştırmaktır. Bu, büyük ölçüde Ethereum JSON RPC API’sinin kopyalanmasıyla başarılmıştır. Bu aynı zamanda, geliştiricilerin Sawtooth’a dağıtmak için mevcut Ethereum sözleşmelerinden yararlanmasını sağlar. Seth’in bir Ethereum düğümü olmadığını not etmek önemlidir. EVM bayt kodunu özellikle kurumsal dağıtım bağlamında yorumlamak için tasarlanmıştır. Sawtooth ve Ethereum arasında farklılık gösteren bazı tasarım kararları var. Mümkün olduğunca kuplajları son kullanıcı için şeffaf hale getirdik ve birkaç durumda çelişkili API’leri incelikle sınırlıyoruz.
Sonuç
Sawtooth, kurumsal kullanım için tasarlanmış bir blokzincir platformudur. Sawtooth, daha önce Bitcoin ve Ethereum gibi platformların öğrenmelerine dayanıyor ve modülerlik ve genişletilebilirliğe odaklanarak tasarlandı. Sawtooth, geliştiricilerin akıllı sözleşmelerini çeşitli geleneksel programlama dillerinde programlayabilmeleri için mevcut blok zincir platformlarından benzersizdir. Gelecekte Sawtooth’daki gelişmeler işlemlerin verimliliğini ve mahremiyetini artırmaya odaklanacak.
Hyperledger Sawtooth WhitePaper’ı Türkçeye çeviren ve öncelikle BCTR ile paylaşarak bu içeriğin okuyucularımıza ulaşmasını sağlayan Mesut Gülecen’e teşekkür ederiz.