CoinNet dan Pembaruan Penggantian Transaksi
Implementasi Fungsionalitas
Validasi Informasi Pemotongan #1444 (Protokol Pemotongan, Fitur)
Masalah ini terkait dengan masalah #1076 yaitu tentang penerapan protokol pemotongan. Kami perlu membagi beberapa tugas yang terkait dengan validasi header blok dari masalah #1076 karena tugas memiliki banyak hal untuk dilakukan dan dapat memakan waktu.
Kami telah menambahkan informasi tentang validator yang dipotong menjadi satu blok. Informasi yang baru ditambahkan adalah sebagai berikut:
/// Hash benih acak dari preimages untuk ketinggian ini
Hash random_seed;
/// Daftar indeks ke set validator UTXO yang belum mengungkapkan preimage
uint [] validator_hilang;
‘Random_seed’ tidak boleh null dalam hal apapun, yang dihasilkan dari preimages validator saat ini, dan harus sama dengan ‘random_seed’ lokal dari node itu sendiri. Dalam kode Agora saat ini, terdapat 2 kasus dimana informasi tersebut tidak valid selain kasus dimana validator yang berperilaku tidak semestinya memanipulasi informasi tersebut. Berikut adalah 2 kasus tersebut:
- Dalam proses mengejar ketertinggalan, tidak ada gambar awal untuk menghasilkan benih acak lokal yang dibutuhkan untuk perbandingan. Jadi kita membutuhkan proses untuk mendapatkan pre-image dari node lain dan menambahkan informasinya ke dalam ValidatorSet.
- Dalam banyak pengujian unit atau pengujian jaringan, ada beberapa kasus yang tidak mempertimbangkan untuk mempertahankan preimages yang diperlukan untuk pemeriksaan validasi dan menghasilkan random_seed.
Pisahkan TxBuilder dari KeyPair #1348 yang terkenal (Blockchain, Fitur)
TxBuilder awalnya dibuat sebagai cara mudah untuk membuat segala jenis transaksi di rangkaian pengujian. Namun, ini terbukti cukup baik untuk digunakan sebagai fasilitas bangunan Transaksi umum.
Desain ini bergantung pada input yang diatribusikan ke keypairs terkenal, itu belum dapat digunakan di luar mode pengujian. Ini harus diperbaiki sehingga keduanya menjaga kenyamanan yang dimilikinya dalam rangkaian pengujian tetapi bekerja dengan pasangan tombol yang belum diketahui.
Atur peringatan untuk memulai kembali Agora #78 (Peringatan Blochain, Fitur)
Fitur ini dibuat agar restart yang tidak terjadwal akan memberi tahu kami. Mulai ulang terjadwal semoga bisa dilakukan secara otomatis (mis. Mengirim pesan ke #production).
Memerlukan statistik untuk tinggi blok saat ini #1405 (Alat Pemantauan, Peningkatan)
Sebelumnya, kami memiliki statistik seperti agora_block_externalized_total. Namun, ini tidak terlalu berguna. Ini hanya menghitung berapa banyak blok baru yang dieksternalisasi sejak terakhir kali node melakukan booting. Jadi jika node restart, hitungan ini akan menjadi nol. Jauh lebih berguna untuk hanya menunjukkan tinggi balok aktual. Dengan begitu, jika ada perbedaan di antara node, kami dapat dengan mudah melihatnya (dan membuat grafik).
TransactionPool tidak boleh memfilter transaksi pembelanjaan ganda #1332 (Penggantian Tx, Fitur)
Desain TransactionPool saat ini melarang pengenalan fitur seperti:
- ganti dengan biaya
- pemilihan transaksi & mekanisme filter #407
Dalam desain saat ini, jika dua transaksi yang menggunakan UTXO yang sama dikirim ke node, hanya satu transaksi yang akan diterima di pool (yang pertama). Itu membuat pemilihan transaksi menjadi kondisi balapan. Dan itu juga berarti kumpulan transaksi di seluruh node berada dalam status konflik – ini dapat memengaruhi konsensus misalnya.
Tentu saja, kami juga tidak ingin memperbesar ukuran kolam. Jalan tengah yang mungkin adalah menambahkan kemampuan untuk mengelompokkan tx pembelanjaan ganda bersama-sama. Misalnya, kumpulan dapat mengizinkan hingga N transaksi dengan UTXO yang sama, dan kemudian, algoritme pemilihan transaksi (#407) dapat memilih kandidat terbaik dari kumpulan pembelanjaan ganda. Saat pencekalan dieksternalisasi, semua pengeluaran tx terkait yang utxo yang sama akan dihapus dari kumpulan, dan bukan hanya tx yang ada di pencekalan.
Tambahkan stempel waktu ke blok #1406 (Blockchain, Fitur)
Tujuan kami adalah agar jaringan Agora menghasilkan satu blok setiap 10 menit. Namun, ini bukan persyaratan yang sulit karena node mungkin gagal menghasilkan blok jika jaringan mati, atau jika ada ketidakmampuan untuk mencapai konsensus pada waktunya.
Karena sifat frekuensi pembuatan blok yang tidak dapat diprediksi ini, transaksi stempel waktu tidak dapat dilakukan secara akurat hanya berdasarkan ketinggian blok tempat transaksi disertakan.
Stempel waktu UTC unix harus ditambahkan ke blok. Bidang ini akan menjadi bagian dari hash dan oleh karena itu ditandatangani.
Karena kami tidak memiliki node penambang, kami perlu menggunakan SCP untuk mencapai konsensus pada stempel waktu yang akan ditetapkan di blok. Ini memang menciptakan beberapa masalah yang perlu kita selesaikan:
- Kapan stempel waktu harus diusulkan? Haruskah itu bersama dengan Data Konsensus? Masalahnya di sini adalah total waktu yang diperlukan untuk mencapai konsensus tidak terbatas, yang berarti bahwa pada saat konsensus tercapai, stempel waktu yang diusulkan sudah cukup lama. Haruskah stempel waktu diusulkan di luar ConsensusData dalam putaran pemungutan suara terpisah setelah konsensus transaksi tercapai? Tidak ada yang menghalangi kami untuk menggunakan SCP untuk memberikan suara pada proposal terpisah, jadi kami dapat menggunakan pendekatan ini. Memberi suara pada stempel waktu harus kurang kontroversial daripada memberi suara pada set transaksi.
Pengembangan Berkelanjutan
- Agora saat ini gagal dengan galat Vibe.d #1432
- Menerapkan saluran pembayaran tidak langsung melalui HTLC #1419
- Simpan informasi build dalam biner #1472
- Memotong validasi informasi #1444
- Penelitian & pengembangan lapisan flash #1266 (berkelanjutan)
- Menerapkan dukungan pelarangan koneksi masuk di vibe.d #202
- Dapatkan pengetahuan latar belakang tentang Kontrak Cerdas #1463
- Tambahkan persyaratan untuk halaman “Transisi” ke dompet #93