İmkansız akıllı sözleşmeye dikkat edin

Kaynak Düğüm: 1576899

En yaygın üç akıllı sözleşme yanılgısı

Popüler bir blockchain platformunun geliştiricileri olarak bazen Ethereum benzeri akıllı sözleşmelerin gündemde olup olmadığı soruluyor. Çoklu Zincir yol haritası. Her zaman verdiğim cevap: hayır ya da en azından henüz değil.

Ancak blok zincirlerin heyecan dolu dünyasında akıllı sözleşmeler çok revaçta, öyleyse neden olmasın? Sorun şu ki, izin verilen Bitcoin tarzı blok zincirleri için üç güçlü kullanım durumunu (kaynak, şirketlerarası kayıtlar ve hafif finans) artık biliyor olsak da, Ethereum tarzı akıllı sözleşmelerin eşdeğerini henüz bulamadık.

İnsanların akıllı sözleşmelerin ne yapmasını istediklerine dair fikirleri yok değil. Aksine, bu fikirlerin pek çoğu kesinlikle imkansızdır. Görüyorsunuz, akıllı insanlar "akıllı sözleşmeler" terimini duyduklarında hayal güçleri çılgına dönüyor. Otonom akıllı yazılımın dünyaya açılacağı, verilerini de yanlarında götüreceği hayallerini canlandırıyorlar.

Ne yazık ki akıllı sözleşmelerin gerçekliği tüm bunlardan çok daha sıradan:

Akıllı sözleşme, blockchain üzerinde saklanan, blockchain işlemleriyle tetiklenen ve blockchain veritabanındaki verileri okuyan ve yazan bir kod parçasıdır.

Bu kadar. Gerçekten mi. Akıllı sözleşme, bir blok zinciri üzerinde çalışan ve bu blok zincirinin durumuyla etkileşime giren kod için sadece süslü bir isimdir. Ve ne is kod? Bu Pascal, bu Python, bu PHP. Java'dır, Fortran'dır, C++'dır. Veritabanlarından bahsediyorsak, saklı yordamlar SQL'in bir uzantısıyla yazılmıştır. Bu dillerin tümü temelde eşdeğerdir ve aynı tür sorunları aynı tür yollarla çözerler. Elbette her birinin güçlü ve zayıf yanları var; C'de bir web sitesi oluşturmak veya Ruby'de HD videoyu sıkıştırmak için delirmiş olursunuz. Ama en azından prensipte istersen yapabilirsin. Kolaylık, performans ve muhtemelen saçınız açısından ağır bir bedel ödersiniz.

Akıllı sözleşmelerdeki sorun yalnızca insanların beklentilerinin abartılı olması değil. Bu beklentiler pek çok kişinin hayata geçirilmesi mümkün olmayan fikirlere zaman ve para harcamasına yol açıyor. Büyük şirketlerin, üst yönetimin yeni bir teknolojiyle karşılaştığı andan bu teknolojinin avantajlarının ve sınırlamalarının gerçekten anlaşıldığı ana kadar uzun bir yolu kat etmek için yeterli kaynaklara sahip olduğu görülüyor. Belki kendi deneyimimiz bu sürenin kısaltılmasına yardımcı olabilir.

Geçtiğimiz dokuz ay boyunca, birçok akıllı sözleşme kullanım senaryosu ile karşılaştık ve kendimizi defalarca bunların kesinlikle yapılamayacağı yanıtını verirken bulduk. Sonuç olarak, en yaygın olarak kabul edilen üç akıllı sözleşme yanılgısını belirledik. Bu fikirler yanlış değil çünkü teknoloji olgunlaşmamış veya araçlar henüz mevcut değil. Daha doğrusu yanlış anlıyorlar Bir veritabanında yaşayan ve merkezi olmayan bir şekilde çalışan kodun temel özellikleri.

Dış hizmetlerle iletişim kurma

Genellikle önerilen ilk kullanım durumu, bazı dış olaylara yanıt olarak davranışını değiştiren akıllı bir sözleşmedir. Örneğin, belirli bir aydaki yağış miktarına göre koşullu olarak ödeme yapan bir tarım sigortası poliçesi. Hayal edilen süreç şu şekilde ilerliyor: Akıllı sözleşme önceden belirlenen zamana kadar bekler, hava durumu raporunu harici bir hizmetten alır ve alınan verilere göre uygun şekilde davranır.

Bunların hepsi kulağa yeterince basit geliyor ama aynı zamanda imkansız. Neden? Çünkü blockchain fikir birliğine dayalı bir sistemdir; yani her düğüm, her işlemi ve bloğu işledikten sonra aynı duruma ulaşırsa çalışır. Bir blockchain üzerinde gerçekleşen her şey tamamen deterministik olmalı ve farklılıkların ortaya çıkması mümkün olmamalıdır. İki dürüst düğüm zincirin durumu konusunda anlaşmazlığa düştüğü anda tüm sistem değersiz hale gelir.

Şimdi akıllı sözleşmelerin zincirdeki her düğüm tarafından bağımsız olarak yürütüldüğünü hatırlayın. Bu nedenle, bir akıllı sözleşme harici bir kaynaktan bazı bilgileri alırsa, bu alma işlemi her düğüm tarafından tekrar tekrar ve ayrı ayrı gerçekleştirilir. Ancak bu kaynak blockchainin dışında olduğundan her düğümün aynı cevabı alacağının garantisi yoktur. Belki kaynak, farklı düğümlerden gelen istekler arasındaki sürede yanıtını değiştirecek veya geçici olarak kullanılamayacak hale gelecektir. Her iki durumda da fikir birliği bozulur ve tüm blok zinciri ölür.

Peki çözüm nedir? Aslında oldukça basit. Harici verilerin alınmasını başlatan akıllı bir sözleşme yerine, bir veya daha fazla güvenilir taraf ("oracle") bu verileri zincire yerleştiren bir işlem oluşturur. Her düğüm bu verilerin aynı kopyasına sahip olacak, böylece akıllı sözleşme hesaplamasında güvenle kullanılabilir. Başka bir deyişle, bir kehanet iter Veriler akıllı bir sözleşme yerine blok zincirine aktarılıyor çeken içeri.

Dış dünyada olaylara neden olan akıllı sözleşmeler söz konusu olduğunda da benzer bir sorun ortaya çıkıyor. Örneğin pek çok kişi, para transferi için bir bankanın API'sini çağıran akıllı sözleşme fikrini beğeniyor. Ancak zincirdeki her düğüm bağımsız olarak kodu çalıştırıyorsa bu API'yi çağırmaktan kim sorumlu? Cevap yalnızca bir düğüm ise, o belirli düğüm kasıtlı olarak veya kasıtsız olarak arızalanırsa ne olur? Cevap her düğüm ise, o API'nin şifresini kullanan her düğüme güvenebilir miyiz? Peki gerçekten API'nin yüzlerce kez çağrılmasını istiyor muyuz? Daha da kötüsü, akıllı sözleşmenin API çağrısının başarılı olup olmadığını bilmesi gerekiyorsa, dış verilere bağımlı olma sorununa geri döneriz.

Daha önce olduğu gibi basit bir geçici çözüm mevcuttur. Harici bir API çağıran akıllı sözleşme yerine, blok zincirinin durumunu izleyen ve yanıt olarak belirli eylemleri gerçekleştiren güvenilir bir hizmet kullanıyoruz. Örneğin, bir banka proaktif olarak bir blockchain'i izleyebilir ve zincir üzerindeki işlemleri yansıtan para transferleri gerçekleştirebilir. Bu, blockchain'in mutabakatı için hiçbir risk teşkil etmiyor çünkü zincir tamamen pasif bir rol oynuyor.

Bu iki geçici çözüme bakarak bazı gözlemler yapabiliriz. Birincisi, her ikisinin de blockchain ile dış dünya arasındaki etkileşimi yönetmek için güvenilir bir varlığa ihtiyacı var. Bu teknik olarak mümkün olsa da merkezi olmayan bir sistemin hedefine zarar veriyor. İkincisi, bu geçici çözümlerde kullanılan mekanizmalar, basit örneklerdir. veritabanı okuma ve yazma. Dış bilgi sağlayan bir kahin, bu bilgiyi zincire yazmaktan ibarettir. Ve blockchainin gerçek dünyadaki durumunu yansıtan bir hizmet, o zincirden okumaktan başka bir şey yapmıyor. Başka bir deyişle, bir blockchain ile dış dünya arasındaki herhangi bir etkileşim, düzenli veritabanı işlemleriyle sınırlıdır. Bu gerçek hakkında daha sonra daha fazla konuşacağız.

Zincir içi ödemeleri zorunlu kılmak

İşte çok sık duyduğumuz başka bir öneri: "akıllı tahvil" olarak adlandırılan kupon ödemelerini otomatikleştirmek için akıllı bir sözleşme kullanmak. Buradaki fikir, akıllı sözleşme kodunun ödemeleri uygun zamanlarda otomatik olarak başlatması, manuel süreçlerden kaçınması ve ihraççının temerrüde düşmemesini garanti etmesidir.

Elbette bunun işe yaraması için, ödemeleri yapmak için kullanılan fonların da blok zincirinin içinde yer alması gerekiyor, aksi takdirde akıllı bir sözleşme ödemeyi garanti edemez. Şimdi, bir blockchain'in sadece bir veritabanı olduğunu hatırlayın; bu durumda, ihraç edilen tahvil ve bir miktar nakit içeren bir mali defter. Yani kupon ödemelerinden bahsettiğimizde, aslında kararlaştırılan zamanda otomatik olarak gerçekleşen veritabanı işlemlerinden bahsediyoruz.

Bu otomasyon teknik olarak mümkün olsa da mali açıdan zorluk çekmektedir. Kupon ödemeleri için kullanılan fonlar tahvilin akıllı sözleşmesi tarafından kontrol ediliyorsa, o zaman bu ödemeler gerçekten garanti altına alınabilir. Ancak bu aynı zamanda fonların da Tahvil ihraççısı tarafından başka bir şey için kullanılamaz. Ve eğer bu fonlar değildir akıllı sözleşmenin kontrolü altında, o zaman ödemenin garanti edilmesinin hiçbir yolu yoktur.

Başka bir deyişle akıllı tahvil ya ihraççı için anlamsızdır, ya da yatırımcı için anlamsızdır. Ve eğer düşünürseniz, bu tamamen açık bir sonuçtur. Bir yatırımcının bakış açısına göre, bir tahvilin asıl amacı, bir miktar temerrüt riski pahasına cazip getiri oranıdır. İhraççı için tahvilin amacı, yeni bir fabrika inşa etmek gibi üretken ancak bir bakıma riskli bir faaliyet için fon toplamaktır. Tahvil ihraççısının, toplanan fonlardan faydalanırken aynı zamanda yatırımcıya geri ödeme garantisi vermesi mümkün değildir. Bu sürpriz olmamalı risk ve getiri arasındaki bağlantı blockchainlerin çözebileceği bir sorun değil.

Gizli verileri gizleme

Olduğum gibi önceden hakkında yazılmışBlockchain'lerin dağıtımındaki en büyük zorluk, sağladıkları radikal şeffaflıktır. Örneğin on banka birlikte blockchain kurarsa ve ikisi ikili işlem yaparsa, bu durum diğer sekiz banka tarafından anında görülebilecektir. Bu sorunu hafifletmek için çeşitli stratejiler olsa da hiçbiri, güvenilir bir yöneticinin kimin neyi görebileceği konusunda tam kontrole sahip olduğu merkezi bir veritabanının basitliğini ve verimliliğini geçemez.

Bazıları akıllı sözleşmelerin bu sorunu çözebileceğini düşünüyor. Her akıllı sözleşmenin, üzerinde tam kontrol sahibi olduğu kendi minyatür veritabanını içerdiği gerçeğiyle başlıyorlar. Bu veritabanındaki tüm okuma ve yazma işlemlerine sözleşme kodu aracılık eder ve bu da bir sözleşmenin diğerinin verilerini doğrudan okumasını imkansız hale getirir. (Veri ile kod arasındaki bu sıkı bağlantıya kapsülleme adı verilir ve popüler yaklaşımın temelidir.) nesne yönelimli programlama paradigma.)

Peki bir akıllı sözleşme diğerinin verilerine erişemezse, blockchain gizliliği sorununu çözdük mü? Akıllı bir sözleşmede bilgilerin saklanmasından bahsetmek mantıklı mı? Maalesef, cevap hayır. Çünkü bir akıllı sözleşme diğerinin verilerini okuyamasa bile bu veriler hala zincirdeki her bir düğümde depolanıyor. Her blockchain katılımcısı için, bir bilgisayarın hafızasında veya diskinde bulunur. katılımcının tamamen kontrol ettiği sistem. Ve eğer isterlerse ve istedikleri zaman bilgileri kendi sistemlerinden okumalarını engelleyecek hiçbir şey yok.

Verileri akıllı bir sözleşmede saklamak, onu bir web sayfasının HTML kodunda saklamak kadar güvenlidir. Elbette normal web kullanıcıları bunu görmez çünkü tarayıcı pencerelerinde görüntülenmez. Ancak bir web tarayıcısının 'Kaynağı Görüntüle' işlevini eklemesi (hepsinde olduğu gibi) yeterlidir ve gizli bilgiler evrensel olarak görünür hale gelir. Benzer şekilde, akıllı sözleşmelerde saklanan veriler için, birinin blockchain yazılımını sözleşmenin tam durumunu gösterecek şekilde değiştirmesi yeterlidir ve tüm gizlilik görünümü kaybolur. Yarı düzgün bir programcı bunu bir saat kadar bir sürede yapabilir.

Akıllı sözleşmeler ne işe yarar?

Akıllı sözleşmelerin yapamayacağı pek çok şey varken bunların gerçekte ne işe yaradığı sorulabilir. Ancak bu soruyu cevaplamak için blok zincirlerin temellerine geri dönmemiz gerekiyor. Özetlemek gerekirse, blockchain, bir veritabanının, birbirine güvenmeyen varlıklar tarafından, merkezi bir yöneticiye ihtiyaç duymadan, doğrudan ve güvenli bir şekilde paylaşılmasına olanak tanır. Blok zincirleri veri aracılığının ortadan kaldırılmasını sağlar ve bu da karmaşıklık ve maliyet açısından önemli tasarruflara yol açabilir.

Herhangi bir veritabanı, bir bütün olarak başarılı veya başarısız olması gereken, o veritabanında yapılan bir dizi değişikliği içeren "işlemler" yoluyla değiştirilir. Örneğin, bir mali defterde, Alice'ten Bob'a yapılan bir ödeme, (a) Alice'in yeterli paraya sahip olup olmadığını kontrol eden, (b) Alice'in hesabından bir miktar düşülen ve (c) aynı miktarı Bob'un hesabına ekleyen bir işlemle temsil edilir. .

Düzenli bir merkezi veri tabanında bu işlemler tek bir güvenilir otorite tarafından oluşturulur. Bunun aksine, blockchain odaklı paylaşımlı bir veritabanında işlemler, blockchain'in herhangi bir kullanıcısı tarafından oluşturulabilir. Ve bu kullanıcılar birbirlerine tam olarak güvenmedikleri için veritabanının gerçekleştirilen işlemleri kısıtlayan kurallar içermesi gerekmektedir. Örneğin, eşler arası bir mali defterde, her işlem toplam fon miktarını korumalıdır, aksi takdirde katılımcılar istedikleri kadar parayı serbestçe kendilerine verebilirler.

Bu kuralları ifade etmenin çeşitli yolları hayal edilebilir, ancak şimdilik sırasıyla Bitcoin ve Ethereum'dan ilham alan iki baskın paradigma var. “İşlem kısıtlamaları” diyebileceğimiz Bitcoin yöntemi, her bir işlemi (a) o işlem tarafından silinen veritabanı girişleri ve (b) oluşturulan girişler açısından değerlendirir. Mali defterde kural, silinen girişlerdeki toplam fon miktarının, oluşturulan girişlerdeki toplamla eşleşmesi gerektiğini belirtir. (Mevcut bir girişte değişiklik yapılmasının, o girişin silinip yerine yeni bir giriş oluşturulmasıyla eşdeğer olduğunu düşünüyoruz.)

Ethereum'dan gelen ikinci paradigma akıllı sözleşmelerdir. Bu, bir sözleşmenin verilerinde yapılacak tüm değişikliklerin sözleşmenin koduyla yapılması gerektiğini belirtir. (Geleneksel veritabanları bağlamında bunu bir zorunlu saklı prosedür.) Bir sözleşmenin verilerini değiştirmek için blockchain kullanıcıları şunları gönderir: isteklerinizi bu isteklerin yerine getirilip getirilmeyeceğini ve nasıl yerine getirileceğini belirleyen koduna. De olduğu gibi bu örnek, bir mali defterin akıllı sözleşmesi, merkezi bir veritabanının yöneticisi ile aynı üç görevi yerine getirir: yeterli fon olup olmadığını kontrol etmek, bir hesaptan kesinti yapmak ve diğerine ekleme yapmak.

Bu paradigmaların her ikisi de etkilidir ve daha önce de belirttiğim gibi her birinin kendi avantajları ve dezavantajları vardır. daha önce derinlemesine tartışıldı. Özetlemek gerekirse, Bitcoin tarzı işlem kısıtlamaları üstün eşzamanlılık ve performans sağlarken, Ethereum tarzı akıllı sözleşmeler daha fazla esneklik sunar. Akıllı sözleşmelerin ne işe yaradığı sorusuna dönecek olursak:

Akıllı sözleşmeler, işlem kısıtlamalarıyla uygulanamayan blockchain kullanım durumları içindir.

Akıllı sözleşmelerin kullanımına ilişkin bu kriter göz önüne alındığında, izin verilen blok zincirlerin uygun olduğunu gösteren güçlü bir kullanım durumu henüz görmedim. Bildiğim tüm ilgi çekici blockchain uygulamaları, izin verme ve genel veri depolamanın yanı sıra varlık oluşturma, aktarma, emanet etme, değiştirme ve imha işlemlerini de yapabilen Bitcoin tarzı işlemlerle uygulanabilir. Bununla birlikte, yeni kullanım durumları hala ortaya çıkıyor ve bazılarının ortaya çıkması beni şaşırtmaz. do akıllı sözleşmelerin gücünü gerektirir. Veya en azından Bitcoin paradigmasının bir uzantısı.

Cevap ne olursa olsun akılda tutulması gereken nokta, akıllı sözleşmelerin bir veritabanında gerçekleştirilen işlemleri kısıtlamak için kullanılan yöntemlerden sadece biri olduğudur. Bu şüphesiz faydalı bir şeydir ve veritabanını paylaşım için güvenli hale getirmek için gereklidir. Ancak akıllı sözleşmeler bundan başka bir şey yapamaz ve kesinlikle içinde bulundukları veritabanının sınırlarından kaçamazlar.

Lütfen herhangi bir yorum gönderin LinkedIn'de.

Zaman Damgası:

Den fazla Çoklu zincir