Soft Fork memperketat aturan yang dipakai node untuk menilai keabsahan blok dan transaksi. Yang memenuhi aturan baru juga memenuhi aturan lama; sebaliknya belum tentu. Namanya menjelaskan hubungan antaraturan, bukan penciptaan koin lain atau jaminan peralihan yang aman.
Bayangkan Anna dan Pavel memverifikasi Bitcoin di komputer masing-masing. Anna sudah memperbarui perangkat lunaknya, sedangkan Pavel belum. Lalu muncul perubahan seperti BIP66: tanda tangan digital, yang membuktikan wewenang untuk membelanjakan bitcoin tertentu, harus mengikuti format yang ditetapkan lebih ketat. Beberapa bentuk pengodean yang dulu diterima kini tidak diizinkan. Pembayaran dengan tanda tangan sah dalam format yang kini diwajibkan akan lolos pemeriksaan ini di kedua komputer. Namun, jika tanda tangan memakai pengodean yang dulu diizinkan tetapi kini dilarang, Anna menolaknya sementara Pavel masih mungkin menerimanya. Di sini kita menganggap pembayaran itu memenuhi semua aturan lainnya. Itulah inti Soft Fork: aturan baru melarang lebih banyak kasus tanpa mengizinkan sesuatu yang dilarang aturan lama. Selama penambang menghasilkan blok yang memenuhi aturan lebih ketat, keduanya dapat terus mengikuti rantai tersebut. Namun, Pavel tidak memeriksa syarat tambahan itu sendiri. Jadi, Soft Fork memungkinkan Bitcoin berubah tanpa seluruh node harus diperbarui bersamaan. Bukan berarti perangkat lunak lama memeriksa selengkap perangkat lunak baru, dan perubahan ini tidak dengan sendirinya menciptakan mata uang kedua. [1] [6]
Full Node adalah komputer yang memeriksa aturan Bitcoin secara mandiri. Saat memilih di antara cabang yang sah, ia membandingkan akumulasi kerja yang dibuktikan penambangan, bukan suara para pendukung. Full Node lama tetap dapat mengikuti rantai karena penambang yang diperbarui biasanya menghasilkan blok yang diterimanya. Namun, node itu tidak memeriksa syarat tambahan. Ia bisa menerima cabang dengan akumulasi kerja lebih besar yang melanggar aturan baru, sementara node baru menolaknya. Pengguna yang memerlukan perlindungan baru harus memperbarui perangkat lunak validasinya. Menerima pembayaran, mengenali format alamat, dan memvalidasi seluruh aturan konsensus bukan kemampuan yang sama. [1] [12]
BIP adalah usulan teknis bernomor. Menerbitkannya belum mengubah jaringan: perangkat lunak harus dikembangkan dan diperiksa, lalu pengguna memutuskan apakah akan menjalankannya. Mainnet adalah jaringan utama Bitcoin, tempat bitcoin sungguhan dipindahkan. Aktivasi menentukan kapan node yang diperbarui mulai mewajibkan aturan baru di jaringan itu. Jadi, adanya kode dalam program berbeda dengan penggunaan kode itu untuk memeriksa blok. Dalam prosedur yang dijelaskan di sini, lock-in berarti syarat untuk aktivasi berikutnya sudah terpenuhi; aturannya sendiri belum tentu berlaku. Node memeriksanya setelah mencapai status ACTIVE. Status dihitung dari blok-blok sebelumnya pada cabangnya sendiri. Jika reorganisasi mengubah riwayat itu di dekat batas aktivasi, hasil perhitungan juga dapat berubah. Karena itu, dua program dengan parameter aktivasi berbeda dapat menerima blok yang berbeda pada saat yang sama. [2] [15]
Penambang membangun blok di atas blok sebelumnya, juga disebut blok induk. Tanpa memeriksa induknya, ia dapat membuang kerja pada cabang yang ditolak node lain. Pada Juli 2015, sebagian penambang memberi sinyal BIP66 tetapi tidak cukup memvalidasi blok induk tempat mereka melanjutkan penambangan. Mereka memperpanjang blok yang tidak sah, membentuk cabang tidak sah sepanjang enam blok pada 4 Juli, lalu cabang yang lebih pendek keesokan harinya. Node validasi yang diperbarui menolak keduanya. Nomor atau bit versi adalah klaim penambang, bukan bukti bahwa ia memeriksa templat blok, blok induk, dan transaksi secara mandiri. [6] [14]
Untuk mengetahui aturan yang benar-benar dipakai node Anda, mulailah dari versi perangkat lunak dan informasi yang dikembalikan node itu sendiri. Bergantung pada versinya, getdeploymentinfo dan getblockchaininfo memberikan informasi tentang perubahan yang diterapkan dan rantai. Bersama dokumentasi versi tersebut, tinggi aktivasi, dan log, informasi ini membantu membedakan aturan yang sudah disiapkan dari aturan yang sudah aktif. Penjelajah blok di web menunjukkan pandangan layanan lain, bukan bukti tentang pemeriksaan komputer Anda. Hashrate mengukur kemampuan komputasi penambangan. Ia tidak memberi penambang hak untuk melewati aturan node Anda: dalam status ACTIVE, node yang diperbarui menolak blok yang melanggar syarat baru, sekalipun didukung mayoritas daya penambangan. Bertahannya perpecahan rantai juga bergantung pada kerja yang terkumpul di setiap cabang dan penggunaan ekonominya. Menghapus begitu saja batasan yang aktif akan mengizinkan kembali blok yang kini tidak sah, sehingga merupakan Hard Fork. Sebelum aktivasi, parameter dapat diubah melalui rilis perangkat lunak yang terkoordinasi. Namun, perubahan itu juga tidak memasang dirinya sendiri pada node orang lain. [1] [15] [16]
V(lama) memuat semua blok yang diterima sebelum pembaruan. Perubahan disebut Soft Fork hanya jika V(baru) berada di dalamnya: node baru menolak lebih banyak kasus, sedangkan setiap blok yang memenuhi aturan baru tetap lolos pemeriksaan lama. Istilah ini menjelaskan hubungan antaraturan, bukan bahwa perubahannya kecil, aman, atau disepakati masyarakat. Menaikkan batas yang terlihat oleh node lama atau mengizinkan pembelanjaan yang sebelumnya tidak sah memperluas himpunan dan umumnya memerlukan Hard Fork. [1] [17]
Aturan yang lebih ketat juga dapat menghadirkan fungsi baru. BIP66 memperjelas DER, format pengodean data tanda tangan. BIP65 dan BIP112 menambahkan syarat waktu pembelanjaan pada beberapa perintah NOP yang sebelumnya tidak memberlakukan syarat apa pun. SegWit memperkenalkan program witness dan data validasi bernama witness, termasuk tanda tangan. Taproot kemudian memakai versi cadangan 1. Node lama tidak memeriksa syarat baru yang terkait. Anyone-can-spend menggambarkan pandangan terbatas ini, bukan cara mengelabui node yang diperbarui untuk membelanjakan koin orang lain. SegWit juga mengikat data witness secara kriptografis ke blok melalui witness commitment. Ikatan ini tersimpan dalam transaksi coinbase, transaksi pertama yang memuat imbalan penambang, sambil menjaga kompatibilitas dengan aturan blok dasar yang lama. [6] [5] [7] [8] [12]
Bit memiliki nilai 0 atau 1. Bit-bit dalam nVersion, kolom versi di header blok, dapat menandakan kesiapan penambang. BIP9 menetapkan nama, bit tertentu, waktu mulai, dan tenggat untuk setiap penerapan. Prosedur mainnet awal menilai periode 2016 blok. Jika sedikitnya 1916 blok memberi sinyal selama STARTED, yaitu 95 %, periode berikutnya masuk ke LOCKED_IN. Satu periode tunggu lagi mendahului ACTIVE. Jika syarat tidak terpenuhi sebelum tenggat, prosedur dapat berakhir di FAILED. Status awal sebelum dimulai disebut DEFINED. Setiap node menghitung urutan status ini dari blok-blok sebelumnya. Karena itu, nVersion milik suatu blok tidak menentukan apakah aturan baru berlaku untuk blok tersebut. Sinyal membantu mengoordinasikan peralihan, bukan menjadi pemungutan suara atas keabsahan masing-masing blok. Setelah lock-in tercapai, sinyal berikutnya tidak lagi mengubah hasil prosedur ini. [2]
Versionbits memungkinkan penambang menunjukkan kesiapan, bukan mengubah aturan node lain. BIP8 memakai tinggi blok, bukan batas waktu. Jika lockinontimeout bernilai true dan penerapan belum mencapai lock-in, periode terakhir dapat masuk ke MUST_SIGNAL yang mewajibkan sinyal. BIP148 mengharuskan node peserta menolak blok yang tidak memberi sinyal SegWit; BIP91 memakai ambang sinyal penambang yang lebih rendah untuk mengoordinasikan peralihan ini. Jika penerapan aturan, hashrate, dan penerimaan ekonomi berbeda arah, rantai dapat terbelah. Karena itu, pilihan mekanisme aktivasi melibatkan pertimbangan keamanan. [11] [9] [10] [17]
P2SH (BIP16) memungkinkan dana dikirim ke hash skrip, yaitu program yang menetapkan syarat pembelanjaan dana itu kelak. Saat diperkenalkan pada 2012, sinyal dalam transaksi coinbase membantu menilai kesiapan penambang. Namun, pemeriksaan baru mulai berlaku berdasarkan batas waktu blok yang ditetapkan; sinyal tidak menggantikan verifikasi. Coinbase adalah transaksi pertama dalam blok yang memuat imbalan penambang. Perubahan berikutnya memakai versi blok dan ambang sinyal. BIP34 mewajibkan tinggi blok, posisinya dalam rantai, dicatat dalam coinbase. BIP66 memperketat format tanda tangan DER, sedangkan BIP65 memperkenalkan CHECKLOCKTIMEVERIFY untuk memeriksa waktu atau tinggi paling awal yang mengizinkan pembelanjaan. Menaikkan nomor versi secara berurutan menyulitkan penerapan perubahan independen secara paralel, sehingga BIP9 memperkenalkan bit-bit terpisah. Pada 2016, BIP68, BIP112, dan BIP113 aktif bersama pada tinggi 419328, tetapi mengatur syarat waktu yang berbeda. BIP68 memperkenalkan waktu tunggu relatif sejak konfirmasi output yang dibelanjakan. BIP112 memungkinkan skrip mewajibkan waktu tunggu itu melalui CHECKSEQUENCEVERIFY, atau CSV. Sebaliknya, BIP113 mengubah acuan waktu untuk penguncian absolut transaksi: ia memakai Median Time Past, median stempel waktu 11 blok sebelumnya, bukan stempel waktu blok yang sedang dinilai. Aktivasi bersama tidak berarti ketiganya memperkenalkan penguncian relatif yang sama. [3] [4] [5] [6] [7] [18] [19] [20]
SegWit aktif pada tinggi 481824 pada Agustus 2017. Ia memisahkan data verifikasi witness, seperti tanda tangan, dari bagian transaksi yang dipakai menghitung pengenal txid. Mengapa penting? Pada pengodean lama, seseorang dapat mengubah representasi tanda tangan dan dengan demikian pengenal transaksi, tanpa mengubah penerima atau jumlah pembayaran. Kemungkinan ini disebut malleability. Mengubah data witness saja tidak mengubah txid; tetapi cara ini tidak memperbaiki input yang masih menggunakan format lama. Node lama melihat transaksi tanpa witness dan menganggap program witness v0 sebagai anyone-can-spend. Node yang diperbarui juga memeriksa witness serta digest tanda tangan, sidik jari data yang ditandatangani. Witness commitment yang disimpan dalam output coinbase mengikat data witness secara kriptografis ke blok, sehingga verifikasi lengkap dapat mendeteksi perubahan atau penghilangan data. Weight, bobot data saat menghitung penggunaan kapasitas blok, meningkatkan kapasitas efektif. Blok dasar yang terlihat oleh node lama tetap berada dalam batas semula, yaitu satu megabita. [8]
Key-path membelanjakan dengan tanda tangan untuk kunci output; script-path memenuhi syarat skrip yang diungkap. Schnorr adalah skema tanda tangan, sedangkan Tapscript adalah bahasa skrip tersebut. BIP341 dan BIP342 menetapkan pembelanjaan melalui key-path dan script-path, dengan tanda tangan Schnorr dan Tapscript, untuk program witness v1 sepanjang 32 byte pada output SegWit native. Node lama menganggapnya anyone-can-spend: kompatibilitas terjaga, tetapi validasi tidak lengkap. Speedy Trial memakai BIP9 yang dimodifikasi, ambang 1815 dari 2016 blok (90%), dan tinggi aktivasi minimum 709632. Taproot aktif di sana pada 14 November 2021. Aturan dan mekanisme aktivasi perlu ditinjau secara terpisah. [12] [13] [16]
Untuk gambaran yang lebih utuh, baca entri ini bersama Aturan konsensus, BIP (Bitcoin Improvement Proposal), SegWit, Taproot, Hard Fork, Bitcoin. Entri ini juga dirujuk dari Hard Fork, BIP (Bitcoin Improvement Proposal), Aturan konsensus, Reorg.