z4_engine/lib.rs
1#[macro_use]
2extern crate tracing;
3
4mod config;
5mod contracts;
6mod engine;
7mod p2p;
8mod pool;
9mod room;
10mod rpc;
11mod scan;
12
13/// Module for ws/http/p2p request with channel.
14#[cfg(feature = "request")]
15pub mod request;
16
17/// Z4 main config.
18pub use config::Config;
19
20/// Z4 main contracts.
21pub use contracts::{RoomMarket, SimpleGame, Token};
22
23/// Z4 main engine.
24pub use engine::Engine;
25
26/// Create z4 scan(sync from chain) channel.
27pub use scan::chain_channel;
28
29/// Export serde_json's json and Value.
30pub use serde_json::{json, Value};
31
32/// Export useful tdn core struct and functions.
33pub use tdn::{
34 prelude::{GroupId, Peer, PeerId, PeerKey, SendType},
35 types::rpc::rpc_response,
36};
37
38/// Export useful types
39pub use z4_types::*;
40
41use serde::{Deserialize, Serialize};
42
43/// P2P network message type
44#[derive(Serialize, Deserialize)]
45struct P2pMessage<'a> {
46 pub method: &'a str,
47 pub params: Vec<u8>,
48}
49
50/// The message type synced from chain
51pub enum ChainMessage {
52 /// create a room on the chain,
53 /// room_id, game_id, viewable, player account, player peer id, player pubkey,
54 /// salt by player, current block prevrandao
55 CreateRoom(
56 RoomId,
57 GameId,
58 bool,
59 Address,
60 PeerId,
61 [u8; 32],
62 [u8; 32],
63 [u8; 32],
64 ),
65 /// join a room on the chain,
66 /// room_id, player account, player peer id, player pubkey
67 JoinRoom(RoomId, Address, PeerId, [u8; 32]),
68 /// start a room on the chain,
69 /// room_id, game address
70 StartRoom(RoomId, Address),
71 /// accept a room on the chain,
72 /// room_id, sequencer account, sequencer websocket, params when accept
73 AcceptRoom(RoomId, PeerId, String, Vec<u8>),
74 /// game over in local,
75 /// room_id, result, proof
76 GameOverRoom(RoomId, Vec<u8>, Vec<u8>),
77 /// game over on the chain,
78 /// room_id
79 ChainOverRoom(RoomId),
80 /// need reprove in local
81 Reprove,
82}
83
84/// The message type when send to pool
85pub enum PoolMessage {
86 /// send a transaction to accept room,
87 /// room_id, params
88 AcceptRoom(RoomId, Vec<u8>),
89 /// send a transaction to over room,
90 /// room_id, result, proof
91 OverRoom(RoomId, Vec<u8>, Vec<u8>),
92 /// the transaction had been submmited
93 Submitted(RoomId),
94}