Olaoluwa Osuntokun
27e6839060
lnwallet: publicly export constructor for LightningChannel
2016-06-21 13:13:18 -07:00
Olaoluwa Osuntokun
507520cda9
lnwallet: move channelState from channeldb to channel.go
2016-06-21 13:13:14 -07:00
Olaoluwa Osuntokun
fcff17c336
multi: change all imports to roasbeef's forks
...
This commit will allow the general public to build lnd without jumping
through hoops setting up their local git branches nicely with all of
our forks.
2016-05-15 17:22:37 +03:00
Olaoluwa Osuntokun
c6eedafb9a
lnwallet: update reservation workflow to be segwitty
...
Only nested p2sh or pure witness outputs are used when selecting coins
for inputs to a funding transaction.
The funding transaction output now uses p2wsh rather than regular p2sh.
All tests have been updated accordingly.
2016-05-03 20:06:58 -07:00
Olaoluwa Osuntokun
4b4c0f73b0
lnwallet: add ListUnspentWitness for funding tx coin selection
2016-05-03 20:06:49 -07:00
Olaoluwa Osuntokun
0e74672797
lnwallet: use InputScripts struct within ChannelReservation
...
This allows the reservation workflow to support pure witness program
outputs, as well as witness programs nested within p2sh.
2016-05-03 20:06:44 -07:00
Olaoluwa Osuntokun
eeb2887fe9
lnwallet: segwit-ify all scripts and signing utils
2016-05-03 20:06:39 -07:00
Olaoluwa Osuntokun
163eb8dcb8
lnwallet: remove FundingType enum
...
Removing as segwit is now the path forward.
2016-05-03 20:06:30 -07:00
Tadge Dryja
71231c477c
make imports lowercase
2016-04-30 20:24:57 -07:00
Olaoluwa Osuntokun
1a96e4f7a6
lnwallet: default to p2wkh address for generated change+delivery addresses
2016-04-24 20:27:56 -07:00
Olaoluwa Osuntokun
0e607c1939
lnwallet: during shutdown properly wait for all goroutines to exit
2016-04-24 12:39:43 -07:00
Olaoluwa Osuntokun
1e35018e89
lnwallet: fix compile errors against btcd's segwit branch
2016-04-12 21:37:08 -07:00
Olaoluwa Osuntokun
f9a8dcbc9c
lnwallet: add ListUnspentWitness to WalletController
...
This method has been added in order to allow lnd to collect eligible
unspent witness programs outputs from the wallet controller for use as
inputs to the funding transaction.
Additionally, the change address functions now also specify whether the
generated change address should be payable to a witness program or not.
2016-04-12 21:36:41 -07:00
Olaoluwa Osuntokun
10d52611cd
lnwallet: introduce WalletController interface as a "base wallet"
...
The WalletController will serve as a layer of separation between “base”
Bitcoin wallet logic, and the higher level Lightning Network logic. As
a result LightningWallet will no behave as an overly wallet, relying on
the lower wallet for basic services such as new address, signing etc.
Within this higher level lies the awareness of channel types, chain
monitoring, HTLCs, and so on.
2016-03-24 16:19:57 -07:00
Olaoluwa Osuntokun
7420503c7a
lnwallet: publicly export WaddrmgrEncryptorDecryptor
2016-03-24 14:32:44 -07:00
Olaoluwa Osuntokun
082a8a34e3
lnwallet: update tests and workflow to new OpenChannel struct
2016-03-24 00:01:35 -07:00
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
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
8feb86c4aa
multi: create lnd's logging infrastructure
2016-03-22 18:43:10 -07:00
mkl
e07086a523
Integrate basic configuration functionality
2016-03-22 13:28:56 -07:00
Olaoluwa Osuntokun
1944003fde
lnwallet: update to use new btcdnotify.NewBtcdNotifier API
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
Tadge Dryja
0d3639435f
can sync with segnet in hard mode
...
lots of changes but they seem to work
2016-02-15 22:13:17 -08:00
Olaoluwa Osuntokun
ab16933575
lnwallet: commit tx should have final sequence num
2016-02-05 20:24:32 -08:00
Olaoluwa Osuntokun
81a4887d11
lnwallet: move lockTimeToSequence to script_utils.go
2016-02-05 20:24:17 -08:00
Olaoluwa Osuntokun
fa05ee9a22
lnwallet: move pubKey comparison for funding output spend into spendMultiSig func
...
* This change makes the spendMultiSig function testable independent of
the reservation workflow.
2016-02-05 12:33:22 -08:00
Olaoluwa Osuntokun
4632894562
lnwallet: move teardown of rpctest before setup to ensure proper cleanup
...
* Previously, if the call to SetUp(..) returned an error, then the test
harness would fail to stop the running bcd process, and clean up the
test directories. This would cause any subsequent tests to fail. This
commit remedies this scenario.
2016-02-05 12:32:23 -08:00
Olaoluwa Osuntokun
1a8ae48807
lnwallet: point rpctest at my in-progress fork+branch
...
Fixes compilation issues for those not using my laptop :)
2016-02-03 12:05:53 -08:00
Olaoluwa Osuntokun
daeecd5fc0
lnwallet: nuke most of setup.go, no longer needed w/ wallet.Loader
2016-02-03 12:01:45 -08:00
Olaoluwa Osuntokun
b3cdc6167f
lnwallet: switch over to using btcwallet's new Loader type
...
Allows us to remove a lot of duplicated code pertaining to wallet
setup. We also gain hooks into the wallet to trigger callbacks once the
wallet is created/opened.
2016-02-03 12:01:45 -08:00
Olaoluwa Osuntokun
92c14c99c3
lnwallet: update tests to utilize the in-progress btcsuite/btcd/rpctest package
...
Instead of creating “fake” utxos for bob, and alice. We now employ a
dedicated mining node to hand out utxos, and generate blocks with hand
picked transactions.
2016-02-03 12:01:44 -08:00
Olaoluwa Osuntokun
7bebefbd8f
lnwallet: fix script bug, ensure sigScript is set before verification
2016-02-03 12:01:44 -08:00
Olaoluwa Osuntokun
74ee5334f4
lnwallet: allow configurable net param for wallet create/open
2016-02-03 12:01:44 -08:00
Olaoluwa Osuntokun
98bbd314a7
lnwallet: add active Bitcoin network to config
2016-02-03 12:01:44 -08:00
Olaoluwa Osuntokun
80ce49a883
lnwallet: update btcwallet and chain.Client to new upstream API's
...
A major change for btcwallet adding a new RPC wallet, refactoring parts
of the wallet, and introducing new functionality has been introduced.
This commit updates lnwallet to the API changes. A future commit will
change lnwallet to use some of the new functionality such as the
notification server, etc.
2016-02-03 12:01:44 -08:00
Olaoluwa Osuntokun
034cbef66d
lnwallet: avoid goroutines waiting for channel open indefinitely blocking
...
Select over the quit channel in order to shutdown goroutines waiting
for funding txn confirmations. Without this we may leak goroutines
which are blocked forever if the process isn’t exiting when the walet
is signaled to shutdown.
2016-02-03 12:01:44 -08:00
Olaoluwa Osuntokun
20d471a766
lnwalelt: add note for balance update ntfs
2016-02-03 12:01:44 -08:00
Olaoluwa Osuntokun
d96cf0ec64
lnwallet: fix receiver htlc script
...
* Fixes a bug in script_utils.go. CSV instead of CLTV was being used
within the timeout clause of the receivers HTLC (sender can reclaim
the HTLC).
2016-02-03 12:01:44 -08:00
Olaoluwa Osuntokun
0ce4fb1294
lnwallet: properly set transaction version on commit txs
2016-02-03 12:01:44 -08:00
Tadge Dryja
2815afebb7
update imports to github
2016-01-16 10:45:54 -08:00
Olaoluwa Osuntokun
07b0d5ca3e
lnwallet: once the reservation workflow is complete, wait then open the payment channel
...
* Hooks into the ChainNotifier infrastructure to receive a notification
once the funding transaction gets enough notifications.
* Still need to set up the notification grouting within a
LightningChannel to watch for uncooperative closures, and broadcasts
and revoked channel states.
2016-01-14 23:58:04 -08:00
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