RADAR TERMINAL

The radar is the product.

Every holder has a deterministic position on the circle and a receiver sector sized by balance. The beam moves on every swap — whoever it crosses, it pays.

SECTOR MAP — HOLDERS MAPPED
BEAM
ACTIVE RECEIVER OUT OF RANGE YOUR SECTOR HOVER A NODE FOR WALLET DETAILS
CONTRACT ADDRESS 0x0000…0000
NETWORK ETHEREUM
TICKER $SWEEP
PENDING DEPLOYMENT

THE ADDRESS IS PUBLISHED HERE AT LAUNCH · ANY OTHER CONTRACT IS NOT SWEEP

SUPPLY555,000
BUY FEE2%
SELL FEE3%
REWARD ASSETETH
BEAMLIVE
TOTAL ETH TO HOLDERS
ACTIVE RECEIVERS--
CURRENT BEAM MOVES ON EVERY SWAP
ACTIVE RECEIVERS -- IN BEAM NOW
TOTAL COVERAGE OF THE FULL CIRCLE
LAST REWARD SPLIT EQUALLY IN RANGE
YOUR SECTOR

Your balance is your antenna.

Connect a wallet and the protocol reads your position straight from your address. Rewards land in ETH the moment the beam crosses your arc — there is nothing to stake and nothing to position by hand.

  • 01 Position is derived from your address and never moves.
  • 02 Width grows with balance, under diminishing returns.
  • 03 Each crossing splits the fee equally across everyone in range.
RECEIVER SIMULATOR

Expand your receiver.

More SWEEP means wider reception — with diminishing returns, so no single sector can swallow the circle.

SIMULATION ONLY · NO TRANSACTION IS SENT

Current Balance
4,210
After Buy
7,210
Current Width
3.07°
New Width
4.03°
Gain
+0.96°
halfWidth = K_WIDTH * sqrt(balance)
MECHANIC FLOW

The beam never stops.

No staking. No epochs. No reward rounds. No manual positioning. Every swap simply moves the beam and settles what it touches.

  1. 01SWAP
  2. 02BEAM MOVES
  3. 03POSITION UPDATES
  4. 04ACTIVE RECEIVERS
  5. 05FEE ALLOCATED
  6. 06ETH CLAIMABLE
position = keccak256(holder) % PRECISION_360 halfWidth = K_WIDTH * sqrt(balance / 1e18) share = reward / activeReceivers pendingRewards[holder] += share
SIGNAL TRAINER

Catch the beam.

A small game, nothing more. Lock your receiver the moment the beam crosses it — every hit narrows your sector and speeds the beam up. Three missed locks and the signal is lost.

CATCH THE BEAM

CLICK OR PRESS SPACE WHEN THE BEAM CROSSES YOUR SECTOR

SCORE 0
Streak
0
Receiver Width
44.00°
Beam Speed
1.00×
Best
0
SIGNAL

PRESS START

HOOK CONTRACT

Written into the pool itself.

The radar is not a dashboard bolted onto a token — it is the hook Uniswap v4 calls on every swap. SWEEP is three contracts: the token, the hook that owns the beam, and the vault that holds the ETH. Condensed to the parts that matter:

SWEEPHook.sol · SWEEPRewards.sol SOLIDITY ^0.8.26
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

contract SweepRadarHook is BaseHook {
    uint256 public constant SUPPLY         = 555_000e18;
    uint256 public constant BUY_FEE_BPS    = 200;          // 2%
    uint256 public constant SELL_FEE_BPS   = 300;          // 3%
    uint256 public constant PRECISION_360  = 360_000_000;  // the dial, in units
    uint256 public constant K_WIDTH        = 24_000;
    uint256 public constant MAX_HALF_WIDTH = PRECISION_360 / 12; // 30°

    uint256 public beam;                // a point on the dial, not an arc
    ISWEEPRewards public immutable rewards;   // the vault — cannot be redirected

    event BeamMoved(uint256 indexed sweepId, uint256 from, uint256 to, uint256 movement);

    /// deterministic, permanent, never assigned by hand
    function radarPosition(address holder) public pure returns (uint256) {
        return uint256(keccak256(abi.encode(holder))) % PRECISION_360;
    }

    /// more SWEEP, wider reception — sqrt, and capped at 30° either side
    function receiverWidth(uint256 balance) public pure returns (uint256) {
        if (balance < 1e18) return 0;
        uint256 w = K_WIDTH * sqrt(balance / 1e18);
        return w > MAX_HALF_WIDTH ? MAX_HALF_WIDTH : w;
    }

    function _afterSwap(...) internal override returns (bytes4, int128) {
        uint256 fee = _takeFee(isBuy, delta);

        // movement is a hash of the swap itself — no oracle, no operator
        beam = (beam + _moveBeam(fee, isBuy, delta)) % PRECISION_360;

        // only the buckets within 30° of the beam are opened — never a holder loop
        address[] memory found = _findReceivers(beam);

        // 100% of the fee leaves in the same call; the hook keeps nothing
        rewards.allocate{value: fee}(found);
        return (IHooks.afterSwap.selector, 0);
    }
}

// …and in the vault, the split itself:
function allocate(address[] calldata receivers) external payable {
    uint256 share = (msg.value + carry) / receivers.length;  // equal, not by width
    for (uint256 i; i < receivers.length; ++i) {
        pendingRewards[receivers[i]] += share;   // pull-based: no ETH is sent here
    }
    carry = (msg.value + carry) - share * receivers.length;  // remainder is never dropped
}

CONDENSED FROM THE REAL SOURCE · READ THE FULL CONTRACTS BEFORE TRADING

A pastel dish antenna on marble scaffolding above a sea of clouds, a single beam crossing the sky.
THE BEAM NEVER STOPS.
RECEIVER FIELD

Overlapping sectors, one circle.

Receivers are allowed to overlap. Where they do, the field grows brighter — and the fee for that crossing is split equally across everyone in range, whatever their balance.

SIGNAL FIELD BEAM 000.00°

SCROLL TO SWEEP THE BEAM · HOVER A NODE TO INSPECT ITS RECEIVER

COVERAGE CURVE

More SWEEP. Wider reception.

Coverage expands with balance while diminishing returns prevent linear domination.

RADAR
SWEEPS
REWARD EVENTS
CLAIMS
HOOK
POOL
A pale violet observatory: a marble radar ring over a reflective floor, planets drifting on thin orbital lines.
“You don't just hold SWEEP. You occupy part of the signal.”
DOCUMENTATION

Read the whole protocol.

Seventeen sections covering receiver positions, width curves, beam movement, overlap rules, reward accounting and claims — written out in full.

  • 01 — 06 · POSITIONS, WIDTH, BUYING, SELLING
  • 07 — 12 · BEAM MOVEMENT, ACTIVE RECEIVERS, CLAIMS
  • 13 — 17 · TRANSFERS, NO STAKING, FULL FLOW
Open Docs

More SWEEP. Wider reception.

555,000 SWEEP. 2% buy, 3% sell. 100% of protocol fees to the sectors the beam crosses.