Andras Banki-Horvath
85aee9b064
kvdb+lncfg: fully move etcd behind build tag
...
This commit separates all etcd related sources (sans a few stubs and
config) from the rest of the source tree and makes compilation conditional
depending on whether the kvdb_etcd build tag is specified.
2020-05-22 11:26:25 +02:00
Andras Banki-Horvath
3ef331e016
lncfg+etcd: add TLS config
...
This commit extends lncfg with etcd TLS config and passes these
parameters to the etcd client upon construction.
2020-05-22 11:26:25 +02:00
Andras Banki-Horvath
b54f8a1b97
kvdb+channeldb: create ExtendedBackend interface to allow rich tx logic
...
This commit adds the ExtendedBackend interface which is an extension to
the walletdb.DB interface. This paves the way to using etcd.db.View and
etcd.db.Update in the global View and Update functions without much code
rewrite.
2020-05-22 11:26:25 +02:00
Andras Banki-Horvath
23fcb59a2b
channeldb: convert payment tests to use test backend
2020-05-22 11:26:25 +02:00
Andras Banki-Horvath
02f9d91e49
kvdb+etcd: only lock on bucket path mod revision for reads and writes
...
This commit reduces the compare set size the STM will submit in
transactions by adding only the bucket keys along the bucket path to a
specific lock set. This lock set then used to filter the read set,
effectively removing all read only keys from the transaction predicate
that are not bucket keys.
By tracking if a read-write tx actually changes something, we can also
"bump" the mod revision of the bucket keys.
With this trick we essentially implement a read-write lock for our
bucket structure greatly reducing transaction processing time.
2020-05-22 11:26:25 +02:00
Andras Banki-Horvath
0e3629e2c7
channeldb+lnd: make channeldb backend configurable
...
This commit adds support for user configured channeldb backend.
2020-05-22 11:26:25 +02:00
Andras Banki-Horvath
9d57c1a6b4
lncfg: add configuration for user specified db backend
...
This commit extends lncfg to support user specified database backend.
This supports configuration for both bolt and etcd (while only allowing
one or the other).
2020-05-22 11:26:25 +02:00
Andras Banki-Horvath
859a457e48
kvdb+etcd: extend kvdb and STM with stats
...
The commit itslef adds stats to the transactions such that we can see
how LND behaves with and etcd backend.
2020-05-22 11:26:25 +02:00
Andras Banki-Horvath
248a00f211
kvdb+etcd: enable channeldb testing with both bdb/etcd
2020-05-22 11:26:25 +02:00
Andras Banki-Horvath
3b7525659c
channeldb+kvdb: add walletdb interface test
...
This commit adds walletdb interface test suite to the existing test set.
2020-05-22 11:26:25 +02:00
Andras Banki-Horvath
6a24a03cec
channeldb+kvdb: walletdb/kvdb interface etcd implementation
...
This commit adds a full interface implementation of the walletdb/kvdb
interface with detailed tests.
2020-05-22 11:26:25 +02:00
Andras Banki-Horvath
137dee04e8
channeldb+kvdb: an extended STM on top of etcd clientv3
...
This commit adds an extended STM, similar to what available in etcd's
clientv3 module. This incarnation of said STM supports additional
features, like positioning in key intervals while taking into account
deletes and writes as well. This is a preliminary work to support all
features of the kvdb interface.
2020-05-22 11:26:24 +02:00
Joost Jager
a8d5c32983
Merge pull request #4132 from joostjager/itests-on-routerrpc
...
itest: switch over to routerrpc.SendPaymentV2
2020-05-22 08:56:10 +02:00
Olaoluwa Osuntokun
53da66a6fc
Merge pull request #4302 from wpaulino/btcwallet-fetchinputinfo-bounds-check
...
btcwallet: add transaction outputs bounds check to FetchInputInfo
2020-05-21 17:22:25 -07:00
Olaoluwa Osuntokun
c2e7ca9b5f
Merge pull request #4300 from guggero/no-fastsha
...
channeldb+htlcswitch: don't use fastsha256 in tests
2020-05-21 17:21:50 -07:00
Wilmer Paulino
77a4bc97a7
Merge pull request #4304 from guggero/peer-alignment
...
peer: fix struct alignment
2020-05-21 19:05:21 +00:00
Oliver Gugger
42ac187932
peer: fix struct alignment
...
Integers used atomically MUST be aligned properly, otherwise the
sync library will crash on purpose. Therefore non-aligned struct
members must come later.
2020-05-21 11:28:49 +02:00
Conner Fromknecht
64b8aa8f11
Merge pull request #4227 from guggero/signing-abstraction
...
multi: Remove need for DerivePrivKey from watchtower, brontide, netann and sphinx package
2020-05-20 16:07:44 -07:00
Wilmer Paulino
f287ac3cea
btcwallet: add transaction outputs bounds check to FetchInputInfo
...
This prevents a panic when providing an incompatible output index for
the transaction.
2020-05-20 11:42:12 -07:00
Joost Jager
d2f6140818
itest: extend whitelist
2020-05-20 17:24:36 +02:00
Joost Jager
e201ed8106
itest: switch over to routerrpc.SendPaymentV2
2020-05-20 17:23:52 +02:00
Joost Jager
ca9c58aec9
Merge pull request #4183 from joostjager/sync-local-payment
...
htlcswitch: sync local payment hand-off to link
2020-05-20 11:23:15 +02:00
Oliver Gugger
a17ddc5dd1
channeldb+htlcswitch: don't use fastsha256 in tests
...
The btcsuite/fastsha256 registers itself in the crypto package of
golang as a replacement for sha256. This causes problems in TLS1.3
connections that require the hash implementations to be serializable
and results in the "tls: internal error: failed to clone hash" error.
By removing all uses of the library we fix that error.
2020-05-20 11:07:38 +02:00
Oliver Gugger
3afaed8b5c
rpcserver: fix linter error
2020-05-20 09:12:53 +02:00
Oliver Gugger
36b90382d3
lnd+server+keychain: remove unused code
2020-05-20 09:07:21 +02:00
Oliver Gugger
08d6a61e2a
signrpc: use DigestSigner interface for signing
2020-05-20 09:06:59 +02:00
Oliver Gugger
4003f25281
signrpc: use ECDH interface for shared key generation
2020-05-20 09:06:58 +02:00
Oliver Gugger
f97e7b9951
watchtower: use ECDH interface for watchtower session
2020-05-20 09:06:57 +02:00
Oliver Gugger
535a22c590
server+brontide: use ECDH interface for brontide handshake
2020-05-20 09:06:56 +02:00
Oliver Gugger
ee74e4ba86
server+mod: use ECDH interface for sphinx router
2020-05-20 09:05:36 +02:00
Oliver Gugger
be890ef9be
lnd+server+netann: use signing interface in node signer
2020-05-20 09:05:35 +02:00
Oliver Gugger
6f702a43aa
watchtower: extend and rename SecretKeyRing
2020-05-20 09:05:15 +02:00
Oliver Gugger
b0cb110e86
watchtower: rename SessionPrivKey to SessionKeyECDH
2020-05-20 09:05:15 +02:00
Oliver Gugger
140731af00
lnd+watchtower: rename NodePrivKey to NodeKeyECDH
2020-05-20 09:05:14 +02:00
Oliver Gugger
7f1b865b53
multi: rename server's identityPriv to identityECDH
2020-05-20 09:05:14 +02:00
Oliver Gugger
cf0380ac81
keychain: add single key wrapper implementations
2020-05-20 09:04:05 +02:00
Oliver Gugger
6cf1844b0e
keychain: add new interface methods to wallet
2020-05-20 09:04:04 +02:00
Oliver Gugger
d6ba0a5b85
keychain: add new abstraction interfaces
2020-05-20 09:04:04 +02:00
Joost Jager
8119dc7a88
htlcswitch: rename to getLocalLink
...
Align function name with the contained logic.
2020-05-20 08:03:52 +02:00
Joost Jager
e00840e2ab
htlcswitch: return local add failure to caller
...
Fixes a pre-existing issue where nil was returned when a failure had
occurred during commiting of the circuit.
2020-05-20 08:03:50 +02:00
Joost Jager
c325bf8c57
htlcswitch: sync link hand-off
...
This commit extends the link with a new synchronous delivery point for
local UpdateAddHTLC messages. The switch method SendHTLC is updated to
use this delivery point and thereby becomes a synchronous call.
For MPP payments, synchronous hand-off is important. Otherwise the next
pathfinding round could start without the channel balance updated yet.
2020-05-20 08:03:48 +02:00
Joost Jager
de2df5606a
htlcswitch: extract handleDownstreamUpdateAdd in link
...
To be able to call just the UpdateAdd logic for synchronously handled
local adds in a later commit.
2020-05-20 08:03:46 +02:00
Joost Jager
55930df70d
htlcswitch: update commit tx per downstream msg type
...
Unroll common code to allow splitting in separate handlers per message
type.
2020-05-20 08:03:44 +02:00
Joost Jager
b559811bf5
htlcswitch: extract updateCommitTxOrFail in link
...
Deduplicate code and prepare for further split of
handleDownstreamPkt.
2020-05-20 08:03:42 +02:00
Joost Jager
7afb43a012
htlcswitch: bypass main loop for local sends
...
There is no concurrent access in this code path, so there is no need to
pass the call through the main event loop.
2020-05-20 08:03:40 +02:00
Joost Jager
fe35d35458
htlcswitch: simplify local sends
...
Embed forward method into SendHTLC and remove redundant type check.
2020-05-20 08:03:38 +02:00
Joost Jager
babb0a36b4
switch/test: use external interface for testing
...
Previously the forward(...) method was used in forwarding tests,
while that code path isn't used for forwards in reality.
2020-05-20 08:03:36 +02:00
Conner Fromknecht
afc60353a1
Merge pull request #4213 from carlaKC/txdetails-addlabel
...
lnrpc: add optional labels to on chain transactions
2020-05-19 14:44:55 -07:00
carla
d021eae392
itest: add label check to sweep coins test
...
Add a label to our sweep all coins itest and check that it is correctly
set.
2020-05-19 13:31:51 +02:00
carla
e8ca306f12
lnrpc: display transaction label in transaction details
2020-05-19 13:31:51 +02:00