Commit Graph

67 Commits

Author SHA1 Message Date
Larry Ruane bdaac63f3e improve reorg by using getbestblockhash 2021-08-30 16:41:24 -06:00
Larry Ruane b1f3687d83 add MempoolStream unit test 2021-07-29 13:47:53 -06:00
Larry Ruane 6357f7f15b Refactor mock Sleep, add mock Now time function
Instead of the Sleep function pointer being a standalong global
variable, move it into a new Time struct, and add a Now function
pointer, so that time.Now() can be mocked. Time.Now() isn't used yet.
This will be cleaner if we need to mock more time-related functions in
the future.
2021-07-29 13:47:53 -06:00
Larry Ruane 503b9b256b modifications to adityapk00 mempool streaming API
This commit is based on adityapk00 streaming mempool interface but
avoids using goroutines, which are difficult to reason about.

Co-authored-by: Aditya Kulkarni <adityapk@gmail.com>
2021-07-29 13:47:53 -06:00
Aditya Kulkarni c3e1b98d4f Mempool Streaming API 2021-07-29 13:47:53 -06:00
Larry Ruane a4cc08b89e GetBlockRange: allow start < end, return blocks in reverse order 2021-05-18 15:38:26 -06:00
Larry Ruane 4e561f2cfd add darksidewallet support for GetAddressUtxos
Add a new darksidewallet gRPC to add a utxo that can be returned by the
production GetAddressUtxos, for example:

grpcurl -plaintext -d '{"address":"t1g1HQJuwDoStGrYYLj8VhLu1J5igd8TNXV","txid":"1zjB42Z7FtwRZOBNMlTubCgx9l3dsZSqXxmWpuZXJto=","script": "dqkU8saQsCVS4mNwcByoGCtfOaHFaCiIrA==","valueZat": "3010000","height": "686773"}' localhost:9067 cash.z.wallet.sdk.rpc.DarksideStreamer/AddAddressUtxo

Then the following returns this entry:

grpcurl -plaintext -d '{"startHeight":0,"maxEntries":2,"addresses":["t1g1HQJuwDoStGrYYLj8VhLu1J5igd8TNXV"]}' localhost:9067 cash.z.wallet.sdk.rpc.CompactTxStreamer/GetAddressUtxos

You can also clear the list of entries:

grpcurl -plaintext localhost:9067 cash.z.wallet.sdk.rpc.DarksideStreamer/ClearAddressUtxo
2021-04-26 11:42:03 -06:00
Larry Ruane dcad72ed25 generalize GetAddressUtxos to accept taddr list 2021-04-08 11:22:12 -06:00
Larry Ruane ad739ce055 allow Ping testing grpc only if explicitly enabled 2021-03-08 12:25:02 -07:00
Larry Ruane 5c5c4b882f check disk write return values 2021-03-08 11:21:33 -07:00
Larry Ruane c7c5da1fda don't log method names to stderr unless --grpc-logging-insecure 2021-03-08 11:12:26 -07:00
Larry Ruane a69537cf2b restore coinbase height check
The reason that it had to be disabled has gone away. This provides more
security by ensuring that the blocks we receive from zcashd are valid.
2021-01-15 16:49:22 -07:00
Larry Ruane 82045d493a fix GetTaddressBalance (json problem) 2021-01-15 14:05:27 -07:00
Larry Ruane 97d57395b2 fix GetTaddressTxids() 2021-01-12 16:18:29 -07:00
Larry Ruane d7f35f2713 fix database file location bug introduced by PR320
PR 320 introduced a bug that causes the `blocks` and `lengths` database
files to be located one directory level higher than it they should be.

The bug doesn't cause any functional problem, it only makes the
lightwalletd do more work (re-download the block cache), and it also
makes it not possible to switch between testnet and mainnet.

This patch locates the database files back where they belong.
2021-01-11 12:19:51 -07:00
Larry Ruane 33e7312218 add zcashd versioning to GetLightdInfo result 2020-12-03 22:55:08 -07:00
Larry Ruane 063287888f add more version information to GetLightdInfo result 2020-10-06 10:03:37 -06:00
Larry Ruane ac1bf8481c refactor Reverse(), no functional changes 2020-09-14 10:31:17 -06:00
Larry Ruane 7381129740 add GetMempoolTx() 2020-09-10 14:01:01 -06:00
Larry Ruane 1c6d8a46f7 gracefully handle syncing zcashd (no REORG) 2020-06-26 08:35:35 -06:00
Ben Wilson 63f01502e8 Added option to provide Zcashd RPC parameters from flags 2020-06-08 09:03:21 -04:00
Larry Ruane ead5415693 bump version to 0.4.1, release notes, small fixes 2020-06-05 17:16:36 -06:00
Larry Ruane 31a19484e2
Improve error checking, README improvements (#278)
Deserialize blocks and transactions as they are staged, to catch errors
earlier (such as trying to stage transactions as blocks), improve logging,
improve error handling (don't crash if ApplyStaged is given a height
that's higher than one beyond the latest active block).
2020-06-03 19:18:04 -06:00
Larry Ruane faca1ecbef
increase the 252 per-block transaction limit (#273) 2020-06-03 18:58:26 -06:00
Taylor Hornby 2d8a55c53f Fix missing hex encoding of darksidewalletd's sendrawtransaction response 2020-05-28 16:05:43 -06:00
Larry Ruane b47c0ddf99 fix corruption detector, smallest block is 74 bytes, not 78 2020-05-22 08:30:03 -06:00
Larry Ruane 1dd63f2ca8 add --darkside-timeout option to override 30-minute default shutdown 2020-05-21 11:48:03 -06:00
Larry Ruane 0217670d8c add logging for darkside rpcs 2020-05-21 11:48:03 -06:00
Larry Ruane 007dbbf13c fix first block hash 2020-05-21 11:48:03 -06:00
Larry Ruane 2f0b2054ba Fix transaction staging
The following works:

grpcurl -plaintext -d '{"saplingActivation": 663150,"branchID": "bad", "chainName":"x"}' localhost:9067 cash.z.wallet.sdk.rpc.DarksideStreamer/Reset
grpcurl -plaintext -d '{"height":663150,"nonce":5,"count":3}' localhost:9067 cash.z.wallet.sdk.rpc.DarksideStreamer/StageBlocksCreate
grpcurl -plaintext -d '{"height":663152,"url":"https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/transactions/t-shielded-spend"}' localhost:9067 cash.z.wallet.sdk.rpc.DarksideStreamer/StageTransactions
grpcurl -plaintext -d '{"height":663152}' localhost:9067 cash.z.wallet.sdk.rpc.DarksideStreamer/ApplyStaged
grpcurl -plaintext -d '{"height":663152}' localhost:9067 cash.z.wallet.sdk.rpc.CompactTxStreamer/GetBlock
(shows the block with one transaction)
2020-05-21 11:48:03 -06:00
Larry Ruane 7ac1a3f983 small improvements to transaction stuff, small fixes 2020-05-21 11:48:03 -06:00
Larry Ruane 3defdcd1ee Improve error handling 2020-05-21 11:48:03 -06:00
Larry Ruane f8794dbe05 update submitblocks.sh, return an error if GetBlock height is too low, instead of crashing 2020-05-21 11:48:03 -06:00
Larry Ruane 39348100a9 fix StageTransactions, vendor = ECC LightWalletD 2020-05-21 11:48:03 -06:00
Larry Ruane 391e886afc better error handling, remove unused DarksideTx 2020-05-21 11:48:03 -06:00
Larry Ruane 7420d565a8 don't special-case darkside in SendTransaction, just use the mock rpc handler 2020-05-21 11:48:03 -06:00
Larry Ruane 3bada32bee fixes on last commit, especially StageBlocksCreate 2020-05-21 11:48:03 -06:00
Larry Ruane f1e793796f implement staging, not well tested 2020-05-21 11:48:03 -06:00
Larry Ruane 52ac837370 New "staging" api (StageBlocks, StageTransactions, ApplyStaged)
Also remove the initial block load (all blocks will come from the
Staging APIs), but there is still more to do (this does not even
start up correctly) but darkside.proto is correct, we believe.
2020-05-21 11:48:03 -06:00
Larry Ruane c8ee805933 remove Blockchaininfo json type assertions, no functional change 2020-05-21 11:48:03 -06:00
Larry Ruane 38d71a8f1d don't sleep 1s for reorg, wait 2s for new blocks 2020-05-21 11:48:03 -06:00
Larry Ruane d7e1005523 DarksideAddBlock(): remove generation of correct prevhash 2020-05-21 11:48:03 -06:00
Larry Ruane 9371f984ae GetBlockRange: don't pass mutex in channel (linter warning) 2020-05-21 11:48:03 -06:00
Larry Ruane 22d5c97e7f SetBlocksURL: replace curl with http client 2020-05-21 11:48:03 -06:00
Larry Ruane d08d8980a8 add support for gRPC GetTransaction() (mined tx) 2020-05-21 11:48:03 -06:00
Larry Ruane e3aca9bec7 review comment: 30-minute shutdown improvement
Safer to shutdown darksidewalletd directly after 30 minutes, instead
of waiting for a zcashd rpc to occur (darksideRawRequest());
also using a goroutine is simpler.
2020-05-21 11:48:03 -06:00
Larry Ruane 5e37f408e3 address review comments 2020-05-21 11:48:03 -06:00
Larry Ruane 86fd87404b add darkside SetMetaState, SetBlocksURL for reorg testing 2020-05-21 11:48:03 -06:00
Larry Ruane f4d5d8e4b2 if corruption detected, save db files for analysis 2020-04-24 16:55:47 -06:00
Larry Ruane c2a6306ce5 Misc cleanups and fixes
- improved corruption recovery (don't back up by just 1 block at a time)
- move darksidewallet gRPCs to their own .proto file
- this force-push removes my commits for reorg testing using SetState
2020-04-24 16:55:47 -06:00