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.
This commit is contained in:
Greg Fitzgerald
2018-03-05 12:48:09 -07:00
parent d76ecbc9c9
commit 48c28c2267
10 changed files with 165 additions and 54 deletions

View File

@@ -83,16 +83,22 @@ mod tests {
#[test]
fn test_bad_event_signature() {
let zero = Sha256Hash::default();
let keypair = generate_keypair();
let sig = sign_claim_data(&hash(b"hello, world"), &keypair);
let event0 = Event::new_claim(get_pubkey(&keypair), hash(b"goodbye cruel world"), sig);
let sig = sign_claim_data(&hash(b"hello, world"), &keypair, &zero);
let event0 = Event::new_claim(
get_pubkey(&keypair),
hash(b"goodbye cruel world"),
zero,
sig,
);
assert!(!verify_event(&event0));
}
fn run_genesis(gen: Genesis) -> Vec<Entry<u64>> {
let (sender, event_receiver) = sync_channel(100);
let (entry_sender, receiver) = sync_channel(100);
let mut logger = Logger::new(event_receiver, entry_sender, hash(&gen.pkcs8));
let mut logger = Logger::new(event_receiver, entry_sender, gen.get_seed());
for tx in gen.create_events() {
sender.send(tx).unwrap();
}