Commit Graph

515 Commits

Author SHA1 Message Date
Greg Fitzgerald 803b76e997 More idiomatic Rust 2018-05-10 16:58:37 -06:00
Greg Fitzgerald 230d7c3dd6 Move all Request processing into thin_client_service 2018-05-10 16:58:37 -06:00
Greg Fitzgerald 4f629dd982 Add events socket instead of modifying the existing socket 2018-05-10 16:54:43 -06:00
Greg Fitzgerald 4fdd891b54 More precise function names 2018-05-10 16:54:43 -06:00
Stephen Akridge a80991f2b3 Fixes for serializing entries over blobs and reorg into ledger 2018-05-10 15:30:30 -07:00
Greg Fitzgerald 521ae21632
Merge pull request #193 from sakridge/serialize_entries_over_multiple_blobs
Serialize entries over multiple blobs
2018-05-10 13:53:48 -06:00
Jackson Sandland bcd6606a16 ecdsa.rs - panic cleanup 2018-05-09 18:19:23 -07:00
Jackson Sandland 52ebb88205 accountant.rs - simplify error messages 2018-05-09 18:16:37 -07:00
Jackson Sandland 1e91d09be7 crdt.rs - panic cleanup 2018-05-09 18:10:48 -07:00
Jackson Sandland 02c573986b historian / transaction updates 2018-05-09 17:22:14 -07:00
Jackson Sandland f2de486658 accountant.rs - panic cleanup 2018-05-09 17:19:12 -07:00
Stephen Akridge 900b4f2644 Serialize entries over multiple blobs 2018-05-09 16:03:47 -07:00
Greg Fitzgerald 801468d70d Fix nightly 2018-05-09 16:51:34 -06:00
Greg Fitzgerald 7ce11b5d1c Cleanup: use full words for field names
and optionally for variable names
2018-05-09 16:19:42 -06:00
Greg Fitzgerald f2d4799491 Cleanup: field names should be nouns 2018-05-09 16:14:40 -06:00
Greg Fitzgerald ebc458cd32 Remove redundant Arcs 2018-05-09 15:45:10 -06:00
Greg Fitzgerald 43cd631579 Add thin_client_service 2018-05-09 14:56:34 -06:00
Greg Fitzgerald bc824c1a6c Reference count the accountant
So that the thin client can reference the AccountingStage's accountant
from separate threads.
2018-05-09 14:33:20 -06:00
Greg Fitzgerald 4223aff840 Remove useless ref counts 2018-05-09 14:25:52 -06:00
Greg Fitzgerald f107c6c2ca Don't wrap thread-safe objects with mutexes 2018-05-09 14:21:42 -06:00
Greg Fitzgerald 7daf14caa7 Don't depend on client from server 2018-05-09 13:33:33 -06:00
Greg Fitzgerald ded28c705f Tuck away the Historian
The Historian is now just a utility of the accounting stage.
2018-05-09 12:25:19 -06:00
Greg Fitzgerald 778bec0777 Intercept historian output from accounting stage
We were accessing the accountant from multiple stages just to
register the ID the historian adds to Events.

This change should cause a whole lot of Arcs and Mutexes to go away.
2018-05-09 12:00:37 -06:00
Greg Fitzgerald 6967cf7f86 Boot sync_channel()
This is less useful now that we send Vec<Event> instead of Event.
2018-05-09 11:43:16 -06:00
Greg Fitzgerald 0ee3ec86bd Fix nightly 2018-05-09 10:48:56 -06:00
Greg Fitzgerald e4c47e8417 Use AccountingStage in Tpu 2018-05-09 10:31:23 -06:00
Greg Fitzgerald 98ae80f4ed Hoist historian 2018-05-09 09:26:58 -06:00
Greg Fitzgerald 876c77d0bc Extract accounting stage code from tpu 2018-05-09 09:22:46 -06:00
Greg Fitzgerald d44a6f7541 Move Accounting stage functionality into its own object 2018-05-09 09:03:00 -06:00
Greg Fitzgerald 9040c04d27 Remove redundant Tick 2018-05-09 08:18:52 -06:00
Greg Fitzgerald ebbdef0538 Ignore flakey test 2018-05-09 08:16:59 -06:00
Greg Fitzgerald bfbee988d0 No longer wait for a Tick signal to record events 2018-05-09 08:15:51 -06:00
Greg Fitzgerald 1d4d0272ca Drop support for logging a single event 2018-05-09 08:12:33 -06:00
Greg Fitzgerald 77a76f0783 Record a batch of events 2018-05-09 08:11:19 -06:00
Greg Fitzgerald d9079de262 Add a way of sending a batch of events 2018-05-09 08:05:40 -06:00
Greg Fitzgerald b3d732a1a1 No longer artificially limit the size of entries
Instead, serialize the entries and split them up over multiple
blobs.
2018-05-09 07:59:55 -06:00
Greg Fitzgerald 52f1a02938 Delete historical artifact
This was just to explain Proof of History. We have better explanations
elsewhere. Delete!
2018-05-09 07:53:24 -06:00
Jackson Sandland fe51669e85 signature.rs - panic cleanup 2018-05-08 23:21:45 -07:00
Jackson Sandland 670a6c50c9 event.rs - panic cleanup 2018-05-08 22:58:48 -07:00
Jackson Sandland 86c1aaf7d8 transaction.rs - panic cleanup 2018-05-08 22:46:22 -07:00
Jackson Sandland 658e787b60 timing.rs panic cleanup 2018-05-08 22:40:07 -07:00
Robert Kelly 40c50aef50 deterministic random wallet generationg 2018-05-09 00:07:19 -04:00
Greg Fitzgerald 1dca17fdb4 cargo +nightly fmt 2018-05-08 18:59:01 -06:00
Greg Fitzgerald 785e971698 AccountantSkel -> Tpu
The terms Stub and Skel come from OMG IDL and only made sense while
the Stub was acting as an RPC client for the the Accountant object.
Nowadays, the Stub interface looks nothing like the Accountant and
meanwhile we've recognized the multithreaded implementation is more
reminiscent of a pipelined CPU. Thus, we finally bite the bullet and
rename our modules.

AccountantSkel -> Tpu
AccountantStub -> ThinClient

Up next will be moving much of the TPU code into separate modules,
each representing a stage of the pipeline. The interface of each
will follow the precedent set by the Historian object.
2018-05-08 17:40:02 -06:00
Greg Fitzgerald 2bfa20ff85
Merge pull request #182 from garious/split-request
Control port prep
2018-05-08 17:11:34 -06:00
Greg Fitzgerald 474a9af78d
Merge pull request #187 from sakridge/fix_blob_size_check
Trust the recorder not to give us more than we can serialize
2018-05-08 17:11:18 -06:00
Stephen Akridge 4870def1fb Fix default client port, server uses 8000-8002 for gossip. 2018-05-08 15:40:55 -07:00
Stephen Akridge 3e73fb9233 Trust the recorder not to give us more than we can serialize
Also run client for 10 seconds, 5 is bit too short
2018-05-08 15:23:41 -07:00
Stephen Akridge bd0671e123 Rework sig processing threads and add perf for process/verify 2018-05-08 11:49:29 -07:00
Greg Fitzgerald 9ff1a6f0cd Add a thread to support thin clients 2018-05-07 21:44:44 -06:00
Greg Fitzgerald 62bb78f58d Prepwork to hoist processing requests 2018-05-07 15:09:08 -06:00
Greg Fitzgerald 893011c3ba Process events instead of processing only transactions
Prep work to allow clients to send any type that can end up in
the ledger.
2018-05-07 14:51:13 -06:00
Anatoly Yakovenko 85f83f2c74 fmt 2018-05-06 22:29:33 -07:00
Anatoly Yakovenko 4751e459cc fixed! 2018-05-06 22:25:05 -07:00
Anatoly Yakovenko 138efa6cec fixed constant 2018-05-06 22:06:19 -07:00
Anatoly Yakovenko a68e50935e useless timeouts i think 2018-05-06 21:48:46 -07:00
Stephen Akridge e8f5fb35ac Multinode fixes and test
* Replace magic numbers for 64k event size
* Fix gossip, dont ping yourself
* Retransmit only to listening nodes
* Multinode test in stub marked unstable
2018-05-06 21:36:06 -07:00
Greg Fitzgerald e162f24119 Limit 256 events per entry
Attempt to keep blob size under 64kb
2018-05-04 11:52:05 -06:00
Stephen Akridge 2d5313639a Factor out entry processing and fix replicate test to call global setup fn 2018-05-03 22:24:30 -07:00
Stephen Akridge 888c2ffb20 Fix bind so we can talk on external interfaces and surface send error 2018-05-03 17:05:02 -07:00
Stephen Akridge 2cdd515b12 Compiles/fmt and add assert for forward progress 2018-05-03 14:58:08 -07:00
Anatoly Yakovenko 0aad71d46e fix entry serialize 2018-05-03 14:35:04 -07:00
Greg Fitzgerald 68c7f992fa Sooth all versions of rustfmt 2018-05-03 13:56:10 -06:00
Greg Fitzgerald 1feff408ff Implement get_last_id() with transaction_count()
This is more precice than the previous implementation because it'll
drain the EntryInfo queue and return the most recent last_id instead
of the first one.
2018-05-03 13:34:57 -06:00
Greg Fitzgerald f752e02487 Implement GetLastId with EntryInfo subscription 2018-05-03 13:31:43 -06:00
Greg Fitzgerald c9c7fb0a27 Update comment
The last PR added a thread that logs entries without needing to
be driven by the client.
2018-05-03 13:27:37 -06:00
Greg Fitzgerald de680c2a8e Remove duplicate state 2018-05-03 13:24:37 -06:00
Anatoly Yakovenko c2e2960bf7 Add broadcast impl 2018-05-03 10:34:01 -07:00
Greg Fitzgerald 385d2a580c Merge pull request #168 from aeyakovenko/fix_multi_host_client_demo
multi host client demo
2018-05-03 10:21:41 -06:00
Greg Fitzgerald ae29c9b4a0 Fix nightly build 2018-05-03 09:38:59 -06:00
Anatoly Yakovenko 078f917e61 useless assert 2018-05-03 08:34:57 -07:00
Anatoly Yakovenko b65f04d500 multi host client demo
Bind to the same interface as the user supplied client address.
2018-05-03 08:28:11 -07:00
Greg Fitzgerald 4b9f115586 Hoist Historian input 2018-05-02 16:35:37 -06:00
Greg Fitzgerald c5cc91443e Rename sender/receiver to input/output 2018-05-02 15:54:53 -06:00
Greg Fitzgerald 48d94143e7 Fix CI 2018-05-02 11:05:11 -06:00
Robert Kelly 63cf6363a2 more rustfmt 2018-05-02 12:24:25 -04:00
Robert Kelly cc6de605ac rustfmt 2018-05-02 12:21:20 -04:00
Robert Kelly d0151d2b79 restored original test logic 2018-05-02 12:07:42 -04:00
Robert Kelly 6b45d453b8 modified verification map 2018-05-02 10:44:41 -04:00
Robert Kelly b992a84d67 modified verification to loop until success or failure 2018-05-02 10:15:08 -04:00
Robert Kelly cb362e9052 rust format 2018-05-01 16:38:15 -04:00
Robert Kelly ccb478c1f6 improved error handling and atomic transactions 2018-05-01 16:38:15 -04:00
Greg Fitzgerald edf6272374
Merge pull request #154 from sakridge/replicator
Replicator
2018-04-27 14:30:52 -06:00
Stephen Akridge 7f6a4b0ce3 Deserialize the Entry structs and process them 2018-04-27 13:15:19 -07:00
Stephen Akridge 3be5f25f2f Work on test_replicate to test replicate service
generate some messages to send to replicator service
2018-04-27 08:21:34 -07:00
Stephen Akridge 1b6cdd5637 Fix some compilation issues 2018-04-27 08:21:34 -07:00
Anatoly Yakovenko f752e55929 update 2018-04-27 08:21:34 -07:00
Anatoly Yakovenko ebb089b3f1 wip 2018-04-27 08:21:34 -07:00
Anatoly Yakovenko ad6303f031 docs 2018-04-27 08:21:34 -07:00
Anatoly Yakovenko 828b9d6717 docs 2018-04-27 08:21:34 -07:00
Anatoly Yakovenko 444adcd1ca update 2018-04-27 08:21:34 -07:00
Anatoly Yakovenko 69ac305883 wip 2018-04-27 08:21:34 -07:00
Anatoly Yakovenko 2ff57df2a0 state replication 2018-04-27 08:21:34 -07:00
Greg Fitzgerald 7077f4cbe2
Merge pull request #128 from garious/faster-demo
Utilize parallelized accountant in demo
2018-04-27 08:47:42 -06:00
Anatoly Yakovenko d90ab90145 bind to all 2018-04-26 13:54:29 -07:00
Anatoly Yakovenko 48018b3f5b docs 2018-04-26 13:50:57 -07:00
Anatoly Yakovenko 15584e7062 recover full network from a star 2018-04-26 13:48:42 -07:00
Greg Fitzgerald d415b17146 sleepless demo to complement sleepless nights
18 ktps on macbook pro, no gpu
2018-04-26 13:17:38 -06:00
Greg Fitzgerald 9ed953e8c3 Fix rebase fails 2018-04-26 09:35:10 -06:00
Greg Fitzgerald b60a98bd6e Startup log can reference IDs without itself 2018-04-26 08:42:34 -06:00
Greg Fitzgerald a15e30d4b3 Report transactions processed 2018-04-26 08:42:34 -06:00
Greg Fitzgerald d5d133353f Port blocking stub functions to new stateful ones 2018-04-26 08:42:34 -06:00
Greg Fitzgerald 6badc98510 Add low-level response-handling functions to skel 2018-04-26 08:42:34 -06:00
Greg Fitzgerald ea8bfb46ce Add a way to subscribe for new entry metadata 2018-04-26 08:42:34 -06:00
Greg Fitzgerald 58860ed19f WIP: New demo that makes better use of the parallelized accountant 2018-04-26 08:42:34 -06:00
Greg Fitzgerald 583f652197 Generate genesis log for the demo
This log contains a bunch of transactions that generate new
accounts, so that transactions to and from them can be processed
in parallel.
2018-04-26 08:42:34 -06:00
Greg Fitzgerald 38fdd17067 Add initializing log message to server
Handy when gesesis block is large.
2018-04-26 08:42:34 -06:00
Greg Fitzgerald 807ccd15ba Add solana-mint-demo CLI
This extends solana-mint with additional data that will be used by
both solana-client-demo and creating the demo's genesis block.
2018-04-26 08:42:34 -06:00
Greg Fitzgerald 1c923d2f9e Fix entry hash when no events and num_hashes is one 2018-04-26 08:42:34 -06:00
Greg Fitzgerald 2676b21400
Merge pull request #151 from rlkelly/139__forget_signature
added forget_signature method
2018-04-26 08:28:11 -06:00
Robert Kelly fd5ef94b5a added forget signature method 2018-04-26 07:22:11 -04:00
Robert Kelly 34d1805b54 Add FutureResult to return a Future that immediately resolves 2018-04-25 19:23:24 -07:00
Anatoly Yakovenko 55b8d0db4d cleanup 2018-04-23 23:33:21 -07:00
Anatoly Yakovenko 3d7969d8a2 initial crdt implementation 2018-04-23 23:06:28 -07:00
rleungx 3da1fa4d88 improve the error messages 2018-04-21 21:52:55 +08:00
Greg Fitzgerald 10a0c47210
Merge pull request #137 from garious/linux-hang
Workaround linux hang
2018-04-19 11:46:48 -06:00
Stephen Akridge 8181bc591b Add -h/--help options for client-demo and testnode 2018-04-19 10:22:31 -07:00
Greg Fitzgerald c6048e2bab Workaround linux hang
Without this patch, Linux systems would hang when running the demo.

The root cause (why Linux is acting differently than macOS) was
not determined, but we know the problem is caused by a known
issue in the transaction pipeline - that entries are not pulled
off the historian channel until after the full transaction batch
is processed. This patch makes the sync_channel large enough that
it should never block on a gigabit network.
2018-04-19 10:04:32 -07:00
rleungx 60015aee04 report serde parse errors to stderr 2018-04-19 23:51:57 +08:00
Greg Fitzgerald 43e6741071
Merge pull request #134 from rleungx/report-parse-errors-to-stderr
report parse errors to stderr
2018-04-19 08:38:38 -06:00
rleungx b91f6bcbff report parse errors to stderr 2018-04-19 22:24:46 +08:00
kwangin 13a2f05776 Remove out for immutable variable 2018-04-19 23:00:16 +09:00
Stephen Akridge dea5ab2f79 Add erasure rust logic under feature flag 2018-04-18 19:42:09 -07:00
Anatoly Yakovenko 29f3230089 docs 2018-04-17 19:53:18 -07:00
Anatoly Yakovenko d003efb522 fix docs 2018-04-17 19:52:46 -07:00
Anatoly Yakovenko 97e772e87a docs 2018-04-17 19:46:50 -07:00
Anatoly Yakovenko 0b33615979 udpate 2018-04-17 12:48:06 -07:00
Anatoly Yakovenko 249cead13e docs 2018-04-17 11:07:43 -07:00
Anatoly Yakovenko 7c96dea359 fmt 2018-04-17 11:05:35 -07:00
Anatoly Yakovenko 374c9921fd comments 2018-04-17 11:05:15 -07:00
Anatoly Yakovenko fb55ab8c33 format 2018-04-16 21:02:37 -07:00
Anatoly Yakovenko 13485074ac test cast 2018-04-16 20:57:15 -07:00
Anatoly Yakovenko 4944c965e4 update
heap

update

update

wip

use a vec and sort

builds

update

tests

update

fmt

update

progress

fmt

passes needs retransmit test

tests

cleanup

update

update

update

update

fmt
2018-04-16 20:33:09 -07:00
Greg Fitzgerald 7fc42de758 Fix bench 2018-04-13 00:36:23 -04:00
Greg Fitzgerald 0a30bd74c1 Tell verifiers when not to parallelize accounting
Without this patch, many batches of transactions could be tossed
into a single entry, but the parallelized accountant can only
guarentee the transactions in the batch can be processed in
parallel.

This patch signals the historian to generate a new Entry after
each batch. Validators must maintain sequential consistency
across Entries.
2018-04-12 21:08:53 -06:00
Greg Fitzgerald 9b12a79c8d cargo +nightly fmt 2018-04-12 17:04:11 -06:00
Stephen Akridge 8dc15b88eb Add skel test which sends a bad transaction, verify it doesn't make it 2018-04-12 15:01:59 -07:00
Anatoly Yakovenko c2eeeb27fd bump timer 2018-04-12 11:12:10 -07:00
Anatoly Yakovenko 180d8b67e4 requests to packets function 2018-04-12 10:44:09 -07:00
Greg Fitzgerald 51633f509d Fix test
The test was meant to ensure the signature covered the 'tokens'
field, but then when the 'plan' field was rolled in, Transaction::verify()
started failing because Plan::verify() failed. When Transaction::verify()
was split into two, the unexpected failure was exposed but went unnoticed.
This patch brings it back to its original intent, to ensure signature
verification fails if the network attempts to change the client's payment.
2018-04-11 22:17:21 -06:00
Greg Fitzgerald 705228ecc2 Remove redundant signs 2018-04-11 22:17:21 -06:00
Greg Fitzgerald 3b9ef5ccab Fix the nightly build 2018-04-11 20:24:14 -06:00
Greg Fitzgerald be9a670fb7 Add process_packets() benchmark 2018-04-11 18:02:45 -06:00
Greg Fitzgerald 6e43e7a146 Enable parallelized accountant 2018-04-11 18:01:59 -06:00
Greg Fitzgerald ab2093926a
Merge pull request #120 from aeyakovenko/fix_bench_compile
fix compile error
2018-04-11 18:01:13 -06:00
Anatoly Yakovenko 2ef3db9fab fix compile error 2018-04-11 15:40:25 -07:00
Stephen Akridge 6987b6fd58 Add tests for ecdsa sig checking 2018-04-11 12:29:44 -07:00
Greg Fitzgerald 50ccecdff5 Refactor 2018-04-11 09:02:33 -06:00
Greg Fitzgerald e838a8c28a Delete unused function 2018-04-10 21:56:13 -06:00
Greg Fitzgerald e5f7eeedbf Use iterators 2018-04-10 21:48:26 -06:00