Bitcoin Optech. Newsletter #424 Recap (2026-10-01)¶
Epizód: bitcoin_optech #424 Dátum: 2026-10-01 Házigazdák: Mike Schmidt, Gustavo Flores Echaiz Vendégek: Ahmet Kurt (East Texas A&M University, a PQLN szerzője, előre felvett szegmensben), Jan B (Bitcoin Core közreműködő, a 32.0 tesztelési útmutató szerzője) Forrás: https://bitcoinops.org/en/podcast/2026/09/29/ Hírlevél: https://bitcoinops.org/en/newsletters/2026/09/25/ Media: https://anchor.fm/s/d9918154/podcast/play/126643258 Transcript: Whisper (medium.en), 11 852 szó, 7,3 perc wall-time (89:20 audió) Auto-review score: 0.90 (auto_approved)
Bevezetés és a lényeg¶
A Bitcoin Optech 424-es hírlevelének feldolgozása két érdemi szálat hoz, és mindkettő szokatlan formában. Az első a PQLN, a Lightning Network off-chain felületeinek posztkvantum-biztonsági kiterjesztése, amelyet a szerző, Ahmet Kurt előre felvett szegmensben mutat be, mert a felvétel idején Washingtonban volt egy műhelyen, és a visszarepülése egybeesett az adással. A második a Bitcoin Core 32.0 rc2 és a hozzá tartozó tesztelési útmutató, amelyet a szerző, Jan B vezet végig.
A PQLN a hírlevél egyetlen híreleme, és ez indokolt: a javaslat nem a Lightning finomhangolása, hanem öt protokollréteg egyidejű átállítása kvantum-ellenálló kriptográfiára úgy, hogy a hálózat nem szakad szét. A megoldás lényege a hibrid konzervatív kiterjesztés: minden klasszikus mechanizmus a helyén marad, és a posztkvantum primitívek mellé kerülnek, a meglévő üzenetformátumokba és méretkorlátokba beillesztve.
A Bitcoin Core 32.0 szál háttere a projekt kiadási ritmusa: félévente jön főverzió, a kiadás időalapú és nem funkcióalapú, ezért nem minden kiadás egyformán súlyos. A 32.0 viszont sok változást hoz, és a közösségi tesztelés most számít, mert a projekt a saját tesztkészletén túl nem tud minden leszármazott beállítást lefedni.
A legfontosabb tanulságok:
- A PQLN nem igényel konszenzusváltozást, és a posztkvantum csomópontok ma is beszélnek a módosítatlan csomópontokkal
- Az átállás valódi ára a sávszélesség: a friss PQLN csomópont tízszer annyi gossip-adatot tölt le (ML-DSA-44-gyel), Falconnal viszont csak négyszer annyit
- A számítási költség elhanyagolható: a legdrágább művelet, az ML-DSA aláírás, 0,33 milliszekundum
- A Lightning összes posztkvantum-sebezhetősége az off-chain felületeken van; a csatorna, a commitment és a büntető tranzakciók kulcsaihoz konszenzusváltozás kellene
- A Bitcoin Core 32.0 végső kiadása október 10-re van kitűzve, és a kiadás jelöltjei funkcióteljesek
- Az új HTTP-szerver szándékosan szigorúbb az RPC/RFC szabályokban, ezért a saját klienssel rendelkező üzemeltetőknek tesztelniük kell
- A Core Lightning 26.06.8 mögötti sebezhetőségek most váltak ismertté, és a javítások között volt egy olyan hiba, amely végtelen újraindítási ciklust okozott
- A Core Lightning javításai feltűnően egybeesnek az Eclair hasonló javításaival, ami közös hiányosságra utal a Lightning-implementációkban
- A BIP-461 célja a kulcskiszivárgás elleni védekezés: determinisztikus ECDSA-aláírás, amivel két eszköz eredménye összevethető, és az eltérés támadást jelez
A PQLN javaslat: miért kell a Lightningot posztkvantum-biztonságossá tenni¶
Ahmet Kurt asszisztens professzor az East Texas A&M University-n. A Bitcoin-útja 2017-ben kezdődött, a tudományos pályája 2019-ben a Florida International University doktori programjával. A doktori témája eredetileg nem Lightning volt, hanem egy titkosított kommunikációs implementáció a Lightning Network fölött. A témaváltás azért történt meg, mert a munkát élvezetesebbnek találta, és a doktori fokozat végén már kifejezetten Lightning-alkalmazások tervezésével és értékelésével foglalkozott.
A PQLN ötlete 2025 februárjában merült fel egy társszerzővel, aki maga posztkvantum-kutató. A munkamegosztás kézenfekvő volt: az egyik fél a Lightningban, a másik a posztkvantum-kriptográfiában jártas. Az első nekifutás megmutatta a feladat súlyát. A szerző megfogalmazása szerint túl sok mozgó komponens van a Lightningban, amelyet posztkvantum-biztonságossá kell tenni, és kezdetben úgy tűnt, hogy a feladat nem megoldható.
A megvalósítás 2025 decemberében indult a rust-lightning kódbázisán, amelyet a szerző a legalkalmasabb indulópontnak tartott a modularitása miatt. Az intenzívebb munka 2026 áprilisában kezdődött, napi néhány órával, és a teljes implementáció két-három hónapot vett igénybe. A cikk megírása további mintegy másfél hónap volt. A szerző kitér arra is, hogy a cikk tizenhárom oldalas, mert a célzott tudományos fórum oldalkorlátja ennyi volt, holott a munka húsz-harminc oldalt is megérdemelt volna.
A javaslat motivációja kétlábon áll. Az első érv az, hogy a Bitcoin posztkvantum-frissítése önmagában nem tenné posztkvantum-biztonságossá a Lightningot. A Lightning saját peer-to-peer üzenetei, a gossip, a transport, a számlák, az ajánlatok és a fizetési hagymák a Lightning off-chain felületei, amelyek nem részesülnek a Bitcoin alapszintű frissítéséből. Ezért a Lightningot önmagában is lehet és kell frissíteni.
A második érv a már ma is futó támadás: a harvest-now-decrypt-later minta. A támadó rögzítheti a Lightning-forgalmat, és később, amikor már létezik elég erős számítógép, visszafejtheti. A szerző óvatosan fogalmaz: nem a teljes hálózat rögzíthető, de annak egy része igen, és ez elegendő indok a munkára.
A szerző nyíltan beszél a munka korlátairól is. Megjegyzi, hogy nem szoftverfejlesztő, hanem oktató és kutató, ezért elképzelhető, hogy nem a legjobb kódot írta, és nem a legjobb megközelítést választotta. A saját megítélése szerint az implementáció helyes és nincsenek benne nyilvánvaló hibák, de ezt a közösség visszajelzésére bízza, és kéri a hibajegyek és pull requestek beküldését. Hozzáteszi azt is, hogy korábban még nem tartott fenn GitHub-tárat, ezért ez neki is új terep.
A gossip: kulcsterjesztés a meglévő csatornán¶
A PQLN első lépése a posztkvantum kulcsok terjesztése. A csomópontoknak a klasszikus identitásuk mellé posztkvantum identitásuk is lesz, és ezek elosztására a gossip szolgál. A szerző megítélése szerint ez hangos megközelítés: a csomópontok a gossip üzeneteken keresztül ismerik meg egymás posztkvantum identitását.
A gossipnak három üzenettípusa van, és a PQLN ebből kettőt tesz posztkvantummá. A channel_announcement szándékosan klasszikus marad. Az indoklás mechanikai: ennek az üzenetnek négy aláírásából kettő az on-chain funding kulcsoktól függ, ezért ha a négyből kettőt posztkvantummá tennénk, a maradék kettő klasszikus maradna, és ez nem hozna érdemi hasznot. A szerző megfogalmazása szerint az üzenet így is „half-forgeable” lenne.
Ez a döntés jól mutatja a javaslat alapszemléletét: ahol a posztkvantum-átállítás nem hoz teljes védelmet, ott nem érdemes megbontani a meglévő formátumot.
A transport: a hibrid kézfogás¶
A transportréteg a BOLT8, és a szerző ezt nevezi a legegyszerűbb és legvalószínűbben helyes résznek. A Noise kézfogás hibriddé válik: két ML-KEM beágyazás történik, az egyik a rögzített statikus kulcshoz, a másik egy új, ephemér kulcshoz, ami a forward secrecy-t adja.
A kulcsfontosságú tervezési döntés az, hogy nincs sávon belüli egyeztetés. Az indoklás támadóközpontú: egy posztkvantum-támadó könnyedén hamisíthatná az egyeztetés üzeneteit, ezért a feleknek nem szabad olyan mechanizmusra támaszkodniuk, amelyet a támadó befolyásolhat. Helyette a felek a rögzített vagy az ajánlatban elkötelezett kulcsokhoz hasonlítják a kapott értékeket, és így szűrik ki a downgrade-támadást.
A számlák: a méretkorlát és a szétdarabolás¶
A BOLT11 számlák posztkvantummá tétele méretkérdés. Egy posztkvantum aláírás felduzzasztja a számlát, és a szerző szerint majdnem meghaladja a QR-kód korlátját. Az ML-DSA-44 aláírással viszont a korlát még tartható, nagyjából tíz karakter marad.
A két érintett számadat: az ML-DSA-44 aláírás 2420 bájt, a Lightning-implementáció viszont egy címkézett mezőben legfeljebb 639 bájtot enged. Ezért a PQLN az aláírást négy címkézett mezőre bontja, és így viszi át a hálózaton. A szerző megjegyzi, hogy Falconnal az aláírás mérete jelentősen csökkenne, és a teljes számla körülbelül 1500 karakterre esne vissza.
Itt érdemes megjegyezni, hogy a Falcon nem NIST-szabványosított eljárás, míg az ML-DSA és az ML-KEM 2024 óta az. A szerző ezt nyíltan kimondja, és hozzáteszi, hogy a Falcon használatához több bizonyosság kellene arról, hogy valóban biztonságos.
Az ajánlatok: friss kulcs minden ajánlathoz¶
A BOLT12 ajánlatoknál a gossip-alapú kulcsterjesztés nem működik. Az ok konkrét: az ajánlat mögötti csomópont gyakran befejezetlenül hirdetett, és egy vak útvonal mögött ül, ezért nem lehet rá hagyatkozni, hogy a gossipban megjelent. Az ajánlatnak saját horgonyt kell hordoznia.
A PQLN megoldása az, hogy minden ajánlathoz friss ML-DSA kulcsot kötelez el, és a fizető a visszakapott számlát pontosan ehhez a kulcshoz ellenőrzi, mielőtt bármilyen HTLC elindulna. Ez a minta a későbbi LND-fejlesztésekkel is összecseng: az LND #11146-os javítása ugyanezt a logikát erősíti, mert pusztán az érvényes aláírás nem elég, ha a vak útvonal bármely csomópontja a saját kulcsával írhatja alá a számlát.
A hagyma: a legnehezebb rész¶
A szerző a BOLT4 hagymát nevezi a feladat legnehezebb részének, és elmondja, hogy erre fordította a legtöbb időt. A probléma méretezési: a hagymacsomag 1300 bájt, és minden fizetéshez egy ML-KEM rejtjelezett szöveg kell hoponként. Egy ML-KEM-768 rejtjelezett szöveg 1088 bájt, két hopnál pedig a korlát már átlépődik.
A megoldás meglepő: a hagyma formátuma változatlan marad, és a hoponkénti titok válik hibriddé. A küldő minden hop ML-KEM kulcsához beágyaz egy titkot, és azt összekeveri a klasszikus Sphinx-titokkal. A rejtjelezett szövegek a hagyma mellett utaznak, az update_add_htlc üzenetben, egy rögzített méretű, húsz rekeszes listában.
A lista kihasználatlansága nem szivárogtat információt: minden használaton kívüli rekesz álrejtjelezett szöveggel töltődik fel, hogy a csomópont ne tudja megállapítani az útvonal hosszát. A szerző ezt a részt külön kiemeli visszajelzésre, mert szerinte helyes, de a legkevésbé bizonyított.
A szerző kitér arra is, miért nem növeli egyszerűen a Lightning csomagméret-korlátait. Az indoklás az interoperabilitás: ha a korlátokat megnövelné, a frissített és a klasszikus csomópontok nem tudnának beszélni egymással, vagy összeomlanának a kommunikációban. A PQLN ezért inkább megkerülő megoldásokat keres, és a protokollt változatlanul hagyja.
Az interoperabilitás mint elsődleges megkötés¶
A szerző többször visszatér arra, hogy az interoperabilitás volt a fő tervezési megkötés, és hogy ez sokkal több időt vett igénybe. A cél az volt, hogy egy posztkvantum csomópontot ma be lehessen dobni a hálózatba, és az minden módosítatlan csomóponttal beszéljen. Ha viszont két posztkvantum csomópont találkozik, mindkettő támogatja a posztkvantum módot, és fel tudnak lépni rá.
A szerző bepillantást ad a lehetséges bevezetési útra is. A Lightning közösség lassan fogadná be a posztkvantum-frissítést, ezért a mechanizmus kezdődhet opcionális módként, és később válhat kötelezővé. A szerző nyíltan kéri, hogy a közösség ezzel kapcsolatban is adjon visszajelzést.
Az implementáció és a mérés¶
A rust-lightning módosítása körülbelül 11 000 sor kódot ad hozzá 52 fájlban, egyetlen Cargo-funkció kapcsoló mögé rejtve. A csomag körülbelül száz tesztet tartalmaz, amelyek a szerző megfogalmazása szerint a legnyilvánvalóbb támadásokat fedik le, funkcionális és támadói forgatókönyvekben egyaránt. A szerző kéri a rust-lightning fejlesztőit, hogy nézzék át a kódot.
A mérés két részből áll, és a két rész iránya ellentétes.
A számítási költség elhanyagolható. A legdrágább művelet, az ML-DSA aláírás, mindössze 0,33 milliszekundumot vesz igénybe.
A valódi költség a sávszélesség. A teszt szerint egy friss PQLN csomópont, amely csatlakozik a hálózathoz, tízszer annyi gossip-adatot tölt le, mint egy szokásos csomópont, ML-DSA-44-gyel. Falconnal ez a szám négyszeresre csökken, amit a szerző már elfogadhatónak tart. Az adattárolás a hírlevél összefoglalója szerint kilencszeres.
A szerző megemlíti, hogy a Falcon előnye a méret, a hátránya viszont a szabványosítás hiánya.
Az interoperabilitási tesztek és a nyitott problémák¶
A szerző elmondja, hogy az interoperabilitási teszteket módosítatlan és PQLN csomópont között futtatta, és a fő funkciókat gyakorolta: fizetések küldése és fogadása, csatornák nyitása és zárása, aszinkron fizetések. A szerző bizonytalan abban, hogy a splice-t is tesztelte-e. Az eredmény az, hogy semmi nem tört el, a csomópontok végig a protokoll szerint jártak el.
A tesztelés eredménye kettős, és mindkét ág fontos. Ha a fizetési útvonalon klasszikus csomópont van, a PQLN csomópont visszaesik a klasszikus protokollra. Ha viszont a require-PQ kapcsoló be van állítva, a csomópont a HTLC elküldése előtt meghibásodik, vagyis nem enged klasszikus útvonalat.
A szerző három nyitott problémát sorol fel. Az első a pinning: a megoldás trust-on-first-use jellegű, ezért csak azokat a csomópontokat védi, amelyek már találkoztak egymással, mielőtt egy kriptográfiailag releváns kvantumszámítógép elérhetővé vált. A szerző írja, hogy van néhány ötlete a rés bezárására konszenzusváltozás nélkül, és ezek a cikkben is szerepelnek, de előbb a közösség véleményére kíváncsi.
A második a rust-lightning 1024 bájtos MAX_EXCESS_BYTES_FOR_RELAY korlátja, amely megakadályozza, hogy a nem posztkvantum csomópontok továbbítsák a posztkvantum gossip-adatot. A harmadik a feature bitek és TLV-típusok hozzárendelése, ami még nyitott.
A szerző egy beszélgetésre is kitér, amelyet Matt Corallóval folytatott a témáról. A felvetés az volt, hogy a biztonságos Rust crate-ek kiválasztása is kulcskérdés. A PQLN az fips203 és fips204 csomagokat használja, és a szerző nyíltan megjegyzi, hogy nem tudja, ezek auditáltak-e, és használhatók-e éles környezetben.
Bitcoin Core 32.0 rc2 és a tesztelési útmutató¶
A hírlevél második érdemi szála a Bitcoin Core következő főverziója, amelynek második kiadásjelöltje van éppen tesztelés alatt. Jan B vezeti végig a hallgatót.
A fél évente jelentkező főverzióknál a kiadás időalapú, nem funkcióalapú, ezért nem minden kiadás egyformán súlyos. A 32.0 viszont sok újítást és javítást hoz, és Jan B külön felhívja a figyelmet arra, hogy nem minden változás kerül be a kiadási jegyzetekbe: a jegyzetek a legjelentősebb változásokat fedik, a kisebb hibajavítások kimaradnak.
A kiadásjelöltek funkcióteljesek, és a közösségi tesztelés célja nem az, hogy új funkciókat találjanak. Az indoklás a Bitcoin Core tesztelési helyzetét írja le. A projekt már kiterjedt tesztkészlettel rendelkezik: minden pull requestre egységtesztek, funkcionális tesztek, fuzzing és folyamatos integráció fut több platformon. Ezen felül ma már a red team is tesztel AI-val biztonsági hibák után kutatva. A projekt viszont nem tud minden leszármazott beállítást lefedni: minden Lightning-csomópont, blokkfelfedező, tárcaalkalmazás, hardvertárca, bányászati pool, operációs rendszer, sőt egy szekrényben futó Raspberry Pi más környezet. Ezért a közösség feladata az, hogy a saját beállításán futtassa a jelöltet.
Jan B fontos részletet emel ki: a tesztelési útmutató nem kötelező. Aki nem akarja használni, az is értékes visszajelzést ad, ha a jelöltet a megszokott módon futtatja, mert így olyan hiba is előkerülhet, amely nem a fő funkciókhoz kapcsolódik, hanem például egy operációs rendszer kompatibilitásához. A visszajelzésre két hely van: a tesztelési útmutatóhoz tartozó hibajegy, és a kiadás 32-es verziójához tartozó GitHub-hibajegy. Jan B hozzáteszi azt is, hogy a pozitív visszajelzés is hasznos: ha minden lefutott és működött, azt is érdemes jelezni, mert az is információ.
Az útmutató négy csoportban körülbelül tíz tesztet fed le: új RPC-ket, frissített RPC-ket, tárca-related kérdéseket és a HTTP-szerver átírását. Minden regtesten fut, vagyis saját privát tesztkörnyezetben, ahol nem kell bányászni és nem kell letölteni a teljes blokkláncot. A futtatás azonnal indul, és csak néhány megabájt tárhelyet foglal.
Mi van a 32.0-ban¶
Jan B több konkrét elemet emel ki, és ezek közül néhány a tesztelési útmutatóban is szerepel.
Az első egy új RPC-parancs, amely géppel olvasható leírást ad a Bitcoin Core összes RPC-jéről. Ennek haszna a szerző szerint kettős: saját leszármazott kliensben használható, és a jövőben a két kimenet összehasonlításával könnyen felfedezhetők a változások, ami megkönnyíti a saját kliens frissítését.
A második az exportwatchonlywallet parancs. A használati eset gyakorlati: ha valakinek van egy tárcája a Bitcoin Core-ban, és csak a fizetések beérkezését vagy az egyenleget szeretné figyelni, de tranzakciót nem akar indítani, akkor ezzel a paranccsal exportálhatja a tárcát, és például a telefonján visszaállíthatja.
A harmadik a PSBT-alapú folyamat változása: a PSBT mostantól alapértelmezés szerint a második verzió. Az útmutató a szokásos folyamatot gyakoroltatja (tranzakció finanszírozása, aláírása, véglegesítése, sugárzása), de Jan B kéri, hogy aki a saját rendszerében másképp használja a PSBT-t, az is teszteljen.
A negyedik a HTTP-szerver teljes újraírása, amely eltávolítja a libevent függőséget. Minden, ami RPC-n vagy REST-en keresztül beszél a csomóponttal, ezt az új komponenst használja. A szerver szándékosan szigorúbban követi az RPC/RFC szabályokat, ezért a saját RPC- vagy REST-klienssel rendelkező felhasználóknak tesztelniük kell. A szerző megjegyzi, hogy sok erőfeszítés történt a kompatibilitás megtartására, de a szigorítás szándékos volt.
Az útmutató ezen kívül lefedi a HD-kulcsok származtatását és hozzáadását, ami a több-aláírásos tárca beállításához kapcsolódik az új Bitcoin Core tárcában, és az új díjbecslőt, amelyet szintén tesztelnek. Van egy fejlettebb elem is: a UTXO-készlet névvel ellátott pipe-ba dumpolása, amivel a készlet streamelhető fájlba, és onnan adatbázisba vagy más rendszerbe vihető.
Mike Schmidt visszatekintést ad az egyes elemek korábbi hírlevélszámaira, ami jól mutatja, milyen hosszú a fejlesztési ciklus: az exportwatchonlywallet a 413-as hírlevélben és podcastban szerepelt, a libevent eltávolítása a 411-esben (Matthew Zipkin vendéggel), a párhuzamos blokkletöltés a gyorsabb validálásért a 414-esben, a kisebb és gyorsabb TX-index a 419-esben, a mempool-alapú díjbecslő a 420-asban, a tárca migrációja a tárca betöltése nélkül a 416-os Stack Exchange-válaszban, a globális tranzakció-továbbítási korlátok és a 200 kapcsolat alapértéke szintén a 416-osban, a peer feature-egyeztetés pedig a 410-esben.
Jan B két elemet emel ki, amelyek szándékosan kimaradtak a tesztelési útmutatóból. A kisebb TX-indexet nehéz regtesten tesztelni, mert nagyobb adathalmaz kell hozzá, és a mainnet adatainak másolását igényelné, ami kívül esik a tesztelési kereten. A párhuzamos letöltés ugyanezért maradt ki. A projekt viszont kifejezetten kíváncsi a terepi tapasztalatokra ezeknél a funkcióknál.
Stack Exchange: három kiválasztott kérdés¶
A taproot összeg-aláírás kérdése¶
A hónap három kiemelt kérdése közül az első a taproot aláírás-üzenetére vonatkozik: mi lenne a hátránya, ha az összegek SHA-256-ja helyett az összegek összege szerepelne az aláírásban.
Mike Schmidt a háttérrel kezdi, és a magyarázat a hardveres aláíró eszközök helyzetéből indul. Egy ilyen eszközön nincs blokklánc, csak azt tudja, amit a csatlakoztatott számítógép mond neki. A tranzakció díja pedig bemenetek mínusz kimenetek, ezért ha a számítógép hazudik egy bemenet értékéről, az eszköz a díjról is megtéveszthető. A példa szemléletes: ha a bemenet valójában tíz bitcoin, de a rosszindulatú szoftver egy bitcoint mond, akkor a felhasználó jóváhagyja 0,99 BTC elküldését abban a hitben, hogy a díj 0,01, miközben valójában 9,01 BTC megy a bányászhoz. Ez a díjtúlfizetési támadás.
A taproot ezt úgy oldotta meg, hogy minden aláírás elköteleződik az összes bemenet összege mellett, ezért ha a számítógép bármelyik összegről hazudik, az aláírás érvénytelen lesz, és a tranzakció nem sugározható.
A kérdés felvetője azt kérdezi, miért nem elég csak a végösszeg mellett elköteleződni, hiszen az kevesebb munkával ugyanazt a védelmet adná. A válasz az, hogy a végösszeg valóban megállítja a díjtámadást, mert a bemenetek és kimenetek összege rögzített, de a rosszindulatú számítógép átcsoportosíthatja az összegeket a bemenetek között, amíg a végösszeg változatlan marad.
A példa egy coinjoin-szerű helyzet. Az egyik fél egy bitcoint tesz be, a másik 0,1-et, a kimenetek pedig 1 és 0,1 BTC-t fizetnek. A rosszindulatú szoftver most azt mondja az eszköznek, hogy az első bemenet 0,1, a második pedig 1, így a végösszeg változatlanul 1,1 marad, és az összeg-ellenőrzés átmegy. Az eszköz viszont boldogan jóváhagyja azt a változatot, amelyben a felhasználó 0,1 BTC-t kap, a másik fél pedig az egyet. Ezért kell megtartani a taproot eredeti tervét, amelyben az eszköz a saját bemenetének pontos összegéhez köteleződik el.
A BIP110 utáni újraszinkronizálás¶
A második kérdés az, hogy a BIP110-es elágazás után szükséges-e a nulladik blokktól újraszinkronizálni.
A háttér az, hogy a kérdező Bitcoin Knots-ot futtatott BIP110-kényszerítéssel. Amikor az aktiválási kísérlet augusztusban meghiúsult, az ilyen csomópontok elkezdték elutasítani az első olyan blokkot, amely nem jelzett, és két láncra szakadtak. A hírlevél a 418-as számában foglalkozott a BIP110-vitával. Mike Schmidt megjegyzi, hogy az a lánc valójában csak néhány blokkot ért meg, mielőtt megállt, és azóta több elágazás is megjelent, de a kérdés nem ezekről szól, hanem inkább fogalmi.
A kérdező pruned csomópontot futtatott, amely eldobja a régi blokkokat. A gond az, hogy egy pruned csomópont nem tud visszatekerni olyan pontra, amelyet már törölt. A jogos aggodalom az volt, hogy most a teljes blokkláncot újra kell-e tölteni.
Murch válasza az, hogy valószínűleg nem. Az indoklás időzítési: az elágazás nemrég történt, és a BIP110-es lánc a szabályaival alig adott hozzá blokkokat, mielőtt a csomópontot utoljára futtatták. Ezért a pruned csomópont szinte biztosan tárolja még a két lánc közös utolsó blokkját, még akkor is, ha a fő lánc azóta több ezer blokkot haladt előre.
A javasolt megoldás az, hogy a Knots helyére Bitcoin Core telepítése valószínűleg elegendő, és a csomópont magától visszaágazik a fő láncra. Van egy tartalék megoldás is: a reconsiderblock parancs futtatása arra az első blokkra, amelyet a Knots-csomópont elutasított, mert nem jelzett kötelezően. Ez megmondja a csomópontnak, hogy ne tekintse többé érvénytelennek azt a blokkot, és onnan újraértékelje a láncot. A házigazda hozzáteszi, hogy Murch ezt vélhetően nem próbálta ki személyesen, hanem a Bitcoin Core belső mechanizmusairól beszél.
Gustavo Flores Echaiz egyetért, és hozzáteszi, hogy aki ilyen helyzetbe került, annak nem kell elölről kezdenie, mert az új láncon nem történt sok munka.
A részleges UTXO-készlet kérdése¶
A harmadik kérdés az, hogy építhet-e egy Bitcoin-csomópont részleges UTXO-készletet csak a legutóbbi blokkokból, és validálhat-e azzal új tranzakciókat.
Mike Schmidt rekonstruálja a mögöttes szándékot: a kérdező nem akar visszamenni minden blokkhoz 2019-ig, hanem csak az utóbbi néhány hónapot dolgozná fel, abból építene UTXO-készletet, és azzal validálna. A hipotézis egy olcsó könnyű csomópont.
A választ Pieter Wuille adta, aki a Stack Exchange-en rengeteg kérdést válaszol meg. A mechanikai érv az, hogy a csomópontnak ellenőriznie kell, hogy a tranzakcióban elkötött minden érme létezik, és még nem lett elkötve. Egy részleges UTXO-készlettel viszont előfordulhat, hogy olyan érmét kötnek el, amelyről a csomópont nem tud.
A probléma lényege a megkülönböztethetetlenség: a csomópont nem tudja megállapítani, hogy egy hiányzó bemenet már el lett-e költve, vagy olyan blokkban keletkezett, amelyet kihagyott. A példa érzékelteti: az érme évekkel korábban keletkezhetett, teljesen érvényes, a hiperpruned csomópont viszont nem tud a létezéséről.
A következtetés az, hogy egy ilyen csomópont nem tud visszautasítani egyetlen tranzakciót sem érvénytelenként, ezért a séma nem végez hasznos validálást, és biztonsági szintje az SPV-vel egyenértékű, amely teljes egészében a proof of work-re támaszkodik.
A házigazdák pozitívan nyilatkoznak a kérdező szándékáról: Gustavo idézi a felvető saját megfogalmazását, miszerint egy könnyű csomópont-tervezeten dolgozik a független ellenőrzés javítására korlátozott tárhely mellett. Mike Schmidt szerint a felvetés jó indulatú, de az energia jobb helyre fordítható: a közelmúltbeli adásokban tárgyalt Utreexo és Floresta éppen azt a kompakt UTXO-reprezentációt adja, amely az összes blokkot figyelembe veszi, nem csak egy részét.
Kiadások és kiadásjelöltek¶
A szakasz három elemet tartalmaz.
A Bitcoin Core 32.0 rc2 a második kiadásjelölt, és a végső kiadás október 10-re van kitűzve. A korábbi kiadásjelölt után kisebb hibákat találtak, ezért jelent meg a javított változat.
A Core Lightning 26.06.8 biztonsági kiadás, amely felelősen bejelentett sebezhetőségek javításait tartalmazza. A forráskód azonnal elérhető, viszont néhány teszt szándékosan visszatartva maradt, hogy a támadóknak ne legyen könnyű dolga a sebezhetőségek azonosításában. Gustavo felhívja a figyelmet egy operátori csapdára: aki a fejlesztői buildet használta, nem tud visszalépni erre a kiadásra, mert az adatbázis-séma újabb volt. A projekt erősen ajánlja a frissítést.
A LDK v0.3-rc2 a második kiadásjelölt, és több új funkciót hoz. Az egyik az RBF díjnövelés elakadt splice-tranzakcióknál, ami eddig hiányzott: ha a splice nem tudott megerősítést nyerni, nem lehetett növelni a díjat. Új az is, hogy ugyanabban a splice-ban pénz adható hozzá és vehető ki. Az anchor-csatornák mostantól alapértelmezés szerint egyeztetettek, és az alkalmazásoknak kifejezetten el kell fogadniuk a bejövő csatornákat.
Gustavo két figyelmeztetést emel ki az LDK-nál. A frissítés érvényteleníti a korábban kibocsátott BOLT11 számlákat, mert a fizetési adat szerkezete megváltozott, ezért a még nem lejárt számlák inkompatibilissé válnak. Emellett több API- és visszafelé kompatibilitási változás is van, amelyeket az operátoroknak át kell nézniük. A szerző hangsúlyozza, hogy ez még mindig csak kiadásjelölt, és nem tekintendő éles kiadásnak.
Gustavo egy szervezeti változást is megemlít: az LDK-tár elköltözött a GitHubról egy saját hosztolt tükörre (git.rust-bitcoin.org). A pull requestek és a folyamatos munka már nem a GitHubon találhatók, hanem a tükrön, amely viszont a GitHub-tár leírásából könnyen elérhető.
Mike Schmidt a szakaszt egy általános figyelmeztetéssel zárja. Az elmúlt hónapokban sok hibajavítás jött a red team és más csoportok munkája nyomán, mert ténylegesen vannak támadók, akik szoftvereket támadnak. Ezért mindenkit arra biztat, hogy frissítsen a legújabb verzióra. Hozzáteszi, hogy a következő heti hírlevélben két szolgáltatásmegtagadási sebezhetőség közzétételéről fog összefoglalót írni Lightning-szoftverekben.
Kód- és dokumentációváltozások¶
Bitcoin Core #34566: a multi-signet adatkönyvtár¶
A szokásos kódváltozási szakasz egy Bitcoin Core-elemmel indul. A #34566 a multi-signet adatkönyvtár támogatást adja hozzá, és a hírlevél 412-es számában tárgyalt munkára épül.
A helyzet az, hogy ha valaki több signet-hálózatot használ, eddig manuálisan kellett több alkönyvtárat építenie. Ez nem volt alapértelmezés szerint támogatott, és a láncadatok ütközhettek. Mostantól a Bitcoin Core lehetővé teszi, hogy több egyedi signet közös alapkönyvtárat használjon, de mindegyik négybájtos hálózatazonosítóval címkézett alkönyvtárba kerüljön, ami megszünteti az ütközést.
A gyakorlati tanács az, hogy aki már beállított több signetet, az a frissítés után manuálisan nevezze át a könyvtárait az új formátumra, hogy elkerülje a felesleges újraszinkronizálást.
Mike Schmidt egy fogalmi félreértést is eloszlat: sokan úgy gondolják, hogy egyetlen signet létezik, holott több is lehet, és bárki futtathat sajátot. Az alapértelmezett signet csak a kényelmet szolgálja.
BIP-138: tömör titkosítás tárcán kívüli adatokhoz¶
A BIPs-tár két új javaslatot kapott. Az első a #1951-es pull request, amely a BIP-138-at vezeti be.
A probléma, amelyet megold, a több-aláírásos tárca helyreállításából ered. Tegyük fel, hogy valaki egy kézből háromból aláírásos tárcát állít be másokkal. A helyreállításhoz nem elég a kulcsok megfelelő száma: a descriptor vagy tárcafájl is kell. Vagyis hiába mondja a séma, hogy két kulcs elegendő, a harmadik kiterjesztett nyilvános kulcs nélkül a tárca nem rekonstruálható.
A kérdés ezért az, hogyan lehet szabványosított biztonsági mentést készíteni a descriptorokról és más tárcán kívüli adatokról, például a BIP-388 tárcapolitikákról, amelyet a felhasználó nyugodtan feltölthet a saját gépére vagy felhőmappájába, és csak ő tudja visszafejteni.
A BIP-138 ötlete az, hogy a kiterjesztett nyilvános kulcsokból származtatott kulcs nyissa a titkosított tárcaleírást. Gustavo analógiája szemléletes: van egy titkosított széf, amelyben a descriptor van, és mellette három kisebb szekrény, amelyek mindegyike ugyanazt a kulcsot tartalmazza, de mindegyik egy adott aláíróhoz tartozik. Az első aláíró a saját kiterjesztett nyilvános kulcsával kinyitja a saját szekrényét, megkapja a kulcsot, és azzal kinyitja a fő széfet.
A következmény az, hogy bármelyik társszerző képes helyreállítani a leírást a saját seedjéből, anélkül hogy a többiek kulcsaira szüksége lenne. Mivel a visszafejtés csak nyilvános kulcsú anyagot használ, a tárolt adat nem tartalmazhat privát kulcsokat, és a bizalmasság attól függ, hogy a kiterjesztett nyilvános kulcsok soha nem szivárognak ki.
A hírlevél ehhez egy konkrét figyelmeztetést fűz: azok a egyszerű aláírásos tárcák, amelyek egy fiók kiterjesztett nyilvános kulcsát elküldik egy szervernek, például a Ledger és a Trezor asztali alkalmazásai, lehetővé tennék a szerver számára, hogy megfejtse egy olyan több-aláírásos tárca minden biztonsági mentését, amely ugyanazt a kulcsot használja. Ezért a BIP azt ajánlja, hogy a több-aláírásos tárcákat olyan fiókokból építsék fel, például BIP-48 vagy BIP-87 szerint, amelyeknek a kiterjesztett nyilvános kulcsát soha nem osztották meg.
BIP-461: determinisztikus ECDSA-aláírás¶
A második javaslat a #2224-es pull request, amely a BIP-461-et vezeti be. A cél a kulcskiszivárgás elleni védekezés.
A probléma gyökere a nonce-választás. Ha rosszindulatú szoftver választja a nonce értékét az ECDSA-aláíráshoz, akkor a nonce-on keresztül privát kulcs-anyagot szivárogtathat, amelyet csak a támadó tud visszafejteni. Gustavo megjegyzi, hogy ehhez mindössze két aláírás elegendő annyi kulcs-anyaghoz, hogy a támadó hozzáférjen a tárcához. A hírlevél a 315-ös számában foglalkozott a Dark Skippy támadással, amely pontosan ezt a módszert alkalmazza.
A BIP-461 megoldása egyetlen determinisztikus ECDSA-aláírási algoritmus, amely biztosítja, hogy egy adott privát kulcs és üzenet mindig ugyanazt az aláírást adja. A nonce-okat az RFC 6979 szerint származtatja. Emellett alkalmazza a low-R grinding technikát: az aláíró addig próbálkozik új aláírással ugyanarra a tranzakcióra, amíg olyan aláírást nem kap, amelynek R értéke a tartomány alsó felére esik, és így egy bájttal rövidebben kódolható. A BIP-461 ezt szabványosítja: mindig retry, amíg az R nem kódolható vezető nulla bájt nélkül, és az s értéket is normalizálja az alsó alakjára.
A gyakorlati haszon az összehasonlíthatóság. Mivel a kimenet determinisztikus, egy kulcstulajdonos ugyanazt a kulcsot betöltheti két független aláíró eszközbe, ugyanazt az üzenetet aláírhatja mindkettővel, és összevetheti az eredményeket. Bármilyen eltérés azt jelzi, hogy legalább az egyik eszköz nem követi a specifikációt, ami a nonce-választáson keresztüli kulcsszivárgási kísérletre utalhat. Gustavo ezt fontos BIP-nek nevezi, mert a felhasználó vagy a fejlesztő ellenőrizni tudja, hogy az implementáció helyes-e.
Core Lightning: öt javítás a közzétett sebezhetőségek mögött¶
#9507: a díjszabályok és az újraindítási ciklus¶
A szokásos kódváltozási szakasz öt Core Lightning-elemet tartalmaz, és ezek most váltak részletesen ismertté, mert a korábbi kiadás forráskódja végre megjelent. Gustavo megjegyzi, hogy az elemek mindegyike több hibát és több javítást tartalmaz.
A #9507 a díjszabályok hiányzó korlátairól és a túlcsordulásról szól. A helyzet háromrészes.
Az első hiba az, hogy amikor egy peer splice-ot javasolt, vagy amikor egy kettős finanszírozású nyitást vagy tranzakciót RBF-fel próbáltak növelni, nem volt felső díjkorlát, ezért a peer rendkívül magas díjat javasolhatott, és a csomópont elfogadta. A kettős finanszírozású nyitásnál még az alsó korlát is hiányzott.
A második hiba a tárolt értékek túlcsordulása. Ha egy nagyon nagy díjérték került a tárolóba, az nullázódhatott, ami ahhoz vezetett, hogy a tranzakció nem került be egy blokkba. A harmadik hiba ugyanennek a másik iránya: a nagy érték állítási hibát váltott ki a listpeerchannels RPC hívásakor, és mivel minden plugin ezt a hívást végzi indításkor, a csomópont végtelen újraindítási ciklusba került. Gustavo ezt külön kiemeli, mert az üzemeltető számára ez a legsúlyosabb következmény.
A javítás két új korlátot vezet be. A peer-javaslatokra és a háttér-díjbecslésekre 4000 sat/vB abszolút felső korlát vonatkozik, amely akkor is érvényes, ha az --ignore-fee-limits kapcsoló be van állítva. A saját nyitásokra, splice-okra, commitment-frissítésekre és RBF-ekre viszont 400 sat/vB korlát vonatkozik, amelyet a --ignore-fee-limits felül tud írni. A hibás tárolt értékek a frissítéskor javításra kerülnek.
Mike Schmidt megjegyzi, hogy a 4000 sat/vB korlát a jelenlegi díjviszonyok mellett a belátható jövőre elegendő, és Gustavo hozzáteszi, hogy az Eclair implementáció ugyanezeket a javításokat vezette be, ami hasonlóságot jelez a Lightning-implementációk hiányosságai között.
#9508: a splice és a csatornanyitás javításai¶
A #9508 több splice- és csatornanyitási hibát javít, és Gustavo három forgatókönyvet jár végig.
Az első az, hogy a Core Lightning a peer splice_locked üzenetének megérkezése előtt már elküldhette a saját aláírásait. Ha a peer ezután sugározta a függőben lévő splice commitment-tranzakcióját, a Core Lightning elmulasztotta ezt a sugárzást, mert nem kapta meg a megerősítést. A javítás az, hogy a Core Lightning mostantól minden függőben lévő splice funding-kimenetét figyeli, amint elküldte az aláírásait, és felismeri az elkötést, ha az megjelenik a láncon. Így a peer nem tudja elhitetni a csomóponttal, hogy a splice nem fejeződött be, miközben az már megtörtént.
A második forgatókönyv a tx_abort üzenet. Ha a peer a splice közben megszakítási üzenetet küld, a splice-ot el kell vetni. De ha a Core Lightning már elküldte az aláírásait, a peer már sugározhatta a tranzakciót, ezért a megszakítást nem szabad elfogadni. A javítás szerint a Core Lightning erőszakos zárást indít, ha a peer az aláírások elküldése után küld megszakítást. Gustavo kiemeli, hogy a korábbi ellenőrzés azért bukott el, mert a csomópont a rossz splice-ot nézte, és nem ismerte fel, hogy az adott splice már aláírásra került. Ráadásul az aláírás elküldését jelző kapcsoló nem őrződött meg az újraindítások között, ezért egy újraindítás után a peer ismét elhitethette a csomóponttal, hogy a splice el lett vetve.
A harmadik forgatókönyv a nyitási kérelmek korlátozása. Ha egy peer folyamatosan kettős finanszírozású nyitási kérelmeket küld, a csomópont mostantól bontja a kapcsolatot, ha már három folyamatban lévő csatornanyitási egyeztetés van vele, az egyszeri finanszírozásúakat is beleértve.
A házigazdák azon is elgondolkodnak, hogy a splice és a kettős finanszírozás évekig váratott magára, majd éppen akkor jelent meg kísérleti formában, amikor a nyelvi modellek elkezdték megtalálni a komplex sémák szélső eseteit. Mike Schmidt ezt szerencsétlen időzítésnek nevezi.
#9509: a láncon belüli csatornafeloldás¶
A #9509 Gustavo szerint a legfontosabb elem, mert a láncon belüli csatornafeloldás hibáit javítja.
A fő támadási forgatókönyv az, hogy a támadó ráveszi a Core Lightningot, hogy egy erőszakos zárást kooperatív zárásként kezeljen. A mechanizmus három lépésből áll.
Az első feltétel az, hogy a peer nem köteleződött el előzetes shutdown-script mellett a csatornanyitáskor. Ez opcionális a protokollban. A második lépés az, hogy a peer shutdown üzenetet küld, mintha kooperatív zárást indítana, és abban egy korábban visszavont commitment tranzakció kimeneti scriptjét nevezi meg. Amint a Core Lightning regisztrálja a shutdown scriptet, a támadó feladja a kooperatív zárást, és sugározza a visszavont commitment tranzakciót.
A probléma az, hogy a Core Lightning a shutdown üzenet miatt továbbra is folyamatban lévőnek hitte a kooperatív zárást, ezért nem reagált büntető tranzakcióval a visszavont commitment sugárzására. Gustavo ezt a legfontosabb esetnek nevezi.
A javítás az, hogy a Core Lightning mostantól a locktime és a sequence kódolás alapján azonosítja a commitment tranzakciókat, mielőtt a kimeneteket ellenőrizné. Korábban csak a kimeneteket nézte, és ha azok egyeztek a kooperatív zárásnál vártakkal, nem reagált erőszakos zárásként. Az új azonosítás felismeri, hogy visszavont commitmentről van szó, és ez teszi lehetővé a büntető tranzakciót.
A javítás további szélső eseteket is kezel. Ha egy commitment tranzakció vagy annak leszármazottja megerősítést nyer, majd átszervezés áldozata lesz, a Core Lightning korábban abbahagyta a kimenetek figyelését, ezért egy további költés csak az újraindítás után került volna elő. Mostantól a figyelés fennmarad az átszervezés után is.
#9510 és #9511: bemenetfeldolgozás és naplózás¶
A #9510 és #9511 a bemenetfeldolgozás és a naplózás megerősítését szolgálja. Gustavo megjegyzi, hogy ez nem olyan kritikus, mint az előzőek, mert itt nem pénzügyi manipulációról van szó, hanem összeomlásokról és adatszivárgásról.
Az első hiba egy puffer-túlcsordulás, amely a connectd démont összeomlaszthatta, ha egy proxy-n keresztül csatlakozva egy csomópont nagyon hosszú DNS-gépnevet hirdetett meg. A javítás két oldalon véd: a Core Lightning elutasítja a saját konfigurációjában szereplő érvénytelen gépneveket indításkor, és figyelmen kívül hagyja a hálózati partnerek érvénytelen DNS-címeit a csomópont-hirdetésekben.
Emellett a JSON beágyazás 256 szintre korlátozódik, és a REST-kérések törzse 2 MiB-ra, mert ezek is összeomlást válthattak ki. Egy BOLT12 TLV-elemzési hiba is javításra került, amely lehetővé tette, hogy egy hibás üzenet összeomlassza a csomópontot. A második pull request egy veremtúlcsordulást javít, amelynél egy hitelesítés nélküli REST-kérés nagyon nagy paraméterrel összeomlaszthatta a csomópontot.
A naplózási részhez tartozik egy adatvédelmi javítás: a nyers I/O naplók eltávolításra kerültek a getlog kimenetéből, mert azok rune-okat tartalmazhatnak. A rune korlátozott RPC-hozzáférést adó hitelesítési token, ezért a naplóban hagyása szükségtelen hitelesítőadat-szivárgás.
A házigazdák egy visszatérő mintát is megvitatnak. Mike Schmidt szerint feltűnő, hogy a Lightning-hibák jelentős része korlátlan növekedésről vagy hiányzó hosszellenőrzésről szól. Gustavo egyetért, és mechanikai magyarázatot ad: a Lightningban nincs közös adat, mint a blokklánc a Bitcoin-hálózatban, ezért a csomópontoknak mindenről meg kell egyezniük és mindent kommunikálniuk kell, ami számtalan szélső esetet teremt.
#9513: az összegellenőrzés az xpay-nél¶
A #9513 egyszerűbb, de gyakorlatilag fontos: az összegellenőrzést javítja, amikor az xpay számlát kér le egy BOLT12 ajánlathoz.
A hiba lényege az, hogy a Core Lightning nem ellenőrizte a lekért számla összegét az engedélyezett összeggel szemben. Ezért a fogadó nagyobb fizetést kérhetett, mint amennyit a küldő szándékozott. Ha a küldő nem volt elég körültekintő, egyszerűen többet fizetett a kértnél.
A javítás szerint a számlának vagy egyeznie kell a kért összeggel, vagy ha nem adtak meg összeget, nem haladhatja meg az ajánlat összegét.
A második javított eset a hagymaüzenet, amelynek válaszútvonala nulla hopból áll. Ezt bármelyik csomópont elküldhette, és a Core Lightning leállt tőle, mert egy nulla hopos válaszútvonal értelmetlen. Mostantól a csomópont hiányzóként kezeli az ilyen útvonalat, és a többi értelmezhetetlen válaszútvonalat is naplózza ahelyett, hogy leállítaná az offers plugint.
LND: három javítás¶
#11198: az AMP-számla törlése¶
A kódváltozási szakasz három LND-elemmel zárul. Az első az AMP, vagyis az Atomic Multi-Path Payments, amely Gustavo pontosítása szerint az LND saját implementációja, és nem azonos a több implementáció között szabványosított, többútvonalas fizetéssel.
Az AMP sajátossága, hogy a fogadó újrafelhasználható számlát bocsát ki, amely többször kifizethető. Az AMP-fizetés, akárcsak a többútvonalas, több részre és több útvonalra bomlik, és úgy érkezik meg a fogadóhoz.
A hiba az volt, hogy ha egy fizetési kísérlet egyetlen része meghiúsult, a fogadó az egész számlát törölte, és ezzel minden más, egyidejűleg futó fizetési kísérletet is elrontott. A helyes viselkedés az, hogy csak a meghiúsult kísérletet kell elbuktatni.
A javítás szerint az LND mostantól az érkező HTLC-t buktatja el, és csak a meghiúsult készlethez tartozó, korábban elfogadott HTLC-ket törli. A számla fizethető marad, és a többi elfogadott készlet továbbra is befejeződhet és elszámolható.
#11146: a BOLT12 offers folytatása¶
Az #11146 a BOLT12 offers implementációjának folytatása az LND-ben, amelyet a hírlevél több korábbi száma követett nyomon. A 422-es hírlevél a számlakérések és számlák aláírásának és ellenőrzésének támogatását tárgyalta, és most validált string kódolók és dekódolók jönnek az ajánlatokhoz, számlakérésekhez és számlákhoz.
Ezek a kódolók a feldolgozást a hálózati, feature-, lejárati és aláírás-ellenőrzésekkel egyesítik. Az új ValidateInvoiceForPayment funkció ezen felül a számlát az azt kiváltó kéréshez és ahhoz a csomóponthoz is ellenőrzi, amelyről a fizető azt várta, hogy aláírja. Gustavo kiemeli ennek fontosságát: pusztán az érvényes aláírás nem elég, mert a vak útvonal bármely csomópontja visszaadhat a saját kulcsával aláírt számlát.
Mike Schmidt egy követési hibajegy felől érdeklődik, és Gustavo megadja az LND #10736-ot, amely a teljes BOLT12-implementáció lépéseit tartalmazza. Az állapot a helyszíni áttekintés szerint az, hogy a codec-rész, vagyis a BOLT12 csomag üzeneteihez és adatszerkezeteihez tartozó rész majdnem kész: körülbelül tíz elem már beolvadt, és egy maradt. A következő munka a fogadó oldal, amelyhez már van nyitott pull request, de az a fogadó oldal első eleme csupán.
A mérföldkövek felosztása: az A a codec, a B a fogadó oldal, a C a küldő oldal, a D a több hop, az E az ajánlat kifizetése, az F az RPC-paritás. Gustavo megfogalmazása szerint még nagyon hosszú az út, de az első mérföldkő majdnem teljes.
#11132: a BOLT1 megfelelés helyreállítása¶
Az utolsó elem az LND #11132, amely a hírlevél 421-es számában tárgyalt témára épül.
Az LND a 421-es hírlevél szerint bejövő ping-korlátozásokat vezetett be, kérésekre és válaszokra bontott bucketekkel. Ez viszont megtörte a BOLT1-megfelelést, amely előírja, hogy minden érvényes ping üzenetre válaszolni kell. A hiba az volt, hogy egy külön pong-korlátozó csendben elnyomhatta a kötelező válaszokat.
A javítás helyreállítja a megfelelést: az LND mostantól minden, a flood-szabályzata által elfogadott érvényes pingre válaszol. A megvalósítás egyetlen, partnerenkénti bucket, amely 200 tokent tartalmaz, másodpercenként tíz token feltöltéssel. A nagyobb válaszok több tokenbe kerülnek: egy maximális méretű válasz tíz token, ami megőrzi a korábbi sávszélesség-korlátot. A keret kimerülése a kapcsolat bontását vonja maga után.
Forrás¶
Dátum: 2026-10-01 (a feed pubDate-je) Hírlevél: https://bitcoinops.org/en/newsletters/2026/09/25/ (Newsletter #424, 2026-09-25) Epizód oldal: https://bitcoinops.org/en/podcast/2026/09/29/ Transcript: Whisper (ggml-medium.en), 11 852 szó, 133 szó/perc, 7,3 perc wall-time Közvetítő: anchor.fm → cloudfront.net, M4A (82,7 MB, 89:20), ffmpeg WAV-konverzió után Transcript-hiány: az epizód natív átirata még nem készült el. A podcastoldal forrása a megjelenéskor 20 617 bájt volt, benne „transcription coming soon”. A Bitcoin Optech átiratai 2026-ban medián 5,88 nappal (n=14, Q1 4,83 / Q3 8,58, tartomány 0,77-16,61 nap) a recap után jelennek meg, és csak 21 százalékuk érkezik 48 órán belül. A #424 transcription commitja a felvétel idején még nem létezett, ezért a Whisper-fallback az alapértelmezett út. ASR-torzítások javítva: „Annette Kirk” / „Omet Kirk” / „Amit” / „Annette” → Ahmet Kurt; „post-condom” / „post-condom security” → post-quantum (visszatérő, minden előfordulás); „Vault 4/8/11/12” / „Vault 11” → BOLT4 / BOLT8 / BOLT11 / BOLT12; „Bold 12” / „Bolt 12” → BOLT12; „MLDSS” / „MLDSA44” → ML-DSA / ML-DSA-44; „MLKEM” / „MLKEM 768” → ML-KEM / ML-KEM-768; „Rust Lightning” → rust-lightning; „Core Liming” / „core lining” → Core Lightning; „L&D” / „LMD” → LND; „archive” → arXiv; „omed-cart/pq-rust-lightning” → ahmet-kurt/pq-rust-lightning; „Amit-Kirch.github.io” → ahmet-kurt.github.io; „Matt Corollo” → Matt Corallo; „Peter Wula” → Pieter Wuille; „dark SCPI” / „dark/skippy” → Dark Skippy; „low error grinding” / „low r grinding” → low-R grinding; „Salvatore Ingalla” → Salvatore Ingala; „Wilder scriptures” → wallet descriptors; „BSBT” → PSBT; „BBSDs” → PSBT; „list pure channels” → listpeerchannels; „ignore fee limits” → --ignore-fee-limits; „get logs” → getlog; „log time” → locktime; „transaction abort” → tx_abort; „splice log” → splice_locked; „comparative close” → kooperatív zárás (cooperative close); „foreclose” → force-close; „reconsider block” → reconsiderblock; „vamping” → bumping; „multi-strick” → multisig; „dump the TX outset” → dumptxoutset; „flock policy” → flood policy; „ballot ping” → érvényes ping; „XPay” → xpay; „YAPs” → Q&A-k; „Annette Kirk, aki... Apula” → a társszerző kiléte a cikkből (Abdul-Salem Beibitkhan, Yacoub Hanna, Abdullah Aydeger) rekonstruálva, a transcriptbeli „Apula” valószínűleg Abdullah Aydeger, de nem megerősített. Nem javított, bizonytalan ASR-nevek: a „VIP434” peer feature-egyeztetés (a hírlevél 410-es számában) azonosítója nem ellenőrizhető innen, ezért a summary nem nevezi meg; az új, géppel olvasható RPC-leírást adó parancs pontos nevét a transcript nem mondja ki, és a hírlevél sem nevezi meg, ezért a summary leírás formájában hozza; a Jan B teljes neve nem derül ki (a transcript „Jan B84”-et mond), ezért rövidítve szerepel.
Kapcsolódó külső források¶
- PQLN cikk (arXiv): https://arxiv.org/abs/2609.13781 (Ahmet Kurt, Abdul-Salem Beibitkhan, Yacoub Hanna, Abdullah Aydeger)
- PQLN Delving Bitcoin vitaszál: https://delvingbitcoin.org/t/pqln-post-quantum-security-for-the-bitcoin-lightning-networks-off-chain-surfaces/2893
- PQLN implementáció: https://github.com/ahmet-kurt/pq-rust-lightning (rust-lightning fork, ~11 000 sor, 52 fájl)
- Bitcoin Core 32.0 kiadásjelölt és tesztelési útmutató: a Bitcoin Core Dev Wiki-n
- LDK tükör-tár:
git.rust-bitcoin.org(a GitHub-tár leírásából elérhető) - LND BOLT12 követési hibajegy: LND #10736
- Bitcoin Stack Exchange: a három tárgyalt kérdés forrása (taproot összeg-aláírás, BIP110 újraszinkronizálás, részleges UTXO-készlet)
- roasbeef elemzése: „Post Quantum Lightning: Layer by Layer” (2026 május, Delving Bitcoin), a PQLN előzménye
- Dark Skippy támadás: a hírlevél 315-ös számában tárgyalva
Kapcsolódó belső források¶
summaries/bitcoin_optech/2026-09-22_bitcoin_optech_newsletter_423_recap.md(az előző epizód, ugyanaz a sorozat)topics/bitcoin-technology.md(a wiki Bitcoin-technológiai témaköre, ahova ez a bejegyzés kerül)- A hírlevél 408-as száma, amely a Lightning rétegenkénti posztkvantum-elemzését hozta, és amelyre a PQLN épít
- A hírlevél 412-es száma, a multi-signet adatkönyvtárakról
- A hírlevél 418-as száma, a BIP110-vitáról
- A hírlevél 421-es száma, az LND ping-korlátozásairól
- A hírlevél 422-es száma, a BOLT12 aláírás-támogatásról
- A hírlevél 351-es száma, a tárcaleírások szabványosított mentésének első felvetéséről
- A hírlevél 315-ös száma, a Dark Skippy támadásról
- A hírlevél 411-es száma, a libevent eltávolításáról
Hogyan kapcsolódik a saját rendszerünkhöz¶
Négy ponton érintkezik ez az epizód a saját infrastruktúránkkal és munkafolyamatainkkal.
A posztkvantum-kérdés időzítése és a saját kulcskezelésünk. A PQLN legerősebb érve nem a jövőbeli kvantumszámítógép, hanem a ma is folyó rögzítés: a támadó most gyűjti a forgalmat, és később fejti vissza. Ez a minta közvetlenül érvényes minden olyan kulcsra, amelyet ma hosszú távra használunk. A saját Nostr-kulcsaink és a hozzájuk tartozó titkok ugyanebbe a kategóriába esnek: a mai titkosított csatorna tartalma nem védett a jövőbeli visszafejtés ellen, ha a mögöttes kulcscsere klasszikus. Az epizód nem ad receptet erre, de a kategória felismerése hasznos: a hosszú életű titok posztkvantum-kitettsége ma is fennáll, nem csak akkor, amikor a hardver megérkezik.
A konzervatív kiterjesztés mint tervezési minta. A PQLN alapszemlélete az, hogy minden klasszikus mechanizmus a helyén marad, és az új primitívek mellé kerülnek, hogy a hálózat ne szakadjon szét. Ez pontosan az a minta, amelyet a saját rendszerünkben is követünk: az új rétegek hozzáadása a meglévő működés megbontása nélkül, és a visszafelé kompatibilitás mint elsődleges megkötés. A szerző külön kiemeli, hogy az interoperabilitás volt a legdrágább követelmény, és hogy enélkül az implementáció sokkal hamarabb elkészült volna. Ez hasznos emlékeztető: a kompatibilitás ára valódi, és érdemes tudatosan vállalni, nem véletlenül fizetni meg.
A „trust-on-first-use” korlát párhuzama. A PQLN pinning-mechanizmusa csak azokat a csomópontokat védi, amelyek már találkoztak egymással egy kvantumszámítógép megjelenése előtt. Ez a TOFU-minta pontosan az, amit a saját SSH- és hosztkulcs-kezelésünkben is alkalmazunk, és ugyanaz a gyenge pontja: az első találkozás nem védett. Az epizód megfogalmazása szerint a szerző maga is nyitott problémának nevezi, és a közösség véleményét kéri. A saját infrastruktúránkban ez a kérdés konkrétan a Mac mini és a VPS közötti SSH-kapcsolatnál merül fel.
A determinisztikus aláírás és a saját eszközeink ellenőrzése. A BIP-461 gyakorlati haszna az, hogy két független aláíró eredményét össze lehet vetni, és az eltérés támadást vagy hibás implementációt jelez. Ez egy általános ellenőrzési minta, amely túlmutat a kriptográfián: ha ugyanazt a bemenetet két független úton dolgozzuk fel, és az eredmények eltérnek, akkor legalább az egyik út hibás. Ez a saját média-pipeline-unkban is működik: az output_integrity_gate.py és az auto_review.py két különböző elven méri ugyanazt a kimenetet, és a kettő együtt többet ér, mint bármelyik önmagában. Az epizód ezt a kriptográfiai esetben pontosan így indokolja: az egyetlen eszköz önmagában nem tudja bizonyítani a saját helyességét.
A mérés mint a negatív állítás ellenszere. Ez az epizód technikailag ugyanabba a csapdába futott, amelyet az előző feldolgozásnál dokumentáltunk: a sorozat korábbi összefoglalója Whisper-rel készült, és a kísértés az volt, hogy ezt a mintát örököljük. A különbség az, hogy most megmértük a késleltetést a site-repo commitjaiból, és az eredmény (medián 5,88 nap, a #424 transcription még nem létezik) igazolja a döntést. A negatív állítás tehát nem örökölt, hanem mért: ez az a különbség, ami a helyes döntést a véletlenül helyes döntéstől elválasztja.