Sayaç: Başarısız Bir İşlemin Ona Yaptığı ve Bu Dağıtımın Kendisinden Nasıl Korunması Gerektiği

Ne işe yarar

İmzalı bir işlem hamiline yazılı bir nesnedir. Onu gören herkes yeniden gönderebilir.

Sayaç bunu durdurur. Her hesap bir sayaç taşır; bir işlem beklediği değeri adlandırır ve zincir aksi hâlde onu reddeder. Bir kez kullanıldığında o değer bir daha hiç işe yaramaz.

Bu zincirde yeniden oynatma korumasının tamamı odur, çünkü imza hiçbir zincir tanımlayıcısına ve hiçbir süre sonuna bağlanmıyor.

Boru hattı, yürütücünün çalıştırdığı sırayla

bir: imzayı doğrula iki: gönderenin hesabını yükle üç: sayacı karşılaştır dört: ücreti hesapla ve bakiyenin onu karşıladığını kontrol et beş: ücreti düş ve sayacı artır altı: işlemi çalıştır

Sınır dört ile beş arasındadır ve bir gönderenin gerçekten bilmesi gereken tek şey odur.

Yani kural, tam olarak

Bir ile dört arasındaki adımlarda başarısız olan bir işlem hiçbir şeye mal olmaz. Ücret yok, sayaç kıpırdamaz, durum yazılmaz. Hesap tam olarak olduğu gibidir.

Dördüncü adımı geçen bir işlem, sonrasında işlem başarısız olsa bile sayacı ve ücreti tüketir. Tuttuğunuzdan fazlası için bir transfer altıncı adımda işleyici tarafından reddedilir ve o zamana kadar çoktan ödemişsinizdir.

Makbuzlar bunu doğruluyor. Bu estate'te daha önce ölçülen ve ücretin kendisini karşılayamadığı için başarısız olan işlemler sıfır ücret bildiriyor ve ücreti karşılayıp tutarı karşılayamayan biri alınan ücreti bildiriyor. Kaynaktaki sıra ile zincirdeki makbuzlar uyuşuyor.

Bu da "başarısız"ın tek bir şey olmadığı anlamına geliyor

İki işlem de başarısız diyebilir ve hesabınız hakkında zıt şeyler ifade edebilir.

Buna karşı inşa eden bir okur, "bu bana bir şeye mal oldu mu" sorusunun cevabı olarak durum dizgisini değil ücret alanını ele almalıdır. Ve başarısız bir işlemi aynı sayaç değeriyle yeniden deneyen bir cüzdan yalnızca ilk durumda başarılı olur, çünkü ikincisinde sayaç kıpırdamıştır.

Ve dağıtımın kendisinden korunması gerekti

Buradaki dört doğrulayıcının hepsi tek bir veritabanını paylaşıyor. Her motor aynı teklif edilmiş bloğu ona karşı yürütüyor.

Dolayısıyla ilk motor sayacı artırıyor ve ikinciden dördüncüye kadar olanlar sayaç kontrolüne çarpıp başarısız oluyor, çoktan başarılı olmuş bir işlem için sahte bir ret üretiyor ve iyi makbuzun üzerine onu yazıyor.

Düzeltme bir kısa devre: çoktan bir makbuz taşıyan bir işlem yeniden yürütülmüyor ve mevcut makbuz döndürülüyor. Yorum, neden sağlam olduğu dahil gerekçeyi belirtiyor: işlem tanımlayıcısı gönderene, sayaca, yüke ve imzaya taahhüt veriyor, dolayısıyla aynı tanımlayıcıya sahip iki işlemin aynı etkiye sahip olması gerekir.

Ve aynı yorum, kontrolün üretimde işlevsiz olduğunu söylüyor, çünkü orada her doğrulayıcının kendi deposu olurdu. Yani bu ağda çalıştırılan yürütme yolu, üretimin kullanacağı yol tam olarak değildir, ki bu herhangi bir geliştirme dağıtımı hakkında bilinmesi adil olan ve nadiren yazıya dökülen bir şeydir.

Sayaç kendi makbuzunun da gerisinde kalabilir

İstemci kitaplığı, bir işlem bayat bir sayaç yüzünden reddedildiğinde bir kez yeniden deniyor ve sebep kodda kayıtlı: bir oluşturmanın hemen ardından aynı imzalayandan gelen başka bir işlem sayaç uyuşmazlığıyla başarısız oldu, çünkü arama önceki makbuza yetişmemişti.

Yani sayacı okumak, sonra imzalamak, sonra göndermek bir yarıştır ve kitaplık bunu yokmuş gibi davranmak yerine tek bir yeniden denemeyle örtüyor.

Ve bu sayfanın borçlu olduğu bir düzeltme

Yedi işlem türünün ücretten muaf olduğunu yayımladık. Sekiz ve sekizincisi bir tanımlayıcı işlemi değil bir hesaplama düğümü kaydetmek.

Sebep sayıdan değerli: muafiyet listesini, kendi yorumu canlı olandan kelimesi kelimesine aktarıldığını söyleyen ikinci ve daha yeni bir yürütücü kopyasında okuduk. Aktarılmamıştı. Kelimesi kelimesine aktarıldığını söyleyen bir yorum, kelimesi kelimesine bir aktarma değildir ve sayfa düzeltilmiştir.

Kendiniz neyi kontrol edebilirsiniz

başarısız herhangi bir işlemin makbuzunu çekin ve status yerine fee_paid okuyun

Sıfır, ücret adımına hiç ulaşmadığı ve sayacınızın kıpırdamadığı anlamına gelir. Sıfır olmayan, ikisini de yaptığı anlamına gelir ve o hesaptan gelecek sonraki işlem bir sonraki değere ihtiyaç duyar.

Okumaya devam edin

Sayaç: Başarısız Bir İşlemin Ona Yaptığı ve Bu Dağıtımın Kendisinden Nasıl Korunması Gerektiği · Solidus