Commit Graph

393 Commits

Author SHA1 Message Date
Olaoluwa Osuntokun 983294c444 lnwallet: set OpenChannel's internal db pointer 2016-03-24 00:01:17 -07:00
Olaoluwa Osuntokun 4b16763f4d lnwallet: update channel.go to new OpenChannel fields
Simply to compile, channel.go will be replaced with lnstate soon
enough.
2016-03-24 00:00:59 -07:00
Olaoluwa Osuntokun afb45ffe8b channeldb: temporary hack...
Need to add a channeldb.NewOpenChannel() method to once again allow a
channel’s db pointer to be private.
2016-03-24 00:00:22 -07:00
Olaoluwa Osuntokun 87603e780f channeldb: re-design OpenChannel schema, update tests
The state of OpenChannel on disk has now been partitioned into several
buckets+keys within the db. At the top level, a set of prefixed keys
stored common data updated frequently (with every channel update).
These fields are stored at the top level in order to facilities prefix
scans, and to avoid read/write amplification due to
serialization/deserialization with each read/write.

Within the active channel bucket, a nested bucket keyed on the node’s
ID stores the remainder of the channel.

Additionally OpenChannel now uses elkrem rather than shachain, delivery
scripts instead of addresses, stores the total net fees, and splits the
csv delay into the remote vs local node’s.

Several TODO’s have been left lingering, to be visited in the near
future.
2016-03-23 22:39:52 -07:00
Olaoluwa Osuntokun 631e76519e channeldb: switch to Open/Create methods rather than New
Commit includes basic tests for Open/Create. Additionally, rather than
relying on btcwallet’s addmgr for encryption/decryption, this package
now exposes a simple crypto system interface.
2016-03-23 22:11:57 -07:00
Olaoluwa Osuntokun 3faa2c2ef5 parse config, set up interrupt handler during lnd's main execution 2016-03-22 18:50:11 -07:00
Olaoluwa Osuntokun 555003006b add WaitForShutdown method to the server, additional logging 2016-03-22 18:49:22 -07:00
Olaoluwa Osuntokun d9922dc76d update the rpcserver's SendMany method to new btcwallet API 2016-03-22 18:48:46 -07:00
Olaoluwa Osuntokun fe6d71e95e lnwallet: accept channeldb as a param in constructor
lnwallet is no longer responsible for creating/opening channeldb. The
call is now expected to do so.
2016-03-22 18:48:18 -07:00
Olaoluwa Osuntokun 27fee0e7d3 lndc: fix bug, return error instead of nil on accept error 2016-03-22 18:47:26 -07:00
Olaoluwa Osuntokun 78c6053ba6 cmd/lncli: default RPC port is now 10009 2016-03-22 18:47:10 -07:00
Olaoluwa Osuntokun 6155fd5d01 channeldb: move node ID/addr funds to node.go 2016-03-22 18:46:54 -07:00
Olaoluwa Osuntokun 3e3948a04f channeldb: switch to bolt.DB instead of walletdb.DB
This decouples channeldb from btcwallet, and also allows us access to
bolt’s Batch() call.
2016-03-22 18:46:30 -07:00
Olaoluwa Osuntokun 670d441dea finalize initial draft of config.go
lnd now supports parsing configuration via the command line, and its
dedicated AppDataDir
2016-03-22 18:44:17 -07:00
Olaoluwa Osuntokun 8feb86c4aa multi: create lnd's logging infrastructure 2016-03-22 18:43:10 -07:00
Olaoluwa Osuntokun d70a39254c create signal.go to handle SIGINT's 2016-03-22 18:42:01 -07:00
Olaoluwa Osuntokun a21ad6e888 create version.go file
A file dedicated to handling+dispatching version information concerning
lnd. We’ll be using the semantic versioning standard.

I guess lnd is officially at 0.1.0-alpha now?
2016-03-22 18:40:54 -07:00
Olaoluwa Osuntokun 90063e1431 run go fmt on config file 2016-03-22 13:30:54 -07:00
mkl e07086a523 Integrate basic configuration functionality 2016-03-22 13:28:56 -07:00
Joseph Poon 48667bdcbe Updated Commit Revocation 2016-03-17 16:51:30 -07:00
Joseph Poon 4b8a8f410a Commit message update
Doesn't need to use a list, only needs to show each party's most recent
state.
2016-03-15 16:22:41 -07:00
Joseph Poon bf4b43d3f2 Updated coin amounts to use int64
(currently for convenience on development)
2016-02-29 00:45:38 -08:00
Olaoluwa Osuntokun 9b9f792f10 chainntfns: document the BtcdNotifier implementation of ChainNotifier 2016-02-26 17:38:31 -08:00
Olaoluwa Osuntokun 77d37298f4 chainntfns: close all pending client channels on shutdown for BtcdNotifier 2016-02-26 17:38:31 -08:00
Olaoluwa Osuntokun 3186b3038c chainntfns: document the ChainNotifier interface 2016-02-26 17:38:31 -08:00
Olaoluwa Osuntokun 1944003fde lnwallet: update to use new btcdnotify.NewBtcdNotifier API 2016-02-26 17:38:31 -08:00
Olaoluwa Osuntokun 8ce8c29af6 chainntfns: add basic tests for confirmation+spending notifications
* The tests as written will be general to all future implementations of
ChainNotifier allowing future implementers to easily ensure their
implementation meets the expected behavior.

* The tests will be moved to the outer directory once a registration
mechanism for notifier implementations is in place.
2016-02-26 17:38:31 -08:00
Olaoluwa Osuntokun 19e1b64f2c chainntfs: use an int32 for NegativeConf 2016-02-26 17:38:31 -08:00
Olaoluwa Osuntokun e92fc5f495 chainntfs: switch BtcdNotifier to directly use btcrpcclient
* Turns out the NotificationServer on btcwallet doesn’t sever full
blocks, nor notify for arbitrary transactions. Instead, we now create a
new client specifically for BtcdNotifier.

* Final implementation is simpler, less dependent on newer btcwallet
features in flux. Additionally, this decouples the chain notifications
from the wallet. Enabling reliance on btcd for notifications, in
conjunction with an independent wallet that satisfies the to-be-drafted
Wallet interface.
2016-02-26 17:38:31 -08:00
Olaoluwa Osuntokun 1c59dfc75c chainntfs: fix the Pop method on confirmationHeap 2016-02-26 17:38:31 -08:00
Olaoluwa Osuntokun 25c1b7a491 lnwallet: update chainNotifier assignment to new BtcdNotifier constructor 2016-02-26 17:38:31 -08:00
Olaoluwa Osuntokun 3d478cdd3e chainntfs: use btcwallet's new NotificationServer for BtcdNotifier
* Rather than rely on the legacy notification interface which may be
deprecated in the near future, we’ll now switch to using the
NotificationSever.

* Negative confirmation notifications due to re-orgs are still
unimplemented however.
2016-02-26 17:38:30 -08:00
Olaoluwa Osuntokun 9fb8045bd2 chainntfns: remove source.go it's no longer needed 2016-02-26 17:38:30 -08:00
Olaoluwa Osuntokun c7402f3462 chainntfns: update BtcdNotifier to adhere to new ChainNotifier interface
* Re-orgs are still unhanded.

* RegisterSpendNtfn should perhaps also register directly with the rpc
client instead of pushing the responsibility to the caller.
2016-02-26 17:38:30 -08:00
Olaoluwa Osuntokun b913bda472 chainntfs: expand ChainNotifier interface
* The `NotificationTrigger` struct has been dropped. Instead we know
simply employ a non-blocking send over a chan struct. This moves the
responsibility of triggering callbacks a level above to the registering
client.

* Confirmation notifications also now have a counter part in order to
notify a caller of the scenario wherein a funding transaction drops out
of the chain due to a re-org. A “neagtiveConf” value will be sent to
the client over a channel in this case. This will allow a caller to
re-register for another confirmation notification. Note that due to
this scenario, callers should also register for notifications
concerning spends of the counterparty’s inputs to the funding
transaction. If a second spend (other than the funding) is detected,
the channel should be closed immediately.

* Notifications concerning spends now also include the spending
transaction, hash, and the input on the spending transaction at which
the outpoint is spent.
2016-02-26 17:38:30 -08:00
Tadge Dryja 2367300d71 Merge branch 'uspvdev' 2016-02-26 13:23:00 -08:00
Tadge Dryja 623d67234d was requesting an already known block, fixed that 2016-02-26 12:30:15 -08:00
Tadge Dryja d2d37ce1ab make it way faster
there were a lot of dumb things in Ingest() that made it really slow.
Like re-hashing the tx a bunch of times.  And re-saving it to the
db redundantly.

also added local bloom filters.  Maybe some concurrency issues if you
generate an address just as you're getting a tx with that address but
that doesn't seem like a real problem.  Cheap to rescan anyway.

So it's faster and works better.
2016-02-25 21:05:01 -08:00
Tadge Dryja 2c1f42d6fd fix block out of order error 2016-02-25 18:19:43 -08:00
Tadge Dryja caf56aaff0 db optimizations 2016-02-25 12:08:35 -08:00
Tadge Dryja f9a740d392 more stress testing stuff 2016-02-24 17:27:29 -08:00
Tadge Dryja df04a73e1a simplify boltdb ingest 2016-02-24 02:37:52 -08:00
Tadge Dryja a14b9a9e70 fix the boltdb problem
not that I know how I fixed it... just moved stuff around.
Oh, bolt.  Any time I see "})" I know I'm in bizzaro world.
2016-02-22 23:21:54 -08:00
Tadge Dryja dd1f2c00fe add fanout. fix boltdb weirdness.
again with keys / values within the bolttx acting weird.
it wasn't deleting utxos that had been spent by the ingested tx.
it'd do the first 30 then stop.  Deferred deletion and copied the
serialized utxo.  Not sure which of those fixed it.  Maybe both.
2016-02-22 16:32:58 -08:00
Tadge Dryja bc4cf5ba80 add per tx fee estimation
seems to work fine.  Can add monitoring of avg fees later
2016-02-22 14:35:01 -08:00
Tadge Dryja 2b808724fb spend from wpkh works 2016-02-22 01:41:40 -08:00
Tadge Dryja 57a34f0753 spending witness inputs still doesn't work... 2016-02-21 17:42:30 -08:00
Tadge Dryja cb3b20ad6c use WitnessSignatureScript 2016-02-21 14:28:47 -08:00
Tadge Dryja 05590279b2 deal with p2wsh? maybe..? 2016-02-21 13:49:04 -08:00
Tadge Dryja f6cf4b87f0 pretty ugly. But got the hash from the bip143 example. 2016-02-20 00:42:07 -08:00