Stacks, Bitcoin Blok Zincirinde DeFi Modeli İnşa Ediyor!
--
Değerli dostlar, hepinize merhaba!
Bu yazımda, hepimizin malumu olan ve son dönemlerde ilgileri üzerine çekmeyi başaran DeFi (Decentralized Finance) ve bunun Blockstack tarafından Bitcoin blok zincirinde nasıl uyarlanacağı konusuna değineceğiz. Aynı zamanda akıllı sözleşmelerden doğan problemlerin, 15 Aralık 2020 tarihine kadar yayımlanması planlanan Stacks 2.0 ile gelecek olan Clarity mimarisinde nasıl çözüleceğine değineceğiz!
Bir önceki yazımızda Blockstack’in ne olduğuna ve diğer bütün teknik detaylarına değinmiştik. Şimdi ise, sizlerle beraber olayın derinliklerine ineceğiz!
Giriş
Eğer akıllı sözleşmeleri daha önceden duyduysanız, sebep oldukları problemleri de duymuş olmalısınız :) Akıllı sözleşmeler ile kilitlenen varlıklar Aralık 2019'da 700 milyon dolar civarlarında iken, Şubat 2020'nin başlarında 1 milyar dolar seviyesinin üzerine çıktı. Her geçen gün, yeni akıllı sözleşmeler tasarlanmaktadır. Ancak her yeni sözleşme, beraberinde yeni sorunlar meydana getirebilmektedir. Şimdi akıllı sözleşmelerdeki problemli konulara değinelim.
-> Reentrancy (Yeniden Giriş)
Bir saldırgan, tekrar tekrar aynı işlemden sözleşmeye girebilir ve bunu yaparken sözleşme bütününü bozabilir. Bu, sözleşmede bir takım riskler doğurur ve bazı durumlarda, DAO’nun saldırıya uğradığı zaman olduğu gibi tüm token bakiyesi boşaltılabilir. En nihayetinde, bu durumun düzeltilmesi için bir sert çatallanma gereklidir.
Clarity: Clarity yeniden girişe izin vermez. Clarity tasarımlarında Anti-Reentrancy (Yeniden Girişi Karşıtı) özelliği mevcuttur yani Clarity tasarımları, güvenli bir akıllı sözleşme sisteminde Reentrancy’e izin verilmeyecek şekilde tasarlanmıştır. Ethereum’da akıllı sözleşmeler için, bu konuda çözüm olarak verilen Solidity, fonksiyonlarınıza noReentrancy özelliğini ekleyebilir. Bu durum yalnızca isteğe bağlı olarak sağlanır.
-> Access Control (Erişim Kontrolü)
Erişim kontrolü problemleri hemen hemen bütün programlamlarda yaygındır. Birisi, bir sözleşmenin işlevselliğine genel veya harici işlevlerden erişebilir. Güvensiz görünürlük ayarları, saldırganlara bir sözleşmenin özel bilgilerine ve mantığına erişmek için basit yollar sunarken, erişim kontrolü baypasları daha incedir. Bu güvenlik açıkları, sözleşmeler tarafından kullanımdan kaldırılan TX.Origin’i kullandığında ortaya çıkabilir.
Parity cüzdanı olayı, ETH’de yaklaşık 28 Milyon $ ‘ı donduran bu hatanın bilinen örneklerinden birisidir.
Clarity: Clarity kullanırken görünürlük bir sorun değildir, çünkü her şey varsayılan olarak özeldir. Define-public olarak bildirilen işlevlere yalnızca diğer sözleşmeler ve işlemler tarafından erişilebilir.
-> Overflow and Underflow
Overflow (Taşma), yeni bir güvenlik açığı türü değildir ancak imzasız tamsayılar, çoğu geliştiricinin basit int türlerinde kullandığı bir durumdur ve bu durum akıllı sözleşmelerde çok tehlikelidir. Eğer bir kod bloğunda, sayısal taşma olursa, kodlar hırsızlık veya hizmetin çökmesi için elverişli hale gelir. -DASP
Örnek: Bir saldırganın, BEC isimli tokende, sayısal bir overflow hatasından dolayı sisteme sızıp, yüklü miktarda Ethereum çalabilecek pozisyonda olduğunu duydunuz mu? Bu, BEC Token alım satımlarının askıya alınmasıyla sonuçlandı ve araştırmacılar, en az bir düzine ERC-20 tokeninin aynı saldırıya elverişli olduğunu belirledi.
Clarity: Sayısal overflowlar ve yetersizlikler, işlemin Clarity’de direk olarak iptaline sebep olur. Aynı zamanda Clarity, arzın kazara arttırılmasını önleyen sabit tedarikli bir değiştirilebilir token için birinci sınıf bir türe sahiptir.(Var olandan daha fazla token basmaya çalışan bir işlem direk olarak iptal edilmeye zorlanır)
-> Düşük Seviyeli Çağrılar İçin Kontrol Edilmeyen Dönüş Değerleri
Solidity’in derin özelliklerinden birisi olan düşük seviyeli fonksiyonlar: call(), callcode(), delegatecall() ve send(). Bunların, hataların yorumlanmasındaki rolleri, diğer işlevlerinden farklıdır. Çünkü bunlar mevcut yürütmenin tamamen tersine çevrilmesine yol açmaz. Bunun yerine, false olarak ayarlanmış bir boolean değeri döndürür ve kod çalışmaya devam eder. Bu, geliştiricileri yanıltabilir ve bu tür düşük seviyeli çağrıların dönüş değeri kontrol edilmezse, istenmeyen sonuçlara yol açabilir. — DASP
Örnek: King of Ether ve EtherPot, DASP tarafından bu güvenlik açığının örnekleri olarak verilmiştir ve büyük miktarda para kaybına neden olmamasına rağmen, send()’in dönüş değerini kontrol etmeyi unutmak sözleşmelerin yanlış davranmasına sebep olmuştur.
Clarity: Clarity adresleri, bunu bir tür modeliyle ele alır. Her şey, anlamlı bir dönüş yapmak zorundadır. Örnek olarak her şey yolunda dönüşü (ok a) veya “bir şeyler ters gitti!” türü (err b). Bu konsensüs kuralları tarafından uygulanır. Bunu yapmayan bir işlev oluşturulması mümkün değildir. Aynı zamanda geri dönüş değerini alan kısım, dönen değerin olumlu veya olumsuz durumlarını ayrıntılı şekilde değerlendirmesi gerekmektedir.
Kısacası Clarity, kullanıcıların varlıklarını; bilinmeyen saldırganlar ve diğer sözleşmelerdeki bilinmeyen hatalardan korumayı sağlayan post-conditions belirteçleri içerir.
DeFi Nedir?
DeFi, Ethereum üzerine inşa edilmiş bir dizi finansal araç için kullanılan bir terimdir. Temel amaç, internet erişimi olan herkesin bankacılık sistemini aracılara ihtiyaç duymadan kullanmasını, borç vermesini ve ödünç almasını sağlamaktır. Ancak Blockstack, bu durumu Bitcoin blok zinciri üzerinde inşa ettiği STX Token ile sağlamayı amaçlamaktadır.
“Birçok kişi Bitcoin’i Ethereum üzerinde yeniden oluşturmanın daha kolay olduğunu düşünüyor, aslında Bitcoin’in üzerinde Ethereum işlevselliği oluşturmak daha mantıklı. Bu henüz benimsenme aşamasında olsa da insanlar Bitcoin ekosistemine paralel olmaktan çok Bitcoin ekosistemi üzerine inşa etmenin değerini kesinlikle anlamaya başlıyor. “ — Muneeb Ali
Ali ayrıca, internetin geleceğinin “güvenlik için kolaylık ticareti” olmayacağına, bunun yerine bu güvenliği web uygulamalarına, bitcoin’i bir güvenlik mekanizması olarak blockchain ile birlikte bir rezerv para birimi olarak kullanacak şekilde bağlayacağına dikkat çekti.
“Bitcoin’in sınırlı betik dili, dapps oluşturmak veya akıllı sözleşmeler dağıtmak isteyen geliştiriciler için bir anlaşma kırıcı olarak görülüyor. Sonuç olarak, birçok geliştirici, yerel iş kanıtı protokollerini (Proof of Work Protocols) veya staking kanıtı (proof-of-stake) protokollerini önyüklemeyi umarak kendi blok zincirlerini inşa eder, ancak bunlar çok daha az güvenli olma eğilimindedir. Bunun sonuçlarından biri, geliştiricilerin Ethereum’un akıllı sözleşmeler başlatmak için daha uygun olduğunu varsaymasıdır, ancak bunun için henüz erken olduğuna inanıyorum.” — Muneeb Ali
Bu yazımda sizlere veda etmeden önce, Stacks 2.0'ın Kasım 2020 ve 15 Aralık 2020 tarihleri arasında gelmesinin beklendiğini de belirtmek isterim.
Teorisinden bahsettiğimiz bu teknolojilerin etkilerini önümüzdeki dönemde görme fırsatımızın olacağına inanıyorum.
Sağlıcakla kalın!