Commit Graph

24985 Commits

Author SHA1 Message Date
Greg Fitzgerald c7de48c982 Convert log_events from function to method 2018-03-03 14:00:37 -07:00
Greg Fitzgerald f906112c03 Move logging thread's state into a struct 2018-03-03 13:52:57 -07:00
Greg Fitzgerald 8ef864fb39
Merge pull request #37 from garious/split-benchmark
Split benchmark
2018-03-03 12:13:54 -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 fbe64037db
Merge pull request #35 from garious/split-benchmark
Move key generation and signing from transaction benchmark
2018-03-03 11:25:58 -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 8871bb2d8e
Merge pull request #30 from garious/simplify
Unify Claim and Transaction handling
2018-03-02 12:24:44 -07:00
Greg Fitzgerald a148454376 Update readme 2018-03-02 12:07:05 -07:00
Greg Fitzgerald be518b569b Remove cyclic dependency between event and log 2018-03-02 12:03:59 -07:00
Greg Fitzgerald c998fbe2ae Sign the owner's public key
Without this, the accountant will reject transfers from different
entities if they are for the same amount and to the same entity.
2018-03-02 11:56:42 -07:00
Greg Fitzgerald 9f12cd0c09 Purge the Claim event type
It's now represented as a Transaction from an unknown party.
2018-03-02 11:48:58 -07:00
Greg Fitzgerald 0d0fee1ca1 Sign Claim's 'to' field
Otherwise, the accountant will treat deposits of the same amount as
duplicates.
2018-03-02 11:46:22 -07:00
Greg Fitzgerald a0410c4677 Pipe all Claim constructors through a function 2018-03-02 10:58:43 -07:00
Greg Fitzgerald 8fe464cfa3 Rename Claim's key field to match same field in Transaction 2018-03-02 10:47:21 -07:00
Greg Fitzgerald 3e2d6d9e8b Generalize Transaction to express a Claim
If a Transaction doesn't have an existing address, it's being used
to create new funds.
2018-03-02 10:41:15 -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 dfd1c4eab3 Don't process transaction if channel.send() fails.
Do all input validation first, then log (which can fail). If all
goes swimmingly, process the transaction.
2018-03-02 10:17:52 -07:00
Greg Fitzgerald 36bb1f989d More defense against a double-spend attack
Before this change, a client could spend funds before the accountant
processed a previous spend. With this change in place, the accountant
updates balances immediately, but that comes at an architectural cost.
The accountant now verifies signatures on behalf of the historian, so
that it can ensure logging will not fail.
2018-03-02 09:55:44 -07:00
Greg Fitzgerald 684f4c59e0 Delete commented out code
accountant crate shouldn't verify the log. Instead, it should
only add valid entries and leave verification to network nodes.
2018-03-02 08:51:29 -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 662e10c3e0
Merge pull request #29 from garious/simplify
Remove Discovery event
2018-03-01 18:53:25 -07:00
Greg Fitzgerald c935fdb12f Move signature duplicate detection into the historian 2018-03-01 17:44:10 -07:00
Greg Fitzgerald 9e16937914 Delete the Discovery event
Not useful to the accountant.
2018-03-01 17:02:41 -07:00
Greg Fitzgerald f705202381 No need to hash data that's already hashed to create the signature 2018-03-01 16:39:09 -07:00
Greg Fitzgerald f5532ad9f7
Merge pull request #28 from garious/go-udp
Switch to UDP
2018-03-01 14:25:20 -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 7111aa3b18
Copy disclaimer from the loom repository
Per @aeyakovenko, added Loom's disclaimer.
2018-03-01 09:16:39 -07:00
Greg Fitzgerald 12eba4bcc7
Merge pull request #26 from garious/add-accountant
Add testnode and client-demo
2018-02-28 19:48:05 -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
Greg Fitzgerald f3dd47948a
Merge pull request #25 from garious/verify-historian-input
Verify event signatures before adding log entries
2018-02-28 10:34:10 -07:00
Greg Fitzgerald c3bb207488 Verify event signatures before adding log entries 2018-02-28 10:23:01 -07:00
Greg Fitzgerald 9009d1bfb3
Merge pull request #24 from garious/add-accountant
Add accountant
2018-02-27 11:41:40 -07:00
Greg Fitzgerald fa4d9e8bcb Add more tests 2018-02-27 11:28:10 -07:00
Greg Fitzgerald 34b77efc87 Sleep longer for TravisCI 2018-02-27 11:08:28 -07:00
Greg Fitzgerald 5ca0ccbcd2 Add accountant 2018-02-27 10:54:06 -07:00
Greg Fitzgerald 6aa4e52480
Merge pull request #23 from garious/add-transaction
Generalize the event log
2018-02-26 17:40:55 -07:00
Greg Fitzgerald f98e9a2ad7 Fix overuse of search-and-replace 2018-02-26 17:03:50 -07:00
Greg Fitzgerald c6134cc25b Allow the historian to track ownership of any type of data 2018-02-26 17:01:22 -07:00
Greg Fitzgerald 0443b39264 Allow event log to hold events of any serializable (hashable) type 2018-02-26 16:42:31 -07:00
Greg Fitzgerald 8b0b8efbcb Allow Entry to hold events of any kind of data 2018-02-26 15:37:33 -07:00
Greg Fitzgerald 97449cee43 Allow events to hold any kind of data 2018-02-26 15:31:01 -07:00
Greg Fitzgerald ab5252c750 Move entry verification out of Entry impl 2018-02-26 14:39:01 -07:00
Greg Fitzgerald 05a27cb34d
Merge pull request #22 from garious/add-transaction
Extend the event log with a Transaction event to transfer possession
2018-02-26 11:26:58 -07:00
Greg Fitzgerald b02eab57d2 Extend the event log with a Transaction event to transfer possession
This implementation assumes 'from' is the current owner of 'data'.
Once that's verified, the signature ensures that nobody modified
'data' (the asset being transferred) or 'to' the entity taking
ownership.

Fixes #14
2018-02-26 11:09:11 -07:00