Commit graph

1759 commits

Author SHA1 Message Date
Matt Corallo
8640173689
Merge pull request #715 from TheBlueMatt/2020-09-no-rescan-tests
Do not test any block-contents-rescan cases
2020-09-22 11:31:31 -07:00
Matt Corallo
38dacf1b93 Do not test any block-contents-rescan cases
In anticipation for removing support for users calling
block_connected multiple times for the same block to include all
relevant transactions in the next PR, this commit stops testing
such cases. Specifically, users who filter blocks for relevant
transactions before calling block_connected will need to filter by
including any transactions which spend a previously-matched
transaction in the same block (and we now do so in our own
filtering logic, which is also used in our testing).
2020-09-21 13:34:34 -04:00
Matt Corallo
9c1c43203f Clean up test_bump_penalty_txn_on_revoked_htlcs
Add a few comments to make it clear whats going on a bit more and
assert the basic structure of more transactions.

Further, point out where transactions are double-spends and don't
confirm double-spends.
2020-09-21 13:34:34 -04:00
Matt Corallo
ebb8d2d69f Clean up static_spendable_outputs_justice_tx_revoked_htlc_success_tx
Add a few comments to make it clear whats going on a bit more and
don't test/confirm a double-spend transaction.
2020-09-19 16:08:17 -04:00
Matt Corallo
07a0ad7cac Clean up static_spendable_outputs_justice_tx_revoked_htlc_timeout_tx
Add a few comments to make it clear whats going on a bit more and
don't test/confirm a bogus transaction.
2020-09-18 18:29:48 -04:00
Matt Corallo
e7678d42d9 derive(Debug) on Events
We'd previously largely not turned on derive(Debug) on any of our
structs, but not for good reason. Especially for Events objects,
Debug can be a very useful for users to quickly print what they
received from us without having to write out a large match.
2020-09-18 18:29:48 -04:00
Matt Corallo
640ae63a5a
Merge pull request #713 from valentinewallace/cross-platform-ci
Update CI to run on Macos and Windows in addition to Ubuntu.
2020-09-18 07:48:56 -07:00
Valentine Wallace
ce1f4562f5
Update CI to run build and tests on Macos and Windows in addition to Ubuntu.
We only run Macos and Windows on Rust stable, for efficient CI.
2020-09-17 16:07:39 -04:00
Valentine Wallace
b0e9b0107b
Remove unnecessary include in Github Actions script. 2020-09-17 16:07:39 -04:00
Valentine Wallace
b8a06d2945
Only link dead code when necessary in CI. 2020-09-17 16:07:36 -04:00
Matt Corallo
d735085cec
Merge pull request #690 from TheBlueMatt/2020-09-633-bindings
Small tweaks post #633/#684
2020-09-16 08:40:30 -07:00
Matt Corallo
0f6b0004c4 Fix two bugs which access the wrong peer's htlc_minimum_msat value
* Channel::get_counterparty_htlc_minimum_msat() returned
   holder_htlc_minimum_msat, which was obviously incorrect.
 * ChannelManager::get_channel_update set htlc_minimum_msat to
   Channel::get_holder_htlc_minimum_msat(), but the spec explicitly
   states we "MUST set htlc_minimum_msat to the minimum HTLC value
   (in millisatoshi) that the channel peer will accept." This makes
   sense because the reason we're rejecting the HTLC is because our
   counterparty's HTLC minimum value is too small for us to send to
   them, our own HTLC minimum value plays no role. Further, our
   router already expects this - looking at the same directional
   channel info as it does fees.

Finally, we add a test in the existing onion router test cases
which fails if either of the above is incorrect (the second issue
discovered in the process of writing the test).
2020-09-16 11:12:51 -04:00
Matt Corallo
a8be9af7d3 Move onion failure tests from functional_tests to their own file
They all have a specific structure, so having them in the mess that
is functional_tests isn't really conducive to readability. More
importantly, functional_tests is so big it slows down compilation,
so even dropping a few hundred lines is a win.
2020-09-16 11:12:51 -04:00
Matt Corallo
49e0a8ce7b Update bindings after merge of #633, #679, #683. 2020-09-16 11:12:51 -04:00
Matt Corallo
518f523637 Clarify docs on payment_point slightly 2020-09-16 10:50:54 -04:00
Matt Corallo
e9d3033e5c Merge pull request #679 from ariard/2020-08-concurrent-watchtowers
Implement concurrent broadcast tolerance for distributed watchtowers
2020-09-15 21:01:37 -04:00
Matt Corallo
26ee7e6379
Merge pull request #696 from TheBlueMatt/2020-09-ci-check-commits
Check each commit at least builds in CI
2020-09-15 17:45:50 -07:00
Matt Corallo
4d9532a165 Check each commit at least builds in CI 2020-09-15 19:24:08 -04:00
Antoine Riard
6622ea724f Improve PermanentFailure requiremnts documentation
Sources of the failure may be multiple in case of distributed watchtower
deployment. In either case, the channel manager must return a final
update asking to its channel monitor(s) to broadcast the lastest state
available. Revocation secret must not be released for the faultive
channel.

In the future, we may return wider type of failures to take more
fine-grained processing decision (e.g if local disk failure and
redudant remote channel copy available channel may still be processed
forward).
2020-09-15 18:17:37 -04:00
Antoine Riard
e706c67bdb Add test_concurrent_monitor_claim
Watchower Alice receives block 134, broadcasts state X, rejects state Y.
Watchtower Bob accepts state Y, receives blocks 135, broadcasts state Y.
State Y confirms onchain. Alice must be able to claim outputs.
2020-09-15 18:17:37 -04:00
Antoine Riard
e73036c684 Implement concurrent broadcast tolerance for distributed watchtowers
With a distrbuted watchtowers deployment, where each monitor is plugged
to its own chain view, there is no guarantee that block are going to be
seen in same order. Watchtower may diverge in their acceptance of a
submitted `commitment_signed` update due to a block timing-out a HTLC
and provoking a subset but yet not seen by the other watchtower subset.
Any update reject by one of the watchtower must block offchain coordinator
to move channel state forward and release revocation secret for previous
state.

In this case, we want any watchtower from the rejection subset to still
be able to claim outputs if the concurrent state, has accepted by the
other subset, is confirming. This improve overall watchtower system
fault-tolerance.

This change stores local commitment transaction unconditionally and fail
the update if there is knowledge of an already signed commitment
transaction (ChannelMonitor.local_tx_signed=true).
2020-09-15 18:17:35 -04:00
Matt Corallo
343aacc50c
Merge pull request #684 from bmancini55/gossip_queries
Adding gossip_queries messages and serializations
2020-09-14 13:45:12 -07:00
bmancini55
10e818ac53 Adding fuzzers for gossip_queries messages
This commit adds ser/deser fuzzers for five new structs in ln::msgs used
for gossip_queries.
2020-09-14 16:19:32 -04:00
bmancini55
5ba4560be9 Adding gossip_queries message structs and serialization
This adds the message structs and implements Readable and Writeable
traits for the standard gossip_queries messages.
2020-09-14 16:19:23 -04:00
Matt Corallo
d5912ec75f
Merge pull request #633 from ariard/2020-05-rename-keys-var
Rename a's keys as local's keys and b's keys as remote's keys
2020-09-14 12:49:56 -07:00
Antoine Riard
21d0a955ef Cleanup locally-selected-delay
Comment meaning of holder/counterparty

Diverse chan_utils cleanups

Cleanups post-cbindings merge

Fix misusage of holder_selected_contest_delay instead of counterparty
_selected_contest_delay in HolderCommitmentTransaction

Fix old payment_point comment
2020-09-14 15:19:06 -04:00
Antoine Riard
6133498ca1 Overhaul LocalCommitmentTx to new nomenclature 2020-09-14 14:39:47 -04:00
Antoine Riard
00d063df5c Overhaul ChannelMonitor/OnchainTxHandler to new nomenclature 2020-09-14 14:39:47 -04:00
Antoine Riard
9a23130db9 Change ChannelKeys interface nomenclature to holder/counterparty one
Transaction signing methods are changed from local_/remote_ prefix
to newer holder_/counterparty_ wihout any semantic changes.
2020-09-14 14:39:47 -04:00
Antoine Riard
b51721fc8a Underscore TxCreationKeys ownership
A TxCreationKeys set represents the key which will be embedded in output
scripts of a party's commitment tx state. Among them there is a always
a key belonging to counter-party, the HTLC pubkey. To dissociate
strongly, prefix keys with broadcaster/countersignatory.

A revocation keypair is attributed to the broadcaster as it's used
to punish a fraudulent broadcast while minding that such keypair
derivation method will be always used by countersignatory as it's
its task to enforce punishement thanks to the release secret.
2020-09-14 14:39:47 -04:00
Antoine Riard
c6a91f2ebd Change variable nomenclature for to_self_delay
To avoid reviewers confusion, rename counterparty_to_self_delay
to counteparty_selected_contest_delay, i.e the justice delay announced
by a channel counterparty restraining our transactions, and to_self_delay
to locally_selected_contest_delay, i.e the justice delay announced by us
restraining counterparty's transactions

We deviate from wider nomenclature by prefixing local data with a
locally_ extension due to the leak of this value in transactions/scripts
builder, where the confusion may happen.

Rename further AcceptChannelData to the new nomenclature.
2020-09-14 14:39:44 -04:00
Antoine Riard
c7ef6df672 Change variable nomenclature for Channel fields
Previously most of variable fields relative to data belonging to
our node or counterparty were labeled "local"/"remote". It has been
deemed confusing with regards to transaction construction which is
always done from a "local" viewpoint, even if owner is our counterparty
2020-09-14 13:16:12 -04:00
Matt Corallo
baa58c18b0
Merge pull request #688 from TheBlueMatt/2020-09-dev-docs
Add developer guideline notes for C/C++ bindings generation
2020-09-13 18:26:16 -07:00
Matt Corallo
3fa054887b Add a few more things to gitignore for bindings 2020-09-13 20:58:50 -04:00
Matt Corallo
dce831ed20 Rename lightning C/C++ bindings library to libldk
This should fix #689.
2020-09-13 20:58:50 -04:00
Matt Corallo
53182a8cec Note that genbindings.sh is really also a test script. 2020-09-13 20:58:50 -04:00
Matt Corallo
dbf4f58987 Remove the bindings crate from the root namespace to let it break
Until we get the bindings generation process super stable, let the
bindings get stale with respect to the main repo while still letting
`cargo check` pass.
2020-09-13 20:58:50 -04:00
Matt Corallo
83322e1c0d Add developer guideline notes for C/C++ bindings generation 2020-09-11 19:33:29 -04:00
Antoine Riard
1d7c4f663c Change variable nomenclature in chan_utils
Variables should be named according to the script semantic which is
an invariant with regards to generating a local or remote commitment
transaction.

I.e a broadcaster_htlc_key will always guard a HTLC to the party able
to broadcast the computed transactions whereas countersignatory_htlc_key
will guard HTLC to a countersignatory of the commitment transaction.
2020-09-11 09:50:18 -04:00
Matt Corallo
253af8dd61
Merge pull request #618 from TheBlueMatt/2020-05-sample-c-bindings
C/C++ Bindings
2020-09-10 19:23:39 -07:00
Matt Corallo
0ab7f90578 Use Debian experimental in CI to match LLVM between rustc and clang 2020-09-10 22:03:32 -04:00
Matt Corallo
3c12b0d0af Specify panic = abort in profiles for lightning-c-bindings 2020-09-10 22:03:32 -04:00
Matt Corallo
9e03087d6a Apply -O1 only to tests, not all dev (which is used for bindings) 2020-09-10 22:03:32 -04:00
Matt Corallo
4f6f34fa30 Add bindings README 2020-09-10 22:03:32 -04:00
Matt Corallo
9f0fa04f62 Add CI run for bindings generation (though we'll allow it to fail) 2020-09-10 22:03:32 -04:00
Matt Corallo
af9d1cf776 LTO in release mode by default, which is really critical for C libs 2020-09-10 22:03:32 -04:00
Matt Corallo
76eaa61725 Update the root Cargo.toml to point to the new subcrate 2020-09-10 22:03:32 -04:00
Matt Corallo
96b2927a9a Add automatically generated C/C++ wrapper bindings 2020-09-10 22:03:32 -04:00
Matt Corallo
1af8a464b4 Add all the manually-generated bits for the c-bindings crate
Including:
 * A script to automatically generate all the rest,
 * Cargo.toml and cbindgen.toml,
 * manually-written wrapper types for a few types
2020-09-10 22:03:32 -04:00
Matt Corallo
5254d6b3d9 Add annotations for things which we cannot (yet) expose 2020-09-10 22:03:30 -04:00