Commit Graph

30 Commits

Author SHA1 Message Date
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
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
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
2b808724fb spend from wpkh works 2016-02-22 01:41:40 -08:00
Tadge Dryja
d8e62f6898 back to one adr[] slice
all adrs can be converted on the fly and displayed both ways.
in the actual UI this shouldn't happen though.

Also utxos are sorted and signed properly.  utxo selection
is still pretty low tech.
2016-02-19 01:24:23 -08:00
Tadge Dryja
fbd17846d4 split adrs up into two slices?
here is code to keep track of two sets of addresses -- the
regular ones and the witness ones.  But maybe those should be
merged becuase it's easy for other wallets to switch between them
and send to the same 20 byte pubkey hash but wintessified.
So maybe I'll change this stuff...
2016-02-19 00:32:22 -08:00
Tadge Dryja
e2dd892a4f add waitgroups to ingestBlock
seems to go a little faster but not much.
making ingest tx take a slice of txs would be faster probably.
but it seems network i/o is the limiting factor so maybe it's OK
2016-02-07 19:52:45 -08:00
Tadge Dryja
63b5926e01 add getalltxs, dup checks
Start of double spend detection for mempool and reorgs
2016-02-05 01:59:40 -08:00
Tadge Dryja
25d90f5345 reorganize lots of files, add rebroadcast
move methods to new files to keep things a bit organized.
add rebroadcast of unconfirmed txs after sync
mutex on OKtxid map
deal with doublespends next
2016-02-05 01:16:45 -08:00
Tadge Dryja
2f9fc87636 fix sync, remove sum from TxStore
Synchronization now seems to work well even with the rapid fire
many inv-block messages that I'm seeing often on testnet3.  I'm
not 100% sure measuring the len() of a buffered channel is safe
but it seems to work fine.
Got rid of 'sum' in the TxStore; can be computed from GetAllUtxos()
Might want to merge SCon and TxStore since there's not much going
on in TxStore any more...
2016-02-02 19:04:03 -08:00
Tadge Dryja
a9cf239ec3 fix readme, better state machine for sync 2016-02-02 17:14:13 -08:00
Tadge Dryja
e56b1993fc move ser/des from utxodb to txstore 2016-02-01 19:03:01 -08:00
Tadge Dryja
f231113b90 some cleanup, store spent txs
pretty much everything is db based now.  Still some concurrency issues
when multiple block inv messages come in (which they do) where
we used len(mBlockQueue) as a check for being synched up, which doesn't
quite work.  Find a better way to do that...
2016-01-31 15:02:38 -08:00
Tadge Dryja
cf01e02d64 fix dumb loop break error
break was outside the if bytes.Equal {}, oops.  only checked first output.
Works now.  Concurrency also seems OK but need to test more.
2016-01-31 02:08:39 -08:00
Tadge Dryja
3b774ef361 move tx ingest to all db, fixes sync
Sync was non-deterministic because ingest was concurrent.
Now receiving tx messages is blocking, but that's OK, they really need
to be in the right order because the whole point of bitcoin is to put
txs in the right order.  SendTx still has a problem that the change address
may not be recognized by ingest.
2016-01-31 01:05:31 -08:00
Tadge Dryja
6ef9dc3d4a not saying it works, but it works better
redo how db and header sync works, somewhat simpler but a little
recursve-ish.  There is still an off by 1 error somewhere with headers.
2016-01-28 19:35:49 -08:00
Tadge Dryja
d9afd623eb new stxo struct and more db methods
I'm getting away from having both in-ram and on-disk stores for the transaction store data.
it should all be on disk, it's safer that way.  It might be slower but this will not
process many txs / second anyway.
2016-01-27 01:24:16 -08:00
Tadge Dryja
851d3533e5 deals with incoming blocks and txs
gets stuck on reorgs though, until program is restarted
2016-01-22 17:15:56 -08:00
Tadge Dryja
01c35e62ab check for already known txs (due to reorg?) 2016-01-22 01:41:08 -08:00
Tadge Dryja
fbc424492d update filters as txs come in; missed some before 2016-01-21 21:50:42 -08:00
Tadge Dryja
9215c18113 keep track of addresses, check incoming txs for full pkscript match 2016-01-21 01:04:45 -08:00
Tadge Dryja
b7a2c46ea6 remove storage of pkscript; don't need it. 2016-01-20 22:57:05 -08:00
Tadge Dryja
73bbb29026 add keyfileio to manage private key storage on disk 2016-01-20 21:08:05 -08:00
Tadge Dryja
1f40c7214e good enough storage of spent txs 2016-01-20 01:23:47 -08:00
Tadge Dryja
29d0c0cc6f fix bolt slices. db read / write works.
also switch heights from uint32 to int32, which I guess is what they use.
Makes this thing last 2 billion blocks shorter.  If we get past uint32 time.
2016-01-19 23:40:04 -08:00
Tadge Dryja
0b5daa9b2b add utxodb for on disk storage of transactions. 2016-01-19 20:02:18 -08:00