Rename Claim's key field to match same field in Transaction
This commit is contained in:
parent
3e2d6d9e8b
commit
8fe464cfa3
|
@ -48,13 +48,8 @@ impl Accountant {
|
||||||
entries
|
entries
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn deposit_signed(
|
pub fn deposit_signed(self: &mut Self, to: PublicKey, data: u64, sig: Signature) -> Result<()> {
|
||||||
self: &mut Self,
|
let event = Event::Claim { to, data, sig };
|
||||||
key: PublicKey,
|
|
||||||
data: u64,
|
|
||||||
sig: Signature,
|
|
||||||
) -> Result<()> {
|
|
||||||
let event = Event::Claim { key, data, sig };
|
|
||||||
if !self.historian.verify_event(&event) {
|
if !self.historian.verify_event(&event) {
|
||||||
return Err(AccountingError::InvalidEvent);
|
return Err(AccountingError::InvalidEvent);
|
||||||
}
|
}
|
||||||
|
@ -62,12 +57,12 @@ impl Accountant {
|
||||||
return Err(AccountingError::SendError);
|
return Err(AccountingError::SendError);
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.balances.contains_key(&key) {
|
if self.balances.contains_key(&to) {
|
||||||
if let Some(x) = self.balances.get_mut(&key) {
|
if let Some(x) = self.balances.get_mut(&to) {
|
||||||
*x += data;
|
*x += data;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
self.balances.insert(key, data);
|
self.balances.insert(to, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -12,7 +12,7 @@ fn create_log(hist: &Historian<Sha256Hash>) -> Result<(), SendError<Event<Sha256
|
||||||
let data = Sha256Hash::default();
|
let data = Sha256Hash::default();
|
||||||
let keypair = generate_keypair();
|
let keypair = generate_keypair();
|
||||||
let event0 = Event::Claim {
|
let event0 = Event::Claim {
|
||||||
key: get_pubkey(&keypair),
|
to: get_pubkey(&keypair),
|
||||||
data,
|
data,
|
||||||
sig: sign_serialized(&data, &keypair),
|
sig: sign_serialized(&data, &keypair),
|
||||||
};
|
};
|
||||||
|
|
|
@ -30,7 +30,7 @@ pub type Signature = GenericArray<u8, U64>;
|
||||||
pub enum Event<T> {
|
pub enum Event<T> {
|
||||||
Tick,
|
Tick,
|
||||||
Claim {
|
Claim {
|
||||||
key: PublicKey,
|
to: PublicKey,
|
||||||
data: T,
|
data: T,
|
||||||
sig: Signature,
|
sig: Signature,
|
||||||
},
|
},
|
||||||
|
@ -92,9 +92,9 @@ pub fn get_signature<T>(event: &Event<T>) -> Option<Signature> {
|
||||||
|
|
||||||
pub fn verify_event<T: Serialize>(event: &Event<T>) -> bool {
|
pub fn verify_event<T: Serialize>(event: &Event<T>) -> bool {
|
||||||
use bincode::serialize;
|
use bincode::serialize;
|
||||||
if let Event::Claim { key, ref data, sig } = *event {
|
if let Event::Claim { to, ref data, sig } = *event {
|
||||||
let mut claim_data = serialize(&data).unwrap();
|
let mut claim_data = serialize(&data).unwrap();
|
||||||
if !verify_signature(&key, &claim_data, &sig) {
|
if !verify_signature(&to, &claim_data, &sig) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -216,7 +216,7 @@ mod tests {
|
||||||
let keypair = generate_keypair();
|
let keypair = generate_keypair();
|
||||||
let sig = sign_serialized(&hash(b"hello, world"), &keypair);
|
let sig = sign_serialized(&hash(b"hello, world"), &keypair);
|
||||||
let event0 = Event::Claim {
|
let event0 = Event::Claim {
|
||||||
key: get_pubkey(&keypair),
|
to: get_pubkey(&keypair),
|
||||||
data: hash(b"goodbye cruel world"),
|
data: hash(b"goodbye cruel world"),
|
||||||
sig,
|
sig,
|
||||||
};
|
};
|
||||||
|
@ -228,10 +228,10 @@ mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_duplicate_event_signature() {
|
fn test_duplicate_event_signature() {
|
||||||
let keypair = generate_keypair();
|
let keypair = generate_keypair();
|
||||||
let key = get_pubkey(&keypair);
|
let to = get_pubkey(&keypair);
|
||||||
let data = &hash(b"hello, world");
|
let data = &hash(b"hello, world");
|
||||||
let sig = sign_serialized(data, &keypair);
|
let sig = sign_serialized(data, &keypair);
|
||||||
let event0 = Event::Claim { key, data, sig };
|
let event0 = Event::Claim { to, data, sig };
|
||||||
let mut sigs = HashSet::new();
|
let mut sigs = HashSet::new();
|
||||||
assert!(verify_event_and_reserve_signature(&mut sigs, &event0));
|
assert!(verify_event_and_reserve_signature(&mut sigs, &event0));
|
||||||
assert!(!verify_event_and_reserve_signature(&mut sigs, &event0));
|
assert!(!verify_event_and_reserve_signature(&mut sigs, &event0));
|
||||||
|
|
|
@ -212,13 +212,13 @@ mod tests {
|
||||||
// First, verify Claim events
|
// First, verify Claim events
|
||||||
let keypair = generate_keypair();
|
let keypair = generate_keypair();
|
||||||
let event0 = Event::Claim {
|
let event0 = Event::Claim {
|
||||||
key: get_pubkey(&keypair),
|
to: get_pubkey(&keypair),
|
||||||
data: zero,
|
data: zero,
|
||||||
sig: sign_serialized(&zero, &keypair),
|
sig: sign_serialized(&zero, &keypair),
|
||||||
};
|
};
|
||||||
|
|
||||||
let event1 = Event::Claim {
|
let event1 = Event::Claim {
|
||||||
key: get_pubkey(&keypair),
|
to: get_pubkey(&keypair),
|
||||||
data: one,
|
data: one,
|
||||||
sig: sign_serialized(&one, &keypair),
|
sig: sign_serialized(&one, &keypair),
|
||||||
};
|
};
|
||||||
|
@ -239,7 +239,7 @@ mod tests {
|
||||||
let keypair = generate_keypair();
|
let keypair = generate_keypair();
|
||||||
let data = hash(b"hello, world");
|
let data = hash(b"hello, world");
|
||||||
let event0 = Event::Claim {
|
let event0 = Event::Claim {
|
||||||
key: get_pubkey(&keypair),
|
to: get_pubkey(&keypair),
|
||||||
data,
|
data,
|
||||||
sig: sign_serialized(&data, &keypair),
|
sig: sign_serialized(&data, &keypair),
|
||||||
};
|
};
|
||||||
|
@ -252,7 +252,7 @@ mod tests {
|
||||||
fn test_wrong_data_claim_attack() {
|
fn test_wrong_data_claim_attack() {
|
||||||
let keypair = generate_keypair();
|
let keypair = generate_keypair();
|
||||||
let event0 = Event::Claim {
|
let event0 = Event::Claim {
|
||||||
key: get_pubkey(&keypair),
|
to: get_pubkey(&keypair),
|
||||||
data: hash(b"goodbye cruel world"),
|
data: hash(b"goodbye cruel world"),
|
||||||
sig: sign_serialized(&hash(b"hello, world"), &keypair),
|
sig: sign_serialized(&hash(b"hello, world"), &keypair),
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue