pub const PROTOCOL_FEE_BPS: u64 = 300;
pub const PROTOCOL_TREASURY: &str = "GY7vnWMkKpftU4nQ16C2ATkj1JwrQpHhknkaBUn67VTy";
pub const RENT_EXEMPT_MINIMUM: u64 = 890_880;
pub fn validate_job_price(lamports: u64) -> Option<String> {
if lamports == 0 {
return None; }
let fee = (lamports * PROTOCOL_FEE_BPS).div_ceil(10_000);
let provider_net = lamports.saturating_sub(fee);
if provider_net < RENT_EXEMPT_MINIMUM {
Some(format!(
"Price too low: after {} protocol fee the provider receives {} lamports, \
which is below Solana rent-exempt minimum ({} lamports).",
crate::util::format_bps_percent(PROTOCOL_FEE_BPS),
provider_net,
RENT_EXEMPT_MINIMUM,
))
} else {
None
}
}