Technical specification of the Floating Point Protocol - a privacy-preserving payment system built on Ethereum.
Floating Point Protocol (FPP) introduces a novel approach to blockchain privacy payments through the concept of "Floating Random Points" - discrete value units that exist in an anonymous pool. Each point represents a fixed value of $10 USDT, fully collateralized and redeemable. By combining Pedersen commitments, zero-knowledge proofs, and Linkable Spontaneous Anonymous Group (LSAG) ring signatures, FPP achieves strong sender anonymity, receiver anonymity, and amount privacy while maintaining full auditability for regulatory compliance when required.
Public blockchains like Ethereum provide transparency and immutability, but this transparency comes at the cost of financial privacy. Every transaction, balance, and interaction is permanently recorded and publicly visible, creating significant privacy concerns for individuals and businesses alike.
Existing privacy solutions such as mixers suffer from regulatory uncertainty and often require trust in centralized operators. FPP addresses these limitations by creating a fully decentralized, non-custodial privacy layer that is compatible with regulatory requirements through optional audit mechanisms.
The core innovation of FPP is the "Floating Point" - a cryptographic representation of value that can be transferred without revealing the sender, receiver, or amount. Points float in a global pool, selected through a gravity-weighted random algorithm that incentivizes liquidity while maintaining strong anonymity guarantees.
Each Floating Point contains the following cryptographic components:
struct FloatingPoint {
bytes32 id; // Unique identifier (hash of commitment)
uint256 value; // Fixed at 10 USDT (10 * 10^6)
bytes32 commitment; // Pedersen commitment: C = vG + rH
bytes32 nullifierHash;// Hash for double-spend prevention
uint256 mass; // Selection weight (increases with age)
uint256 createdAt; // Block timestamp of creation
address owner; // Commitment to owner (hidden)
}Values are hidden using Pedersen commitments, which provide both hiding (privacy) and binding (integrity):
Where v is the value, r is a random blinding factor, and G, H are generator points on the elliptic curve.
Each point has a unique nullifier derived from the owner's secret key. When a point is spent, its nullifier is published and stored on-chain. Attempting to spend the same point twice will produce the same nullifier, which the contract will reject.
FPP uses Linkable Spontaneous Anonymous Group signatures to hide the true sender among a set of decoys. The signature proves that one member of the ring authorized the transaction, without revealing which one.
// Ring signature generation σ = LSAG.Sign(message, secretKey, ringPublicKeys) // Verification LSAG.Verify(message, σ, ringPublicKeys) → true/false // Key image (linkability tag) I = secretKey × Hash_p(publicKey)
The key image I is unique per secret key and allows detection of double-signing without revealing identity.
ZK-SNARKs prove the following statements without revealing any private information:
Recipients generate one-time stealth addresses for each transaction. The sender encrypts the output randomness with the recipient's public key, allowing only the recipient to claim the new points.
// Stealth address generation r = random() R = r × G // Published ephemeral key P = Hash(r × recipientPubKey) × G + recipientPubKey
When spending points, the protocol uses a gravity-weighted random selection algorithm. This ensures older points are more likely to be selected, improving the anonymity set and encouraging circulation.
// Weight calculation weight(point) = mass × √(age + 1) × GRAVITY_CONSTANT // Selection probability P(point) = weight(point) / Σ weights // Where: // mass = initial mass (default: 1.0) // age = currentTime - createdAt // GRAVITY_CONSTANT = 9.81 (configurable)
This creates a natural "sink" effect where older points gravitate toward selection, while newer points gradually increase their probability over time.
Every Floating Point is backed 1:1 by USDT held in the Treasury contract. The total value of all outstanding FP equals the USDT reserve at all times. This is verifiable on-chain:
Each FP has a fixed value of $10 USDT. This simplifies privacy by eliminating amount analysis - all points are fungible and indistinguishable by value.
Deposit Fee
0.1%
Applied when buying FP
Transfer Fee
0%
Private transfers are free
Withdrawal Fee
0.1%
Applied when redeeming
All withdrawals require a 24-hour waiting period. This provides protection against:
FPP supports optional compliance features for users who require auditability:
Users can generate view keys that allow designated auditors to see their transaction history without gaining spending authority.
Users can prove specific facts about their transactions (e.g., "I sent X to address Y at time T") without revealing their entire history, using zero-knowledge proofs.