Bitcoin Core 32: Meningkatkan Kecepatan Validasi dan Estimasi Biaya

3 jam yang lalu
3 menit baca
2 tampilan

Pengujian Rilis Bitcoin Core 32.0

Bitcoin Core 32.0 telah memasuki siklus pengujian kandidat rilis final setelah para pengembang menandai versi 32.0rc1 pada 14 September. Pembaruan ini membawa estimasi biaya, kinerja validasi blok, dan perbaikan keamanan lebih dekat ke rilis yang direncanakan pada 10 Oktober. Rilis resmi proyek Bitcoin Core di GitHub menunjukkan versi 32.0rc1 pada commit d0231bb, ditandatangani dengan tanda tangan pemelihara yang terverifikasi pada 14 September pukul 12:58 UTC. Jadwal rilis proyek ini masih menargetkan 10 Oktober untuk tag final versi 32.0, meskipun tanggal tersebut tetap tergantung pada pengujian dan perbaikan lebih lanjut.

Fokus Pembaruan Versi 32

Versi 32 berfokus pada perilaku perangkat lunak node, antarmuka dompet, perhitungan biaya, jaringan, dan kinerja. Catatan rilis draft tidak mencantumkan perubahan pada aturan konsensus Bitcoin, yang berarti pembaruan ini tidak mendefinisikan ulang transaksi atau blok mana yang dianggap valid oleh jaringan. Bitcoin Core 32.0 memasuki pengujian akhir dengan pembaruan biaya dan keamanan. Proyek ini memasuki pembekuan fitur pada 20 Agustus, membatasi pekerjaan pada perbaikan yang diperlukan sebelum rilis. Pada 14 September, mereka memisahkan cabang 32.x dari cabang pengembangan utama dan memulai siklus kandidat rilis, sementara pekerjaan pengembangan untuk versi 33 dilanjutkan secara terpisah.

Kandidat Rilis dan Umpan Balik

Kandidat pertama ditujukan untuk operator node, pengembang dompet, dan pengguna lain untuk menguji sebelum para pengembang memutuskan apakah kode tersebut siap untuk rilis stabil. Bitcoin Core membuka masalah umpan balik pengujian kandidat rilis 32.0 yang didedikasikan pada 15 September, satu hari setelah RC1 ditandai. Proyek ini meminta penguji untuk menggunakan panduan pengujian untuk pemeriksaan khusus RC dan melaporkan masalah perangkat lunak melalui masalah GitHub terpisah. Tidak ada biner final versi 32.0 yang dirilis hingga 16 September. Bitcoin Core tidak memperbarui secara otomatis. Operator memilih kapan untuk menginstal versi baru, yang berarti rilis yang lebih lama dapat tetap aktif setelah perangkat lunak yang lebih baru tersedia. Model peningkatan manual tersebut telah menjadi penting dalam pengungkapan keamanan sebelumnya.

Perubahan Estimasi Biaya dan Kinerja

Salah satu perubahan yang lebih terlihat bagi pengguna di Bitcoin Core 32 mempengaruhi estimasi smartfee, RPC yang digunakan oleh dompet dan aplikasi untuk menghitung biaya transaksi. Hingga saat ini, estimator utama Bitcoin Core bergantung pada perilaku konfirmasi yang diamati dari transaksi yang termasuk dalam blok-blok sebelumnya. Versi 32 menambahkan estimator terpisah berdasarkan transaksi yang saat ini menunggu di dalam mempool node. Estimator mempool baru menghasilkan estimasi yang ekonomis dan konservatif dari kondisi transaksi yang tertunda saat ini. Bitcoin Core memeriksa aktivitas blok terbaru sebelum menggunakannya dan dapat menolak estimasi ketika mempool tampak terlalu jarang atau tidak sehat.

Peningkatan Kinerja Validasi Blok

Bitcoin Core 32 mengubah cara node mengambil data transaksi saat menghubungkan blok, terutama ketika informasi yang diperlukan harus dibaca dari penyimpanan. Perangkat lunak ini sekarang dapat mengambil output transaksi sebelumnya, yang dikenal sebagai prevouts, dari basis data chainstate melalui beberapa utas pekerja sementara validasi blok terus berlangsung. Defaultnya adalah delapan utas prefetch, dengan operator dapat meningkatkan pengaturan menjadi 16 atau menonaktifkan pengambilan paralel dengan mengaturnya menjadi nol. Prevouts mengidentifikasi koin yang dibelanjakan oleh input transaksi. Node memerlukan informasi tersebut untuk memeriksa apakah input ada, belum dibelanjakan, dan memenuhi aturan validasi yang berlaku.

Perubahan RPC dan Keamanan

Perubahan RPC terpisah memberikan lebih banyak informasi kepada operator selama validasi latar belakang AssumeUTXO. Setelah node berbasis snapshot mencapai puncak rantai, getblockchaininfo sekarang dapat melaporkan kemajuan validasi rantai historis yang masih berjalan di belakang status node aktif. Bitcoin Core 32 memperbaiki cacat notifikasi dompet yang mempengaruhi sistem non-Windows di bawah seperangkat kondisi yang sempit. Catatan draft menyatakan bahwa pengguna RPC yang terautentikasi dengan izin untuk membuat dompet dapat membuat nama dompet yang mengandung karakter pengganti khusus ketika node dikonfigurasi dengan -walletnotify.

Masalah dan Perbaikan

Masalah kedua muncul selama tinjauan server HTTP yang ditulis ulang di Bitcoin Core, yang menggantikan libevent di versi 32. Pengembang Matthew Zipkin mengajukan permintaan tarik #36123 setelah audit menggunakan model Kimi K3 dari Moonshot AI mengidentifikasi jalur kehabisan memori. Sementara server menangani satu permintaan, ia dapat terus membaca dan mengantri data yang dikirim oleh koneksi yang sama tanpa batas ukuran yang efektif. Analisis pertama menunjukkan bahwa kondisi tersebut terutama memerlukan klien terautentikasi yang mampu menjaga permintaan tetap sibuk.

Perubahan Format PSBT

Dalam liputan terkait, crypto.news melaporkan bahwa Core Lightning mengonfirmasi cacat keamanan setelah meninjau laporan yang dihasilkan AI dan memperingatkan operator untuk meningkatkan atau sementara menggunakan mode offline. Bitcoin Core 32 mengubah format default yang dibuat oleh empat perintah yang digunakan dengan Transaksi Bitcoin yang Ditandatangani Sebagian. createpsbt, walletcreatepsbt, converttopsbt, dan psbtbumpfee akan menghasilkan PSBT versi 2 secara default. Para pengembang menambahkan argumen opsional psbt_version sehingga aplikasi dapat secara eksplisit meminta versi lain yang didukung jika diperlukan.

Kesimpulan

Jadwal Bitcoin Core saat ini masih mencantumkan 10 Oktober sebagai target untuk menandai versi 32.0. Thread umpan balik pengujian RC yang dibuka pada 15 September tetap aktif, dengan para pengembang mengarahkan penguji yang menemukan cacat Bitcoin Core yang sebenarnya untuk mengajukan masalah terpisah sebelum rilis final.