Öyleyse soru şu ki, ademi merkeziyet, gücün ademi merkeziyetçiliğini sağladı ve ademi merkeziyetten sonra hiçbir kötülük yapılmamasını sağlamak için güç nasıl kontrol edilmeli ve dengelenmelidir?
Yabancı tanrı Tomaz Kariz, madencilik havuzlarından ilham aldı ve blok zincirindeki "prensler" madencilik havuzlarını, bir blok zinciri seçerken, bir blok zinciri puanlama mekanizması ve bir ceza mekanizması sunarken ve% 51 saldırı yapmak için ödülleri ve cezaları birleştirirken etkileyici bir faktör olarak kullanmayı önerdi. Maliyet daha yüksektir.
Peki madencilik havuzu ve blok zinciri seçimi nasıl birleştirilir? Etkisi ne olacak? Öğrenmek için büyük tanrıyı takip edelim!
Bir süre önce Ethereum Classic (ETC) blok zinciri,% 51'lik bir bilgi işlem gücü saldırısına maruz kaldı ve bu da derin düşünmeme neden oldu.
Teorik olarak,% 51 bilgi işlem gücü saldırısının blockchain ağ tasarımında bir başarısızlık olmadığını düşünüyorum. Ancak bu% 51 saldırganların daha yüksek bir bedel ödemesini sağlayacak bir yolumuz var mı?
Bir blockchain düğümü istemcisi, aynı anda birden fazla blockchain olduğunu tespit ettiğinde, hangi blockchain'in seçileceğine karar vermelidir.Bu anda, düğüm istemcisi her bir blockchain'in chainScore'unu ayrı ayrı hesaplayacak ve ardından en yüksek puana sahip bölgeyi seçecektir. Blok zinciri.
PoW konsensüs blok zincirinde, blok zincirini seçme kuralı genellikle "en uzun zincir kuralı" olarak adlandırılır; burada blok zincirinin zincir puanı, blok zincirinde tamamlanan toplam iş miktarına eşittir. Bir puana dayalı bir blockchain seçmenin avantajı, tamamen objektif olmasıdır.
Sübjektif puanlamaya bir örnek, blockchain düğümü istemcisinin blockchain için puanlama standardının sadece blockchain üzerinde ne kadar çalışma yapıldığına bağlı olmaması, aynı zamanda blockchain'e geçerseniz yerel olarak korunacağını da hesaba katmasıdır. Blok zincirinde kaç blok silinir, blok zincirinin yerel bakımını değiştirmenizi gerektirebilecek blok zincirlerine karşı önyargılıdır.
Yerel bakım blok zincirinden silinecek blok sayısına göre öznel blok zinciri puanı
Sübjektif blok zinciri seçim kurallarının bir başka örneği de, blok zinciri puan zincirini her zamanki gibi hesaplamaktır, ancak buna yalnızca yerel blok zincirinden silinmesi gereken blok sayısı 20'yi geçmediğinde daha yüksek bir puanla geçiş yapın. Blok zinciri (bu kural genellikle maksimum yeniden düzenleme sınırı, maksimum yeniden yapılandırma sınırı olarak adlandırılır).
Bu kural sadece "yeni düğüm sorunlarına" (yukarıdaki şekilde gösterildiği gibi) neden olmaz, aynı zamanda tüm düğümler istemci programının aynı sürümünü çalıştırsa bile, aynı zamanda bir hard fork'a da yol açabilir.
Bu nedenle, blok zincirini öznel olarak puanlamaktan kaçınmalıyız, çünkü bu şekilde blok zinciri seçim mantığımızı açıklamak zor olacaktır ve her istemci düğümü aynı kuralları izlese bile, bir hard fork'a yol açabilir.
Blockchain seçim kuralları
Ethereum Classic tarafından kullanılan blok zinciri seçim kuralı, en fazla iş yüküne sahip blok zinciri seçmektir. Bob adlı bir Ethereum Classic istemcisinin Ethereum Classic ağına ilk kez bağlandığını varsayarsak, Bob birden fazla blok zinciri arasından seçim yapmalıdır, ancak bu bir sorun değil, tek yapması gereken her bir bölgeyi hesaplamaktır. Blok zincirinde ne kadar iş yapıldı ve en çok iş yapılan blok zinciri seçin.
Bob gibi herhangi bir sayıda yeni Ethereum klasik müşterimiz olsa bile, her blok zinciri için aynı puan zincir puanını hesaplayacaklar.
Blok zinciri sistemindeki N düğümleri verildiğinde, bu N düğümleri tam bir grafik oluşturur (her düğüm diğer tüm düğümlere bağlıdır) ve blok zinciri seçim kuralları aşağıdaki özelliklere sahip olmalıdır:
Her düğüm, aynı blok zincirini en iyi seçenek olarak kabul etmelidir.Blok zinciri seçim kuralları, herhangi bir zaman noktası ve herhangi bir H yüksekliği ne olursa olsun, blok zinciri C için aynı puan zincirini sağlamalıdır; bu, puan zincirinin yalnızca değerlendirmekte olduğumuz blok zincirindeki verilere bağlı olması gerektiği anlamına gelir.
Bu özellikler, Bob ve uzun ömürlü düğümün takip etmeleri gereken blok zinciri üzerinde hemfikir olmalarını ve zaman içinde yavaş yavaş aynı blok zincirine yakınlaşmalarını sağlar.
Unutulmamalıdır ki, yukarıda da belirttiğimiz gibi, bugün Ethereum Classic'te en büyük chainScore puanlarına sahip blok zincirleri, en çok işi tamamlayanlar.
Blockchain madenciliği
Yalnız bir madenci için, önemli miktarda hash gücünü kontrol etmediği sürece, bir blok çıkarması pek olası değildir.
Madencilik havuzu bu sorunu çözmek için icat edildi Maden havuzu, herkes yakacak odun toplar ve alevler yüksektir fikrinden yola çıkar. Başlangıçta ayrı ayrı mayın çıkaran çok sayıda madenci, ısınmak için bir araya gelir, bir araya gelir ve faydaları paylaşır. Bazı madenciler bir blok kazmayabilir, ancak her zaman istikrarlı bir iş getirisi elde edebilirler.
Blok zinciri ağında, ağdaki hash gücünün çoğunu birlikte kullanan birden fazla madencilik havuzu olduğunu varsayalım.
Her blok, bloğu kazan madenciye atıfta bulunmak için kullanılan ve madencilik ödüllerini alması gereken adresi belirten coinbase / etherbase adlı bir değer içerir.
Çoğu blok madencilik havuzları tarafından çıkarılır ve her madencilik havuzu genellikle madencilik ödülleri almak için bir adres belirler.
Aşağıdakiler, Ethereum klasik blok zincirinde 7283680 yükseklikten 7283695 yüksekliğe kadar çıkarılan 16 ardışık blok ve madencilik ödülü alan madencilerin adresleridir:
Ethereum klasik blok zincirinde 7283680'den 7283695'e kadar olan bloklar ve madencilik ödülleri alan madencilerin adresleri
Beklendiği gibi, blokların çoğu Ethereum Classic Network'te işletilen madencilik havuzları tarafından çıkarıldı. Bunların arasında, maden havuzu Ethermine madencilik 5 blok, madencilik havuzu MiningPoolHub 4 blok ve madencilik havuzu NanoPool 3 blok çıkarıldı.
Gri bloklarda, madencilik ödülleri kimin sahibi olduğunu bilmediğim adreslere gönderilir, ancak bunlar aynı zamanda madencilik havuzlarıdır.
Bu bize biraz ilham veriyor gibi görünüyor ...
Saldırıları% 51 azaltmak için madencilik havuzları mı kullanıyorsunuz? Gerçekten mi!
Sürekli olarak yeni bloklar çıkarabilen bir madencilik havuzumuz olduğunu varsayarsak, blok çıktılarını sık sık görebilmeliyiz. Bir saldırgan% 51'lik bir bilgi işlem gücü saldırısı gerçekleştirdiğinde, genellikle sürekli olarak N bloğu çevrimdışı olarak mayınlar ve ardından mevcut fikir birliği zincirinden daha uzun olan bir blok zinciri serbest bırakır, bu da mevcut fikir birliği zincirinin yeniden düzenlenmesine yol açar.
Saldırgan tarafından çıkarılan bloklar genellikle geçmişte gözlemlediğimiz maden havuzlarının adreslerini kullanmaz.
Madencilik havuzu madenciliğinin tutarsızlığını cezalandırırsak, fikir birliği kurallarının kabaca değişmeden kaldığı gerekçesiyle saldırganların saldırıları başlatmasının maliyetini büyük ölçüde artırabiliriz. Bizi korumak için % 51 Hesaplama gücü saldırısı.
Burada,% 51 saldırısının nasıl gerçekleştiğini açıklamamız gerekiyor:
Madencilik havuzu tutarlılık indeksinden önce ve sonra
Blockchain seçim kuralları yalnızca tamamlanan iş miktarını değil, aynı zamanda madencilik havuzunun tutarlılığını da dikkate alabilir. ChainScore tanımını aşağıdaki formüle değiştirerek madencilik havuzunun etkisini ekleyebiliriz:
chainScore = parentChain.score + ( block.PoW_score * PCI )
ParentChain.score, önceki blok zincirinin puanı olduğunda, block.PoW_score, blok zinciri tarafından yapılan iş miktarıdır ve PCI (Havuz Tutarlılık Endeksi) 0 ile 1 arasında bir değerdir. .
PCI burada madencilik havuzunun tutarlılığı anlamına gelir. Blockchain'in "sağlığını" değerlendirmek için madencilik havuzu bilgisini kullanmanın bir uygulamasına bakalım.
İş yükünün tutarlılığını ölçmek için son 3000 blokta bir kayan pencere kullanmaya bir örnek.
ChainScore işlevinin kod uygulaması aşağıdaki gibidir:
Kayar Pencereli Madencilik Havuzundan Önce ve Sonra Artımlı Tutarlılığın Referans Uygulaması
Ağda birden fazla blok zinciri bir arada bulunduğunda, en olası fikir birliği zincirinin madencilerin madenciliğe devam ettiği blok zinciri olacağına inanıyoruz. Bu ifade% 100 doğru değildir, ancak hash gücünün% 51'inden fazlasına sahip bir madencilik havuzuna ihanet edilmediği sürece çoğu durum için doğrudur. .
Madencilik havuzu bilgilerini birleştirmenin bu yöntemi, blok zincirinin geleceğinin nasıl görüneceğini tahmin edebilir ve geçmişte imkansız olan kötü niyetli oyuncuları cezalandırabilir. Madencilik havuzunun tutarsızlığı için çok yüksek bir ceza belirlediğimizde, aşağıdaki iki durum ortaya çıkacaktır:
Peki, yukarıda bahsedilen% 51 bilgi işlem gücü saldırıları karşısında bu yöntem ne kadar etkili?
Saldırıları gerçekleştirmek için bilgi işlem gücü kiralama hizmetlerini (NiceHash gibi) kullanın
Diğer madencilik havuzları blok zincirinde madencilik yapmaya devam etmeyeceğinden, saldırgan zaman içinde madencilik havuzunun tutarsızlığı nedeniyle cezalandırılacaktır.
Tüm ağın hash gücünün toplam% 60'ına sahip iki maden havuzu, saldırıyı ortaklaşa gerçekleştirdi.
Bu sorunu çözmek için sadece madencilik havuzunun hash gücünü değil, aynı zamanda blok zincirinde madencilik havuzlarının sayısını da dikkate almamız gerekiyor. Kabaca aynı hash gücüne sahip 10'dan fazla madencilik havuzumuz varsa, bu sorunun çözümü daha kolay hale gelecektir.
İkisinin bir kombinasyonu
Örneğin, tüm ağın hash gücünün% 40'ını yöneten bir madencilik havuzu, bir saldırı gerçekleştirmek için tüm ağın hash gücünün% 30'unu kiralar.
Zamanla, saldırgan madencilik havuzunun tutarsızlığından dolayı cezalandırılacaktır. Saldırgan, hash gücünü kiralayan madencinin adresini bloğu orijinal madencilik havuzunun adresine ayarlasa bile, mayınlı bloğun geçmiş verilerini kontrol edeceğimiz için yardımcı olmayacağını belirtmekte fayda var.
Saldırıyı gerçekleştirmek için uygulamaya özel bir entegre devre (ASIC) kullanın
Bu uzun vadeli bir% 51 hashrate saldırısına benziyor. Saldırgan, madencilik havuzunun zaman içindeki tutarsızlığı nedeniyle cezalandırılacaktır, ancak ısrar etmeye devam ederse, bahsettiğimiz "geçmiş madencilik havuzu" haline gelebilir. Bu durumda, sorun bir maden havuzunun ihanete uğramasına dönüştü.
Bu yöntem% 51 bilgi işlem gücü saldırısını çözmese de, saldırganın saldırı maliyetini daha pahalı hale getirebilir çünkü saldırgan uzun bir süre (çok fazla blok süresi) cezalandırılmaya devam edecektir.
Birkaç madencilik havuzu aniden madenciliği durdurursa, izleme sistemi bu durumu tespit edebilir ve topluluğun, kendi başına madencilik yapmaya başlamak (ancak ceza mekanizmasının varlığı nedeniyle dikkatli olmaları gerekir) veya sadece gerçekleşmesi gibi tepki vermek için biraz zamanı olacaktır. Durum olması durumunda, daha sonraki blokların onaylanmasını bekleyin.
Bu koşullara dayanarak, önce aşağıdaki varsayımları yaptık:
Sonra, bu hipotezi doğrulamak için oyun teorisini kullanmalıyız. PoW'nin değerini ayarlamayı değil, PoW'yi tutarlı tutmak için ek bir değer olarak PCI kullanmayı düşünebileceğiniz unutulmamalıdır.
Kayar pencereli madencilik havuzundan önce ve sonra artan tutarlılık testinin sonuçları
Madencilik havuzunun tutarlılığını bir dizi ardışık blokta tespit etmek için ideal bir blok zinciri simüle ettim.
Sonuçlar, tutarlılıktan önce ve sonra kayan pencere madenciliği havuzu kullanmanın, en uzun blok zinciri mekanizmasına (şu anda çoğu blok zinciri tarafından benimsenmiştir) kıyasla arttığını gösterse de,% 51 bilgi işlem gücü saldırılarının maliyeti daha pahalı olacaktır. Bununla birlikte, test sürecindeki olası kusurlar, koddaki hatalar veya simülasyon ortamının çok ideal / basit / hata olması nedeniyle bu tür sonuçların sorunlu olabileceği unutulmamalıdır. Dolayısıyla, blok zincirindeki gerçek kullanımdan hala çok uzak olabilir.
Bu deneyde, yaklaşık 5500 blok oluşturdum (işlem 5500 * 14 saniye sürdü) ve saldırgan 4850 blok yüksekliğinde çatalladı. Varsayılan olarak, bloklar arasındaki aralık yaklaşık 14 saniyedir.Kodda çok sayıda basitleştirme yaptım ve mevcut blok zincirinde kullanılan mantığa tam olarak uymuyor (örneğin, blok süresinin hesaplanması farklı ve amca yok. Parça).
Farklılıklara rağmen, bu deneyin fikirlerimizi test etmek için yeterli olduğunu düşünüyorum. Deneysel sonuçlar aşağıda gösterilmiştir. Sonuçlarda Oran (oran), 4850 blok yüksekliğinde saldırgan tarafından oluşturulan ana zincir ile çatallı zincir arasındaki zincir puanının oranını temsil eder. Bu oran 1.0'dan düşükse, ana zincirin Blockchain puan zincirinin toplamı, saldırganın çatal zincirlerinin toplamından daha düşük.
İki blok zincirinin ulaştığı yüksekliği de şekilden görebiliriz.
Deneysel sonuçlar
Şekilden, geleneksel en uzun zincir yöntemine kıyasla, kayan pencereli madencilik havuz tutarlılığı artımlı yönteminin ana zinciri seçmenin daha kolay olduğunu görebiliriz, ancak bu yöntem çok şey kazansa bile, gerçek blok zinciri ortamında bu Yöntemin etkinliği test edilmeyi beklemektedir.
Yukarıdaki sonuç tablosundan, her durumda, çatal zincirinin sonunda daha fazla bloğu kazdığını, ancak kayan pencere puanlama yönteminde, zincir zincirinin ana zinciri asla aşmadığını görebiliriz (bu Tamamen doğru değildir çünkü başlangıçta daha yüksek bir puan almış olabilir, ancak bu testte çatal zinciri ana zincirin en az 30 blok ilerisindedir ve puan daha yüksektir).
Saldırgan yeterince uzun süre devam ederse, "madencilik havuzu geçmişinin" bir parçası olabilir ve çatallı zincirin zincir puanı zamanla ana zinciri aşar.
Tabii ki, bu deney kodu benden başka kimse tarafından kontrol edilmedi. Kodda bir sorun bulursanız, lütfen bana gönderin.
Bilinen saldırı vektörleri
% 51 Hesaplama gücü saldırısı
Yine de saldırının maliyeti çok daha pahalı olabilir.
Madencilik havuzu kimliğine bürünme saldırısı
Saldırgan, daha uzun bir blok zinciri kazabilir ve diğer madencilik havuzlarının madenci adreslerini buna ekleyebilir, böylece saldırganın blokları kazdığı madencilik havuzlarının dağılımını saldırıdan önceki ile kabaca aynı dağıtıma ayarlayabilir.
Bu durumu önlemek için madenciler için bir tür kimlik sağlamamız gerekiyor. Bu, blok başlığına minerSig (madenci imzası) adlı kimlik doğrulama bilgisi eklenerek çözülebilir. minerSig, madencinin özel anahtarı ve bloğun rastgele sayısı ile imzalanan önceki bloğun hash değeridir. Bloğu geçerli kılmak için, bu doğrulamayı kontrol etmemiz gerekir.
Saldırgan ana ağa katılıyor
Saldırgan, ana ağa katılabilir ve gelecekte ani büyük miktarda madencilik için tanımlanmamak için bazı bloklar kazabilir. Bu durum, bir maden havuzunun ihanet edip etmediğine işaret edebilir.
İyileştirme önlemleri: maden havuzu varsayımından kurtulun
Madencilik havuzu mekanizmasının protokol düzeyinde uygulanması, madencilik havuzunun var olmasını sağlayabilir. Ancak madencilik havuzumuz olmasa bile, anlaşma bu durum için optimize edilebilir.
Örneğin, madencileri belirli sayıda madencilik havuzu oluşturmaları için toplanmaya teşvik edebiliriz. Spesifik yöntem, toplam N madencilik havuzu toplamak için her bir madencilik havuzunun hash gücüne dayalı madencilik ödülleri vermektir. Yaklaşık 20 madencilik havuzu istiyorsak, tüm ağın hash gücünün% 5'ini kaplayan madencilik havuzu en yüksek madencilik ödülüne (4 ETC) sahip olacaktır.
Madencilik havuzunun bilgi işlem gücü bu değerden fazla / az ise, madencilik havuzu daha düşük bir ödül alacak ve kalan ödüller diğer madencilik havuzlarının hash gücüne bağlı olarak onlara dağıtılacaktır. Her blok için aynı miktarda madencilik ödülü oluşturduğumuzdan (bu durumda 4), para politikasında tanımlandığı gibi dolaşımdaki toplam para birimini değiştirmeyecektir. Madencilerin bizim fikirlerimiz doğrultusunda toplanabilmesi için teşviklerin doğru yapılması gerekiyor.
Burada geliştiricilere hatırlatmak gerekirse, bir kişi 5 madencilik havuzuna sahip olsa ve her bir madencilik havuzu, tüm ağın hash gücünün% 5'ine sahip olsa bile, bu bir sorun değil, çünkü madencilik havuzunun tutarlılığını artırıyor. Ek güvenlik sağlıyoruz.
Mevcut Ethereum Classic gibi bir madencilik havuzu zaten mevcutsa, gerekirse daha sonraki bir aşamada uygulanabilir.
Havuz tutarlılığının diğer olası tanımları
Madencilik havuzunun öncesi ve sonrası tutarlılık formülü aşağıdaki işlemleri gerçekleştirebilir.
Protokol düzeyinde madencilik havuzunun tutarlılığından önceki ve sonraki örnek
Her bir madencilik havuzunun karma gücünün tüm ağın% 1'ine yakınsamasına izin veren yerleşik bir teşvik mekanizmasına sahip bir blok zincirimiz olduğunu ve böylece toplamda yaklaşık 100 madencilik havuzu oluşturduğumuzu varsayalım.
Madencilik havuzunun madencilik havuzunun tutarlılık endeksine katkıda bulunması için, son 3000 bloğu hash gücünün yaklaşık% 1'i ile tutarlı bir şekilde madencilik yapması gerekir. Havuzun önceki ve sonraki tutarlılık indeksi, bu standardı geçen havuzların oranı olacaktır.
Örneğin, son 100 blok 50 farklı maden havuzu tarafından kazılıyorsa, madencilik havuzunun öncesi ve sonrası tutarlılık indeksi 0,5'e eşit olacak ve bu da 0,5 zorluğa katkıda bulunacaktır.
Bu durumda, bir saldırgan saldırmak isterse, ana zincirle aynı havuz tutarlılık indeksini elde etmeye başlamak için farklı madenci adreslerine sahip son 3000 bloğun% 50'sini çıkarması gerekir. Ayrıca madencilik havuzuna bir "hız cezası" da verebiliriz.
Aynı hash gücüne sahip 100 madencilik havuzumuz olduğunu varsayarsak, bazı istatistiksel analizler de yapabiliriz. Tüm madencilik havuzları aynı "seçilme" olasılığına sahiptir; bu, son 100 bloğun durumunun olasılığını rastgele seçildiklerini varsayarak hesaplayabileceğimiz ve ardından sonuç olarak meydana gelmesi olası olmayan olayları cezalandırabileceğimiz anlamına gelir. .
Sonuna yaz
Bunu söyledikten sonra, insanların fikir birliği algoritmalarını değiştirmeleri gerektiğini söylemiyorum, ancak fikir birliği algoritmasını ilerletmek için iyi bir neden olmalı ve herhangi bir değişiklik düşünmeden önce alternatifler iyi çalışılmalıdır.
Bunlar, fikir birliği algoritmasının iyileştirilmesi hakkındaki düşüncelerimden sadece birkaçı. Benim fikrim, ağın bilgi işlem gücü saldırılarının% 51'ini azaltabilir.
Her durumda, madencilik havuzu blok zinciri ağının bir parçası olacak, öyleyse neden blok zincirine güvenlik eklemek için her şeyi kullanmayasınız?
Hala bu yöntemi en uzun zincir mekanizması olarak düşünebiliriz, fark, blok zincirinin uzunluğunu ölçme şeklimizi değiştirmiş olmamızdır. İnsanların maksimum blok zinciri puanlama kuralı gibi daha genel açıklamalar kullanmasını tercih ederim.
Umarım bu makale size yardımcı olabilir. Madencilik havuzunu kullanarak% 51 saldırıları azaltma girişimi ile ilgili herhangi bir fikriniz var mı, lütfen bir mesaj bırakın ve tabur komutanına söyleyin ~
Yazar | phyro - Tomaz Kariz
Tercüman | Guoxi
Üretildi | Blockchain Kampı (blockchain_camp)