#dusk $DUSK @Dusk
Dokumentasi transaksi Moonlight memiliki bagian yang kebanyakan orang perlakukan sebagai boilerplate — daftar lengkap properti keamanan yang secara resmi disebutkan dalam whitepaper. Ada empat, dan yang terakhir lebih menarik daripada yang terdengar.

Properti keamanan Moonlight: unforgeability (diamankan oleh tanda tangan digital), pencegahan double-spending (jaringan memeriksa saldo sebelum menerima), non-malleability (tanda tangan mencakup hash dari semua field transaksi, sehingga setiap perubahan membuatnya tidak valid), dan pencegahan replay-attack (diamankan oleh nonce).

Ada baiknya memikirkan apa sebenarnya yang dikerjakan nonce di sini.

Replay attack adalah ketika seseorang mengambil transaksi yang valid dan ditandatangani lalu mengirimkannya ulang. Tanda tangannya asli — itu memang tanda tangan Anda — tetapi Anda tidak mengotorisasi pengiriman yang spesifik ini. Tanpa mekanisme pencegahan replay, transaksi yang valid yang dikirim sekali bisa dikirim ulang tanpa henti oleh siapa pun yang berhasil menangkapnya.

Nonce menyelesaikan ini. Setiap akun Moonlight memiliki nonce saat ini — sebuah penghitung yang bertambah setiap kali transaksi diterima. Saat Anda mengirim transaksi, field nonce harus tepat current_nonce + 1. Jaringan menolak apa pun yang gagal dalam pemeriksaan tersebut. Setelah diterima, nonce akun bertambah, sehingga transaksi yang sama tidak bisa dikirim ulang.

Tidak mengatakan ini tidak biasa. Setiap chain berbasis akun yang serius menggunakan nonce untuk tujuan yang persis sama. Ethereum melakukannya dengan cara yang sama.

Dan bukan pula hal yang sepele. Nonce menjalankan pekerjaan yang terpisah dari tanda tangan — tanda tangan membuktikan otorisasi, nonce membuktikan bahwa instansi transaksi tertentu ini itu baru. Anda membutuhkan keduanya, dan keduanya menutup vektor serangan yang berbeda.

Yang belum saya urus adalah apakah nonce Moonlight bersifat global per akun atau per kontrak — apakah memanggil sebuah kontrak dan mengirim transfer langsung dari akun yang sama berbagi satu penghitung nonce, atau apakah setiap jenis interaksi memiliki urutan nonce-nya sendiri. @Dusk
$DUSK #dusk