DINO Secondary
Dino Secondary is the shared secondary market rail of the T-REX ecosystem.
It is a smart contract deployed on the T-REX Ledger that lets investors, distributors, and broker-dealers:
Publish on-chain intents (offers) to buy or sell ERC-3643 (T-REX) tokens
Partially or fully take existing offers
Share liquidity across multiple platforms and dApps, instead of fragmenting it into isolated OTC channels
Every offer is created and settled directly onchain, with:
Built-in compliance integration for ERC-3643
Freezing of RWA tokens instead of moving them to escrow which helps maintain the integrity of the onchain cap tables at all times
Configurable fee mechanisms for both the ecosystem and the asset issuer/operator
Dino Secondary is not a single UI. It is the neutral onchain marketplace layer that any T-REX-compatible application can plug into.
Key Features
Intent-Based Trading
Offer creation – Any investor or participant can publish an offer expressing their intent to:
Sell an ERC-3643 token for another token (e.g. stablecoin), or
Buy an ERC-3643 token by offering another token.
Flexibility – Offers specify:
The token being offered (
tokenOut)The token requested (
tokenIn)The respective amounts
An expiration time
Partial Fills & Offer States
Offers can be partially filled multiple times until:
Fully filled
Cancelled by the creator
Pruned after expiry or if conditions are no longer met
The contract tracks:
Total offered amount
Filled amount
Remaining amount
Status (Active, Filled, Cancelled, Expired)
Two Token Handling Modes
Dino Secondary supports two ways to handle the asset vs payment tokens:
Freeze mode for ERC-3643 tokens When the offer is selling the ERC-3643 token:
The RWA tokens remain in the seller’s wallet
They are frozen using the ERC-3643 token’s built-in freeze mechanism
When the offer (or part of it) is taken, the relevant amount is unfrozen and transferred
Escrow mode for standard ERC-20 tokens When the offer is selling a non-ERC-3643 token:
Tokens are transferred to the Dino Secondary contract on offer creation
They stay in escrow until the offer is taken, cancelled, or pruned
This design ensures:
RWA tokens remain tightly coupled with their identity/compliance logic
Standard ERC-20s are handled with a classic escrow pattern
Compliance-Aware by Design
Dino Secondary is built for ERC-3643 tokens:
At least one leg of every trade must involve the configured ERC-3643 token for this Dino Secondary instance.
Transfers of that token are subject to the token’s existing compliance rules:
Identity registry checks
Eligibility / jurisdiction rules
Freeze/unfreeze controls
If a transfer would violate compliance, the trade simply cannot be executed.
Shared Liquidity on the T-REX Ledger
All offers for a given ERC-3643 token are stored in the same contract instance on the T-REX Ledger. That means:
Any dApp, broker-dealer, or platform integrating Dino Secondary taps into the same pool of offers.
Liquidity is aggregated at the contract level, not at the UI level.
New interfaces can appear (white-label platforms, wallets, institutional portals, aggregators) and immediately see and use the existing offer book.
Actors & Roles
At a conceptual level, Dino Secondary involves:
Offer Creators (Makers) Investors or institutions who post offers to buy or sell the ERC-3643 token.
Offer Takers Counterparties who accept offers (fully or partially), triggering settlement.
Issuers / Operators Entities responsible for the ERC-3643 token and the market around it. They benefit from shared liquidity and may configure fees and operational parameters.
Platforms & dApps Any interface building on top of Dino Secondary: broker portals, investor dashboards, wallet integrations, etc.
Dino Secondary Contract The on-chain engine:
Stores & updates offers
Manages freezing / escrow of tokens
Enforces expiry and pruning
Handles fees
Relies on ERC-3643 compliance checks at settlement time
At the admin level, the contract uses an AccessManager with roles (such as ADMIN_ROLE and FEE_MANAGER_ROLE) to control pausing and fee configuration. Those details are described on the Admin & Management page.
Trading Model & Offer Lifecycle
1. Offer Creation
A maker:
Chooses:
Which token they are offering (
tokenOut)Which token they want in return (
tokenIn)Amounts and expiry
Calls
createOffer(...)via their preferred dApp or platform.
Under the hood:
If
tokenOutis the ERC-3643 token:Dino Secondary checks that the maker’s free (unfrozen) balance is sufficient
Freezes the offered amount in the maker’s wallet
If
tokenOutis a standard ERC-20:Transfers the offered amount into escrow (the Dino Secondary contract)
Records the offer in storage and emits an
OfferCreatedeventCharges the relevant ecosystem fee for offer creation
2. Taking an Offer
A taker:
Selects an offer and decides how much to take (can be partial).
Approves the appropriate token if needed (e.g. payment token).
Calls
takeOffer(offerID, amount).
Dino Secondary:
Validates the offer is still active and not expired
If the offer is no longer valid, it is automatically pruned and cannot be taken.
Computes the corresponding counter-amount using the offer’s price ratio.
Executes settlements:
Unfreezing & transfer when selling ERC-3643
Escrow release when selling standard ERC-20
Transfers the requested token from taker to maker
Applies volume-based fees and any configured fixed fees.
Updates the offer’s filled amount and marks it:
Partially filled (still active with reduced remaining size), or
Filled (fully executed and closed)
Emits events (partially filled / filled) and charges ecosystem fees.
3. Cancelling an Offer
Makers can cancel their own active offers:
Call
cancelOffer(offerID).Dino Secondary:
Unfreezes ERC-3643 tokens or releases escrow as needed
Marks the offer as Cancelled
Emits
OfferCancelledand charges the ecosystem fee for cancellation
4. Pruning Expired or Invalid Offers
Any address can trigger pruning via pruneOffer(offerID):
If the offer:
Has expired, or
Is underfunded (e.g. maker moved their frozen tokens away or no longer has enough balance)
Then:
Dino Secondary releases any frozen/escrowed tokens
Marks the offer as Expired
Emits
OfferPruned
Pruning prevents stale or unsafe offers from being executed and keeps the active offer set clean.
Compliance & ERC-3643 Integration
Dino Secondary is designed to align with all compliance guarantees of ERC-3643:
The ERC-3643 token itself:
Validates transfers against its Identity Registry
Enforces eligibility rules (KYC/AML, jurisdiction, investor type, etc.)
Manages freeze/unfreeze states
Dino Secondary always interacts with the token using its standard interfaces, which means:
If a transfer would violate compliance, the token reverts and the trade cannot be settled.
Freeze/unfreeze operations respect existing identity and permission structures.
As a result, secondary market activity remains fully compliant with the same rules as primary issuance and transfers.
Fees & Incentives (High-Level)
Dino Secondary supports multiple fee layers:
T-REX Ecosystem Fees Collected via the shared Ecosystem Fee Collector, with different multipliers depending on the operation (offer creation, taking, cancellation).
Asset / Market-Level Fees Configurable by authorized operators (via the
FEE_MANAGER_ROLE), including:A fixed fee per trade
A volume-based fee (percentage) capped to protect users
Details on how to configure, calculate, and monitor these fees are covered in the Admin & Management page.
Integration Patterns for Platforms & dApps
A typical integration with Dino Secondary follows these steps:
Discovery & Display
Query the list of open offers for a given ERC-3643 token.
Display:
Maker, price, remaining size, expiry, direction (buy/sell).
Offer Creation (Maker UI)
Provide a form where users choose:
Sell token / buy token
Amounts and expiry
Guide them through:
Approving tokens (if needed)
Calling
createOffer(...)
Offer Taking (Taker UI)
Allow users to:
Select any open offer
Choose full or partial amount
Use preview helpers (from the Developer Reference) to show:
Exact amounts they will send/receive
Applicable fees
Call
takeOffer(...)and display results.
Offer Management
Expose “My Offers” view:
List of user-created offers
Status, remaining amount, time to expiry
Provide actions to:
Cancel offers
Trigger pruning of expired or invalid offers
Because Dino Secondary is shared infrastructure on the T-REX Ledger, one integration lets your platform:
Access all offers for that token
Co-exist with other platforms and broker-dealers on the same liquidity pool
Dino Secondary in the T-REX Apps Stack
Within the broader T-REX ecosystem:
DinoPrimary handles compliant subscription & redemption (primary market).
DinoSecondary handles intent-based secondary trading for the same ERC-3643 tokens.
DinoFactory deploys both contracts and configures their access control consistently.
T-REX Engine exposes APIs to read offers and interact with Dino Secondary programmatically.
DINO Secondary dApp (and any other integrated front-ends) provide user-facing UIs on top of this shared contract.
Related Documentation
For more details:
Dino Secondary – Admin & Management Roles, pausing, fee configuration, and operational best practices.
Dino Secondary – Developer Reference Solidity interfaces, function signatures, events, error codes, and concrete integration examples.
Last updated