rust-lightning
3 years agoFix two bugs which access the wrong peer's htlc_minimum_msat value 2020-09-633-bindings
Matt Corallo [Mon, 14 Sep 2020 21:39:42 +0000 (17:39 -0400)]
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).

3 years agoMove onion failure tests from functional_tests to their own file
Matt Corallo [Mon, 14 Sep 2020 20:49:05 +0000 (16:49 -0400)]
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.

3 years agoUpdate bindings after merge of #633, #679, #683.
Matt Corallo [Mon, 14 Sep 2020 19:52:33 +0000 (15:52 -0400)]
Update bindings after merge of #633, #679, #683.

3 years agoClarify docs on payment_point slightly
Matt Corallo [Mon, 14 Sep 2020 19:52:02 +0000 (15:52 -0400)]
Clarify docs on payment_point slightly

3 years agoMerge pull request #679 from ariard/2020-08-concurrent-watchtowers
Matt Corallo [Wed, 16 Sep 2020 01:01:37 +0000 (21:01 -0400)]
Merge pull request #679 from ariard/2020-08-concurrent-watchtowers

Implement concurrent broadcast tolerance for distributed watchtowers

3 years agoMerge pull request #696 from TheBlueMatt/2020-09-ci-check-commits
Matt Corallo [Wed, 16 Sep 2020 00:45:50 +0000 (17:45 -0700)]
Merge pull request #696 from TheBlueMatt/2020-09-ci-check-commits

Check each commit at least builds in CI

3 years agoCheck each commit at least builds in CI 2020-09-ci-check-commits
Matt Corallo [Tue, 15 Sep 2020 18:39:44 +0000 (14:39 -0400)]
Check each commit at least builds in CI

3 years agoImprove PermanentFailure requiremnts documentation
Antoine Riard [Fri, 28 Aug 2020 20:31:31 +0000 (16:31 -0400)]
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).

3 years agoAdd test_concurrent_monitor_claim
Antoine Riard [Thu, 27 Aug 2020 23:48:35 +0000 (19:48 -0400)]
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.

3 years agoImplement concurrent broadcast tolerance for distributed watchtowers
Antoine Riard [Fri, 28 Aug 2020 00:47:02 +0000 (20:47 -0400)]
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).

3 years agoMerge pull request #684 from bmancini55/gossip_queries
Matt Corallo [Mon, 14 Sep 2020 20:45:12 +0000 (13:45 -0700)]
Merge pull request #684 from bmancini55/gossip_queries

Adding gossip_queries messages and serializations

3 years agoAdding fuzzers for gossip_queries messages
bmancini55 [Thu, 10 Sep 2020 21:52:48 +0000 (17:52 -0400)]
Adding fuzzers for gossip_queries messages

This commit adds ser/deser fuzzers for five new structs in ln::msgs used
for gossip_queries.

3 years agoAdding gossip_queries message structs and serialization
bmancini55 [Mon, 7 Sep 2020 18:20:58 +0000 (14:20 -0400)]
Adding gossip_queries message structs and serialization

This adds the message structs and implements Readable and Writeable
traits for the standard gossip_queries messages.

3 years agoMerge pull request #633 from ariard/2020-05-rename-keys-var
Matt Corallo [Mon, 14 Sep 2020 19:49:56 +0000 (12:49 -0700)]
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

3 years agoCleanup locally-selected-delay
Antoine Riard [Mon, 7 Sep 2020 00:16:42 +0000 (20:16 -0400)]
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

3 years agoOverhaul LocalCommitmentTx to new nomenclature
Antoine Riard [Mon, 7 Sep 2020 00:07:11 +0000 (20:07 -0400)]
Overhaul LocalCommitmentTx to new nomenclature

3 years agoOverhaul ChannelMonitor/OnchainTxHandler to new nomenclature
Antoine Riard [Sun, 6 Sep 2020 23:51:21 +0000 (19:51 -0400)]
Overhaul ChannelMonitor/OnchainTxHandler to new nomenclature

3 years agoChange ChannelKeys interface nomenclature to holder/counterparty one
Antoine Riard [Mon, 31 Aug 2020 19:31:19 +0000 (15:31 -0400)]
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.

3 years agoUnderscore TxCreationKeys ownership
Antoine Riard [Thu, 27 Aug 2020 17:24:37 +0000 (13:24 -0400)]
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.

3 years agoChange variable nomenclature for to_self_delay
Antoine Riard [Wed, 26 Aug 2020 19:27:12 +0000 (15:27 -0400)]
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.

3 years agoChange variable nomenclature for Channel fields
Antoine Riard [Tue, 9 Jun 2020 00:47:55 +0000 (20:47 -0400)]
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

3 years agoMerge pull request #688 from TheBlueMatt/2020-09-dev-docs
Matt Corallo [Mon, 14 Sep 2020 01:26:16 +0000 (18:26 -0700)]
Merge pull request #688 from TheBlueMatt/2020-09-dev-docs

Add developer guideline notes for C/C++ bindings generation

3 years agoAdd a few more things to gitignore for bindings 2020-09-dev-docs
Matt Corallo [Sun, 13 Sep 2020 17:02:35 +0000 (13:02 -0400)]
Add a few more things to gitignore for bindings

3 years agoRename lightning C/C++ bindings library to libldk
Matt Corallo [Sat, 12 Sep 2020 01:11:42 +0000 (21:11 -0400)]
Rename lightning C/C++ bindings library to libldk

This should fix #689.

3 years agoNote that genbindings.sh is really also a test script.
Matt Corallo [Fri, 11 Sep 2020 23:35:16 +0000 (19:35 -0400)]
Note that genbindings.sh is really also a test script.

3 years agoRemove the bindings crate from the root namespace to let it break
Matt Corallo [Fri, 11 Sep 2020 23:31:13 +0000 (19:31 -0400)]
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.

3 years agoAdd developer guideline notes for C/C++ bindings generation
Matt Corallo [Fri, 11 Sep 2020 18:45:45 +0000 (14:45 -0400)]
Add developer guideline notes for C/C++ bindings generation

3 years agoChange variable nomenclature in chan_utils
Antoine Riard [Fri, 29 May 2020 00:32:46 +0000 (20:32 -0400)]
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.

3 years agoMerge pull request #618 from TheBlueMatt/2020-05-sample-c-bindings
Matt Corallo [Fri, 11 Sep 2020 02:23:39 +0000 (19:23 -0700)]
Merge pull request #618 from TheBlueMatt/2020-05-sample-c-bindings

C/C++ Bindings

3 years agoUse Debian experimental in CI to match LLVM between rustc and clang 2020-05-sample-c-bindings
Matt Corallo [Fri, 21 Aug 2020 23:05:27 +0000 (19:05 -0400)]
Use Debian experimental in CI to match LLVM between rustc and clang

3 years agoSpecify panic = abort in profiles for lightning-c-bindings
Matt Corallo [Tue, 1 Sep 2020 20:11:39 +0000 (16:11 -0400)]
Specify panic = abort in profiles for lightning-c-bindings

3 years agoApply -O1 only to tests, not all dev (which is used for bindings)
Matt Corallo [Tue, 1 Sep 2020 19:43:33 +0000 (15:43 -0400)]
Apply -O1 only to tests, not all dev (which is used for bindings)

3 years agoAdd bindings README
Matt Corallo [Thu, 23 Jul 2020 19:14:44 +0000 (15:14 -0400)]
Add bindings README

3 years agoAdd CI run for bindings generation (though we'll allow it to fail)
Matt Corallo [Mon, 11 May 2020 00:09:42 +0000 (20:09 -0400)]
Add CI run for bindings generation (though we'll allow it to fail)

3 years agoLTO in release mode by default, which is really critical for C libs
Matt Corallo [Sat, 16 May 2020 01:27:51 +0000 (21:27 -0400)]
LTO in release mode by default, which is really critical for C libs

3 years agoUpdate the root Cargo.toml to point to the new subcrate
Matt Corallo [Fri, 24 Jul 2020 18:31:36 +0000 (14:31 -0400)]
Update the root Cargo.toml to point to the new subcrate

3 years agoAdd automatically generated C/C++ wrapper bindings
Matt Corallo [Thu, 10 Sep 2020 22:19:15 +0000 (18:19 -0400)]
Add automatically generated C/C++ wrapper bindings

3 years agoAdd all the manually-generated bits for the c-bindings crate
Matt Corallo [Tue, 12 May 2020 18:54:12 +0000 (14:54 -0400)]
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

3 years agoAdd annotations for things which we cannot (yet) expose
Matt Corallo [Tue, 12 May 2020 17:48:07 +0000 (13:48 -0400)]
Add annotations for things which we cannot (yet) expose

3 years agoAdd tool to read a Rust crate and generate C-compatible wrappers
Matt Corallo [Tue, 12 May 2020 18:49:29 +0000 (14:49 -0400)]
Add tool to read a Rust crate and generate C-compatible wrappers

In general, it maps:
 * Traits to a struct with a void* and a list of function pointers,
   emulating what the compiler will do for a dyn trait anyway,
 * Structs as a struct with a single opaque pointer to the
   underlying type and a flag to indicate ownership. While this is
   a bit less effecient than just a direct pointer, it neatly lets
   us expose in the public interface the concept of ownership by
   setting a flag in the generated struct.
 * Unit enums as enums with each type copied over and conversion
   functions,
 * Non-unit enums have each field converted back and forth with a
   type flag and a union across all the C-mapped fields.

3 years agoRemove a few final ::-containing paths in generic args
Matt Corallo [Fri, 11 Sep 2020 01:37:08 +0000 (21:37 -0400)]
Remove a few final ::-containing paths in generic args

This cleans upa few last cases of functions/objects which our C
bindings generator doesn't know how to read.

3 years agoMerge pull request #686 from TheBlueMatt/2020-09-bump-deps
Matt Corallo [Thu, 10 Sep 2020 22:11:30 +0000 (15:11 -0700)]
Merge pull request #686 from TheBlueMatt/2020-09-bump-deps

Bump rust-bitcoin and friends

3 years agoSilence new rustc warning about useless muts 2020-09-bump-deps
Matt Corallo [Thu, 10 Sep 2020 20:32:45 +0000 (16:32 -0400)]
Silence new rustc warning about useless muts

3 years agoUse rust-bitcoin's new SigHashCache instead of SignatureHashComp's
Matt Corallo [Tue, 25 Aug 2020 22:47:24 +0000 (18:47 -0400)]
Use rust-bitcoin's new SigHashCache instead of SignatureHashComp's

Thew new API is a bit harder to misuse by taking a reference to the
transaction to require the inputs match the input being signed.

3 years agoUpdate to latest upstream rust-bitcoin
Matt Corallo [Tue, 25 Aug 2020 21:12:00 +0000 (17:12 -0400)]
Update to latest upstream rust-bitcoin

3 years agoMerge pull request #676 from TheBlueMatt/2020-08-c-bindings-cleanups-3
Matt Corallo [Wed, 26 Aug 2020 15:14:34 +0000 (08:14 -0700)]
Merge pull request #676 from TheBlueMatt/2020-08-c-bindings-cleanups-3

Pre-C-Bindings Cleanups #3

3 years agoMerge pull request #674 from TheBlueMatt/2020-08-keyif-rand-names
Matt Corallo [Wed, 26 Aug 2020 15:07:58 +0000 (08:07 -0700)]
Merge pull request #674 from TheBlueMatt/2020-08-keyif-rand-names

Simplify + clarify random-bytes-fetching from KeysInterface

3 years agoAdd a C-bindings-compatible read lock type for NetworkGraph 2020-08-c-bindings-cleanups-3
Matt Corallo [Mon, 24 Aug 2020 18:14:05 +0000 (14:14 -0400)]
Add a C-bindings-compatible read lock type for NetworkGraph

In order to calculate a route, it is likely that users need to take
a read()-lock on NetGraphMsgHandler::network_graph. This is not
possible naively from C bindings, as Rust's native RwLock is not
exposed.

Thus, we provide a simple wrapper around the RwLockReadGuard and
expose simple accessor methods.

3 years agoRename TxCreationKeys::new to not conflict w/ auto-gen'd C bindings
Matt Corallo [Thu, 13 Aug 2020 18:45:34 +0000 (14:45 -0400)]
Rename TxCreationKeys::new to not conflict w/ auto-gen'd C bindings

The C bindings automatically create a _new() function for structs
which contain only pub fields which we know how to map. This
conflicts with the actual TxCreationKeys::new() function, so we
simply rename it to capture its nature as a derivation function.

3 years agoGive ChannelManagerReadArgs HashMap-of-monitors ownership
Matt Corallo [Fri, 7 Aug 2020 20:27:26 +0000 (16:27 -0400)]
Give ChannelManagerReadArgs HashMap-of-monitors ownership

Its somewhat awkward that ChannelManagerReadArgs requires a mutable
reference to a HashMap of ChannelMonitors, forcing the callsite to
define a scope for the HashMap which they almost certainly won't use
after deserializing the ChannelManager. Worse, to map the current
version to C bindings, we'd need to also create a HashMap binding,
which is overkill for just this one use.

Instead, we just give the ReadArgs struct ownership of the HashMap
and add a constructor which fills the HashMap for you.

3 years agoUse ln OutPoints not bitcoin ones in SpendableOutputDescriptors
Matt Corallo [Thu, 30 Jul 2020 17:19:11 +0000 (13:19 -0400)]
Use ln OutPoints not bitcoin ones in SpendableOutputDescriptors

Lightning OutPoints only have 16 bits to express the output index
instead of Bitcoin's 32 bits, implying that some outputs are
possibly not expressible as lightning OutPoints. However, such
OutPoints can never be hit within the lightning protocol, and must
be on-chain spam sent by a third party wishing to donate us money.
Still, in order to do so, the third party would need to fill nearly
an entire block with garbage, so this case should be relatively
safe.

A new comment in channelmonitor explains the reasoning a bit
further.

3 years agoUse slices to references not slices of concrete objects in pub API
Matt Corallo [Thu, 23 Jul 2020 20:10:29 +0000 (16:10 -0400)]
Use slices to references not slices of concrete objects in pub API

Because the C bindings maps objects into new structs which contain
only a pointer to the underlying (immovable) Rust type, it cannot
create a list of Rust types which are contiguous in memory. Thus,
in order to allow C clients to call certain Rust functions, we have
to use &[&Type] not &[Type]. This commit fixes this issue for the
get_route function.

3 years agoRefer to return types by the trait that they're defined via
Matt Corallo [Sun, 31 May 2020 03:22:16 +0000 (23:22 -0400)]
Refer to return types by the trait that they're defined via

Instead of using the explicit type which is being returned, refer
to them as Self::AssociatedType, to make clear to the bindings what
type of thing is being returned.

3 years agoRefer to generic types by importing them instead of a super-mod.
Matt Corallo [Sun, 31 May 2020 03:20:17 +0000 (23:20 -0400)]
Refer to generic types by importing them instead of a super-mod.

This avoids one case the bindings generation hasn't bothered to
handle by simply importing types that are referred to.

3 years agoAlways refer to Deref types with where clauses instead of direct
Matt Corallo [Sun, 31 May 2020 03:16:29 +0000 (23:16 -0400)]
Always refer to Deref types with where clauses instead of direct

This makes it a little easier to write C bindings generation as
we only have to handle one case instead of both.

3 years agoReorder struct definitions so that they are in dependency order.
Matt Corallo [Thu, 11 Jun 2020 19:34:28 +0000 (15:34 -0400)]
Reorder struct definitions so that they are in dependency order.

There are a few cases where the upcoming C bindings don't know how
to handle something which depends on something defined later in the
file. Instead of adding another pass to the C bindings generator,
it is much simpler to just reorder structs.

3 years agoMerge pull request #667 from valentinewallace/remove-channels-chanmon
Matt Corallo [Tue, 25 Aug 2020 21:07:27 +0000 (14:07 -0700)]
Merge pull request #667 from valentinewallace/remove-channels-chanmon

Remove Channel's ChannelMonitor copy

3 years agoRemove Channel's ChannelMonitor copy
Valentine Wallace [Thu, 13 Aug 2020 18:35:39 +0000 (14:35 -0400)]
Remove Channel's ChannelMonitor copy

3 years agoAdd commitment transaction broadcast as a ChannelMonitor event
Valentine Wallace [Mon, 24 Aug 2020 21:27:49 +0000 (17:27 -0400)]
Add commitment transaction broadcast as a ChannelMonitor event

To do this, we replace get_and_clear_pending_htlcs_updated with
get_and_clear_pending_monitor_events, and which still transmits HTLCUpdates
as before, but now also transmits a new MonitorEvent::CommitmentTxBroadcasted
event when a channel's commitment transaction is broadcasted.

3 years agoMerge pull request #675 from dspicher/master
Matt Corallo [Tue, 25 Aug 2020 01:18:38 +0000 (18:18 -0700)]
Merge pull request #675 from dspicher/master

Refactor route tests

3 years agoRefactor route tests
Dominik Spicher [Mon, 24 Aug 2020 21:06:07 +0000 (23:06 +0200)]
Refactor route tests

* Splits up the monolithic test into smaller unit tests

* Factors out helpers for graph setup

* Changes `id_to_feature_flags` to be a function, there was no
reason why it had to be a macro

* Activates a previously commented-out test that checks for
the failure case in `disable_node_test`

3 years agoSimplify + clarify random-bytes-fetching from KeysInterface 2020-08-keyif-rand-names
Matt Corallo [Sun, 23 Aug 2020 21:06:33 +0000 (17:06 -0400)]
Simplify + clarify random-bytes-fetching from KeysInterface

Due to a desire to be able to override temporary channel IDs and
onion keys, KeysInterface had two separate fetch-random-32-bytes
interfaces - an onion-key specific version which fetched 2 random
32 byte strings and a temporary-channel-id specific version.

It turns out, we never actually need to override both at once (as
creating a new channel and sending an outbound payment are always
separate top-level calls), so there's no reason to add two
functions to the interface when both really do the same thing.

3 years agoMerge pull request #665 from lightning-signer/pub-messages
Matt Corallo [Sun, 23 Aug 2020 21:28:29 +0000 (14:28 -0700)]
Merge pull request #665 from lightning-signer/pub-messages

Make message fields public

3 years agoMake message fields public
Devrandom [Mon, 10 Aug 2020 09:26:46 +0000 (11:26 +0200)]
Make message fields public

3 years agoMerge pull request #671 from valentinewallace/bump-msrv
Matt Corallo [Wed, 19 Aug 2020 20:04:41 +0000 (13:04 -0700)]
Merge pull request #671 from valentinewallace/bump-msrv

Bump MSRV to 1.30.0

3 years agoBump MSRV to 1.30.0
Valentine Wallace [Wed, 19 Aug 2020 19:35:37 +0000 (15:35 -0400)]
Bump MSRV to 1.30.0

We wanted to bump to 1.29 to continue to support mrustc bootstrapping, but on 1.29
there's a bug preventing us from compiling the lightning package only, thus parts
of lightning-net-tokio cause a compilation error.

The advantage of bumping the MSRV is an improved borrow checker which should
enable improved code quality, and not having jump through weird hoops sometimes
to get 1.22 working.

3 years agoMerge pull request #669 from joemphilips/fix_capacity-is-always-zero-bug_in_list_channels
Matt Corallo [Thu, 13 Aug 2020 21:06:39 +0000 (14:06 -0700)]
Merge pull request #669 from joemphilips/fix_capacity-is-always-zero-bug_in_list_channels

Fix bug in Channel

3 years agoMerge pull request #668 from lightning-signer/nit
Matt Corallo [Thu, 13 Aug 2020 17:08:21 +0000 (10:08 -0700)]
Merge pull request #668 from lightning-signer/nit

fix typo

3 years agoFix bug in Channel
joe.miyamoto [Thu, 13 Aug 2020 08:10:24 +0000 (17:10 +0900)]
Fix bug in Channel

Before this commit, `fn get_inbound_outbound_available_balance_msat` always returns 0.
It is because using `cmp::min` instead of `cmp::max` .

3 years agofix typo
Devrandom [Thu, 13 Aug 2020 07:58:55 +0000 (09:58 +0200)]
fix typo

3 years agoMerge pull request #662 from lightning-signer/compat5
Matt Corallo [Tue, 11 Aug 2020 16:10:05 +0000 (09:10 -0700)]
Merge pull request #662 from lightning-signer/compat5

Export various fields and structures

3 years agocheck the input shape in LocalCommitmentTransaction.new_missing_local_sig
Devrandom [Tue, 11 Aug 2020 07:23:15 +0000 (09:23 +0200)]
check the input shape in LocalCommitmentTransaction.new_missing_local_sig

3 years agomake LocalCommitmentTransaction constructor public
Devrandom [Mon, 20 Jul 2020 12:26:06 +0000 (05:26 -0700)]
make LocalCommitmentTransaction constructor public

Allows calling of InMemoryChannelKeys methods

3 years agomake SimpleManyChannelMonitor.monitors public
Devrandom [Sat, 4 Jul 2020 08:18:54 +0000 (01:18 -0700)]
make SimpleManyChannelMonitor.monitors public

3 years agoexport "unsafe_revoked_tx_signing" feature
Devrandom [Fri, 3 Jul 2020 20:41:21 +0000 (13:41 -0700)]
export "unsafe_revoked_tx_signing" feature

Allows unsafe signing in dev code, such as functional testing of
justice transactions outside our crate.

3 years agoMerge pull request #666 from TheBlueMatt/2020-08-license-change
Matt Corallo [Tue, 11 Aug 2020 01:30:38 +0000 (18:30 -0700)]
Merge pull request #666 from TheBlueMatt/2020-08-license-change

Relicense as dual Apache-2.0 + MIT

3 years agoRelicense as dual Apache-2.0 + MIT 2020-08-license-change
Matt Corallo [Mon, 10 Aug 2020 19:00:09 +0000 (15:00 -0400)]
Relicense as dual Apache-2.0 + MIT

This changes the LICENSE file and adds license headers to most files
to relicense under dual Apache-2.0 and MIT. This is helpful in that
we retain the patent grant issued under Apache-2.0-licensed work,
avoiding some sticky patent issues, while still allowing users who
are more comfortable with the simpler MIT license to use that.

See https://github.com/rust-bitcoin/rust-lightning/issues/659 for
relicensing statements from code authors.

3 years agoMerge pull request #664 from lightning-signer/tx-creation-keys
Matt Corallo [Mon, 10 Aug 2020 20:25:03 +0000 (13:25 -0700)]
Merge pull request #664 from lightning-signer/tx-creation-keys

Wrap transaction creation keys

3 years agonit
Devrandom [Mon, 10 Aug 2020 20:09:03 +0000 (22:09 +0200)]
nit

3 years agoExpose TxCreationKeys in LocalCommitmentTransaction via a method
Devrandom [Sun, 9 Aug 2020 13:56:10 +0000 (15:56 +0200)]
Expose TxCreationKeys in LocalCommitmentTransaction via a method

This makes it obvious to signer implementers that the pre-derived keys are a local cache and should not be trusted in a validating signer.

3 years agoMake TxCreationKeys public and wrap it in PreCalculatedTxCreationKeys
Devrandom [Sun, 9 Aug 2020 13:45:23 +0000 (15:45 +0200)]
Make TxCreationKeys public and wrap it in PreCalculatedTxCreationKeys

Allows calling of InMemoryChannelKeys methods.

The wrapping makes it obvious to signer implementers that the pre-derived keys are a local cache and should not be trusted in a validating signer.

3 years agoMerge pull request #640 from valentinewallace/test-holding-cell-edge-case
Matt Corallo [Sat, 8 Aug 2020 21:20:09 +0000 (14:20 -0700)]
Merge pull request #640 from valentinewallace/test-holding-cell-edge-case

Fail back HTLCs that fail to be freed from the holding cell

3 years agoHolding cell: if we fail to free an HTLC, fail it backwards
Valentine Wallace [Wed, 6 May 2020 22:15:43 +0000 (18:15 -0400)]
Holding cell: if we fail to free an HTLC, fail it backwards

Plus add a test.

3 years agoMerge pull request #663 from TheBlueMatt/2020-08-codecov
Matt Corallo [Mon, 3 Aug 2020 21:25:56 +0000 (14:25 -0700)]
Merge pull request #663 from TheBlueMatt/2020-08-codecov

Set codecov upload token

3 years agoSet codecov upload token 2020-08-codecov
Matt Corallo [Mon, 3 Aug 2020 20:48:58 +0000 (16:48 -0400)]
Set codecov upload token

Docs seem to indicate this should only be required for private
repos, but we have builds failing claiming this needs to be
specified, so just set it manually.

3 years agoMerge pull request #658 from lightning-signer/self-delay
Matt Corallo [Wed, 29 Jul 2020 19:08:13 +0000 (12:08 -0700)]
Merge pull request #658 from lightning-signer/self-delay

ChannelKeys - provide to_self_delay alongside the remote channel pubkeys

3 years agoChannelKeys - provide to_self_delay alongside the remote channel pubkeys
Devrandom [Thu, 23 Jul 2020 13:54:49 +0000 (06:54 -0700)]
ChannelKeys - provide to_self_delay alongside the remote channel pubkeys

In the phase 2 signer, we will construct the commitment transaction inside the signer.
In preparation, provide needed channel related data.

3 years agoMerge pull request #651 from naumenkogs/2020-06-routing-data-improvements
Matt Corallo [Mon, 27 Jul 2020 17:18:13 +0000 (10:18 -0700)]
Merge pull request #651 from naumenkogs/2020-06-routing-data-improvements

Routing improvements

3 years agoCheck htlc_maximum_msat on channel update
Gleb Naumenko [Mon, 29 Jun 2020 18:28:15 +0000 (21:28 +0300)]
Check htlc_maximum_msat on channel update

3 years agoStore channel capacity if available
Gleb Naumenko [Sun, 28 Jun 2020 12:18:33 +0000 (15:18 +0300)]
Store channel capacity if available

3 years agoAdd htlc_maximum_msat field
Gleb Naumenko [Sun, 28 Jun 2020 11:43:10 +0000 (14:43 +0300)]
Add htlc_maximum_msat field

3 years agoUpdate comment for test_msg_hole
Gleb Naumenko [Fri, 24 Jul 2020 07:19:45 +0000 (10:19 +0300)]
Update comment for test_msg_hole

3 years agoMerge pull request #655 from lightning-signer/per-commitment
Matt Corallo [Wed, 22 Jul 2020 20:11:45 +0000 (13:11 -0700)]
Merge pull request #655 from lightning-signer/per-commitment

ChannelKeys - separate commitment revocation from getting the per-commitment point

3 years agoChannelKeys - separate commitment revocation from getting the per-commitment point
Devrandom [Sat, 11 Jul 2020 10:19:43 +0000 (03:19 -0700)]
ChannelKeys - separate commitment revocation from getting the per-commitment point

The commitment secret is sensitive - it can be used by an attacker to
steal funds if the node also signs the same transaction. Therefore,
only release the secret from ChannelKeys when we are revoking a
transaction.

3 years agoImprove routing announcement test
Gleb Naumenko [Mon, 29 Jun 2020 17:48:01 +0000 (20:48 +0300)]
Improve routing announcement test

3 years agoFix formatting
Gleb Naumenko [Thu, 25 Jun 2020 14:01:42 +0000 (17:01 +0300)]
Fix formatting

3 years agoUse constant for max msats
Gleb Naumenko [Tue, 16 Jun 2020 15:58:06 +0000 (18:58 +0300)]
Use constant for max msats

3 years agoUpdate get_route comment to reflect new parameters
Gleb Naumenko [Tue, 16 Jun 2020 10:17:43 +0000 (13:17 +0300)]
Update get_route comment to reflect new parameters

3 years agoMerge pull request #644 from joemphilips/improve_error_message
Matt Corallo [Wed, 22 Jul 2020 03:04:44 +0000 (20:04 -0700)]
Merge pull request #644 from joemphilips/improve_error_message

Improve error message.

3 years agoMerge pull request #623 from LNP-BP/feat-msgsizelimit
Matt Corallo [Wed, 22 Jul 2020 03:03:37 +0000 (20:03 -0700)]
Merge pull request #623 from LNP-BP/feat-msgsizelimit

Making message size limit an exportable constant