Zpravodaj tento týden oznamuje projekt pro vytváření BIP324 proxy lehkým klientům a shrnuje diskuzi o návrhu jazyka BTC Lisp. Též nechybí naše pravidelné rubriky s popisem nedávných změn v klientech a službách, oznámeními nových vydání a souhrnem významných změn v populárním bitcoinovém páteřním software.

Novinky

  • BIP324 proxy pro lehké klienty: Sebastian Falbesoner zaslal do fóra Delving Bitcoin příspěvek oznamující TCP proxy překládající mezi bitcoinovým P2P protokolem verze 1 (v1) a protokolem v2, jak je definován v BIP324. Cílí zvláště na lehké klienty napsané pro v1, kterým umožní využívat výhod šifrované komunikace protokolu v2.

    Lehké klienty obvykle pouze oznamují transakce, které patří jejich peněžence. Každý, kdo je schopen odposlouchávat nešifrované spojení v1 tak může snadno odvodit, které transakce pochází od související IP adresy. Je-li používáno šifrování (v2), pouze plné uzly, které transakci obdrží, budou schopny určit IP jejího původce – lehkého klienta – za předpokladu, že se spojení lehkého klienta nestalo obětí man-in-the-middle útoku (který je možné v některých případech detekovat a proti kterému se mohou budoucí verze automaticky bránit).

    Falbesonerovo původní dílo používá BIP324 funkce napsané v Pythonu pro testovací sadu nástrojů Bitcoin Core. Kvůli tomu je proxy „příšerně pomalá a náchylná k útokům postranními kanály [a] nedoporučuji ji používat pro nic jiného než testování.” Pracuje již nicméně na přepsání proxy v Rustu. Uvažuje, že publikuje některé funkce jako knihovnu pro lehké klienty nebo jiný software, který chce v2 P2P protokol nativně podporovat.

  • Přehled BTC Lispu: Anthony Towns zaslal do fóra Delving Bitcoin příspěvek popisující své experimenty s tvorbou varianty jazyka Lisp nazvaného BTC Lisp během posledních několika let. Předešlé diskuze jsme shrnuli ve zpravodajích č. 293 a č. 191 (angl.). Příspěvek zachází do velkých podrobností, zájemcům doporučujeme jeho přečtení. Krátce zde uvedeme citace ze sekce závěr a budoucí práce:

    „[BTC Lisp] může být na blockchainu trochu dražší, ale zdá se, že s ním lze dělat v podstatě cokoliv. […] Nemyslím si, že by implementace lispového interpretru nebo opkódů, které by ho musely doprovázet, byla příliš náročná, [ale] psát lispový kód bez kompilátoru překládajícího z vysokoúrovňové reprezentace do opkódů na úrovni konsenzu je dost otravné, [i když] i to by mělo být řešitelné. Mohli bychom to vzít ještě dále, implementovat nějaký takový jazyk a nasadit ho na signetu nebo inquisition.“

    Russell O’Connor, vývojář jazyka Simplicity, který by také mohl být považován za případnou alternativu skriptovacího jazyka konsenzu, přinesl ve své reakci porovnání mezi současným bitcoinovým jazykem Script, Simplicity a Chia/BTC Lisp. Usuzuje, že „Simplicity i clvm (Chia Lisp Virtual Machine) jsou nízkoúrovňové jazyky, které jsou určené pro snadné vykonávání počítačem. Kvůli tomu jsou hůře srozumitelné lidem. Mají být kompilovány z nějakých jiných, srozumitelnějších nekonsenzuálních jazyků. Simplicity a clvm nabízejí odlišné způsoby vyjádření starých dobrých věcí: načítat data z prostředí, kombinovat části dat, provádět podmíněné příkazy a kopu dalších primitivních operací. […] Jelikož stejně chceme [rozdělení na efektivní nízkoúrovňový konsenzuální jazyk a vysokoúrovňový nekonsenzuální srozumitelný jazyk], nejsou detaily tohoto nízkoúrovňového jazyka natolik důležité. Tedy po vynaložení nějakého úsilí by tvůj vysokoúrovňový BTC Lisp mohl být pravděpodobně přeložen/kompilován do Simplicity. […] Bez ohledu na to, kde nakonec skončí design Simphony (vysokoúrovňový nekonsenzuální jazyk založený na Simplicity), bude zřejmě moci být přeložen/kompilován do tvého nízkoúrovňového BTC Lispu. Každá kombinace jazyka a překladače by nabízela odlišnou složitost a možnosti optimalizace.”

Změny ve službách a klientech

V této měsíční rubrice upozorňujeme na zajímavé aktualizace bitcoinových peněženek a služeb.

  • BitGo přidává podporu pro RBF: V nedávném blogu oznámil BitGo podporu pro navyšování poplatků nahrazením poplatkem (RBF) ve své peněžence a API.

  • Vydána Phoenix Wallet v2.2.0: Tímto vydáním může Phoenix podporovat splicing během provádění LN plateb pomocí protokolu quiescence („chvíle ticha,” viz zpravodaj č. 262). Dále Phoenix u funkce swap-in vylepšuje soukromí a poplatky pomocí vlastního protokolu swaproot.

  • Vydáno hardwarové podpisové zařízení Bitkey: Zařízení Bitkey je navrženo pro používání v konfiguraci multisigu 2-ze-3 s mobilním zařízením a klíčem serveru Bitkey. Zdrojový kód firmware a dalších komponent je dostupný pod licencí MIT s Commons Clause.

  • Vydán Envoy v1.6.0: Vydání přináší funkce pro navyšování poplatků transakcí a rušení transakcí. Obě funkce používají RBF (nahrazení poplatkem).

  • Vydán VLS v0.11.0: Beta vydání umožňuje jednomu LN uzlu používat několik podepisujících zařízení. Tuto schopnost nazývají tag team signing.

  • Ohlášeno hardwarové podpisové zařízení Portal: Nedávno ohlášené zařízení Portal funguje se smartphony pomocí NFC. Zdrojové kódy hardwaru i softwaru jsou dostupné na GitHubu.

  • Těžební pool Braiins přidává podporu pro Lightning Network: Těžební pool Braiins ohlásil beta verzi placení odměn pomocí Lightningu.

  • Vydána Ledger Bitcoin App 2.2.0: Vydání 2.2.0 přidává podporu miniscriptu pro taproot.

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.

  • Bitcoin Core 26.1rc2 je kandidátem na údržbové vydání této převažující implementace plného uzlu.

  • Bitcoin Core 27.0rc1 je kandidátem na vydání příští hlavní verze této převažující implementace plného uzlu.

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.

Poznámka: commity do Bitcoin Core uvedené níže se vztahují na jeho vývojovou, master větev. Nebudou tedy pravděpodobně vydány před uplynutím zhruba šesti měsíců po vydání nadcházející verze 27.

  • Bitcoin Core #27375 přidává funkcím -proxy a -onion podporu pro používání unixových doménových soketů namísto lokálních TCP portů. Sokety mohou být rychlejší než TCP a nabízejí odlišné bezpečnostní kompromisy.

  • Bitcoin Core #27114 umožňuje používat v konfiguračním parametru whitelist „in” a „out”, díky kterým lze přiznat zvláštní přístup konkrétním příchozím a odchozím spojením. Ve výchozím nastavení obdrží spojení uvedené ve whitelistu zvláštní přístup pouze, pokud se připojuje k uživatelovu lokálnímu uzlu (příchozí spojení). Zvolením „out” může nyní uživatel určit, že spojení obdrží zvláštní přístup, i když se lokální uzel připojuje k němu, například po RPC volání addnode.

  • Bitcoin Core #29306 přidává vylučování sourozenců („sibling eviction”) transakcím vycházejícím z nepotvrzeného v3 rodiče. Může poskytnout uspokojivou alternativu CPFP carve-out, které je v současnosti používáno LN anchor výstupy. V3 přeposílání transakcí včetně vylučování sourozenců není v současnosti na mainnetu aktivováno.

  • LND #8310 umožňuje, aby byly hodnoty parametrů rpcuser a rpcpass (heslo) načteny z proměnných prostředí. Díky tomu může být soubor lnd.conf například spravován veřejným verzovacím systémem, jelikož nemusí obsahovat uživatelské jméno a heslo.

  • Rust Bitcoin #2458 přidává podporu pro podepisování PSBT, které obsahují taprootové vstupy.