Commit Graph

184 Commits

Author SHA1 Message Date
Olaoluwa Osuntokun
6e0cfaf7ec lnwallet: re-introduce rpc calls during channel reservation workflow
* In preparation for regression testing once nodetest is finished.
* These sections we’re previously uncommented to allow for testing the
wallet without a full-node hooked up.
2016-01-14 23:58:04 -08:00
Olaoluwa Osuntokun
cf65aaa2c9 lnwallet: have wallet return db so it can be closed during shutdown
* Also remove some extra print statements from debugging
* Separate out logic to create wallet from creating an ID
2016-01-14 23:57:54 -08:00
Olaoluwa Osuntokun
f52b8370bc lnwallet: populate the update totem during channel initialization 2016-01-14 23:56:11 -08:00
Olaoluwa Osuntokun
27744a3582 lnwallet: add logic for adding/removing HTLCs
* Updates to the channel are made atomic, and consistent via a proxy
object: “ChannelUpdate” which encapsulates an update transaction. Only
one update transaction may be outstanding at any time.
* Update transactions are initiated via AddHTLC or SettleHTLC.
* Once a transaction has been begun, in order to complete the update
the transaction must first be presented with a signature from the
counter-party for our new version of the commitment tx
(VerifyNewCommitmentSigs), and finally to atomically commit the
transaction, the counterparty’s pre-image to their previous revocation
hash must be validate (Commit).
2016-01-14 23:56:10 -08:00
Olaoluwa Osuntokun
895d70e79f lnwallet: add funding tx p2sh output to lnchannel
* Allows for quick access to the pkScript when signing new commitment
transactions.
2016-01-14 23:56:10 -08:00
Olaoluwa Osuntokun
3fe82f475f lnwallet: correctly adjust cleared funds during AddHTLC
* When adding an HTLC, the update to settled balances are to the side
sending the HTLC.
2016-01-14 23:56:10 -08:00
Olaoluwa Osuntokun
7ec419bde5 lnwallet: add docstrings to script_utils.go 2016-01-14 23:56:10 -08:00
Olaoluwa Osuntokun
f257690788 lnwallet: finish docstrings within coin select code 2016-01-14 23:56:10 -08:00
Olaoluwa Osuntokun
b2cb33c3c2 lnwallet: add documentation to ChannelReservation
* Workflow along with expected call orders have been documented.
* With this, the initial iteration of ChannelReservation is mostly
complete.
* However, there are still some unfinished steps internally within the
wallet related to processing. Such as factoring proper tx fees,
splitting fees, some node interaction etc.
2016-01-14 23:56:10 -08:00
Tadge Dryja
19233dc42d wallet creation works, takes 11 seconds 2016-01-14 23:56:09 -08:00
Tadge Dryja
726ba629f5 ok now it works. Sortof. Still hangs, but hangs later, after writing pkh. 2016-01-14 23:56:09 -08:00
Olaoluwa Osuntokun
1772108544 lnwallet: start of HTLC update logic
* moved sorting of transaction outside of createCommitTx also us to add
HTLC’s before sorting
* On the fence about the proxy object design, will re-visit once we
start to implement the p2p code.
2016-01-14 23:56:09 -08:00
Olaoluwa Osuntokun
5a7b98a9e4 lnwallet: remove CLTV funding tx gen 2016-01-14 23:56:09 -08:00
Olaoluwa Osuntokun
41f4992218 lnwallet: add utils to generate HTLC scripts, split up commit output scripts 2016-01-14 23:56:08 -08:00
Olaoluwa Osuntokun
c41f7d1a7d lnwallet: update to 20 byte revocation hashes 2016-01-14 23:56:08 -08:00
Tadge Dryja
cb32ab1fb9 identify where it freezes. in btcwallet/walletdb/interface.go:271 2016-01-14 23:56:08 -08:00
Tadge Dryja
8504362c5e trying to store id pkh. Doesn't work; wallet creation never completes 2016-01-14 23:56:08 -08:00
Tadge Dryja
e70c6aa367 trying to store private identity key. Doesn't work. 2016-01-14 23:56:08 -08:00
Olaoluwa Osuntokun
a5f0d3e56e lnwallet: require TLS for rpc client 2015-12-29 21:52:20 -06:00
Olaoluwa Osuntokun
ace1aca43c lnwallet: actually connect the rpc client... 2015-12-29 21:08:56 -06:00
Olaoluwa Osuntokun
b3e821c4d2 lnwallet: make KeyGenMtx public, roc server needs to synchronize 2015-12-29 17:09:32 -06:00
Olaoluwa Osuntokun
e07e7cfec9 lnwallet: actually add the config file 2015-12-29 16:04:23 -06:00
Olaoluwa Osuntokun
7640e57cdc lnwallet: add dirty config 2015-12-29 15:59:57 -06:00
Olaoluwa Osuntokun
f1717b9620 lnwallet: embed btwallet within LightningWallet, exposes all methods publicly
* As a result in order to not over-shadow the Start/Stop methods of
btcwallet.Wallet, the Start/Stop methods on LightningWallet have been
renamed to Startup/Shutdown.
2015-12-29 12:45:31 -06:00
Olaoluwa Osuntokun
bc7bdcd22b lnwallet: remove draft wire structs from reservation.go, now lives in lnwire 2015-12-29 00:00:29 -06:00
Olaoluwa Osuntokun
1c4887e746 lnwallet: drop some comments upon script_utils.go 2015-12-29 00:00:29 -06:00
Olaoluwa Osuntokun
7648fee903 lnwallet: note to future roasbeef 2015-12-29 00:00:29 -06:00
Olaoluwa Osuntokun
ef7a2aa553 lnwallet: properly set sequence number in tx for CSV usage 2015-12-29 00:00:29 -06:00
Olaoluwa Osuntokun
774192ecc7 lnwallet: store their commit sig in channel reservation 2015-12-29 00:00:29 -06:00
Olaoluwa Osuntokun
1fd1d87e34 lnwallet/tests: include csv delay in channel reservation init, add doc strings 2015-12-29 00:00:29 -06:00
Olaoluwa Osuntokun
b95eb25595 lnwallet: generate a commitment transaction signature fo bob in wallet_test.go 2015-12-29 00:00:29 -06:00
Olaoluwa Osuntokun
9840585757 lnwallet: actually use 'amount' parameter 2015-12-29 00:00:29 -06:00
Olaoluwa Osuntokun
6eb77b02c2 lnwallet: add comments to wallet.go 2015-12-29 00:00:29 -06:00
Olaoluwa Osuntokun
8ca8eb60fb lnwallet: verify received commitment tx signature is valid 2015-12-29 00:00:29 -06:00
Olaoluwa Osuntokun
695a1e6c45 lnwallet: sign the REDEEMSCRIPT not the p2sh script :) 2015-12-29 00:00:28 -06:00
Olaoluwa Osuntokun
17f37cc254 lnwallet: shutdown rpc connection during stoppage 2015-12-29 00:00:28 -06:00
Olaoluwa Osuntokun
36e7c38812 lnwallet: introduce mutex around coin selection logic 2015-12-29 00:00:28 -06:00
Olaoluwa Osuntokun
7874357384 lnwallet: remove unused struct 2015-12-29 00:00:28 -06:00
Olaoluwa Osuntokun
4fdb2763e6 channeldb: create new channeldb package, update lnwallet to use new API
* Initial draft of brain dump of chandler. Nothing yet set in stone.
* Will most likely move the storage of all structs to a more “column”
oriented approach. Such that, small updates like incrementing the total
satoshi sent don’t result in the entire struct being serialized and
written.
* Some skeleton structs for other possible data we might want to store
are also included.
* Seem valuable to record as much data as possible for record keeping,
visualization, debugging, etc. Will need to set up a time+space+dirty
cache to ensure performance isn’t impacted too much.
2015-12-26 12:35:15 -06:00
Olaoluwa Osuntokun
d7a1c5d337 lnwallet: check for nil buckets during fetch in channeldb 2015-12-26 00:12:31 -06:00
Olaoluwa Osuntokun
3e2a753271 lnwallet: touch config smelly 2015-12-26 00:11:39 -06:00
Olaoluwa Osuntokun
0307f321ad lnwallet: switch LightningChannel struct to use channeldb instead of raw namespace 2015-12-26 00:08:04 -06:00
Olaoluwa Osuntokun
890ceecc1a lnwallet: csv delay is a uint32, fill forgotten fields in channel state 2015-12-26 00:07:30 -06:00
Olaoluwa Osuntokun
b4e33587b1 lnwallet: switch to using channeldb 2015-12-26 00:05:55 -06:00
Olaoluwa Osuntokun
ff92efe7df lnwallet: add node's ID to reservation workflow 2015-12-26 00:05:07 -06:00
Olaoluwa Osuntokun
4bb526854a lnwallet: fix bug don't set TheirCommitSig twice 2015-12-26 00:03:53 -06:00
Olaoluwa Osuntokun
e345f72d69 lnwallet: implement FetchOpenChannel and PutOpenChannel 2015-12-25 18:00:44 -06:00
Olaoluwa Osuntokun
1386d798f5 lnwallet: add tests for serialization of OpenChannelState 2015-12-25 17:00:53 -06:00
Olaoluwa Osuntokun
8e5f028eea lnwallet: create channeldb.go add serialization methods for OpenChannel 2015-12-25 17:00:20 -06:00
Olaoluwa Osuntokun
5840786922 lnwallet: save redeemScript in channel state 2015-12-24 12:42:29 -06:00
Olaoluwa Osuntokun
15f15bb3af rename revocation package to shachain
* Constructors now also more in line with “Effective Go”
2015-12-24 12:42:03 -06:00
Olaoluwa Osuntokun
07646d05db move channel state struct to channeldb.go
* All fields are now publicly exported
2015-12-24 12:41:15 -06:00
Olaoluwa Osuntokun
a4762b818f Merge branch 'master' of li.lan:labs/plasma 2015-12-22 22:39:28 -06:00
Olaoluwa Osuntokun
882e7640d5 lnwallet: update tests to switch to new workflow 2015-12-22 22:32:18 -06:00
Olaoluwa Osuntokun
d24831dc29 lnwallet: update workflow around contributions 2015-12-22 22:31:17 -06:00
Olaoluwa Osuntokun
e762d328fa lnwallet: add ChannelContribution, finalize ChannelReservation API/workflow
* Final workflow has been greatly simplified.
* Interaction is now:
   * init
   * add contribution
   * complete
2015-12-22 22:30:11 -06:00
Olaoluwa Osuntokun
b606804934 lnwallet: add comments to fields of OpenChannelState 2015-12-22 22:27:33 -06:00
Joseph Poon
55c8710cb9 Minor optimization in script opcodes 2015-12-22 16:45:21 -08:00
Olaoluwa Osuntokun
36ec5b4927 lnwallet: update tests to AddContribution API change 2015-12-21 15:55:17 -06:00
Olaoluwa Osuntokun
829f67f33e lnwallet: CompleteReservation now includes sig for commit tx 2015-12-21 15:54:33 -06:00
Olaoluwa Osuntokun
584fc9b620 lnwallet: AddFunds is now AddContribution, accounts for commitment tx
* Contribution from remote host necessary to construct the initial
commitment transaction is now also expected
* All message structs and handlers updated accordingly
* AddContribution now also generates both commitment tnxs, and
generates a signature for their version of the commitment transaction
2015-12-21 15:53:34 -06:00
Olaoluwa Osuntokun
e7e546af9a lnwallet/reservation: fundingLockTime is int64 track their revoke hash 2015-12-21 15:49:57 -06:00
Olaoluwa Osuntokun
d7d569b267 lnwallet: track their current commitment sig in channel state 2015-12-21 15:49:34 -06:00
Olaoluwa Osuntokun
b9a6155021 lnwallet: add field to track current out-of-chain revocation hash 2015-12-20 21:48:56 -06:00
Olaoluwa Osuntokun
8cbbba14a4 lnwallet: assume symmetric initial channel balance 2015-12-20 21:48:45 -06:00
Olaoluwa Osuntokun
6d006ac79c lnwallet: sort inputs/outputs in commit tx 2015-12-20 21:47:57 -06:00
Olaoluwa Osuntokun
d3fe04ab9b lnwallet: add function to locate script index to script_utils.go 2015-12-20 21:47:29 -06:00
Olaoluwa Osuntokun
34e35fe2d5 lnwallet: set commit tnx related info in ChannelReservation
* Future commit will ditch all the thread-safe “getter” like methods.
We’re all adults just make sure to grab the lock.
* All wallet mutation funcs will also document which fields are set
after completion of the request
* Set shaChain, delivery address, commitment key
2015-12-20 17:13:14 -06:00
Olaoluwa Osuntokun
c7d604fd0b lnwallet: use funcs in script_utils.go 2015-12-20 17:11:21 -06:00
Olaoluwa Osuntokun
30523d7db3 lnwallet: import badge's script utils in new file 2015-12-20 17:10:24 -06:00
Olaoluwa Osuntokun
093bbf40ad lnwallet: track some more stats in channel state 2015-12-20 15:17:13 -06:00
Olaoluwa Osuntokun
d2e3b376ea lnwallet: re-name package to lnwallet, though it was? 2015-12-20 00:00:50 -06:00
Olaoluwa Osuntokun
61f5772c40 lnwallet: re-use same wallet instance across tests
* btcwallet still rather slow to create/open, due to scrypt derivation
2x?
2015-12-18 21:48:55 -06:00
Olaoluwa Osuntokun
29d381ad21 lnwallet: adapt tests to field changes 2015-12-18 21:47:47 -06:00
Olaoluwa Osuntokun
420e34cc91 lnwallet: forgot some field name changes 2015-12-18 21:43:37 -06:00
Olaoluwa Osuntokun
a689595054 lnwallet: comment out lnwire-like serialization stuff for now 2015-12-18 21:42:49 -06:00
Olaoluwa Osuntokun
2f7a801dcb lnwallet: embed channel state within ChannelReservation 2015-12-18 21:39:51 -06:00
Olaoluwa Osuntokun
6bb37448f0 lnwallet: add num updates and delivery addresses to channel state
* move utility funds to bottom of file
2015-12-18 21:35:40 -06:00
Olaoluwa Osuntokun
6af4aaf71b lnwallet: separate channel state into new struct
* Will be integrated into ChannelReservation also
* This is the struct that will be persisted to disk
2015-12-18 15:37:13 -06:00
Joseph Poon
39b100b865 Serialize Funding Request and script for CLTV-only 2015-12-18 11:29:35 -08:00
Olaoluwa Osuntokun
feb00e04c4 lnwallet: add fun to create initial Commitment Tx
* Forgot we assume mal fix, need to go back and update the reservation
workflow
2015-12-16 22:58:49 -06:00
Olaoluwa Osuntokun
48c1c39dc9 lnwallet: add skeleton for LightningChannel
* pretty much same as strux/lchannel.go
* Too beefy atm, added note to bring back old CompleteReservation
struct
2015-12-16 22:58:01 -06:00
Olaoluwa Osuntokun
ddb74258ff lnwallet: import tadge's p2shify func 2015-12-16 22:55:52 -06:00
Olaoluwa Osuntokun
147748d178 rename wallet to lnwallet 2015-12-16 14:51:59 -06:00