Zpravodaj tento týden shrnuje několik nedávných diskuzí o dialektu Lispu pro skriptování v bitcoinu a přináší pravidelné rubriky s popisem oblíbených otázek a odpovědí z Bitcoin Stack Exchange, oznámeními nových vydání a souhrnem významných změn v populárních bitcoinových páteřních projektech.

Novinky

  • Dialekt Lispu pro bitcoinové skripty: Anthony Towns zaslal několik příspěvků o své pokračující snaze vytvořit dialekt Lispu pro bitcoin, který by mohl být přidán jako soft fork.

    • bll, symbll, bllsh: Towns poznamenává, že strávil mnoho času přemýšlením nad radou vývojáře Chia Lispu Arta Yerkese o zajištění bezchybného převodu mezi vysokoúrovňovým kódem (co vývojář píše) a nízkoúrovňovým kódem (co se nakonec spustí, obvykle vytvořen z vyšší úrovně kompilátorem). Rozhodl se pro přístup podobný miniscriptu, ve kterém „nakládáte s vysokoúrovňovým jazykem jako s přátelskou variantou nízkoúrovňového (jako miniscript a Script).“ Výsledkem jsou dva jazyky a jeden nástroj:

      • Základový Bitcoin Lisp language (bll) je nízkoúrovňovým jazykem, který by mohl být soft forkem přidán do bitcoinu. Towns tvrdí, že bll je podobný BTC Lispu v jeho poslední aktualizaci (viz zpravodaj č. 294).

      • Symbolický bll (symbll) je jazykem vyšší úrovně, který se překládá do bll. Měl by být pro vývojáře znalé funkcionálního programování poměrně snadný.

      • Bll shell (bllsh) je REPL, který umožňuje vývojářům testovat skripty v bll a symbll, kompilovat ze symbll do bll a spouštět debugování kódu.

    • Implementace kvantově bezpečných podpisů v symbll oproti GSR: Towns odkazuje na twitterový příspěvek Jonase Nicka o implementaci Winternitzových jednorázových podpisů (Winternitz One-Time Signatures, WOTS+) pomocí existujících opkódů a opkódů specifikovaných v návrhu great script restoration (GSR) od Rustyho Russella. Towns ji nato porovnává s implementací WOTS+ v symbll a bllsh. Dosáhl tím snížení množství onchain dat přinejmenším o 83 % a možná i o více než 95 %. Mohlo by to přinést kvantově bezpečné podpisy s náklady pouze 30× vyššími než P2WPKH výstupy.

    • Flexibilní účelové dělení mincí: Towns popisuje obecnou konstrukci kompatibilní se symbll (a pravděpodobně i se Simplicity), která umožní rozdělit nějaké UTXO dle konkrétních částek a platebních podmínek. Pokud se platební podmínky naplní, příslušná částka může být utracena a zbytek hodnoty UTXO je vrácen na nové UTXO se zbývajícími podmínkami. Může být také určena alternativní podmínka, která by utratila celé UTXO; umožnilo by to na příklad se všem stranám dohodnout na změně podmínek. Jedná se o flexibilní druh kovenantů, podobný Townsově předchozímu návrhu na OP_TAP_LEAF_UPDATE_VERIFY (TLUV, viz zpravodaj č. 166, angl.), avšak Towns již dříve napsal, že nepovažuje kovenanty za „přesný a užitečný termín.”

      Příspěvek obsahuje několik příkladů použití tohoto flexibilního účelového dělení mincí (flexible coin earmarks), včetně zlepšení bezpečnosti a použitelnosti LN kanálů (též kanálů založených na LN-Symmetry), alternativní verzi úschoven k BIP345 či platebního poolu podobného příkladu použití TLUV, avšak bez problémů spojených s používáním x-only veřejných klíčů.

Vybrané otázky a odpovědi z Bitcoin Stack Exchange

Bitcoin Stack Exchange je jedním z prvních míst, kde hledají přispěvatelé Optechu odpovědi na své otázky a kde – najdou-li volnou chvíli – pomáhají zvědavým či zmateným uživatelům. V této měsíční rubrice nabízíme některé z otázek a odpovědí, které obdržely vysoký počet hlasů.

Vydání nových verzí

Vydání nových verzí oblíbených páteřních bitcoinových projektů. Prosíme, zvažte upgrade či pomoc s testováním.

  • Core Lightning 24.11rc2 je kandidátem na vydání následující hlavní verze této oblíbené implementace LN.

  • BDK 0.30.0 je vydáním této knihovny pro budování peněženek a jiných bitcoinových aplikací. Přináší opravy několika drobných chyb a přípravy na očekávaný upgrade na verzi 1.0.

  • LND 0.18.4-beta.rc1 je kandidátem na menší vydání této oblíbené implementace LN.

Významné změny kódu a dokumentace

Významné změny z tohoto týdne v Bitcoin Core, Core Lightning, Eclair, LDK, LND, libsecp256k1, Hardware Wallet Interface (HWI), Rust Bitcoin, BTCPay Server, BDK, Bitcoin Improvement Proposals (BIPs), Lightning BOLTs, Bitcoin Inquisition a repozitáři BINANA.

  • Bitcoin Core #31122 přidává do mempoolu rozhraní pro operace nad množinou změn. Tím umožní uzlu vypočítat dopad navržených změn na stav mempoolu: na příklad zkontrolovat, zda by byly při přijetí transakce nebo balíčku narušeny limity předků, potomků či TRUC/clusterů, nebo určit, zda by RBF navýšení zlepšilo stav mempoolu. PR je součástí projektu mempoolu clusterů.

  • Core Lightning #7852 vrací pole popisku do pluginu pyln-client, čímž obnovuje zpětnou kompatibilitu s verzemi před 24.08.

  • Core Lightning #7740 přináší API abstrahující složitost řešení problému nejlevnějšího toku (minimum cost flow, MCF) v pluginu askrene (viz zpravodaj č. 316). Tím umožní snazší integraci nově přidaných grafových algoritmů pro výpočet toku. Algoritmus hledající řešení používá stejnou linearizaci funkce nákladů kanálu jako renepay (viz zpravodaj č. 263), čímž zlepšuje schopnost hledání cest. Dále přináší podporu pro definici uživatelských jednotek mimo msat. PR přidává metody simple_feasibleflow, get_augmenting_flow, augment_flow a node_balance, které celkově vylepší efektivitu výpočtů toku.

  • Core Lightning #7719 přináší interoperabilitu s Eclair pro vykonávání splicingu. PR představuje několik změn včetně podpory pro rotaci vzdálených funding klíčů, přidání batch_size pro commitmentové podepsané zprávy (zabrání tím posílání starších otevíracích transakcí), odstranění hašů bloků ze zpráv a úpravě přednastavených zůstatků.

  • Eclair #2935 pošle provozovateli uzlu zprávu v případě vynuceného zavření kanálu iniciovaného protistranou.

  • LDK #3137 přidává podporu pro přijímání kanálů s oboustranným financováním iniciovaných protistranou. Financování či vytváření těchto kanálů zatím podporováno není. Je-li manually_accept_inbound_channels nastaveno na false, kanály jsou automaticky přijaty. Metoda ChannelManager::accept_inbound_channel() řídí jejich manuální přijetí. Bylo přidáno nové pole channel_negotiation_type pro rozlišení mezi druhy kanálů. 0-conf oboustranně financované kanály ani RBF navyšování poplatků financujících transakcí podporováno není.

  • LND #8337 přidává modul protofsm, framework pro vytváření konečných automatů pro protokoly založené na událostech. Namísto psaní hromady kódu pro zpracování stavů, jejich přechodů a událostí mohou vývojáři definovat stavy, spouštěče událostí a pravidla pro pohyb mezi nimi a rozhraní State poskytne zbytek výpočtů. Adaptéry budou mít na starosti vedlejší efekty jako posílání transakcí a zpráv.