niftynei
4c9a4250bf
subd: remove "swap" methods
...
only needed for moving the subd->channel from an uncommitted_channel to
a channel; we removed uncommitted_channel from dual_open so it's no
longer necessary
2021-03-03 16:19:04 -06:00
niftynei
de3599e98a
subd: remove ctype (channel_type)
...
We only needed the type check for dual_open, since it was the only
subdaemon path that used two 'types' in the subd->channel field.
2021-03-03 16:19:04 -06:00
niftynei
1e9a900918
df: start of RPC for bumping the fee!
...
Doesn't call into dualopend yet
2021-03-03 16:19:04 -06:00
niftynei
d49db8ad41
df: do the right thing, now that we have a cancellation routine
...
removes a fixme
2021-03-03 16:19:04 -06:00
niftynei
3da2ae4d30
df: move to inflights for sigs/openchannel_signed parts of flow
...
We create an inflight once we get the commitment tx for a channel
instead of once we get the funding transaction signatures
2021-03-03 16:19:04 -06:00
niftynei
8b0e88dfb3
df: move initialization over to unsaved channel
...
uncommitted_channel -> channel (but unsaved)
2021-03-03 16:19:04 -06:00
niftynei
0951e2c941
df: get rid of unnecessary struct commit_rcvd
2021-03-03 16:19:04 -06:00
niftynei
95e81ce82c
df: helper to find the last (most recent) inflight for a channel
2021-03-03 16:19:04 -06:00
niftynei
628f9df320
df: consolidate callbacks for opener/accepter, move to open_attempt
2021-03-03 16:19:04 -06:00
niftynei
bfb862564e
df: method for disconnecting an *unsaved* channel
...
Since we're moving over to "unsaved channels" instead of
"uncommitted_channel" struct, we need a new utility to disconnect this
channe
2021-03-03 16:19:04 -06:00
niftynei
538fd670ce
df: add helper for creating an "unsaved" channel
...
Channel that's not saved to database yet
2021-03-03 16:19:04 -06:00
niftynei
1786fcbbdc
df: migrate from "uncommitted_channel" to "open_attempt"
...
We're going to move over to "unsaved channels" instead of using a
separate "uncommitted_channel" struct. This means a peer might have a
channel that's not saved to the database yet in its channel list
2021-03-03 16:19:04 -06:00
niftynei
6474779e38
df-rbf: hook for rbf_init attempt, called "rbf_channel"
...
When we get an RBF request, we ask the/a plugin what they'd like to do
about it. This pipes the request through to the plugin
2021-03-03 16:19:04 -06:00
niftynei
50b8655cbe
channel: remove 'uncommitted_channel' from channel lookup
...
We're going to be removing "uncommitted_channel" from v2 open stat
2021-03-03 12:28:22 +10:30
niftynei
4baa10ef68
channel: remove psbt
and remote_tx_sigs
...
We just added this, but we've migrated them to the "inflight" struct
instead, as they actually pertain to an single inflight open attempt
2021-03-03 12:28:22 +10:30
niftynei
e15de71375
channel: only delete saved channels from database
...
There will be 'unsaved' channels now, with a dbid of 0
2021-03-03 12:28:22 +10:30
niftynei
99123ddbe4
dual-funding, rbf: reject RBFs that will fail the total-fee rule
...
RBFs must have a total fee greater than the last successful RBF attempt
2021-03-03 12:28:22 +10:30
lisa neigut
0d8351155e
df-rbf: validate that the candidate funding transaction is valid
...
We need to make sure that there's at least one input that's represented
in every single RBF-attempt for this channel, to prevent "parallel"
subsequent RBFs from succeeding/opening (the multi-channel backdoor?!)
2021-03-03 12:28:22 +10:30
niftynei
b30489310b
df-rbf: break out opener commitment codepath, use for rbf
2021-03-03 12:28:22 +10:30
niftynei
63b060066b
df-rbf: opener setup for "interactive" protocol portion
...
If we're the opener, there's a bit of extra setup we need to do before
calling "run_tx_interactive", namely adding the funding_output to the
PSBT
2021-03-03 12:28:22 +10:30
niftynei
e67d5d7559
df: move out logic for adding funding output to PSBT
2021-03-03 12:28:22 +10:30
niftynei
804b93c81f
df-rbf: split out "commitment txs" portion of accepter
...
use it for received RBFs requests, when we're the "accepter"
2021-03-03 12:28:22 +10:30
niftynei
22078262f0
df-reinit: pass back channel_flags
...
We should also restore the channel_flags field on reinit; we use them if
we do an RBF after a reconnection
2021-03-03 12:28:22 +10:30
niftynei
940347b04e
df: put channel_flags onto state
...
They need to exist through multiple open channel attempst (via RBF)
2021-03-03 12:28:22 +10:30
niftynei
a489f92ee8
df-rbf: start of handling an incoming RBF attempt from peer
...
A peer init's an RBF, we start handling it
2021-03-03 12:28:22 +10:30
niftynei
067f1f2eb7
df-rbf: add method to fail an RBF
...
this is a bit different than straight up failing a channel. we want to
signal that the RBF attempt failed, only
2021-03-03 12:28:22 +10:30
niftynei
54d5cdb938
df-rbf: update wires with ack and fail rbf
2021-03-03 12:28:22 +10:30
niftynei
cf2f0c32d1
df-rbf: refactor state for opening attempts
...
Since a channel can now have multiple successful funding transactions
constructed for it, we need space to express this in the states.
2021-03-03 12:28:22 +10:30
niftynei
e18af6aaa3
rbf: check all inflights for matching transaction data
...
Even though, technically, we only need to check for v1 open data, go
ahead and extend this check to encompass the inflights
2021-03-03 12:28:22 +10:30
niftynei
b8b910e4c4
df-rbf: update channel data on depth reached
...
When the funding tx reaches depth, update the channel's data to the
"correct" funding transaction info from inflights (if necessary).
This will be necessary if:
- the transaction has been successfully RBF'd and
- the lesser fee transaction is the one successfully mined, OR
- the channel is in the process of being RBF'd
2021-03-03 12:28:22 +10:30
niftynei
36f3b13279
inflight: add a 'channel-inflight' concept, in-progress channel stuffs
...
"inflights" are all potential channel funding transactions that we
currently have commitment transactions for.
2021-03-03 12:28:22 +10:30
niftynei
b8183f2eeb
df: turn off integration tests that depend on v2 funding
...
It'll be broken til we're done re-writing this
2021-03-03 12:28:22 +10:30
niftynei
1e4ff724a5
nit: make comments 80 chars
2021-03-03 12:28:22 +10:30
Karol Hosiawa
bb48de447d
Updated listforwards doc with new parameters
...
Changelog-Added: JSON-RPC: `listforwards` can now filter by status, in and out channel.
2021-03-03 09:19:20 +10:30
Karol Hosiawa
7b72ea7061
Added listforwards test
2021-03-03 09:19:20 +10:30
Karol Hosiawa
c1e958d2b9
Added index to forwarded_payments.state to speedup lookups using this column
2021-03-03 09:19:20 +10:30
Karol Hosiawa
8a8f81175d
Added in_channel,out_channel,state params to listforwards
2021-03-03 09:19:20 +10:30
Rusty Russell
8af5764a9c
json: fix oom when adding a long string
2021-03-03 09:18:53 +10:30
Michael Schmoock
d753ee27a2
pytest: test rpc_command hook chain
2021-03-03 09:18:53 +10:30
Michael Schmoock
316457a1de
doc: make rpc_command hook chainable
2021-03-03 09:18:53 +10:30
Michael Schmoock
afaaeb3c7d
plugins: make rpc_command hook chainable
...
Changelog-Changed: The `rpc_command` hook is now chainable.
2021-03-03 09:18:53 +10:30
Rusty Russell
48e91da829
pytest: reduce test to edgecases for CI.
...
It's timing out, even though we disable valgrind.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2021-03-02 14:42:34 +10:30
Rusty Russell
d0946b75bc
common: support opt_shutdown_anysegwit checks (EXPERIMENTAL_FEATURES).
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2021-03-02 14:42:34 +10:30
Rusty Russell
db2198e7b9
bitcoin/script: use script opcode constants from wally_script.h
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2021-03-02 14:42:34 +10:30
Rusty Russell
26627bdf7d
openingd: check upfront shutdown script.
...
The spec doesn't say to do this, but it makes sense, otherwise
they'll never be able to mutually close the channel.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2021-03-02 14:42:34 +10:30
Rusty Russell
66dda32da2
common/shutdown_scriptpubkey: extract shutdown scriptpubkey test.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2021-03-02 14:42:34 +10:30
Christian Decker
ebb1b19c65
plugin: Fix the custommsg hook not to include the internal prefix
...
We were always prefixing the `message` field with the internal type
prefix 0x0407, followed by the length prefix. Neither is needed since
the type being constant is of no interest to the plugin and the length
being implicit due to the JSON-encoding.
Reported-by: Ilya Evdokimov
Changelog-Fixed: plugin: The `custommsg` hook no longer includes the internal type prefix and length prefix in its `payload`
Changelog-Deprecated: plugin: The `message` field on the `custommsg` hook is deprecated in favor of the `payload` field, which skips the internal prefix.
2021-03-02 14:41:16 +10:30
Rusty Russell
804c2c2c20
pytest: test fee estimates which start working after channel establishment.
...
They need to specify fees to get a channel before this, but it's possible.
The test revealed no surprises (other than the last change).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2021-03-02 13:34:55 +10:30
Rusty Russell
959d1c9983
chaintopology: fix notification first time fee estimate works.
...
We probably want to notify everyone immediately, rather than
waiting for the first change.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2021-03-02 13:34:55 +10:30
Rusty Russell
4848c0022f
plugins/bcli: fake minimum fee if we're in regtest mode.
...
Saves a great deal of confusion for regtest users.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Changelog-Changed: JSON-RPC: If bitcoind won't give a fee estimate in regtest, use minimum.
2021-03-02 13:34:55 +10:30