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 construct_messages() -> (Message, SignedMessage) {
26 let bls_messages: Message = Message_v3 {
27 to: Address::new_id(1).into(),
28 from: Address::new_id(2).into(),
29 ..Message_v3::default()
30 }
31 .into();
32
33 let secp_messages =
34 SignedMessage::new_unchecked(bls_messages.clone(), Signature::new_secp256k1(vec![0]));
35 (bls_messages, secp_messages)
36}
37
38pub fn construct_bls_messages() -> (Message, SignedMessage) {
40 let message: Message = Message_v3 {
41 to: Address::new_id(1).into(),
42 from: Address::new_id(2).into(),
43 ..Message_v3::default()
44 }
45 .into();
46
47 let bls_message = SignedMessage::new_unchecked(message.clone(), Signature::new_bls(vec![0]));
48 (message, bls_message)
49}
50
51pub fn construct_eth_messages(sequence: u64) -> (Message, SignedMessage) {
53 let mut eth_message: Message = Message_v3 {
54 to: Address::from_str("t410foy6ucbmuujaequ3zsdo6nsubyogp6vtk23t4odq")
55 .unwrap()
56 .into(),
57 from: Address::from_str("t410fse4uvumo6ko46igb6lshg3peztqs3h6755vommy")
58 .unwrap()
59 .into(),
60 ..Message_v3::default()
61 }
62 .into();
63 eth_message.method_num = EVMMethod::InvokeContract as u64;
64 eth_message.sequence = sequence;
65
66 let secp_message = SignedMessage::new_unchecked(
67 eth_message.clone(),
68 Signature::new(SignatureType::Delegated, vec![0; SECP_SIG_LEN]),
69 );
70
71 (eth_message, secp_message)
72}
73
74#[macro_export]
76macro_rules! to_string_with {
77 ($obj:expr, $serializer:path) => {{
78 let mut writer = Vec::new();
79 $serializer($obj, &mut serde_json::ser::Serializer::new(&mut writer)).unwrap();
80 String::from_utf8(writer).unwrap()
81 }};
82}
83
84#[macro_export]
86macro_rules! from_str_with {
87 ($str:expr, $deserializer:path) => {
88 $deserializer(&mut serde_json::de::Deserializer::from_str($str)).unwrap()
89 };
90}