stake_contract_types/
lib.rs1#![no_std]
10#![deny(missing_docs)]
11#![deny(clippy::pedantic)]
12
13extern crate alloc;
14use alloc::vec::Vec;
15
16mod sig;
17mod stake;
18
19pub use sig::{
20 stake_signature_message, unstake_signature_message,
21 withdraw_signature_message,
22};
23pub use stake::{next_epoch, BlockHeight, StakeData, EPOCH};
24
25use bls12_381_bls::{PublicKey as StakePublicKey, Signature as StakeSignature};
26use dusk_bls12_381::BlsScalar;
27use phoenix_core::StealthAddress;
28
29use bytecheck::CheckBytes;
30use rkyv::{Archive, Deserialize, Serialize};
31
32#[derive(Debug, Clone, PartialEq, Eq, Archive, Serialize, Deserialize)]
34#[archive_attr(derive(bytecheck::CheckBytes))]
35pub struct Stake {
36 pub public_key: StakePublicKey,
38 pub signature: StakeSignature,
40 pub value: u64,
42 pub proof: Vec<u8>,
44}
45
46#[derive(Debug, Clone, PartialEq, Eq, Archive, Deserialize, Serialize)]
48#[archive_attr(derive(CheckBytes))]
49pub struct Unstake {
50 pub public_key: StakePublicKey,
52 pub signature: StakeSignature,
54 pub note: Vec<u8>, pub proof: Vec<u8>,
58}
59
60#[derive(Debug, Clone, Archive, Deserialize, Serialize)]
62#[archive_attr(derive(CheckBytes))]
63pub struct Withdraw {
64 pub public_key: StakePublicKey,
66 pub signature: StakeSignature,
68 pub address: StealthAddress,
70 pub nonce: BlsScalar,
72}
73
74#[derive(Debug, Clone, Archive, Deserialize, Serialize)]
79#[archive_attr(derive(CheckBytes))]
80pub struct StakingEvent {
81 pub public_key: StakePublicKey,
83 pub value: u64,
86}