İmkansız blok zinciri (3) -POS ve POW-DAG üçgenini kırın

Önceki makalede, esas olarak POW'un neden ölçeklenebilir olmadığını ve ölçeklenebilir POW'un nasıl uygulanacağını tartıştık. Mantığı tekrar gözden geçirelim-

1. POW, hesaplama gücüne dayalı adil bir rastgele oluşturma yöntemidir.Ancak etkinliği zamana bağlıdır.Yani, bir bloğu başarılı bir şekilde madencilik yapma olasılığını hesaplarken, yalnızca sizinkini dikkate almamalısınız. Hesaplama gücünün toplam hesaplama gücüne oranı m, aynı zamanda etkin madenciliğinizin t süresini de göz önünde bulundurun. Diğer bir deyişle, kötü niyetli bir düğümün hesaplama gücünün% 50'sinden fazlasına sahip değilse, Bitcoin'e saldıramayacağını her zaman söylesek de, burada t zamanı dikkate alınmaz. Başka bir deyişle, buradaki% 50 dürüst düğümlere dayanmaktadır Etkili madencilik Dayanarak.

2. Peki, etkili madencilik nedir? Bitcoin'in POW'unda, yalnızca en uzun zincirdeki madenciliğe etkili madencilik denir. Yasal bir blok çıkarılırsa ve ne zaman çıkarılırsa, yasal bloğa gerçekten sahip olan zincir en uzun zincir olur. Şu anda, gelip yeni bir blok almadığınız için orijinal blokta fazladan bir saniye kazsanız bile, aslında Geçersiz madencilik . Ancak Bitcoin POW için, başından beri geçersiz madencilikten kaçınmak asla düşünülmedi. Yaptığı şey, geçersiz madencilik nedeniyle kaybedilen bilgi işlem gücünü, gereken toplam bilgi işlem gücüne kıyasla ihmal edilebilir hale getirmektir, böylece hala% 50'ye yakın bir güvenliğe sahibiz.

3. Öyleyse, boşa harcanan bu bilgi işlem gücü ne zaman göz ardı edilmelidir? İki durum vardır, a) boşa harcanan hesaplama gücü arttığında; b) hedef hesaplama gücü azaldığında. Blokları artırırken, blokları senkronize etmek için gereken süre uzar, bu nedenle bir madenci tarafından geçerli bir bloğun serbest bırakılmasından başlayarak, senkronizasyonu tamamlamak için zamanı olmayan diğer madenciler için geçersiz madencilik süresi de uzar. Hesaplama gücü boşa gitti. Blok aralığını azaltmak, hedefin zorluğunu azaltmakla eşdeğerdir. Her ikisi de, toplam hesaplama gücünde boşa harcanan hesaplama gücünün oranını artıracak ve POW algoritmasının güvenliğini azaltacaktır.

3.5 Burada dikkat etmemiz gereken şey, sadece forking işlemi yaparken bilgi işlem gücünün boşa gitmesi değil, yani çatallanma dikkate alınmasa bile çıktı arttıkça güvenlik azalacaktır. Fakat aslında, güvenlik için daha ciddi hasar çatallardır çünkü çatallar, bilgisayar gücünün belirli bir yüzdesinin öksüz bloklarda boşa harcanmasına neden olur. Her iki durumda da, hepimiz aynı sonucu gördük - blok boyutu B arttıkça (yaklaşık olarak) boşa harcanan hesaplama gücünün oranı artar ve blok aralığı s (yaklaşık olarak) arttıkça azalırken B / s Tam olarak Bitcoin'in çıktısıdır. Bu nedenle, Bitcoin POW'un kusurları şunlardır:

Bitcoin'in güvenliği çıktıyla ters orantılıdır.Çıktı arttıkça Bitcoin POW'un güvenliği sonsuz derecede sıfıra yakındır.

4. Bu nedenle, daha yüksek çıktı elde etmek için, madencilerin daha etkili bir şekilde madencilik yapabilmesi için Bitcoin'in POW algoritmasını geliştirmemiz gerekiyor, yani etkili madencilik için POW sınırlamasını kaldırmalıyız. Peki, nasıl daha verimli bir şekilde madencilik yapabilirsin? POW'da yalnızca en uzun zincirdeki madencilik etkili madenciliktir, yani Yalnızca en son bloğu senkronize ederek, yani tüm işlemleri senkronize ederek etkili madencilik gerçekleştirilebilir ve yeni bir blok hızlı bir şekilde çıkarıldığında, yeni bloğun senkronizasyonu başlatılabilir, bu da ikisi arasındaki ilişkinin karşılıklı olarak bağımlı olduğu anlamına gelir.

5. Bu nedenle, Bitcoin POW'u iyileştirmek istiyorsak, POW güvenliğinin senkron işlemlere olan bağımlılığını ortadan kaldırmalıyız, yani işlemlerin iletimini POW'dan ayırmalıyız. Başka bir deyişle, madencilerin madenciliği için tüm defterin senkronize edilmesinde hiçbir zaman bir kısıtlama olmamalıdır.

Yukarıdakiler, Bitcoin POW'u genişletmenin gerekçelendirme sürecidir. İçerisindeki her bağlantının gerekli olduğu, yani POW'u bir fikir birliği olarak kullanan herhangi bir algoritmanın bu konuları dikkate alması gerektiği ve aynı kısıtlamalara tabi olacağı söylenmelidir.

Ardından, iletimi ve POW'u paralelleştirmenin iki yolunu tartıştık

1. Lider seçimi: içerikten, yani işlemden ziyade blok üreticisini belirlemek için madenciliği kullanın. Bu durumda, etkili madencilik tüm işlemlerin senkronizasyonunu gerektirmez, sadece "tüm düğümler mevcut doğru blok üreticisini senkronize edebilir", ki bu yapılması kolaydır. Bununla birlikte, kusuru, kötü niyetli blok üreticilerinin kötü niyetli davranışları üzerinde bağlayıcı bir gücü olmamasıdır. Çünkü hala "kötü niyetli işlemler bulunduğunda kabul etmeme ve dallanma" mantığını takip edersek, POW'un işlem senkronizasyonuna tekrar güvenmesi ile eşdeğerdir. Bu nedenle, yalnızca iki seçeneğimiz var: a) kötü niyetli blok üreticilerini bazı yöntemlerle cezalandırmak; b) blok üreticilerinin kötülük yapmamasını sağlamak. İlki, Bitcoin-NG tarafından benimsenen yöntemdir - önünde kötülük yapan bir blok üreticisi varsa, o zaman ikinci blok üreticisi, bazı özel işlemler yoluyla önceki blok üreticisinin tüm ödüllerini alabilir. İkinci durumda, yalnızca bir blok üreticisini seçemezsiniz, ancak birçok blok üreticisini, yani belirli bir komiteyi seçmeniz gerekir. Örneğin, ilk 20 bloğun blok yayıncılarını seçiyoruz (yani, hedef karma değerini başarıyla hesaplayan ilk 20 madenci). Daha sonra komite, BFT algoritması aracılığıyla bir bloğa karar verir. Burada dikkate alınması gereken konu, ilk olarak komitenin 1 / 3'ünden daha fazla kötü amaçlı düğüme sahip olamayacağıdır (çünkü BFT yapılacaktır) ve bu yalnızca olasılıkla garanti edilebilir, örneğin tüm ağdaki kötü niyetli hesaplama gücü 1 / 4'ü geçmediğinde , Büyük sayılar teoremi üzerinden 20 madencinin seçilmesini garanti edebiliriz.Kötü madencilerin sayısının 1 / 3'ü geçme olasılığı çok azdır, ancak sadece 4 madenci seçersek, en fazla bir madenci olması gerektiğini söyleyemeyiz. Kötü niyetli. Bu nedenle, sonuçta, bu komitenin boyutu sistemin hata toleransını belirler.Komite ne kadar büyükse hata toleransı o kadar yüksek olur, ancak BFT nedeniyle gecikme daha büyük olacaktır.

2. En uzun olmayan zincire bilgi işlem gücünü etkili bilgi işlem gücü olarak dahil edin. Bu noktada GHOST'u tanıttık. GHOST'ta, en uzun zincir konsensüsü, en ağır alt ağaç konsensüsü olarak değiştirilmiştir ve madenciler, önceki bloğu işaret etmekle sınırlı değildir, ancak aşağıdaki şekilde gösterilen yapı olan 1 derinliğe sahip diğer izole bloklara işaret edebilir:

Burada "alt ağacın" "ağır" ını, yani hesaplama gücünü temsil eden blok sayısını karşılaştırıyoruz. Bu kurala göre, alttaki saldırganın alt ağacı, yukarıdaki alt ağaç kadar ağır değildir ve 4B'nin alt ağacı en ağır alt ağaçtır.

Etkili madencilik perspektifinden GHOST'un anlamı şudur: madenci en son bloğun senkronizasyonunu zamanında tamamlamasa ve bloğu diğerlerinden sonra kazmanıza neden olsa bile, hesaplama gücünüz boşa gitmez ve aynı zamanda kolay değildir. Sonraki çatallara yol açarak bilgi işlem gücü israfına neden olur.

Bununla birlikte, GHOST hala en iyi uygulama değildir, çünkü senkronizasyon için gereken zaman bir blok aralığını aşarsa, kazdığınız bloklar hala en ağır zincire dahil edilmeyebilir, bu nedenle hesaplama gücü hala boşa harcanır. Bu nedenle, daha önce güvenlik ve çıktı açısından bir eğri çizerseniz, GHOST, çıktı yüksek olmadığında Bitcoin POW ile aynı güvenliğe sahip olur.Sonra çıktı arttıkça ve daha sonra küçük bir aralıkta, Bitcoin'in güvenliği düştü ancak GHOST'un güvenliği değişmeden kaldı. Başka bir deyişle, GHOST, çıktıyı bu aralığa kadar artırabilir. Bundan sonra, çıktı artmaya devam ettikçe, GHOST ve Bitcoin POW eğrileri arasında hiçbir fark kalmaz ve sonunda 0 olurlar.

Bununla birlikte, GHOST fikrini genişletebiliriz - örneğin, düğümlerin 2 derinliği olan öksüz blokları ve ardından 3 derinliği olan öksüz blokları kabul etmesine izin verebiliriz ... Son olarak, tüm mayınlı bloklar boşa gitmeyecek , Sistemin güvenliğine katkıda bulunabilir. Sonuçlardan, güvenliğin çıktıyla değişmediği GHOST aralığını sonsuza kadar genişleteceğiz ve sonunda güvenliği çıktıya bağlı olmayan bir algoritma elde edeceğiz. Uygulama yöntemi açısından, böyle bir sistem aslında bir DAG'dir.

Bitcoin'in ölçeklenebilirliği konusunda bu kadar uzun süre uğraşmamın nedeni, POS ve POW-DAG'ın ölçeklenebilirliği ve benimsedikleri yöntemlerin büyük ölçüde önceki makaledeki ölçeklenebilir bitler olmasıdır. Madeni paranın POW algoritmasının doğal evrimi, POS ile başlayalım.

Proof of Stake POS

Bir önceki makalede, ölçeklenebilir POW için algoritmaların temelde 3-4 yıl veya hatta daha eski olduğunu da gördük. Nedeni basit - akademide çoğu insan POS'a yöneldi. Burada, izin ile izinsizlik arasındaki anlaşmazlığı ve POW ile POS arasındaki anlaşmazlığı atlayalım, böylece POS ve POW'un artıları ve eksilerinin ayrıntılarına girmeyeceğim (yakın zamanda bununla ilgili ayrı bir makalem olabilir). Ancak gerçek şu ki, yeni algoritmaların çoğu, akademideki izin verilmeyen zincirler için fikir birliği algoritmaları konusunda POS'u seçti.

POS, Haklar ve Çıkarların Kanıtı, adından da anlaşılacağı gibi, "daha fazla para, blok madenciliği olasılığı da o kadar yüksek" yöntemine kıyasla "hesaplama gücü ne kadar yüksekse, daha hızlı madencilik olasılığı o kadar yüksek" yöntemidir. Bununla birlikte, POW ile karşılaştırıldığında, Bitcoin POW'un farklı olduğunu düşünüyoruz.POS, yalnızca belirli bir algoritmaya değil, aynı zamanda ağırlık olarak hisse senedi kullanan blok üreticilerini seçme yöntemine de atıfta bulunuyor.

Burada, erken dönem peercoin ve NXT POS'un yanı sıra DPOS ve Ethereum Casper'ı atlayacağım.Rastgele sayılara dayanan birkaç daha tipik ve titiz akademik makaleyi çıktı perspektifinden sadece kısaca açıklayacağız. : Pamuk Prenses, Ouroboros, Algorand ve Dfinity.

İster ölçeklenebilirlik açısından ister uygulama açısından olsun, bu algoritmaların POS'ta ölçeklenebilir POW'un lider seçim fikirlerinin karşılığı olduğu söylenebilir. Bunların arasında, Snow White ve Ouroboros, Bitcoin-NG'nin POS muadiline eşdeğerdir, Algorand ve Dfinity ise Hybrid Consensus ve Byzcoin'in muadilleridir.

Ancak öncelikle açıklanması gereken bir sorun var - bu algoritmaların rastgele sayılarının nasıl üretildiği.

Hmm ... Yeterince, bu makale açıklanamaz, bu yüzden bu makalede, her t için gerçek bir rastgele sayı önerebilecek böyle bir tanrı (Rastgele Oracle) olduğunu varsayalım ve sonra yapabiliriz Bu rastgele sayı ve her kişinin mevcut defterde sahip olduğu para miktarı sayesinde, her tur için blok üreticisini belirlemek için ağırlıklı bir piyango yapılır ...

Dikkatli arkadaşlar sorunu fark ettiler.

Bunu başarmak için Bitcoin'de çok fazla madencilik harcamıyor muyuz? Şimdi bizi göndermek için bir "tanrı" mı kullanıyorsunuz?

Ancak gerçek budur. Bence akademinin sonradan POS'a yönelmesinin sebebi aslında şu sorunu gördü: "Bu problem uzun süredir çalıştığımız rastgele sayılarla ilgili değil mi? Tamamen kriptografi ile çözebiliriz. Neden kullanmalıyım? Güç tüketen ve zaman alan POW? "

Bu nedenle, aslında yukarıdaki her POS algoritması, belirli varsayımlar altında, bir ölçüde "Tanrı" nın işlevini gerçekleştirmektedir, bu nedenle burada onu doğrudan "Tanrı" ile değiştireceğim ve önce atlayacağım. Uygulama ayrıntıları.

Bu "tanrı" ile, aslında artık önceki sorunlara, yani paralel fikir birliği ve aktarımın sorunlarına sahip değiliz, çünkü etki konusunda endişelenmeden iletim ve doğrulama için neredeyse tüm bant genişliği * zamanını kullanabiliriz. Sistemin güvenliği. Başka bir deyişle, bloğu olabildiğince büyük ayarlamak için en basit basamaklı yapıyı kullanabiliriz - örneğin, sistem güvenliğinin bozulmasına yol açan fikir birliği süresinin eksikliğinden endişelenmeden bloğu 10 dakika içinde olabildiğince büyük ayarlayın. Sorun.

Bu nedenle, mesaj iletimi için tüm bant genişliği * süresini kullanabildiğimiz için, bu POS algoritmaları ve ölçeklenebilir POW yakın olmalıdır.

Bunların arasında Pamuk Prenses ve Ouroboros, blok oluşturmaktan sorumlu yalnızca bir liderle Bitcoin-NG'ye benzer. Algorand ve Dfinity, blok üretiminden sorumlu bir komite kullanan Byzcoin ve Hybrid Consensus'a benzer. İkisini çıktı açısından karşılaştırmak, her ikisinin de kendi yararlarına sahiptir. İlki, daha dürüst ve daha aktif düğümlere sahip bir ağda daha iyi performans gösterir, çünkü ideal durumda bu, herkesin blokları çevirdiği bir sistemdir, ancak, düğümler etkin olmadığında veya kötü niyetli olduğunda boş dönemlere veya çatallara eğilimlidir. Bu durum, bant genişliği israfına ve nispeten daha yüksek bir onay süresine yol açar. İkincisi komiteleri benimsediğinden, bu durum sadece komitenin tamamı aktif olmadığında veya kötü niyetli olduğunda ortaya çıkacaktır, bu nedenle komitelerin sayısı arttıkça oluşma olasılığı azalacaktır. Bununla birlikte, komiteler arasındaki iletişim genellikle geleneksel BFT veya ölçeklenebilir BFT kullanır.Mesajın gereken süre ve karmaşıklığı daha yüksek gecikmelere neden olur ve mesajı tüm ağa yayınlamakla karşılaştırıldığında göz ardı edilemez (eğer Çok fazla insan varsa) iletişim karmaşıklığı. İkisinin uygulama senaryoları farklı olacaktır Kişisel olarak, ağ ortamının karmaşıklığından dolayı halka açık zincir için ikincisinin çıktısının ve gecikmesinin daha kararlı olduğunu düşünüyorum.

POW + DAG

Daha önce de belirtildiği gibi, DAG, GHOST fikrinin bir uzantısıdır - ancak GHOST ve DAG'den önce bir ara adım vardır:

GHOST'ta amca bloğu yalnızca hesaplama gücünü hesaplar ancak içerdiği verileri dikkate almaz. Bu nedenle, GHOST fikrini genişletmeye devam edersek, elde edeceğimiz nihai sonuç, blok boyutunu nasıl arttırırsak (veya blok aralığını düşürürsek), hesaplama gücünün boşa gitmeyeceğidir, böylece Bitcoin POW'dan daha fazlasını elde edebiliriz. Daha yüksek çıktı. Bununla birlikte, bu sonuç yalnızca hesaplama gücünün boşa gitmemesini sağlar, ancak blokları ana olmayan zincir üzerinde yaymak için kullanılan bant genişliği hala boşa harcanır. Örneğin blok boyutunu 100MB'ye çıkarırsak, ortalama olarak ağda her zaman diliminde 3 yasal blok var. Bitcoin POW'da bu durum, merkezi olmayan bilgi işlem gücüne ve düşük güvenliğe yol açacaktır. Ancak GHOST modu benimsenirse, bu durum olmayacak, ancak sonunda her 10 dakikada bir 300MB blok aktarmamız gerekiyor ve nihayetinde sadece 100MB işlem rezerve ediliyor ve geri kalanı boşa gidiyor, ki bu açıkça değil Ne istiyoruz.

Bu nedenle, bu iki bloğu da tutmayı seçersek, ideal DAG'yi elde ederiz

Her madencinin sadece 1 yapması, işlemi paketlemesi; 2, yeni bloğu senkronize etmeyi ve bağlamayı deneyin; 3, madencilik yapın ve madencilik tamamlandıktan sonra bloğu yayınlayın. Daha sonra nihai sonuç, ister paketlenmiş işlemleriniz ister madencilik gücünüz olsun, sonunda fikir birliğinin bir parçası haline gelecektir. (Burada bir çukur var, bunun hakkında daha sonra konuşacağız)

DAG'yi iki açıdan anlayabiliriz:

İlk bakış açısına göre, yapısal olarak konuşursak, artık bir zincir değil, bir grafiktir, ancak daha kesin olmak gerekirse, aşağıdaki şekil gibi bir kuşaktır:

IOTA'nın (arapsaçı) bu resmi hala çok canlı

Bu resim, DAG'nin blok zincirindeki görünümünü çok sezgisel bir şekilde anlamamıza yardımcı olabilir çünkü DAG (yönlendirilmiş döngüsel olmayan grafik) yalnızca bir tanımdır, ancak birden fazla forma sahiptir. Bu resimden DAG'nin blockchain'de neye benzediğini görebiliriz:

1. Her şeyden önce bir zincir değil, kablosuz olarak büyüyen ağaç benzeri bir grafik değil, daha çok bir kuşak gibidir.Kuşak uzunluğu zamandır ve genişliği aynı anda üretilen bloklar olarak düşünülebilir. .

2. Yani, genişlik aslında bu DAG'nin çıktısını temsil eder, genişlik 1 blok olduğunda, aslında blok zincirini elde ederiz. Ve genişliğin 10 blok olduğunu varsayarsak, blok zincirinin çıktısını 10 kat artırmaya eşdeğeriz.

3. Zincir yapısından farkı, bir madenci bir blok yayınladığında, ağdaki tüm blokları senkronize etmesi gerekmemesi, sadece blokların bir bölümünü senkronize etmesi gerektiğidir. Bu resimde, önünde ve doğrudan veya dolaylı olarak bağlanmış tüm bloklar vardır.

4. Sonuç olarak, tüm madenciler yine de resimdeki açık mavi kısım olan bu kuşak üzerindeki tüm işlemler üzerinde bir fikir birliğine varacaklar. İlk bölümde söylediğim şey bu, DAG sonsuz bir genişleme algoritması değil, çünkü hala tüm madencilerin tüm düğümler üzerinde bir fikir birliğine varmasını gerektiriyor.

5. Sonunda, bir bloğun doğrulanması için öncül, birisi hesaplama gücünün% 50'sinden fazlasına sahip olmadıkça, yüksek olasılıkla çatallanmama olasılığına sahip olmasıdır.

Peki bu kayışın genişliğini ne belirliyor?

Cevap, ağın kendisinin özellikleri (ağ hızı, topoloji gibi) ve blok zincirinin kendisinin parametreleri (blok boyutu, aralık vb. Gibi) ve ikincisi, ideal durumda, tüm ağın bant genişliğini tam olarak kullanabilecek şekilde tasarlanmalıdır. --Kavram nedir? Açıyı değiştirelim:

Bir madenci olduğunuzu varsayarsak, ideal durum trende oturmanız (mayınları kazmak), güveç yemek (blokları senkronize etmek), şarkı söylemek (işlemleri doğrulamak) ve ardından serbest bırakma alanında madencilik yapmaktır. Blok sırasında, daha önce bulduğunuz ağdaki tüm blokları senkronize edip doğruladınız ve madencilik sırasında, yeni bloğun bir sonraki madencilik turunda senkronize edilebileceğini keşfettiniz ...

Tüm madenciler ideal durumdaysa, bu ağdaki bant genişliği tam olarak kullanılacaktır.

Bununla birlikte, sık sık ortaya çıkan madenciler varsa: tren hala güveç kaynatıyor ve yemeyi bitiriyor, o zaman bant genişliği iyi kullanılmamış, bu nedenle çıkışı artırmak için bloğu artırabilir veya blok aralığını azaltabiliriz. Çıktıdaki bu artış grafiğe yansıtılır, yani aynı zaman diliminde daha fazla (daha büyük) blok oluşturulur, böylece kayış genişler.

Diğer bir durum ise, ya çok sayıda madenci tüm blokları senkronize edemezse? Açıkçası, bu sefer çıktıyı düşürmemiz gerektiğini gösteriyor. Ama çıktıyı azaltmazsak ne olacak?

Birincisi, ağın kapasitesi kesin olduğundan, teyit edilen işlemlerin sayısı kesinlikle artmayacaktır. Ancak sorun şu ki, çok fazla yeni blok olduğu için, madencilerin yeni bloklar üzerinde bir fikir birliğine varması zor. Nihai sonuç, bu kemerin giderek daha fazla hale gelmesidir. Daha geniş, daha uzun değil. Bu nedenle, çoğu DAG'nin bu durumu kısıtlaması gerekir, bu nedenle genellikle DAG, bu kuşağın gelişimini daha geniş değil daha uzun olacak şekilde teşvik etmek için yeni çıkarılan bloklara daha fazla ağırlık verecektir. Aynı zamanda bu, kötü niyetli düğümlerin kasıtlı olarak eski bloklardan çatallar kurmasını da kısıtlayabilir.

İkincisi, bu durumda, tüm blokları zamanında senkronize edemeyen madenciler, bloklarını en son bloğa ekleyemeyecek ve bloklarının yeterince yüksek ağırlık getirmemesine neden olacak (çünkü çok eski) Diğer düğümler tarafından terk edildi. Nihayetinde, bu bloklar ve hesaplama gücü boşa gidecek.

Üçüncüsü, ağdaki düğümlerin ağ koşulları ve hesaplama gücü eşit olmadığı için, bazı düğümler kaçınılmaz olarak sıcak potun bitmediği ve arabanın duracağı duruma gelecek ve bazı düğümler arabanın sürüldüğü ve sıcak potun bittiği durumuna sahip olacaktır. Bu nedenle, sonunda, en büyük çıktıyı ve en az hesaplama gücü israfını elde etmek için, blok zincirinin parametrelerini, tüm kayışın ikisi arasında bir denge durumunda olacak şekilde ayarlayacağız.

Harika geliyor, değil mi?

DAG, zincir yapısının sadece basit bir uzantısı gibi görünüyor. Zincir yapısında çıktı ve güvenlik arasındaki ilişkiyi zayıflattık.Son olarak, parametreleri ayarlayarak, neredeyse optimum çıktı elde etmek için tüm ağ kapasitesini yaklaşık olarak kullanabiliriz.

Görünüşe göre bu dönemde hiçbir şey feda etmedik, değil mi?

Ne yazık ki, cevap hayır.

DAG'de sıralama sorunu

Aslında, içerik (blok) üzerinde bir fikir birliğine varmanın yanı sıra, blok zinciri ve tüm BFT algoritmaları da bu içeriklerin sırası üzerinde bir fikir birliğine varmalıdır. Diğer bir deyişle düzen, mutabakatın da vazgeçilmez bir parçasıdır.

PBFT'de, iletişimin iki turundan ilki sıralamadır.

Bitcoin POW için zincir yapısı nedeniyle, sıralama ve fikir birliği aynı anda gerçekleştirilir - bir madenci önceki bloğa atıfta bulunduğunda, doğal olarak iki blok arasındaki sırayı gösterir.

Ancak DAG'da, tüm düğümler sonunda tüm bloklar üzerinde bir fikir birliğine varacak olsa da ve grafiğin yönlülüğü nedeniyle, bir dal zincirindeki tüm bloklar üzerinde bir fikir birliği vardır, ancak iki blok birbirine paralelse Doğrudan bağlanamaz, bu durumda iki blok arasındaki sıra konusunda fikir birliği yoktur, örneğin:

Burada 6, 7 ve 8 arasındaki sıra belirsizdir

Birisi sorabilir: Düzen bu kadar önemli mi?

Cevap şudur: Bazı durumlarda, bu çok önemli olmayabilir, bu yüzden IOTA'ya "IOT için" deniyor, çünkü IOTA algoritmasının dolanmasının sıralanamayacağını biliyorlar, bu yüzden dijital para birimi için kullanılamaz.

Çünkü dijital para biriminin, çelişen iki işlemden hangisinin yasal ve yasa dışı olduğunu belirlemek için sıralanması gerekiyor

Daha önce de belirtildiği gibi, GHOST'tan DAG'ye önemli adım, aynı anda oluşturulan birden fazla bloğun tüm işlemlerini fikir birliğine dahil etmemiz gerektiğidir. Kaçınılmaz iki sorun şunlardır:

1. Tekrarlanan işlemler çıktıyı azaltacaktır, bunun hakkında daha sonra konuşacağız.

2. Çelişkili işlemler Örneğin, bir X işlemi A'nın B'ye para ödediğini söyler ve X işlemi A'nın C'ye para ödediğini söyler. Eğer bu iki çelişkili işlem uzlaşmaya dahil edilirse, tutarlı bir Algoritma hangisinin doğru olduğunu belirler ve bu kaçınılmaz olarak düzen meselesini içerecektir, ancak tüm düğümler ikisinin sırası konusunda bir fikir birliğine varamazlarsa, iki işlemin yasallığı konusunda bir fikir birliğine varamazlar. Meşruiyet konusunda fikir birliğine varılamaması, iki işlemin asla teyit edilmeyeceği, yani aktif olmayacağı anlamına gelir.

Bu çok zahmetli bir problem Şimdiye kadar iki fikir var:

Fikir 1: Aşağıdaki blokların topolojisine göre sıralama

GHOST ekibinin denediği yöntem budur, SPECTER'dan PHANTOM'a kadar hepsi blok sanal oylama yöntemini benimsemiştir, yani aşağıdaki bloklar kimin önce kimin ikinci geleceğine karar verir.

Zaman dizisinden veya rastgele nedenlerden dolayı, X işlemini içeren blokların X 'içerenlerden biraz daha fazla olduğunu varsayarak, oylama sonuçlarının hızlı bir şekilde belirli bir tarafa yakınlaşmasını sağlamak için bir oylama mekanizması tasarladılar. Öyleyse engelleyin, bu algoritma sonucun zamanla giderek daha fazla X'e karşı önyargılı olmasını ve sonunda X'e hızla yakınlaşmasını sağlayacaktır.

Ancak bu tasarımdaki sorun, oylama sonucunun bir tarafa doğru önyargılı olacağına dair hiçbir garanti olmamasıdır - özellikle kötü niyetli düğümler, iki taraf arasındaki dengeyi çok az hesaplama gücüyle koruyabilir.

SPECTRE'nin bu soruna çözümü şudur: çözüm yok.

SPECTER böyle bir varsayımda bulundu: bu sanal bir para birimidir, eğer X ve X 'aynı anda ortaya çıkarsa, o zaman A kısa sürede iki çakışan işlemi imzalamış olmalı, o zaman kötü niyetli bir düğümdür. Bu nedenle, bu tür işlemlerin etkinliğini garanti etmemize gerek yoktur. Başka bir deyişle, kötü niyetli bir düğüm, benzer ağırlıktaki iki dalı dengeleyerek diğerlerinin iki işlemin yasallığını onaylamasını engellemek istiyorsa, o zaman bırakın. Neyse, bu kötü niyetli bir düğümün işlemidir.

Dürüst düğümler tarafından gerçekleştirilen işlemler için canlılığı garanti edebilir ve herhangi iki işlem arasındaki sırayı onaylayabiliriz.

Ancak bu varsayım, SPECTER'ın bir Turing-complete blockchain sistem algoritması olmasını engelleyen sınırlamalarına neden oldu, çünkü orada tam düzene ihtiyacımız var. Çünkü akıllı sözleşmenin iki farklı kişi tarafından gönderilen mesajların sırasını belirlemesi gerekebilir.

Yani Phantom ve BlockDAG, bu sorunu oylamaya dayalı olarak çözmeye kararlıdırlar.Ana fikri, dürüst ağlardan oluşan grafiğin belirli özelliklere sahip olması gerektiğini ve önceki sanal oylama yöntemi kullanılarak sıralanabileceğini kanıtlamaktır. Ancak, toplam düzeni yok etmek isteyen kötü niyetli düğümler tarafından oluşturulan dalların bu özelliklere sahip olmaması gerekir. Bu nedenle, yalnızca kötü niyetli düğümler tarafından oluşturulan dalları belirli bir ayrımcılık yöntemiyle filtrelememiz gerekir.

Ancak yine de verdikleri yargı yöntemiyle ilgili bazı sorunlar var. Dahası, belirli bir bakış açısından, aslında ikinci komplikasyon fikri:

Fikir 2: Bir ana zincir belirleyin

Aslında, bir ana zincir belirleyebilirsek, tüm blokları ana zincire ve bir dizi deterministik kurala göre kolayca sıralayabiliriz.

Ancak, ana zinciri belirlemek kolay değildir çünkü DAG şu şekildedir:

Ağ eşit olarak dağıtılırsa, neredeyse aynı uzunlukta ve sabit bir hızda büyüyen n zincir alma olasılığımız yüksektir.Bunlardan bir ana zinciri onaylamak, aslında sıralama kadar zordur. Algoritmada bazı değişiklikler yapamazsak, böylece algoritma daha kolay bir şekilde ana zincire yakınlaşabilir. Bununla birlikte, böyle bir DAG yapısında, bir ana zincire yakınsama ihtiyacı, madencilerin önce ana zinciri senkronize etmesi gerektiği anlamına gelir ve senkronize edemeyen düğümler, hesaplama gücünün boşa gitme riskiyle karşı karşıya kalır. Bu açıdan, bu DAG yapısında, sıralamayı da takip edebilirsiniz, ancak fiyat daha düşük çıktıdır.

Bu bağlamda, Prism bu yapıda iyileştirmeler yaptı - DAG'yi yapısal olarak söküyor, daha sonra ana zinciri oluşturmak için geleneksel zincir yapısını kullanıyor ve ardından bloklar üretmek için DAG benzeri bir yapı kullanıyor. Bir bakış açısından, DAG sıralama problemini çözüyor, ancak başka bir açıdan Bitcoin-NG'ye çok benziyor.Tek fark, mikro bloğun artık lider tarafından değil, her düğüm tarafından üretilmesidir. DAG şeklinde ana zincire bağlayın ...

Bu, POW-DAG ile ölçeklenebilir POW arasında bir köprü oluşturur.

DAG'nin yinelenen işlem sorunu

DAG'de önlenemeyen bir diğer sorun da işlemlerin tekrarlanmasıdır. Özellikle tüm madencilerin bir işlem havuzunu paylaştığı bir sistem olan Bitcoin'de, her bir düğüm işlem ve paketleri kendi kendine toplarsa, kaçınılmaz olarak "madenciler tarafından oluşturulan blokta çok sayıda tekrarlanan işlem" olacaktır ki bu tamamen Bir zinciri kayışa dönüştürmek için DAG kullanımımızın önemini yitirdi. Her zaman aralığında mutabakat bloğunun 100MB'den 300MB'ye, bir bloktan üç bloğa değiştiği doğrudur, ancak bu 300MBdeki her işlem Üç kez paketlendikten sonra, blok zincirinin gerçek çıktısı değişmez, ancak depolanması ve iletilmesi gereken veriler üç kat daha fazladır.

O yüzden birisi soracak: Tekrar oranı bu kadar yüksek mi olacak?

Ama aslında, Bitcoin'in mevcut işlem havuzu yapısı kullanılırsa, tekrarlama oranı neredeyse kesinlikle çok yüksek olacaktır, çünkü tüm madenciler aynı havuzdan işlem yapmak için aynı kuralları kullanır ve bu durumda sadece neredeyse hiç çıktı yoktur. İyileştirmek için, depolama alanı israfına da neden olacaktır (çünkü bloğun yasal olup olmadığını doğrulamak için tekrarlanan işlemlerin de iletilmesi ve depolanması gerekir).

Bu nedenle, DAG'yi kullanırken, madencilerin farklı bir işlem seçme mekanizması da kullanması gerekir - ya işlem havuzunu iptal edin ve her düğümü en yakın noktaya atayın ya da paketleme işlemlerinden sorumlu olmak üzere bir madenciye rastgele atayın; veya madencilerin işlemden rastgele bir yöntem kullanması Havuzda balık tutmak.

Ama ikisi de yalnızca semptomları tedavi edebilir, temel nedeni değil

İlki merkezileşmeye neden olacaktır. Başka bir deyişle, işleminizi kabul eden madenci çevrim dışı veya kötü niyetli bir şekilde gerçekleşirse, ya da sadece aciz olsa bile, işleminizin onaylanamamasına neden olur.Sonuç, işleminizi daha fazla madenciye yayınlamanız gerektiğidir. Bu da tekrarlanan işlemlere neden oldu.

İkincisi, "madencilerin işlemleri havuzdan dürüstçe ve rastgele seçtiğini varsayarak" bir karar vermelidir, ancak bu, "rasyonel madencilerin yüksek işlem ücreti olan işlemlere öncelik vermesi gerektiği" nin tersidir. İlki kesinlikle kısıtlanırsa, madencilerin ve tüccarların çıkarlarına aynı anda zarar verecektir çünkü madenciler optimum işlem ücretini alamayabilir ve tüccarlar işlem ücretlerini artırarak işlemlerinin madenciler tarafından daha hızlı paketlenmesini sağlayamazlar. Bu nedenle, bu numara daha çok kaynakların tahsisini zorlamak için "ticaret piyasasında" bir "planlı ekonomi" gibidir.

Ancak her durumda, tekrarlanan işlemlerin DAG çıktısı üzerindeki etkisi çok büyüktür - bir tüccar olarak bile, işleminizi yalnızca bir madencilik işine yedek plan olarak gönderirsiniz, işlem tekrarının% 50'sine neden olur, yani çıktı% 50 düşer. Diğer bir deyişle, bu kadar sert artırılan ağ kullanım oranı% 50 silinmiştir.

(Herkes birini düşünüyor mu?)

En eski DAG'lerden biri olan IOTA, doğal olarak bu sorunu düşündü, bu nedenle blok ve madenci ayarlarını iptal ederek tüccarların POW'u gerçekleştirmesine ve işlemleri kendi başlarına yüklemesine izin verdi. Bununla birlikte, bu yaklaşım yalnızca daha ciddi güvenlik riskleri getirmekle kalmaz, aynı zamanda tekrarlanan işlemlere yol açan başka bir ayarı da ortaya çıkarır - karışıklık algoritması, dürüst düğümlerin işlemlerinin kabul edilme hızını artırmak için çok çalışacağını ve hatta kendi başlarına çalışmaya devam edebileceklerini varsayar. İşlemi, başkaları tarafından kote edilme olasılığını artırmak için kısa bir işlem izler Bu aslında tüccarları kılık değiştirmiş işlem için daha fazla bant genişliği harcamaya teşvik ediyor.

Bununla birlikte, IOTA'nın düşüncesinin bir noktası doğrudur - eğer belirli bir senaryoda madenciler işlemlerini havuzdan avlamak yerine zincirde paketlerlerse, o zaman tekrarlanan işlem sorunu yoktur.

Ölçeklenebilir POW ve POW-DAG arasında karşılaştırma

Aslında, tamamen farklı görünseler de, önceki girişte bu ikisinin iki farklı rota olduğunu da söylemiştik, ancak ikisinin çıktısı aslında belirli bir açıdan karşılaştırılabilir

Örneğin, Bitcoin-NG, Hibrit Konsensüs ve Prism'i örnek olarak alın.

Üçünün de ana zincire benzer şeyleri vardır ve hepsi mesajların toplam sırasını destekler, bu nedenle ana zincirin bir bloğu bir tur olarak kabul edilirse.

Bitcoin-NG: Lider, blokları oluşturmaktan ve mesajı tüm ağa yayınlamaktan sorumludur. Bant genişliği, mesaj yayını için tam olarak kullanılamaz (çünkü sadece lider yayın vardır) Aynı zamanda, çıktı kötü niyetli liderlerden etkilenebilir.

Karma Konsensüs: Komite, bloklar oluşturmaktan ve mesajı tüm ağa yayınlamaktan sorumludur, bu da bant genişliğini daha iyi kullanabilir (rastgele seçilen bir komite üyesi mesajı tüm ağa daha hızlı yayınlayabilir), ancak BFT algoritmasını kullanan komiteler arasındaki iletişim fazlalığı dikkate alınmalıdır. Daha.

Prism: Tüm düğümler kendi başlarına bloklar üretir ve nihayetinde bant genişliği kullanımını en üst düzeye çıkarabilecek bir fikir birliğine varmak için DAG kullanır, ancak tekrarlanan mesajlar sorunu dikkate alınmalıdır.

Daha önce farklı ağ koşullarında ilk ikisinin avantajlarını ve dezavantajlarını karşılaştırmıştık, ancak DAG ile karşılaştırıldığında daha karmaşık olacak çünkü tekrarlanan mesajların çıktı üzerinde büyük bir etkisi var, ancak büyük ölçüde yukarıda bahsedilen madenciler tarafından benimsenen stratejiye bağlı.

Bir sonraki makalede, ölçeklenebilir BFT için bazı fikirleri tanıtacağız.

Xu Jiayin Zhang Jindong Zhou Jinhui yaklaşıyor! Madrid, gençlik eğitimini izledikten sonra Evergrande NEVS'i görmeye İsveç'e gitti
önceki
Yaşlandığımızda yerleşmek için küçük bir kasaba bul, yürüyüşe çık ve çiçek yetiştir
Sonraki
Schnorr imzası ve Taproot yumuşak çatal önerisi
Çiçek standının her yerinde sarmaşıklarla bir bahçeye sahip olmak ister misiniz?
Mayıs ayında Hollanda nefes kesici güzellikte
Piyasa analizi: BTC küçülmeye devam ediyor, tekrar değişecek mi?
Japonya'daki en gizemli kitapçı! 5 yılda 300 kez hareket ediyor, bundan sonra nerede duracağını kimse bilmiyor
Yanlışlıkla "net ünlü" oldular
Birini bekle, bana Qinghai Gölü'ne kadar eşlik et
Ne kadar aşk tekrar edilebilir? Lippi, milli futbolun ilk maçına stokta kalmadı
Gözyaşları! Fotoğrafçı, babanın kızını gelinlik içinde ilk kez gördüğü anı fotoğrafladı.
Ani sel felaketleri nedeniyle işçiler mahsur kaldı Jiangxi Lotus İtfaiye pilotu drone kurtarma
Parti Üyelerinin Eğitimi ve Yönetimi için "Kılavuz" yayınlandı.Bu yöntemler günlük olarak kullanılmalıdır!
Haicang'daki başka bir ortaokulun yeniden inşası ve genişletilmesi tamamlanacak ve Metro Hattı 2 ile ilgili haberler var
To Top