协议概览

hacds 是运行在 Hacash 主网上的 DeFi 协议。它把 HACD 钻石的评分转化为同质化代币 hacds,并围绕这个代币构建了兑换、做市、借贷三套金融原语。

设计目标

上一版把 hacds 做成刻在钻石上的铭文,导致代币无法拆分、无法自由流通。这一版的核心改动只有一条:把币从钻石上拿下来。

hacds 现在是标准的 Hacash 链上资产:可自由转账、可拆分、可在 AMM 里交易。钻石只作为铸造它的凭证,不再承载它。

三个组成部分

组件职责位置
合约持有全部资产与账本,执行兑换/借贷/赎回Hacash 主网 HVM
节点提供链上查询与交易广播由社区或项目方运行
索引器扫链建台账,提供借款人与 HACD 列表链下服务

新版设计已移除预言机:HACD 评分改由合约链上直读基因计算,不再依赖链下签名证书。

系统架构

整个协议只有一个合约地址,所有状态都在其中。没有管理员,没有升级入口,没有自毁函数。

Hacash 主网 · HVM
HacdsDeFi 合约
AMM LP 借贷 金库
账本:bal:hac / due / loan:* / amm:*
↓↓
节点
查询 · 广播
索引器
扫链建台账
↓
MoneyNex 钱包
签名 + 广播

职责边界

  • 合约 — 唯一的事实来源。所有余额、债务、池子状态都在链上。
  • 钱包 — 只管签名。私钥从不离开用户设备。
  • 官网 — 只构建交易体,不碰私钥,不保存任何用户数据。
  • 索引器 — 只读。合约无法枚举地址,索引器补上这个能力。

资产规格

serial3000
ticketHACDS
namehacds
decimal0
总供给5,963,298,700,000,000 atoms(decimal=0:1 atom = 1 hacds,即 5,963,298,700,000,000 个)
issuerT1A8kaeWqK6wMUw5UMHCA6tMQ1iBdECyH
注意 serial 认别

链上 #1028 的 ticket 也是 HACDS(它的 name 是 "HACD Fragments",属于他人资产)。协议不检查 name/ticket 唯一性,只认 serial。请核对 serial = 2000。

发行量推导

均值 = 全网 HACD 评分总和 / 颗数
     = 492,427 / 138,540
     = 3.55440306

总量 = 均值 × HACD 总发行量
     = 3.55440306 × 16,777,216
     = 59,632,987 分

铸发 atoms = 59,632,987 × 1e8
           = 5,963,298,700,000,000

这个数字可以由任何人独立复算:拉取全网 HACD 列表,按同一套 5 维算法逐颗评分,取均值乘以 HACD 总发行量。

AMM 兑换

恒定乘积做市(x × y = k),费率 0.5%,从输入腿收取。

报价公式

输入 amt,扣费后 net = amt × (1 − 0.005)
输出 = pool_out × net / (pool_in + net)

手续费分配

去向比例说明
LP80%按份额分配
协议储备20%先补赤字,再补储备,余进金库

滑点保护

所有兑换与流动性操作都带 deadline(块高)和 min_out / min_share 参数。任一不满足则整笔回滚,防止被抢跑。

抵押借贷

用户把 hacds 划为抵押品,借出 HAC。

关键参数

参数值含义
借款线200%债务 ≤ 抵押价值 / 2(50% LTV)
清算线160%抵押率跌破 160% 可被清算
价格缓冲20%从满借到清算的下跌空间
清算奖励5%按清算人付款额计,非债务比例
close factor50%单次最多清算一半债务

利率模型

U ≤ 35%:  rate = 2% + 4% × U / 35%
U > 35%:  rate = 6% + 40% × (U − 35%) / 15%

U = 利用率 = 总债务 / HAC 提供者总量
U=0 → 2%   U=35% → 6%   U=50% → 46%

清算

抵押率跌破 160% 后,任何人可发起清算。清算人支付真 HAC,按「付款额 + 5% 奖励」的价值获得对应抵押品。

注意:抵押品交割按付款额计算,不按债务比例。按债务比例会在 160% 抵押率下让清算人拿走借款人几乎全部权益。

HACD 铸造与赎回

铸造(存入 HACD)

存入 1 颗 HACD,按评分铸造等量的 hacds。不打折:1 分 = 1 hacds。

score = score_of(diamond_name)
mint  = score × SCORE_SCALE     // 100%,无折扣

赎回(取出 HACD)

支付 hacds 换回一颗 HACD。基础手续费 0.5%;若该钻石评分高于池内均分,额外收取「挑钻石溢价」。

avg = 池内总分数 / 颗数
premium = min(30%, (score − avg) / avg)
fee = 0.5% + premium

溢价上限 30%,防止有人反复从池子里挑走高分钻石、把低分货留给其他持有人。

评分机制

HACD 评分采用 HIP-5 的五维算法:形状、样式、颜色、命名、编号。

维度说明取值依赖
形状Square / Heart / Circle 等 8 种visual_gene[0..2]
样式仅 Common 形状参与visual_gene[2..18]
颜色名字首字母 + 明暗加成visual_gene + name
命名6 字母的重复/对称加成diamond name
编号顺子、对称数字加成diamond number
链上直读,无预言机

新版合约通过 HVM 内置直接读取钻石基因并在链上算分,不再依赖链下签名证书。这消除了「谁持有预言机私钥谁就能增发」的风险。

合约接口

以下为 #3000 合约的公开接口。所有 external 函数均可由任何人调用,没有权限限制。

源码状态

本章描述的是 #3000 合约的接口,该版本正在做上线前的功能测试。 完整源码将在测试通过后推送到 github.com/s6050105/HacdsDeFi。
该仓库当前包含的是上一版 #2000 合约——已部署运行、同样公开可读,但接口与本章略有差异。

兑换与流动性

函数签名
swap_hac_to_ds(hac_in, min_out, deadline)
swap_ds_to_hac(ds_in, min_out, deadline)
add_liquidity(hac_amt, ds_amt, min_share, deadline)
remove_liquidity(share_burn, min_hac_out, min_ds_out, deadline)
lp_harvest()

借贷

函数签名
loan_add_collateral(ds_amt)
loan_borrow(hac_amt)
loan_repay(hac_amt)
loan_liquidate(borrower, repay, min_coll_out)

查询视图(常用)

函数返回
pool_price当前池价(zhu per atom)
amm_reserves / amm_reserve_ds池子两侧储备
balance_hac(addr)有效 HAC 余额
balance_ds(addr)hacds 配额
loan_health(addr)健康度(万分比)
hacd_coverage()HACD 覆盖率(万分比)
hcut() / lcut()社会化因子(1e12 = 100%)

错误码

合约以非零整数表示失败,整笔交易回滚。下表对应 #3000 版本。

码含义
0成功
2参数非法(数量为 0 / 名字格式错)
11余额不足
20流动性池为空
21滑点保护触发
40超过可借额度
43仓位健康,不能清算
48单笔只能 1 颗 HACD
50全局利用率已达上限
51借款已熔断
52超过单借款人上限
53超过 hacds 供应上限
54HACD 覆盖率不足
56滑点/份额保护触发
59交易已过期(deadline)
61HACD 池记录不足

风险说明

智能合约风险

合约不可升级。一旦部署,任何漏洞都无法修补。请只投入你能承受损失的资金。

价格与清算风险

hacds 价格完全由 AMM 池子决定。池子较浅时,大额交易会产生显著滑点。抵押借贷在价格下跌 20% 后可能被清算。

流动性风险

极端行情下,AMM 池子可能被单向抽干,导致兑换失败或撤池受限。

评分算法风险

HACD 评分基于主观维度(形状、颜色、命名)的量化规则。若评分标准与市场共识偏离,会影响 hacds 的内在价值支撑。