đŠ Gluon
Gluon is an orderâbook Layerâ2 blockchain built with Rollkit and secured by Sunrise, a next-generation L1 combining data availability and liquidity.
The base layer for Interliquid Networks.
The rollup implements Sunriseâs ProofâofâLiquidity (PoL) and leverages IBC for seamless asset movement.
Key Features
Section titled âKey Featuresâ| Category | Description |
|---|---|
| Orderâbook DEX | Deterministic matching logic, priceâtime priority, and onâchain settlement. |
| Web2âstyle onboarding | OAuth registration abstracts privateâkey management; user keys never leave the client device. |
| Offâchain matching | Highâthroughput matching engine batches trades before finalising them on chain. |
| Doubleâsignature model | All funding transactions require both user and operator signatures, preventing unilateral withdrawals. |
| IBC deposits/withdraws | Native IBC channels connect Gluon to external CosmosâSDK chains for trustâminimised transfers. |
Developer Overview
Section titled âDeveloper Overviewâ- Source code: https://github.com/sunriselayer/gluon
- Sunrise Rollkit adapter: https://github.com/sunriselayer/sunrise-rollkit
- Modules used:
x/order,x/perp,x/customauth(see protobuf definitions).
Authentication & Key Management
Section titled âAuthentication & Key ManagementâGluon introduces a CustomAuth flow that pairs a webâgenerated ECDSA key with an onâchain account:
- OAuth signâup â server deterministically derives user address.
- Device pairing â browser generates an AES key and an ECDSA key; the latter is AESâencrypted and stored serverâside.
- Verification key is submitted on chain (pairing transaction).
Signâup Flow
Section titled âSignâup FlowâThe sign-up process is intentionally simple and user-friendly:
- Users can sign up using familiar OAuth providers (Google, GitHub, etc.)
- The application automatically derives a Sunrise address for the user
- No manual wallet setup or seed phrase management required
sequenceDiagram
autonumber
User ->> App : OAuth signâup
App --> App : Derive Sunrise address
This streamlined process ensures users can start trading quickly without blockchain complexity.
DeviceâPairing Flow
Section titled âDeviceâPairing FlowâThe device pairing process implements several security measures:
- Generates unique encryption keys for each device
- Keeps sensitive ECDSA keys encrypted and secure
- Establishes a verification mechanism for future transactions
sequenceDiagram
autonumber
User ->> Browser : Initiate pairing
Browser --> Browser : Generate AES key
Browser --> Browser : Generate ECDSA key
Browser --> Browser : Encrypt ECDSA with AES
Browser ->> App : Upload encrypted key + verification key
App ->> Gluon : Tx: register verification key
This multi-step process ensures secure key management while maintaining user control.
Order Creation (offâchain)
Section titled âOrder Creation (offâchain)âThe off-chain order creation process enables high-performance trading:
- Orders are signed locally using the userâs encrypted key
- Signatures are verified before being accepted
- Orders remain off-chain until batched for matching
sequenceDiagram
autonumber
User ->> Browser : Place order
Browser --> Browser : Decrypt ECDSA key
Browser --> Browser : Sign order payload
Browser ->> App : Order + signature
This approach allows for sub-second order placement while maintaining security.
Order Cancellation (onâchain)
Section titled âOrder Cancellation (onâchain)âThe cancellation process ensures order integrity:
- Cancellations are recorded on-chain for transparency
- Prevents replay attacks of old signatures
- Provides immutable proof of cancellation
sequenceDiagram
autonumber
User ->> App : Cancel order
App ->> Gluon : Tx: register order + cancel
This on-chain record is crucial for maintaining order book integrity.
Withdrawal (IBC)
Section titled âWithdrawal (IBC)âThe withdrawal process implements multiple security layers:
- Requires dual signatures from both user and operator
- Implements a 24-hour security delay for new key pairs
- Uses IBC for trust-minimized cross-chain transfers
sequenceDiagram
autonumber
User ->> Browser : Withdraw request
Browser --> Browser : Decrypt ECDSA key & sign tx
Browser ->> App : Signed withdrawal
App --> App : Operator signs tx
App ->> Gluon : Tx with dual signatures
Gluon --> Gluon : Verify signatures & 24âŻh keyâpairing delay
Gluon ->> ChainX : IBC transfer
This multi-layered approach ensures secure and reliable asset transfers across chains.
No external wallets (e.g., MetaMask) are required; keys remain clientâside and are revocable onâchain.
Trading Lifecycle
Section titled âTrading LifecycleâOrder Creation (offâchain)
Section titled âOrder Creation (offâchain)âOrders reside offâchain until batched in the first matching transaction, enabling subâsecond UX.
sequenceDiagram
autonumber
User ->> Browser : Place order
Browser --> Browser : Decrypt ECDSA key
Browser --> Browser : Sign order payload
Browser ->> App : Order + signature
Order Cancellation (onâchain)
Section titled âOrder Cancellation (onâchain)âAn onâchain record prevents operators from replaying stale user signatures.
sequenceDiagram
autonumber
User ->> App : Cancel order
App ->> Gluon : Tx: register order + cancel
Withdrawal (IBC)
Section titled âWithdrawal (IBC)âA 24âhour latency between keyâpairing and fund movements mitigates operatorâkey compromise.
sequenceDiagram
autonumber
User ->> Browser : Withdraw request
Browser --> Browser : Decrypt ECDSA key & sign tx
Browser ->> App : Signed withdrawal
App --> App : Operator signs tx
App ->> Gluon : Tx with dual signatures
Gluon --> Gluon : Verify signatures & 24âŻh keyâpairing delay
Gluon ->> ChainX : IBC transfer
Order Module (protobuf)
Section titled âOrder Module (protobuf)âThe order subsystem is defined in gluon/order/*. Core types:
The BaseOrder message defines the fundamental structure for all orders in the system:
- Each order is associated with a specific user address and trading pair
- Orders can be either limit orders (with a specified price) or market orders
- The expiry timestamp prevents replay attacks and ensures order freshness
- Amount and price are stored as strings to handle arbitrary precision
message BaseOrder { string address = 1; // bech32 user address string denom_base = 2; // e.g., "uatom" string denom_quote = 3; // e.g., "uusdc" OrderDirection direction = 4; // BUY / SELL string amount = 5; // base amount string limit_price = 6; // optional google.protobuf.Timestamp expiry = 7; // antiâreplay}
enum OrderDirection { ORDER_DIRECTION_UNSPECIFIED = 0; ORDER_DIRECTION_BUY = 1; ORDER_DIRECTION_SELL = 2;}The OrderDirection enum provides a type-safe way to specify order sides:
- Uses standard protobuf enum conventions with an UNSPECIFIED default
- Clearly distinguishes between buy and sell orders
- Helps prevent order-side related bugs through compile-time checking