1use std::str::FromStr;
5
6use crate::{
7 blocks::{Ticket, VRFProof},
8 eth::EVMMethod,
9 message::SignedMessage,
10 shim::{
11 address::Address,
12 crypto::{SECP_SIG_LEN, Signature, SignatureType},
13 message::{Message, Message_v3},
14 },
15};
16use base64::{Engine, prelude::BASE64_STANDARD};
17
18pub fn construct_ticket() -> Ticket {
20 let vrf_result = VRFProof::new(BASE64_STANDARD.decode("lmRJLzDpuVA7cUELHTguK9SFf+IVOaySG8t/0IbVeHHm3VwxzSNhi1JStix7REw6Apu6rcJQV1aBBkd39gQGxP8Abzj8YXH+RdSD5RV50OJHi35f3ixR0uhkY6+G08vV").unwrap());
21 Ticket::new(vrf_result)
22}
23
24pub fn dummy_ticket(seed: u8) -> Option<Ticket> {
27 Some(Ticket::new(VRFProof::new(vec![seed])))
28}
29
30pub fn construct_messages() -> (Message, SignedMessage) {
32 let bls_messages: Message = Message_v3 {
33 to: Address::new_id(1).into(),
34 from: Address::new_id(2).into(),
35 ..Message_v3::default()
36 }
37 .into();
38
39 let secp_messages =
40 SignedMessage::new_unchecked(bls_messages.clone(), Signature::new_secp256k1(vec![0]));
41 (bls_messages, secp_messages)
42}
43
44pub fn construct_bls_messages() -> (Message, SignedMessage) {
46 let message: Message = Message_v3 {
47 to: Address::new_id(1).into(),
48 from: Address::new_id(2).into(),
49 ..Message_v3::default()
50 }
51 .into();
52
53 let bls_message = SignedMessage::new_unchecked(message.clone(), Signature::new_bls(vec![0]));
54 (message, bls_message)
55}
56
57pub fn construct_eth_messages(sequence: u64) -> (Message, SignedMessage) {
59 let mut eth_message: Message = Message_v3 {
60 to: Address::from_str("t410foy6ucbmuujaequ3zsdo6nsubyogp6vtk23t4odq")
61 .unwrap()
62 .into(),
63 from: Address::from_str("t410fse4uvumo6ko46igb6lshg3peztqs3h6755vommy")
64 .unwrap()
65 .into(),
66 ..Message_v3::default()
67 }
68 .into();
69 eth_message.method_num = EVMMethod::InvokeContract as u64;
70 eth_message.sequence = sequence;
71
72 let secp_message = SignedMessage::new_unchecked(
73 eth_message.clone(),
74 Signature::new(SignatureType::Delegated, vec![0; SECP_SIG_LEN]),
75 );
76
77 (eth_message, secp_message)
78}
79
80#[macro_export]
82macro_rules! to_string_with {
83 ($obj:expr, $serializer:path) => {{
84 let mut writer = Vec::new();
85 $serializer($obj, &mut serde_json::ser::Serializer::new(&mut writer)).unwrap();
86 String::from_utf8(writer).unwrap()
87 }};
88}
89
90#[macro_export]
92macro_rules! from_str_with {
93 ($str:expr, $deserializer:path) => {
94 $deserializer(&mut serde_json::de::Deserializer::from_str($str)).unwrap()
95 };
96}