Telegram USD
WebsiteMiniapp
  • 👋Welcome
  • Getting Started
    • 🗽Introduction
    • 😢Ecosystem Challenges
      • Low Yield on TON
      • Limited Real-World Integration
      • High DeFi Barriers
    • 🤙A New Path Forward
  • How tgUSD Works
    • 🏠Architecture
      • ▶️Current Version
      • 🌴Core Components
        • Engine
        • Staking
      • 🔮Next Version
    • ⚖️Peg Stability
    • 💰Protocol Revenue
    • 🙋‍♀️Use Cases
      • DeFi
        • Yield Tokenization
        • Lending
        • Dex
        • Leverage Yield Farming
        • Derivatives
        • Arbitrage
      • Cross-Chain Expansion
        • TAC
        • Tycho
  • Rewards
    • 🌟Ambassador Program
    • ✴️What is Torch XP
  • Technical
    • 📖Telegram USD SDK
      • Setup
      • Mint tgUSD
      • Stake tgUSD
      • Unstake stgUSD
      • Get stgUSD Conversion Rate
        • On-chain method
        • Off-chain method
    • 🛠️Deployments
  • Security
    • ✳️Risks
    • 🛡️Audits
  • User Guide
    • How to Mint
    • How to Stake
    • How to Unstake
    • FAQ
  • Legal
    • Terms of Service
  • Privacy Policy
  • Other
    • 🎨Brand Kit
  • Links
    • Website
  • tgUSD Miniapp
  • Telegram Channel
  • X (Twitter)
Powered by GitBook
On this page
  • Step 1: Import modules & Initialize Engine Contract
  • Step 2: Request Mint Order Payload via API
  • Step 3: Build Mint Payload
  1. Technical
  2. Telegram USD SDK

Mint tgUSD

This guide demonstrates how to use USDT to mint tgUSD

Step 1: Import modules & Initialize Engine Contract

import { Address, Cell, TonClient4 } from '@ton/ton';
import { tgUSDEngine } from "@torch-finance/tgusd-sdk";

const tonClient = new TonClient4({
  endpoint: 'https://mainnet-v4.tonhubapi.com',
});

// Engine Contract
const engineAddress = Address.parse("EQBugHw3qUX71i5_mbUMYUAUnxdy513v5zKeLZdVhCp1J8xI")
const engine = provider.open(tgUSDEngine.createFromAddress(engineAddress));

Step 2: Request Mint Order Payload via API

HTTP Request

POST /mint

Request Parameters

Parameter
Type
Required
Description

userAddress

String

✅ Yes

minter address

collateralAssetID

String

✅ Yes

Asset ID of the collateral (must be generated using Asset.ID from Torch SDK)

collateralAmount

String

✅ Yes

The collateral amount needed for this minting process (ensure decimals are included)

Response Fields

Field
Type
Description

signature

String

Hex-encoded signature for on-chain verification

payload

String

Hex-encoded serialized payload

tgUSDAmount

String

The amount of tgUSD to be minted

collateralAmount

String

collateralAmount submitted by the minter

Example

import { Asset } from '@torch-finance/core';
import { Address } from '@ton/core';
import axios from 'axios';

// Prepares mint parameters
const queryId = 8n

// Minter Address
const minterAddress = Address.parse("minter-address")

// USDT Asset
const usdtAsset = Asset.jetton(Address.parse('EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs'));

// Use 0.1 USDT to mint tgUSD
const depositAmount = 100000n;

// Request mint order payload from api
const response = await axios.post('https://tgusd-api.torch.finance/mint', {
  userAddress: minterAddress.toString(),
  collateralAssetID: usdtAsset.ID,
  collateralAmount: depositAmount.toString(),
});

const { signature, payload, collateralAmount } = response.data;

The returned payload will expire after 300 seconds.

Step 3: Build Mint Payload

const mintPayload = await engine.getMintPayload(minterAddress, {
  signature: Buffer.from(signature, 'hex'),
  order: Cell.fromHex(payload),
  collateralInfo: {
    collateralAsset: usdtAsset,
    collateralAmount: BigInt(collateralAmount),
  },
  queryId: queryId,
});
PreviousSetupNextStake tgUSD

Last updated 11 days ago

📖