MainNet için Bölgesel Çarpanların Test Edilmesi

Bir dünya haritası

Ekip, beklendiği gibi hareket ettiklerinden emin olmak için MainNet'den önce Bölgesel Çarpanlar üzerinde son testleri yapıyor

İki hafta önce, coğrafi bölgelere yönelik güncellemeleri ve bunun bölgesel çarpanlar için bir teste dönüşeceğini duyurmuştuk - işte o zaman geldi. Geçen haftanın verilerini kullanarak her bölge için yeni çarpanlar hesapladık:

Bu çarpanlarla, çeşitli bölgelerdeki düğümleri çalıştırmak için gecikme faktörlerini dengelemeliyiz.  

Bu kusurlu bir sistemdir. Orta Doğu gibi sadece bir düğümü olan bölgeler, genel performanslarını tam olarak tanımlamayan sonuçlar almaktadır. Kuzey Afrika gibi diğer bölgelerin hiç düğümü yoktur ve sonuç olarak değerlerinin tahmin edilmesi gerekecektir.

Ancak, daha da büyük bir zorluk, doğru çarpanın bir bölgenin kaç düğüme sahip olduğunun bir fonksiyonu olmasıdır. Ağı tasarlarken, bir bölgedeki her düğümün takımdaki herhangi bir düğümün en yüksek çarpanını deneyimlemesini sağladık. Bu, düğüm operatörlerinin bir tura katılmamaya teşvik edildiği bir durumun asla olmamasını sağlamak içindir. Sonuç olarak, belirli bir bölge için doğru çarpan, o bölgedeki düğüm sayısının bir fonksiyonudur.

Bu, ağ büyüdükçe ve küçüldükçe çarpanların düzenli olarak güncellenmesi gerekeceği anlamına gelir. Aşağıda görülebileceği gibi, çarpanlar için matematik nispeten düzenlidir, bu nedenle bir noktada zincir üzerinde entegre etmek ve her dönem otomatik olarak hesaplamak mümkün olabilir. 

Bu çözüm aynı zamanda çarpanların nasıl işlendiğinin ayarlanmasını gerektirir. Başlangıçta, bir takımdaki tüm düğümler aynı çarpanları miras alıyordu. Bu da bazı çok garip çarpanlara neden oluyordu, bu nedenle algoritmayı tüm düğümlere kendi çarpanlarının ortalamasını ve takımdaki en yüksek çarpanı verecek şekilde ayarlıyoruz.

Çarpanların Hesaplanması

Çarpanları hesaplarken, ham sayılarla, çarpan hariç her düğümün her dönemde kaç puan aldığıyla başladık. Her şeyin adil olmasını ve her düğüm koşucusunun diğer tüm düğümlerle takım olmaya teşvik edilmesini istiyoruz. Yani amacımız, tam katılımın size ağda tam "puan" kazandırmasını sağlamaktır.

Devam etmeden önce, bazı tanımlar:

  1. Mᵢ - Bin'deki tüm düğümler için çarpan i.
  2. Aᵢ - Bin için ayarlanmış nokta değeri i.
  3. Pᵢ - Bin'den en az bir düğümün olması olasılığı i bir ekibe dahil edilir ve herhangi bir bin <i dahil değildir.


Hesaplama gerçek ağ verileriyle yapılmaktadır. Geçen hafta boyunca, düğüm başına bir dönemde cMix işlemleri için kazanılan ortalama puanları aldık. Bu daha sonra Aᵢ olarak bilinen kutu için ayarlanmış puan değerini üretmek üzere "normalleştirildi".

Bu sistemin amacı, gelecekteki As'ların hepsi 1 olacak şekilde Çarpanlar oluşturmaktır.

Puanlar hesaplanırken her düğümün çarpanı, kendi çarpanının ve takımdaki en yüksek çarpanın (aynı zamanda en düşük i) ortalamasıdır. 

En düşük ortalamaya sahip bölge olan Bin 0 diğerlerinin üzerine yazıldığından, Bin 0'ın çarpanı şu şekilde hesaplanabilir:

Amacımız, tüm takımlardaki tüm düğümler için çarpanların ve ayarlamaların da ortalama olarak en fazla 1 olmasını sağlamaktır. Mₙ n'inci sıralı bölme için çarpan ve Aₙ n'inci sıralı bölme için normalleştirilmiş ortalama olduğundan. Bu kolayca çözülebilir:

Bin 1 için bir sonraki çarpan, Bin 1'den bir düğümün Bin 0'dan bir düğümle seçilme olasılığı (M0 bin çarpanını kullanır) ve Bin 1'den bir düğümün Bin 0'dan bir düğümle takım olmama olasılığı (M1 takım çarpanını kullanır) olarak hesaplanabilir:

Aynı hesaplamayı Bin 2 için de yapabiliriz:

Bu denklemler, herhangi bir Bin için çözülebilir ve çarpan cinsinden tanımlanabilir. Bin 2 için, çarpanı hesaplamak için dönüşümler şunlardır:

Bunu herhangi bir takım çarpanı Bin n için toplamları kullanarak genelleştirebiliriz:

Özyinelemeli tanıma ek olarak, olasılıkları doğru belirlemek de zordur. Her bir 5 düğümden oluşan takım seçimi, ağdaki toplam düğümler arasından değiştirilmeden rastgele bir çekilişten oluşur. Bu tür bir seçim hipergeometrik dağılım ile tanımlanır. Çoğu zaman bu dağılım, ikili bir özelliğe sahip nesnelerin (bizim durumumuzda düğümler) sayıldığı basit bir duruma uygulanır (örneğin, BFT mutabakat alanında: byzantine/honest düğümler). Ancak, cMix'de düğümleri 12 kutuya ayırdık, bu da sorunu çok boyutlu bir soruna dönüştürüyor, yani çok değişkenli bir hipergeometrik dağılım hesaplamamız gerekiyor. Neyse ki, çarpanların çalışma şeklinin doğası gereği, diyelim ki kutu 2'den bir düğüm seçerken, takımdaki başka herhangi bir düğümün daha yüksek çarpana sahip bir kutudan olup olmadığını umursamıyoruz. Bu, hesaplamamız gereken tüm olasılıkların benzer olduğu anlamına gelir: i kutusundan en az bir düğüm içeren ve tüm kutulardan <i düğüm içermeyen bir ekibe sahip olmak istiyoruz. Aşağıdaki kaynaklarımızda bunun nasıl yapılacağını ayrıntılı olarak gösteren bir elektronik tablo yer almaktadır.

Hata

Bu çözüm, A değerlerindeki tutarsızlıkların büyük ölçüde seçim olasılıklarını etkileyen turların ne kadar sürdüğündeki değişikliklerden kaynaklanması nedeniyle bazı hatalar içermektedir. Simülasyonumuz tarafından tanımlanan bu çözüm 3% dahilinde doğrudur. Gelecekteki çalışmalar, nokta değişimlerinin nedenlerini daha iyi modellemek ve bu hatayı azaltmak için yapısöküme uğratabilir.

Kaynaklar:

Kutuların listesi:

 https://docs.google.com/spreadsheets/d/1z9kvEW7XXcHYxUSPpXkoA1Cv9trIbY4VkPzaWzJEN_I/edit#gid=2056956216

Çizelgeleme Algoritması: https://git.xx.network/xx_network/primitives/-/blob/dev/region/ordering.go

Çarpan Hesaplaması:

https://docs.google.com/spreadsheets/d/1d2HcuCVorKDkUppBam-dk-_PJ8ukPp8ja18DyE_VYJQ/edit?usp=sharing

Hesaplamaları doğrulamak için simülasyonlar için Python betiği:

https://git.xx.network/-/snippets/3

Popüler