118 Commits

Author SHA1 Message Date
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
11a0f96f5e Add command-line tool for generating a genesis block 2018-03-03 17:35:05 -07:00
Greg Fitzgerald
bebba7dc1f Give logger its own crate 2018-03-03 14:24:32 -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
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
5ca0ccbcd2 Add accountant 2018-02-27 10:54:06 -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
08e501e57b Extend the event log with a Claim event to claim possession
Unlike a Discovery event, a Claim event associates a public key
with a hash. It's intended to to be used to claim ownership of
some hashable data. For example, a graphic designer could claim
copyright by hashing some image they created, signing it with
their private key, and publishing the hash-signature pair via
the historian. If someone else tries to claim it as their own,
the designer can point to the historian's log as cryptographically
secure evidence that the designer's copy existed before anyone
else's.

Note there's nothing here that verifies the first claim is the actual
content owner, only that the first claim almost certainly happened
before a second.
2018-02-24 10:09:49 -07:00
Greg Fitzgerald
fa4e232d73 Add serialization/deseriation support to event log
See bincode and serde_json for usage:
https://github.com/TyOverby/bincode

Fixes #1
2018-02-20 16:26:13 -07:00
Greg Fitzgerald
d97112d7f0 Explain proof-of-history in the readme
Also:
* Hash userdata so that verification works as the readme describes.
* Drop itertools package. Found a way to use std::iter instead.

Fixes #8
2018-02-20 14:04:49 -07:00
Greg Fitzgerald
0297edaf1f Use sha256 hashes instead of Rust's builtin hasher.
Causes a 20x performance degradation. Enabling asm did not
speed things up.
2018-02-19 16:23:53 -07:00
Greg Fitzgerald
fd209ef1a9 Rename event crate to log 2018-02-18 09:59:33 -07:00
Greg Fitzgerald
831e2cbdc9 Add historian
A microservice that continuously generates hashes, only stopping to
tag messages with the latest hash.

Fixes #8
2018-02-17 20:58:23 -07:00
Greg Fitzgerald
a74540470a Rename Tick to Event
* Define a tick to be an event with no user data.
* Use the term "event log" for now.
** Reserve the word "entry" for hash entries, and "item" for array items.
** Reserve the word "blockchain" for when the event is a block of something.
** Reserve the word "ledger" for when the event is of a particular type,
   such as transactions.
2018-02-15 10:13:59 -07:00
Greg Fitzgerald
31d79727b6 Parallelize verification 2018-02-14 15:23:13 -07:00
Greg Fitzgerald
d23fda1936 First go at Proof of History 2018-02-14 11:00:01 -07:00
Greg Fitzgerald
bad95b7712 cargo init 2018-02-14 07:23:59 -07:00