KESİNLİK
BLOK YÜKSEKLİĞİ
AKTİF DOĞRULAYICILAR

Bir İşlem Nasıl İmzalanıyor: Dört Alan, Gerçek Bir Saldırıyı Kapatan Katı Bir Doğrulayıcı ve JSON Üzerinde Bir İmza

Zarf, gerçek bir işlemden

Herhangi bir işlemi getirin ve dört alan alın.

gönderenin açık anahtarı, otuz iki bayt bir sayaç değeri, gönderenin kendi sayacı bir yük, işlemi adlandıran bir imza, altmış dört bayt

türün bildirdiği tam olarak budur ve geri gelen tam olarak budur, yanıtta başka hiçbir şey olmadan.

Gerçekte neyin imzalandığı

İşlem değil. Birbirine eklenmiş üç şeyin özeti: açık anahtar, sekiz küçük-endian bayt olarak yazılmış sayaç değeri ve JSON olarak işlenmiş yük.

İmza, o özet üzerinde sıradan bir Ed25519 imzasıdır.

Ve işlemin tanımlayıcısı, imzalanmış nesnenin tamamı üzerinde ayrı bir özettir, dolayısıyla tanımlayıcı ancak imza var olduğunda var oluyor.

Adresiniz atanmıyor, türetiliyor

Açık anahtarı alın, özetleyin, ilk yirmi baytı tutun, base58 ile kodlayın.

Size kimse bir adres vermiyor. Açık anahtarınızı tutan herkes onu hesaplayabiliyor ve kimse ters yöne gidemiyor.

Bunun bir kısaltma olduğuna dikkat edin. Otuz iki baytlık bir özetin yirmi baytı kasıtlı bir boyut takasıdır ve çoğu zincirin yaptığı aynı seçimdir.

Doğrulayıcı katı olanı ve bu sayfadaki en iyi şey bu

Ed25519 kitaplıkları genelde iki doğrulama işlevi sunuyor. Bu kod katı olanı kullanıyor ve yanındaki yorum tam olarak sebebini söylüyor.

Katı olmayan doğrulama altında, tamamı sıfır bir açık anahtar ile tamamı sıfır bir imza birlikte her şeye karşı doğrulanıyor. Denklem boş yere sağlanıyor. Bir zincirde bu, birinin tamamı sıfır bir gönderen anahtarı iddia eden bir işlem gönderdiği ve onun geçtiği anlamına geliyor.

Katı doğrulama onu geri çeviriyor, diğer küçük mertebeli anahtarlarla ve genel olarak biçimlendirilebilir imzalarla birlikte.

Biri bunu düşündü, doğru seçti ve sebebini bir sonraki okur için yazdı. Bu, seçimin kendisinden değerlidir ve bu estate onu boşlukları bildirdiği kadar yüksek sesle bildiriyor.

İkinci bir faydası var: biçimlendirilebilir imzalar geri çevrildiği için, dürüst bir imzalayandan gelen belirli bir niyetin tek bir imzası ve dolayısıyla tek bir işlem tanımlayıcısı oluyor.

Ve ön görüntü bir JSON işlemesi

Yük JSON olarak seri hâle getiriliyor ve özetlenen şey o JSON'un baytları.

Yani bir imza ancak iki bağımsız JSON kodlayıcı aynı baytları üretirse doğrulanıyor. Zincir bir dilin seri hâle getiricisini kullanıyor. İstemci kitaplığı başka bir dilinkini.

Bu varsayımsal değil ve kendi kodumuz bunu gösteriyor. İstemci, bir yük türünün alan SIRASINI sabitleyen bir test taşıyor ve zarftaki bir anahtarı yükün içindeki aynı anahtara karşı yeniden kontrol eden ayrı bir koruma taşıyor. İkisi de tam baytlar önemli olduğu için var.

Pratikteki tuzak büyük tamsayılar. Bir tarayıcı sayısının tam olarak temsil ettiği aralığın ötesindeki bir tam sayı tutar farklı işleniyor ve imza sessizce eşleşmeyi bırakıyor. Bir JSON işlemesi yerine kurallı bir bayt kodlaması bütün sınıfı kaldırıyor, ki o bir düzeltmeden çok bir imzalama biçimi değişikliğidir.

Tekrar koruması sayaçtır ve yalnızca sayaç

Her hesap bir sayaç taşıyor. Bir işlem beklediği sayaç değerini adlandırıyor ve zincir aksi hâlde onu geri çeviriyor.

Kontrol, hiçbir şey alınmadan önce oluyor. Yanlış sayaçlı bir işlem, ücret alınmadan başarısız bir makbuz üretiyor, ki doğru sıra budur.

Ve korumanın tamamı sayaçtır. İmzalanan ileti hiçbir zinciri adlandırmıyor, dolayısıyla bir işlemi gitmesi amaçlanan yerde tutan şey, imzanın kendisindeki hiçbir şey değil, zincir başına sayaçtır.

Kendiniz neyi kontrol edebilirsiniz

işlemi olan bir yükseklikte solidus_getBlock, sonra özet üzerinde solidus_getTransaction

Alanları sayın. Sonra zinciri adlandıran bir alan, ya da bir zaman damgası, ya da bir son kullanma arayın. Hiç yok ve sayaç bütün o işi tek başına yapıyor.

Okumaya devam edin

Bir İşlem Nasıl İmzalanıyor: Dört Alan, Gerçek Bir Saldırıyı Kapatan Katı Bir Doğrulayıcı ve JSON Üzerinde Bir İmza · Solidus — Solidus Explorer