#50,305,829veda#50,301,570veda#50,161,116veda#50,145,630vedatransfer100,000,000,000.sats#47,360,456brc-20mint1,000.keys#46,506,819brc-20mint1,000.keys#46,506,818brc-20mint1,000.keys#46,506,817brc-20mint1,000.keys#46,506,816brc-20mint1,000.keys#46,506,815brc-20mint1,000.keys#46,506,814brc-20mint1,000.keys#46,506,813brc-20mint1,000.keys#46,506,812brc-20mint1,000.keys#46,506,811brc-20mint1,000.keys#46,506,810brc-20mint1,000.keys#46,506,809brc-20mint1,000.keys#46,506,808brc-20mint1,000.keys#46,506,807brc-20mint1,000.keys#46,506,806brc-20mint1,000.keys#46,506,805brc-20mint1,000.keys#46,506,804brc-20mint1,000.keys#46,506,803brc-20mint1,000.keys#46,506,802brc-20mint1,000.keys#46,506,801brc-20mint1,000.keys#46,506,800brc-20transfer20.dfsn#45,386,220brc-20use super::*; #[derive(Boilerplate)] pub(crate) struct ClockSvg { height: Height, hour: f64, minute: f64, second: f64, } impl ClockSvg { pub(crate) fn new(height: Height) -> Self { let min = height.min(Epoch::FIRST_POST_SUBSIDY.starting_height()); Self { height, hour: f64::from(min.n() % Epoch::FIRST_POST_SUBSIDY.starting_height().n()) / f64::from(Epoch::FIRST_POST_SUBSIDY.starting_height().n()) * 360.0, minute: f64::from(min.n() % SUBSIDY_HALVING_INTERVAL) / f64::from(SUBSIDY_HALVING_INTERVAL) * 360.0, second: f64::from(height.period_offset()) / f64::from(DIFFCHANGE_INTERVAL) * 360.0, } } } #[cfg(test)] mod tests { use super::*; #[test] fn second() { pretty_assert_eq!(ClockSvg::new(Height(0)).second, 0.0); pretty_assert_eq!(ClockSvg::new(Height(504)).second, 90.0); pretty_assert_eq!(ClockSvg::new(Height(1008)).second, 180.0); pretty_assert_eq!(ClockSvg::new(Height(1512)).second, 270.0); pretty_assert_eq!(ClockSvg::new(Height(2016)).second, 0.0); #44,985,316textInscription #43728787#43,728,787pngtransfer12,500,000.rats#43,412,288brc-20dmt-mint.nat#42,504,983tapdmt-mint.nat#42,503,304tap{"p": "tap","op": "dmt-mint","dep":"4d967af36dcacd7e6199c39bda855d7b1b37268f4c8031fed5403a99ac57fe67i0","tick": "nat","blk": "888}#42,503,195textdmt-mint.nat#42,499,892taptransfer11,000.dogs#41,618,024brc-20mint5.dfsn#41,330,912brc-20mint5.dfsn#41,330,911brc-20mint5.dfsn#41,330,910brc-20mint5.dfsn#41,330,909brc-20mint5.dfsn#41,330,908brc-20mint5.dfsn#41,330,907brc-20mint5.dfsn#41,330,906brc-20mint5.dfsn#41,330,905brc-20mint5.dfsn#41,330,904brc-20mint5.dfsn#41,330,903brc-20mint5.dfsn#41,330,902brc-20mint5.dfsn#41,330,901brc-20mint5.dfsn#41,330,900brc-20mint5.dfsn#41,330,899brc-20mint5.dfsn#41,330,898brc-20mint5.dfsn#41,330,897brc-20mint5.dfsn#41,330,896brc-20mint5.dfsn#41,330,895brc-20mint5.dfsn#41,330,894brc-20mint5.dfsn#41,330,893brc-20mint5.dfsn#41,318,740brc-20mint5.dfsn#41,318,738brc-20mint5.dfsn#41,318,737brc-20mint5.dfsn#41,318,736brc-20mint5.dfsn#41,318,735brc-20mint5.dfsn#41,318,732brc-20