说明书
关于本项目
您如何将不稳定的加密资产转化为稳定的价值存储?您如何利用你的数字资产来获得一种新的、安全的货币形式?
EOSDT 的核心组件协同工作,允许用户生成与美元挂钩、由自己持有的、加密技术支持的稳定币。EOSDT 稳定币是一种有用的价值存储媒介,拥有多种应用场景,例如对冲市场动荡、在去中心化的交易所为交易对提供法定货币报价,甚至可以在接受加密货币支付的商家完成在线支付。
有四种主要的智能合约,操作如下:
市场数据智能合约通过Oraclize.it、Delphioracle 和 LiquidApps 几个可信渠道从外部市场引用加密货币价格。
仓位智能合约接收用户的加密货币并持有它,没有任何的人为参与或保管风险。
清算智能合约让“监护人”和市场参与者通过清算抵押品不足的用户仓位来赚钱。当他们的抵押品跌破 130% 的临界水平时,这将自动发生。监护人能要求以低于当前市场的价格来清算抵押品或剩余 EOSDT,以 NUT 代币支付相关费用,然后将其重新分配回系统。
治理智能合约允许持有 NUT 代币的用户提交提案以更改同风险和稳定性相关的 EOSDT 参数。 NUT 持有人还可以投票支持他们希望通过系统的 EOS 抵押品支持的 EOS 节点列表。此功能可驱动整个 EOS 生态系统的增长、发展和成熟。
EOS 使用委托权益证明,这为社区提供了很大的灵活性,可以由大多数指定的利益相关者做出即时的高级决策,如回滚和错误修复。这一委托投票系统让排名前 21 位的 EOS 区块生产者通过抵押来生产区块—— EOS 通证持有者必须在三天内抵押代币才能投票。前 21 名候选人组成主要的区块生产者,其余成为备选区块生产者。他们所获得的票数决定他们的优先级排序。
抵押 EOS 通证就像付出了机会成本一样——您只能在三天后才能取消抵押,在那之前您都无法使用它。很少的费用就能让您可以访问整个 EOS 系统。如果将它们用在带宽上面,意味着您可以发送交易,交易的大小将占用您的带宽资源。
EOSDT 使用 EOS 区块链,因为它比以太坊更快,交易费用几乎为零,并为实施跨链解决方案提供了良好的基础设施。目前支持 EOS 加密货币作为抵押品,并准备支持其他抵押品资产。
技术回顾
最好的去中心化应用程序不仅提供快速的交易处理时间,而且具有足够强大的基础设施,可以同时为多个用户提供高质量的体验。EOSDT 是第一个基于 Equilibrium 构建的稳定币,Equilibrium 是基于 EOS 的多链框架,用于加密技术支持的稳定币和 DeFi 产品。相对应的,Equilibrium 是建立在 EOSIO 技术堆栈之上,因为它提供了去中心化的存储和通用基础结构,从而比竞争对手能更有效地运行 EOS dApp。这里的交易费用实际上为零,有一个合理的资源平衡流程,并且交易处理时间更快。 这些功能将 EOSIO 技术与目前市场上的其他第二代区块链区分开来。
稳定性
EOSDT 的稳定性来自于至少以等值的美元抵押品来支持 EOSDT 供应。EOSDT 价值同 1 美元价值挂钩,以实现这一目标。外部价格反馈会对抵押品进行估值,系统会持续监控抵押品与 EOSDT 总供应量的比率,以确保其始终满足最低阈值
有几种外部因素和内部机制可以帮助维持市场平衡。
做市商
这些大型参与者因其大量抵押品而产生了许多 EOSDT。他们愿意利用 EOSDT 和 USD 之间的价差获利,从而在各种交易所中建立市场。
监控人
这些参与者愿意在 EOSDT 偏离 1 美元时从锚定美元价格中获利。套利背后的机制相当简单:当 EOSDT 的价格升至 1 美元以上时,就会产生通过提供抵押品生成 EOSDT 并在市场上出售的额外动机。这增加了 EOSDT 的供应,使其价格降至 1 美元。
当 EOSDT 的价格跌破 1 美元时,仓位持有人会有动力在公开市场上购买 EOSDT 并偿还头寸。 这减少了 EOSDT 的供应,并能再次将其价格提高到 1 美元。
Equilibrium 费用
Equilibrium 管理费的变化激励持仓者偿还或增加 EOSDT 持有量,从而促使 EOSDT 价格上涨或下跌,直到 EOSDT 价格平稳。每次用户执行某项操作时系统都会计算“Equlibrium”费用,并根据治理智能合约定义的年度百分比率来计算此费用。自推出以来,“Equlibrium”费按 0.0% 的年利率设置。
如果 EOSDT 的市场供应过剩,治理机构可能会决定适当提高相关费用,以诱使持仓者抛售他们的“昂贵”仓位,从而降低稳定仓的供应。如果 EOSDT 的需求过剩,治理可能会降低利率,以诱导用户创建更多的“廉价”仓位,从而增加总供给。这类似于各国央行通过调整短期利率来控制经济的货币供应。
一套智能合约
本文档是 EOSDT 的简介,您能通过它了解 EOSDT 的设计方式。
EOSDT 的核心逻辑由以下智能合约组成:
账户名 | 来源合约名称 | 说明 |
---|---|---|
eosdtcntract | eosdtcntract | 本合约实现了 EOSDT 用户的仓位管理逻辑 |
eosdtsttoken | eosio.token + temporary burn | 稳定币合约基于本机的 eosio.token 合约,但具有其他刻录和发行方法来帮助控制系统的供应。它还列出了所有允许生成 EOSDT 稳定币的发行(仓位)合约 |
eosdtnutoken | eosio.token + permanent burn | 该实用程序代币合约管理本机实用程序代币(NUT)。它基于原生的 eosio.token 合约,但还有一种额外的永久销毁功能,用于控制实用程序代币的供应机制。 |
eosdtorclize | eosdtorclize | 此合约存储并刷新了用户抵押品和实用程序代币的汇率。 它从三个不同的预言机(Oracle)获取数据:Rovable、Delphioracle 和 Liquidapps DSP 节点。 Oraclize.it (目前称为可证明的). |
eosdtliqdatr | eosdtliqdatr | 本合约处理担保不足的用户仓位的清算流程。 |
eosdtgovernc | eosdtgovernc | 框架的治理合约为 NUT 代币持有人提供了一种投票权,可以就改变框架的参数进行投票。 |
eosdtbpproxy | eosdtbpproxy | 节点对代理帐户投票。它将用于 REX 抵押。 |
仓位合约
仓位合约设定了用户仓位管理的逻辑。它还存储框架的全局风险参数,这些参数指定系统的行为方式、支配位置创建过程以及用户位置管理的方式。EOSDT 的全球风险参数是通过治理机制配置的,这意味着 NUT 持有人可以对更改框架参数的提案进行投票。如果大多数人都同意新参数,那么这些参数将成为常态。
ctrsettings表格:
设置 | 链上名称 | 说明 |
---|---|---|
全局锁 | global_lock | 如果整个系统担保不足,则关闭状态指示器将设置为 1 |
次数 | time_shift | 当我们将时间转移到应计费用时,用于测试。 |
清算账户 | liquidator_account | 参考清算人合约 |
Oraclize 帐户 | oraclize_account | 参考喂价合约 |
EOSDT 代币 | sttoken_account | 参考 EOSDT 代币合约 |
NUT 代币 | nutoken_account | 参考 NUT 代币合约 |
管理费 | governance_fee | 默认情况下,设置为每年 0%,以 NUT 实用程序代币支付。偿还 EOSDT 后,该机制将永久减少 NUT 代币的供应。 |
Equilibrium 费用 | stability_fee | 默认情况下,年利率为 1%,以 EOSDT 稳定币支付,作为 EOSDT 的利率。 |
临界抵押率 | critical_ltv | 抵押品与贷款价值的最低可接受比率。默认设置为 130%。 |
清算罚金 | liquidation_penalty | 系统默认收取 15% 的清算罚金,从仓位抵押品中收取此百分比。 |
清算人折扣 | liquidator_discount | 被清算的 EOSDT 和抵押品可享受 3% 的折扣,以激励仲裁员从清算合约中将其赎回。 |
清算价格 | liquidation_price | 在系统进行全网结算并锁定仓位合约以进一步进行用户资金结算时设置的最终价格。 |
NUT 清算分量 | nut_auct_ratio | 此参数用于定义使用 NUT 买断清算合约剩余的单独抵押品时,清算罚金中有多少将进入清算合约剩余的单独抵押品。该参数当前设置为 12%。 |
NUT 折扣 | nut_discount | 可从清算合约处使用 NUT 购买被清算抵押品和 REX 的利润,价格比当前 NUT 的预言机喂价低 6%。 |
REX 实际利润 | profit_factor | 此参数用于定义 REX 的利润分配。目前,REX 利润的 88% 流向抵押品持有人,另有 12% 流向清算合约以购买 NUT。仅适用于 EOS 抵押品合约。 |
投票期 | vote_period | 系统投票以重置投票衰减的秒数。将用于 BP 投票/ REX 功能。当前未使用,因为投票是实时进行的。默认为 10 天(以秒为单位)。仅适用于 EOS 抵押合约。 |
抵押周期 | stake_period | 这指定了系统向 REX 合约进行抵押以及从 REX 收取利润的间隔。 默认设置为 5 天(以秒为单位)。 |
准备金率 | reserve_ratio | 显示 EOS 抵押品在 REX 中所占比例。仅适用于 EOS 抵押合约。 |
抵押权重 | staking_weight | 定义 REX 中每一个抵押期所持有的系统抵押品的数额。仅适用于 EOS 抵押品合约。 |
代理账户 | bpproxy_account | 参考投票代理账户。仅适用于 EOS 抵押合约。 |
治理账户 | governc_account | 参考治理合约 |
推荐质押 | referral_min_stake | 此参数指定我们推荐计划中的参与者需要抵押多少 NUT 代币到仓位合约中,以便能够代表他们将用户引导到合约并获得一小部分 Equilibrium 的费用。 |
推荐率 | referral_ratio | 当用户通过其Web界面终止其仓位时,归因于推荐Equilibrium费用的比例。 默认情况下= 50% |
抵押品账户 | collateral_account | 指定抵押代币的帐户。对于 EOS 来说是 eosio.token。 |
抵押品 | collateral_token | 指定抵押代币的报价和精度。例如,“ 4,EOS”表示抵押品是具有 4 位数精度的 EOS 通证。 |
仓位合约的作用和方法
方法名称 | 参数 | 说明 |
---|---|---|
用户调用的操作 | ||
positionadd | 创建一个空仓位实体并将调用方设置为所有者。 |
|
posandrefadd | 利用“转介”创建仓位。 |
|
positiondel | 检查仓位中是否包含 EOSDT。将抵押品偿还给所有者。平仓。 |
|
positiongive | 将仓位所有权转移到新帐户。 |
|
collateral add (transfer) | 在仓位中添加抵押品。 |
|
colateraldel | 从仓位中移除抵押品。 |
|
debtgenerate | 在这里生成稳定币。 |
|
debtburnback (transfer) | 偿还并销毁 EOSDT |
|
close | 关闭现有仓位 |
|
margincall | 结清抵押品不足的仓位,转移仓位中的 EOSDT,将抵押品转移给清算合约,并支付罚款。 |
|
margincallde | 当预言机(Oracle)服务通过费率更新调用我们的合约时将调用该方法(Method)。 如果存在要清算的仓位,将创建延期追加保证金通知,并将在下一个区块链交易中清算该仓位。 |
|
内部系统操作 | ||
margincalpos | 将 ltv_ratio 按升序排列整理 ltvratios表,通过此操作来关闭多个仓位 | N/A |
reinit | 此私有系统函数在将费用转移到清算合约之前会计算连续调用之间累计的费用。每次调用仓位时都会调用此函数。 | N/A |
receivecolat | 这将对清算合约账户进行身份验证,并将所请求的抵押品代币转移到清算合约。 | N/A |
receivestable | 这将验证清算人帐户,并将 EOSDT 的请求数量转移到清算人合约。(用于 Equilibrium 费用不为零的剩余拍卖) | N/A |
fillltvratio | 填写 ctrltvratios 合约表 | N/A |
delltvratio | 清除 ctrltv 比率表 | N/A |
contractinit | 反对 | N/A |
currentver | 返回当前版本以进行调试 | N/A |
globallock | 这将锁定仓位合约,禁用除 Close() 之外的所有与仓位管理相关的方法。 它还固定了抵押品/美元的价格,从而方便用户偿还费用。 它将清算罚款和折扣设置 为0%,并将关键抵押率设置为 1。 此方法适用于全网关闭机制。 | N/A |
settingsset | 用于在合约部署进行时对清算合约选项进行设置。 | N/A |
unstakeall unstakeback withdrawall | 从 REX 解除抵押并提取所有抵押品(在 REX 出现紧急情况时手动处理) | N/A |
voteproducer | 每个投票期间投票给eosdtbpproxy的操作(action)。仅适用于EOS抵押品合约。 | N/A |
Web 应用程序(自助服务网关)
EOSDT 用户可以通过访问 https://equilibration.io/EOSDT 生成由抵押品支持的稳定币。多个桌面和移动钱包支持与仓位合约之间的所有通信。所支持钱包的完整列表可在 https://equilibration.io 上找到/
清算人合约
该合约管理剩余的 EOSDT 和抵押品之间的余额。它还跟踪来自被清算仓位的 EOSDT 负债总额。
剩余的 EOSDT 累积在清算合约上,根据当前的 Equilibrium 费用从系统 EOSDT 的总供给中产生。EOSDT是作为抵押品出售的,即所谓的“债务拍卖”。债务拍卖有助于分配系统中剩余的 EOSDT。
抵押品余额来自收到追加保证金通知的仓位,在清算人合约上累积。这些抵押品将被出售,以换取 EOSDT——即所谓的“抵押品拍卖”。抵押品拍卖包括 EOSDT 负债,这些负债来自于收到保证金通知的仓位。
清算人合约的操作和方法
方法/转移 | 说明 | 示例 |
---|---|---|
转移 EOS | 该交易通过提供抵押品以固定折扣从清算合约中购买剩余的 EOSDT。 |
|
转移 EOSDT | 通过此交易,您能按当前市场价格的一定折扣从清算合约中购买抵押品。它向清算合约提供剩余的 EOSDT。 |
|
转移 NUT | 此交易使用 NUT 以折扣价从清算合约 NUT_COLLAT_BALANCE 池购买抵押品。 |
|
转移 NUT | 此交易使用 NUT 以折扣价从清算合约 NUT_COLLAT_BALANCE 池购买抵押品。 |
|
内部系统操作 | ||
reducedebts | 此操作将在清算合约上按最小值销毁当前的 EOSDT“坏账”和剩余的 EOSDT。此内部功能通过销毁操作和减少供应来消除不良的 EOSDT。 |
|
settingset | 用于在合约部署进行时对清算合约选项进行设置。 |
|
transbaddebt | 当仓位被清算时,仓位合约将调用此方法来增加清算合约上的“坏账”金额。 |
|
unlockliqdtr | 该方法会检查是否存在未被清算的仓位,并计算出最终拍卖价格,即清算合约中 EOSDT 坏账除以其 EOS 余额。它解锁了清算步骤。 |
|
currentver | 返回当前版本以进行调试。 |
|
paraminit | 初始化空参数表 |
|
监控机器人
清算合约的设计让 EOSDT 用户拥有争夺的套利机会。清算合约不断提供被清算的 EOSDT 和抵押品供出售。守护机器人可以追加保证金,催缴风险头寸,并从合约中购买不良 EOSDT 或抵押品。任何用户都可以运行机器人来与其他用户竞争,他们将以具有激励性的清算折扣购买剩余的 EOSDT 或清算抵押品。
存在买断所有多余抵押品的机会,这些抵押品是从清算合约中累积的各种费用:清算、REX 利润和节点奖励。机器人允许以折扣价购买带有 NUT 代币的抵押品。然后将 NUT 代币重新分配回治理合约,并消耗掉部分 NUT,从而减少 NUT 的总供应量。
守护机器人与监控合约与连锁清算
价格合约
EOSDT 的稳定性取决于抵押品的实时定价,这样系统就知道何时对担保不足的仓位触发追加保证金要求。除了准确知道抵押品价值之外,系统还需要 NUT 实用程序代币的价格,以便在用户偿还稳定费用时计算相应的管理费。
系统使用三个不同的喂价程序(Provable、Delphi Oracle和Liquid Apps)实现冗余,并根据这些预言数据库提供的数据来计算中间值。该中间值是所有链上计算中使用的最终参考价格。
有关费用合约的详细说明,请访问Equilibrium 框架知识库并且阅读那里的价格合约
治理合约
EOSDT 使用本地 eosio.forum 契约结构开展系统治理,但进行了以下修改:
提议有两种:参数更改提议和常规提议。
仅 NUT 持有者能生成提案。
提案的最长有效期为 30 天。
过期的提案将被冻结三天。
想要提案成功通过,需要:
目前至少NUT供应量的51%是被投入到投票中的,就像简单的多数股东投票一样。
至少 55% 的选票是“赞成”的
NUT 持有者能生成提案并更改系统参数,有效地控制 EOSDT 的开发和运行
除了参数更改和系统管理外,合约还允许 NUT 持有人投票支持 EOS 节点。为了换取 Equilibrium 的 EOS 抵押品合约权益,节点将把可获得的全部 EOS 抵押品权益中所产生利润的 90% 当做奖励进行支付。这笔奖励将重新分配给抵押品持有人和 NUT 持有人。奖励的绝对金额是根据整体 EOS 抵押品和相应的 Equilibrium 代理投票权重动态计算的。
治理设置表
设置 | 链上名称 | 说明 |
---|---|---|
最低投标门槛 | min_proposal_weigh | 用户只有持有 NUT 的数量超过 min_proposal_weigh 才能向治理合约提交提案。 |
冻结期 | freeze_period | 给到期/已完成的建议冻结期,默认为3天。 |
最低参与率 | min_participation_rate | 在投票过程中,至少要有目前NUT供应量的51%参与,才能使提案有效,就像简单的多数股东投票一样。 |
追加保证金成功 | success_margin | 至少 55% 的人赞成通过一项提案。 |
排名前列的持有者数量 | top_holders_amount | 按代币数量排名,前 10 位的 NUT 持有者需要参加提案投票,以使其成为有效提案。 |
最大 BP 数量 | max_bp_count | Equilibrium 代理投票支持的区块生产者数量。目前有 30 个 BP 获得 Equilibrium 投票。 |
最高的 BP 票数 | max_bp_votes | 单个用户质押投票的最大 BP 数量。默认情况下为 3。 |
最低投票 | min_vote_stake | 投票给 BP 所需的最少 NUT 数量。默认情况下为 2 个 NUT。 |
解除抵押周期 | unstake_period | 投票者在将其 NUT 代币从治理合约中解除之前必须等待的时间。默认情况下为 10 天。 |
奖励分享比例 | reward_weight | BP 利润的 88% 奖励给抵押品持有人,12% 归 NUT 持有人 |
抵押收益 | stake_reward | 显示 Equilibrium 代理 BP 将与抵押品和 NUT 持有者分享的利润比例。 |
治理合约的作用和方法
方法名称 | 说明 | 示例 |
---|---|---|
用户调用的操作 | ||
bpregister | 在治理合约上登记 BP,以参与奖励分享计划 |
|
bpunregister | 从奖励分享计划中注销 BP 身份 |
|
bpsetparams | 特定节点的奖励变更金额,不能小于参数 govparams.min_reward 的最小值。 |
|
propose | 向 eosdtgovernc 合约提出新的提案。一般建议类型有3种: 0 - 参数变更建议 1 - 普通建议 2 - BP 投票 第二种类型是预留给BP的投票,决不会被外部提案人使用。 |
|
expire | 提案过期。只有提案的创建者才能终止它。 |
|
transfer | 将 NUT 转移(抵押)到合约用于投票支持提案(选民实体在 GOGROGERS 表中创建) |
|
unstake | 从治理合约中解除抵押的 NUT 代币 |
|
vote | 为指定的提案投票 0 - 意味着“不!” 0 - 意味着“可以!” |
|
unvote | 撤消某项提案的投票 |
|
内部/专用系统操作 | ||
addposcntr | 将其他抵押品类型的持仓合约添加到治理合约参考表中,以便它可以控制其参数 |
|
remposcntr | 删除附加抵押品类型的仓位合约。 |
|
reinit | 此专用系统功能会计算连续调用之间的累计奖励,然后再将其转移到抵押品持有人和清算人合约。每次调用投票/取消投票操作时都会调用此函数,外部 cron 服务也会定期调用此函数 |
|
clnproposal | 清除提案表——删除过期的提案 |
|
currentver | 返回当前版本以进行调试 |
|
settingsset | 用于在合约部署进行时对清算合约选择进行设置。 |
|
apply | 对已投票通过和批准的提案进行更改。 |
|
applybpproxy | 在每一份仓位合约中,使用 eosdtbpproxy 为 BP 重新投票(这样做是为了保持投票权重不变) |
|
bpvotescount | 用于调试的服务操作(已弃用) |
|
calcnutbal | 用于调试的服务操作(已弃用) |
|
voterreborn | 用于调试的服务操作(已弃用) |
|
全局关闭
该系统可以自我锁定,让 EOSDT 持有者赎回他们的抵押品。这种全网停摆机制存在于黑天鹅事件或其他不可预见的情况下,这些事件或情况会使价格突然出现负面波动。当系统变得担保不足,系统的贷款与价值比率降至 1 以下时,它可以自动停止运营。当系统逻辑有关键更新并且需要迁移到新代码时,可以安全地暂停。
全网关闭机制是仓位合约的一部分。有一个单独的应急基金(eosdtstfund 合约捆绑包),其主要目的是确保用户在系统破产时能够获得其全部抵押品。在全网关闭时,任何抵押比率低于 100% 的仓位都将直接从这些合约获得资金。
全局关闭的操作和方法
方法名称 | 说明 | 示例 |
---|---|---|
globallock | 这将锁定仓位合约,禁用除 Close() 之外的所有同仓位管理相关的方法。 |
|
close | 此方法仅在系统锁定时有效。将所有仓位平仓至抵押比率为 1 后,它将转移 EOSDT 坏账和仓位抵押品。 |
|
unlockliqdtr | 这将检查是否存在未偿还的仓位,并计算最终拍卖价格,即清算合约的 EOSDT 坏账以及其 EOS 余额。 它解锁了清算合约的方法(Method)。 |
|
generatedebt | 一种当 EOSDT 需要在别处履行义务时,以拍卖价格生成 EOSDT 的辅助方法。 |
|
应急基金合约
essettings表格:
参数 | 说明 |
---|---|
unstake_period | 此参数控制用户从资金合约中提取 EOS 之前必须等待多长时间。默认设置为 30 天(以秒为单位)。 |
mindeposit | 基金合约可接受的最低保证金。默认情况下为 10 EOS。 |
maxdepositors | 每份合约所支持的存款人数量。默认情况下为 1000。 |
措施和方法:
方法/转移 | 说明 | 示例 |
---|---|---|
deposit /转移 EOS | 将EOS存入应急基金合约。 |
|
withdraw | 从应急基金合约中撤回 EOS。提款有 30天 的锁定期。 |
|
sendeos | 计算需要将多少 EOS 转移到清算人合约以平衡清算合约 auction_price 和 liquidation_price. 根据基金合约的相对权重减少其每个仓位。 |
|
settingsset | 用于在合约部署发生时对合约选项进行设置。 |
|
paraminit | 初始化空参数表 |
|