Robinhood Chain

Token locks & vesting feed — newest lock contracts across all tokens (PRO+)

Changed on

Newest token lock / vesting contracts CREATED on Robinhood Chain, newest first: who just locked tokens, of what, how much, until when. Decoded from the locker contracts' own events on our node (services/rhc-lock-tracker, chain-wide topic0 probe with no address filter — a new deployment of a known locker shape is caught on first sight): PinkLock-compatible, HoodLock (+ vesting), Team Finance-compatible (+ LP NFT), Titan Locker (token / LP / position), UNCX v2/v3-compatible LP lockers, Sablier Lockup v4 (linear / tranched / dynamic). Every row carries the on-chain schedule (start / cliff / end, cliff amount, tranches) and a live derived view: locked_* (still locked right now), unlocked_*, next_unlock (cliff | final | tranche), status; sender is the depositor/creator (compare with the token's deployer for a dev lock), recipient the beneficiary when different; cancelable / cancelable_by_sender from Sablier's flag (null where the family does not say). Amounts are RAW base units as strings; ui/usd/pct are null when decimals/price are unknown. Create-only tape: withdrawals / cancels are NOT tracked (no RHC locker publishes a verified release event shape) — withdrawn is null (unknown), never 0, and the coverage block says withdrawals_tracked: false. LP locks (subject=lp — RHC launchpads auto-lock LP on every launch) are stored but excluded unless subject=lp|all, carry pair/liquidity units and never claim usd/pct. Cursor: cursor= (pagination.next_cursor, strict (created_at, id) — preferred), since= (pagination.next_since) / legacy before=. The status / min_usd / min_pct_of_supply post-filters are served by a bounded scan (pagination.scan). Pushed live as rhc:token_lock on WS channel rhc:token_locks. Tier: PRO+.

get/rhc/tokens/locks

Request

  • Base URL: https://madeonsol.com/api/v1
  • URL: https://madeonsol.com/api/v1/rhc/tokens/locks
  • Auth: HTTP bearer

Query parameters

limitinteger
sincestring date-time

Only locks created after this instant (poll cursor = pagination.next_since).

beforestring date-time

Legacy: only locks created strictly before this instant (page back = pagination.next_before; skips locks sharing that created_at — prefer cursor).

cursorstring

PREFERRED pagination (audit F09 follow-up): the next_cursor from a previous page — an opaque strict (created_at, id) keyset, so paging never repeats or skips rows that share a sort value and progresses with limit=1 through runs of identical timestamps. Malformed or tampered → 400. Cannot be combined with before= (400).

tokenstring
senderstring

Depositor / creator wallet.

recipientstring

Beneficiary wallet.

lockerstring

Locker contract address.

family'pinklock' | 'teamfinance' | 'teamfinance-nft' | 'uncx-v2-lp' | 'uncx-v3-lp' | 'uncx-vesting' | 'vesting-fork' | 'goplus' | 'titan' | 'titan-position' | 'titan-vesting' | 'hoodlock' | 'hoodlock-vesting' | 'sablier'
kind'lock' | 'vesting'
subject'token' | 'lp' | 'all'

token (default) excludes LP locks; lp = only LP locks; all = both.

status'active' | 'completed'
min_usdnumber

Post-filter on the deposited amount in USD (bounded scan — see pagination.scan).

min_pct_of_supplynumber

Post-filter on the deposited amount as % of supply.

Response

OK.

chain'robinhood'
streamobject

WS pointer: channel rhc:token_locks, event rhc:token_lock.

coverageobject

Honesty block: families, withdrawals_tracked false, cancels_tracked false, lp_locks, note.

metaobject

Changes