LDK v0.0.124: ‘Richieste di funzionalità per il taglio della carta’
LDK v0.0.124: ‘Papercutting Feature Requests’
LDK 0.0.124 è disponibile su crates.io! Le versioni in altre lingue dovrebbero seguire nei prossimi giorni,” ha annunciato Matt Corallo. In questa release sono presenti una nuova struttura di crate, una serie di funzionalità richieste da vari utenti, una serie di miglioramenti BOLT 12, un calcolo più veloce dei percorsi e una manciata di piccole-medie correzioni di bug. In totale, questa release include 312 file modificati, 29853 inserzioni, 15480 cancellazioni in 549 commit dal 0.0.123 da 26 autori. Cosa c’è di nuovo: Aggiornamenti API
– rust-bitcoin è stato aggiornato a 0.32. Il nuovo crate bitcoin-io è ora utilizzato per tutti i trait IO, indipendentemente dalle features impostate sui crate LDK. I crate LDK non forzano più automaticamente le features sui crate dipendenti quando possibile, consentendo impostazioni diverse std /no-std tra i crate LDK e rust-bitcoin (ad esempio, per disabilitare std su LDK per garantire che il tempo di sistema non venga acceso mentre si utilizza la feature std di bitcoin-io).
– È stato aggiunto un nuovo crate lightning_types che contiene vari tipi di alto livello. L’utilizzo dei tipi da lightning::ln::features o Payment{Hash,Preimage,Secret} da lightning::ln o lightning::ln::types è ora deprecato. Il nuovo crate viene esportato come lightning::types.
– lightning ora dipende da lightning-invoice, anziché il contrario. Il modulo lightning_invoice::payment è stato spostato in lightning::ln::bolt11_payment e lightning_invoice::utils in lightning::ln::invoice_utils.
– Gli event handler possono ora restituire errori, causando il replay immediato della maggior parte degli eventi senza bloccare il processore in background.
– balance_msat di ChannelDetails è deprecato a favore di get_claimable_balances di ChainMonitor e il Balance, che ora contiene sostanzialmente più dettagli e calcola in modo più accurato un bilancio a livello di nodo quando gli claimable_amount_satoshis di Balance vengono sommati.
– ConfirmationTarget ha due nuovi valori – un MaximumFeeEstimate che può aiutare a evitare chiusure forzate spurie garantendo che accettiamo sempre i feerate fino a questo valore dai pari come sensati e un UrgentOnChainSweep, sostituendo OnChainSweep e utilizzato solo quando il sweep on-chain è urgente.
– Tutti i ChannelMonitor non vengono più salvati dopo ciascuna connessione di blocco, ma vengono distribuiti su una manciata di blocchi per ridurre i picchi di carico.
– Un nuovo formato per i dati di Rapid Gossip Sync è ora supportato e contiene metadati aggiuntivi sul nodo ed è più estensibile.
– ChannelManager::send_payment_with_route è ora deprecato a favore del più semplice da utilizzare Channelmanager::send_payment. Coloro che desiderano selezionare manualmente il percorso su cui passano tali pagamenti devono farlo abbinando il payment_id passato a send_payment in Router::find_route_with_id.
– lightning-transaction-sync ora prende la maggior parte dei Confirm come un generic Deref. Potrebbe essere necessario un esplicito come &(dyn Confirm) per aggiornare il codice esistente.
– Gli HTLC saranno ora inoltrati su qualsiasi canale con un peer, anziché solo sul canale specifico richiesto dal mittente del pagamento.
– Event::PaymentFailed è ora utilizzato al posto di Event::InvoiceRequestFailed, contenente un’Opzione per l’hash del pagamento, che sarà None quando non viene ricevuta alcuna fattura.
– ChannelManager ora supporta l’intercettazione e il pagamento manuale delle Bolt12Invoice, vedere UserConfig::manually_handle_bolt12_invoices.
– I logger::Record ora contengono un PaymentHash.
– ChainMonitor non utilizza più un MonitorUpdateId opaco, optando per riutilizzare l’update_id di ChannelMonitorUpdate. Si noti che non è più necessario chiamare ChainMonitor::channel_monitor_updated per gli aggiornamenti ChannelMonitorUpdateStatus::InProgress di un monitor che sono stati avviati senza un ChannelMonitorUpdate.
– NodeAnnouncementInfo è ora un enum che contiene un messaggio di gossip o i campi importanti, riducendo l’utilizzo di memoria di NetworkGraph.
– I gestori di messaggi Onion includono ora un contesto di messaggio, che consente l’autenticazione del percorso nascosto.
– ChannelManager supporta ora il finanziamento con solo un txid e un indice di output.
– Le richieste di fatture BOLT 12 ora vengono inviate e accettate su più percorsi.
– l’OnionMessenger ora supporta l’intercettazione e il re-inoltro di messaggi onion per i peer offline al momento della ricezione.
– I metodi del trait di gestione dei messaggi Onion ora prendono generalmente un Responder che può essere utilizzato per creare una ResponseInstruction per controllare meglio come vengono inviate le risposte.
– È stato aggiunto OnionMessenger::process_pending_events_async.
– I percorsi offuscati utilizzati per le Offer/Refund BOLT 12 sono ora compatti quando scadono relativamente presto.
– ChannelManager::force_close_* ora prendono un messaggio di errore da inviare ai peer.
– è stata aggiornata l’eventuale ChannelDetails::is_public in is_announced e ChannelHandshakeConfig::announced_channel in announce_for_forwarding per affrontare varie misconcezioni sull’annuncio.
– I BlindedPath sono ora divisi in BlindedMessagePath e BlindedPaymentPath e advance_path_by_one è stato aggiunto a ciascun.
– BlindedPaymentPath ora include il BlindedPayInfo.
– I builder Offer/Refund BOLT 12 non richiedono più una descrizione, ma consentono di impostarla direttamente sul builder stesso.
– Le struct {Inbound,Outbound}HTLCState{,Details} e ChannelDetails sono state spostate nel modulo ln::channel_state.
– Event::OpenChannelRequest ora contiene params e is_announced.
– I peer non vengono più disconnessi quando chiudiamo forzatamente un canale.
– Le Offer e Refund BOLT12 ora implementano Readable.
– RecipientOnionFields è ora incluso in Event::PaymentClaimed.
– è stato aggiunto ClosureReason::HolderForceClosed::broadcasted_latest_txn.
– EcdsaChannelSigner non ha più bisogno di essere Writeable e il supertrait WriteableEcdsaChannelSigner è stato rimosso.
– Sono stati aggiunti CustomMessageHandler::peer_{,dis}connected.
– È stata aggiunta lightning_invoice::Description::as_inner().
– I messaggi di wire relativi a Splice sono stati aggiornati allo spec più recente.
Bug Fix
– i messaggi channel_update non vengono più estratti dai pagamenti falliti e applicati al network graph via Event::PaymentPathFailed,
– per evitare che i mittenti identifichino il destinatario di un’offerta BOLT 12 che includeva un percorso offuscato, le informazioni crittografiche dai percorsi offuscati sono ora incluse nella verifica della richiesta di fattura.
– I percorsi sono ora limitati in base ai contenuti effettivi della cipolla anziché a un valore fisso, per garantire che non vengano generati percorsi non pagabili quando si inviano HTLC con TLV personalizzati, percorsi offuscati o metadati.
– i nodi LDK non annuncianti (o quelli senza un network graph) includeranno ora i peer non annunciati come punti di presentazione nei percorsi offuscati.
– in caso di mancata aggiornamento del feerate su un canale da parte del partner e aumento delle feerate di rete prevalenti, LDK chiuderà automaticamente per evitare di non poter rivendicare i nostri fondi on-chain.
– MonitorUpdatingPersister non leggeva gli aggiornamenti della ChannelMonitor quando archiviava un ChannelMonitor, causando la mancanza di alcuni aggiornamenti nell’ChannelMonitor archiviato.
– Fixed an overflow in RawBolt11Invoice::amount_pico_btc() reachable via Bolt11Invoice::amount_milli_satoshis().
– Incredibly rare circumstances, when using the beta asynchronous persistence, it is possible that the preimage for an MPP claim could fail to be persisted in the ChannelMonitor.
– il Background Processor ora si sveglia da ChainMonitor quando appaiono nuovi blocchi, riducendo la latenza nel vedere gli Event::SpendableOutputs.
– OnionMessenger::get_update_future è stato aggiunto, permettendo al processore in background di essere svegliato per garantire che gli Event siano processati rapidamente.
– CoinSelection che sovrapagano la tassa target di più del 1% non porta più a un’asserzione di debug.
Compatibilità all’indietro
– Le Offerte BOLT 12 create nelle versioni precedenti sono ancora valide ma sono a rischio di attacchi di deanonymization che consentono l’identificazione del nodo destinatario.
– I pagamenti in uscita BOLT 12 nello stato RecentPaymentDetails::AwaitingInvoice saranno alla fine scaduti dopo l’aggiornamento alla 0.0.124, in quanto qualsiasi fattura ricevuta sarà considerata non valida.
– Le Rimborsi BOLT 12 creati nella versione precedente con sentieri non vuoti sono considerati non validi da ChannelManager. I tentativi di rivendicarli saranno ignorati. I rimborsi senza percorsi offuscati non sono interessati.
Miglioramenti delle prestazioni
– Il calcolo dei percorsi è ora più veloce del 11-23%.
– lightning-block-sync ora evita molto meglio la competizione dei lock durante le richieste parallele di dati di blocco, accelerando la sincronizzazione gossip da più peer.
– Compatibilità del nodo
– Nella versione precedente si potevano verificare errori relativi alla reiezione spuria di channel_update che utilizzano bit di bandiera non ancora definiti.
In conclusione, la versione LDK 0.0.124 introduce una serie di miglioramenti, correzioni di bug e novità che renderanno più efficiente e sicura l’interazione con la rete Bitcoin, offrendo anche nuove funzionalità e maggiori opzioni di personalizzazione per gli utenti.