Timechain, atau Blockchain Bitcoin, adalah rantai blok sah yang terhubung dari Genesis Block hingga ujung jaringan saat ini. Setiap blok berikutnya menunjuk hash pendahulunya, yaitu sidik jari digitalnya, dan menambahkan Proof of Work, bukti kerja komputasi yang dibutuhkan untuk membuat blok. Dengan demikian, node dapat memeriksa secara mandiri riwayat mana yang mengikuti aturan dan memiliki kerja terakumulasi terbesar. Di sini, ‘waktu’ bukan berarti jam yang tepat untuk setiap transaksi, melainkan terutama urutan peristiwa yang dapat dibuktikan.
Bayangkan riwayat pembukuan publik yang setiap halaman barunya dapat diperiksa secara mandiri oleh ribuan komputer. Satu halaman adalah satu blok. Blok memuat sekumpulan transaksi dan rujukan ke blok sebelumnya, sehingga halaman memiliki urutan pasti dan tidak dapat diacak sesuka hati. Timechain adalah seluruh urutan yang terhubung itu, dari blok pertama hingga ujung hari ini. Ia tidak mencatat berapa banyak bitcoin yang dimiliki setiap orang berdasarkan nama; ia menyimpan riwayat transaksi yang dipakai node untuk menentukan output yang masih belum dibelanjakan. Ia juga bukan server milik satu perusahaan. Setiap Full Node (node yang memeriksa sendiri transaksi dan aturan jaringan) dapat mengunduh dan memeriksa salinannya. [1] [3]
Dalam konteks Bitcoin, kedua nama itu menunjuk riwayat blok yang sama. Kode pra-peluncuran yang masih tersimpan dari November 2008 memakai timechain dalam komentar serta nama variabel atau fungsi. Whitepaper justru berbicara tentang penandaan waktu, rantai blok, dan rantai Proof of Work; kata persis timechain tidak muncul di sana. Blockchain kemudian menjadi istilah yang lazim di seluruh dunia. Kini istilah itu juga menjadi sebutan luas untuk jaringan dan basis data lain, sedangkan Bitcoin Timechain adalah rantai khusus milik Bitcoin. Jadi, dua kata dalam judul bukan nama dua protokol. Keduanya mempertahankan nama bersejarah berdampingan dengan istilah umum masa kini. [2] [1] [8]
Tanda tangan digital dapat membuktikan bahwa transaksi disahkan oleh pemegang kunci yang diperlukan. Namun, tanda tangan saja tidak dapat mencegah seseorang menandatangani dua transaksi bertentangan yang mencoba membelanjakan output belum dibelanjakan yang sama dari transaksi sebelumnya, disebut UTXO. Satu node mungkin lebih dulu menerima pembayaran kepada pedagang, sedangkan node lain lebih dulu menerima pemindahan nilai yang sama kembali kepada pengirim. Karena itu, jaringan memerlukan riwayat bersama yang menentukan pembelanjaan mana yang dikonfirmasi dan mana yang tidak lagi dapat sah. Blok memberikan tempat yang dapat diperiksa bagi transaksi dalam urutan tersebut. Blok tidak membuktikan pesan mana yang dibuat lebih dahulu menurut waktu manusia atau jaringan; node bisa saja melihat transaksi belum terkonfirmasi dalam urutan berbeda. [1]
Block Header memuat data pokok suatu blok. Di antaranya adalah hash header sebelumnya dan Merkle Root, yang menggabungkan pengenal transaksi blok itu menjadi satu hash. Hash menyerupai sidik jari digital: perubahan kecil pada input menghasilkan nilai berbeda. Mengubah transaksi lama akan mengubah Merkle Root, hash blok itu, dan rujukan yang disimpan blok berikutnya. Penyuntingan tidak akan berhenti pada satu baris sejarah; seluruh urutan setelahnya akan terputus. Hash saja tidak membuktikan bahwa transaksi mengikuti aturan. Node juga harus memvalidasi transaksi, dan setiap blok harus memenuhi Proof of Work yang diwajibkan. [3] [1]
Node tidak menerima suatu cabang hanya karena lebih panjang atau didukung penambang besar. Node terlebih dahulu memeriksa aturan: Proof of Work, hubungan dengan blok sebelumnya, imbalan yang diizinkan, transaksi, syarat pembelanjaan, dan apakah input merujuk dana yang sudah dibelanjakan. Cabang tidak sah tetap tidak sah, berapa pun daya komputasi pembuatnya. Hanya di antara kandidat sah node memilih rantai dengan kerja terakumulasi terbesar. Karena itu, ‘cabang sah dengan kerja terbesar’ lebih tepat daripada sekadar ‘rantai terpanjang’. Field chainwork memperkirakan jumlah perhitungan hash yang diharapkan untuk menghasilkan rantai pada tingkat kesulitan tiap blok; nilainya bukan penghitung percobaan yang benar-benar dilakukan penambang. [4] [5] [6]
Proof of Work memerlukan waktu, listrik, dan daya komputasi, sedangkan hasilnya cepat diperiksa. Seseorang yang mengubah blok lama harus menghasilkan Proof of Work sah yang baru untuk blok itu, menyambungkan kembali semua blok sesudahnya, dan terus mengejar kerja yang tetap ditambahkan cabang jujur. Semakin dalam sebuah blok berada di bawah ujung, semakin besar keunggulan riwayat biasa. Ini bukan janji matematis bahwa masa lalu sama sekali tidak dapat berubah. Ini adalah pertahanan ekonomi dan probabilistik: blok tambahan biasanya membuat penulisan ulang yang berhasil menjadi jauh lebih mahal. Penyerang juga tidak dapat memasukkan pembayaran tidak sah sesuka hati atau bitcoin berlebih ke cabang pengganti, sebab node lain akan menolak blok tersebut. [1] [4]
Penambang menaruh timestamp dalam Block Header. Aturan konsensus memberi sedikit kelonggaran, sehingga nilai time bukan bukti tepat kapan suatu blok atau transaksi tertentu dibuat. Timestamp sebuah blok bahkan tidak harus lebih tinggi daripada pendahulu langsungnya. Untuk sebagian aturan, Bitcoin karena itu menggunakan Median Time Past, yaitu median timestamp dari 11 blok sebelumnya. Median diperoleh dengan mengurutkan timestamp tersebut dan memilih nilai di tengah. Nilai ini bergerak lebih stabil daripada timestamp tunggal. Rata-rata interval blok sepuluh menit juga bukan jadwal. Dua blok dapat datang berdekatan, sementara jeda berikutnya jauh lebih lama. Tinggi blok memberikan posisi tepat dalam rantai, bukan waktu tepat pada kalender. [4] [7]
Dua penambang dapat menemukan blok sah yang berbeda hampir bersamaan pada tinggi yang sama. Sebagian node lebih dahulu melihat satu cabang, sementara node lain melihat cabang sebaliknya. Ketika Proof of Work berikutnya menciptakan perbedaan di antara cabang sah, node berpindah ke cabang dengan kerja terakumulasi lebih besar. Peralihan ini disebut Reorg. Transaksi dari blok yang terputus dapat dikonfirmasi di cabang baru, kembali ke Mempool, atau menjadi tidak sah jika riwayat baru mengonfirmasi pembelanjaan yang bertentangan. Masuk ke satu blok adalah konfirmasi pertama; setiap blok di atasnya menambah satu lagi. Tidak ada satu angka ajaib yang berlaku untuk semua pembayaran. Tingkat keyakinan yang tepat bergantung pada nilai, risiko, dan kemampuan untuk menunggu. [1] [3]
Bitcoin memungkinkan pembuatan transaksi yang baru boleh dikonfirmasi mulai dari tinggi blok tertentu atau setelah waktu yang ditetapkan. Timelock bukan perintah untuk menjalankan transaksi secara otomatis pada menit itu. Ia hanya menetapkan titik paling awal ketika suatu blok sah boleh memasukkannya. Untuk nLockTime berbasis waktu, BIP 113 memakai Median Time Past blok sebelumnya, bukan timestamp blok yang sedang dibuat dan mudah digeser. Dengan demikian, syarat bertumpu pada riwayat beberapa blok. Setelah terpenuhi sekalipun, transaksi masih harus disiarkan, diterima node, dan dipilih penambang; masuk ke blok tertentu tidak dijamin. [7] [4]
RPC adalah antarmuka untuk mengirim perintah ke node dan membaca jawabannya. Full Node tidak perlu memercayai pernyataan explorer publik bahwa suatu blok atau transaksi termasuk dalam riwayat saat ini. Untuk hash tertentu, RPC getblock dapat menampilkan height, jumlah konfirmasi, Merkle Root, time, mediantime, hash sebelumnya, tingkat kesulitan, dan chainwork. Setiap field menjawab pertanyaan berbeda: height memberi posisi; previousblockhash menunjukkan asal-usul; confirmations menunjukkan kedalaman di bawah ujung saat ini; time adalah nilai header; mediantime adalah median; chainwork mewakili kerja terakumulasi yang diharapkan. Tidak ada satu angka yang cukup. Tujuan Timechain adalah agar node memeriksa hubungan semuanya dan seluruh aturan konsensus sebagai satu kesatuan. [6] [4]
Untuk gambaran yang lebih utuh, baca entri ini bersama Genesis Block, Proof of Work, Transaksi, Full Node, Difficulty Adjustment. Entri ini juga dirujuk dari Bitcoin Whitepaper, Genesis Block, Proof of Work, Full Node.