Ekip, beklendiği gibi davrandıklarından emin olmak için MainNet'ten önce Bölgesel Çarpanlarda son testler yapıyor
İki hafta önce, coğrafi kutulardaki güncellemeleri duyurduk ve bunun bölgesel çarpanlar için bir teste yol açacağını duyurduk - o zaman geldi. Geçen haftanın verilerini kullanarak her bölge için yeni çarpanlar hesapladık:
Bu çarpanlarla, çeşitli bölgelerde çalışan düğümler için gecikme faktörlerini dengelemeliyiz.
Bu kusurlu bir sistemdir. Orta Doğu gibi yalnızca bir düğümü olan bölgeler, genel performanslarını tam olarak açıklayamayan sonuçları okuyor. Kuzey Afrika gibi diğer bölgelerde hiç düğüm yok ve sonuç olarak değerlerinin tahmin edilmesi gerekecek.
Ancak daha da büyük bir zorluk, doğru çarpanın bir bölgenin sahip olduğu düğüm sayısının bir fonksiyonu olmasıdır. Ağı tasarlarken, bir bölgedeki her düğümün ekipteki herhangi bir düğümün en yüksek çarpanını deneyimlemesi için yaptık. Bu, düğüm operatörlerinin bir tura katılmamaya teşvik edilmediğ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 gerektiği anlamına gelir. Aşağıda görülebileceği gibi, çarpanların matematiği nispeten düzenlidir, bu nedenle onu bir noktada zincire entegre etmek ve her çağda otomatik olarak hesaplamak mümkün olabilir.
Bu çözüm ayrıca çarpanların nasıl işlendiğini ayarlamayı gerektirir. Başlangıçta, bir takımdaki tüm düğümler aynı çarpanları devralırdı. Bu, bazı çok tuhaf çarpanlarla sonuçlandı, bu nedenle algoritmayı, tüm düğümlere kendi çarpanlarının ortalamasını ve takımdaki en yüksek değeri verecek şekilde ayarlıyoruz.
Çarpanların Hesaplanması
Çarpanları hesaplarken ham sayılarla başladık, çarpan hariç her çağda her düğümün kaç puan aldığı. Her şeyin adil olmasını istiyoruz ve her düğüm koşucusunun diğer düğümlerle takım oluşturmaya teşvik edilmesini istiyoruz. Dolayısıyla amacımız, tam katılımın size ağda tam “puan” kazandırdığından emin olmaktır.
Devam etmeden önce bazı tanımlar:
- Mᵢ – Bin'deki tüm düğümler için çarpan Bence.
- Aᵢ – Bin için ayarlanan nokta değeri Bence.
- Pᵢ – En az bir düğümün binden Bence bir takıma dahil edilir ve herhangi bir kutudan bir düğüm <Bence içermiyor.
Hesaplama, gerçek ağ verileriyle tohumlanır. Geçen hafta boyunca, düğüm başına bir dönemde cMix operasyonları için kazanılan ortalama puanları aldık. Bu daha sonra Aᵢ olarak bilinen kutu için ayarlanmış nokta değerini üretmek üzere "normalleştirildi".
Bu sistemin amacı, geleceğin tümü 1 olacak şekilde Çarpanlar oluşturmaktır.
Kutular, A tarafından minimumdan maksimuma sıralanır. Puan hesaplanırken, her düğümün çarpanı, çarpanlarının ortalamasıdır ve takımdaki en yüksek değerdir (ayrıca en düşük i).
En düşük ortalamaya sahip bölge olan Bin 0, diğerlerinin üzerine yazdığı için, Bin 0'ın çarpanı şu şekilde hesaplanabilir:
Amacımız, tüm ekiplerdeki tüm düğümler için çarpanların ve ayarlamaların da ortalama olarak maksimum 1 olmasını sağlamaktır. Mₙ, n'inci sıralı kutu için çarpan olduğundan ve Aₙ, n'nci sıralı kutu için normalleştirilmiş ortalama olduğundan. Bu kolayca çözülebilir:
Kutu 1 için bir sonraki çarpan, Kutu 1'deki bir düğümün Kutu 0'daki bir düğümle seçilme olasılığı (M0 kutu çarpanını kullanan) ve Kutu 1'deki bir düğümün Kutudaki bir düğümle birlikte kullanılmama olasılığı olarak hesaplanabilir. 0 (M1 takım çarpanını kullanır):
Aynı hesaplamayı Bin 2 için de yapabiliriz:
Herhangi bir Bin için bu denklemler çözülebilir ve çarpan cinsinden tanımlanabilir. Bin 2 için çarpanı hesaplamak için gereken 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ın doğru olması zor. 5 düğümden oluşan bir ekibin her seçimi, ağdaki toplam düğümden değiştirilmeden rastgele bir çekilişten oluşur. Bu tür bir seçim, hipergeometrik bir dağılımla tanımlanır. En sık olarak, bu dağılım ikili bir özelliğe sahip basit bir sayma nesnesi durumuna (bizim durumumuzdaki düğümler) uygulanır (örneğin, BFT konsensüs alanında: Bizans/dürüst düğümler). Bununla birlikte, cMix'te düğümleri 12 kutuya böldük, bu da sorunu çok boyutlu hale getiriyor, bu da çok değişkenli bir hipergeometrik dağılım hesaplamamız gerektiği anlamına geliyor. Neyse ki, çarpanların çalışma biçiminin doğası gereği, diyelim ki 2. kutudan bir düğüm seçerken, ekipteki başka herhangi bir düğümün daha yüksek çarpanı olan bir bölmeye ait olup olmadığı umursamıyoruz. Bu, hesaplamamız gereken tüm olasılıkların benzer olduğu anlamına gelir: bin i'den en az bir düğümü olan, tüm kutulardan herhangi bir düğümü olmayan bir takıma sahip olmak istiyoruz. <i. We include a spreadsheet in our resources below which show how to do this in detail.
Hata
Bu çözüm, A değerlerindeki farklılıkların büyük ölçüde seçim olasılıklarını etkileyen turların ne kadar sürdüğüne ilişkin varyasyonlardan kaynaklanması gerçeğinden dolayı bazı hatalara sahiptir. Simülasyonumuz tarafından açıklanan bu çözüm, 3% içinde doğrudur. Gelecekteki çalışmalar, onları daha iyi modellemek ve bu hatayı azaltmak için nokta değişimlerinin nedenlerini bozabilir.
Kaynaklar:
Kutu listesi:
Zamanlama Algoritması: https://git.xx.network/xx_network/primitives/-/blob/dev/region/ordering.go
Çarpan Hesaplaması:
Hesaplamaları onaylamak için simülasyonlar için Python betiği: