🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Torch Market

by @mrsirg97-rgb

Every token is its own margin market. Depth-adaptive risk engine, treasury-backed lending, real-token short selling. No oracles. No stored baselines. No keep...

Versionv11.1.0
Downloads6,019
Stars⭐ 6
TERMINAL
clawhub install torchmarket

πŸ“– About This Skill


name: torch-market version: "10.7.1" description: Every token is its own margin market. Depth-adaptive risk engine, treasury-backed lending, real-token short selling. No oracles. No stored baselines. No keepers. The pool is the source of truth. license: MIT disable-model-invocation: true requires: env: - name: SOLANA_RPC_URL required: true - name: SOLANA_PRIVATE_KEY required: false - name: TORCH_NETWORK required: false metadata: clawdbot: requires: env: - name: SOLANA_RPC_URL required: true - name: SOLANA_PRIVATE_KEY required: false - name: TORCH_NETWORK required: false primaryEnv: SOLANA_RPC_URL openclaw: requires: env: - name: SOLANA_RPC_URL required: true - name: SOLANA_PRIVATE_KEY required: false - name: TORCH_NETWORK required: false primaryEnv: SOLANA_RPC_URL install: - id: npm-torchsdk kind: npm package: torchsdk@^10.7.1 flags: [] label: "Install Torch SDK (npm, optional -- SDK is bundled in lib/torchsdk/ on clawhub)" author: torch-market version: "10.7.1" clawhub: https://clawhub.ai/mrsirg97-rgb/torchmarket program-source: https://github.com/mrsirg97-rgb/torch_market sdk-source: https://github.com/mrsirg97-rgb/torchsdk website: https://torch.market program-id: 8hbUkonssSEEtkqzwM7ZcZrD9evacM92TcWSooVF4BeT compatibility: >- REQUIRED: SOLANA_RPC_URL (HTTPS Solana RPC endpoint). OPTIONAL: SOLANA_PRIVATE_KEY (disposable controller keypair -- fresh key, ~0.01 SOL for gas, NEVER a vault authority key). OPTIONAL: TORCH_NETWORK ('devnet' for devnet). Without SOLANA_PRIVATE_KEY, operates in read-and-build mode: queries state, returns unsigned transactions. SDK bundled in lib/torchsdk/. No API server dependency.

torch.market

Every token launched on torch gets a funded treasury, a 300M token lending reserve, margin lending, short selling, and on-chain pricing β€” all live from migration.

No external LPs. No oracle feeds. No protocol token. No bootstrapping.

What Torch Is

A protocol where every token launches with its own margin market.

  • Lending: borrow SOL against token collateral from the token's own treasury
  • Short selling: borrow real tokens from the 300M treasury lock, sell on the real market
  • Pricing: Raydium pool reserves β€” no external oracle
  • Depth-based risk engine: max LTV scales with pool SOL depth (25% at <50 SOL, up to 50% at 500+ SOL). Deeper pools are harder to manipulate, so higher leverage is permitted. Combined with per-user borrow caps, the effective LTV for long positions is typically <5% β€” making liquidation structurally near-impossible. No oracles, no stored baseline, no keepers. The pool itself is the source of truth.
  • Liquidation: permissionless β€” anyone can call. Exists primarily as a backstop for shorts and extreme multi-sigma events on longs.
  • Parameters: immutable on-chain β€” no admin key changes them
  • Shorts are not synthetic. Borrowed tokens are real. Selling them moves the real price. Short sellers are market participants contributing to price discovery.

    Token Lifecycle

    CREATE β†’ BOND β†’ MIGRATE β†’ TRADE β†’ MARGIN
                                         β”‚
                                    β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”
                                  LEND     SHORT SELL
                                    β”‚          β”‚
                                  REPAY    CLOSE
                                    β”‚          β”‚
                                  LIQUIDATE  LIQUIDATE
    

    Bonding β€” constant-product curve. SOL splits: curve (100% of tokens to buyer) + treasury (17.5%β†’2.5% dynamic SOL rate). 2% max wallet. Completes at 100 or 200 SOL.

    Migration β€” permissionless. Creates Raydium pool, burns LP tokens (liquidity locked forever), revokes mint/freeze authority permanently, activates 0.07% transfer fee.

    Trading β€” token trades on Raydium. Transfer fees harvest to treasury as SOL. Treasury grows perpetually.

    Margin β€” two capital pools, two-sided margin:

    | Pool | Asset | Purpose | |------|-------|---------| | Token Treasury | SOL | Lending pool β€” borrow SOL against token collateral | | Treasury Lock | 300M tokens | Short pool β€” borrow real tokens against SOL collateral |

    Constants

    SUPPLY          1,000,000,000 tokens (6 decimals)
    CURVE_SUPPLY    700,000,000 (70%)
    TREASURY_LOCK   300,000,000 (30%)
    MAX_WALLET      2% during bonding
    BONDING_TARGET  100 SOL (Flame) / 200 SOL (Torch)
    PROTOCOL_FEE    0.5% on buys
    TREASURY_RATE   17.5% β†’ 2.5% (dynamic decay)
    TRANSFER_FEE    0.07% (post-migration, immutable)
    MAX_LTV         25-50% (depth-adaptive: 25% <50 SOL, 35% 50-200, 45% 200-500, 50% 500+)
    LIQ_THRESHOLD   65%
    INTEREST        2% per epoch (~7 days)
    LIQ_BONUS       10%
    UTIL_CAP        80%
    BORROW_CAP      23x collateral share of supply
    MIN_POOL_SOL    5 SOL (below this: all margin ops blocked)
    MIN_BORROW      0.1 SOL
    PROGRAM_ID      8hbUkonssSEEtkqzwM7ZcZrD9evacM92TcWSooVF4BeT
    

    SDK

    GET QUOTE β†’ BUILD TX β†’ SIGN & SEND
    

    One flow, any token state. The SDK auto-routes bonding curve or Raydium DEX based on the quote's source field.

    import { getBuyQuote, buildBuyTransaction } from "torchsdk";

    const quote = await getBuyQuote(connection, mint, 100_000_000); // 0.1 SOL const { transaction } = await buildBuyTransaction(connection, { mint, buyer: wallet, amount_sol: 100_000_000, slippage_bps: 500, vault: vaultCreator, quote, }); // sign and send β€” VersionedTransaction, ALT-compressed

    Queries

    | Function | Returns | |----------|---------| | getTokens(connection, params?) | Token list (filterable, sortable) | | getToken(connection, mint) | Full detail: price, treasury, status | | getTokenMetadata(connection, mint) | On-chain Token-2022 metadata | | getHolders(connection, mint) | Top holders with balance/percentage | | getMessages(connection, mint, limit?, opts?) | On-chain memos. { enrich: true } adds SAID | | getLendingInfo(connection, mint) | Lending parameters and pool state | | getLoanPosition(connection, mint, wallet) | Loan: collateral, debt, LTV, health | | getAllLoanPositions(connection, mint) | All loans sorted by liquidation risk | | getShortPosition(connection, mint, wallet) | Short: collateral, debt, LTV, health | | getBuyQuote(connection, mint, sol) | Tokens out, fees, impact. source: bonding\|dex | | getSellQuote(connection, mint, tokens) | SOL out, impact. source: bonding\|dex | | getBorrowQuote(connection, mint, collateral) | Max borrow: LTV, pool, per-user caps | | getVault(connection, creator) | Vault state | | getVaultForWallet(connection, wallet) | Reverse vault lookup | | getUserStats(connection, wallet) | Per-user trading volume + rewards-claimed history | | getProtocolTreasuryState(connection) | Protocol treasury: epoch, aggregate volume, distributable amount | | getTreasuryState(connection, mint) | Per-token treasury: SOL balance, tokens held, baseline pool reserves at migration, stars |

    Trading

    | Function | Description | |----------|-------------| | buildBuyTransaction | Buy via vault. Auto-routes bonding/DEX | | buildDirectBuyTransaction | Buy without vault (human wallets) | | sendBuy | Build + simulate + submit vault buy via signAndSendTransaction | | sendDirectBuy | Build + simulate + submit direct buy via signAndSendTransaction | | buildSellTransaction | Sell via vault. Auto-routes bonding/DEX | | buildCreateTokenTransaction | Launch token + treasury + 300M lock | | sendCreateToken | Build + simulate + submit token creation (Phantom-friendly) | | buildStarTransaction | Star token (0.02 SOL) | | buildMigrateTransaction | Migrate to Raydium (permissionless) |

    Margin (post-migration)

    | Function | Description | |----------|-------------| | buildBorrowTransaction | Borrow SOL against token collateral | | buildRepayTransaction | Repay debt, unlock collateral | | buildLiquidateTransaction | Liquidate loan (>65% LTV) | | buildOpenShortTransaction | Post SOL, borrow tokens from treasury lock | | buildCloseShortTransaction | Return tokens, recover SOL collateral | | buildLiquidateShortTransaction | Liquidate short (>65% LTV) | | buildClaimProtocolRewardsTransaction | Claim epoch trading rewards |

    Vault

    | Function | Signer | |----------|--------| | buildCreateVaultTransaction | creator | | buildDepositVaultTransaction | anyone | | buildWithdrawVaultTransaction | authority | | buildWithdrawTokensTransaction | authority | | buildLinkWalletTransaction | authority | | buildUnlinkWalletTransaction | authority | | buildTransferAuthorityTransaction | authority |

    Treasury Cranks (permissionless)

    | Function | Description | |----------|-------------| | buildHarvestFeesTransaction | Harvest 0.07% transfer fees to treasury | | buildSwapFeesToSolTransaction | Swap harvested tokens to SOL via Raydium | | buildAdvanceProtocolEpochTransaction | Advance protocol epoch so previous-epoch rewards become claimable | | buildReclaimFailedTokenTransaction | Reclaim inactive tokens (7+ days) |

    Vault β€” Why Funds Are Safe

    Human (authority)                   Agent (controller, ~0.01 SOL gas)
      β”œβ”€β”€ createVault()                  β”œβ”€β”€ buy(vault)       β†’ vault pays
      β”œβ”€β”€ depositVault(5 SOL)            β”œβ”€β”€ sell(vault)      β†’ SOL to vault
      β”œβ”€β”€ linkWallet(agent)              β”œβ”€β”€ borrow(vault)    β†’ SOL to vault
      β”œβ”€β”€ withdrawVault()  ← auth only   β”œβ”€β”€ repay(vault)     β†’ collateral back
      └── unlinkWallet()   ← instant     β”œβ”€β”€ openShort(vault) β†’ tokens to vault
                                         └── closeShort(vault)β†’ SOL to vault
    

    | Guarantee | Mechanism | |-----------|-----------| | Full custody | Vault holds all SOL and tokens. Controller holds nothing. | | Closed loop | Every operation returns value to vault. No leakage. | | Authority separation | Creator (immutable) / Authority (transferable) / Controller (disposable) | | Instant revocation | Authority unlinks controller in one tx | | No extraction | Controllers cannot withdraw. Period. | | Isolated positions | One loan per user per token. One short per user per token. No cascading. | | Immutable parameters | LTV, liquidation, interest β€” set at deployment. No admin key changes them. |

    Key Safety

    If SOLANA_PRIVATE_KEY is provided: must be a fresh disposable keypair (~0.01 SOL gas). All capital lives in vault. If compromised: attacker gets dust, authority revokes in one tx. Key never leaves the runtime.

    If not provided: read-only mode β€” queries state, returns unsigned transactions.

    Rules: 1. Never ask for a private key or seed phrase. 2. Never log, print, store, or transmit key material. 3. Use a secure HTTPS RPC endpoint.

    Risk

    Positions can be liquidated. Bad debt is possible in extreme conditions. There is no insurance fund. But:

  • Bad debt is isolated β€” one position going underwater cannot affect any other position
  • Per-user caps prevent pool concentration β€” one user cannot drain the lending pool
  • 20% of treasury SOL is always reserved (utilization cap)
  • Liquidation is permissionless β€” no keeper dependency
  • Verification

    71 Kani proof harnesses. 61 end-to-end tests. All passing. Cross-validated by independent audit. Core arithmetic and depth-band boundaries formally verified. See VERIFICATION.md and risk.md.

    Links

  • torch.market | Whitepaper | Risk Model
  • SDK: lib/torchsdk/ | npm | source
  • Program: 8hbUkonssSEEtkqzwM7ZcZrD9evacM92TcWSooVF4BeT