Sözlük / Lightning ve katman 2
Kapatma betiği
- Kapatma betiği nedir?
- Kapatma betiği, bir kanal işbirliğiyle kapatıldığında Lightning bakiyenizin ödendiği zincir üstü adrestir ve BOLT 2 shutdown mesajında ham bir scriptpubkey olarak belirtilir.
Kapanan bir kanalın her iki tarafı da kendi hedefini belirtir ve kapanış işlemi her ikisine de o adreslerde ödeme yapar. BOLT 2 bu mesaj türüne 38 numarasını verir ve eşler 26 ile 27 özellik bitlerini müzakere etmediği sürece yalnızca tanık sürümü 0 betiklerini kabul eder. Lightning fonlarını soğuk saklamaya geri taşıyan herkes, kapatmadan önce bu hedefi kontrol etmelidir, sonrasında değil.
Nasıl çalışır
Bir kapatma betiği, 38 tipinde bir BOLT 2 mesajının içinde gider; bu mesaj kanal kimliğini, iki baytlık bir uzunluğu ve ardından betik baytlarının kendisini taşır.
Bu mesajı iki eşten biri gönderebilir ve bekleyen güncelleme kalmadığında diğeri kendi shutdown mesajıyla yanıt vermek zorundadır. Bu andan itibaren kanal kapanma sürecindedir: shutdown mesajından sonra hiçbir update_add_htlc mesajı gelemez ve bir düğüm bundan sonra gelen herhangi bir HTLC'yi yönlendirmeyi reddetmelidir. Mesaj channel_ready mesajından önce de gönderilebilir, böylece fonlama işlemi hâlâ onaylanmakta olan bir kanaldan erkenden vazgeçilebilir.
Şartname, betiğin ne olabileceği konusunda dardır. İki biçim her zaman geçerlidir: OP_0 ve 20 baytlık bir itme, yani pay to witness public key hash çıktısı, ya da OP_0 ve 32 baytlık bir itme, yani pay to witness script hash. 1 ile 16 arasındaki tanık sürümleri, ardından 2 ile 40 bayt arasında bir itme, yalnızca option_shutdown_anysegwit seçeneği, yani 26 ve 27 özellik bitleri müzakere edildiyse geçerlidir; bu nedenle bir Taproot ödemesi eşinizin bunu desteklemesine bağlıdır. Üçüncü bir biçim option_simple_close seçeneğiyle, 60 ve 61 bitleriyle geldi: OP_RETURN ve 6 ile 75 bayt arasında bir itme, ya da 76 ile 80 bayt için OP_PUSHDATA1 varyantı; sınır, bir OP_RETURN betiğinin Bitcoin üzerinde yalnızca 83 bayta kadar standart olmasıdır. Bu biçim, payınızın bir çıktıya değmeyecek kadar küçük olduğu durumlar için vardır ve tutar o zaman sıfır olmalıdır, böylece ücret olarak madencilere gider.
Bir düğüm hedefini kanal açılırken de sabitleyebilir: open_channel ve accept_channel mesajlarının upfront_shutdown_script TLV kaydında, 0 tipinde ve 4 ile 5 özellik bitleriyle. Her iki eş de bunu duyurduysa ve sıfır olmayan uzunlukta bir betik verildiyse, sonradan başka bir şey belirten bir shutdown mesajı bağlantıyı başarısız kılmalıdır. BOLT 2 bunun ne sağladığı konusunda açıktır: bu ön taahhüdü, artımlı bir iyileştirmeye değer bulduğunu söyleyerek "a weak commitment (a malevolent implementation tends to ignore specifications like this one!)" diye adlandırır, çünkü hedefi sonradan değiştirmek eşinizin işbirliğini gerektirir.
Nerede karşınıza çıkar
Kapatma betikleri kanalın sahibine aittir ve bu her zaman siz olmayabilirsiniz.
Bu sitede incelenen 41 cüzdan arasında, 4,0 puanlı Phoenix cüzdanını, telefon üzerinde gerçek ve kendi kendine yeterli bir Lightning düğümü çalıştırmasıyla, 2,7 puanlı ve saklamalı modu nedeniyle dikkat uyarısı taşıyan Wallet of Satoshi cüzdanıyla karşılaştırın. Phoenix cüzdanının kanalları sizindir, bu yüzden işbirliğine dayalı bir kapanış, shutdown mesajına sizin kontrol ettiğiniz bir adres koyar. Wallet of Satoshi cüzdanının ABD ve Avrupa Birliği'nde sunulmayan saklamalı modunda kanallar şirkete aittir, betikler onun adreslerini belirtir ve sizin elinizde tuttuğunuz şey bir anahtar değil bir taleptir.
Ortaya çıktığı ikinci yer, sessizce başarısız olan bir kapanıştır. Eski düğümler hâlâ segwit dışı kapatma betikleri gönderebilir ve BOLT 2, segwit dışı çıktısı 546 satoshinin altında olan bir kapanış işleminin (dust_limit_satoshis daha düşük ayarlandığında bu mümkündür) büyük olasılıkla madencilere hiç ulaşmayacağını belirtir. Hiçbir fon risk altında değildir, ancak kanalın uzlaşma yerine zorla kapatılması gerekir. option_simple_close seçeneği kapsamında yeni bir closing_complete mesajı öncekini geçersiz kılar, böylece ücret ve çıktı betiği ikisi de revize edilebilir; tabii önceden taahhüt varyantı hedefi kanal açılışında dondurmadıysa.
Kapatma betiği vs zorla kapatma
Bir kapatma betiği paranın nereye gideceğine yalnızca işbirliğine dayalı bir kapanışta karar verir.
Zorla kapatma müzakereyi atlar: en son taahhüt işlemini yayınlarsınız ve onun çıktıları, kanal açılırken değiş tokuş edilen temel noktalardan (basepoints) türetilen anahtarlara ödeme yapar, sizin belirlediğiniz bir adrese değil. Özenle ayarladığınız betiğin, eşinizin iznine ihtiyaç duymayan tek çıkış yolu üzerinde hiçbir etkisi yoktur. Betiği amaçladığınız kapanış için ayarlayın ve amaçlamadığınız kapanış için bir kanal yedeği saklayın.