circles-utils

Crates.iocircles-utils
lib.rscircles-utils
version0.1.0
created_at2025-12-05 12:10:59.612013+00
updated_at2025-12-05 12:10:59.612013+00
descriptionShared Circles utilities (demurrage/inflation conversions, helpers)
homepagehttps://circles-rs-book.vercel.app/
repositoryhttps://github.com/deluXtreme/circles-rs
max_upload_size
id1968065
size18,964
Franco (0xpantera)

documentation

https://docs.rs/circles-utils

README

circles-utils

Shared Circles utility functions, currently focused on demurrage/inflation conversions ported from the TypeScript CirclesConverter.

Usage

use circles_utils::converter::{
    atto_circles_to_atto_static_circles,
    atto_static_circles_to_atto_circles,
    day_from_timestamp,
};
use alloy_primitives::U256;

let val = U256::from(1_000_000_000_000_000_000u128);
let static_val = atto_circles_to_atto_static_circles(val, None); // uses current time
let back = atto_static_circles_to_atto_circles(static_val, None);
assert_eq!(back, val);
let day = day_from_timestamp(1_602_720_000); // 0 (day zero)

Notes

  • Pure, synchronous math; no IO or async dependencies.
  • Constants mirror the TS SDK: Gamma/Beta 64.64 factors, Circles day zero, 1e18 atto factor; tests tolerate tiny floating drift to match TS fixtures.
  • Downstream crates (pathfinder, transfers) reuse these converters for wrapper/token handling.
Commit count: 22

cargo fmt