Ethereum Oracle Sözleşmeleri: Oracle'a Güvenebilir miyiz?

Yayınlanan: 2022-03-11

Bu makale, Ethereum oracle sözleşmelerinin kullanımına ilişkin üç bölümlük bir dizinin son bölümüdür.

  • Birinci bölüm, kodun kurulmasına, çalıştırılmasına ve trüf çerçevesiyle test edilebilir hale getirilmesine yönelik bir girişti.
  • İkinci bölüm, kodu biraz inceledi ve onu Solidity'nin bazı kod ve tasarım özellikleri hakkında tartışmak için bir başlangıç ​​noktası olarak kullandı.

Şimdi, bu son bölümde şu soruları sormak istiyorum: az önce ne yaptık ve neden? Ve bazı umut verici düşündürücü düşünce yolları sağlamaya çalışın. Jüri, kehanet kullanımının güvensizlikle nasıl ilişkili olduğu ve blok zinciri ile ilgili olarak “güvensizlik” kelimesinin gerçek dünya kullanımında gerçekte ne anlama geldiği konusunda hala çok fazla kararsız. Bu fikirlerin bazılarını kavramsal formlarından pratik kullanıma getirdiğimizde, bunun gibi sorularla boğuşmak ve uzlaşmak zorunda kalacağız. Öyleyse başlayalım.

Özet: Neden bir Ethereum kahine ihtiyacımız var?

Bu, blok zincirinde kod yürütmenin doğasının tam kalbine ulaşır. Değişmezlik ve determinizm gereksinimlerini karşılamak için ve kodun zincirdeki düğümler tarafından fiilen yürütülme şeklinin bir eseri olarak, akıllı bir sözleşme, iyi bir şey yapmak için doğrudan blok zincirinin dışına ulaşamaz.

Çoğu programcı için bu gerçek, çok doğal olmayan bir düşünme biçimi sunar. Bir yerden veriye ihtiyacımız varsa, normalde buna bir yere bağlanır ve çekeriz. Hava durumu raporu verilerine ihtiyaç duyan akıllı bir sözleşme mi? Sadece bir hava durumu beslemesine bağlanın. Ama hayır; bir blockchain akıllı sözleşmesi bunu kesinlikle yapamaz; bazı veriler blok zincirinde zaten yoksa, sözleşme kodunun yürütme sırasında ona erişimi yoktur. Öyleyse çözüm, sözleşmenin yürütülmesi sırasında blok zincirinde ihtiyaç duyulan verilere zaten sahip olmaktır. Bu, verileri zincire çekmek yerine, özellikle diğer sözleşmeler tarafından kullanılmak üzere zincire iten harici makineler gerektirir. Bu dış makine kahindir. Zincire aktarılan veriler, daha sonra muhtemelen diğer sözleşmelerle paylaşmak için hükümler koyan bir kehanet sözleşmesine aktarılır. Bu kuruluma bir örnek, tam olarak bu makale üçlemesinin önceki iki bölümünde oluşturup incelediğimiz şeydir.

Ethereum oracle illüstrasyon

Göze Çarpan Güvenlik Delikleri

Bana göre, tüm halka açık blok zincirinde yer alan temel konu T kelimesidir: güven. En saf haliyle, bu sistemlerin yaptığı şey, hiçbir tarafa körü körüne güvenmek zorunda olmadığımızı garanti etmek (bu dünyada mükemmel bir garanti mümkün değildir, ancak mümkün olduğu kadar yakındır). Zeki okuyucu, Boks Bahisleri örneğindeki göze çarpan güvenlik açıklarından bazılarını zaten sorgulamış olabilir . Güvensizlik tartışmamız için en önemli olanlara ve bunun akıllı sözleşmelerle kehanet kullanımıyla nasıl bir ilişkisi olduğuna odaklanmak istiyorum.

1. Bahis sözleşmesinin sahibi/koruyucusu yozlaşmış olabilir

BoxingBets.sol'ün 58. satırından başlayarak aşağıdaki fonksiyona sahibiz:

 /// @notice sets the address of the boxing oracle contract to use /// @dev setting a wrong address may result in false return value, or error /// @param _oracleAddress the address of the boxing oracle /// @return true if connection to the new oracle address was successful function setOracleAddress(address _oracleAddress) external onlyOwner returns (bool) { boxingOracleAddr = _oracleAddress; boxingOracle = OracleInterface(boxingOracleAddr); return boxingOracle.testConnection(); }

Bunun neye izin verdiği oldukça açık olmalıdır. Sözleşme sahibi (ve yalnızca sözleşme sahibi), herhangi bir zamanda ve herhangi bir kısıtlama olmaksızın, boks maçları için kullanılan kehaneti değiştirebilir ve kazananları belirleyebilir. Bu neden bir sorun? Sizin için zaten açık değilse, bu, sözleşme sahibinin sözleşmeyi kendi kârı için kasten kötüye kullanmasına izin verir.

Örnek: Bir sonraki boks maçı Soda Popinski vs. Glass Joe. Soda, açık ara farkla favori. Herkes Soda üzerine bahse girer. Üzerine binen tonlarca para. Ben, sözleşme sahibi, hızlı bir tane çekmeye karar veriyorum. Maça karar verilmeden hemen önce, Glass Joe'yu kazanan olarak ilan etmek için kodlanmış olması dışında, resmi kâhinle aynı olan kendi kötü niyetli kehanetimle değiştiriyorum. Glass Joe, tüm parayı ben kazanıyorum ve kimse beni durduramaz diyor. Bundan sonra belki kimse benim sözleşmeme güvenmeyecek, ama umrumda değil; belki de sırf o soygunu çekmek için sözleşmeyi yazıp yayınladım.

Bazı alternatifler nelerdir?

1. Kahinin değiştirilmesine izin vermeyin

Yukarıda belirttiğimiz sorun, sözleşme sahibi tarafından kehanetin değiştirilmesine izin vermemizden kaynaklanmaktadır. Öyleyse, oracle adresini sadece sabit kodladığımızı ve değiştirilmesine hiç izin vermediğimizi varsayalım? Aslında bunu yapabiliriz, söz konusu değil. Ama sonra şu soru ortaya çıkıyor, ya o kahin kapanırsa - herhangi bir nedenle veri sağlamayı bırakırsa? O zaman yeni bir kahin almamız gerekecek. Ya da başlangıçta güvenilen bu kahin yozlaşmışsa ve artık güvenilmezse? Yine, yeni bir kehanete geçmek isteyeceğiz. Eğer kahini sabit kodlamışsak, o zaman kahini değiştirmenin tek yolu farklı bir kahini kullanan yeni bir sözleşme yayınlamaktır. Tamam, bunu tekrar yapabiliriz . Bu söz konusu değil. Elbette akıllı sözleşmelerin, örneğin bir web sitesi kadar kolay güncellenemeyeceğine dikkat edin. Bu kolay olmaz mıydı? Bir hata veya güvenlik açığı fark ederseniz, onu yamalayın ve kimse daha akıllı değil. Akıllı sözleşme dağıtım modeli, ambalajlı yazılım modeline biraz daha yakındır; yazılım kullanıcının eline geçtiğinde, oradadır ve onu düzeltemezsiniz. Kullanıcıdan kendilerini manuel olarak yükseltmesini istemeniz gerekir. Akıllı sözleşmeler biraz benzer. Bu sözleşme blok zincirinde olduğunda, mantık yazdığınız kısımlar dışında, blok zincirinin geri kalanında olduğu gibi değişmezdir.

Bu mutlaka bir engelleyici değildir; Artık akıllı bir sözleşmenin nasıl değiştirilebilir hale getirilebileceğine dair birçok model ve düşünce okulu var. Bu konu başlı başına iyi bir makale olabilir, ancak şimdilik bu Hackernoon makalesine ve akıllı sözleşme stratejileri hakkındaki bu makaleye göz atabilirsiniz.

Bir kullanıcının bakış açısından bu nasıl görünürdü? Diyelim ki yaklaşan Don Flamenco maçına bahis oynamayı düşünüyorum. Sözleşmenin, zaten bildiğim ve güvendiğim bir kehaneti karmaşık olmayan bir şekilde kodladığını açıkça görebiliyorum (peki, belli bir boyutta bir bahis koyacak kadar güven). İşte bu kadar. Oldukça basit. Sözleşme sahibi sözleşmenin yeni bir versiyonunu yeni bir kehanetle yayınlarsa, eskisini kullanmaya devam etme özgürlüğüm hala (olmalı) olmalıdır. Pekala belki. Yükseltmenin nasıl işlendiğine bağlıdır. Sözleşme devre dışı bırakıldıysa veya yok edildiyse, şansım tükenebilir. Ancak vanilya durumunda, yine de durması gerekir.

2. Süre boyunca kahini kilitleyin

Yukarıda açıklanan gibi maskaralıkları azaltmak için koda bazı karmaşıklıklar ekleyebiliriz (bir örneğin çok karmaşık olması gerçekten arzu edilmez, ancak gerçek dünyadaki bir çözüm için bu karmaşıklığın getirdiği faydayı isteyebiliriz). Bence yapılacak çok makul bir şey, bahsin süresi boyunca kahini "kilitleyecek" bir kod eklemek olacaktır. Başka bir deyişle, sözleşmenin mantığı, çok açık ve basit bir şekilde, bahsi yaptığımda mevcut olan kehanet ne olursa olsun, kazananı belirlemek için kullanılan kehanet ile aynı olması gerektiğini garanti edebilir. Yani bu arada kahin değişse bile, diğer maçlar için, benim maçım için ve bahsim için, baştan sona aynı kalmalıdır. Bu, kullanıcının kahin kim olduğunu bilmesini sağlamakla el ele gider.

Bunu göstermek için hızlı bir örnek verelim. ben bir kullanıcıyım Yaklaşan Little Mac dövüşüne bahis oynamayı düşünüyorum. Sözleşmede, bu maçın kazananını belirlemek için kullanılacak kahini incelememe izin veren bir imkan var. Sözleşmenin Nintendo Sports tarafından sunulan iyi bilinen bir sözleşme olduğunu doğrularım. O kehanete yeterince güveniyorum. (Biraz daha karmaşıklık eklemek için, belki sözleşme, kullanıcıların belirli bir eşleşme için bir dizi kullanılabilir oracle arasından seçim yapmasına izin verir). Şimdi kahinin kodunu inceleyebilirim ve kahinin mantığının, maçın sonucunu belirlemek için aynı kahinin kullanılacağını garanti ettiğini görebilirim. Yani bahisçi olarak en azından bu güvenceye sahibim. Bu, kahinimin kötü (yani yozlaşmış veya güvenilmez) olabileceği gerçeğini engellemez ama en azından arka planda değiştirilemeyeceğine dair beni temin eder.

Buradaki bir risk, bahsi koyduğum zaman ile maçın kararlaştırıldığı zaman arasında kahinin "çözülme" (korumayı veya güncellenmeyi durdurması) olabilir. Para sözleşmeye kilitlenebilir ve geri alınamaz hale gelebilir. Bunun için (belki) sözleşmeye zamanla etkinleşen bir madde koyabiliriz, burada bir maç belirli bir saat veya tarihe göre kararsızsa (maç tanımının bir parçası olabilir), "ölü" olarak kabul edilir ve tüm para içeride kilitlenir bahisçilere iade edilir.

3. Oracle'ın kullanıcı tanımlı olmasına izin verin

Daha da karmaşık (ama muhtemelen daha ilginç) bir şey, kullanıcıların kendi oracle'larını belirlemelerine ve bu oracle'lar etrafında kendi bahis havuzlarını (sözleşme aracılığıyla) oluşturmalarına izin vermek için Oracle adresini "boş" bırakmak olacaktır. Aynı oracle'ı kullanan kullanıcı grupları, sözleşmenin mantığını izleyerek birlikte bahis oynayabilir. Bu, kullanıcının güvendiği bir kahin seçme ve bu kehaneti diğer benzer düşünen kullanıcılarla paylaşma sorumluluğuna sahiptir. Aslında, bahis topluluğunu parçalara ayırır, bu nedenle yalnızca geniş bir kullanıcı tabanı varsa işe yarar; aksi takdirde, bahisleri gerçekten ilginç ve karlı hale getirmek için çok az sayıda bahisçi olurdu. En sevdiğim kahinle bahis oynayan tek kişi bensem, orada pek teşvik yok! Ancak öte yandan, sözleşme sahibinden güvenilir bir kehanet seçme sorumluluğunu alır ve bunun elini yıkayabilir. Bazı kullanıcılar bir Oracle'ı güvenilmez bulursa, onu kullanmayı bırakıp bir başkasına geçerler ve kimse sözleşme sahibine kızmaz. Sadece bahis alanını sağladı ve hizmetini onurlu bir şekilde yerine getirdi.

Bu stratejinin karmaşıklığına ek olarak, bir şekilde organik bir grup oracle'ın vahşi doğada 'büyümesine' ve bu çözüme tam olarak uyanlara izin vermemiz gerektiği gerçeğidir. Potansiyel kehanetlerin uyması gereken tam arayüzü dünyaya yayınlamamız gerekecek ve kullanıcıya gerçekten bir seçenek sunmak için yeterince iyi bir sayının ortaya çıkacağını umacaktık. Belki grubu kendimizden bir ya da iki tanesiyle tohumlayabiliriz. Olmazsa, bahis DApp'imiz yok. Ama eğer öyleyse, vahşi doğada kullanıcı tarafından seçilen, organik olarak yetiştirilen kahinler fikrinin ilginç ve çekici bir çözüm olduğunu kabul etmeliyim.

2. Oracle'ın sahibi/koruyucusu bozuk olabilir

Yolsuz yani güvenilmez anlamında; kehanetin sahibi/koruyucusu/yöneticisinin kendisini zenginleştirmek için bir maç için yanlış bir sonuç ilan etmesi muhtemeldir.

Örnek: Bahis sözleşmesinin kullanması için blok zincirine boks verilerini besleyen gerçek oracle'ın sahibi/koruyucusuyum. Oracle'ım herhangi bir bahis oynama veya bahis yönetimi ile doğrudan ilgili değildir. Görevi, bahis sözleşmesinin (ve belki herhangi bir sayıda başka sözleşmenin) kullanabileceği verileri sağlamaktır. Ancak, şahsen benim kahinimi kullanan bahis sözleşmesini kullanarak bahis oynayabilirim; Zaten anonimim, bu yüzden herhangi bir intikamdan korkmuyorum. Böyle bir sözleşmeye bahis oynadığımda, açık bir çıkar çatışması vardır. Spesifik olarak, kahinimi doğru ve doğru bilgilerle güncellerken gösterdiğim dürüstlük, bahis eylemlerimle çelişebilir.

Diyelim ki, önümüzdeki Sandman/von Kaiser maçında, ki burada von Kaiser büyük ölçüde zavallı durumda, ben devam edip von Kaiser'e büyük bir bahis koydum. Von Kaiser beklendiği gibi kaybettiğinde, onun yerine yanlışlıkla onu kazanan ilan etmek için kahinimi kullanırım! Bahis sözleşmesi olması gerektiği gibi işliyor (bu noktada onu durdurmanın bir yolu yok), maçta öldürme yapıyorum, rücu ve beni cezalandırmanın bir yolu yok ve hayat devam ediyor. Belki bundan sonra insanlar artık benim kahini kullanmayı reddediyorlar; belki de umurumda değil.

Bunu nasıl önleyebiliriz?

Şimdi çok daha büyük bir soruyla karşı karşıyayız ve kehanetlerle ilgili olduğu için sözde güvensizliğin tam kalbine inen bir soru. Oracle, tarafsız bir üçüncü taraf veya hatta güvenilir bir üçüncü taraf olduğu konusunda güvenilirdir. Sorun şu ki, kahin insanlar tarafından yönetiliyor. Yine bir başka sorun da, Oracle'ın, sözleşmenin üzerinde hareket ettiği verileri sağladığı için müşteri sözleşmesinin görevlerini nasıl yerine getirdiği üzerinde büyük bir kontrole sahip olmasıdır. Belirli bir kahine güvenebileceğimizi nasıl bilebiliriz?

Neden herhangi bir kehanete güvenelim?

Blockchain akıllı sözleşmelerinin tüm fikri, birine güvenme ihtiyacını ortadan kaldırmaksa, bir kahine “güvenmemiz” gerektiği gerçeği, güvensizliğin karşısında uçup gitmez mi? Eh, derdim ki: büyüme zamanı oğlum (veya kızı)! Saf güvensizlik diye bir şey yoktur ve blockchain güvenilmez bir ortam sağlamaz. Blockchain, insan etkileşimlerini kolaylaştıran bir katmandır. İnsan etkileşimleri hala temel veya nihai sonuçtur ve insan etkileşimleri güvenilmez olamaz.

Bağlantı: Oracle Sorunu

Güvenin Evrimi

Zamanın başlangıcında, başka bir insana nasıl güvenebilirdim? Diyelim ki mamut avlıyorum ve o adam etin yarısı karşılığında mamutu avlamama yardım edeceğini söylüyor? Yarısını sağlayacağıma nasıl güvenebilir? Av bittiğinde kafama vurmayacağına ve tüm mamutu almayacağına nasıl güvenebilirim?

O zamanlar, şiddet tehdidi muhtemelen birçok sosyo-ekonomik güvenin merkezindeydi. O adamın payını çalmaya çalışırsam, bana saldırmaya çalışacağından eminim ve bu benim için risk oluşturur. Onunla bir kavgada kazanacağımdan emin olsam bile, (bir mağara adamı olarak) her şeyin olabileceğini bilecek kadar savaşmayı biliyorum ve teknik olarak kazansam bile hayatımı tehdit eden bir yaralanmayı kolayca sürdürebilirim. Her zaman bir risk ve bir enerji yatırımıdır. O dünyada, bu insanları dürüst tutmak için yeterli olabilir.

Genel olarak, hile yapmayacağım çünkü bunu yapmak genel olarak ve ortalama olarak benim yararıma değil . Başka bir deyişle, aldatmanın beklenen sonucu, işbirliğinin beklenen sonucundan daha azdır.

Durum böyle değilse veya aktörler durumun böyle olmadığını algılarsa, muhtemelen bir veya daha fazlası katılmamayı seçecektir. Örneğin, diğer adamın boynuzları ve canavar dişleri olan 9 fit boyunda bir dev olduğunu görürsem, herhangi bir anlaşma yapmadan kaçmayı seçebilirim; Adam uğraşamayacağım kadar tehlikeli görünüyor, istediği şeyi cezasız bir şekilde çalabilir. Kabaca eşit olursak, hile yapmanın hiçbir tarafın çıkarına olmadığı, işbirliği yapmanın ikimizin de çıkarına olduğu bir durumda olduğumuzu algılarız ve bu nedenle her iki tarafın da aklı başında ve mantıklı olduğunu varsayarsak, iki taraf da işbirliği yapacak.

Oracle sözleşmeleri ve güvenin evrimi

Kültür geliştikçe insan etkileşimleri de gelişti. Daha az şiddetli hale geldiler, ancak örtülü güç tehdidi ortadan kalkmadı. Kültürel adetler, insanları işbirliği yapmaya daha fazla teşvik etti ve hile yapmak için farklı türde caydırıcılar verdi.

Erken uygarlık zamanına hızlı ileri sar; 100 kile buğday almak için pazarlık yapıyorum. Bu bir tür ilkel vadeli işlem sözleşmesi; Gelecek ay hasat edildiğinde alacağım tahılın parasını bugün ödüyorum. Adama bakır madeni paramı veriyorum, el sıkışıyoruz, bir kadeh arpa birası içiyoruz ve sözleşmenin ödenmesi için önümüzdeki aya kadar yollarımızı ayırıyoruz. Iyi gorunuyor.

Kendimi o adamın merhametine bıraktım; paramın tamamı onda ve benim henüz hiçbir şeyim yok. Peki, sözleşmeyi yerine getireceğinden emin olmamı sağlayan şey nedir? Bir kaç şey. O bir işadamı; düzenli olarak yerel halkla iş yapar. Tanıdığım insanlarla iş yaptı ve her zaman adil ve zamanında teslim etti. Dürüstlük konusunda bir üne sahiptir. Ayrıca, hile yapmaktan caydırıcı olduğunu biliyorum. Esas olarak dürüst bir tüccar olarak bilinmesi gerçeğine dayanarak geçimini sağlar. Eğer beni aldatırsa herkese haber verirdim ve bu onun itibarına ve dolayısıyla işine zarar verirdi. Beni aldatarak kazandığı para, müşteri tabanı onu terk ederse, gelecekte kazanamayacağı parayla karşılaştırıldığında küçük olurdu. Bu yüzden, beni aldatmasının ille de onun çıkarına olmadığını biliyorum.

Bu harika; Yukarıdaki resimde güç veya şiddet tehdidi yoktur. İki şey dışında:

  1. Güç tehdidi tamamen yok değil. Aldatmaktan caydırıcı başka bir şey, aldatılan bir adamın ne yapacağı düşüncesi olabilir. Silahlarım ve bana sadık arkadaşlarım var. Ben kızgın bir aldatılan taraf olarak zora başvurabilirim. Klan savaşları böyle başlar!
  2. Ayrıca, davanın ayrıntılarını değerlendirecek ve muhtemelen tüccarı para cezasına çarptıracak veya onu hapse atacak bir tür yönetim sistemi de olabilir. Standart hükümet destekli caydırıcılığınız her zaman güç tehdidiyle desteklenir, çünkü para cezasını ödemeyi reddetmenin, hapse girmeyi reddetmenin, tüm önlemlere uymayı reddetmenin altında yatan ceza, nihayetinde güçtür. Ve bu günümüze kadar devam ediyor. Para cezasını ödemeyi reddedersem tutuklanabilirim. Tutuklanmayı reddedersem, bana karşı güç kullanılacak ve isteğim dışında hapse atılabilir, hatta öldürülebilirim (direnişim yeterince inatçıysa). Orada, küçük bir ihlal için bile sadece iki adım ötede güç tehdidini görüyoruz!

Bugün Merkezi Olmayan Güven

Günümüze hızlı ileri sar. Bir sözleşmeyi feshetmek için caydırıcı şeyler nelerdir? Önceki senaryodan çok farklılar mı?

X Şirketi, bu ürünü satın aldığında postayla iade indirimi uygular. Bunu başaracaklarına neden güveniyorsunuz? Önceki örnekte olduğu gibi; Şirketin küçük bir meblağda hile yaparak kazanacağı çok az şey ve itibarını zedeleyerek kaybedeceği çok şey var. Bu, birçok güven senaryosunun arkasındaki temeldir ve uzun süredir kullanılmaktadır. Ve yine, tahıl tüccarı örneğinde olduğu gibi, güç tehdidi var, ancak bu durumda o noktaya gelmeyecek. Şirket para cezasına çarptırılabilir veya toplu dava ile cezalandırılabilir ve şirket para cezasını ödemeli veya daha kötü cezalarla karşı karşıya kalmalıdır. Bu cezalar, hem ekonomik hem de askeri güç tehdidiyle desteklenen bir hükümet tarafından destekleniyor, ancak ekonomik güç tehdidinin de askeri güç, yani şiddetle desteklendiğini düşünebiliriz.

Geleneksel Sistemler

Hükümetin onayladığı güç uygulamasıyla desteklenen sözleşmeler modeli binlerce yıldır insanlığa iyi hizmet etti mi? Yoksa sahip mi? Evet, var, ama bu doğal bir ilerleme. Hükümetin yokluğunda, insan grupları hükümetleri oluşturur. İnsanların hükümet kurmasını engelleyemezsiniz gibi görünüyor; oluşturacaklar.

Peki ya blockchain akıllı sözleşmeleri? Blok zinciri ve akıllı sözleşme modeli güvenilirliği nasıl sağlar veya hile yapmayı nasıl caydırır? Sadece “güvensizlik” deme, bu bir cevap değil! Önceki örneklerimizde, hile yapmak bir şekilde caydırıcıdır.

Blok zincirinin bu işlevi nasıl yerine getirdiğine (veya değiştirdiğine) daha yakından bakalım.

Blok Zinciri Sistemleri: Bitcoin

Bu büyük soruyu daha küçük sorulara bölmek için bitcoin ile başlayalım. Bitcoin hile yapmayı nasıl caydırır? Bitcoin ağının protokollerine uyduğu sürece, istediğim herhangi bir bitcoin düğüm yazılımını çalıştırmakta özgürüm. Hiç kimse, ağ protokollerine bağlı kalarak istediğini yapan kendi özgün bitcoin düğümümü çalıştırmaktan beni vazgeçiremez; Bunu yasadışı kazançlar için kullanmamın bir yolu var mı?

Elbette, onay için bitcoin ağına her türlü işlemi bırakabilirim. Tüm bitcoin'inizi bana gönderen bir işlemi serbest bırakabilir, ağa bırakabilir, bir bloğa eklenmesini bekleyebilir ve vay, şimdi tüm bitcoin'leriniz bana mı ait? Hayır, şifreleme nedeniyle.

Özel anahtarınız bende değil ve böyle bir işlemin özel anahtarınızla imzalanması gerekiyor. Yani, orada kriptografi tarafından engellendim. Yada ben mi? Böyle bir işlemin imzalanması gerektiğini kim söylüyor? Denesem ne olacak? Tabii ki olacak olan şu ki, tüm bitcoin ağı işlemimi reddedecek. Kim neden kabul etsin ki? Hepsinin kontrolden reddedecek standart düğümler çalıştırması bir yana, neden hile yapmama yardım etsinler ki? Bunu yapmak kesinlikle bitcoin ağının bütünlüğünü baltalayacak ve bunu yaparken kendi kripto zenginliklerini baltalayacaktır. Bu yüzden, isimsiz bir yabancı olan bana, başka bir isimsiz yabancıyı aldatmam için yardım etmelerinin bir anlamı yok. Mantıksız bir aktör geçersiz işlemimi bir şekilde kabul etse bile, bitcoin ağının büyük çoğunluğu bunu reddedecek ve hiç şansı yok. Yine, bu sefer tam sayılarla yenildi.

Peki ya güçlü bir maden işletmesiysem? Elbette şimdi işleri kendi lehime çevirmek için daha fazla gücüm var. Yapıyorum ama yine de bana mutlak güce yakın bir şey vermiyor. Güçlü bir madenci olarak bile, ağın %50'sinden daha azını kontrol edersem fazla bir şey yapamam. İşlemlerin bloklara eklenme sırasını seçme gücüm var, ancak bu, madeni para basma veya çalma gücü değil. Ağın %50'sinden fazlasını kontrol etsem bile (burada okuyucunun bitcoin'de olduğu gibi iş kanıtı ile ilgili olarak iyi bilinen %51 saldırısının farkında olduğunu varsayarsak), asıl gücüm çifte harcama olacaktır. Biraz havalı bir güç olsa da, bitcoin'in bütünlüğünü baltalayacağı için bunu yapmanın benim yararıma olup olmayacağı çok şüpheli. Tüm madeni paraları çıkarmak için kontrolümü kullanmak, böylece daha fazla para kazanmak ve bu zenginliğin üzerinde durduğu zemini korumak muhtemelen daha iyi olurdu. Bu nedenle, yenilmedim, ancak hile yapma dürtüm, organik olarak protokolde yerleşik olarak bulunan bir caydırıcılık tarafından engelleniyor. Ve bu caydırıcılık temel olarak sayıların gücüyle destekleniyor; Bitcoin ağındaki katılımcıların ezici fikir birliği.

Blockchain Akıllı Sözleşmeleri ve Oracle Sözleşmeleri

Akıllı sözleşmeler nelerdir? İnsanları bana paralarını göndermeleri için kandırmak için yanıltıcı bir sözleşme yaptığımı varsayalım. Ya da bir bahis sözleşmesi dağıttığımı ve daha önce açıklanan saldırılardan birini (bunlara böyle diyebilirseniz) kullandığımı varsayalım? Bunu yapabilirim, bazı insanları kandırabilir; Dürüst olmayan bir oyuncu olarak, böyle bir çabadan küçük bir kazanç sağlayabilirim. Buna karşı savunma, her bir katılımcının (herhangi bir sözleşmede olması gerektiği gibi) taraf olmak üzere oldukları sözleşmeyi ve bunun kötüye kullanılabileceği potansiyel yolları dikkatlice değerlendirmesi olacaktır. Ayrıca kaynağı da dikkate almalıdırlar - eğer varsa, sözleşmeyi yayınlayan ve sürdüren taraf ve ilgili oracle'lar veya ilgili sözleşmeler hakkında ne biliyorlarsa. Dürüst olmayan bir sözleşmenin, ağ gayri resmi olarak sahtekâr olarak işaretlemeden ve katılımcıların gönüllü olarak sözleşmeden kaçınmasına ve sözleşmeyi kesmesine neden olmadan önce uzun sürmeyeceğini umarız. Ağ büyük ve kelime hızla yayılıyor.

Bir nokta dışında, yine de bir insana güvenmeniz gerekiyor. Bahis sözleşmesinin verileri bir oracle tarafından sağlanır. Kahin bir insan tarafından korunur. Ağı dürüst tutmak için ne kadar katman eklerseniz ekleyin, yine de bir noktada bir insana geri döner. Peki, bahis örneğimizi göz önünde bulundurursak, ne tür bir kehanete güvenirsiniz? Aldatarak kazanmaktan çok kaybedecek bir kahine güvenirdim. Örnek: ESPN veya benzeri bir ağın Oracle'ın sponsorları olduğunu hayal edin. Bir boks bahsinde yasa dışı olarak küçük bir miktar kazanmak, sonuçta ortaya çıkan itibar kaybı tarafından gölgede bırakılacağından, onlardan dürüst veri sağlamalarını herkesten daha fazla beklersiniz. Bu durumda, dürüst tahıl tüccarına güvenmemizle aynı nedenle güveniniz yerindedir. Bu tür bir güven düzenlemesi eski ve köklüdür.

Peki, akıllı sözleşmelerin kullanımında ne kazandık? Akıllı sözleşmeler, yönetişim veya önceki koruma sözleşmeleri yöntemlerinden nasıl farklıdır?

Toplama

Sadece bir noktaya değinmek, düşünce ve tartışma için yiyecek vermek ve makalemi bitirmek için, sert sonuçlar yerine birkaç basit gözlem sunacağım. Çünkü bu karmaşıklıkta bir konu için, özlü bir sonuç, bir tür tam olarak böyle bir hikaye ve aşırı basitleştirme gibi geliyor. Ortaya koyacağım gözlemler (ve lütfen bunları tartışmaktan/çürütmekten/çelişmekten çekinmeyin) şunlardır:

  • Diğer tarafın hile yapmaktan ziyade işbirliği yapmaktan daha fazla kazanacağı varsayımına dayanan güven eskidir, pratik durumlarda çalışır ve kaybolmaz. Blockchain dünyasındaki bazı durumlarda hala doğaldır, ancak birçok durumda ortadan kaldırılabilir. Kehanet örneğimizde, hala hayatta ve iyi durumda.
  • Kuvvet veya şiddet tehdidine dayalı güven, çok eski zamanlardan beri insan toplumunun doğasında vardır, ancak akıllı sözleşme modelimizde dikkate değer bir şekilde yoktur ve yerini akıllı şifreleme ve büyük sayılarda fikir birliği yoluyla uygulama almıştır.

Ethereum geliştiricilerine iki şey yapmaları için meydan okuyorum:

  1. Herhangi bir şekilde, herhangi bir şeyin örtülü ya da açık güç tehdidiyle zorlandığı halka açık blokaj sistemlerinde (bitcoin veya ethereum gibi) düşünün.
  2. Modern sözleşme veya mali hukukta, herhangi bir şekilde açık veya zımni güç tehdidi tarafından uygulanmayan herhangi bir büyük kural sistemini düşünün.

Güvenin evrimi ve devlet gücü illüstrasyonu

Eski Bir Şey, Yeni Bir Şey

Ve bence burada ana farka ve aslında blok zinciri sistemlerinin geçmişin sistemlerine kıyasla “devrimci” olduğunu söylememizin gerçek sebebine ulaştık. Benim düşünceme göre, bu kesinlikle güvensizlik değil, daha çok güven için daha istikrarlı bir platform ve - en önemlisi - hiç bir şekilde güç veya şiddet tehdidine dayanmayan bir platform.

Bir yanda, aldatmaya teşvikin olmadığı durumlarda karşılıklı faydanın eski ve zaman içinde test edilmiş güvencesine sahibiz. Bu yeni bir şey değil. Yeni olan, hileyi caydırmaya ve sistemi dürüst tutmaya yardımcı olan şifreleme destekli fikir birliğinin sunulmasıdır. Ve bu iki unsurun sentezi, insanlık tarihinde ilk kez mümkün olan gerçekten dikkate değer bir şey üretti: caydırıcı veya ceza olarak açık veya örtülü güç tehdidinin hiçbir yerde bulunmadığı, büyük, anonim gruplar için kullanılabilen bir sistem. . Ve inanıyorum ki, gerçekten şaşırtıcı olan budur. Bu yönü gözden kaçırırsak, elimizdeki şey yeni ve şık bir teknolojidir (ki kabul ediyorum, olduğu gibi yeterince havalı). Ancak bu açıdan bakıldığında, yeni bir yönetişim çağına girdiğimiz açıktır.