Sözlük / Lightning ve katman 2
Taahhüt işlemi
- Taahhüt işlemi nedir?
- Taahhüt işlemi, bir Lightning kanalının her iki tarafının da elinde tuttuğu, imzalanmış ama yayınlanmamış Bitcoin işlemidir; bu işlem fonlama çıktısını mevcut bakiye paylaşımına göre harcar.
Her Lightning ödemesi, iki tarafın da commitment transaction'larını yeni bir çiftle değiştirir ve eski çift silinmek yerine iptal edilir. BOLT 3, bir anchor kanal commitment transaction'ının beklenen ağırlığını 1.124 ağırlık birimi artı hâlâ yolda olan her ödeme için 172 olarak belirler. Birini elinizde tutmak, haftalar önce eşinizin kabul ettiği bir ücretle tek başınıza kullanabileceğiniz bir çıkışı elinizde tutmak demektir.
Nasıl çalışır
Bir commitment transaction'ın tam olarak bir girdisi vardır, kanalın 2 / 2 fonlama çıktısı, ve çıktıları o paranın güncel bölüşümüdür.
Her an iki tane vardır, her eş için bir tane, ve bunlar bilerek aynı işlem değildir. Her kopya, karşı tarafa daha erken ödeme yaparken kendi sahibinin ödemesini to_self_delay blokluk bir OP_CHECKSEQUENCEVERIFY kilidinin arkasına erteler, böylece yayınlayan taraf bekleyen taraf olur. option_anchors altında karşı taraf bile anında değildir: to_remote çıktısı, hiçbir eşin commitment transaction'a ucuz alt işlemler ekleyerek onu tıkamasını önlemek için eklenen bir blokluk CSV kilidi taşır.
İşlem kendi sayacını gizler. BOLT 3 sürüm alanını 2 yapar, 48 bitlik commitment numarasını alır, open_channel ve accept_channel mesajlarındaki iki payment_basepoint değeri üzerinden alınan SHA256'nın alt 48 bitiyle XOR'lar ve sonucu iki alana böler: üst 24 bit, 0x80 baytının arkasından girdinin sequence alanına, alt 24 bit ise 0x20'nin arkasından locktime alanına gider. İki eş de bunu bir anda yeniden hesaplar. Zinciri izleyen başka biri, rastgele görünen iki sayı görür ve kanalın kaç ödeme taşıdığını sayamaz.
Çıkışın bedelini fonlayan taraf öder. Herhangi bir çıktı düzenlenmeden önce temel ücret, kanalı fonlayan taraftan düşülür ve option_anchors ile aynı taraftan her biri 330 satoshilik iki sabit anchor çıktısı da çıkar. Ardından çıktılar önce değere göre küçükten büyüğe, sonra scriptPubKey bayt bayt karşılaştırılarak, sonra HTLC çıktılarında cltv_expiry değerine göre sıralanır, böylece iki eş de işlemi birbirine hiç göndermeden bayt bayt aynı olan bir işleme varır.
Yazmaya değmeyecek kadar küçük olan hiçbir şey yazılmaz. BOLT 3 bunlara trimmed output der: tutarı, kendi ikinci aşama işleminin maliyeti çıkarıldığında sahibinin dust_limit_satoshis değerinin altına düşen bir HTLC hiçbir çıktı almaz ve para kimsenin bakiyesi olmak yerine madenci ücretine dönüşür. BOLT 3'ün listelediği eşikler Bitcoin Core eşikleridir: pay to witness script hash için 330 satoshi, pay to witness pubkey hash için 294, pay to anchor için 240. Bunlar ayarın kendisi değil bir tabandır ve BOLT 3 anchor kanallara bunun üzerinde durmalarını söyler, çünkü o kanallarda ikinci aşama işlemi hiç ücret ödemez ve bu nedenle kırpmaya hiç katkıda bulunmaz.
İşlemin en yeni biçimi yerleşik ücreti tamamen atar. zero_fee_commitments uygulandığı yerde sürüm alanı 3 olur, feerate_per_kw 0 olarak sabitlenir ve pay to anchor betiğini taşıyan tek bir shared_anchor çıktısı OP_1 <0x4e73>, o 240 satoshilik sınırda eklenir. Herkes onu harcayabilir, bu yüzden commitment transaction, çift imzalandığında ne kadara mal olduysa o fiyata değil, o gün ücret piyasası ne gerektiriyorsa onunla, child pays for parent yoluyla bir bloğa ulaşır.
Bitcoin satın alırken bu neden önemli
Commitment transaction, bir Lightning bakiyesinin ekrandaki bir sayı olmaktan çıkıp ücretler düşüldükten sonraki satoshilere dönüştüğü yerdir ve iki kuralı gerçek paraya mal olur.
Birincisi kırpmadır. Bir kanalın içindeki küçük tutarlar yuvarlanmaz, silinir ve şartnamenin kendi çözümlü örneği, her biri toz sınırı artı ikinci aşama maliyetinin altına düştüğü için yoldaki ödemelerden 1.800 satoshisini madenciye verir. Bu, Lightning'e aktarmaya değecek şeyin altına bir taban koyar. İncelemelerimizdeki ACINQ cüzdanı Phoenix, kanal açmak için 1.000 satoshi alır ve zorla kapatmadan kurtulmanın yaklaşık 720 blok, yani yaklaşık beş gün sürdüğünü belirtir. Birkaç bin satoshiyle fonlanan bir kanal, hiçbir zaman tutmayan bir hesaptır.
İkincisi, bir commitment transaction'ın içindeki ücretin imzalandığı gün seçilmiş olmasıdır. Fonlayan tarafın bakiyesinden o günün feerate_per_kw değerine göre düşülmüştür ve mempool o zamandan beri hareket ettiyse cüzdanınızda bekleyen işlem taşıdığı fiyatla onaylanmayabilir. Anchor'lar tam olarak bunun için vardır ve zero_fee_commitments, kararı bunun yerine yayın anına taşımak için vardır.
Kanalı başkası tutuyorsa bu iki kuralın hiçbiri size ulaşmaz. Borsa incelemelerimizde 4,6 puan alan Strike, Lightning tabanlıdır ve bakiyeniz uygulamada durduğu sürece saklamalı bir hizmettir; Coinbase ise Lightning para çekmelerini küçük tutarlarda zincir üstü bir gönderimden daha ucuza, büyük tutarlarda daha pahalıya fiyatlar. Karşılığında neyi bıraktığınız cüzdan incelemelerinde belgelenmiştir: 2,7 puan alan ve dikkat uyarısı işaretli Wallet of Satoshi, 23 Kasım 2023 itibarıyla ABD'deki müşterilere hizmet vermeyi bıraktı ve daha sonra, MiCA geçiş dönemlerinin sona ermesiyle birlikte saklamalı Lightning hizmetini Avrupa Birliği genelinde geri çekti. Geri dönebileceğiniz hiçbir commitment transaction'ınız yoktu.
BOLT 3 ücret örneğinde adım adım
BOLT 3 tek bir çözümlü ücret hesabı yayımlar ve bunu baştan sona izlemek, bir kanalın parasının gerçekte nereye gittiğini gösterir.
Kurulum, 5.000 feerate_per_kw değeri, 546 dust_limit_satoshis değeri ve yolda dört ödemedir: 5.000 ve 1.000 satoshilik offered HTLC'ler, 7.000 ve 800 satoshilik received HTLC'ler. Bu ücret oranında bir HTLC timeout işlemi 3.315 satoshiye, bir HTLC success işlemi 3.515 satoshiye mal olur.
Ağırlık 724 ile başlar, bu option_anchors olmayan bir kanalın rakamıdır ve tüm bu örnek bu biçimi varsayar. Offered 5.000 satoshilik HTLC, 546 artı 3.315 eşiğini geçer, bu yüzden bir çıktı alır ve ağırlık 896 değerine çıkar. Offered 1.000 satoshilik HTLC eşiği geçmez ve kırpılır. Received 7.000 satoshilik HTLC, 546 artı 3.515 eşiğini geçer, bu yüzden bir çıktı alır ve ağırlık 1.068 değerine çıkar. Received 800 satoshilik HTLC kırpılır.
Temel ücret, 5.000 çarpı 1.068 bölü 1.000, yani 5.340 satoshidir ve yalnızca fonlayan tarafın çıktısından düşülür. Madencinin gerçekte tahsil ettiği ücret 7.140 satoshidir, çünkü kırpılan iki HTLC bunun üzerine eklenir. Yoldaki 13.800 satoshinin 1.800 satoshisi artık kimsenin bakiyesi olarak var olmaz ve ücret fonlayanın kendi çıktısından düşüldükten sonra bu çıktı toz sınırının altına düşerse toplam daha da yükselebilir.
Taahhüt işlemi vs ceza işlemi
Bir commitment transaction, iki eşin de imzaladığı bir bölüşümü öder; bir ceza işlemi ise iptal ettiği bir bölüşümü yayınlayan eşten tüm kanalı alır.
İkisi farklı şeyleri harcar. Bir commitment transaction fonlama çıktısını harcar. Bir ceza işlemi, artık eski kalmış bir commitment transaction'ın çıktılarını, o durum değiştirildiğinde sahibinin teslim ettiği iptal anahtarını kullanarak harcar. to_local betiği iki geleceği tek bir çıktıya yazar: bir dal to_self_delay blok sonra gecikmeli anahtarı ister, diğer dal bir iptal imzası ister ve hiçbir gecikme olmadan çalışır.
Taahhüt işlemi vs zorla kapatma
Bir commitment transaction, elinizde tuttuğunuz bir nesnedir; zorla kapatma, birinin onu yayınladığı olaydır.
Bu ayrım önemlidir çünkü harekete geçen siz olmak zorunda değilsiniz. Eşiniz güncel bir durum üzerinden zorla kapatma yaparsa, onun kopyası sizden hiçbir hamle gelmeden sizin tarafınıza öder; tek koşul, anchor kanalların to_remote çıktısına koyduğu bir blokluk CSV kilididir. Kendi kopyanız, sessizliğe gömülmüş bir eş için yedektir ve sizi gecikme boyunca bekletmesine yol açan kopya da odur. Bir commitment transaction'ı elinizde tutmak normal, sürekli ve ücretsizdir; birini yayınlamak ise hiç yaşamamayı tercih edeceğiniz bir olaydır.