Commit Graph

40 Commits

Author SHA1 Message Date
Greg Fitzgerald
2f1e585446 Better benchmark
Tolerates dropped UDP packets
2018-03-29 13:41:11 -06:00
Greg Fitzgerald
878ca8c5c5 Add microbenchmark for signature verification 2018-03-28 22:02:47 -06:00
Greg Fitzgerald
0bec360a31 Revert TCP sync of ledger
The feature was too rushed. We technically don't need it until we
implement consensus. It'll come back another day (with many more tests!)
2018-03-28 20:16:15 -06:00
Greg Fitzgerald
98c0a2af87 tx confirmed/sec ---> tx processed/sec
Before this patch, we were waiting until the full log was
sent back across the wire, parsed, and interpreted. That was giving
us a metric of "transactions confirmed per second" instead of
"transactions processed per second". Instead, we'll just send one
tiny packet back with the balance. As soon as the balance is what
we expect it to be, we end the benchmark.
2018-03-28 16:51:21 -06:00
Greg Fitzgerald
849bced602 Fix up client demo 2018-03-28 14:40:58 -06:00
Greg Fitzgerald
27f29019ef Merge pull request #83 from garious/tcp-client
TCP subscription service
2018-03-28 13:19:38 -06:00
Greg Fitzgerald
116166f62d Rename project: silk -> solana 2018-03-27 16:25:12 -06:00
Greg Fitzgerald
13206e4976 Let clients subscribe to the ledger over TCP
TODO: Add more tests

Fixes #27
2018-03-27 14:46:24 -06:00
Greg Fitzgerald
ddb21d151d Nightly rustfmt
Format code with the nightly version of rustfmt, which sorts imports.
2018-03-26 22:03:28 -06:00
Greg Fitzgerald
383d445ba1 Clippy review 2018-03-22 14:15:29 -06:00
Greg Fitzgerald
9f232bac58 Allow clients to sync the ledger
Fixes #4
2018-03-21 15:46:49 -06:00
Greg Fitzgerald
5dd567deef Rename Genesis to Mint
Genesis is a story of creation. We should only use that term to
for the event log that bootstraps the system.
2018-03-07 17:08:15 -07:00
Greg Fitzgerald
491ba9da84 Add accessors to keypairs and signatures 2018-03-07 15:32:22 -07:00
Greg Fitzgerald
f09952f3d7 DRY up transaction signing
Cleanup the big mess I copy-pasted myself into.
2018-03-06 16:34:25 -07:00
Greg Fitzgerald
4376032e3a data -> asset
'data' is too vague.
2018-03-06 14:50:32 -07:00
Greg Fitzgerald
624c151ca2 Add signature module
Because things other than transactions can be signed.
2018-03-06 12:48:28 -07:00
Greg Fitzgerald
b019416518 Move verify into methods
A little overly-coupled to Serialize, but makes the code a lot tighter
2018-03-06 12:27:08 -07:00
Greg Fitzgerald
4fcd9e3bd6 Give Transaction its own module 2018-03-06 12:18:17 -07:00
Greg Fitzgerald
66bf889c39 Rename Transfer to Transaction
struct names should be nouns
2018-03-06 11:54:47 -07:00
Greg Fitzgerald
6543497c17 Move Transaction data into its own struct
This will allow us to add addition transfer types to the log.
2018-03-06 10:50:32 -07:00
Greg Fitzgerald
a4336a39d6 Initialize the testnode from a log
$ cargo run --bin silk-genesis-file-demo > demo-genesis.json
$ cat demo-genesis.json | cargo run --bin silk-genesis-block > demo-genesis.log
$ cat demo-genesis.log | cargo run --bin silk-testnode
2018-03-05 15:34:44 -07:00
Greg Fitzgerald
48c28c2267 Transactions now require a hash of the last entry they've seen
This ensures the transaction cannot be processed on a chain
that forked before that ID. It will also provide a basis for
expiration constraints. A client may want their transaction
to expire, and the generators may want to reject transactions
that have been floating in the ether for years.
2018-03-05 12:48:14 -07:00
Greg Fitzgerald
d76ecbc9c9 Don't block the server 2018-03-05 11:39:59 -07:00
Greg Fitzgerald
608def9c78 Consolidate imports 2018-03-04 07:28:51 -07:00
Greg Fitzgerald
9b26892bae Add a demo app to generate the genesis file 2018-03-04 01:21:40 -07:00
Greg Fitzgerald
572475ce14 Load the genesis block 2018-03-04 00:15:17 -07:00
Greg Fitzgerald
b8655e30d4 Make client-demo standalone
And remove deposit() methods from the API. Those should only be
used on the server to bootstrap.
2018-03-03 21:15:51 -07:00
Greg Fitzgerald
7cf0d55546 Remove optional 'from' field 2018-03-03 20:41:07 -07:00
Greg Fitzgerald
1c9b5ab53c Report performance of signature verification too 2018-03-03 11:59:34 -07:00
Greg Fitzgerald
c10faae3b5 More readable metrics 2018-03-03 11:52:50 -07:00
Greg Fitzgerald
2104dd5a0a Fix benchmark
Was measuring the creation of the iterator, not running it.
2018-03-03 11:45:23 -07:00
Greg Fitzgerald
d8c50b150c Move key generation and signing from transaction benchmark
Key generation, signing and verification are not the performance
bottleneck. Something is probably wrong here.
2018-03-03 11:11:46 -07:00
Greg Fitzgerald
32d677787b Reduce transactions sent by demo
We don't do retries yet, so keep tx count to something that won't
trigger any packet loss.
2018-03-02 10:35:38 -07:00
Greg Fitzgerald
1b77e8a69a Move Event into its own crate
The log crate was starting to be the catch-all for all things
related to entries, events, signatures, and hashes. This split
shows us that:

* Event depends only on signatures, not on hashes [directly]
* All event testing was done via log testing (shame on me)
* Accounting depends only on events
2018-03-02 08:43:57 -07:00
Greg Fitzgerald
570e71f050 Check for duplicate signatures
TODO: have client add recent hash to each message
2018-03-01 14:07:39 -07:00
Greg Fitzgerald
c9cc4b4369 Switch to UDP from TCP
And remove all the sleep()'ing around.
2018-03-01 13:47:53 -07:00
Greg Fitzgerald
4610de8fdd Switch to sync_channel to preserve order 2018-02-28 19:33:28 -07:00
Greg Fitzgerald
3fcc2dd944 Add testnode
Fixes #20
2018-02-28 18:05:20 -07:00
Greg Fitzgerald
8299bae2d4 Add accountant stub 2018-02-28 16:01:12 -07:00
Greg Fitzgerald
604ccf7552 Add network interface for accountant 2018-02-28 14:00:04 -07:00