Releases: nervosnetwork/fiber
v0.8.1
What's Changed
- feat: add official Docker image support by @chenyukang in #1244
- feat: network: onion & socks5 support for fiber by @Officeyutong in #1228
- feat: add addr_type parameter to connect_peer RPC for transport type filtering by @quake in #1270
- feat(cch): default final TLC expiry deltas to 60 hours by @doitian in #1258
- feat: add gossip metrics benchmarks and CI integration by @swananan in #1177
- fix: push limit to DB layer in list_payments to avoid unbounded memory usage by @quake in #1261
- fix: fnn-migrate error messages and update README by @gpBlockchain in #1249
- fix: abort funding immediately on insufficient UDT cells by @doitian in #1253
- fix: Trigger gossip sync immediately on peer connection by @quake in #1271
- fix: RPC method not found should not return unauthorized when auth is disabled by @jjyr in #1235
- docs: refresh public node and network node documentation by @sunchengzhu in #1266
Full Changelog: v0.8.0...v0.8.1
v0.8.0
v0.8.0 - 2026-04-03
Breaking Changes
RPC: PeerId replaced with Pubkey
All RPC methods and types that previously used peer_id (base58-encoded libp2p PeerId) now use pubkey (hex-encoded compressed secp256k1 public key). (#1154)
open_channel: parameterpeer_idrenamed topubkey, type changed from PeerId to Pubkeylist_channels: parameterpeer_idrenamed topubkeydisconnect_peer: parameterpeer_idrenamed topubkeyconnect_peer: parameteraddresschanged from requiredMultiAddrto optionalString; new optional parameterpubkeyadded (at least one ofaddressorpubkeymust be provided)node_inforesponse: fieldnode_idrenamed topubkey;addressestype changed fromVec<MultiAddr>toVec<String>Channeltype: fieldpeer_idrenamed topubkeyPeerInfotype: fieldpeer_idremoved;addresstype changed fromMultiAddrtoStringNodeInfo(graph) type: fieldnode_idrenamed topubkey;addressestype changed toVec<String>
RPC: JSON type serialization overhaul
A new fiber-json-types crate was introduced for RPC-facing types, changing several serialization formats. (#1169)
Attribute(invoice) enum variants changed from PascalCase to snake_case (e.g.,FinalHtlcTimeout→final_htlc_timeout)Attribute::UdtScriptinner type changed from structuredCkbScriptto hex stringAttribute::PayeePublicKeyinner type changed fromPublicKeytoPubkeyHashAlgorithmenum variants changed from PascalCase to snake_case (e.g.,CkbHash→ckb_hash)CkbInvoice.signaturetype changed from structuredInvoiceSignatureto hex string;InvoiceSignaturetype removedCchInvoice::FiberandCchInvoice::Lightningnow carry encoded invoice strings instead of structured objectsChannelStateflags serialization changed to SCREAMING_SNAKE_CASE with pipe separator (e.g.,"OUR_INIT_SENT | THEIR_INIT_SENT")
RPC: CCH order status renames
CchOrderStatus::Succeededrenamed toSuccess(#1211)CchOrderStatus::OutgoingSucceededrenamed toOutgoingSuccess(#1211)
RPC: Error behavior changes
Several RPC methods now wait for operations to complete and return proper errors instead of silently returning success. (#1202)
connect_peer,disconnect_peer: now return errors on failurecommitment_signed,check_channel_shutdown(dev RPCs): now return errors on failure
Store: Data format changes requiring migration
- Channel actor state (prefix 0) gains two new fields:
pending_replay_updatesandlast_was_revoke(#1111) - Channel-by-pubkey index (prefix 64) re-keyed from PeerId to Pubkey (#1154)
- Network actor state (prefix 16) restructured:
peer_pubkey_mapremoved,saved_peer_addressesre-keyed from PeerId to Pubkey (#1154) - Channel open records (prefix 201) changed
peer_idfield topubkey(#1154)
Run fnn-migrate to apply all data migrations automatically. See the migration guide for details.
Features
- Support external wallet signing for channel funding, enabling hardware wallets, multisig setups, and browser-based signers via new
open_channel_with_external_fundingandsubmit_signed_funding_txRPCs (#1120) - CCH can now run as a standalone process, connecting to a Fiber node over HTTP RPC and subscribing to store changes via WebSocket
subscribe_store_changesendpoint (#1165) - Automatic funding retry with exponential backoff (up to 5 retries) for transient CKB RPC/network errors during channel funding (#1213)
- New
fiber-clicrate providing a command-line client for all Fiber RPC methods with colorized output and auto-generated subcommands (#1144) - Inbound and reconnect protections: per-peer budget for inbound connections, single-flight guard on pending channel opens, bounded deferred TLC replay, delayed channel-ready until reestablish completes (#1200)
- New
list_paymentsRPC for querying payment sessions (#1152) - Unified storage layer with
StorageBackendtrait abstracting over RocksDB, SQLite, and browser backends (#1191) - RPC documentation improvements for node identifiers and channel rebalancing (#1150)
Bug Fixes
- Persist
CommitDiffto disk so commitment replay after restart is deterministic, fixing potential wrong-order or missing replay during reestablish (#1111) - Forward
LocalCommitmentSignedevent to watchtower so it has data needed to dispute stale remote-initiated closes (#1151) - CCH: dynamically compute remaining incoming time and cap outgoing route expiry to prevent HTLC timeout issues in multi-hop routes (#1148)
- Fix gossip startup sync cursor pollution where locally-generated messages could incorrectly advance the cursor, skipping remote gossip updates (#1227)
- Treat no-route errors as permanent in CCH outgoing payments (#979)
- Handle overflow in BTC final TLC expiry delta calculation (#977)
- Fix receive_btc invoice currency code from 'Fibt' to 'Fibd' (#1146)
- Fix clearer error when key file has 0x prefix (#1162)
Refactoring
- Extract
fiber-typescrate for all serializable types (#1152) - Extract
fiber-storecrate withStorageBackendtrait (#1168) - Add
fiber-json-typescrate for RPC-facing types (#1169) - Rename various types and CCH fields for consistency (#1211)
- Use upstream ractor release (#1214)
- Cleanup unused fields (#1231)
New Contributors
- @15168316096 made their first contribution in #1190
Full Changelog: v0.7.1...v0.8.0
v0.8.0-rc1
⚠️ Breaking Changes
- Migration script is not ready. This release is for integration testing only, don't use it to upgrade old version.
- RPC peer identity switched to pubkey (#1154)
- Rename types and CCH fields (#1211)
✨ Features
- Add
fiber-cli(#1144) - Support external wallet signing for channel funding (#1120)
- Funding retry support (#1213)
- CCH separate service mode (RPC + WebSocket) (#1165)
- OpenRPC JSON generator (#1160)
- Add aarch64 Linux prebuilt binaries (#1187)
🐛 Fixes & Improvements
- BTC payment validation & correctness:
- Payment & routing reliability:
- Stability:
- Error handling:
📚 Docs
New Contributors
- @15168316096 made their first contribution in #1190
Full Changelog: v0.7.1...v0.8.0-rc1
v0.7.1
What's Changed
- Make CORS configurable and disabled by default by @Copilot in #1121
- Early-fail with InsufficientBalance when outbound liquidity cannot cover payment amount by @Copilot in #1133
- fix: fail pending TLCs when a hold invoice is cancelled (#1135) by @doitian in #1138
- fix: reject Received in SettleTlcSetCommand to prevent duplicate same-invoice payments by @doitian in #1137
- Add observable channel opening: persistent state, failure details, and
only_pendingfilter forlist_channelsby @Copilot in #1134
Full Changelog: v0.7.0...v0.7.1
v0.7.1-rc1
What's Changed
- Make CORS configurable and disabled by default by @Copilot in #1121
- Early-fail with InsufficientBalance when outbound liquidity cannot cover payment amount by @Copilot in #1133
- fix: fail pending TLCs when a hold invoice is cancelled (#1135) by @doitian in #1138
- fix: reject Received in SettleTlcSetCommand to prevent duplicate same-invoice payments by @doitian in #1137
- Add observable channel opening: persistent state, failure details, and
only_pendingfilter forlist_channelsby @Copilot in #1134
Full Changelog: v0.7.0...v0.7.1-rc1
v0.7.0
Fiber v0.7.0 – Important Changes
🚀 New Features
-
Oneway Channel and Trampoline Routing (#1012)
Introduces support for one-way channels and trampoline routing. -
Disable Gossip Network Synchronization Option (#1070)
Adds configuration to disable gossip sync for specific deployment scenarios.
CCH Enhancements
- Refactor CCH order with FSM and actions (#971)
- Add expiry, preimage, and invoice validations (#998)
- Implement order persistence and housekeeping (#1045)
Payment Improvements
- Add upper bound limit for payment fee (#1073)
- Add payment_hash tracing in PaymentActor flows (#1063)
- Improve hold TLC settlement logic (#1022)
fiber-js
- Include mainnet/testnet config examples
- Update testnet bootnodes
⚠️ Breaking Changes
-
Remove redundant
u64length header from hop data serialization (#1095)
Serialization format change that may affect protocol compatibility. -
Fix v0.7.0 migration issues (#1112)
🔒 Security Improvements
- Redact
session_keyandpreimagefrom Attempt debug output (#1062) - Prevent integer overflow in onion packet deserialization (#1094)
- Use
LocalSignerto manage secret keys (#1088)
⚡ Performance Improvements
- Improve
find_pathperformance (#1081) - Use secp256k1 global-context feature to avoid repeated context creation (#1103)
- Use new
Pubkeyimplementation for better performance (#1084) - Use molecule for trampoline onion packet (#1100)
🧠 Concurrency & Stability Fixes
- Fix concurrency issue when forwarding multiple TLCs with same invoice (#1056)
- Avoid blocking NetworkActor on ChannelReady with attempt index (#1093)
- Fix router pay e2e test (#1054)
- Fix multiple unstable CI and test cases (invoice, watchtower, add_tlc, expiry delta)
📦 Dependency & Runtime Upgrades
- Upgrade Rust: 1.85.0 → 1.93.0
- Upgrade secp256k1 to 0.30 and musig2 to 0.2.4
- Update lightning and bitcoin crates
- Multiple dependency updates (clap, tokio-metrics, tracing, bytes, serde_json)
📚 Documentation
- Add payment and attempt lifecycle diagram (#1036)
- Add Fiber network glossary (#1075)
- Add AGENTS.md with AI coding guidelines (#1067)
New Contributors
- @swananan made their first contribution in #1062
- @jiangxianliang007 made their first contribution in #1065
- @Zhangcy0x3 made their first contribution in #1079
- @joii2020 made their first contribution in #1088
Full Changelog: v0.6.1...v0.7.0
v0.7.0-rc1
What's Changed
- Fix concurrency issue from forwarding mulitple tlcs with same invoice by @chenyukang in #1056
- fiber-js: include example configuration of mainnet and testnet in README by @Officeyutong in #1064
- Update the bootnode server IP address by @jiangxianliang007 in #1065
- fiber-js: update testnet bootnodes in README by @Officeyutong in #1066
- feat: add option to disable gossip network synchronization by @quake in #1070
- Stop CKB tx tracer when fail to resolve by @doitian in #1069
- Refactor CCH order with FSM and actions by @doitian in #971
- feat(cch): add expiry, preimage, and invoice validations by @doitian in #998
- feat(cch): implement order persistence and housekeeping by @doitian in #1045
- Add a up bound limit for payment fee by @chenyukang in #1073
- chore(deps): bump clap from 4.5.50 to 4.5.54 by @dependabot[bot] in #1060
- chore(deps): bump tokio-metrics from 0.4.5 to 0.4.7 by @dependabot[bot] in #1058
- feat: add logging for channel auto-accept failures by @doitian in #994
- Improve find_path performance with map by @chenyukang in #1081
- docs: add payment and attempt lifecycle diagram (#1036) by @Zhangcy0x3 in #1079
- Refactory: Use LocalSigner to manage secretkeys. by @joii2020 in #1088
- chore(docs): add fiber network glossary by @swananan in #1075
- use forward! for fiber outgoing payments by @swananan in #1089
- fix: prevent integer overflow in onion packet deserialization by @doitian in #1094
- Oneway channel and trampoline routing by @chenyukang in #1012
- fix: avoid blocking NetworkActor on ChannelReady with attempt index by @jjyr in #1093
- Use new Pubkey for better performance by @chenyukang in #1084
- feat!: remove redundant u64 length header from hop data serialization by @doitian in #1095
- perf: use secp256k1 global-context feature to avoid repeated context creation by @quake in #1103
- refactor: improve hold TLC settlement logic by @doitian in #1022
New Contributors
- @swananan made their first contribution in #1062
- @jiangxianliang007 made their first contribution in #1065
- @Zhangcy0x3 made their first contribution in #1079
- @joii2020 made their first contribution in #1088
Full Changelog: v0.6.1...v0.7.0-rc1
v0.6.1-rc2
What's Changed
- fix: correct watchtower e2e tests on pending TLCs by @doitian in #966
- feat: enforce invoice status checks before settlement by @doitian in #961
- Ensure add tlc expiry is large than final tlc minimum expiry delta by @jjyr in #962
- fix: handle funding transaction signing failure by @doitian in #1003
- feat: monitor fiber store changes for cch by @doitian in #950
- Invoice status will not update from Receive to Open by @chenyukang in #1008
- feat: save forwarding channel info by @quake in #1010
- fix: watchtower should mark settled tlc by @quake in #1006
- fix: abort funding after restart when stuck in negotiating funding by @doitian in #997
- fix: expired offered tlc check by @quake in #1014
- perf: remove channel_id from TlcInfo by @quake in #1017
- Check channel onchain settlement after uncooperative closed by @jjyr in #1020
- Payment actor by @jjyr in #986
- Fix payment state on add or remove tlc by @jjyr in #1025
- Fix broken link for discord channel by @chenyukang in #1030
- Add udt check for invoice for last hop by @chenyukang in #1041
- Fix inflight count by @jjyr in #1046
- Fix the performance issue in path finding by @chenyukang in #999
Full Changelog: v0.6.0...v0.6.1-rc1
v0.6.1
What's Changed
- fix: correct watchtower e2e tests on pending TLCs by @doitian in #966
- feat: enforce invoice status checks before settlement by @doitian in #961
- Ensure add tlc expiry is large than final tlc minimum expiry delta by @jjyr in #962
- fix: handle funding transaction signing failure by @doitian in #1003
- feat: monitor fiber store changes for cch by @doitian in #950
- Invoice status will not update from Receive to Open by @chenyukang in #1008
- feat: save forwarding channel info by @quake in #1010
- fix: watchtower should mark settled tlc by @quake in #1006
- fix: abort funding after restart when stuck in negotiating funding by @doitian in #997
- fix: expired offered tlc check by @quake in #1014
- perf: remove channel_id from TlcInfo by @quake in #1017
- Check channel onchain settlement after uncooperative closed by @jjyr in #1020
- Payment actor by @jjyr in #986
- Fix payment state on add or remove tlc by @jjyr in #1025
- Fix broken link for discord channel by @chenyukang in #1030
- Add udt check for invoice for last hop by @chenyukang in #1041
- Fix inflight count by @jjyr in #1046
- Fix the performance issue in path finding by @chenyukang in #999
Full Changelog: v0.6.0...v0.6.1
v0.6.1-rc1
What's Changed
- fix: correct watchtower e2e tests on pending TLCs by @doitian in #966
- feat: enforce invoice status checks before settlement by @doitian in #961
- Ensure add tlc expiry is large than final tlc minimum expiry delta by @jjyr in #962
- fix: handle funding transaction signing failure by @doitian in #1003
- feat: monitor fiber store changes for cch by @doitian in #950
- Invoice status will not update from Receive to Open by @chenyukang in #1008
- feat: save forwarding channel info by @quake in #1010
- fix: watchtower should mark settled tlc by @quake in #1006
- fix: abort funding after restart when stuck in negotiating funding by @doitian in #997
- fix: expired offered tlc check by @quake in #1014
- perf: remove channel_id from TlcInfo by @quake in #1017
- Check channel onchain settlement after uncooperative closed by @jjyr in #1020
- Payment actor by @jjyr in #986
- Fix payment state on add or remove tlc by @jjyr in #1025
- Fix broken link for discord channel by @chenyukang in #1030
- Add udt check for invoice for last hop by @chenyukang in #1041
- Fix inflight count by @jjyr in #1046
Full Changelog: v0.6.0...v0.6.1-rc1