-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathtransaction_test.rs
71 lines (60 loc) · 1.79 KB
/
transaction_test.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
use blockchaintree::transaction::{self, Transactionable};
use primitive_types::U256;
use secp256k1::Secp256k1;
#[test]
fn dump_parse_transaction() {
let transaction = transaction::Transaction::new_signed(
[0; 33],
[20; 33],
100,
U256::from_dec_str("3627836287").unwrap(),
None,
[33; 64],
);
let dump = transaction.dump().unwrap();
let parsed_transaction = transaction::Transaction::parse(&dump[1..]).unwrap();
assert_eq!(transaction.get_amount(), parsed_transaction.get_amount());
assert_eq!(transaction.get_data(), parsed_transaction.get_data());
assert_eq!(
transaction.get_receiver(),
parsed_transaction.get_receiver()
);
assert_eq!(transaction.get_sender(), parsed_transaction.get_sender());
assert_eq!(
transaction.get_signature(),
parsed_transaction.get_signature()
);
assert_eq!(
transaction.get_timestamp(),
parsed_transaction.get_timestamp()
);
println!("{:?}", parsed_transaction);
}
#[test]
fn hash_transaction() {
let transaction = transaction::Transaction::new_signed(
[10; 33],
[20; 33],
100,
U256::from_dec_str("3627836287").unwrap(),
None,
[33; 64],
);
let hash = transaction.hash();
println!("{:?}", hash);
}
#[test]
fn sign_verify_transaction() {
let secp = Secp256k1::new();
let (secret_key, public_key) = secp.generate_keypair(&mut rand::thread_rng());
let transaction = transaction::Transaction::new(
public_key.serialize(),
public_key.serialize(),
100,
U256::from_dec_str("3627836287").unwrap(),
secret_key.secret_bytes(),
Some(vec![1, 3, 3, 3, 3, 3, 3]),
)
.unwrap();
assert!(transaction.verify().unwrap());
}