Commit Graph

485 Commits

Author SHA1 Message Date
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
Greg Fitzgerald d1948b5a00 Zip earlier
And remove redundant into_iter() calls.
2018-04-10 21:18:39 -06:00
Anatoly Yakovenko c934a30f66 commandline options for client and testnode 2018-04-09 21:14:52 -07:00
Anatoly Yakovenko f330739bc7 Recycler test should verifyt that its recycling 2018-04-07 07:08:42 -07:00
Greg Fitzgerald 584c8c07b8 Better symmetry
deserialize -> process -> serialize
2018-04-06 16:34:59 -06:00
Greg Fitzgerald a93ec03d2c Move creating blobs into its own function 2018-04-06 16:22:02 -06:00
Greg Fitzgerald 7bd3a8e004 Reduce cyclomatic complexity 2018-04-06 16:12:13 -06:00
Greg Fitzgerald 912a5f951e Why is msgs cloned here? 2018-04-06 15:58:11 -06:00
Greg Fitzgerald 6869089111 Parallelize deserialize 2018-04-06 15:52:58 -06:00
Greg Fitzgerald 6fd32fe850 Cleanup constants 2018-04-06 15:43:05 -06:00
Greg Fitzgerald 81e2b36d38 Cleanup packet_verify 2018-04-06 15:24:15 -06:00
Greg Fitzgerald 7d811afab1 Parallelize CPU sig verify 2018-04-06 15:21:49 -06:00
Greg Fitzgerald 5fc81dd6c8 Fix the nightly build
Nightly uses a different (but backward compatible) version of rustfmt.
2018-04-05 22:39:29 -06:00
Greg Fitzgerald 491a530d90 Support parallelization of arbitrary transactions
Still assumes witnesses are processed serially afterward.
2018-04-05 22:30:25 -06:00
Greg Fitzgerald c12da50f9b Fix race condition
Without this patch, it was possible for two transactions with the same
'from' address to drive its balance below zero. With the patch, we'll
hold a write lock from just before we verify sufficient funds until
after those funds are deducted from the account.
2018-04-05 22:30:25 -06:00
Greg Fitzgerald 41e8500fc5 Break up process_verified_transaction() 2018-04-05 22:29:13 -06:00
Stephen Akridge f4466c8c0a Change for cuda verify integration 2018-04-05 20:00:44 -07:00
Greg Fitzgerald 01326936e6 Expire all transactions after some amount of time
Reject old transactions so that we can calculate an upper bound
for memory usage, and therefore ensure the server won't slow
down over time to crash due to memory exhaustion.
2018-04-05 10:26:45 -06:00
Greg Fitzgerald c960e8d351 Reject transactions with a `last_id` that isn't from this ledger
Before this patch, a client could put any value into `last_id` and
was primarily there to ensure the transaction had a globally unique
signature. With this patch, the server can use `last_id` as an
indicator of how long its been since the transaction was created.
The server may choose to reject sufficiently old transactions so
that it can forget about old signatures.
2018-04-05 09:54:03 -06:00
Greg Fitzgerald 8d425e127b Update benchmark to avoid write locks in sig duplicate detection 2018-04-04 17:29:22 -06:00
Greg Fitzgerald 3cfb07ea38 Sort signatures by last_id
This will allow for additional concurrency as well as give the server
a means of garbage-collecting old signatures.
2018-04-04 17:06:31 -06:00
Greg Fitzgerald 76679ffb92 Per-cell locking
This allows us to use read-locks for balances most of the time. We
only lock the full table if we need to add one.
2018-04-04 16:31:13 -06:00
Greg Fitzgerald dc2ec925d7 Better test 2018-04-04 16:01:43 -06:00
Greg Fitzgerald 014bdaa355 Add benchmark for parallel transaction processing 2018-04-04 12:43:27 -06:00
Greg Fitzgerald 0c60fdd2ce Make accountant thread-safe
Before this change, parallel transaction processing required locking
the full accountant. Since we only call one method,
process_verified_transaction, the global lock equates to doing no
parallelization at all.  With this change, we only lock the data that's
being written to.
2018-04-04 12:33:03 -06:00
Anatoly Yakovenko 5ac7df17f9 Implement window service
Batch out of order blobs until we have a contigious window.
2018-04-03 13:53:19 -07:00
Greg Fitzgerald c323bd3c87 Fix clippy warnings 2018-04-03 09:55:33 -06:00
Greg Fitzgerald 2f80747dc7 Move tests
After we restructured for parallel verification, the tests here
were unreferenced by the accountant, but still meaningful to
transaction verification.
2018-04-02 21:45:21 -06:00
Greg Fitzgerald 94eea3abec fmt 2018-04-02 21:15:21 -06:00
Greg Fitzgerald fe32159673 Add a test to ensure witness data continues to be hashed 2018-04-02 21:07:38 -06:00
Greg Fitzgerald 07aa2e1260 Add witness data to entry hash
Otherwise, witnesses can be dropped or reordered by a malicious
generator.
2018-04-02 20:47:51 -06:00
Greg Fitzgerald 6fec8fad57 Adding from to the signature is redundant 2018-04-02 20:34:18 -06:00
Greg Fitzgerald 49708e92d3 Use last_id instead of seed
It doesn't really matter, but was confusing since the seed points
to an entry before the mint's deposit.
2018-04-02 15:06:42 -06:00
Greg Fitzgerald daadae7987 Move replaying ledger out of accountant 2018-04-02 14:51:55 -06:00
Greg Fitzgerald 2b788d06b7 Move the historian up to accountant_skel 2018-04-02 14:41:07 -06:00
Greg Fitzgerald 90cd9bd533 Move balance check so that log_* methods are only used to add logging 2018-04-02 14:14:49 -06:00
Greg Fitzgerald d63506f98c No longer allow deposits outside the constructor 2018-04-02 14:00:42 -06:00
Greg Fitzgerald 17de6876bb Add simpler accountant constructor 2018-04-02 13:51:44 -06:00
Greg Fitzgerald da2b4962a9 Move verify_slice() into a trait 2018-04-02 11:43:38 -06:00
Greg Fitzgerald 3abe305a21 Move reserve_signatures into accountant
Reasons Transaction signatures need to be unique:

1. guard against duplicates
2. accountant uses them as IDs to link Witness signatures to transactions via the
`pending` hash map
2018-04-02 09:38:36 -06:00
Greg Fitzgerald 46e8c09bd8 Revoke API access to first_id 2018-04-02 09:30:10 -06:00
Jackson Sandland 9f256f0929 94 - snakecase mod names 2018-03-30 13:10:27 -07:00
Jackson Sandland ef169a6652 94: source doc review 2018-03-30 10:43:38 -07:00
Greg Fitzgerald b8cf5f9427 Fix transaction logging 2018-03-29 13:50:32 -06:00
Greg Fitzgerald 2f1e585446 Better benchmark
Tolerates dropped UDP packets
2018-03-29 13:41:11 -06:00
Greg Fitzgerald 22f5985f1b Do request verification in parallel, and then process the verified requests 2018-03-29 13:18:08 -06:00
Greg Fitzgerald c59c38e50e Refactor for batch verification 2018-03-29 13:09:21 -06:00
Greg Fitzgerald 232e1bb8a3 Colocate packet dependencies 2018-03-29 12:55:41 -06:00
Greg Fitzgerald 1fbb34620c Fix compiler warning 2018-03-29 12:54:10 -06:00
Greg Fitzgerald 55179101cd Add more documentation 2018-03-29 12:20:54 -06:00
Greg Fitzgerald 878ca8c5c5 Add microbenchmark for signature verification 2018-03-28 22:02:47 -06:00
Greg Fitzgerald 4bc41d81ee Fix compiler warning 2018-03-28 21:05:21 -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 8642a41f2b See if Travis will tolerate executing some of the test 2018-03-28 10:25:16 -06:00
Greg Fitzgerald bf902ef5bc Ignore accountant_stub test
TODO: Figure out why this test fails on TravisCI
2018-03-28 10:05:00 -06:00
Greg Fitzgerald 116166f62d Rename project: silk -> solana 2018-03-27 16:25:12 -06:00
Greg Fitzgerald 7c9681007c Drop support for random access to the ledger
No longer store the ledger locally.
2018-03-27 14:47:03 -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 c64a9fb456 Give Travis a little more time to start threads 2018-03-26 22:02:05 -06:00
Greg Fitzgerald ee19b4f86e See if CI hangs because of wait_on_signature() 2018-03-26 21:53:30 -06:00
Anatoly Yakovenko 14239e584f fix writer 2018-03-26 21:36:29 -06:00
Anatoly Yakovenko c1783d77d7 fixed test 2018-03-25 16:18:27 -07:00
Anatoly Yakovenko f089abb3c5 fix bench 2018-03-25 15:37:00 -07:00
Anatoly Yakovenko 8e551f5e32 debug trait tests 2018-03-25 08:22:04 -07:00
Anatoly Yakovenko 290960c3b5 wip 2018-03-25 08:06:33 -07:00
Anatoly Yakovenko 62af09adbe wip 2018-03-25 08:05:03 -07:00
Anatoly Yakovenko e39c0b34e5 update 2018-03-25 00:06:48 -07:00
Anatoly Yakovenko 8ad90807ee responder with larger block size 2018-03-24 23:46:25 -07:00
Anatoly Yakovenko 533b3170a7 responder 2018-03-24 23:31:54 -07:00
Anatoly Yakovenko 7732f3f5fb services 2018-03-24 18:01:54 -07:00
Anatoly Yakovenko f52f02a434 services 2018-03-24 18:01:40 -07:00
Greg Fitzgerald 9a437f0d38 Revive silk-testnode 2018-03-23 21:49:28 -06:00
Greg Fitzgerald fa44be2a9d Ignore some clippy advice 2018-03-22 14:59:25 -06:00
Greg Fitzgerald 117ab0c141 Clippy review 2018-03-22 14:50:24 -06:00
Greg Fitzgerald 7488d19ae6 Clippy review 2018-03-22 14:40:28 -06:00
Greg Fitzgerald 60524ad5f2 Clippy review 2018-03-22 14:38:06 -06:00
Greg Fitzgerald fad7ff8bf0 Clippy review 2018-03-22 14:31:58 -06:00
Greg Fitzgerald 383d445ba1 Clippy review 2018-03-22 14:15:29 -06:00
Greg Fitzgerald 803dcb0800 Mutex<bool> -> AtomicBool 2018-03-22 14:05:23 -06:00
Greg Fitzgerald 8ea97141ea Update the test to replicate the ledger 2018-03-21 17:15:32 -06:00
Greg Fitzgerald 9f232bac58 Allow clients to sync the ledger
Fixes #4
2018-03-21 15:46:49 -06:00
Greg Fitzgerald 8295cc11c0 Move JSON printing up the stack 2018-03-20 23:15:44 -06:00
Greg Fitzgerald 9a7cac1e07 Use the Entry API to remove the double lookup 2018-03-20 18:07:54 -06:00
Greg Fitzgerald c584a25ec9 Move complete_transaction from method to function
So that we can hold separate mutable references to the pending queue
and the map of balances.
2018-03-20 17:47:57 -06:00
Greg Fitzgerald bff32bf7bc Cleanup 2018-03-20 17:32:02 -06:00
Greg Fitzgerald d0e7450389 Add docs 2018-03-20 16:58:14 -06:00
Greg Fitzgerald 4da89ac8a9 Cleanup naming 2018-03-20 16:53:41 -06:00
Greg Fitzgerald f7032f7d9a Cleanup: replace bool retval with is_complete() method 2018-03-20 16:52:47 -06:00
Greg Fitzgerald 7c7e3931a0 Better docs 2018-03-20 15:52:46 -06:00
Greg Fitzgerald 6be3d62d89 Remove Action from spending plans 2018-03-20 15:43:07 -06:00
Greg Fitzgerald 6f509a8a1e Reorder 2018-03-20 15:31:28 -06:00
Greg Fitzgerald 4379fabf16 PlanEvent -> Witness
The term used by the Simplicity smart contract language
2018-03-20 15:25:50 -06:00
Greg Fitzgerald c11a3e0fdc Move streamer benchmark out of unit tests 2018-03-19 17:10:01 -06:00
Greg Fitzgerald 8ee76bcea0 Fix benchmark build 2018-03-19 16:41:01 -06:00
Greg Fitzgerald 9238ee9572 No longer rename log crate 2018-03-19 10:18:51 -06:00
Greg Fitzgerald 64af37e0cd logger -> recorder
Free up namespace for a traditional runtime logger.
2018-03-19 10:16:21 -06:00
Greg Fitzgerald 9f9b79f30b log -> ledger
Free up namespace for traditional runtime logs.
2018-03-19 10:09:19 -06:00
Greg Fitzgerald 265f41887f asset -> tokens 2018-03-19 10:03:41 -06:00
Greg Fitzgerald 434f321336 Add spending plan tests 2018-03-18 21:02:28 -06:00
Greg Fitzgerald f4e0d1be58 Make conditions explicit in races
And boot recursive spending plans. That path required heap allocations.
Since we don't have a need for this generality right now, reduce the
language to the smallest one that can pass our test suite.
2018-03-17 20:43:05 -06:00
Greg Fitzgerald e5bae0604b Specialize transaction assets to i64
Proof-of-history is generic, but now that we're using it entirely
for tokens, we can specialize the type and start doing more interesting
things than just Eq and Serialize operations.
2018-03-17 19:56:15 -06:00
Greg Fitzgerald e7da083c31 Move spending plans to their own crate 2018-03-17 19:56:15 -06:00
Greg Fitzgerald 367c32dabe Guard spending plans, not just payments 2018-03-17 19:56:15 -06:00
Anatoly Yakovenko e8faf6d59a trait test 2018-03-14 11:28:05 -07:00
Anatoly Yakovenko baa4ea3cd8 wfmt 2018-03-14 11:14:40 -07:00
Anatoly Yakovenko 75ef0f0329 fix test 2018-03-14 11:02:38 -07:00
Anatoly Yakovenko eb94613d7d Use streaming socket interface within accountant
Pull messages from streamer process them and forward them to the sender.
2018-03-11 23:41:09 -05:00
Greg Fitzgerald 67f4f4fb49
Merge pull request #64 from garious/dumb-contracts
Entry-level smart contracts
2018-03-11 13:23:11 -06:00
Greg Fitzgerald 45765b625a Don't let users accidentally burn their funds either 2018-03-11 12:04:49 -06:00
Greg Fitzgerald aa0a184ebe Ensure the server isn't passed a Plan that spends more than is bonded 2018-03-11 11:53:45 -06:00
Anatoly Yakovenko c82b520ea8 remove unecessary returns 2018-03-11 11:45:17 -05:00
Anatoly Yakovenko 9d6e5bde4a ipv6 test with a separate flag 2018-03-11 11:22:21 -05:00
Greg Fitzgerald 0eb3669fbf cleanup timestamp processing 2018-03-11 00:30:01 -07:00
Greg Fitzgerald 30449b6054 cleanup sig processing 2018-03-11 00:11:08 -07:00
Greg Fitzgerald f5f71a19b8 First go at smart contracts
Needs lots of cleanup.
2018-03-10 22:00:48 -07:00
Anatoly Yakovenko 0135971769 Fast UdpSocket reader
* message needs to fit into 256 bytes
* allocator to keep track of blocks of messages
* udp socket receiver server that fills up the block as fast as possible
* udp socket sender server that sends out the block as fast as possible
2018-03-10 21:09:23 -06:00
Greg Fitzgerald 8579795c40 Ensure transactions won't get canceled after next refactor 2018-03-10 19:44:45 -07:00
Greg Fitzgerald 9d77fd7eec Store only spending plans, not full transactions 2018-03-10 18:35:10 -07:00
Greg Fitzgerald 8c40d1bd72 Move spending endpoints into expressions 2018-03-10 17:41:18 -07:00
Greg Fitzgerald 7a0bc7d888 Move smart contract fields into their own struct 2018-03-10 16:55:39 -07:00
Greg Fitzgerald 49281b24e5 Move Tick out of Event
Every Entry is now a Tick and the entries contain events.
2018-03-09 17:22:17 -07:00
Greg Fitzgerald a8b1980de4 Restore reorder attack test 2018-03-09 17:02:17 -07:00
Greg Fitzgerald cc9f0788aa Batch events
It's now a Tick that locks down event order. Before this change, the
event order would be locked down in the order the server sees it.

Fixes #59
Fixes #61
2018-03-09 16:16:33 -07:00
Greg Fitzgerald 957fb0667c Deterministic historian/accountant hashes
When in tick-less mode, no longer continuously hash on the
background thread. That mode is just used for testing and
genesis log generation, and those extra hashes are just noise.

Note that without the extra hashes, with lose the duration between
events. Effectively, we distinguish proof-of-order from proof-of-time.
2018-03-09 06:58:40 -07:00
Greg Fitzgerald 8d17aed785 Process timestamps as they are added 2018-03-08 15:39:03 -07:00
Greg Fitzgerald ad6665c8b6 Complete timestamp and signature transactions 2018-03-08 11:06:52 -07:00
Greg Fitzgerald 923162ae9d WIP: process timestamps 2018-03-08 10:19:54 -07:00