Zycord: Kendi Kendini Belgeleyen Durum Geçişlerinden Oluşan Eşler Arası Bir Ağ
Bu sayfa makine tarafından çevrilmiştir ve gözden geçirilmemiştir. İngilizce metinle çeliştiği yerde protokolün söylediği İngilizce olandır. Yetkili, arşivlenmiş kayıt sürümü doi:10.5281/zenodo.22167490, İngilizce metin ise zycord.com/docs/whitepaper/ adresindedir.
Zycord: Kendi Kendini Belgeleyen Durum Geçişlerinden Oluşan Eşler Arası Bir Ağ. Simstoshi tarafından, v1.0, 2026. Her işlem okuduğu ve yazdığı durumu kendisiyle birlikte taşır; böylece onu doğrulamak yalnızca baytlarının saf bir fonksiyonudur — disk yok, geçmiş yok, güven yok ve paralellik üzerinde bir sınır yok.
Bugünün başlıca blok zincirlerinin tamamı, her düğümün her işlemi paylaşılan küresel bir duruma karşı yeniden yürütmesiyle ölçekleniyor. İşlem hacmi büyüdükçe düğüm gereksinimleri de onunla birlikte büyüyor ve ağ merkezileşiyor. Biz kendi kendini belgeleyen durum geçişlerinden kurulmuş bir defter öneriyoruz. Her işlem okuduğu ve yazdığı durumu kendisiyle birlikte taşır; böylece onu doğrulamak yalnızca baytlarının saf bir fonksiyonudur: disk yok, geçmiş yok, güven yok, paralellik üzerinde sınır yok. Zincirin kendisi hiçbir zaman yürütme yapmaz. Sertifikaları sıralar ve bildirdiği girdileri hâlâ geçerli olan her sertifikayı uygulayıp geri kalanını atlayan deterministik bir fold ile bunları işler. Atlama bir başarısızlık değil, fiyatlandırılmış bir olaydır. Her sertifika, onu bayatlamaya karşı sigortalayan bir taraf tarafından üstlenilir; böylece çatışmaların sahibi olur, çift imza nesnel biçimde cezalandırılabilir ve spam yapısı gereği pahalıdır. Sözleşmeler, depolama slotu bazında, erişimin tam mı, korumalı mı, yoksa değişmeli mi olduğunu bildirir; dolayısıyla ödemeler, bahşişler ve mint işlemleri hiçbir zaman çekişmeye girmez. Ücretler iki piyasaya ayrılır: biri kıt bir kaynak olan sıralı durum değişimi için, diğeri kıt olmayan paralel doğrulama için; ağır kriptografi bu sayede tasarım gereği ucuzdur. Bu özellik gizli ödemeleri mümkün kılar — açık bir işlem grafiği üzerinde gizlenmiş tutarlar ve tek kullanımlık alıcı adresleri — ki bunların kriptografik maliyeti tümüyle paralel piyasaya düşer ve enflasyon riskini bir fold kuralı, olay sonrası denetimlerle değil, korumalı bir havuzun bakiyesiyle sınırlar. Yalnızca işleme sıralıdır ve işleme, bellek üzerinde bir döngüdür. Başlangıçta her düğüm her şeyi ucuza ve paralel olarak doğrular; doğrulama tekrarlanmak yerine örneklendiğinde ise düğüm başına maliyet ağ büyüdükçe düşer.
Bu belgeye atıfta bulunun. Arşivlenmiş, sürümlenmiş kayıt sürümü
doi:10.5281/zenodo.22167490. Bu siteden bir
PDF sunulur; yanında proje anahtarı
E724 39CE DD85 11F9 D607 550B 87FD 60D5 EB4A 0B29. Aşağıdaki metin, kısaltılmamış hâliyle o belgedir.
Teknik doküman gerekçedir. Protokolün kendisi değildir. Bu metin ile normatif yüzey çeliştiğinde normatif yüzey kazanır ve çelişki bir hatadır: protokol parametre dosyaları ile golden vektörlerdir, eş katmanının gereksinimleri ise hat spesifikasyonundadır. Referans düğümün bunların tamamını nasıl uyguladığını anlatan mühendislik eşlikçisi Mimari'dir.
1. Giriş#
Bugün bir blok zinciri düğümü, birbiriyle hiçbir ortak yanı olmayan üç iş yapar: veri yayar, hesaplamayı doğrular ve durumu değiştirir. Veri bant genişliğiyle ölçeklenir. Doğrulama çekirdek sayısıyla ölçeklenir: işlemler bağımsız olarak denetlenebiliyorsa utanç verecek kadar paraleldir. Durum değişimi ise gerçekten sıralı olan tek kaynaktır: bir yerde, yazmaların tek bir yetkili tarihçesi bulunmak zorundadır.
Mevcut tasarımlar bu üçünü birbirine dolar. Baskın modelde bir düğüm, küresel durumu elinde tutmadan bir işlemi doğrulayamaz; dolayısıyla doğrulama, durumun ölçeklenme sınırlarını devralır. Tek bir gas piyasası bu üç kaynağı birlikte fiyatlandırdığı için de bir imza denetimi, bir depolama yazmasıyla aynı açık artırmada yarışır. Yüksek başarımlı yeni zincirler yürütmeyi düğümün içinde paralelleştirir, ama yine de her düğüm her şeyi yeniden yürütür ve bağlayıcı kısıt durum G/Ç'sine dönüşür. Verilen yanıt hep daha büyük makineler olmuştur; yani hep daha az düğüm.
Bu makale ters yolu tutuyor. Yürütmeyi paylaşılan duruma karşı paralelleştirmiyoruz; durumu paralel yoldan tümüyle çıkarıyoruz. Bir işlem, kendi girdilerini ve çıktılarını taşıyan bir sertifikaya dönüşür. Onu doğrulamak baytlarının saf bir fonksiyonudur. Zincirin işi, sertifikaları sıralamaya ve üzerlerinde deterministik bir fold çalıştırmaya küçülür — sertifika başına duruma tam olarak bir kez dokunan, karşılaştırmalar ve toplamalardan oluşan bir döngü. Çatışmalar blokları geçersizleştirmez; tek tek sertifikaların atlanmasına yol açar ve her atlama, teminatlı bir underwriter'a fatura edilir. Eşzamanlılık çalışma anında keşfedilmez; sözleşme yazarı tarafından, slot slot, bildirilir.
İzleyen bölümler şunları tanımlar: sertifika (§2), fold (§3), türlenmiş durum erişimi (§4), sigorta ekonomisi (§5), uygulama sıralayıcıları (§6), sansüre direnç (§7), ikili ücret piyasası (§8), sahtekârlık kanıtları ve örnekleme yolu (§9), sanal makine (§10), makinesiz yerel varlıklar (§11), gizli ödemeler (§12), ağ (§13), üç Era'lık başlangıç ve hazinesi (§14) ve referans uygulamadan ölçümler (§15).
2. Durum Geçiş Sertifikaları#
Zycord'daki tek işlem türü bir sertifikadır:
Certificate {
reads: [(slot, access, operand)] // declared inputs
writes: [(slot, op, value)] // declared outputs
program: bytes // code or native-op reference
sigs: [signature] // spending authority
underwriter: (id, sig, seq) // who insures it (§5)
ttl: height // valid if committed by this height
fee: (seq_gas_bid, par_gas_bid) // two markets (§8)
}
Bir slot (address, word) ikilisidir. Bir sertifika, hiçbiri herhangi bir durum gerektirmeyen üç denetimden geçtiğinde geçerlidir:
- her
sig, harcadığı hücreleri yetkilendirir; - underwriter imzası
(certificate, ttl)üzerinde iyi biçimlidir; program'ın bildirilenreads'e karşı yeniden yürütülmesi tam olarak bildirilenwrites'ı üretir. İmzalar kanonik olmak zorundadır ve bu, bir kütüphanenin nezaket kuralı değil, bir konsensüs kuralıdır. Bir sertifikanın id'si, yetkilendirici alanlarının — reads, writes, program, underwriter, ttl ve ücret tekliflerinin — özetidir. İmzalar bunların arasında değildir ve bir sonraki paragraf nedenini söyler. O id ile anahtarlanan seen set, replay savunmasının tamamıdır. Ücret bir yetkilendirici alandır, bir aktarım tercihi değil; ve bu ayrım parasaldır: bir teklif, imzalayanın bir maliyete rıza göstermesidir, dolayısıyla id'nin dışındaki bir teklif, yolda herkesin yeniden yazabileceği bir teklif olurdu — taban ücret üzerinden gönderenin bakiyesini yakmak için şişirilmiş ya da sertifikayı her bloğun dışında tutmak için sıfırlanmış. Bir sertifikanın ödediği şey, imzalayanının yetkilendirdiği şeyin parçasıdır ve id bunu söyler. Kanonikliğin satın aldığı şey bir id'den daha dardır ve yine de bir konsensüs kuralıdır: tek bir imzanın iki kodlamasına izin veren bir şema, tek bir sertifikanın iki örnek (exemplar) hâline izin verir; bunlardan hangisinin doğrulandığı konusunda anlaşamayan iki uygulama ise, hiçbirinin geçersiz diyemeyeceği bir sertifika üzerinde çatallanmış olur. Bunu kapatan kural tek cümledir: kanonik olmayan bir imza kodlaması geçersizdir ve doğrulayıcısı böyle birini kabul eden bir uygulama, bu protokolün bir uygulaması değildir. Sağlam şemalar bu tür kodlamaları zaten reddeder; bunu yazıya dökmenin nedeni, reddetmeyenlerin de yaygın olması ve böylesine uzanan bağımsız bir uygulamanın, kendi hiçbir testinin ortaya çıkaramayacağı bir biçimde ayrışacak olmasıdır.
Rastgeleleştirilmiş gösterimler istisnadır ve bu istisna yapısaldır, bir kodlama meselesi değil. Bir aralık kanıtı (§12) rastgeleleştirilmiştir: tek bir önerme için kanıtlayan nonce'ları seçer, dolayısıyla tek bir önermenin sınırsız sayıda geçerli kanıtı vardır, hepsi de kanoniktir ve reddedilecek kanonik olmayan bir kodlama yoktur. Bir önermenin iki geçerli kanıtı, bir kanıtın iki kodlaması değildir; bunlar iki kanıttır ve açılımı elinde tutan alıcı her zaman yenisini üretebilir. Dolayısıyla kanoniklik onlara erişmez. Bir imza da bunlardan biridir ve bu, egzotik olanlardan biri olmadığı için gözden kaçması kolaydır. Ed25519 bir Schnorr bilgi kanıtıdır: imzalayan bir nonce seçer ve her nonce aynı mesaj üzerinde farklı bir imza verir; her biri geçerli ve her biri kusursuzca kanoniktir. Deterministik nonce türetimi, imzalayanlar için hiçbir doğrulayıcının denetleyemeyeceği ve hiçbir kodlama kuralının dayatamayacağı bir kuraldır, çünkü her nonce noktası diğerleri gibi kanonik olarak kodlanabilir bir noktadır. Böylece tek bir yetkilendirmenin sınırsız sayıda imzası olur ve bunları kapsayan bir id'nin sınırsız sayıda değeri olurdu — her biri sertifikanın gerekli imzalayanlarından herhangi biri tarafından üretilebilir, diğerlerinin imzalarını dokunmadan taşır ve her biri kendi bloğunda faturalandırılabilir olurdu. Tehdit modeli bir kanıtınkinden dardır ve sonuç aynıdır: bir kanıt, hiçbir anahtarı olmayan bir alıcı tarafından yeniden rastgeleleştirilebilir, oysa ikinci bir imza, sertifikanın zaten gerektirdiği bir anahtara ihtiyaç duyar. Id bu boşluğu yapısı gereği kapatır: bir sertifikanın yetkilendirdiğine bağlanır, yalnızca gösterdiğine asla; böylece imzalar da kanıtlar da id'nin ön görüntüsünün dışında yolculuk eder. Yeniden imzalamak ya da yeniden rastgeleleştirmek aynı id'yi verir, seen set kopyayı yakalar ve ikisini birden taşıyan bir blok geçersizdir. Bu, bir sertifikanın alanlarını iki türe böler — id'nin kapsadığı ve imzaların imzaladığı yetkilendirme ile hiçbirinin kapsamadığı kanıt malzemesi. Bu bölünme, gizli ödemeleri bekleyen bir §12 meselesi değildir; blok 0'dan itibaren yük taşır, ki orada bir sertifikanın taşıdığı tek kanıt malzemesi kendi imzalarıdır. Bir doğrulayıcı, kanıt malzemesini paralel aşamada baytlardan denetler ve sonra atar; id'ye, seen set'e ve fold'a yalnızca yetkilendirme ulaşır.
Bu bölünme, id'nin artık taşımadığı bir yükümlülük yaratır ve bu yükümlülük üretimde keşfedilmek yerine burada adlandırılır. Id'nin ön görüntüsü dışındaki kanıt malzemesi, yoldaki herkesin yerine başkasını koyabileceği bir kanıt malzemesidir: bir sertifikayı alın, kanıtının yerine çöp koyun ve yayın — aynı id, artık geçersiz bir örnek (exemplar). Bunun açtığı iki deliği iki kural kapatır. Birincisi, bir blok taşıdığı kanıt malzemesine bağlanır. Bloğun sertifika listesi bir exemplar özetleri listesidir — sertifika başına bir yaprak, kanıt malzemesi dâhil tüm kodlaması üzerinde — böylece "bu blok geçerlidir" ifadesi, bloğun kendisinin sabitlediği baytlar hakkında bir önerme olmayı sürdürür. Id bu yetkilendirme faturalandı mı sorusunu, exemplar özeti ise bu baytlar onu kanıtlıyor mu sorusunu yanıtlar ve bu iki soru hiçbir zaman aynı anahtarı paylaşmaz. Kanıt malzemesi kodlamadan ayrılamaz olduğu sürece — kanıt malzemesi imzalar olduğu sürece olduğu gibi — tek bir yaprak yeter; §12'nin kanıtları onu kendi başına bir alan hâline getirdiğinde yaprak (id, kanıt malzemesi özeti) ikilisi olur ve bağlanma aynı bağlanmadır. Asla dönüşmemesi gereken şey, bir id listesidir: bu, hiçbir belirli kanıt malzemesine bağlanmamak olurdu ve sertifika listesinin kökü bir başlık alanı, başlık da proof of work ön görüntüsü olduğundan, kanıt malzemesini değiştirmek o zaman hiçbir maliyet doğurmaz ve yapılan işi ayakta bırakırdı. Bu, tanık bağlantılı işlemlerin emsalidir ve icat edildiği nedenle izlenmektedir: kanıt malzemesini kapsayan bir id şekillendirilebilirdi, kanıt malzemesini bağlanmamış hâlde yok sayan bir id ise kördür. İkincisi, aktarım id'leri değil exemplar'ları işler: kanıt malzemesi doğrulanamayan bir exemplar alan bir düğüm, id'ye zarar vermeden o exemplar'ı atar — id işaretlenmez, geçersiz diye önbelleğe alınmaz ve sonradan gelen ve doğrulanan bir exemplar normal biçimde aktarılır. Sakatlanmış bir kopya, sakatlayanına yalnızca onu göndermenin bant genişliği kadara mal olur ve sertifikaya hiçbir şeye mal olmaz. Proposer'ın körlüğü bozulmadan kalır: kendi durumsuz denetiminin kabul ettiği exemplar'ları dâhil eder, dolayısıyla sakatlanmış bir kanıtı dâhil etmeye, bozuk bir imzayı dâhil etmeye ikna edilebileceğinden fazla ikna edilemez ve §3'ün savı taşıdığı anlamı korur.
Geçerlilik, sertifikanın baytlarının saf bir fonksiyonudur. Herhangi bir makine bunu denetleyebilir: bir iş parçacığı havuzunda, başka bir bilgisayarda, bir GPU üzerinde; veritabanı olmadan, geçmiş olmadan, senkronizasyon olmadan. İmza denetimleri sertifikalar arasında toplu işlenir; aynı programdan gelen sertifikalar tek komut, çok iş parçacıklı yüklere toplanır (§6); aralık kanıtları (§12) logaritmik marjinal maliyetle toplu işlenir. Bu makaledeki her şeyin üzerine kurulduğu özellik budur.
Geçerlilik, yürütme için yeterli değildir. İki geçerli sertifika aynı slot için aynı girdi değerini bildirebilir; en fazla biri etki edebilir. Bu nedenle klasik işlem geçerliliği kavramını ikiye ayırıyoruz: geçerli (durumsuz, paralel, herkesçe denetlenebilir) ve uygulanabilir (durumlu, sıralı, yalnızca defterdeki konuma göre kararlaştırılır). Bir sonraki bölüm ikinci yüklemi tanımlar.
3. Defter Bir Fold Olarak#
Bir blok bir başlık, sıralı bir sertifika özetleri listesi ve sertifika gövdelerinin kendilerini içerir. Gövdeler zincir verisidir: bir blok, ancak gövdeleri erişilebilirse geçerlidir (§13). Bir bloğun proposer'ı hiçbir şey yürütmez ve hiçbir uygulama durumu tutmaz; geçerliliğini baytların kendisinden denetleyebildiği baytları sıralar. Tam anlamıyla durumsuz değildir ve bu istisna, yuvarlanıp geçilmek yerine adlandırılmayı hak eder: TTL penceresi içinde görülen sertifika id'lerinin kümesini taşımak zorundadır, çünkü birini iki kez dâhil etmek bloğu geçersiz kılar ve kimse buna kazara sürüklenemez. O küme TTL ile sınırlıdır ve budanabilir; TTL'in bir aktarım tercihi değil bir konsensüs parametresi olmasının nedeni budur. Öneri kasten ucuz ve aptaldır, kasten kör değil.
Zincirin durumu, sıralı sertifikalar üzerinde bir fold olarak tanımlanır:
apply_block(S, B):
assert bodies_available(B)
assert ∀c: height ≤ c.ttl ∧ ¬seen(c.id) // an expired or replayed certificate
// makes the BLOCK invalid: a signature
// is billable at most once, and never at
// a position its signer could not avoid
C ← sort(B.certs, key = (underwriter.id, underwriter.seq, c.id))
for c in C:
if leased(S, c): bill(c, LEASED); mark_seen(c.id, c.ttl); continue // §7; Era 1 only
ok ← true
for (slot, access, x) in c.reads:
EXACT: ok ← ok ∧ (S[slot] = x)
GUARD: ok ← ok ∧ pred_x(S[slot])
if ¬ok: bill(c, STALE); mark_seen(c.id, c.ttl); continue
w ← stage(S, c.writes) // a target whose address is spent, or a delta that would
// over- or underflow, fails HERE — nothing has landed yet
if w = ⊥: bill(c, STALE); mark_seen(c.id, c.ttl); continue
commit(S, w); settle_fees(c); mark_seen(c.id, c.ttl)
Yazmalar denetlenir ve hiçbiri yere inmeden önce denetlenir. Bu taslağın daha önceki sürümleri yazma kümesini koşulsuz uyguluyordu; bu da sanki bir alacak harcanmış bir hücreyi diriltebilirmiş ve sanki bir delta taşabilirmiş gibi okunuyordu. İkisi de doğru değil ve ikisi de ölümcül olurdu; bu yüzden hazırlama adımı artık spesifikasyona bırakılmayıp taslağın içinde. Aritmetik göründüğü her yerde denetlenir: 2²⁵⁶'nın ötesine ya da sıfırın altına taşacak bir delta, sertifikayı taşırmak yerine atlar; §11'in arz tavanlarının sınırsız eşzamanlı mint altında da tutmasının nedeni budur. Yetkisi yakılmış bir adrese yazma, sessizce yok olmak yerine yüksek sesle başarısız olur — kalıcı harcanmış adres kaydı tam da bunun için vardır ve §5'in atıf teoremindeki tek istisnanın kaynağı budur.
**leased Era-1 mekanizmasıdır ve genesis'te bulunmaz.** Burada gösterilmesinin nedeni bu bölümün protokolün tamamının fold'unu belirtmesidir; ancak başlangıç era'sında kiralama yoktur, zorunlu kuyruk yoktur ve bunlarla savunulacak eş imzalayanlar yoktur, dolayısıyla dal genesis ikili dosyasında erişilemezdir — erişilemez konsensüs kodu ise denetlenemez konsensüs kodudur, bu yüzden sevk edilmez. Bir açık soru, üstü örtülmek yerine işaretleniyor: yazıldığı hâliyle LEASED, bir sertifikayı imzalayanının öngöremeyeceği bir konumda faturalandırır, ki bu tam olarak dört satır yukarıdaki savın yasakladığı şeydir. Ya bu sonuç faturalandırmamalı ya da bloğu geçersiz kılmalıdır. Seçim, kiralamaları getiren era'ya aittir ve o era'nın bu çelişkiyi sessizce devralmaması için buraya kaydedilmiştir.
Açıkça belirtmeye değer özellikler:
Atlama semantiktir, başarısızlık değil. Okumaları artık geçerli olmayan bir sertifika atlanır, atlama ücreti underwriter'ına fatura edilir (§5) ve blok geçerli kalır. Dâhil edilme ile uygulanma farklı olaylardır. Proposer'ın kör olabilmesini sağlayan budur: bayat bir sertifikayı dâhil ederek asla geçersiz bir blok üretemez.
Determinizm. Her düğüm, özdeş bir blok dizisinden özdeş bir durum türetir. Sıralama anahtarı (underwriter, seq, certificate id), bloğun içeriği üzerinde tam bir sıralamadır; dolayısıyla fold, bir proposer'ın farklı underwriter'lardan gelen sertifikaları nasıl aralara serpiştirdiğine duyarsızdır — ve proposer'a hiçbir takdir yetkisi bırakmaz, tek bir underwriter'ın aynı seq ile imzaladığı iki sertifika arasında bile. Bir underwriter'ın kendi hattı (seq artan sırada), proposer onu hangi sırada sunmuş olursa olsun, imzalandığı sırayla işlenir.
Sertifika başına tam olarak bir durum dokunuşu. Fold, sıcak bir anahtar-değer çalışma kümesi üzerinde karşılaştırmalar, toplamalar ve yazmalar yapar: kod yürütme yok, imza doğrulama yok, yeniden yürütme yok. Bunların hepsi, geçerlilik denetimi sırasında, paralel olarak, çoktan olup bitmiştir.
Ve eliptik eğri aritmetiği de yok. Gizli ödemeler (§12) slot değerlerine Pedersen bağlanmaları koyar ve bir bağlanma bir eğri noktasıdır. Şema homomorfiktir ve iki bağlanmanın toplamı anlamlıdır; bu da fold'u onları toplamaya davet eder. Fold reddeder. Bir nokta toplaması, bir u256 toplamasının ~1 ns'ine karşılık yüzlerce nanosaniyeye mal olur ve tek sıralı aşamadaki tek bir EC işlemi, bu mimarinin koruduğu bütçeyi harcar. Fold yalnızca bağlanma baytlarını taze hücrelere yazar ve eşitlik için karşılaştırır — ikisi de bellek işlemidir; tüm eğri aritmetiği paralel aşamada ya da sahibinin cüzdanında gerçekleşir (§12). Aynı disiplin, aşağıda özetlemeyi de yönetir.
Bir kriptografi parçası kaldırılmış değildir ve aksini iddia etmek fazla işimize gelirdi: bir sertifikanın id'si yetkilendirici alanlarının bir özetidir (§2) ve seen set o id ile anahtarlanır, dolayısıyla birinin onu hesaplaması gerekir. Önemli olan nerede hesaplandığıdır ve yanıt, burada olması gerekmediğidir. Id yalnızca sertifikanın baytlarına bağlıdır, başka hiçbir şeye — duruma değil, sıraya değil, konuma değil — dolayısıyla paralel aşamada imza denetimleriyle birlikte hesaplanır ve tıpkı sertifikanın kendisi gibi fold'a taşınır. Bunun yerine sıralı döngüde yeniden hesaplayan bir uygulama, özetlemenin, bellekle ilgili olması gereken bir aşamaya hâkim olduğunu görecektir; bu, yapılması kolay olduğu için adlandırılmayı hak eden bir hatadır. Burada neyin kaldırılıp neyin kaldırılmadığı konusunda kesin olmak istiyoruz. Fold hâlâ tüm durum üzerinde rastgele erişim yapar, bildirilen slot başına bir dokunuş, ve işleyen bir düğüm hâlâ o durumu tutar. Sıralı yoldan çıkan şey, geleneksel bir zincirde erişimi kuşatan her şeydir — yorumlama, imza denetimleri, özetleme, Merkle'leştirilmiş bir deponun işlem başına kimlik doğrulaması — böylece durum düz bir tabloda yaşayabilir ve sistemin tek sıralı aşaması bellek üzerinde sıkı bir döngü olur. Referans fold, on çekirdekli bir x86 masaüstünde çekirdek başına saniyede 883.000 slot işlemi sürdürür (§15) ve paralelleşmeyen tek aşama odur.
Değer eşitliği, sürüm değil. Uygulanabilirlik, bildirilen okuma değerlerini karşılaştırır, sürüm sayaçlarını değil. Yürütme okuma kümesinin saf bir fonksiyonu olduğundan, değişip sonra eski hâline dönen bir slot (ABA durumu) hâlâ uygulanabilirdir: sertifikayı şimdi uygulamak, onu o zaman yürütmüş olmakla anlamca özdeştir. Dolayısıyla sistem, sürüm tabanlı eşzamanlılık denetiminden kesinlikle daha seyrek atlar. Bağlanma değerli slotlar için karşılaştırma, bağlanmanın bayt eşitliğidir: opak, tam ve aynı ölçüde ucuz — yeter ki §4'ün kanoniklik koşulları uygulansın.
Replay ve tek faturalandırma. Bir sertifikanın id'si, yetkilendirdiği şeyin özetidir; yetkilendirmeyi gösteren imzaların asla (§2) ve uygulanmış ve faturalandırılıp atlanmış sertifikaların hepsi görüldü olarak işaretlenir. Kuralı kural yapan şey bu ayrımdır: tek bir gövdeyi taze bir nonce ile yeniden imzalayan biri aynı id'yi üretir, dolayısıyla seen set kopyayı faturalandırmak yerine yakalar. Görülmüş ya da süresi dolmuş bir sertifikayı dâhil etmek bloğu geçersizleştirir — böylece bir imza en fazla bir kez ve yalnızca imzalayanının imzalayarak kabul ettiği bir konumda faturalandırılabilir. Bu kural olmasa, bir blok üreticisi başkalarının sertifikalarını yeniden dâhil edebilir ya da kasten geciktirerek onların underwriter'larının fonlarını yakabilirdi. TTL'ler konsensüsle sınırlıdır, dolayısıyla seen set budanabilir kalır.
4. Türlenmiş Durum Erişimi#
Yalnızca tam okumaları destekleyen bir fold, popüler her sözleşmeyi sıraya sokardı: tek bir AMM havuzuna dokunan bin sertifika, bir uygulama ve 999 atlama verirdi. Zycord'un yanıtı şudur: eşzamanlılık, sözleşme yazarı tarafından, slot bazında, sertifika biçiminin kendisinde bildirilir. Üç erişim disiplini vardır:
Tam. SLOAD tarzı: okuma, slotun değerini hesaplamaya döndürür ve sertifikayı ona sabitler. Keyfî mantık; sıcak slotlarda çatışmalar; uygulama sıralayıcılarının alanı (§6).
Korumalı delta. Sertifika slot üzerinde bir yüklem ileri sürer — balance ≥ 10 — değeri hesaplamaya okumadan — ve işaretli bir delta yazar — balance += −10. Fold yüklemi mevcut duruma karşı denetler ve deltayı uygular. Aynı slota yapılan herhangi bir sayıdaki korumalı borç ve alacak değişmelidir: herhangi bir sırada uygulanırlar ve atlama yalnızca bir koruma gerçekten başarısız olduğunda (gerçek bir bakiye aşımı) olur, bakiye yalnızca değiştiğinde değil. Bu tek disiplin transferleri, arz tavanlı mint'leri, ödenekleri ve kasa paylarını kapsar; yani zincir üzerindeki yazmaların ezici çoğunluğunu.
Saf delta. Korumasız, işaretli bir delta. Asla çatışamaz ve asla atlanmaz. Bahşişler, sayaçlar, biriktiriciler, ödül dökümleri.
Modeli sağlam tutan kural: korumalı değerler hesaplamaya akmamalıdır. Bir ileri sürüm hiçbir şey döndürmez; bir delta hiçbir şey okumaz. Dolayısıyla yeniden yürütme, bildirilen okumaların saf bir fonksiyonu olarak kalır ve durumsuz geçerlilik (§2) korunur. Bu fikrin soyu eski ve sağlamdır: veritabanlarındaki emanet işlemleri, işlemsel güçlendirme, CRDT'ler [9][10][11]. Ne var ki mevcut zincirler değişmeliliği en iyi ihtimalle tek bir düğümün zamanlayıcısının içinde kullanır; Zycord onu düğümler arasındaki eşzamanlılık sözleşmesi hâline getirir, sertifika biçimiyle zorunlu kılar ve sigorta ekonomisiyle fiyatlandırır.
§12'nin dayattığı, aynı mertebeden ikinci bir kural: gizli bir değer tutan hiçbir slot, üçüncü taraf koruması kabul etmez. Gizli olması gereken bir bakiyeye karşı sonucu herkesçe gözlemlenebilen — uygulandı ya da atlandı — bir koruma, bir bakiye kâhinidir: balance ≥ x gönderin, fold'u izleyin, ikiye bölerek arayın; log₂(bakiye) deneme, bağlanmayı hiç açmadan sayıyı okur. Çözüm yapısaldır, istatistiksel değil. Gizli değer yalnızca sahibinin imzasıyla harcanabilen one-shot hücrelerde yaşar; bütün amacı yabancıların bir slota güvenle dokunabilmesi olan korumalı delta disiplini ise değerleri açık olan slotlara ayrılmıştır. Dolayısıyla çekme tarzı ödemeler — ödenekler, abonelikler, kasa süpürmeleri — yalnızca şeffaf rayda vardır (§12).
Bu kuralı uygulamak, fold'un gizli bir slotu açık olandan ayırt edebilmesini gerektirir; düz bir tabloda ise bunu bakarak yapamaz: sıkıştırılmış bir bağlanma ile bir u256 bakiye, ikisi de 32 bayttır. Bu yüzden gizli değerli bir hücre, rastlantı eseri bir bağlanma tutan sıradan bir hücre değildir; ayrı bir hücre türüdür, yalnızca yerel korumalı işlem tarafından yaratılır (§12) ve adres uzayının ayrılmış, türetilebilir bir bölgesinde yaşar; böylece bir slotun disiplini adresinin bir fonksiyonu olur ve her şey gibi baytlardan denetlenebilir. Bu olmasa, bir bağlanma slotuna — hata ya da kötü niyetle — yöneltilmiş korumalı bir delta, fold'a bir u256'yı bir eğri noktası kodlamasına ekletirdi: aritmetik denetimleri geçer, sonuç bir bağlanma değildir ve hücre harcanamaz hâle gelir. Sessizce yok edilen değer, tam olarak §3'ün hazırlama adımının önlemek için var olduğu şeydir ve hücre türü, bu örneği de önlemesini sağlayan şeydir.
İki ilkel daha modeli tamamlar:
Bir kez yazılan hücreler. Zincirde hiç görünmemiş bir adres ∅ durumundadır; ilk yazma onu saklanmış hâline getirir; anahtarından gelen bir imza ise onu kalıcı olarak harcanmış hâline getirir. Taze bir hücreye yazmak tanımı gereği çatışmasızdır, dolayısıyla yeni türetilmiş bir adrese ödeme yapmak sıfır çekişmeli hızlı yoldur. Ağın kimerik mirası budur [8]: sözleşmeler için hesap tarzı kalıcı hücreler, ödemeler için UTXO tarzı one-shot hücreler, tek bir defterde. Harcanmış bir hücrenin altındaki değerler, onu harcayan blok reorg ufkundan daha derine gömüldüğünde sıkıştırılabilir — bu, bir kesinlik aygıtı değil, onay derinliğidir, çünkü başlangıç era'sının beklenecek bir kesinliği yoktur. Adresi harcanmış olarak kaydeden kayıt girdisi ise asla sıkıştırılmaz: adresin diriltilmesini engelleyen odur ve protokolün dürüst açık sorunudur, her nullifier kümesi tasarımıyla paylaşılan. §12'nin stealth çıktıları bu raya değişmeden biner ve kaydı, şeffaf ödemelerin zaten büyüttüğü hızda büyütür: harcama başına bir girdi, gizli olsun ya da olmasın.
Sıfır yokluktur. Hiç yazılmamış bir slot ile sıfıra yazılmış bir slot aynı slottur: sıfır yazmak hücreyi siler ve olmayan bir hücreyi okumak sıfır verir. Bu bir uygulama kolaylığı değil, bir konsensüs gereğidir ve iki kez birden yük taşır. Bir korumanın ya da bir tam okumanın, slotun var olup olmadığını sormaksızın 0 adını verebilmesini sağlayan odur — belirsizliği giderecek üçüncü bir yanıt yoktur. Ve state root'u, onu üreten geçmişin değil, durumun bir fonksiyonu olarak tutan odur: boşaltılmış bir hücre açık bir sıfır olarak oyalansaydı, aynı bakiyelere farklı yollardan varan iki düğüm farklı köklere bağlanırdı; bu da defter tutma yoluyla gelen bir zincir bölünmesi olurdu.
Bu, §12'yi keskin bir kenarla birlikte kısıtlar. Bir Pedersen bağlanması vG + rH genelde sıfır dizesi değildir, dolayısıyla gizli bir bakiye aritmetik yoluyla yok hâline gelmez ve sahibinden başka kimse onun boş olduğunu söyleyemez; kalıcı gizli slotlar sonsuza dek sıkıştırılamaz olurdu — korumalı rayın yalnızca one-shot hücrelerden oluşup harcanarak ölmesinin bir nedeni daha budur; sıfır-yokluktur'un sağlaması hiç gerekmediği bir geçiş. Keskin kenar şudur: v = 0, r = 0 grubun etkisiz elemanıdır ve bir Ristretto kodlamasında etkisiz eleman otuz iki sıfır bayttır — tam da yokluk anlamına gelen dize. Bir bağlanma silmeyle asla çakışmamalıdır, bu yüzden etkisiz eleman geçerli bir bağlanma değildir: korumalı işlem onu girişte reddeder, bir eğri noktasının zaten gereksindiği kanonik kodlama denetimlerinin yanı sıra (kanonik olmayan alan elemanları, torsiyon bileşenleri); referans H ise türetimi yayımlanmış bir NUMS noktasıdır. "Bayt eşitliği tamdır" (§3), noktalar hakkında ancak bunlar sağlandığında geçerli bir savdır.
Epoch beacon. Programlar ortam değerlerini (zaman damgası, yükseklik) doğrudan okumamalıdır; bu, yürütmeyi bildirilen okumalardan başka bir şeyin fonksiyonu yapardı. Bunun yerine protokol, epoch başına bir kez ayrılmış bir slota bir epoch beacon yazar ve programlar onu başka herhangi bir slot gibi okur, ideal olarak bir aralık koruması ile (epoch ∈ [e, e+2]); bu da blok başına bayatlama olmadan zaman farkındalığı sağlar.
5. Sigortalanmış Sertifikalar: Her Çatışmanın Bir Sahibi Vardır#
Atlama bedava olmamalıdır, yoksa mempool boğulur: bir saldırgan aynı girdiye karşı binlerce geçerli sertifika yayımlayabilir, blokları doldurabilir ve yalnızca biri için ödeme yapabilirdi. Ama atlanan sertifikalar gönderenin bakiyesine hiç dokunmadı, dolayısıyla gönderene fatura edilecek bir şey yok; ücret slotu tam da bayat girdinin kendisi. Zycord'un yanıtı: underwriter'sız sertifika yoktur — teminatlı fonları onun hesabını veren bir taraf.
Üstlenilmenin üç yolu vardır; üç görünümde tek bir mekanizma:
- Kendini sigortalayan. Gönderen, yükümlülük altında olmayan bir hücreden küçük bir depozito ekler. Önceden hiçbir şey kiralanmaz: fold, depozitoyu sertifikanın bloktaki konumunda ayırır (§3'teki taslak bu tesisatı atlar) ve depozitosu çoktan tüketilmiş hâlde uygulamaya ulaşan bir sertifika düşürülür — faturalandırılmaz, görüldü olarak işaretlenmez, taze bir depozitoya karşı yeniden gönderilebilir — böylece dürüst kullanıcılar kendi depozito hücrelerindeki yarışlarda hiçbir şey kaybetmez. Depozitosu sağlamken gerçekleşen bir atlama onun bir kısmını yakar. Buna karşılık yayımlamak hiçbir şeye mal olmaz, dolayısıyla mempool konsensüsle değil aktarım politikasıyla sınırlanır: düğümler underwriter başına ne kadar tutacaklarını sınırlar; Bitcoin'den beri her mempool'daki aynı iş bölümü. Bu, izin gerektirmeyen tabandır: herkes her zaman hiçbir karşı taraf olmadan işlem yapabilir. Aynı zamanda başlangıç era'sındaki tek moddur (§14) ve genesis'i asgari tutan da budur. Depozito hücresi açıktır ve gönderenindir; bu da kendini sigortalamayı, imzaladığı her sertifikaya iliştirilmiş kalıcı bir tanımlayıcı hâline getirir. Şeffaf ödemeler için bu, ödemenin zaten açık etmediği hiçbir şeyi açık etmez; korumalı bir ödeme (§12) içinse, ödediği stealth çıktısını boşa çıkarır ve §12 tam da bu nedenle eş imzalamaya döner.
- Eş imzalanmış. Teminatlı bir underwriter sertifikayı taze duruma karşı denetler,
(certificate, ttl, seq)'i eş imzalar ve atlama sorumluluğunu üstlenir. Karşılığında gönderenden zincir dışında ücret alabilir ve eş imzası bir üründür: bir underwriter'ın kendi sermayesinin arkasında durduğu bir ön onay. Bu roldeki hiçbir şey, bir sertifikanın neyi hareket ettirdiğini görmeyi gerektirmez: bayatlık, tutarların değil, hücrelerin — canlı ya da harcanmış — bir özelliğidir; dolayısıyla bir underwriter, korumalı bir sertifikayı şeffaf olanı fiyatlandırdığı gibi fiyatlandırır, değere ilişkin bir güven kendisine verilmeksizin.
Bu vaadin bulandırmasına izin verilmemesi gereken iki şey var, çünkü makale bunları daha önce bulandırdı. Protokolün bir atlamaya yanıtı, atlama ücretini underwriter'ın depozitosundan yakmaktır — kimseye ödenmeyen bir ceza, ki atlamalara yol açarak kimsenin kâr etmemesini sağlayan da budur. Göndereni tazmin etmek başka bir işlemdir: bu, underwriter'ın ticari vaadidir ve bu tasarım onu henüz bir konsensüs mekanizması olarak belirtmemektedir. Onu böyle yapmak bir ifade meselesi değildir — eş imzada bildirilen bir poliçe değeri, gönderen olmayan adlandırılmış bir lehtar (yoksa ürün, sigorta dolandırıcılığına açık bir davetiyedir) ve bir teminatın iki kez satılamaması için zincir üzerinde izlenen toplam risk gerekir. Bunlar var olana dek "teminatım öder", bir underwriter'ın öne sürdüğü ve piyasanın fiyatladığı bir iddiadır, fold'un uyguladığı bir kural değil; makale de belirsizliğin ürünü satmasına izin vermek yerine bunu söylüyor.
- Zorunlu. Sansüre direnç yolu (§7), bir kullanıcı depozitosuyla üstlenilir ve benzersiz biçimde uygulanması garanti edilir. Ekonomi, iki tür yanlış davranış arasında asimetriktir ve asimetri işin özüdür:
Nesnel kusurlar cezalandırılır. Bir underwriter, tam okumaları çatışan iki sertifikayı eş imzalarsa (aynı slot, aynı bildirilen değer, örtüşen TTL'ler), iki imza kendi kendine yeten, zincir üzerinde bir çift imza kanıtıdır; herkes bunları gönderebilir ve teminat kesilir. Aynı şekilde, durumsuz geçerliliği sağlamayan bir sertifikayı eş imzalayan bir underwriter (bozuk bir imza, yanlış bir yürütme) saf yeniden yürütmeyle cezalandırılır: sertifikanın kendisi sahtekârlık kanıtıdır (§9).
Öznel kusurlar asla cezalandırılmaz. Aynı slot üzerinde yarışan farklı iki underwriter kanıtlanabilir hiçbir kusur işlememiştir; fold sırasında sonra gelen küçük bir atlama ücreti yer, o kadar. Yavaş, çevrimdışı ya da güvenilmez underwriter'lar fon değil, uygunluk ve itibar kaybeder. Gecikme el koymaya dönüştüğünde ağlar ölür; Zycord yalnızca baytlardan kanıtlanabilene el koyar.
Ve fatura, sertifikanın adını andığı bir tarafa iner. Bu bölümün başlığı bir slogan değil bir teoremdir ve kenarlarıyla birlikte ifade edilmeyi hak eder. Faturalandırılmış bir atlama daima şu üçünden tam olarak biridir: başarısız olan okuma ya da yazma, anahtarı sertifikayı imzalamış bir adresin altındadır; ya da aynı varlığın bildirilmiş mint edicisinin bir mint'i başka bir mint ile yarışmaktadır, ki o da imzalamıştır; ya da sertifika imzalandıktan sonra kendi sahibi tarafından emekliye ayrılmış (RETIRE, §11) bir one-shot adrese yapılan bir alacaktır. Sertifikanın adını anmadığı hiçbir taraf onun faturalandırılmasına yol açamaz. Faturayı nedeninden ayıran yalnızca üçüncü durumdur ve o da yapısı gereği sınırlıdır: yalnızca one-shot hücreler emekliye ayrılabilir, dolayısıyla kalıcı bir adres yayımlayan bir alacaklı hiçbir yüzey sunmaz; bir sertifika en fazla sabit sayıda adresi emekliye ayırabilir (§13), ki bu da tek bir emeklilik patlamasının kaç uçuştaki ödemeye dokunabileceğini sınırlar; ve atlama ücreti ödenmek yerine yakılır, dolayısıyla kimse onu tetikleyerek kâr etmez.
Teminat boyutlandırması tek bir eşitsizliği izler: bir underwriter'ın teminatı, tek bir TTL penceresi içinde biriktirebileceği azami atlama sorumluluğunu aşmalıdır ve teminat çözme, sahtekârlık kanıtı penceresinden daha uzun sürmelidir; böylece kimse yanlış davranıp çekilip ortadan kaybolamaz.
6. Uygulama Sıralayıcıları#
Korumalı deltalar ödemelerdeki çekişmeyi çözer. Geriye sıcak durum üzerindeki tam okuma mantığı kalır — bir emir defteri, bir AMM havuzu — ki orada yarışan iki dürüst underwriter yine atlamalar üretir. Protokolün yanıtı, sözleşmenin kendi serileştiricisini seçmesine izin vermektir: bir sözleşme, zincir üzerinde, teminatlı bir sıralayıcının anahtarını kaydedebilir; bundan sonra sözleşmenin tam okuma yolunu yalnızca o sıralayıcı tarafından eş imzalanmış sertifikalar kullanabilir.
Sıralayıcı, uygulama ekibi tarafından işletilen sıradan bir sunucudur — websocket'ler, kuyruklar, otomatik ölçekleme, her türlü web-2 makinesi — ve yalnızca canlılık için güvenilir, asla güvenlik için değil. Durumu tahrif edemez: kurulum sırasında girdiler hakkında yalan söylerse, sertifika kanonik fold'a karşı basitçe atlanır ve yalan onun teminatına mal olur. Sağladıkları:
Serileştirme. Kısa TTL'lerle uçuştaki sertifikalara slot kiralar ve her sertifikayı bir öncekinin bildirilen çıktıları üzerine zincirler (eş imzalarını seq ile numaralar; fold'un tam sıralaması, proposer'ın karıştırmasından bağımsız olarak hattının sırayla işlenmesini garanti eder). Sıcak slot çekişmesi, zincire görünmeyen zincir dışı bir zamanlama problemine dönüşür.
Toplu sertifikalar. Aynı kod yolundan geçen N işlem, toplanmış okuma/yazmalarla tek bir sertifikaya katlanır; içerideki ara yazmalar kısa devre edilir ve tek bir SIMT yükü olarak doğrulanan N alt yürütme kalır. GPU tezi burada somutlaşır: serileştiren varlık, aynı zamanda işi paralel donanımın istediği biçime paketleyen varlıktır ve bunu yapmak için paralel gas piyasası üzerinden ödeme alır (§8).
Atomik birleştirilebilirlik. İki uygulamaya yayılan bir işlem, her iki sıralayıcı tarafından zincir dışında birlikte kurulur (slot kiralamaları üzerinde iki aşamalı bir işleme) ve zincire her iki eş imzayı taşıyan tek bir sertifika olarak iner; yapısı gereği atomiktir. Uygulamalar arası eşgüdüm, eşgüdümün ucuz olduğu yerde gerçekleşir; zincir yalnızca sonucu görür.
Dürüst açıklama: bir sıralayıcı, uygulamasının emir akışını ilk gören taraftır ve dolayısıyla o uygulamanın MEV'i için doğal mekândır. Zycord bu takası açıkça yapar: uygulama, MEV'ini blok proposer'larına sızdırmak yerine kendisi yakalar ve §7 bunun ima ettiği gücü sınırlar. Çıkışı garanti eden aynı zorunlu yol, çıkarımı da disipline eder: bir sıralayıcının muamelesinden hoşlanmayan bir kullanıcı, yalnızca gecikme ödeyerek onu tümüyle atlayabilir.
7. Uygulama Garantili Zorunlu Dâhil Etme#
Tek kapısı sıralayıcısı olan bir sözleşme, sıralayıcı sansür uygularsa bir hapishanedir. Bu yüzden her kullanıcının kimsenin iznine ihtiyaç duymayan yavaş bir yolu vardır:
Bir kullanıcı (ya da herhangi bir aktarıcı) durumu açık fold'dan yeniden kurar, bir sertifika hazırlar, bir depozito ekler ve zorunlu kuyruğa gönderir. Proposer'lar kuyruktaki sertifikaları F blok içinde dâhil etmek zorundadır (§13). Dâhil edildiği konumda fold, okumalarını mevcut duruma karşı denetler; geçerliyseler fold slotları üzerinde deterministik bir kiralama verir ve uygulamayı D blok ileriye zamanlar. Kiralama süresince, o slotlara dokunan eş imzalı sertifikalar ondan sonra sıralanır. Dolayısıyla zorunlu sertifika atlanamaz: kabul, uygulanma demektir.
D ödemesiz süresi, dürüst sıralayıcının uçuştaki hattı içindir — onun kiralanmış slotlara dokunmayan kısmı. Onlara dokunan her şey, eş imzalı ya da kendini sigortalayan fark etmeksizin, zorunlu sertifikadan sonra sıralanır; "atlanamaz"ı bir temenni değil bir gerçek yapan da budur: okumaları tüm ödemesiz süre boyunca korunan bir sertifika, o süre içinde bayatlayamaz. Yazmalar bildirildiği için uygulama sonrası durum öngörülebilirdir; dolayısıyla bir sıralayıcı, henüz uygulanmamış bir zorunlu sertifikanın üzerine kesinlikle zincirleyebilir.
Bir kiralama yalnızca sertifikanın yetkisi altındaki slotları kapsayabilir. Bu, mekanizmanın bedava vermediği ve tasarımın geri kalanının onsuz ayakta kalamayacağı bir kısıttır. Bir okuma bildirmek hiçbir imza gerektirmez — yalnızca yazmalar yetkilendirme türetir — dolayısıyla bu kural olmasa, herkes başkasının slotları üzerinde okumalar bildiren zorunlu bir sertifikayı kuyruğa sokup bir depozito pahasına o slotları D blok boyunca dondurabilirdi. Sözleşme başına kota da bunu sınırlamaz, çünkü yerel ödemeler hiçbir sözleşmeye ait değildir. Bu nedenle bir kiralama yalnızca sertifikanın yazma hakkı olan slotlar üzerinde kabul edilebilir; bu da fold'un zaten uyguladığı aynı yetki sınamasının bir adım önce kullanılmasıdır.
Daha başka taciz önleyici sınırlar: sözleşme başına, epoch başına bir kota; dayattığı maliyeti karşılayan bir depozito; kiralanmış slotlar serbest bırakılana dek başka zorunlu girdileri reddeder.
İki sonuç bunu bir özellikten hayatta kalma mekanizmasına yükseltir. Birincisi, sansür tersine döner: sansürcüye pahalıya patlar (kaybedilen ücretler, etrafından dolaşan kullanıcılar) ve ağa hiçbir şeye mal olmaz. İkincisi, sıralayıcısı ortadan kaybolan bir sözleşme — ya da tüm underwriter sınıfı saldırıya uğrayan bir zincir — yalnızca zorunlu moda geriler: yavaş, pahalı ve canlı. Hiçbir durum asla öksüz kalmaz ve hiçbir işletmeci güvenlik için yük taşımaz. Kurucusundan uzun yaşamak üzere tasarlanmış bir ağ için önemli olan özellik budur.
8. İki Piyasa: Sıralı ve Paralel Gas#
Bir zincir, farklı ölçeklenebilirlik sınıflarından üç kaynak tüketir — veri, doğrulama, değişim — ve bunları tek bir piyasada fiyatlandırmak, bir sıfır bilgi kanıtı doğrulamasının bir depolama yazmasıyla açık artırmada yarışması demektir. Zycord ücreti birbirinden bağımsız iki piyasaya böler:
Sıralı gas fold işlemlerini fiyatlandırır: okuma denetimleri, yazmalar, kiralamalar. Kıt kaynak odur, her düğümün sırayla çalıştırdığı tek döngüdür ve buna göre fiyatlandırılır.
Paralel gas doğrulamayı fiyatlandırır: imza denetimleri, yeniden yürütme birimleri, baytlar ve ağır önderlemeler (kanıt doğrulama, imza toplama, post-kuantum şemalar). Bol bir kaynaktır, arzı ağa eklenen her çekirdek ve GPU ile büyür ve blok tavanı yüksek ve ucuz belirlenmiştir.
Her iki piyasa da EIP-1559 biçimindedir [15], her biri kendi biriminde: taban ücret yakılır ve öncelik ücreti bloğun üreticisine ödenir — uygulanan sertifikalarda ve yalnızca onlarda. Atlanan bir sertifikanın ücreti tümüyle yakılır ve kimseye ödenmez; bu, ücret çizelgesinin bir ayrıntısı değil, tüm ekonomik modelin yük taşıyan kuralıdır. Bir atlama bahşiş verseydi, bir bloğun neyi içereceğine karar veren taraf, başkalarının başarısızlıklarını düzenlediği için ödeme alırdı ve kazanmanın en ucuz yolu iş dâhil etmek değil atlama çiftçiliği olurdu. Yakma bunu tersine çevirir: bir atlama tavan alanı tüketir ve hiçbir şey getirmez, dolayısıyla geliri en üst düzeye çıkaran bir üretici, uygulanmayı en üst düzeye çıkarmaktadır ve atlamalara yol açmaya yalnızca kayıtsız değil, etkin biçimde karşıdır. Sıralı taban ücreti yakmak, tek kıt döngüdeki tıkanıklığı deflasyonist kılar (§14.2). Paralel taban ücreti yakmak ise proposer'ı ucuz şeridi hangi ağır sertifikaların dolduracağına kayıtsız tutar, böylece doğrulama şeridindeki öncelik kayıt dışı satılamaz. Bu ayrım, çok boyutlu ücret tasarımlarının yönünü izler [18] ve onu tümüyle ayrık piyasalara kadar götürür. Hiçbir piyasanın karar vermediği şey, kıt kaynağın ne kadar olması gerektiğidir; o bir tavandır ve §8.1 onu hareket ettiren kuralı verir.
Sonuç, bir değişmez olarak ifade edilmiş tasarım hedefidir: ağır kriptografi, ekonomik yapı gereği ağı etkilemez. Büyük bir kanıtı doğrulayan ama iki slot yazan bir sertifika, hemen her şeyi ucuz piyasada öder. Zycord böylece, tek piyasalı zincirler için fazla ağır olan kriptografik protokollerin ekonomik olduğu uzlaşma katmanı olarak konumlanır. Aynı piyasa, sıralayıcılara işi biçimlendirdikleri için ödeme yapar: bir sıralayıcı N işlemi tek bir toplu sertifikada birleştirir, onun için tek bir paralel teklif öder ve kullanıcılarından N için ücret alır — aradaki fark, işi SIMT biçimine sokmanın ücretidir (§6).
8.1 Esnek Sıralı Tavan#
Bir ücret piyasası kıtlığı fiyatlandırır; ne kadar kıtlık olması gerektiğine karar vermez. Bu soruya verilen önceki iki yanıt da, karşıt yönlerde, başarısız oldu. Sabit bir tavan, benimsenmeyi kullanıcıların kaybettiği bir açık artırmaya çevirir: Bitcoin'in blokları dolduğunda ücretler 50 doları aştı ve sıradan ödemeler, yalnızca alanı satanın yararına, zincirden fiyatla dışlandı. Talebi olmayan açık bir tavan ise öbür yönden başarısız olur: büyük bloklu çatalları kimsenin kullanmadığı kapasite satın aldı ve bunu güvenlikle ödedi, çünkü ücretler odadan değil hacimden gelir. Bu yüzden Zycord'un tavanı ne sabittir ne de oylanır — yazarı onu çatallamak için orada olmayacak bir ağ, rutin büyümeyi bir yönetişim olayı gibi ele alamaz; üstelik bir oylama bir tutamaktır: madenciler arzı kısıtlamaktan, büyük işletmeciler onu küçük düğümlerin izleyebileceğinin ötesine genişletmekten kâr eder. Tavan, ölçülen talebin bir konsensüs fonksiyonudur; blok 0'dan itibaren genesis'tedir ve kimse tarafından hareket ettirilmez.
Kuralın üç parçası vardır, her zaman ölçeğine bir tane. Bir blok içinde, her piyasanın bir hedefi T ve sert bir esnek sınırı 2T vardır; taban ücret, §8'in EIP-1559 biçiminde, blok başına sınırlı bir kesirle dengeye doğru adım atar — sınırlı, çünkü sınırsız ayarlamanın yakınsamak yerine salınım yaptığı bilinmektedir. Epoch'lar boyunca, sıralı hedef talebi izler: T ← clamp(2·median_applied(e), T − T/Δ, T + T/Γ), genesis değerinde tabanlanmış olarak — burada median_applied yalnızca uygulanan sertifikalardaki sıralı gas'ı sayar. Atlanan sertifikalar ücretlerini yakar ve hiçbir şey kaydettirmez, dolayısıyla tavanı yükseltmenin tek yolu uygulanmayı kazanmaktır: sürekli, çatışmasız, taban ücret yakan kullanım. Büyümeyi zorlamak bir saldırgana, organik benimsenmenin herkese mal olduğunun tam olarak aynısına mal olur; yani mekanizma ikisini ayırt edemez ve etmesi de gerekmez. Büyüme ayrıca bir epoch sağlık sinyaline bağlanmıştır — gözlenen rakip başlık oranı bir eşiğin altında kalır (Era 0), kontrol noktaları zamanında kesinleşir (Era 1'den itibaren) — böylece kapasite, yayılımın gösterilebilir biçimde taşıdığının önüne asla geçmez. Bayat bir blok, tam da zincirin kaydetmediği olaydır, dolayısıyla sinyal tek dürüst yoldan içe aktarılır: başlıklar, ücretsiz olarak, yakın zamandaki rakip başlıklara atıfta bulunabilir; atıf gerçek proof of work gerektirirken sinyali bastırmak, tek bir dürüst proposer'ın geri getirdiği atıfları neredeyse her proposer'ın atlamasını gerektirir. Asimetri, kapıyı ihtiyata doğru yatırır ki bir kapının yatması gereken yön odur. Blok başına bir patlama valfi: bir proposer 2T'yi 4T'ye kadar aşabilir; bunun karşılığında bloğun kendisine sağladığını karesel olarak kaybeder — sübvansiyon payını artı bloğun ücretlerini, §14.2'nin çizelgesine karşı, kimseye yönlendirilmeyen kalıcı bir eksik olarak — ve ceza, uygulanmış ve atlanmış toplam sıralı gas üzerinden hesaplanır; böylece fazlalık, indirimli fiyata imal edilmiş çatışmayla doldurulamaz. Taban, üreticinin yalnızca sübvansiyonu değil geliridir, çünkü ikisi birlikte azalmaz: sübvansiyon §14.2'nin eğrisinde genesis değerinin yaklaşık %1,6'sına düşerken bir patlamanın uğruna satın alındığı ücret geliri hiç düşmez; dolayısıyla yalnızca sübvansiyon cinsinden ifade edilmiş bir caydırıcı, tam da fırsatın en büyük olduğu yerde caydırmayı bırakır. Sürekli bir özellik, faydayı izleyen bir şey cinsinden fiyatlandırılmak zorundadır; bu da EIP-1559'un bir bedeli, manipülasyonun kazandırdığı değere bağlamak için öne sürdüğü savdır. Genesis'te bu neredeyse hiçbir şeyi değiştirmez, çünkü ücretler sıfıra yakındır. §14.1'in hazine payı, indirilmemiş sübvansiyondan alınır ve asla kaybedilmez, çünkü patlama üreticinin tercihidir ve hazine buna taraf değildir. Gerçek dalgalanmalar geçişi anında satın alır ve epoch denetleyicisini bilgilendirir; spam ise bir ceza satın alır. Emsal, Monero'nun ceza-medyan mekanizmasıdır [19]; onun belgelenmiş takılması — tipik iş biriminin medyana yaklaştığında büyümenin donması — yapı gereği önlenmiştir, çünkü toplu sertifikalar (§6) tipik birimi hedefe göre küçük tutar; oran sınırları ise uyarlanabilir limit soyunu izler [20]. Paralel tavanın bu özene hiç ihtiyacı yoktur: sıralı hedefin sabit ve yüksek bir katı olarak sabitlenmiştir ve onun büyümesini devralır, ki bu da §8'in değişmezinin kapasite olarak yeniden ifadesidir.
Çekişmeyi mekanizmadan okuyun. Kullanıcının ücreti tabana çekilir, çünkü sürekli tıkanıklık, tanımı gereği, tavanı yükselten ve ücreti geri indiren sinyaldir — Bitcoin'in kalıcı açık artırma dengesine ulaşılamaz. Üretici, ağ gençken sübvansiyonla, olgunlukta ise hacimle ödenir, asla kıtlıkla; yakma, her tıkanıklık dönemini üreticinin elindeki coin'e yazar ve §8 zaten dışlamayı değil uygulanmayı geliri en üst düzeye çıkaran strateji hâline getirmişti. İki kez birden bir dürüstlük: esneklik yalnızca kapasitenin benimsenmenin durma nedeni olmamasını garanti eder — talep imal etmez, büyük bloklu çatalların kanıtladığı gibi — ve büyüyen bir tavan durumun da büyümesine izin verir; taze slot yazmalarının sıralı gas'ta deltaların üzerinde fiyatlanmasının nedeni budur: fold'un içinde yaşadığı düz tablo, onu besleyen tavandan daha hızlı genişlemez. Bundan tek bir kalibrasyon kuralı çıkar ve ihlali sessiz olduğu için ifade edilir: sıralı hedefin bayt tavanına genesis oranı, ağın kurulduğu trafiğin yoğunluğunun altında olmalıdır ki sıradan ödemelerle dolu bir blok taban ücreti düşürmek yerine yükseltsin. Kendi tasarım yüküne ters yanıt veren bir piyasa hiçbir şeyi fiyatlandırmaz ve bu oran, dondurmadan önce ölçülen trafikten belirlenir.
Era'lar boyunca kapasite. Sertifika sayısı ve bayt tavanları, sıralı hedefin yanında sabit durmak yerine onunla birlikte ölçeklenir: genesis'te üçü de birbirinin iki katı içinde bağlayıcıdır, dolayısıyla sabit olanı tek bir ikiye katlanmadan sonra gerçek sınır hâline gelir ve esnek olanı süs bırakır. Bunların ardında statik kapasiteler durur: bir bloğun merkle derinliğini sabitleyen sertifika listesi genişliği ve bir bloğun ulaşabileceği bayt kapasitesi, altındaki taşıma sabitleriyle birlikte — bir blok parçalar hâlinde yolculuk eder, dolayısıyla hiçbir tek ağ mesajı bir bloğu sınırlamaz. Liste genişliği genesis'te tüm eğri için boyutlandırılır (2²⁵ sertifika; sonradan yeniden sabitlemek tek bir zincirde iki merkle genişliği bırakırdı ve sanal dolgu, boşluğu bedava kılar). Bayt kapasitesi başlangıç ağı için boyutlandırılır ve era sınırlarında yeniden sabitlenir — zaten sert çatallardır (§14) — sağlık kapısının ölçtüğü yayılıma karşı; asla bir era'nın içinde, asla oylamayla. Bu merdivenin hizmet ettiği eğri Γ'dan çıkar: hedef, tam ve sağlıklı blokların her yılında en fazla 2× katlanır, dolayısıyla saniyede ~90 uygulanan sertifikalık genesis tavanı (30 saniyelik aralık başına bir §15 bloğu), sürekli talebin yedi yılında saniyede ~11.000'e, onda ~90.000'e ve on dördün altında, 2²⁵ liste genişliğinin sabitlediği saniyede ~1,1 milyon'a ulaşır — hiçbir era'nın hareket ettirmediği tek duvar, dolayısıyla merdivenin bir basamağı değil sonu. Birim sertifikalardır, ödemeler değil: bir sertifika bir ödeme taşır ya da bir sıralayıcının içine topladığı N ödemeyi (§6), dolayısıyla her rakam işlemler için bir alt sınırdır, onlar hakkında bir iddia değil. Koşullar tam olarak üçtür ve her biri yukarıda zaten bir mekanizmadır: talep tam blokları sürdürmelidir, çünkü T'yi yükselten tek girdi uygulanan gas'tır; yayılım sağlık kapısını açık tutmalıdır, çünkü kapının kapandığı epoch'ta büyüme esirgenir; ve yeniden sabitlemeler era'lara denk gelmelidir, çünkü aralarında duvar bayt kapasitesidir. Hesaplama bir koşul değildir — fold, eğrinin uzak ucunu ölçülmüş tek bir çekirdekte aşar (§15) ve doğrulama, ağın sahip olmadığı donanımla ölçeklenir (§2). Bant genişliği ise koşuldur: gövdeler zincir verisidir (§13) ve örnekleme (§9) doğrulamayı böler, veriyi asla; dolayısıyla her düğüm her baytı taşır ve eğrinin tepesindeki bir üretici, yalnızca bant genişliği bakımından veri merkezi sınıfındadır — üreticiler için kabul edilmiş bir son durum, başka hiç kimse için değil, çünkü doğrulamanın düğüm başına maliyeti ters yöne gider (§9). Bant genişliği bağlayıcı olmadan önce durum bağlayıcı olur: harcanmış adres kaydı (§4), one-shot harcama başına bir girdi büyür; saniyede 10⁵ sertifikada bu yılda 10² terabayt mertebesindedir ve bu da §4'ün bildirdiği açık sorunu, duran bir gündem maddesinden eğrinin zamanladığı bir işe dönüştürür.
Sabitler (genesis, örnekleyici, §13'teki gibi): büyüme böleni Γ = epoch başına 512 (tavan, tam bloklarla geçen bir yılda en fazla ikiye katlanabilir); azalma böleni Δ = 1024 (atıl kapasite ~2 yılda yarılanır, asla genesis'in altına inmez); patlama sınırı 4T, sınırda üreticinin sübvansiyon payının ve bloğun ücretlerinin kaybı (§14.1'in hazine payı indirilmemiş sübvansiyondan alınır ve asla kaybedilmez, çünkü patlama üreticinin tercihidir ve hazine buna taraf değildir); sağlık kapısı: atıfta bulunulan rakip başlıklar epoch başına blokların ≤ %2'si; sertifika listesi kapasitesi 2²⁵ (yapısal, yukarıdaki gibi); bayt tavanı genesis'te 2,5 MB, hedefle birlikte 8 MB'lık yapısal bir bayt kapasitesine kadar ölçeklenir (era'larda yeniden sabitlenir); blok başına imza tavanı genesis'te 6.000, hedefle birlikte ölçeklenir ve herhangi bir imza doğrulanmadan önce denetlenir — doğrulama üzerinde bir sınır, paralel gas fiyatından ayrı tutulur, çünkü tek bir parametre hem işi sınırlayıp hem piyasayı fiyatlandıramaz.
9. Anlık Sahtekârlık Kanıtları ve Örnekleme Yolu#
Geçerlilik bir sertifikanın baytlarının saf bir fonksiyonu olduğundan, geçersiz bir sertifika kendi sahtekârlık kanıtıdır. Onu yeniden yürüten herkes, hiçbir durum ve etkileşimli ikiye bölme oyunu olmaksızın, tek bir mesajla, anında çürütebilir. Başlangıç yapılandırmasında konu en iyi anlamda tartışmasızdır: her düğüm bir bloğu kabul etmeden önce her sertifikayı doğrular, dolayısıyla geçersiz bir sertifika bir itiraza ihtiyaç duyacak kadar uzun yaşamaz. Pencere, doğrulama örneklendiğinde anlam kazanır ve orada bir anlaşmazlık protokolünden çok bir yayılım parametresidir: tek bir mesajın ağı geçmesi için birkaç blok, sertifikayı onaylayan underwriter'a fatura edilir (§5). Alternatifleri karşılaştırın: iyimser rollup'lar hafta süren etkileşimli anlaşmazlıklara ihtiyaç duyar, çünkü itiraz etmek, itiraz edilen adımdaki durumu gerektirir; kanıt tabanlı sistemler anlaşmazlıklardan kaçınır ama yürütmeden kat kat pahalıya mal olan kanıtlayıcılara para öder. Zycord'un sahtekârlık kanıtları, doğrulamanın maliyetine mal olur: ~1× yeniden yürütme.
Bu, yeniden yürütmeye dayalı zincirlerin giremeyeceği ölçeklenme yolunu açar. Ağın, ilkesel olarak, her düğümün her sertifikayı sonsuza dek doğrulamasına ihtiyacı yoktur. Underwriter teminatları yerindeyken doğrulama örneklenebilir: sertifika başına VRF ile seçilmiş bir komite, doğrulanmamış geçersiz bir sertifika olasılığı ihmal edilebilir olacak şekilde boyutlandırılır; her tam düğüm dilediğini denetlemekte serbesttir ve cezalandırmak için tek bir mesaj yeter. Genesis'te herkes her şeyi doğrular; bu ucuz ve paraleldir. Örnekleme yol haritasıdır, başlangıç değil. Ama sektörün eğrisini tersine çeviren yol haritasıdır: düğüm başına maliyet ağ büyüdükçe düşer; oysa yeniden yürütme paradigmasında düğüm başına maliyet, geriye yalnızca veri merkezleri kalana dek işlem hacmiyle birlikte büyür.
10. Makine: cEVM#
Zycord tek bir sanal makine çalıştırır: cEVM, Ethereum'un EVM'inin [2] sertifikalara uyarlanmış bir lehçesi. Bu seçim kasıtlıdır. Projenin yenilik bütçesi durum, eşzamanlılık ve ekonomik model üzerinde harcanır; makine ise sistemdeki en tanıdık şey olmalıdır. Solidity, derleyicileri, denetçileri ve araçları olduğu gibi geçer.
Standart EVM'den farkları:
SLOADbir tam okumaya derlenir (sertifikada bildirilir);SSTOREise bir SET yazmasına.- Yeni işlem kodları
SASSERT(slot, pred)veSDELTA(slot, ±v), korumalı ve saf deltaları açığa çıkarır. BirSASSERTyığına hiçbir şey itmez — korumalar değer döndürmez (§4). TIMESTAMPveNUMBERepoch beacon slotunu okur; başka hiçbir ortam girdisi yoktur.- Gas ölçümü ikilidir (§8): depolama işlem kodları sıralı gas ölçer; hesaplama, calldata ve önderlemeler paralel gas ölçer.
- İşlem biçimi sertifikadır. Ethereum sözleşmeleri kaynak düzeyinde taşınır; ham cüzdan uyumluluğu iddia edilmez ve aksini de öne sürmüyoruz. Taşınmış bir sözleşme tümü-tam modunda çalışır: ilk günden doğru, sıcaksa bir sıralayıcı üzerinden serileştirilmiş. Paralellik slot bazında isteğe bağlıdır ve tipik olarak küçük bir farktır (bir token'ın bakiye haritası
SLOAD/SSTORE'danSASSERT/SDELTA'ya ~30 satırda taşınır). Amiral gemisi özelliğin taşımaları beklemek yerine VM era'sının ilk bloğundan itibaren görünür olması için, makine bir yerel standart kütüphaneyle birlikte etkinleşir — token, bahşiş kavanozu, emanet, hakediş ve karma bir emir defteri/AMM referansı — delta öncelikli yazılmış ve bilinen adreslere önceden dağıtılmış.
11. Makinesiz Varlıklar#
Başlangıç era'sının bir bilgisayara ihtiyaç duymadan önce bir ekonomiye ihtiyacı vardır. Bu yüzden Zycord blok 0'dan itibaren, hiçbir VM devreye girmeden, sertifika işlemleri olarak yerel varlıklar sevk eder: ISSUE (bir kez yazılan bir hücrede arz tavanlı bir varlık id'si oluşturur), MINT (korumalı: minted + Δ ≤ cap), TRANSFER (koruma balance ≥ Δ, eşlenmiş deltalar; saf bir deltaya ya da taze bir one-shot hücreye yöneltilen bir alacak bahşişin ta kendisidir, dolayısıyla bahşiş vermek kendine ait hiçbir işlem kodu harcamaz) ve RETIRE (bir adresi harcamadan yakar: okuma yok, hareket eden değer yok, hücreyi harcanmış olarak işaretleyen saf bir yazma — asıl harcama TRANSFER içinde kendiliğinden olur). RETIRE yerini iki kez hak eder. Hem sıkıştırma ve gizlilik ilkelidir, bir alacaklının işini gören one-shot adresi hemen silmesini sağlar; hem de §5'in atıf teoremindeki tek istisnanın ardındaki işlemdir — üçüncü durum, emeklilik var olduğu için vardır; sertifika biçiminin sertifika başına emekli edilen adresleri sınırlamasının (§13) ve teoremin bu kenarın etrafından dolaşmak yerine onunla birlikte ifade edilmesinin nedeni budur. Küme kapalıdır: bu dördü genesis komut kümesinin tamamıdır, teminatlandırma dâhil diğer her işlem daha sonraki bir era'nın kural kümesiyle gelir (§14) ve §5'in atıf teoremi tam olarak bu yüzeye karşı kanıtlanmıştır.
Tek bir blokta on bin bahşiş alan bir yayıncı, fold'a on bin değişmeli toplama olarak mal olur: sıfır çatışma, sıfır atlama, sıralayıcı yok, makine yok. Daha önceki zincirlerdeki bahşiş kültürleri platform API'lerinin lütfuyla yaşadı ve onlarla birlikte öldü; burada bahşiş bir protokol ilkelidir. Ayrıca, tesadüf değil, sistemin merkezî iddiasının sürekli bir stres testidir. Yerel coin'in arz tavanları burada, şeffaf rayda yaşar, §3'ün denetlenmiş aritmetiğiyle uygulanır ve §12 onlara dokunmaz.
12. Gizli Ödemeler#
Önceki bölümler bir ödemenin tutarını açık kabul eder. Bu bölüm, önceki bölümlerin özelliklerini koruyarak, tutarı gizleme ve alıcıyı tek kullanımlık bir adresin arkasına saklama seçeneğini ekler. Tasarım, türediği sistemlerden daha dardır: aşağıdaki her kısıt, daha genel bir tasarımın daha ağır makineyle yanıtlayacağı bir saldırıyı kapatır.
Neyin gizlendiği ve neyin gizlenmediği. Korumalı bir ödeme tutarını gizler ve alıcısıyla bağını erteler. "Erteler" konusunda kesin olalım: taze bir stealth çıktısı alındığı anda bağlanamazdır, ama halka olmadığından onu daha sonra harcamak, harcanan çıktıyı adlandırır ve çıktıyı adlandırmak, onu hangi önceki ödemenin fonladığını açık eder. Bağlanamazlık ilk harcamaya kadar geçerlidir ve orada biter; bir silme değil, bir gecikmedir. Tasarım, gönderenin grafikteki konumunu da gizlemez: sertifikalar açıkta imzalanır, üstlenilir ve sıralanır, dolayısıyla bir gözlemci bir ödemenin gerçekleştiğini ve onu kimin üstlendiğini görür — tutarı görmez ve bir harcama açık edene kadar, bir alıcının çıktılarından hangisinin nereye gittiğini de görmez. Dürüst tanım, açık bir grafik üzerinde tek kullanımlık alıcı adresleriyle Gizli İşlemler'dir ve grafik, çıktılar harcandıkça geriye dönük olarak kimliksizliği bozar. Gönderen tarafında belirsizlik — halka imzaları, geçmiş çıktılar üzerinde üyelik kanıtları — kapsam dışıdır: bir halka başkalarının çıktılarına atıfta bulunur, bu da geçerliliği geçmişin bir fonksiyonu yapar ve §2'nin durumsuzluğu, protokolün elden bırakmadığı özelliktir. Monero'nun tehdit modeli farklı bir protokol gerektirir.
Korumalı çıktı. Korumalı bir ödeme, adresi bir stealth adres olan taze, bir kez yazılan bir hücre (§4) yazar: gönderen, alıcının yayımlanmış görüntüleme anahtarından ve kendi geçici anahtarından, yalnızca alıcının tanıyabileceği ve yalnızca alıcının harcama anahtarının imzalayabileceği tek kullanımlık bir adres türetir. Hücrenin değeri bir Pedersen bağlanmasıdır, C = vG + rH; yanında v ∈ [0, 2⁶⁴) olduğuna dair bir aralık kanıtı ile alıcının görüntüleme anahtarına şifrelenmiş (v, r) çifti ve tarama yapan bir cüzdanın yabancı çıktıların çoğunu erkenden atmasını sağlayan bir baytlık bir görüntüleme etiketi yolculuk eder. İlkeller, stealth adreslemeli Gizli İşlemler'dir: RingCT'nin halkasız, tutar gizleyen yarısı; her biri üretimde yerleşik biçimde konuşlandırılmış.
Geçerlilik baytların bir fonksiyonu olarak kalır. Korumalı bir sertifikanın bakiye denetimi bağlanma denklemidir: bildirilen girdi bağlanmaları eksi bildirilen çıktı bağlanmaları, ücret açık olmak üzere fee·G'ye eşittir (aşağıdaki havuza bakınız). Denklem, aralık kanıtları ve imzalar, hepsi yalnızca sertifikanın baytlarından, paralel aşamada, toplu olarak denetlenir: Bulletproof doğrulaması bir yığın boyunca logaritmik olarak amorti edilir ve hiçbiri duruma dokunmaz. Sahte, enflasyonist bir sertifika — bağlanmaları kırılmış bir varsayım ya da kırılmış bir doğrulayıcı altında denkleşmeyen bir sertifika — yine de yalnızca baytlarıyla geçerli ya da geçersizdir ve fold onu asla yeniden denetlemez; bu, §2'nin geçerli/uygulanabilir ayrımının tasarlandığı gibi çalışmasıdır, ona bir istisna değil; aşağıdaki havuz kuralı ise bir sağlamlık kırılmasının sınırsız olmasını engelleyen şeydir. İkili ücret piyasasının (§8) bir verimlilik savı olmaktan çıkıp olanak sağlayıcı bir sava dönüştüğü yer de burasıdır: tek gas piyasalı bir zincirde gizli işlemler pahalıdır, çünkü bir milisaniyelik kanıt doğrulaması bir depolama yazmasıyla aynı açık artırmada yarışır; burada ise doğrulama tümüyle par_gas'a düşer — tasarım gereği ucuz — ve sıralı piyasa onu hiç görmez.
Fold bayt saklar. Uygulama anında korumalı bir ödeme, fold'un gördüğü en ucuz sertifikadır: çıktı hücresi tazedir, dolayısıyla çatışamaz (§4'ün sıfır çekişmeli hızlı yolu); girdi hücreleri canlı ya da harcanmıştır, bir kayıt sorgusu; ve yazma 32 baytlık bağlanmayı saklar. Sıralı aşamaya hiçbir eğri aritmetiği girmez (§3). Kuralın kapattığı alternatif, yabancılar tarafından homomorfik olarak alacaklandırılan kalıcı bir "biriktirme slotu"dur ve bu üç cephede birden başarısız olur: EC toplamasını sıralı döngüye koyar (§3); yeniden kullanılan bir açık tanımlayıcı yaratır, ki bu tam da stealth adresin kaçınmayı amaçladığı ortak sahiplik sezgiselidir; ve gizli, kalıcı bir bakiye §4'ün yasakladığı üçüncü taraf korumalarını davet eder. Biriktirme cüzdanda gerçekleşir: bir alıcı, hepsi tek bir görüntüleme anahtarıyla tanınabilen çok sayıda one-shot çıktı tutar ve kendi hücrelerinden birkaçını taze bir hücreye harcayarak — sıradan bir korumalı sertifika — dilediği sıklıkta, saat olarak epoch beacon'ı (§4) kullanarak bunları birleştirir. Kalıcı bir slotun zincir üzerinde tutacağı toplamı, sahibi zincir dışında tutar — ve birleştirme izsiz değildir: tek bir sertifikada birkaç girdi bildirmek, yeniden kullanılan bir tanımlayıcıdan zayıf ama gerçek, açık bir ortak sahiplik olayıdır; dolayısıyla cüzdan politikası bunu asgariye indirmek ve tek bir birleştirmede ilgisiz kökenleri asla karıştırmamaktır.
Yalnızca sahibin harcamaları ve bunun yasakladıkları. Gizli bir değer, yalnızca sahibinin kendi hücresi üzerindeki imzasıyla harcanabilir. Gizli bakiyelere karşı üçüncü taraf koruması yoktur (§4) ve dolayısıyla korumalı rayda çekme ödemeleri de yoktur: ödenek yok, abonelik yok, bir kullanıcının korumalı fonlarını süpüren kasa yok. Bu kalıplar şeffaf rayda kalır ve raylar arasındaki sınır bir sertifika genişliğindedir. Kısıt, bakiye kâhinini ortadan kaldırır: bir bakiyeye karşı tahmin gönderip atlamayı okuyabilecek hiçbir yabancı olmadığından, kâhinin işletmecisi yoktur.
Korumalı havuz, fold'un uyguladığı açık bir tam sayıdır. Ücretler açıktır. Coinbase açıktır. Sözleşme slotlarına yapılan ödemeler açıktır. Şeffaf ve korumalı raylar arasındaki her geçiş, herkesçe görülebilen bir v'yi hareket ettirir — korumaya alan bir sertifika girişte v'yi açar, korumadan çıkaran bir sertifika çıkışta v'yi açar. Bu yüzden havuz toplamı, ayrılmış bir slotta, açık metin olarak yaşar ve yalnızca korumalı deltayla hareket eder (§4): korumaya alma onu alacaklandırır, pool += v; korumadan çıkarma pool ≥ v ile korur ve borçlandırır, pool += −v; korumalı bir sertifikanın ücreti de aynı şekilde borçlandırır. Slot tam olarak Σ giren − Σ çıkandır ve korumalı delta disiplini, sınırsız sayıda geçişin çekişmesizce değişmeli olmasını sağlar.
Bu, havuzu bir alarm değil bir çit yapar. Tutarları gizlemek, §3'ün denetlenmiş u256 aritmetiğini bir ayrık logaritma varsayımının hesaplamalı sağlamlığıyla takas eder ve bir kırılma — varsayımın ya da çok daha olası biçimde bir doğrulayıcının — havuzun içinde bağlanmalar tahrif eder. Ne var ki tahrif edilmiş bir bağlanma hiçbir açık metin taşımaz ve değer havuzdan yalnızca korumadan çıkarma yoluyla ayrılır; bu da açık slotu, kendi koruması altında borçlandırır. Slot yalnızca gerçek korumaya almalarla yükselmişti, dolayısıyla onu sıfırın altına indirecek bir korumadan çıkarma atlanır: tahrif edilmiş değer korumayı geçemez. Enflasyon havuzu boşaltmaz; havuzdan çıkmayı başaramaz. Bir kriptografik başarısızlığın patlama yarıçapı, bir denetçinin dikkatiyle değil bir fold kuralıyla, havuzun gerçek içeriğiyle sınırlanır ve başarısızlık kipi sessiz bir boşaltma değil, korumadan en son çıkacak dürüst sahiplerin çıkamadığı görünür, gerçek zamanlı bir yarıştır — kötü, sınırlı ve gözlemlenebilir; acil müdahale ekibi olmayan bir sistemin yapı gereği sahip olması gereken kapsama budur. Emsal somuttur: Zcash Sprout kalpazanlık hatası atlatılabilirdi, çünkü korumalı havuzu sınırlı ve denetlenebilir bir büyüklüktü; burada o büyüklük yalnızca denetlenebilir değil, fold'da yük taşıyıcıdır. §11'in yerel arz tavanları şeffaf rayda yaşar ve denetlenmiş aritmetikle uygulanmayı sürdürür, dokunulmadan.
Havuzun bir gizlilik maliyeti vardır ve bu kayda geçmeyi hak eder: sınır geçişleri tam ve açık tutarları ifşa eder ve ayırt edici tutarlar ilişkilendirilebilir. v + fee girdikten kısa süre sonra v'nin havuzdan çıktığını izleyen bir gözlemci, hiçbir bağlanmanın gizlemediği bir şey öğrenmiştir. Sınırda standart kupürler bunu körelir ve cüzdanlar varsayılan olarak bunları kullanır; protokol bunları zorunlu kılmaz, çünkü bir konsensüs kuralı ayırt edici bir tutarı meşru bir tutardan ayırt edemez. Trafik analizi altındaki bağlanabilirlik, inkâr edilmek yerine, hafifletmesiyle birlikte ifade edilmektedir.
Underwriter üstverisidir ve gizlilik ile sansüre direnç tek bir sertifikada bir arada bulunmaz. Kendini sigortalayan korumalı bir sertifika, gönderenin açık depozito hücresini adlandırır ve bu da stealth adresin bağını çözdüğü şeyi yeniden bağlar (§5); dolayısıyla korumalı trafik eş imzalı üstlenmeye biner, ki orada bir underwriter'ın id'si çok sayıda göndereni toplar ve kalabalık örtü olur. Underwriter hücrelerin canlılığını fiyatlandırır, değerleri değil (§5), dolayısıyla tutarı öğrenmez — ama sertifikanın olduğu diğer her şeyi öğrenir: zincir dışında fatura etmesi ve dolayısıyla kimliğini bilmesi gereken göndereni, harcanan hücreleri, yaratılan stealth çıktıları ve zamanlamayı. Bir mahkeme celbinin istediği tam olarak budur ve yukarıdaki geriye dönük kimliksizlik bozumuyla birlikte açık grafik boyunca ileriye doğru bileşir. Ayrıca yapısal bir KYC noktasıdır, çünkü tek özel modun bilinebilir bir işletmecisi vardır. Bu, makalenin üstünü örtmek yerine açıkça ifade ettiği bir sınırlamayı ortaya koyar: iki üstlenme modu, eş imzalı (özel, ama izinli — bir underwriter sizi reddedebilir) ve kendini sigortalayan ya da zorunlu (izin gerektirmeyen, ama kendini tanıtan) modlardır. §7'nin zorunlu yolu, sansüre uğrayan bir kullanıcının her zaman işlem yapabileceğini garanti eder; gizlilik içinde işlem yapabileceğini garanti etmez. Her underwriter tarafından reddedilen bir kullanıcı, harcama hakkını korur ve aynı hamlede gizliliğini yitirir — ki gizliliğin önem taşıdığı kullanıcı tam olarak odur. Korumalı ray, §7'nin sansüre direncini ancak kendi gizliliği pahasına devralır; iki özellik tek bir sertifikada birlikte geçerli olmaz.
Bir era, genesis değil. Birbirinden bağımsız iki sav takvimi sabitler. Uygulamada korumalı sertifikalar, Era 1'den itibaren var olan eş imzalı underwriter'ları kullanır. §3'ün ilkesi gereği, erişilemez konsensüs kodu denetlenemez konsensüs kodudur ve sevk edilmez: genesis ikili dosyası hiçbir bağlanma, hiçbir aralık kanıtı doğrulayıcısı, hiçbir havuz slotu içermez — tek çağıranı gelecekteki bir era olan hiçbir şeyi. Korumalı era saf biçimde eklemeli değildir ve makale bunu söylüyor: §4'ün gizli hücre türlemesi ile üçüncü taraf koruma yasağı, fold'un koruma yoluna dokunur ki bu genesis açısından kritik bir yüzeydir; dolayısıyla era eklemekle kalmaz, değiştirir de ve etkinleşmesi, olduğu şey — konsensüs açısından kritik bir değişiklik — olarak denetlenen bir sert çataldır. Karmaşıklığına değdiğini kanıtlamayan bir era hiç tetiklenmez ve genesis zinciri onu içermemekle hiçbir şey kaybetmiş olmaz.
Maliyetler, açıkça. Korumalı bir sertifika, şeffaf olanın 3–5 katı boyuttadır — bir ila iki kilobayt, toplu kümelemeden sonra bile aralık kanıtının ağırlığında — ki dinamik blok (§8) bunu ekonomik olarak, §13'ün yayılımı ise bant genişliğiyle karşılar. Alıcılar ödemeleri tarayarak keşfeder: her yeni korumalı çıktı cüzdanın görüntüleme anahtarına karşı deneme amaçlı sınanır; ağ hacmine göre O(n) olan bu maliyeti, görüntüleme etiketleri tek bayt üzerinden erken bir reddetmeyle azaltır, kendisinden önce gelen paylaşılan sır türetiminin sınırladığı sabit bir çarpanla. Tarama, korumalı rayın başlıca kullanıcı deneyimi yüküdür; görüntüleme anahtarını teslim etmeyen dış kaynaklı tarama ise bu tasarımın çözmek yerine devraldığı açık bir sorundur. Bu rayda aktarım politikası da değişmek zorundadır, isteğe bağlı olarak değil: bir sertifika yayımlamak bedavadır (§5, §13), oysa bir Bulletproof doğrulamak değildir; dolayısıyla yayımlayana herhangi bir maliyet yüklenmeden önce doğrulayıcıyı çalıştıran bir aktarıcı, bir hizmet reddi yükselticisidir — korumalı ray, önce ucuzu sonra pahalıyı denetleyen aktarım gerektirir (önce imza ve bildirilen canlılık, en son kanıt, underwriter başına kota) ve bu da mempool'un "aktarım politikasıyla sınırlı" olmasını bir varsayılandan bir gereksinime çevirir.
Bu bölümün daha sonraki bir taslağa bıraktığı açık sorular; gömülmek yerine işaretlenmiştir. Korumalı rayın yalnızca yerel coin'i mi yoksa §11 varlıklarını da mı taşıyacağı: tek bir üreteç H, vG + rH'nin bir (varlık, değer) çiftine değil bir skalere bağlanmasını sağlar, dolayısıyla çok varlıklı bir korumalı ray varlık başına üreteçler (Gizli Varlıklar) gerektirir, bu da kanıt boyutunu ve yukarıdaki "3–5×" rakamını değiştirir; karara varılana dek ray, ihmal yoluyla değil, kural gereği yalnızca yerel coin'e açıktır. RETIRE'ın (§11) korumalı hücreler üzerinde işleyip işlemeyeceği: işlerse, değer açık bir korumadan çıkarma olmadan havuzdan ayrılabilir, dolayısıyla havuz slotu bir üst sınır hâline gelir (Σ giren − Σ çıkan ≥ içerik) ve enflasyon tespitinin yönü bir eşitsizlik olarak yeniden ifade edilmelidir; işlemezse, korumalı ray çöp toplayıcısını yitirir ve açılamayan çıktılar (aşağıya bakınız) birikir. Şifrelenmiş (v, r)'nin sertifika gövdesinde mi (şimdi ucuz, gövdeler budanırsa geri getirilemez, yalnızca tohumla cüzdan geri yüklemeyi boşa çıkarır) yoksa hücre değerinde mi (çıktı başına duruma mal olur, hücre harcandığında kaybolur ve "biriktirme cüzdanda gerçekleşir" ile uyumludur) yaşayacağı. Ve bir underwriter'ın, sertifikanın içinde açık değerle ücretlendirirken üçüncü bir tarafa teminat verip veremeyeceği; bu, yukarıdaki kimlik gereksinimini ortadan kaldırır ve gizlilik/sansür sınırlamasını aşmanın en umut verici yoludur — bunlar ifade değil tasarım meseleleridir ve bir sonraki taslağın onları sessizce devralmaması için burada adlandırılmıştır.
13. Ağ#
Gövdeler zincir verisidir. Bir bloğun geçerli olabilmesi için sertifika gövdelerinin geri getirilebilir olması gerekir; dolayısıyla durum her zaman yalnızca zincirden yeniden kurulabilir ve hiçbir işletmeci — sıralayıcı dâhil — asla bir veri emanetçisi değildir. Sertifikalar klasik işlemlerden büyüktür (okumaları ve yazmaları taşırlar) ve hafifletmeler yapısaldır: toplu sertifikalar içerideki yazmaları kısa devre eder (§6) ve harcanmış one-shot hücreler, reorg ufkunun ötesine gömüldüklerinde sıkıştırılır (§4).
Üçüncü bir hafifletme olasıdır ve varsayılmak yerine öyle adlandırılmaktadır: bir okuma, değeri tekrarlamak yerine önceki bir sertifikanın yazmasına (cert_id, index) ile atıfta bulunabilirdi — UTXO numarası. Bu, burada tarif edilen protokolün bir parçası değildir ve bir sorunun yanıtı olana dek de parçası olmayacaktır, çünkü soru bir kodlama sorusundan çok bir konsensüs sorusudur: adını andığı sertifika atlanmışsa ya da hiç dâhil edilmemişse, bir atıf neye çözümlenir. Sessizce mevcut değere çözümlenen bir atıf artık bildirilmiş bir okuma değildir ve durumsuz geçerlilik onunla birlikte ölür; başarısız olan bir atıf ise kendi yetkilendirmesi hiç tartışmalı olmayan sertifikaları da düşürür. Tüm tasarımın dayandığı özelliğe mal olan sıkıştırma, sahip olmaya değer bir sıkıştırma değildir; dolayısıyla semantik yerine oturana kadar alan yoktur.
Aktarım özet önceliklidir. Sertifikalar bağımsız olarak yayılır ve varışta (durumsuz olarak, paralel) geçerlilik denetiminden geçer; bloklar mempool'a karşı başlıklar artı özet listeleri olarak aktarılır, compact-block tarzında [13], dolayısıyla yayılma gecikmesi blok içeriğiyle ölçeklenmez. Bir aktarım düğümünün spam'i tümüyle süzmek için hiçbir duruma ihtiyacı yoktur — durumsuz geçerlilik artı underwriter imzası baytlardan denetlenebilir, ki bu da şeffaf rayda aktarım altyapısı işletmeyi neredeyse bedava kılar. Korumalı ray (§12) fiyatlı istisnadır: durumsuz denetimi, bir imzadan üç kat büyüklük mertebesinde pahalıya mal olan bir aralık kanıtı doğrulaması içerir, dolayısıyla orada yayımlamanın bedava olması varsayılanı bir yükselticiye dönüşür ve aktarım, §12'nin bir tercih değil bir gereksinim yaptığı önce-ucuz-sonra-pahalı disiplini ile underwriter başına kotalara bağlıdır. Bir rayın aktarımı neredeyse bedavadır; diğerininki ise yalnızca politikası zorunlu olduğu için ucuzdur.
Parametreler (genesis, örnekleyici). 30 saniyelik bloklar; sertifika TTL varsayılanı 240 blok (~2 sa); sertifika başına emekli edilen adresler ≤ 64; epoch 2.880 blok (~1 gün); zorunlu uygulama gecikmesi D = 4 blok; zorunlu dâhil etme sınırı F = 16 blok; era tetikleme hisse penceresi K = 14 epoch (~2 hafta); blok 0'dan itibaren blok sübvansiyonunun 300 baz puanı (%3) hazine payı, Era 2'ye kadar mühürlü hücre, sonrasında sert çatalla sabitlenmiş bir anahtar kümesi üzerinde 5'te 3, anahtar döndürme gecikmesi R = 20.160 blok (~7 gün) (§14.1); ihraç sabitleri §14.2'de.
14. Başlangıç: Üç Era, Sıfır Premine#
Zycord premine olmadan, kurucu tahsisi olmadan, yatırımcı turu olmadan ve yönetici anahtarları olmadan başlıyor. Genesis, yayımlanmış kaynaklardan yeniden üretilebilir. Önce bir testnet çalışır; ancak o kararlı hâle geldikten sonra bir mainnet tarihi açıkça ve önceden duyurulur, böylece blok 0 onu isteyen herkes için ulaşılabilir olur. Yazara dayatılan şey ayrıcalığın yokluğudur ve bu, genesis'te satır satır denetlenebilir. Yükseltmeler toplumsal konsensüs ve sert çatalla gerçekleşir.
Bu makale gerekçedir. Kurallar mimari spesifikasyonudur, golden vektörler protokoldür ve ikisinden herhangi biri çeliştiğinde daha kesin olanı kazanır ve çelişki bir hatadır. Bunların yanı sıra, bu tasarıma yapılan saldırıların kaydı da yayımlanır — birbirini izleyen düşmanca okumalar, ürettikleri bulgular, kuralları değiştirenler ve karşı savla çürütülenler ile nedenleri. O kayıt eksiksiz ve düzeltilmemiş olarak yayımlanır; gerçek kusurları bulan incelemeler de, hiçbir şey ölçmediği hâlde başarı bildiren araçlar da dâhil. Yazarı ona bizzat kefil olmayacak bir proje için, saldırıya uğradığına dair görünür bir geçmişi olmayan bir tasarım, kimsenin saldırmadığı bir tasarım gibi okunur ve bunu gizlemenin bedelini geri kazanmanın hiçbir yolu yoktur.
"Düzeltilmemiş", bulgular hakkında bir vaattir ve neyi kapsadığını tam olarak söylemek gerekir, çünkü kayıt canlı bir arşiv olarak değil dosyalar olarak yeniden yayımlanmaktadır. Her bulgu, her ölçüm, her sav ve reddedilen her alternatif yazıldığı hâliyle korunur; yanlış olanlar ve hiçbir şey ölçmediği hâlde başarı bildiren araçlar dâhil; hiçbir şey seyreltilmez, yumuşatılmaz, birleştirilmez ya da düşürülmez. Yalnızca iki sınıf değişiklik yapılır, yalnızca iki. Birincisi kimlik redaksiyonudur — adlar, kullanıcı adları, adresler, makine adları ve yerel yollar; bunlar tasarım hakkında hiçbir şey söylemez. İkincisi kendi kendine yeterliliktir: yayımlanan ağacın taşımadığı bir izleyiciye ya da bir commit geçmişine yönelik bir işaretçinin yerini, temsil ettiği gerekçe alır ve satır içinde ifade edilir. Böylece yalnızca bu dosyalara sahip bir okur her iddiayı izleyebilir, ki vaat de bunun içindi; hiçbir şeye çözümlenmeyen bir işaretçi "düzeltilmemiş"in harfini korur ve amacının tamamını yitirirdi.
Proof of stake adil başlangıç yapamaz — başlangıçtaki hissenin bir yerden gelmesi gerekir ve klasik yolların her biri (satış, premine, tahsis) ya ağı yoğunlaştırır ya da yazarını tanımlar. Bu yüzden proof of work, kalıcı bir konsensüs olarak değil, son kullanma tarihi olan bir dağıtım mekanizması olarak kullanılmaktadır:
| Era | Tetikleyici | Konsensüs | Neler var |
|---|---|---|---|
| 0 — Madencilik & Bahşiş | blok 0 (kararlı bir testnet'ten sonra duyurulan açık mainnet tarihi) | PoW (RandomX [14]), Nakamoto kuralları [1] | Yerel varlıklar (§11); her sertifika kendini sigortalar; kiralama yok ve zorunlu kuyruk yok — ikisi de Era-1 mekanizmasıdır (§3, §7); hazine birikir, mühürlü (§14.1) |
| 1 — Ödemeler | yükseklik H₁ (komut kümesi); teminatlı hisse ≥ arzın %1'i K epoch sürdürdüğünde kesinlik katmanı | PoW önerir; katman etkinleştiğinden itibaren teminatlı doğrulayıcılar her 32 blokta bir kontrol noktalarını kesinleştirir (FFG katmanı [12]) ve sübvansiyon 77/20/3 olarak bölünür — üretici / kontrol noktası onaylayıcıları / hazine | BOND, underwriter'lar & sıralayıcılar (§5–6); cEVM + standart kütüphane (§10); ön onay piyasası kesinlikle birlikte olgunlaşır (tasarım notları) |
| 2 — Platform | yükseklik H₂ ve hisse ≥ %10, 30 epoch boyunca sürdürülmüş | PoS komitesi önerir; PoW ödülü ~90 gün içinde sıfıra iner ve kontrol noktaları kesinleşemedikçe duraklar; rastgelelik PoW özetlerinden VRF'ye geçer | Protokolün tamamı; hazine hücresi 5'te 3 ile açılır (§14.1); örnekleme araştırması (§9) başlar |
| S — Korumalı (hangi era yürürlükteyse ona karşı etkinleşir; Era 1'in komut kümesini gerektirir) | düğüm işletmecilerince benimsenen sert çatal; ancak şunların tamamından sonra önerilebilir: eş imzalı üstlenme yürürlükte (§5); doğrulayıcı ve toplu işleme yolu, en az iki bağımsız denetimle, bulguları ve düzeltmeleri açık olacak biçimde yayımlanmış; korumalı rayın tamamı, düşmanca katılımla ≥ K epoch boyunca açık bir testnet'te çalıştırılmış; doğrulayıcı için golden vektörler protokol yapıtında | değişmedi — era hiçbir konsensüs rolü eklemez ve hiçbir sıralama kuralını değiştirmez | Gizli ödemeler (§12): korumalı işlemler, gizli hücre türü ve koruma yasağı (§4), havuz slotu ve fold kuralı, konsensüs açısından kritik kod olarak aralık kanıtı doğrulayıcısı |
Geçiş üzerine tasarım notları. Era 0 kasten küçüktür. Yönetici anahtarları olmadığından bir duraklatma düğmesi yoktur, dolayısıyla her genesis satırı, ağı çaresizce öldürebilecek bir satırdır; fold (§3) artı yerel işlemler (§11) güvenlik açısından kritik yüzeyin tamamıdır (bu makalenin bunların eksiksiz spesifikasyonunu içerebilecek kadar küçük) ve denetlenmiş ile düşmanca simüle edilmiş olarak sevk edilirler. CPU madenciliği (RandomX) demografiye uyar: zaten sahip olduğunuz dizüstü bilgisayarda madencilik yapın. Bu aynı zamanda botnet'leri davet eder; CPU ile madenciliğe açık her coin onlarla mücadele etti ve biz de istisna olmayı beklemiyoruz. Bu takası gözümüz açık kabul ediyoruz: botnet'lerle çarpıtılmış bir dağıtım bile, bir satışta kararlaştırılandan daha geniştir ve dürüst, sıradan donanımı rekabetçi tutmak RandomX'in bütün tasarım şartnamesidir [14]. Eş imzalama, underwriter'lar kayıt olabildiği andan itibaren yürürlüktedir; kontrol noktası kesinliği ise hisse sürdürülene dek değildir ve biz bu boşluğu gizlemek yerine adlandırıyoruz: teminat atlamaları fiyatlandırır, reorg'ları asla, dolayısıyla hiçbir protokol kuralı bir underwriter'ın o boşluğa ön onay satmasını engellemez — hiçbir kuralın yapamayacağı şey, satışı dürüst kılmaktır. "Saniyeler içinde uygulanır ya da teminatım öder", ancak derin reorg'lar masadan kalktığında üstlenilebilir; dolayısıyla sigortalı ön onay ürünü, protokol yasası olarak değil piyasa dürüstlüğü olarak kesinliği izler. Onaylayıcılar, katman etkinleştiği andan itibaren ihraçtan ödeme alır — önceki iki melez geçiş de bunu yaptı (Decred, PoS oy verenlere her blok ödülünden bir pay öder [17]; Ethereum'un beacon doğrulayıcıları mainnet blokları önermeden iki yıl önce ihraç kazandı) — ve üretici ağırlıklı 77/20/3 bölünmesi dağıtım aşamasıyla sınırlıdır, çünkü aynı emsal madenci ağırlıklı bir bölünmenin yanlış bir kalıcı durum olduğunu gösterir: iniş onu emekliye ayırır. Era 1 tetikleyicisini böler ve bölünme yük taşır: komut kümesi yükseklikle etkinleşir — önce BOND, ardından underwriter ve sıralayıcı kaydı ile cEVM; genesis parametrelerinin ayrı ve sıralı tuttuğu iki yükseklik — buna karşılık kesinlik katmanı yalnızca teminatlı hisse ≥ arzın %1'i K epoch boyunca sürdürüldüğünde etkinleşir, çünkü hisse, onu yaratan işlem var olmadan ölçülemez. Era 2 ikili bir tetikleyiciyi korur (yükseklik ve sürdürülen hisse), böylece ağ ne önemsiz bir hisseyle geçiş yapar ne de yerleşik madencilerin onu sonsuza dek engellemesine izin verir; yükseklikler eşiklerdir, tarih değil ve hiçbir takvim vaat edilmez. Gömmek yerine ifade ettiğimiz bir çekince: %1'lik etkinleşme tabanında kesinliği durdurmak bunun üçte birini gerektirir (arzın %0,33'ü), dolayısıyla ilk sigortalı ön onayların dayandığı kesinlik de gençtir. K epoch sürdürme gereği çıtayı zamanla yükseltir, hareketsizlik sızıntısı bir durdurmayı sürdürmeyi pahalılaştırır ve underwriter'ların genç kesinliği genç poliçelere fiyatlaması beklenir; daha derin güvenlik, ilanla değil, daha derin hisseyle gelir. Era 1 gölge zincirdir: doğrulayıcı kümesi, tek bir blok önermeden önce, era boyunca üretimde kesinleştirir — gerçek teminatlar, gerçek cezalar — ki ölçekteki tek başarılı PoW→PoS geçişini güvenli kılan özellik budur. Aynı zamanda bir koridor değil bir dinlenme durumudur: hisse Era-2 eşiğini hiç sürdürmezse, ağ süresiz olarak işleyen bir melez olarak kalır. Bir uçurum yerine ödül inişi, bir madenci çatalı ralisine anını vermez ve iniş iptal edilebilirdir: kontrol noktaları üst üste iki epoch boyunca kesinleşemezse, kesinlik geri dönene dek mevcut düzeyinde duraklar. Madenciler duraklamayı satın alamaz: kesinliği durdurmak teminatlı hissenin üçte birini gerektirir, ki hareketsizlik sızıntısı kesinlik dönene dek onu kanatır; dolayısıyla saldırı, duraklamış ödülün ödediğinden pahalıya mal olur. Coinbase'lerini teminata veren Era-0 madencileri ilk sıralayıcı rotasyonlarında öncelik alır — ekstra coin değil — ve bu, madencilik topluluğunu bir kenara atmak yerine işletmeci topluluğuna dönüştürür.
Korumalı era'nın tetikleyicisi kasten diğerlerinden farklı biçimlendirilmiştir. Yükseklikler ve hisse eşikleri bir düğümün ölçtüğü olgulardır; bir kriptografik doğrulayıcının hazır olması ise değildir, dolayısıyla tetikleyici bunun yerine bir sert çatalın gösterebilmesi gereken bir kontrol listesidir: denetimler yayımlandı, testnet epoch'ları hizmet etti, vektörler yapıtta. Biçim, maddelerden daha önemlidir. Bu ağın acil müdahale ekibi yoktur — Zcash kalpazanlık hatası kısmen kadrolu bir örgüt günler içinde bir düzeltme sevk edebildiği için atlatılabilirdi ve buradaki hiçbir şey bunu vaat edemez — dolayısıyla era'nın etkinleşmesi, bakımcılarını var saymak yerine onları yaratacak biçimde tasarlanmıştır: iki bağımsız denetim üretemeyen ve düşmanca bir testnet'i kadrolayamayan bir topluluk, bir konsensüs doğrulayıcısını sürdüremeyecek bir topluluktur ve kontrol listesi, ikinci yetersizliği birincisinin başarısızlığı olarak görünür kılar — bir kırılmadan sonra değil, etkinleşmeden önce. §12'nin fold kuralı, hayatta kalan bir hatanın neye mal olabileceğini sınırlar; kontrol listesi ise bir doğrulayıcının, herhangi bir şeye mal olmaya başladığı anda ne kadar incelenmemiş olabileceğini sınırlar. Hiçbiri diğerinin yerini tutmaz ve era ikisiyle birlikte sevk edilir ya da hiç edilmez.
İniş bir azaltma değil bir yeniden bölüşümdür: proof of work hangi payı bırakırsa, onu proof of stake proposer'ları alır, dolayısıyla §14.2'nin sübvansiyon çizelgesi, ağın geçişinin neresinde olduğundan etkilenmez. Çizelgenin, herhangi bir düğümün deftere başvurmadan dört sabitten hesaplayabildiği, yüksekliğin saf bir fonksiyonu olarak kalmasını sağlayan da budur.
Geçiş, ifade edilmeye değer mimari bir nedenle uygulanabilirdir: fold, kimin sıraladığına kayıtsızdır. Bir PoW madencisi zaten tasarımın gerektirdiği kör proposer'dır; Era 2, başlıkta kimin imzasının olduğunu değiştirir, durum semantiğinin tek bir kuralını değil. Sınırın öte yakasına taşınacak bir yürütme motoru yoktur.
Bir era sınırı, aynı zamanda kapasitenin hareket ettiği yerdir: §8.1'in bayt kapasitesi ile altındaki taşıma sabitleri, çalışan ağda ölçülen yayılıma karşı orada yeniden sabitlenir; böylece rutin büyüme, kendi başına bir yönetişim olayına dönüşmek yerine bu çizelgenin zaten içerdiği yükseltmelere biner.
14.1 Hazine#
Her blok sübvansiyonunun yüzde üçü hazine hücresine alacak yazılır; yüzde doksan yedisi konsensüse ödenir — bloğun üreticisine ve Era 1'den itibaren kontrol noktası onaylayıcılarına (§14). Pay genesis'te sabitlenmiştir, blok 0'dan itibaren geçerlidir ve her bloğa aynı şekilde uygulanır. Ücretlere asla dokunulmaz (hazinenin §8'in piyasaları üzerinde hiçbir hakkı yoktur), dolayısıyla maliyet ihraca düşer ve her sahibe payı oranında yayılır.
Hücre Era 2'ye kadar mühürlüdür. Blok 0'dan itibaren birikir ve o zamana dek hiçbir anahtar onu açmaz: genesis'te yeter sayı yok, adres yok, yazar anahtarı yok, acil durum yolu yok. Blok 0'da anahtarları tutacak olgun bir topluluk yoktur. Hiçbiri gelmezse, hücre hiç açılmaz ve coin'ler hiç ihraç edilmez. Birikim kuralı ilk bloktan itibaren genesis'te durur ki asla bir değişiklik olmasın; Era 2'de üzerinde anlaşılmış bir kuralın işlerlik kazanmasından başka yeni hiçbir şey olmaz.
Bunların hiçbiri bir premine değildir ve fark retorik değil, denetlenebilirdir. Premine bir tahsistir: genesis'te var olan ve birine ait olan coin'ler, bir adres ve bir anahtar. Buradaki genesis bu üçünden hiçbirini içermez. Hiçbir hazine coin'i harcanabilir değildir, hiçbir adres belirlenmemiştir, hiçbir anahtar yoktur ve hiçbir taraf adlandırılmamıştır; genesis'in içerdiği şey, şimdiye dek madenciliği yapılmış her bloğa aynı şekilde uygulanan bir kural, artı bir yeter sayının birikmiş sonuç üzerinde bir gün nasıl sabitlenebileceğine dair ikinci bir kuraldır. O günün gelip gelmeyeceği yazarın kararı değildir. Anahtar kümesi sert çatalla sabitlendiğinden, seçim mekanizması her konsensüs değişikliğinin kullandığı mekanizmadır: birileri, kamuya açık olarak tanımlanmış beş sahip önerir, düğüm işletmecileri onları sabitleyen çatalı benimser ya da çalıştırmayı reddeder ve ağı kendi çatalını çalıştırmaya ikna edemeyen bir aday yeter sayı, hiçbir şeyin anahtarını tutmaz. Ele geçirilecek bir oylama, oynanacak bir katkıcı kaydı ve yazarın sesinin herhangi bir başka düğüm işletmecisininkinden ağır bastığı bir an yoktur.
Era 2'den itibaren hücre, yalnızca sert çatalla sabitlenmiş bir anahtar kümesi üzerinde beşte üç imza taşıyan bir sertifikayla borçlandırılır. Harcamalar sıradan sertifikalardır: açık, nihai ve yalnızca zincirden sayılabilir. Yeter sayı, açılış anında etkin olan katkıcılar arasından çekilir ve küme yürürlüğe girmeden önce kamuya açık olarak tanımlanır; her anahtar ayrı bir tarafta durur, hiçbiri ortak denetim altında değildir. Geçerli bir 5'te 3 harcaması, bunun yerine R blok sonra yürürlüğe girecek beş yedek anahtar adlandırabilir; bu süre boyunca döndürme kamuya açıktır ve eski küme hâlâ geçerlidir: döndürme, bir harcamanın eşiğini ve bir harcamanın görünürlüğünü taşır.
Era 0 ve 1 bağışlarla finanse edilir: öneriler ödemeden önce kamuya açık, kilometre taşları ve bütçe önceden belirli, ödeme teslim edilen işe karşılık, harcanmayan tutarlar fona iade. Hücre açıldığında yeter sayı bu disiplini devralır. Bu bir konsensüs kuralı değil bir normdur; onu uygulatan şey, her sapmanın defterde görünür olmasıdır.
Pay sona ermez. Bir coin miktarı değil, ihracın bir kesridir; dolayısıyla §14.2'nin sübvansiyonuyla birlikte azalır ve kuyrukta sabit nominal bir akış olarak sürer; arzın bir kesri olarak ise sıfıra yönelir. Onu kaldırmak, herhangi bir konsensüs değişikliğinin maliyetine mal olur: bir sert çatal. Era 2'den itibaren 5'te 3, protokolün tek güvenilen yeter sayısıdır.
14.2 İhraç#
Sübvansiyon, kalıcı bir kuyruğa doğru düzgün biçimde azalır. Oran bir epoch içinde sabittir ve her epoch sınırında bir kez, dört sabit üzerinde tam tam sayı aritmetiğiyle aşağı iner:
E(0) = E₀
E(n) = max(tail, E(n−1) − E(n−1)/Q)
burada L blok cinsinden epoch, Q azalma böleni, E₀ genesis sübvansiyonu ve E(n) n epoch'u boyunca blok başına sübvansiyondur. Şu dördü — L, Q, E₀, tail — sabitlerdir; çizelgenin toplamına ulaştığı kuyruk öncesi arz olan C ise yinelemeyi çalıştırarak onlardan türetilir ve bir girdi değildir. Daha önceki revizyonlar ilk satırı E(0) = C / (L · Q) olarak yazıyordu; bu, sanki C sübvansiyonun bölünerek çıkarıldığı bir sabitmiş gibi okunur; oysa o, sonsuz geometrik azalmanın kapalı biçimidir ve aşağıdaki sonlu çizelge ona toplanmaz. Ne kayan noktalı sayı ne de yanlış yapılacak bir tablo vardır; yarılanma uçurumları da yoktur: adım, hiçbir tek bloğun bir tanesini görmeyeceği kadar küçüktür — Era-2 ödülünü bir iniş yapan aynı akıl yürütme. Formül kuyruğun altına düştüğünde sübvansiyon, sonsuza dek blok başına sabit bir miktardır.
Çizelge, yüksekliğin saf bir fonksiyonudur. Gerçekte ne kadar ödendiğine bakmaz; bu da çizelgeden az ödeyen bir bloğun — diyelim, sahibinin yaktığı bir adrese borçlu bir coinbase — eğrinin sonradan geri ödediği bir borç değil, C'ye karşı kalıcı bir eksik olduğu anlamına gelir. Dolayısıyla C, çizelgenin toplamına ulaştığı rakamdır, ulaşacağını garanti ettiği bir tavan değil.
Kuyruk vardır, çünkü güvenlik kalıcı bir giderdir: yürürlükteki era'yı kim güvenceye alıyorsa — madenciler, sonra madenciler ve onaylayıcılar, sonra doğrulayıcılar — §8'in ücret piyasalarını askere almadan ona ödeme yapar. Yıllık kuyruk ihracı, dolaşımdaki arzın %1'inin altında başlayacak biçimde boyutlandırılmıştır; pay sabit ve arz büyüyen olduğundan, o yüzde yalnızca düşer. Ona karşı §8'in sıralı taban ücret yakımı işler, dolayısıyla net ihraç kuyruk eksi yakımdır ve yük altında negatif olabilir. §14.1'in 97/3 bölünmesi, kuyruk dâhil her sübvansiyona uygulanır.
Sabitler (genesis, örnekleyici, §13'teki gibi): epoch L = 2.880 blok; azalma böleni Q = 1054; genesis sübvansiyonu E₀ = blok başına 21; kuyruk blok başına 0,33. 30 saniyelik bloklarla bunlar 0,70702'lik bir yıllık çarpan verir; yani emisyon oranı iki yılda bir yarılanır — hem de yaklaşık olarak değil tam olarak: E₀ = 21'e karşı E(730) = 10.50230028. Formül, 4.376. epoch'ta, 12.602.880 yüksekliğinde, ≈ 12. yılda kuyruğun altına düşer; dolayısıyla azalan kol 0 ile 4.375. epoch'lar arasında işler ve toplamına ulaştığı arz olan C, 62.744.838,47'dir. Bunun 62.744.817,47'si fiilen ihraç edilir: aradaki fark genesis bloğunun 21'idir; o blok hiç coinbase ödemez, çünkü ödenecek bir madenci yoktur ve yeniden üretilebilir bir genesis hiçbir adrese alacak yazmamalıdır. Yıllık kuyruk ihracı bu durumda ≈347 bin, yani ihraç edilmiş arzın %0,55'idir ve oradan itibaren düşer. **Kapalı biçim L · E₀ · Q = 63.745.920, C'nin değeri değil üzerindeki bir üst sınırdır** ve aradaki fark bir yuvarlama hatası değildir: o çarpım sonsuz geometrik azalmanın toplamıdır, oysa çizelge sonludur, her adımda aşağı yuvarlar ve kuyrukta durur. C'yi 1.001.081,53, yani %1,60 aşar. Toplamı aktarın, kapalı biçimi asla. Uygunluk, yinelemeyi yeniden üretmektir — hiçbir düğüm hiçbir yükseklikte C'yi ya da bu paragraftaki başka bir rakamı hesaplamaz.
15. Ölçümler#
Merkezî iddiası bir işlem hacmi asimetrisi olan bir tasarım, okura sayı borçludur. Aşağıdaki rakamlar referans uygulamadan alınmıştır ve yayımlanmış kaynağından yeniden türetilebilir. Donanım: on çekirdekli bir x86 masaüstü CPU'su. Rakamlar 5 koşunun medyanlarıdır.
- Fold işlem hacmi: 100.000 slotluk bir çalışma kümesi üzerinde çekirdek başına saniyede 883.000 slot işlemi; yani sertifika başına 3 slotta saniyede 294.000 uygulanan sertifika.
- Durumsuz doğrulama: CPU çekirdeği başına saniyede 1.470 sertifika ve 10 çekirdek boyunca saniyede 5.220 — bu oran, iddia edilen değil ölçülen paralellik savıdır.
- İmza doğrulama: saniyede 1.500, tek tek, küçük mertebe ve torsiyon denetimleri dâhil.
- Uçtan uca: 2.900 sertifikalık bir blok 1.963 ms'de doğrulanır ve 9,9 ms'de fold edilir. İkisi ayrı raporlanır, çünkü savın iki yarısıdır: birincisi ağın sahip olmadığı çekirdeklerle ölçeklenir, ikincisi ise sahip olduğu tek döngüdür.
Fold'un ölçümü bir çıkarma işlemidir ve bunu söylemek, onu raporlamanın bir parçasıdır: bir bloğu işlemek, durumsuz denetimleri ve sıralı fold'u birlikte çalıştırır; dolayısıyla fold'un rakamı, bütünden denetimlerin tek başına ölçülen süresinin çıkarılmasıdır. Her iki yarı da yapıtın içindedir.
Yalnızca referans uygulamanın çalıştırdığını raporluyoruz; bu da, okurun keşfetmesine bırakılmak yerine adlandırılmayı hak eden iki sınır koyar. İmza doğrulama, her seferinde tek bir imza olacak şekilde ölçülmüştür: toplu doğrulama gerçek bir teknik ve bariz bir uyumdur, ama bu projenin yazmadığı, güvenlik açısından kritik bir kriptografidir ve var olmayan bir kod için verilen bir sayı bir ölçüm değildir. §2 ile §6'nın öngördüğü GPU ve SIMT rakamları, sıralayıcının toplu sertifikalarına aittir ve Era 1 ile gelir. Her ikisi de tasarım beklentileridir. Hiçbiri yukarıdaki sayılar için yük taşımaz: paralellik savı, sertifikaların bağımsız olarak denetlenebilir olmasına dayanır; toplu işleme bunu daha hızlı yapardı, doğru yapamazdı.
16. İlgili Çalışmalar#
Zycord'un hattı — önce yürüt, kör sırala, işleme anında doğrula — izinli ortamlarda bir ataya sahiptir: Hyperledger Fabric'in execute-order-validate yaklaşımı [3]; onun belgelenmiş zayıflıkları, çekişme altındaki iptal oranı ve kurumsal onay politikalarına bağımlılığıdır. Zycord'un bu soya göre katkıları şunlardır: (i) atlamanın birinci sınıf, ABA'ya toleranslı bir semantik olduğu değer eşitliğine dayalı uygulanabilirlik; (ii) çatışmanın ekonomik atfı — çift imzayı nesnel biçimde cezalandırılabilir, bayatlığı ise fiyatlandırılmış, sigortalanabilir bir hizmet yapan teminatlı üstlenme, ki execute-order-validate'in izin gerektirmez hâle gelmek için eksik olan da buydu; ve (iii) rollup kaçış kapaklarının yalnızca dâhil edilmeyi garanti ettiği yerde, uygulanma garantili zorunlu dâhil etme. Deterministik olarak önceden bildirilen okuma/yazma kümeleri Calvin'den [4] gelir ve Solana'nın erişim listelerinde [16] görünür; değişmeli emanet yöntemleri O'Neil'e [9] uzanır ve bugün Block-STM üzerindeki Aptos toplayıcıları [5] gibi tek düğümlü zamanlayıcıların içinde yaşar — Zycord değişmelilik sözleşmesini düğümler arasına taşır ve fiyatlandırır. Paralel EVM sistemleri [5] ve ertelenmiş yürütmeli zincirler hâlâ her yerde yeniden yürütür ve durum G/Ç duvarına toslar; Narwhal [6], bizim erken tasarımlarımızın yaptığı gibi veri yayılımını sıralamadan ayırır; Sui'nin sahipli nesneleri bizim bir kez yazılan hücrelerimizle koşuttur; Zether'in [7] bekleyen/taban ayrımı korumalı delta disiplinine ilham verdi (ve kimerik defterin gizlilik kökleriyle [8] birlikte §12'nin gizli ödemelerinde geri döner — ağır kripto şeridinin ilk kiracısı, temel katmana gömülmek yerine paralel gas'a fiyatlanmış gizli tutarlar ve tek kullanımlık adresler). Zincirlenmiş kesinlik katmanları Casper FFG'yi [12] izler.
17. Sonuç#
İşlemleri yürütmek yerine sertifikaları sıralayan bir ağ önerdik: geçerliliği herkes tarafından, her yerde, paralel olarak, yalnızca baytlardan denetlenen; durumu bir sayfada belirtilebilecek kadar basit bir fold'la ilerleyen; çatışmaları atlanan, fiyatlandırılan ve sahiplenilen; eşzamanlılığı keşfedilmek yerine bildirilen; sansüre yapı gereği dayanabilen; ve coin'i, herhangi birinden bir doğrulayıcı kümesine güvenmesini istemeden önce dağıtan bir başlangıca sahip bir ağ. Doğrulama, ağın sahip olmadığı donanımla dışa doğru ölçeklenir. İşleme sıralı kalır — ve neredeyse bedava.
Zycord işin peşinden koşmaz. Yerinde durur ve işi ağ yapar.
Kaynakça#
[1] S. Nakamoto. Bitcoin: A Peer-to-Peer Electronic Cash System. 2008. [2] V. Buterin. Ethereum: A Next-Generation Smart Contract Platform. 2013. [3] E. Androulaki vd. Hyperledger Fabric: A Distributed Operating System for Permissioned Blockchains. EuroSys 2018. [4] A. Thomson vd. Calvin: Fast Distributed Transactions for Partitioned Database Systems. SIGMOD 2012. [5] R. Gelashvili vd. Block-STM: Scaling Blockchain Execution by Turning Ordering Curse to a Performance Blessing. 2022. [6] G. Danezis vd. Narwhal and Tusk: A DAG-based Mempool and Efficient BFT Consensus. EuroSys 2022. [7] B. Bünz, S. Agrawal, M. Zamani, D. Boneh. Zether: Towards Privacy in a Smart Contract World. Financial Cryptography 2020. [8] J. Zahnentferner. Chimeric Ledgers: Translating and Unifying UTXO-based and Account-based Cryptocurrencies. IACR ePrint 2018/262. [9] P. E. O'Neil. The Escrow Transactional Method. ACM TODS, 1986. [10] M. Herlihy, E. Koskinen. Transactional Boosting: A Methodology for Highly-Concurrent Transactional Objects. PPoPP 2008. [11] M. Shapiro vd. Conflict-free Replicated Data Types. SSS 2011. [12] V. Buterin, V. Griffith. Casper the Friendly Finality Gadget. 2017. [13] M. Corallo. BIP 152: Compact Block Relay. 2016. [14] tevador vd. RandomX: Proof-of-Work Algorithm Optimized for General-Purpose CPUs. 2019. [15] EIP-1559: Fee Market Change for the ETH 1.0 Chain. Ethereum Improvement Proposals, 2019. [16] A. Yakovenko. Solana: A New Architecture for a High Performance Blockchain. 2017. [17] Decred Documentation: Issuance. docs.decred.org — blok ödülünün PoW madencileri, PoS oy verenleri ve hazine arasında bölünmesi. [18] EIP-4844: Shard Blob Transactions. Ethereum Improvement Proposals, 2022. [19] Monero: Dynamic Block Weight and Penalty. Monero Research Lab belgeleri; ayrıca bkz. JollyMort, Monero Dynamic Block Size and Dynamic Minimum Fee, 2017. [20] bitcoincashautist. CHIP-2023-04: Adaptive Blocksize Limit Algorithm for Bitcoin Cash. 2023.