网淘吧来吧,欢迎您!

返回首页 微信
微信
手机版
手机版

Torch Market

2026-03-28 新闻来源:网淘吧 围观:54
电脑广告
手机广告

火炬市场

您来到这里,是因为您需要在Solana上进行交易,并且希望交易安全、快速、灵活且简单。

在该协议上推出的每个代币都是一个自给自足的经济体——一个定价引擎、一个中央银行、一个借贷市场、社区治理——所有这些都包含在一个非榨取式的系统中,其中每一个行动都会形成正和反馈循环。手续费成为借贷收益。借贷收益成为社区流动性。失败的代币成为协议奖励。每一笔流出都对应着另一处的流入。

代币生命周期

CREATE → BONDING → COMPLETE → MIGRATE → DEX
  │         │                     │        │
  │    buy/sell on curve     community    borrow/repay
  │    (treasury grows)       votes      (treasury lends)
  │                                        │
  │                              ┌─────────┴──────────┐
  │                              │                     │
  │                     transfer fees (0.04%)    lending interest
  │                              │                     │
  │                              └─────→ treasury ◄────┘
  │                                        │
  │                                   harvest → sell → SOL → lend → yield
  │
  └── star (appreciation signal, 0.02 SOL)

绑定阶段——通过恒定乘积绑定曲线为代币定价。每次购买都会将SOL分成三部分:绑定曲线(代币给买家)、社区金库(累积SOL)以及10%的代币分配给投票库。早期买家为金库贡献更多(12.5% → 4% 动态比率)。2%的最大钱包持有量防止鲸鱼操控。一个钱包,一票。

迁移——当社区筹集到目标金额(100或200 SOL)时,任何人都可以触发无需许可的迁移至Raydium。两步原子操作:提供WSOL资金 + 创建CPMM池。流动性永久锁定(LP代币销毁)。金库支付池创建费用。投票最终确定——销毁或返还至金库锁定。

迁移后阶段— 经济系统自我维持。每次代币转移都会产生0.04%的转账费,这些费用累积在铸币合约中。任何人都可以将这些费用收取至金库,通过Raydium将其兑换为SOL,并扩大借贷池的规模。代币持有者以其抵押品借入SOL。利息回流至金库。这一循环不断复利增长。

协议奖励— 协议金库从平台上所有代币的绑定曲线购买中收取0.5%的费用。每个周期(约每周),该资金池会分配给交易量≥2 SOL的钱包。活跃的参与者将赚回其所产生费用的一部分。

协议常量

常量数值
总供应量10亿枚代币(6位小数)
绑定层级火焰(100 SOL),火炬(200 SOL,默认)
金库费率12.5% → 4%(随储备金衰减)
协议费用买入0.5%,卖出0%
最大钱包持有量绑定期间为2%
星星成本0.02 SOL
转账手续费0.04%(迁移后,不可更改)
最高贷款价值比50%
清算65%触发阈值,10%奖励
利息每周期约2%(约每周)
最低借款额0.1 SOL
利用率上限资金库的80%
形式化验证48个Kani证明框架,全部通过

SDK会处理所有这些事务——您无需了解代币处于哪个阶段。您获取报价、构建交易、发送交易即可。

GET QUOTE  →  BUILD TX  →  SIGN & SEND
   │              │              │
   │         auto-routes         │
   │     bonding ↔ raydium       │
   │              │              │
   └──── slippage protection ────┘

选择此SDK的原因:

  • 一套流程,适用所有代币获取购买报价+构建购买交易无论代币处于绑定曲线还是Raydium DEX阶段均可使用。SDK会自动进行路由。
  • 完全托管的金库— 您的钱包仅用于签名,本身不持有任何资产。所有SOL和代币都存储于由真人权限控制的链上金库中。
  • 原生VersionedTransaction支持— 所有交易均采用支持地址查找表的v0消息格式。交易体积更小,预留空间更充足,失败率更低。
  • 无需API服务器— 直接通过链上Anchor IDL从Solana RPC读取状态并构建交易。无中间环节。
  • 经过形式化验证— 核心算术运算通过48个Kani证明框架验证其正确性。

SDK组件

所有功能均通过lib/torchsdk/目录实现。本工具包已完整集成以确保可审计性,同时支持npm安装:npm install torchsdk

源代码仓库:github.com/mrsirg97-rgb/torchsdk

快速入门 — 浏览器钱包(Phantom)

import { Connection } from "@solana/web3.js";
import {
  getTokens, getToken, getBuyQuote, getSellQuote, getBorrowQuote,
  sendBuy, sendDirectBuy,
  buildSellTransaction, buildBorrowTransaction, buildRepayTransaction,
  buildLiquidateTransaction, buildCreateVaultTransaction, buildDepositVaultTransaction,
  buildLinkWalletTransaction, createEphemeralAgent,
} from "./lib/torchsdk/index.js";
import type { WalletAdapter } from "./lib/torchsdk/index.js";

const connection = new Connection(process.env.SOLANA_RPC_URL);

// Wrap the wallet adapter for signAndSendTransaction
const walletAdapter: WalletAdapter = {
  publicKey: wallet.publicKey,
  signAndSendTransaction: (tx) =>
    wallet.sendTransaction(tx, connection).then((sig) => ({ signature: sig })),
};

// ── Browse the market ──────────────────────────────────────────────
const { tokens } = await getTokens(connection); // all tokens, no limit
const bonding = tokens.filter((t) => t.status === "bonding");
const migrated = tokens.filter((t) => t.status === "migrated");
console.log(`${tokens.length} tokens — ${bonding.length} bonding, ${migrated.length} migrated`);

// ── Buy into a bonding curve token ─────────────────────────────────
const mint = bonding[0].mint;
const quote = await getBuyQuote(connection, mint, 500_000_000); // 0.5 SOL
console.log(`${quote.tokens_to_user / 1e6} tokens for 0.5 SOL (${quote.source})`);

// signAndSendTransaction — Phantom gets the final tx, no mutation, no warnings
const buySig = await sendBuy(connection, walletAdapter, {
  mint,
  amount_sol: 500_000_000,
  slippage_bps: 200,
  vault: wallet.publicKey.toBase58(),
  quote,
});
console.log(`Bought: ${buySig}`);

// ── Sell half ──────────────────────────────────────────────────────
const sellAmount = Math.floor(quote.tokens_to_user / 2);
const sellQuote = await getSellQuote(connection, mint, sellAmount);
const { transaction: sellTx } = await buildSellTransaction(connection, {
  mint,
  seller: wallet.publicKey.toBase58(),
  amount_tokens: sellAmount,
  slippage_bps: 200,
  vault: wallet.publicKey.toBase58(),
  quote: sellQuote,
});
const sellSig = await wallet.sendTransaction(sellTx, connection);
console.log(`Sold ${sellAmount / 1e6} tokens for ~${sellQuote.output_sol / 1e9} SOL: ${sellSig}`);

// ── Borrow against a migrated token ────────────────────────────────
const ascended = migrated[0];
if (ascended) {
  const borrowQuote = await getBorrowQuote(connection, ascended.mint, 100_000_000); // 100M tokens collateral
  console.log(`Can borrow up to ${borrowQuote.max_borrow_sol / 1e9} SOL`);

  const { transaction: borrowTx } = await buildBorrowTransaction(connection, {
    mint: ascended.mint,
    borrower: wallet.publicKey.toBase58(),
    collateral_amount: 100_000_000,
    sol_to_borrow: Math.floor(borrowQuote.max_borrow_sol * 0.5), // borrow 50% of max
    vault: wallet.publicKey.toBase58(),
  });
  const borrowSig = await wallet.sendTransaction(borrowTx, connection);
  console.log(`Borrowed: ${borrowSig}`);

  // Repay the full amount
  const { transaction: repayTx } = await buildRepayTransaction(connection, {
    mint: ascended.mint,
    borrower: wallet.publicKey.toBase58(),
    sol_amount: Math.floor(borrowQuote.max_borrow_sol * 0.5),
    vault: wallet.publicKey.toBase58(),
  });
  const repaySig = await wallet.sendTransaction(repayTx, connection);
  console.log(`Repaid: ${repaySig}`);
}

// ── Liquidate an underwater position ───────────────────────────────
// Anyone can liquidate a position above 65% LTV and earn a 10% bonus
import { getAllLoanPositions } from "./lib/torchsdk/index.js";
if (ascended) {
  const positions = await getAllLoanPositions(connection, ascended.mint);
  const underwater = positions.positions.find((p) => p.health === "liquidatable");
  if (underwater) {
    const { transaction: liqTx } = await buildLiquidateTransaction(connection, {
      mint: ascended.mint,
      liquidator: wallet.publicKey.toBase58(),
      borrower: underwater.borrower,
      vault: wallet.publicKey.toBase58(),
    });
    const liqSig = await wallet.sendTransaction(liqTx, connection);
    console.log(`Liquidated ${underwater.borrower.slice(0, 8)}: ${liqSig}`);
  }
}

快速入门 — 代理端(服务端密钥对)

import { Connection, Keypair } from "@solana/web3.js";
import {
  getBuyQuote, buildBuyTransaction, buildCreateVaultTransaction,
  buildDepositVaultTransaction, buildLinkWalletTransaction,
  createEphemeralAgent,
} from "./lib/torchsdk/index.js";

const connection = new Connection(process.env.SOLANA_RPC_URL);
const authority = Keypair.fromSecretKey(/* authority keypair */);
const agent = createEphemeralAgent(); // in-memory, lost on exit

// Build unsigned → sign locally → send raw (no wallet popup)
const quote = await getBuyQuote(connection, mint, 100_000_000);
const { transaction } = await buildBuyTransaction(connection, {
  mint,
  buyer: agent.publicKey,
  amount_sol: 100_000_000,
  slippage_bps: 500,
  vault: authority.publicKey.toBase58(),
  quote,
});
const signed = agent.sign(transaction);
const sig = await connection.sendRawTransaction(signed.serialize());
console.log(`Agent bought: ${sig}`);

地址查找表

所有交易都使用硬编码的ALT进行压缩。14个静态地址(程序ID、Raydium账户、全局PDA)从每个32字节减少到1字节。

网络ALT地址
主网GQzbU32oN3znZa3uWFKGc9cBukpQbYYJSirKstMuFF3i
开发网3umSStZSLJNk5QstxeQB12a2MSDh4o8RgSzT76gigJ8P

Torch金库——为何您的资金安全

安全边界在于金库本身,而非密钥。

Human Principal (hardware wallet)        Agent (disposable, ~0.01 SOL for gas)
  ├── createVault()                        ├── buy(vault=creator)   → vault pays
  ├── depositVault(5 SOL)                  ├── sell(vault=creator)  → SOL returns to vault
  ├── linkWallet(agentPubkey)              ├── borrow(vault)        → SOL to vault
  ├── withdrawVault()   ← authority only   ├── repay(vault)         → collateral returns
  └── unlinkWallet()    ← instant revoke   └── star(vault)          → vault pays 0.02 SOL
保障方式
完全托管金库持有全部SOL和所有代币。控制器不持有任何资产。
闭环机制所有操作产生的价值都会回归金库。无资产外流。
权限分离创建者(不可变)vs 授权者(可转让)vs 控制器(可废弃)。
即时撤销授权者可在单笔交易中解除控制器的关联。
仅授权者可提款控制器无法提取价值。句号。

保险库可由人类主体完全创建和注资。代理永远不需要访问资金。没有SOLANA_PRIVATE_KEY时,代理在只读和构建模式下运行——查询状态并返回未签名的交易以供外部签名。


操作

查询(无需签名)

功能描述
getTokens(connection, params?)列出代币,支持筛选和排序。默认返回所有代币(除非指定,否则无限制)。
getToken(connection, mint)完整详情——价格、资金库、投票、状态
getTokenMetadata(connection, mint)链上 Token-2022 元数据
getHolders(connection, mint)代币持有者列表
getMessages(connection, mint, limit?, opts?)交易捆绑的备忘录。{ enrich: true }添加SAID验证
getLendingInfo(connection, mint)已迁移代币的借贷参数
getLoanPosition(connection, mint, wallet)单一贷款头寸
getAllLoanPositions(connection, mint)按清算风险排序的所有头寸
getVault(connection, creator)金库状态(余额、关联钱包)
getVaultForWallet(connection, wallet)反向查找——通过关联钱包查找金库
getVaultWalletLink(connection, wallet)钱包的关联状态

报价

函数描述
getBuyQuote(connection, mint, solAmount)预期代币数量、手续费、价格影响来源:'bonding' | 'dex'
getSellQuote(connection, mint, tokenAmount)预期SOL数量、价格影响来源:'bonding' | 'dex'
getBorrowQuote(connection, mint, collateral)最大可借SOL — LTV、资金池、用户上限

交易

所有构建器返回{ transaction: VersionedTransaction, message: string }

函数描述
sendBuy通过signAndSendTransaction构建、模拟并提交金库购买交易。推荐用于Phantom和浏览器钱包。
sendDirectBuy通过signAndSendTransaction构建、模拟并提交直接购买交易(无金库)。
buildBuyTransaction构建未签名的金库购买交易。传递quote用于自动路由(bonding或DEX)
buildDirectBuyTransaction构建无需签名的直接购买(仅限人工钱包)
构建卖出交易通过金库卖出。传递报价以实现自动路由
构建创建代币交易发布一个新代币。community_token: true(默认)= 0% 创建者费用
构建收藏交易收藏一个代币(0.02 SOL,抗女巫攻击)
构建迁移交易将绑定完成的代币迁移至 Raydium(无需许可)

金库管理

功能签名者描述
构建创建金库交易创建者创建金库 + 自动链接
构建存入金库交易任何人存入 SOL(无需许可)
构建提取保险库交易授权提取SOL
构建提取代币交易授权提取代币
构建链接钱包交易授权链接控制器钱包
构建取消链接钱包交易授权撤销控制器访问权限
构建转移授权交易授权转移管理员控制权

借贷(迁移后)

功能描述
构建借款交易以代币为抵押借入SOL(通过保险库路由)
构建还款交易偿还债务(通过保险库路由)
构建清算交易清算水下仓位(贷款价值比>65%,10%奖励)
构建领取协议奖励交易领取周期交易奖励(金库路由)

国库自动执行(无需许可)

功能描述
构建收取费用交易将Token-2022转账费用收取至国库
构建兑换费用为SOL交易通过Raydium将收取的代币兑换为SOL
构建回收失败代币交易回收闲置7天以上的代币

SAID协议

功能描述
验证SAID(钱包)检查验证状态与信任等级
确认交易(连接,签名,钱包)提交交易报告用于信誉追踪

临时代理

import { createEphemeralAgent } from "./lib/torchsdk/index.js";

const agent = createEphemeralAgent(); // in-memory keypair, lost on exit
// agent.publicKey — pass to linkWallet
// agent.sign(tx) — handles both VersionedTransaction and legacy

密钥安全

保险库是安全边界,而非密钥。

SOLANA_PRIVATE_KEY已提供:

  • 必须为一次性密钥对——仅需约0.01 SOL作为燃气费
  • 所有交易资金存放于保险库
  • 若遭泄露:攻击者仅获微量资金,权限可单次交易撤销
  • 密钥永不离开运行时环境——无传输、无记录

若未提供:

  • 只读模式——查询状态,返回未签名交易
  • 运行时环境不接触任何私钥材料

规则

  1. 绝不索要私钥或助记词。
  2. 绝不记录、打印、存储或传输密钥材料。
  3. 使用安全的HTTPS RPC端点。
变量必需用途
SOLANA_RPC_URLSolana RPC 端点
SOLANA_PRIVATE_KEY一次性控制器。永不一个金库权限密钥。
TORCH_NETWORK开发网用于开发网。主网请省略。

链接

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Memory System V2 下一篇:my-daily-news

相关文章

您是本站第291027名访客 今日有259篇新文章/评论