Skip to content

Releases: nervosnetwork/fiber

v0.8.1

15 Apr 23:41
b560023

Choose a tag to compare

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

03 Apr 12:27
335a74a

Choose a tag to compare

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: parameter peer_id renamed to pubkey, type changed from PeerId to Pubkey
  • list_channels: parameter peer_id renamed to pubkey
  • disconnect_peer: parameter peer_id renamed to pubkey
  • connect_peer: parameter address changed from required MultiAddr to optional String; new optional parameter pubkey added (at least one of address or pubkey must be provided)
  • node_info response: field node_id renamed to pubkey; addresses type changed from Vec<MultiAddr> to Vec<String>
  • Channel type: field peer_id renamed to pubkey
  • PeerInfo type: field peer_id removed; address type changed from MultiAddr to String
  • NodeInfo (graph) type: field node_id renamed to pubkey; addresses type changed to Vec<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., FinalHtlcTimeoutfinal_htlc_timeout)
  • Attribute::UdtScript inner type changed from structured CkbScript to hex string
  • Attribute::PayeePublicKey inner type changed from PublicKey to Pubkey
  • HashAlgorithm enum variants changed from PascalCase to snake_case (e.g., CkbHashckb_hash)
  • CkbInvoice.signature type changed from structured InvoiceSignature to hex string; InvoiceSignature type removed
  • CchInvoice::Fiber and CchInvoice::Lightning now carry encoded invoice strings instead of structured objects
  • ChannelState flags serialization changed to SCREAMING_SNAKE_CASE with pipe separator (e.g., "OUR_INIT_SENT | THEIR_INIT_SENT")

RPC: CCH order status renames

  • CchOrderStatus::Succeeded renamed to Success (#1211)
  • CchOrderStatus::OutgoingSucceeded renamed to OutgoingSuccess (#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 failure
  • commitment_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_updates and last_was_revoke (#1111)
  • Channel-by-pubkey index (prefix 64) re-keyed from PeerId to Pubkey (#1154)
  • Network actor state (prefix 16) restructured: peer_pubkey_map removed, saved_peer_addresses re-keyed from PeerId to Pubkey (#1154)
  • Channel open records (prefix 201) changed peer_id field to pubkey (#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_funding and submit_signed_funding_tx RPCs (#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_changes endpoint (#1165)
  • Automatic funding retry with exponential backoff (up to 5 retries) for transient CKB RPC/network errors during channel funding (#1213)
  • New fiber-cli crate 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_payments RPC for querying payment sessions (#1152)
  • Unified storage layer with StorageBackend trait abstracting over RocksDB, SQLite, and browser backends (#1191)
  • RPC documentation improvements for node identifiers and channel rebalancing (#1150)

Bug Fixes

  • Persist CommitDiff to disk so commitment replay after restart is deterministic, fixing potential wrong-order or missing replay during reestablish (#1111)
  • Forward LocalCommitmentSigned event 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-types crate for all serializable types (#1152)
  • Extract fiber-store crate with StorageBackend trait (#1168)
  • Add fiber-json-types crate 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

Full Changelog: v0.7.1...v0.8.0

v0.8.0-rc1

26 Mar 00:11
c28387f

Choose a tag to compare

v0.8.0-rc1 Pre-release
Pre-release

⚠️ 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:
    • Validate invoice network/currency (#1146)
    • Check HTLC expiry delta (#1148)
    • Fix expiry delta overflow (#1145)
    • Include fee in receive invoice (#1142)
  • Payment & routing reliability:
    • Improve permanent error detection (#1143)
    • Forward missing settlements to watchtower (#1151)
  • Stability:
    • Stabilize commitment replay across restarts (#1111)
    • Fix gossip sync cursor pollution (#1227)
    • Add inbound & reconnect protections (#1200)
    • Fix flaky e2e tests (#1188)
  • Error handling:
    • Better RPC error responses (#1202)
    • Clearer hex parsing errors (#1163)

📚 Docs

  • Improve RPC docs (node identifiers, rebalancing) (#1150)
  • Update testnet guide (#1190)

New Contributors

Full Changelog: v0.7.1...v0.8.0-rc1

v0.7.1

25 Feb 22:10
34c95d0

Choose a tag to compare

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_pending filter for list_channels by @Copilot in #1134

Full Changelog: v0.7.0...v0.7.1

v0.7.1-rc1

25 Feb 00:11
6f15883

Choose a tag to compare

v0.7.1-rc1 Pre-release
Pre-release

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_pending filter for list_channels by @Copilot in #1134

Full Changelog: v0.7.0...v0.7.1-rc1

v0.7.0

12 Feb 04:41
0ccde6c

Choose a tag to compare

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 u64 length 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_key and preimage from Attempt debug output (#1062)
  • Prevent integer overflow in onion packet deserialization (#1094)
  • Use LocalSigner to manage secret keys (#1088)

⚡ Performance Improvements

  • Improve find_path performance (#1081)
  • Use secp256k1 global-context feature to avoid repeated context creation (#1103)
  • Use new Pubkey implementation 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

Full Changelog: v0.6.1...v0.7.0

v0.7.0-rc1

06 Feb 11:44
1d75447

Choose a tag to compare

v0.7.0-rc1 Pre-release
Pre-release

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

Full Changelog: v0.6.1...v0.7.0-rc1

v0.6.1-rc2

14 Jan 02:49
69ff301

Choose a tag to compare

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

14 Jan 09:40
f761b6d

Choose a tag to compare

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

13 Jan 06:50
18ac69c

Choose a tag to compare

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