Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
10000 commits
Select commit Hold shift + click to select a range
ed2b0ef
nit: installation.md
MicahMaphet Jul 28, 2025
92020ac
configure: Add macOS-specific debug flags for libbacktrace compatibi…
sangbida Jul 29, 2025
9e55e8d
configure: Fix debug symbols for installed binaries on macOS
sangbida Aug 2, 2025
d9685a6
fuzz-tests: Make `fuzz-bolt12-invrequest-decode` roundrip
Jul 11, 2025
a1c554f
fuzz-tests: Add coverage increasing inputs to seed corpora
Jul 11, 2025
e6b14da
pytest: test for watchtime-blocks=0
rustyrussell Aug 4, 2025
6a94683
hsmd: don't assert that our own locktime is > 0.
rustyrussell Aug 4, 2025
39451c0
channel: Fix channel state max value
ddustin Jul 20, 2025
9215653
channel: Add test for channel state max
ddustin Jul 20, 2025
1fb442a
docs: Updated Connection URI doc to clearify certs order
ShahanaFarooqui Aug 8, 2025
620b96a
askrene: add new functions to refine flows
Lagrang3 Jul 9, 2025
f4f8ea0
askrene: refine: remove flows with HTLC min faults
Lagrang3 Jul 9, 2025
b479963
askrene: refine: disable HTLC min violations
Lagrang3 Jul 9, 2025
3a0d0da
askrene: refine: expose some of the refine API
Lagrang3 Jul 9, 2025
d64f438
askrene: refine: add a step to increase flows ...
Lagrang3 Aug 1, 2025
767893d
askrene: rework the caller of the MCF solver
Lagrang3 Jul 9, 2025
f7ba8f1
askrene: refine: remove refine_with_fee_and_limits
Lagrang3 Jul 9, 2025
5b8102e
askrene: paranoid checks ...
Lagrang3 Jul 9, 2025
c56464c
refactor: pyproject.toml poetry to uv + hatch
king-11 Aug 3, 2025
6088a0e
feat: add __init__.py in packages
king-11 May 7, 2025
04afdc4
feat: add pytest config
king-11 May 7, 2025
69102c6
feat: replace poetry with uv for dependency management
king-11 May 8, 2025
4afa5f7
fix: macOS for grpico-tools
king-11 May 8, 2025
f442bd5
fix: flake8 lint rules
king-11 May 10, 2025
89eaf5b
feat: replace poetry with uv in Makefiles
king-11 May 10, 2025
570c631
feat: update release pipeline
king-11 Jun 19, 2025
a0fe017
chore: update docs for uv
king-11 Jun 19, 2025
c468dda
chore: add poetry for reckless
king-11 May 14, 2025
b0360ea
chore: add libffi
king-11 Jun 21, 2025
d428998
fix: replace deprecated flask.escape with markupsafe.escape
king-11 Jun 21, 2025
0ca833f
fix: coincurve build issue
king-11 Aug 5, 2025
e051ba6
sqlite3: consistently comment where we want to upgrade.
rustyrussell Jul 17, 2025
f542949
db: drop support for sqlite3 < 3.14.
rustyrussell Jul 17, 2025
afffb53
tools: enforce minimum sqlite3 version number.
rustyrussell Jul 17, 2025
bd26f72
reckless: fix installer search
endothermicdev Jul 11, 2025
0364282
reckless: correct direct install from local repo subdirectory
endothermicdev Jul 17, 2025
1bb809a
reckless: add uv python env installation method
endothermicdev Jul 11, 2025
da737d2
pytest: add reckless regex search
endothermicdev Aug 11, 2025
542b54c
pytest: refactor reckless check_stderr
endothermicdev Aug 11, 2025
d427a66
pytest: test python plugin installation via uv
endothermicdev Aug 11, 2025
ebbe5a2
reckless: add uv installer support for legacy projects
endothermicdev Aug 11, 2025
5a98d1b
docs: Update the developer getting started guide
ddustin Aug 12, 2025
4e94a6c
lightningd: make option_channel_type compulsory.
rustyrussell Jun 27, 2025
cd90576
openingd/dualopend: don't allow peer not to send channel_type.
rustyrussell Jun 27, 2025
7893c87
pytest: use _ not - in plugin options to zeroconf-selective.py.
rustyrussell Jul 3, 2025
193ac6f
pytest: test what happens if we *explicitly* ask for a zeroconf channel.
rustyrussell Jul 3, 2025
a7316fe
pytest: actually test channel_type when negotiating prviate channel.
rustyrussell Jul 3, 2025
506fa91
lightningd: always tell openingd/dualopend what channel type we want.
rustyrussell Jul 11, 2025
b3774d4
openingd: remove compat hacks to "intuit" opt_scid_alias.
rustyrussell Jul 11, 2025
d5c7318
plugin: Allow json_object and json_group_array functions in sql plugin
ShahanaFarooqui Aug 12, 2025
bab6429
tests: add sql json function tests
ShahanaFarooqui Aug 12, 2025
2e58ed6
docs: Added json_object and json_group_array to permitted_sqlite3_fu…
ShahanaFarooqui Aug 13, 2025
87ae355
splice: Add details to log message
ddustin Jun 18, 2025
a8ff8ce
splice: Add field to DB to track if we’ve sent sigs
ddustin Jun 18, 2025
d84d0f7
splice: Track if splice sigs are sent
ddustin Jun 18, 2025
dd1e183
splice: Change abort rules to sent sigs
ddustin Jun 18, 2025
e3e0813
splice: Sign shared output early
ddustin Jun 18, 2025
8783f3c
splice: Add details to log message
ddustin Jun 18, 2025
286124e
interactive_tx: Add verbose logging
ddustin Jun 18, 2025
2e660d9
splice: Fix cross-channel splices
ddustin Jun 18, 2025
122dae1
splice: Even if the psbt’s “match” the sig data may vary
ddustin Jun 19, 2025
a17b364
splice: Test for two channel splice
ddustin Jun 18, 2025
a5a71f3
psbt: don’t accumlate 0 lenth widtness data
ddustin Aug 1, 2025
c602a8a
channeld: Move counting code to its own function
ddustin Aug 12, 2025
931924a
pytest: test if we correctly route using old scids after splice
rustyrussell Aug 13, 2025
51d6afe
wallet: remove now-gratuitous counters from update statements.
rustyrussell Aug 13, 2025
4abd0af
lightningd: save previous short_channel_ids during splice, and keep i…
rustyrussell Aug 14, 2025
d70fc13
lightningd: consider old scids when looking up channels (for routing).
rustyrussell Aug 14, 2025
ab80345
lightningd: maintain a hash table of short_channel_id, for faster loo…
rustyrussell Aug 14, 2025
639452a
bitcoin: have random_scid() function.
rustyrussell Aug 14, 2025
bb4dda6
wallet: we can assume local_alias field is non-null.
rustyrussell Aug 14, 2025
5e263ba
lightningd: require local_alias in new_channel().
rustyrussell Aug 14, 2025
d1f56eb
lightningd: use the hash table to lookup scids.
rustyrussell Aug 14, 2025
f265a95
pytest: test persistence of old scids, even if we spliced multiple ti…
rustyrussell Aug 14, 2025
07f4bc3
splice: Add `start_batch` and an internal wire type
ddustin Jun 16, 2025
e755be0
splice: Remove `batch_size` from `commitment_signed`
ddustin Jun 16, 2025
7eb2add
channeld: Implement receiving of `start_batch`
ddustin Jun 16, 2025
3841737
channeld: Cleaner error messages
ddustin Jun 16, 2025
052f36c
connectd: Implement sending of `start_batch`
ddustin Jun 16, 2025
80309df
common: add json_add_timerel helper.
rustyrussell Jun 13, 2025
4c23cf2
libplugin: correctly mark that plugin_notification_end STEALS the str…
rustyrussell Jun 13, 2025
e24bd96
xpay: add `pay_part_start` and `pay_part_end` notifications.
rustyrussell Aug 13, 2025
c88ec27
pytest: test xpay notifications.
rustyrussell Aug 14, 2025
0938d54
gossipwith: add flag to insist that we receive all messages.
rustyrussell Aug 13, 2025
a0fd72e
connectd: warn if we ignore peer incoming for longer than 5 seconds.
rustyrussell Aug 14, 2025
5f54403
lightningd: fix race with crossover pings.
rustyrussell Aug 14, 2025
9112c1d
common/json_parse_simple: make convenience functions inline
whitslack Jul 12, 2025
e3e4116
cln-bip353: add plugin that fetches payment instructions from human r…
daywalker90 Jun 18, 2025
f4cc633
channeld: add extra_tlvs from update_add_htlc msg
nepet Jul 30, 2025
631a1d9
channeld: Add extra_tlvs to wire htlcs
nepet Jul 30, 2025
ef52de8
channeld: Add extra_tlvs to incomming wire msg
nepet Jul 30, 2025
2264b93
lightningd: Add extra_tlvs to htlc_accepted_hook
nepet Jul 30, 2025
dbbb113
tests: Add tests for extra_tlvs in hook
nepet Jul 30, 2025
40c01ea
docs: Add extra_tlvs to the htlc_accepted_hook doc
nepet Jul 30, 2025
5e620ca
tools: Filter "highlight" case insensitive
nepet Jul 31, 2025
5c1fd78
tools: Remove lockfiles from spell-checking
nepet Jul 31, 2025
63065aa
common: handle taken() extra_tlvs in new_existing_htlc properly.
rustyrussell Aug 14, 2025
6fbc5d0
common/htlc_wire: add towire/fromwire helpers for wrapped tlv streams.
rustyrussell Aug 14, 2025
9b4a708
pytest: save pre-movement dbs, and accounting dbs.
rustyrussell Aug 14, 2025
ed77edf
db: better diagnostics when a query fails.
rustyrussell Aug 14, 2025
a25c1d4
libplugin: make jsonrpc_set_datastore_binary() take an explicit length.
rustyrussell Aug 14, 2025
aee7ebb
onchaind: don't consider our anchors to be payments into the wallet.
rustyrussell Aug 14, 2025
0534c52
common: remove "ignored" tag.
rustyrussell Aug 14, 2025
b8b1d45
db: hand amount_msat / amount_sat by copy, not pointer.
rustyrussell Aug 14, 2025
45678aa
lightningd: use channel_coin_mvt / chain_coin_mvt directly for notifi…
rustyrussell Aug 14, 2025
e32b514
common: remove `struct coin_mvt` altogether.
rustyrussell Aug 14, 2025
f4ac8fc
common/coin_mvt: make more parameters const.
rustyrussell Aug 14, 2025
bc5e54d
common: coin movements for payments need group id as well as part id.
rustyrussell Aug 14, 2025
e372c2e
common/coin_mvt: use enum rather than true/false for credit/debit.
rustyrussell Aug 14, 2025
6fc0b1f
common/coin_mvt: add struct mvt_account_id to separate channels from …
rustyrussell Aug 14, 2025
1d3237f
common/coin_mvt: make more fields const, reorder fields.
rustyrussell Aug 14, 2025
5756b54
common: rename enum mvt_tag values.
rustyrussell Aug 14, 2025
9c6e7b8
pytest: don't assume that tags will always be in the same order.
rustyrussell Aug 14, 2025
0d40d43
common: enforce the use of a "primary" tag in coin_mvt tags.
rustyrussell Aug 14, 2025
1833cc2
common: mvt_tag_strs() function to turn tags array into strings.
rustyrussell Aug 14, 2025
bafda5c
common: mvt_tag parsing routine.
rustyrussell Aug 14, 2025
8c315c1
coin_mvt: use bitmap instead of tal_arr for tags.
rustyrussell Aug 14, 2025
9b2c87f
common: implement primary_mvt_tag() to extract primary tag.
rustyrussell Aug 14, 2025
650f388
lightningd: separate coin_movement `tags` array into `primary_tag` an…
rustyrussell Aug 14, 2025
c0221b1
coin_mvt: put timestamp into the struct.
rustyrussell Aug 14, 2025
d066a5f
common: make chain_coin_mvt's outpoint member a non-pointer.
rustyrussell Aug 14, 2025
841a8bd
lightningd: extract core of coin_movement notification, for use in li…
rustyrussell Aug 14, 2025
b0231a5
common: put "external" and "wallet" strings, and test functions into …
rustyrussell Aug 14, 2025
0c9dc4c
bkpr: remove unused "account_exits" parameter to account_get_balance().
rustyrussell Aug 14, 2025
47c2735
bkpr: remove currency support from balances.
rustyrussell Aug 14, 2025
b1fa2ef
bkpr: remove different currency support.
rustyrussell Aug 14, 2025
22b452a
lightningd: have onchaind inform us when to make a channel penalty_adj.
rustyrussell Aug 14, 2025
ea2fecc
common: set errno=0 before calling strto{l,ul,ull}
whitslack Jul 12, 2025
f1bfa71
chore: fix some minor issues
longhutianjie Aug 13, 2025
733bdfa
lightningd: add channel_type to openchannel & openchannel2 hooks.
rustyrussell Aug 14, 2025
4031860
ccan: update to get json_escape_unescape_len()
whitslack Aug 15, 2025
c28f5e7
use json_escape_unescape_len()
whitslack Aug 15, 2025
3dd0979
lightningd: use json_escape_unescape_len for log message strings rece…
whitslack Aug 15, 2025
b298e3f
askrene: refine: add helper function remove_flows
Lagrang3 Aug 13, 2025
0c5c7a5
askrene: add maxparts
Lagrang3 Aug 13, 2025
1830c0e
xpay: add developer option dev_maxparts
Lagrang3 Aug 14, 2025
5dc601e
pyln-testing: don't run reckless under valgrind.
rustyrussell Aug 15, 2025
79b959b
pytest: fix flake in test_route_by_old_scid
rustyrussell Aug 15, 2025
4b64b69
docs: Added `fetchbip353` example in autogenerate script
ShahanaFarooqui Aug 15, 2025
4d10da2
script: Add `update-versions` in Makefile again
ShahanaFarooqui Aug 15, 2025
3015bfc
pytest: simple test for pay's custom notifications.
rustyrussell Aug 17, 2025
0456bac
connectd: drop excess gossipd messages.
rustyrussell Aug 17, 2025
a686bda
lightningd: deprecate `null` short_channel_id and `unknown` old_state…
rustyrussell Aug 17, 2025
fc5edea
pyln-client: adapt for modern plugin notifications.
rustyrussell Aug 17, 2025
16819f3
lightningd: make notifications from plugins just like native ones.
rustyrussell Aug 17, 2025
5d5741e
libplugin: correctly wrap notifications we send in the notification n…
rustyrussell Aug 17, 2025
69a8ccc
pyln-client: create modern-style notifications if caller doesn't.
rustyrussell Aug 17, 2025
9e7be80
lightningd: add dev option to save hooks and notifications to/from pl…
rustyrussell Aug 17, 2025
e43a4a9
pyln-testing: check plugin notifications against any extant notificat…
rustyrussell Aug 17, 2025
6bac381
cln-plugin: adapt send_custom_notification to send modern-style notif…
rustyrussell Aug 17, 2025
9ed5545
msggen: add override for connect notification in cln-rpc aswell
daywalker90 Aug 17, 2025
9680404
doc/schemas: add websocket to type in doc/schemas/notification/connec…
rustyrussell Aug 17, 2025
41d31dc
avoid UB when calling ctype functions
whitslack Aug 17, 2025
b2ff500
reckless: store source locations as correct type
endothermicdev Aug 14, 2025
79b5695
reckless: reduce uv verbosity and avoid flooding output
endothermicdev Aug 14, 2025
1d513c2
reckless-rpc: increase initial buffer size
endothermicdev Aug 14, 2025
b76d9b3
pytest: test for fetchinvoice when a onion-message-capable peer is di…
rustyrussell Aug 18, 2025
5345e71
offers: fix fetchinvoice from using disconnected peers.
rustyrussell Aug 18, 2025
0738ea6
doc: Add macOS uv instructions to installations.md
sangbida Aug 18, 2025
aea7358
doc: build documentation for fetchbip353 command.
rustyrussell Aug 18, 2025
103a49e
xpay: support paying a (simple) bolt12 offer directly.
rustyrussell Aug 18, 2025
6799dbe
xpay: add option to pay bip353.
rustyrussell Aug 18, 2025
2ef776b
pytest: test that opening a channel below our own minimum fails *grac…
rustyrussell Aug 18, 2025
9b68ba0
openingd: test that channel open seems possible before bothering peer.
rustyrussell Aug 18, 2025
bf3b2cc
pytest: check current bookkeeper events in saved test_migration snaps…
rustyrussell Aug 18, 2025
b2baef1
db: helper for binding/reading bitcoin_outpoint.
rustyrussell Aug 18, 2025
37cde40
wallet: chain_moves and channel_moves tables.
rustyrussell Aug 19, 2025
6eb079c
wallet: routines to append to chain_moves and channel_moves tables.
rustyrussell Aug 19, 2025
7e3777b
wallet: update chain_moves and channel_moves tables from channel_id -…
rustyrussell Aug 19, 2025
f3f26cb
wallet: record all coin movements into chain_moves or channel_moves t…
rustyrussell Aug 19, 2025
74abe33
common: fix values of enum mvt_tag since they're now embedded in the db.
rustyrussell Aug 19, 2025
0c77cdd
lightningd: reorder JSON fields into more coherent order.
rustyrussell Aug 19, 2025
f7e9af2
wallet: add accessors to read chain_moves & channel_moves tables.
rustyrussell Aug 19, 2025
233628a
lightningd: speed mapping from coinmoves table to channel for listcoi…
rustyrussell Aug 19, 2025
7c2a746
lightningd: add listchainmoves and listchannelmoves commands.
rustyrussell Aug 19, 2025
33ed1eb
pytest: test listcoinmoves / listchannelmoves for unilateral closes.
rustyrussell Aug 19, 2025
4c28247
pytest: test accounting is correct for onchain fulfills.
rustyrussell Aug 19, 2025
397fdd9
pytest: test coinmoves in the case of unexpected fulfill.
rustyrussell Aug 19, 2025
c036855
pytest: test listcoinmoves / listchannelmoves during penalties.
rustyrussell Aug 19, 2025
6c626b1
lightningd: add chainmoves and channelmoves to wait command.
rustyrussell Aug 19, 2025
cfbca30
plugins/sql: add listchainmoves and listchannelmoves.
rustyrussell Aug 19, 2025
a36e779
sql: optimize listchainmoves and listchannelmoves accesses.
rustyrussell Aug 19, 2025
3ae2225
plugins/sql: use `created_index` as primary key, where available.
rustyrussell Aug 19, 2025
0ff1c7a
pytest: test for parallel refresh.
rustyrussell Aug 19, 2025
19dab62
sql: avoid trying to do parallel refreshes.
rustyrussell Aug 19, 2025
c5a8033
bkpr: NULL-out the function migrations.
rustyrussell Aug 19, 2025
b7e95e4
bkpr: send a backtrace if we get a fatal db event.
rustyrussell Aug 19, 2025
030863d
bkpr: strings in structures should be const.
rustyrussell Aug 19, 2025
c00d12f
bookkeeper: use modern plugin_get_data() instead of globals.
rustyrussell Aug 19, 2025
41856dc
bkpr: expose `struct bkpr` to outside bookkeeper.c.
rustyrussell Aug 19, 2025
40c0d86
bkpr: move account db functions from recorder.c into account.c.
rustyrussell Aug 19, 2025
fb20a55
bkpr: find_or_create_account() instead of raw new_account().
rustyrussell Aug 19, 2025
f72df6d
bkpr: cache accounts table in memory.
rustyrussell Aug 19, 2025
9c786a2
bkpr: use direct names, not another table, in db.
rustyrussell Aug 19, 2025
fd657e8
]bkpr: save accounts in the datastore instead of database.
rustyrussell Aug 19, 2025
902f821
bkpr: remove accounts table from db altogether.
rustyrussell Aug 19, 2025
5dc88c9
bkpr: move onchain fees access into bkpr/onchain_fee.
rustyrussell Aug 19, 2025
568f12e
bkpr: remove redundant account_onchain_fees
rustyrussell Aug 19, 2025
4e49a66
bkpr: keep onchain_fees in memory & datastore.
rustyrussell Aug 19, 2025
bf9c864
bkpr: save and restore onchain_fees from the datastore, not the db.
rustyrussell Aug 19, 2025
66d3680
bkpr: remove onchain_fees table.
rustyrussell Aug 19, 2025
e012a82
bookkeeper: infrastructure to keep descriptions (annotations) in mem …
rustyrussell Aug 19, 2025
af2e403
bkpr: use the in-memory event descriptions, not the database ones.
rustyrussell Aug 19, 2025
6dcc580
bkpr: infrastructure to keep rebalance pairs in mem & datastore.
rustyrussell Aug 19, 2025
0afc4c0
bookkeeper: use the in-memory rebalances.
rustyrussell Aug 19, 2025
e28443e
bkpr: pass bkpr struct into all functions in recorder.c.
rustyrussell Aug 19, 2025
c5e359c
bkpr: add in-mem & datastore storage for external blockheights.
rustyrussell Aug 19, 2025
c173b01
pytest: use assert inside event testing.
rustyrussell Aug 19, 2025
254b7ed
lightningd: new internal-use commands to allow utxo spend / deposit i…
rustyrussell Aug 19, 2025
78f88c1
common: use "foreign" in extra_tags to indicate a chain movement is i…
rustyrussell Aug 19, 2025
980241f
bookkeeper: don't set origin account to "null" if that's specified as…
rustyrussell Aug 19, 2025
1f79052
bkpr: forward utxo_deposit / utxo_spend notifications to new injectut…
rustyrussell Aug 19, 2025
bb6787d
libplugin: allow sync interface to be used at all times.
rustyrussell Aug 19, 2025
9cc08bf
plugins/bkpr/test/run-recorder: remove.
rustyrussell Aug 19, 2025
f50ceb4
bookkeeper: call refresh before processing any commands.
rustyrussell Aug 19, 2025
70d19e8
bkpr: use list commands instead of subscribing to notifications.
rustyrussell Aug 19, 2025
2372dbd
wallet: remove notification on duplicate chain entries.
rustyrussell Aug 19, 2025
45e860a
bkpr: helpers to query sql plugin for chainmoves and channelmoves.
rustyrussell Aug 19, 2025
2a19147
bkpr: take, don't steal in new_channel_event.
rustyrussell Aug 19, 2025
b70f4f6
bkpr: convert all the local db sql queries into calls to sql plugin.
rustyrussell Aug 19, 2025
8748755
bkpr: remove missing event handling.
rustyrussell Aug 19, 2025
41ac9db
bookkeeper: remove database.
rustyrussell Aug 19, 2025
12e2f58
pytest: restore bookkeeper to recover tests.
rustyrussell Aug 19, 2025
1958efd
db: support mode where we don't want to create the db.
rustyrussell Aug 19, 2025
52d69df
lightningd: migrate events from bookkeeper at startup.
rustyrussell Aug 19, 2025
194febe
wallet: generate fixup chainmoves and channelmoves when first starting.
rustyrussell Aug 19, 2025
f8a44d9
bkpr: restore run-recorder.
rustyrussell Aug 19, 2025
66741dd
plugins/bkpr/test/run-recorder: don't hand NULL cmd.
rustyrussell Aug 19, 2025
94c1cf5
pytest: wait to make sure moves are registered in coinmoves tests.
rustyrussell Aug 19, 2025
45ba719
rust: Roll the cln-grpc and cln-rpc versions due to schema changes
cdecker Aug 13, 2025
516861c
rust: Bump cln-plugin==0.5
cdecker Aug 13, 2025
8f67da3
nix: Upgrade channel and flake checker actions
cdecker Aug 13, 2025
40ded45
ci: Remove nix check
cdecker Aug 14, 2025
4174226
changelog for 25.09rc1
madelinevibes Aug 18, 2025
da7d305
Run version script for rc1.
sangbida Aug 19, 2025
7fa8869
script: Update rust version to 1.85
ShahanaFarooqui Aug 19, 2025
e2e9ba3
script: Poetry migration to uv for Fedora build
ShahanaFarooqui Aug 19, 2025
6f45b47
ci: remove fetch-tags from checkout
ShahanaFarooqui Aug 19, 2025
f4b7f51
lightningd: allow account db version 18.
rustyrussell Aug 20, 2025
ebc9a8b
lightningd: fix name of chainmoves journal entry.
rustyrussell Aug 21, 2025
7c75abc
updated changelog.md for rc2
madelinevibes Aug 21, 2025
fcd92fe
change version 25.09rc2 for release
madelinevibes Aug 21, 2025
d635f19
plugins: generate certificates with required extensions
whitslack Aug 23, 2025
afa7aea
offers: loosen payment_constraints on invoices' blinded paths.
rustyrussell Aug 26, 2025
1c537c2
pay: fix uninitialized var in debug output.
rustyrussell Aug 27, 2025
6c7c78e
pytest: test for crashing with HTLC added tlvs.
rustyrussell Aug 27, 2025
7e5cf41
htlc_wire: fix crash when adding an HTLC
Lagrang3 Aug 26, 2025
36803db
rc3 change log updates
madelinevibes Aug 27, 2025
f30400a
2nd attempt rc3 change log
madelinevibes Aug 27, 2025
c25f0fa
small changes of any reference to rc2 to rc3
madelinevibes Aug 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
6 changes: 6 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
BasedOnStyle: LLVM
IndentWidth: 8
UseTab: Always
BreakBeforeBraces: Linux
AllowShortIfStatementsOnASingleLine: false
IndentCaseLabels: false
7 changes: 7 additions & 0 deletions .dir-locals.el
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
((c-mode . ((c-file-style . "linux")
(indent-tabs-mode . t)
(show-trailing-whitespace . t)
(c-basic-offset . 8)
(tab-width . 8)
))
)
3 changes: 3 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Dockerfile
contrib/docker/Dockerfile.*
target
18 changes: 18 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# https://editorconfig.org/#file-format-details

root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[{**.c,**.h,Makefile}]
indent_style = tab
indent_size = 8

[**.py]
indent_style = space
indent_size = 4

20 changes: 20 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Declare files that will always have CRLF line endings on checkout.
*.sh text eol=lf
*.py text eol=lf
Makefile text eol=lf
configure text eol=lf
.gitmodules text eol=lf
# The following files are generated and should not be shown in the
# diffs by default on Github.
doc/lightning*.7 linguist-generated=true
db_*_sqlgen.c linguist-generated=true
statements_gettextgen.po linguist-generated=true
*_wiregen.? linguist-generated=true
*_printgen.? linguist-generated=true

# The following are marked as binary and generated since they can be
# easily overwritten and don't need deep review.
cln-grpc/proto/node.proto -text -diff linguist-generated=true
cln-grpc/src/convert.rs -text -diff linguist-generated=true
cln-rpc/src/model.rs -text -diff linguist-generated=true
contrib/pyln-testing/pyln/testing/node_pb2.py -text -diff linguist-generated=true
19 changes: 19 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Code owners are automatically requested for review when someone
# opens a pull request that modifies code that they own. When someone
# with admin or owner permissions has enabled required reviews, they
# also can optionally require approval from a code owner before the
# author can merge a pull request in the repository.

cln-grpc/ @cdecker
cln-rpc/ @cdecker
plugins/src/ @cdecker
plugins/grpc-plugin/ @cdecker
contrib/reprobuild/ @cdecker
contrib/msggen/ @cdecker
contrib/pyln-client/ @cdecker
contrib/pyln-testing/ @cdecker
# Needed to ensure hsmd wire compatibility between releases
hsmd/hsmd_wire.csv @cdecker @ksedgwic @devrandom

# See https://help.github.com/articles/about-codeowners/ for more
# information
4 changes: 4 additions & 0 deletions .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
### Issue and Steps to Reproduce
<!-- Describe your issue and tell us how to reproduce it (include any useful information). -->

### `getinfo` output
16 changes: 16 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
> [!IMPORTANT]
>
> 25.09 FREEZE July 28TH: Non-bugfix PRs not ready by this date will wait for 25.12.
>
> RC1 is scheduled on _August 11th_
>
> The final release is scheduled for September 1st.


## Checklist
Before submitting the PR, ensure the following tasks are completed. If an item is not applicable to your PR, please mark it as checked:

- [ ] The changelog has been updated in the relevant commit(s) according to the [guidelines](https://docs.corelightning.org/docs/coding-style-guidelines#changelog-entries-in-commit-messages).
- [ ] Tests have been added or modified to reflect the changes.
- [ ] Documentation has been reviewed and updated as needed.
- [ ] Related issues have been listed and linked, including any that this PR closes.
31 changes: 31 additions & 0 deletions .github/scripts/install-bitcoind.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/bin/sh

set -e

export BITCOIN_VERSION=27.1
export ELEMENTS_VERSION=23.2.1

DIRNAME="bitcoin-${BITCOIN_VERSION}"
EDIRNAME="elements-${ELEMENTS_VERSION}"
FILENAME="${DIRNAME}-x86_64-linux-gnu.tar.gz"
EFILENAME="${EDIRNAME}-x86_64-linux-gnu.tar.gz"

cd /tmp/

# Since we inadvertently broke `elementsd` support in the past we only
# want to download and enable the daemon that is actually going to be
# used when running in CI. Otherwise we could end up accidentally
# testing against `bitcoind` but still believe that we ran against
# `elementsd`.
if [ "$TEST_NETWORK" = "liquid-regtest" ]; then
wget "https://github.com/ElementsProject/elements/releases/download/elements-${ELEMENTS_VERSION}/${EFILENAME}"
tar -xf "${EFILENAME}"
sudo mv "${EDIRNAME}"/bin/* "/usr/local/bin"
rm -rf "${EFILENAME}" "${EDIRNAME}"
else
wget "https://bitcoincore.org/bin/bitcoin-core-${BITCOIN_VERSION}/${FILENAME}"
tar -xf "${FILENAME}"
sudo mv "${DIRNAME}"/bin/* "/usr/local/bin"
rm -rf "${FILENAME}" "${DIRNAME}"
fi

97 changes: 97 additions & 0 deletions .github/scripts/setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
#!/bin/bash
set -e
export DEBIAN_FRONTEND=noninteractive
export RUST_VERSION=stable

sudo useradd -ms /bin/bash tester
sudo apt-get update -qq

sudo apt-get -qq install --no-install-recommends --allow-unauthenticated -yy \
autoconf \
automake \
binfmt-support \
build-essential \
clang \
cppcheck \
docbook-xml \
eatmydata \
gcc-aarch64-linux-gnu \
gcc-arm-linux-gnueabihf \
gcc-arm-none-eabi \
gettext \
git \
gnupg \
jq \
libc6-dev-arm64-cross \
libc6-dev-armhf-cross \
libev-dev \
libevent-dev \
libffi-dev \
libicu-dev \
libpq-dev \
libprotobuf-c-dev \
libsqlite3-dev \
libssl-dev \
libtool \
libxml2-utils \
locales \
net-tools \
postgresql \
python-pkg-resources \
python3 \
python3-dev \
python3-pip \
python3-setuptools \
qemu \
qemu-system-arm \
qemu-user-static \
shellcheck \
software-properties-common \
sudo \
tcl \
tclsh \
unzip \
valgrind \
wget \
xsltproc \
systemtap-sdt-dev \
zlib1g-dev

echo "tester ALL=(root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/tester
sudo chmod 0440 /etc/sudoers.d/tester

"$(dirname "$0")"/install-bitcoind.sh

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- \
-y --default-toolchain ${RUST_VERSION}

uv sync --all-extras --all-groups
# required for reckless till poetry to uv migration
uv tool install poetry

# We also need a relatively recent protobuf-compiler, at least 3.12.0,
# in order to support the experimental `optional` flag.

# BUT WAIT! Gentoo wants this to match the version from the Python protobuf,
# which comes from the same tree. Makes sense!

# And
# grpcio-tools-1.69.0` requires `protobuf = ">=5.26.1,<6.0dev"`

# Now, protoc changed to date-based releases, BUT Python protobuf
# didn't, so Python protobuf 4.21.12 (in Ubuntu 23.04) corresponds to
# protoc 21.12 (which, FYI, is packaged in Ubuntu as version 3.21.12).

# In general protobuf version x.y.z corresponds to protoc version y.z

# Honorable mention go to Matt Whitlock for spelunking this horror with me!

PROTOC_VERSION=29.4
PB_REL="https://github.com/protocolbuffers/protobuf/releases"
curl -LO $PB_REL/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip
sudo unzip protoc-${PROTOC_VERSION}-linux-x86_64.zip -d /usr/local/
sudo chmod a+x /usr/local/bin/protoc
export PROTOC=/usr/local/bin/protoc
export PATH=$PATH:/usr/local/bin
env
ls -lha /usr/local/bin
115 changes: 115 additions & 0 deletions .github/scripts/sync-rpc-cmds.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
import os
from time import sleep
import requests
import re
from enum import Enum

# readme url
URL = "https://dash.readme.com/api/v1"
# category id for API reference
CATEGORY_ID = "685ce4df1df887006ff221c5"
CATEGORY_SLUG = "json-rpc-apis"


class Action(Enum):
ADD = 'add'
UPDATE = 'update'
DELETE = 'delete'


def getListOfRPCDocs(headers):
response = requests.get(f"{URL}/categories/{CATEGORY_SLUG}/docs", headers=headers)
if response.status_code == 200:
return response.json()
else:
return []


def publishDoc(action, title, body, order, headers):
payload = {
"title": title,
"type": "basic",
"body": body,
"category": CATEGORY_ID,
"hidden": False,
"order": order,
}
# title == slug
if action == Action.ADD:
# create doc
response = requests.post(URL + "/docs", json=payload, headers=headers)
if response.status_code != 201:
print(response.text)
else:
print("Created ", title)
elif action == Action.UPDATE:
# update doc
response = requests.put(f"{URL}/docs/{title}", json=payload, headers=headers)
if response.status_code != 200:
print(response.text)
else:
print("Updated ", title)
elif action == Action.DELETE:
# delete doc
response = requests.delete(f"{URL}/docs/{title}", headers=headers)
if response.status_code != 204:
print(response.text)
else:
print("Deleted ", title)
else:
print("Invalid action")


def extract_rpc_commands(rst_content):
manpages_block = re.search(
r"\.\. block_start manpages(.*?)" r"\.\. block_end manpages",
rst_content,
re.DOTALL,
)
if manpages_block:
commands = re.findall(
r"\b([a-zA-Z0-9_-]+)" r"\s+<([^>]+)>\n", manpages_block.group(1)
)
return commands
return []


def main():
# define headers for requests
headers = {
"accept": "application/json",
"content-type": "application/json",
"authorization": "Basic " + os.environ.get("README_API_KEY"),
}

# path to the rst file from where we fetch all the RPC commands
path_to_rst = "doc/index.rst"
with open(path_to_rst, "r") as file:
rst_content = file.read()

commands_from_local = extract_rpc_commands(rst_content)
commands_from_readme = getListOfRPCDocs(headers)

# Compare local and server commands list to get the list of command to add or delete
commands_local_title = set(command[0] for command in commands_from_local)
commands_readme_title = set(command['title'] for command in commands_from_readme)
commands_to_delete = commands_readme_title - commands_local_title
commands_to_add = commands_local_title - commands_readme_title
for name in commands_to_delete:
publishDoc(Action.DELETE, name, "", 0, headers)
sleep(3)

if commands_from_local:
order = 0
for name, file in commands_from_local:
with open("doc/" + file) as f:
body = f.read()
publishDoc(Action.ADD if name in commands_to_add else Action.UPDATE, name, body, order, headers)
order = order + 1
sleep(3)
else:
print("No commands found in the Manpages block.")


if __name__ == "__main__":
main()
Loading