Lightning Watchtower adalah layanan yang memantau rantai Bitcoin untuk pengguna kanal pembayaran. Jika pihak lain menerbitkan keadaan kanal yang sudah dicabut, layanan ini dapat menyiarkan transaksi pemulihan yang telah disiapkan. Ini membantu saat node terputus, tetapi membutuhkan data yang benar, koneksi, dan konfirmasi tepat waktu. Node adalah program yang mengelola kanal dan memproses pembayaran Lightning; saat koneksinya terputus, program ini tidak dapat berkomunikasi dengan peserta lain.
Anna dan Pavel memiliki kanal pembayaran: dana mereka dikunci bersama di Bitcoin, lalu pembayaran Lightning mengubah pembagiannya. Pavel membayar Anna, keduanya menyepakati saldo baru dan mencabut keadaan sebelumnya. Kemudian koneksi internet Anna putus. Jika Pavel menerbitkan keadaan lama, ia bisa mencoba mengambil kembali uang yang sudah dibelanjakan. Anna dapat menggunakan Lightning Watchtower untuk menghadapi situasi ini. Node-nya mengirim data terenkripsi terlebih dahulu untuk melindungi keadaan yang telah dicabut. Ketika layanan mengenali transaksi terkait pada rantai, layanan dapat menyiarkan transaksi pemulihan tanpa menunggu Anna online. Layanan tidak melakukan pembayaran atas nama Anna atau memperbaiki koneksi node-nya. [1] [8]
Setiap pembagian dana yang disepakati memiliki commitment transaction: transaksi bertanda tangan yang dapat menutup kanal pada rantai Bitcoin. Saat memperbarui keadaan, para peserta bertukar informasi yang memungkinkan penerapan penalti jika keadaan sebelumnya yang sudah dicabut diterbitkan. Artikel ini membahas model kanal dengan mekanisme penalti tersebut. Jika Pavel memakai keadaan terkini yang sah, ia boleh menutup kanal secara sepihak saat Anna offline. Watchtower tidak dimaksudkan untuk menghalangi penutupan itu. Ia bertindak terhadap keadaan tercabut tertentu, baik diterbitkan dengan sengaja maupun tidak sengaja dari cadangan lama. Yang menentukan adalah pencabutan keadaan, bukan umur transaksinya. [1] [8]
Seed Phrase adalah cadangan berupa rangkaian kata untuk memulihkan kunci privat yang diperlukan saat menandatangani pembayaran. LND merupakan salah satu program untuk menjalankan node Lightning. Anna tidak memberikan Seed Phrase atau kunci privat seluruh dompetnya kepada layanan. Ia menyediakan data dan tanda tangan terbatas untuk tindakan tertentu; di LND paket ini disebut JusticeKit. Transaksi pemulihan, yang dikenal sebagai justice transaction, mengembalikan dana terlindungi menurut ketentuan yang disiapkan sebelumnya. Ini tidak memberi Watchtower kebebasan membelanjakan koin Anna yang lain. Dalam model tanpa imbalan untuk layanan, biaya transaksi Bitcoin dipotong dari dana terlindungi. Kode juga menyediakan jenis dengan imbalan untuk menara, tetapi keberadaannya saja tidak membuktikan bahwa operator tertentu menawarkan layanan berbayar. [3] [4] [5]
Agar dapat membantu, Watchtower harus benar-benar menerima data yang diperlukan. Memasukkan alamatnya dalam pengaturan atau melihat tugas dalam antrean pengiriman belum cukup. Klien, yaitu bagian node Anna yang berkomunikasi dengan menara, perlu menerima konfirmasi penerimaan pembaruan. Koneksi bisa gagal, kesepakatan penyimpanan yang disebut session bisa kehabisan kapasitas, atau cadangan bisa ditolak. Karena itu Anna juga perlu memantau pembaruan yang belum terkirim dan kesalahan. Bahkan data yang diterima tidak menjamin keberhasilan: menara harus terus mengikuti rantai yang benar dan membuat transaksinya dikonfirmasi dalam blok tepat waktu. [6] [8]
Jika Anna kehilangan perangkat, ia tidak memulihkannya dari Watchtower. Layanan mengawasi penyalahgunaan keadaan yang telah dicabut; layanan tidak memulihkan dompet atau mengatasi pencurian kunci. LND memakai Static Channel Backup (SCB) untuk pemulihan kanal. Bersama seed dompet, cadangan ini membantu mengembalikan dana melalui penutupan kanal, bukan melanjutkan tepat dari titik terakhir node berhenti. SCB bukan salinan setiap pembaruan ataupun paket terenkripsi untuk menara. Menjalankan basis data channel.db lama tanpa prosedur pemulihan yang benar sangat berbahaya: node bisa menerbitkan keadaan tercabut miliknya sendiri. Ikuti petunjuk pencadangan untuk dompet dan versi yang kamu gunakan. [7]
Output transaksi menetapkan jumlah uang dan syarat untuk membelanjakannya. Perlindungan ini bekerja karena pihak yang menerbitkan keadaan kanalnya tidak dapat langsung membelanjakan output miliknya yang ditunda. BOLT 3 menyebut output itu to_local dan masa tunggunya to_self_delay. CSV adalah aturan yang mengukur penundaan dalam blok sejak output dikonfirmasi. Pihak lain dengan kunci pencabutan yang tepat dapat memakai jalur penalti tanpa masa tunggu tersebut. Watchtower pun memiliki keunggulan waktu untuk bertindak. Setelah penundaan berakhir, jalur penalti tidak hilang, tetapi pihak lawan kini juga dapat membelanjakan dana. Hasilnya bergantung pada transaksi pembelanjaan mana yang dikonfirmasi secara sah di antara transaksi yang saling bertentangan. Sekadar menyiarkan transaksi pemulihan tidak cukup, dan hitungan blok bukan jumlah jam yang pasti. [1] [9]
Sebelum memilih layanan, periksa apa yang benar-benar dilindunginya. HTLC adalah pembayaran bersyarat yang mungkin masih tertunda dalam kanal; memantau saldo tidak membuktikan perlindungan pembayaran tersebut. Dust di sini berarti output yang terlalu kecil untuk dimasukkan ke transaksi terkait. backupTask terverifikasi pada LND v0.21.3-beta menyiapkan output to_local dan to_remote yang ada dan bukan dust dari commitment tercabut. Ini tidak mencakup perlindungan umum seluruh output HTLC; dokumentasi terkait menyebutnya sebagai pengembangan mendatang. Bitcoin Script adalah bahasa untuk menyatakan syarat membelanjakan output. Kemampuan membelanjakan output melalui jalur penalti tidak berarti bahwa menara tertentu telah menerima data yang diperlukan atau dapat menjalankan perlindungan itu. [3] [5]
Paket terenkripsi tidak mengharuskan menara terus membaca semua saldo Anna. Menara mencari kecocokan dengan penanda singkat dan mendekripsi data memakai informasi dari transaksi yang dikenali. Berikut adalah referensi teknis untuk versi LND tertentu; txid berarti pengenal transaksi dan blob berarti paket data. Dalam LND v0.21.3-beta, BreachHint adalah 16 byte pertama SHA-256 dari txid biner. BreachKey dihasilkan dengan SHA-256 atas txid biner yang sama yang digabungkan dengan dirinya sendiri. Ini bukan 16 karakter pertama txid yang ditampilkan maupun sekadar separuh pertamanya. Klien mengenkripsi JusticeKit; mengetahui transaksi yang cocok memungkinkan derivasi kunci dan dekripsi data. [2] [3]
Menjalankan menara untuk orang lain berbeda dengan meminta pengawasan atas kanal sendiri. Pengaturan ini ditujukan kepada operator LND; RPC adalah antarmuka yang dipakai program untuk menerima perintah. LND memisahkan watchtower.active untuk server dari wtclient.active untuk klien. Mengaktifkan server saja tidak mengatur pencadangan kanal sendiri pada menara lain. lncli tower info menampilkan pubkey, listeners, dan uris server; lncli wtclient add mendaftarkan menara untuk klien. Kunci publik menara berbeda dari kunci node Lightning. Periksa jaringan, keterjangkauan alamat, dan dukungan RPC pada build yang digunakan. [5]
Respons harus membayar ruang dalam blok Bitcoin. Satoshi adalah satuan terkecil bitcoin. Byte virtual mengukur ukuran transaksi dengan memperhitungkan bobot yang berbeda pada bagian-bagiannya. Tarifnya dinyatakan dalam satoshi per byte virtual ukuran transaksi, bukan persentase dari dana terlindungi. Dalam LND v0.21.3-beta, field sweep_sat_per_vbyte pada policy dan session menyatakan tarif dalam sat/vB. Biaya mengurangi jumlah yang dikembalikan. backupTask dapat menolak status yang nilainya terlalu kecil atau parameter session-nya tidak sesuai; tidak semua tugas yang disiapkan layak menjadi cadangan. Perubahan konfigurasi kemudian bukan bukti perubahan transaksi yang sudah ditandatangani, dan tarif yang terlalu rendah dapat menunda respons. [3] [6]
Menara kedua hanya dapat membantu ketika menara pertama gagal jika ia sendiri telah menerima data yang diperlukan. Kemandirian juga mencakup koneksi dan operator, bukan sekadar nama layanan yang berbeda. Beberapa menara independen dan pemantauan sendiri dapat mengurangi dampak satu kegagalan. Namun, periksa pembaruan spesifik yang diterima setiap menara; beberapa alamat terdaftar saja tidak membuktikan replikasi semua status. Mesin, jaringan, dan lokasi terpisah mengurangi kegagalan bersama. Blob terenkripsi dan koneksi terautentikasi membatasi keterlihatan saldo, tetapi tidak menghapus metadata, keterpaparan frekuensi pembaruan, atau risiko korelasi. [5] [8]
Saat memeriksa perlindungan, bedakan pembaruan yang dikirim dari pembaruan yang benar-benar diterima. Perintah dan kolom berikut menjadi referensi lebih rinci bagi administrator LND; konfirmasi penerimaan cadangan oleh menara bukan konfirmasi transaksi dalam blok. Gunakan lncli wtclient towers, lncli wtclient tower, lncli wtclient stats, dan lncli wtclient policy. Dalam LND v0.21.3-beta, bedakan num_backups dari num_pending_backups; field kedua menghitung cadangan yang menunggu konfirmasi penerimaan oleh menara. num_failed_backups pada respons stats menghitung cadangan gagal yang belum diakui penerimaannya. Statistik mencakup periode sejak klien dimulai. active_session_candidate menandai menara yang menjadi kandidat untuk membuat sesi penyimpanan, bukan bukti perlindungan lengkap. [6]
Konfigurasi yang benar adalah awalnya. Pengujian perlu mencakup seluruh urutan dari pengenalan status yang sudah dicabut hingga pemulihan dana terlindungi; jangan melakukannya dengan uang sungguhan milikmu. Periksa rilis spesifik klien dan menara, tipe kanal dan session yang didukung, kemutakhiran data, biaya, dan sinkronisasi rantai. Uji fungsi respons dalam lingkungan pengujian terisolasi; penutupan sepihak biasa (force close) tidak membuktikan respons terhadap status yang sudah dicabut. Bukti hasilnya adalah publikasi status yang sudah dicabut (breach), justice transaction yang disusun ulang, dan output-nya yang terkonfirmasi. Demonstrasi berhasil tidak menjamin ketersediaan mendatang atau menghapus semua risiko Lightning. [1] [3] [6]
Untuk gambaran yang lebih utuh, baca entri ini bersama Lightning Network, Payment Channel, Kustodi mandiri. Entri ini juga dirujuk dari Payment Channel.