1. 首页
  2. 资讯
  3. 项目

DUO Network以智能合约为核心的分级通证系统

20 世纪最伟大的经济学家之一,诺贝尔经济学奖获得者哈耶克在他 1976 年的著作《货币的非国家化》中提出“私人货币自由竞争”的概念。哈耶克认为政府对货币的垄断没有合理的缘由,相反地,他提出允许金融机构和私人发行货币,并通过自由竞争选出最好的货币。他认为货币价值的稳定性是货币认可度的决定性因素。

近年来虚拟货币的火速发展让哈耶克的观点再次进入大众视野。在去中心化和隐秘性的突破使虚拟货币在私人货币自由竞争中先拔头筹。但大多数虚拟货币价格波动极大,除了吸引投机者外并无主流使用价值。

基于国际经济学的三元悖论,我们提出虚拟货币的三难选择,区块链经济不可同时兼得以下三种目标。如果同时追求其中两种,则需要放弃第三种。

a) 可以严格控制的货币供给
b) 区块链生态经济的快速发展
c) 区块链自身货币的价格稳定

绝大多数区块链经济都拥有严格的货币供应和飞速增长的用户和交易量。然而这导致货币价值的极大波动,吸引了大量投机者炒作价格,导致这类虚拟货币不适合应用于主流支付方式或资产抵押品。

以作为区块链智能合约先驱的以太坊为例,其网络上流通的以太币(ETH)本身具有两种相互矛盾的经济属性。一方面,用户在享用智能合约服务时需要使用以太币支付合约运行燃料费以及付给矿工的挖矿激励;另一方面,以太币作为市值前三的数字资产,其对法币的交易价格波动巨大且被投资人长期看涨。

如果能够把虚拟货币的流通属性与资产属性分离开,并提供给不同需求的用户使用。这将会是对区块链经济的巨大贡献与创新,也是很多稳定币设计的初衷。现有的解决方案通常需要抵押外部资产(法币或黄金),违背了去中心化系统的初衷。 我们将利用智能合约,将以太币的价值拆分为两种代币:一种是具价格稳定属性的稳定币,满足支付及低风险用户的需求;另一种是具有杠杆属性的投资品,符合高风险用户的需求。

DUO 体系

DUO 体系是由分级代币、智能合约和一系列支援组件组成的去中心化应用系统 。设计原型为在美国与中国股市运行多年的分级基金。该产品将指数基金分解成两种 ETF 产品,一种具有稳定收益(类似债券),一种具有杠杆属性(类似股票),为普通股票投资者提供了一种便捷地参与固定收益和杠杆收益的方式。

我们研究发现,基于区块链的数字资产也可以通过类似规则分离成低波动性稳定属性和高波动性杠杆属性的两部分,而智能合约可以以去中介的形式实现绝大部分操作。

1.分级代币

A 级代币 也称为稳定币,其资产净值初始为 1 美元,随时间稳定上升,在下一次折算时获取收益,资产净值重置为 1 美元。净值上升与重置交替进行,由此确保 A 级代币持有者获得稳定收益。A 级代币还可以分解成 A’和 B’或 A0 和 A1,进一步降低波动性,对此我们在学术白皮书中有更多探讨。

B 级代币 也称为杠杆币,B 级代币持有者为 A 级持有者抵御了母基金的风险,由此获得更高的资产杠杆。

2.资产托管智能合约

Beethoven 合约 作为 DUO 体系的核心,托管以太币(ETH),并自动执行多个运作流程,包括分级代币的拆分与合并、计算净值、执行折算等。

3.拆分与合并

用户可以通过往 Beethoven 转入以太币来执行拆分操作。Beethoven 在收到以太币时会自动创设等量的 A 级代币和 B 级代币,并将生成代币存入相应地址。

Beethoven 托管所有用户打入的以太币,任何用户均可通过第三方应用如 Etherscan.io 查询托管的资产,合约创设者不被赋予转移资产的权利。

代币持有者可以通过执行合并操作兑换以太币,具体步骤为:用户发送等量的 A 级和 B 级代币到 Beethoven,Beethoven 将其兑换成等值以太币并转给用户。

DUO Network以智能合约为核心的分级通证系统

4.收益解释

以太币取得的全部收益在扣除支付给 A 级的固定收益后,剩下的全部由 B 级获得。以下例子用来解释分级代币收益情况。

如一个以太币价格是 1000 美元,那么打入 1 个以太币到智能合约将获得 500 个 A 级代币以及 500 个 B 级代币,假如规定 A 级代币的年化收益是 12% ,即每个季度的收益是3% 。

情景一:三个月后,以太币获利 20%, 由 1000 美元涨到了 1200 美元。 A 级获得 15 美元的收益 (回报率 3%),B 级获得 185 美元的收益,B 级的回报率为 185/500 = 37%。

情景二:三个月后,以太币亏损 10%, 由 1000 美元跌至 900 美元。 A 级获得 15 美元的收益(回报率 3%),B 级承担 115 美元亏损,B 级的回报率为 -115/500 = -23%。

情景三:三个月后,以太币价格持平,仍为 1000 美元。A 级获得 15 美元的收益 (回报率3%),B 级承担 15 美元亏损,B 级的回报率为 -15/500 = -3%。

简单来说,代币分级的实质是 B 级持有者向 A 级持有者进行融资,并且以 B 的资产保证 A的本金和利息。因此无论是盈利或亏损,B 的波动都会大于以太币。所以,B 属于杠杆投资,风险和收益都相应放大。一旦以太币价格上涨,B 的杠杆率随之下降,反之亦然。

5.折算

用户选择 B 级代币的主要原因是其杠杆属性,所以 B 级代币需要保持一定的杠杆率才有吸引力。相应的,用户选择 A 级代币是看重 B 级对自身本金的保护作用,一旦 B 的净值过低就无法确保 A 的稳定收益。为了维持 B 级杠杆率并同时确保 A 级稳定收益,我们设计了上折和下折的机制来分别应对杠杆过低和过高的情况。

DUO Network以智能合约为核心的分级通证系统

当 ETH/USD 的价格上涨到一定程度,就会执行上折减少 B的净值,增加 B 的杠杆率。B 级持有者的收益将以 ETH 的形式兑现。

DUO Network以智能合约为核心的分级通证系统

当 ETH/USD 的价格下降到一定程度,就会执行下折减少 B 的杠杆,并增加 B 的净值。在这种情况下,A 级和 B 级的总量将打折,A 级持有者将以 ETH 的形式兑现其稳定收益和部分本金。

6.去中心化杠杆交易/借贷

资产托管智能合约可以让我们将 DUO 体系的设计理念延展到其他场景:使用其他 ERC-20通证作为抵押或者使用任何交易对的价格来源。

比如通过修改资产托管智能合约,我们能以 0x 通证(ZRX)作为抵押和使用 ZRX/BTC 作为价格来源。这样 A 级代币会锚定 BTC 价格,而 B 级代币能获得更高的 ZRX/BTC 杠杆。

再比如以 ETH 作为抵押并使用 ETH/EOS 作为价格来源的资产托管智能合约可以提供锚定EOS 的 A 级代币以及能获得更高 ETH/EOS 杠杆的 B 级代币(即看空杠杆 EOS/ETH)。

所有 DUO 体系下的智能合约都基于以太坊,通过分布式预言机网络获取交易对价格。

DUO 体系通证

从产品设计的角度看,DUO 体系需要一种通证体现体系的成长性。完善的社区奖励和扩张机制与体系的发展密切相关,因此催生了 DUO 体系的功能型通证。

DUO Network Token 是在以太坊发布的 ERC-20 通证。作为 DUO 体系的功能型通证限量发行,DUO 通证主要用于支持 DUO 体系中智能合约的操作。

相关法律法规可能会影响 DUO 通证模型的设计。我们旨在与 DUO 体系社群的沟通中尽可能做到公开透明,及时反馈任何最新情况。

1.转化套利

由于分级代币可以在公开市场中交易,可能出现市值与净值偏离的情况,由此也产生了套利机会。当两种分级代币合起来的价格高于对应 ETH 的市值,交易员可将低价的 ETH 拆分成分级代币并在公开市场高价卖出实现套利。相反的,如果两种分级代币价格之和低于对应ETH 的市值,交易员可通过低价买入分级代币来合并并卖出高价的 ETH 实现套利。

为了参与套利,交易员需要实时关注市场价格并执行相应的套利操作。

2.通证激励(挖矿)

市场上供求关系的变动会导致分级代币价格的波动。DUO 体系鼓励市场参与者进行合理的套利,因为套利行为有利于分级代币价格的稳定。作为激励,DUO 体系将向套利者定期发放 DUO 通证。通证激励额度将和会员的拆分合并的数量以及持有 DUO 通证的数量相关。

3.转化费

拆分和合并代币的时候,Beethoven 会收取少量费用作为转化费。用户可以选择以 ETH 或DUO 支付这部分费用。为了鼓励用户使用 DUO,在早期用 DUO 支付转化费可以享受一定程度的优惠。作为转化费回收的 DUO 将被销毁,直到系统中只剩发行量 50%的通证。

转化收取的 ETH 将主要被用作体系的运营开销,包括价格获取、燃料费等。余下的 ETH 将会作为用于保持体系价格稳定、流动性以及市场宣传的储备。

Beethoven 的收入属于 DUO 社区,我们将会设立对应的非盈利法人实体管理这些收入。

4.通证分配

DUO 通证总量 = 100,000,000 DUO

DUO Network以智能合约为核心的分级通证系统

用户结构

套利者

此类用户通过拆分合并套利获利并获取挖矿奖励。这些套利者会需要实时监控分级代币的市价并在合适时机进行拆分或合并。作为提供流动性和稳定价格的回报,部分套利人将获得额外的 DUO 通证奖励。

A 级持有者

A 级代币持有者期望代币资产价格稳定,且具有稳定的固定并获得稳健收益。这些目标用户包括虚拟货币基金,币圈服务提供商,ICO 项目团队,交易所以及低风险型投资者。当整个虚拟货币市场震荡的时候,A 级代币是理想的避险资产。

由于 A 级代币短中期价值稳定,很适合用于数字货币交易的中间代币。与其他的稳定币相比,买卖 A 级代币并不收取额外的交易费用,其价格随着时间也会稳定上涨。

B 级持有者

B 级持有者通常是追求高杠杆的投机者,他们对 ETH 的价格持有乐观预期,并寻求借入更多的资金投资 ETH。

当 ETH 价格下降时,B 级净值降低,其杠杆随之上升。通常认为,当市场下行的时候,投资者会变得更加保守。而学术研究表明,普通投资者愿意为高杠杆付出更高的溢价。因此对于 B 级代币,当市场下行的时候,会因其杠杆升高而变得更具吸引力。


技术

1.设计与框架

1.1 系统与平台

系统主要由在以太坊(ETH)区块链上运行的智能合约、在云端运行的报价器,事件触发器和网页 APP 这三个主要模块构成。

我们在以太坊区块链上部署了 DUO 体系通证合约、A 级通证通证合约、B 级通证通证合约和 Beethoven 合约 4 个智能合约。前 3 个智能合约是标准 ERC20 通证,而Beethoven 是实现 DUO 体系架构的主体智能合约。用户可以直接同这些合约进行交互,或者通过我们的网页 APP 来进行操作。

我们在 AWS、Azure 及 GCP 上各独立设置了一组报价器,每一组都在运行同样的获取和综合价格的算法,然后 Beethoven 从这三个报价器的价格中决定共识价格。用户可以通过我们的应用或在区块链上直接查看所有发到 Beethoven 的数据。

Beethoven 发送出的 StartPreReset 和 StartReset 两个事件会启动触发器。当这两个事件被发送后,触发器会发送指令到区块链来触发对应的函数,执行状态转化。

1.2 状态转化

状态

Inception:创世状态。一旦从此转化就不能再回到这个状态。此状态只能转化到 Trading 状态。

Trading:通常状态。我们预期系统绝大部分时间都会处于这个状态。可以使用所有的功能。此状态只能转化到 PreReset 状态。

PreReset: 在折算 开始前 等待以太坊 网络同步交易的状 态。绝大多数Beethoven 的功能将会在这个状态被禁止使用,A 级和 B 级通证无法被交易。此状态可以转化到以下三种状态。

UpwardReset:执行上折的状态。此状态只能转化到 Trading 状态。
DownwardReset:执行下折的状态。此状态只能转化到 Trading 状态。
PeriodicReset:执行定折的状态。此状态只能转化到 Trading 状态。

转化

以下是状态转化的简图。合约处于 Trading 状态时会从报价器接收 ETH/USD价格。当 A 级或 B 级通证的净值(NAV)超过了预先设定的值时,合约会转化到 PreReset 状态。PreReset 触发器会将合约转化到 UpwardReset、DownwardReset 或 PeriodicReset 中的一个状态。最后 Reset 触发器会将合约从折算状态转化回 Trading 状态。

DUO Network以智能合约为核心的分级通证系统

1.3 报价器

获取交易

通过 Bitfinex、Kraken、Coinbase/GDAX 以及 Gemini 的 API 中获取ETH/USD 的交易信息,将交易 ID、成交价、交易量以及时间戳存入数据库。

价格聚合

综合成交价格的算法如下:

1) 每个交易所中:

a. 将 1 小时拆分为 12 个 5 分钟的间隔
b. 将每小时最后 5 分钟的交易量加权中位成交价作为此小时的定价
c. 如果最后 5 分钟间隔没有交易,则使用上一个发生交易的区间
d. 如果上个小时没有交易,在聚合价格时忽略这个交易所

2) 全体:
a. 取上个小时所有有效交易所聚合价格的交易量加权平均数作为这个小时的总聚合价格。交易量权重排名第一的最多占 35%价格权重、第二最多占 30%、第三最多占 25%、第四最多占 20%、第五最多占 15%

b. 如果所有交易所都没有有效价格,则使用上一个小时的总聚合价格

提交价格

我们一共有 3 个报价器(分别在 AWS、Azure 和 GCP 3 个不同的平台)将每小时的综合价格提交至 Beethoven。这样做的目的是将黑客攻击报价器的风险最小化。即使三台服务器中的两个被入侵,只要剩下一台还在正常工作,黑客
就无法确保能成功操控价格。

报价器每隔 1 个小时会发送价格到合约,合约每次收到价格后会进入 50 分钟的冷却期,在冷却期发送的价格会被合约忽略。如果智能合约在冷却期过后收到来自同一服务器的多个价格提交,那么除了第一次提交会被接受,其他的提交都会被忽略。如果第一个提交价格与上一个小时的智能合约定价相差在 5%以内,Beethoven 会立即使用收到的价格作为最新定价;否则,Beethoven 会等待第二个价格。

如果第一个价格没有被接受,合约会等待第二个价格。当第二个价格在第一个价格的冷却期之后抵达 Beethoven 合约,如果第二个价格的发送者与第一个相同,智能合约就会立即接受第二个价格。如果第二个价格的服务器与第一个不同,第一个价格则会被接受。当第二个价格在第一个价格的冷却期之内到达 Beethoven 且第二个价格的服务器与第一个不同,合约会首先比较两个价格的到达时间。如果第二个价格的到达时间在预期范围内,智能合约会比较两个价格的值。如果两个价格的差距在接受范围内,第一个价格会被接受,否则智能合约会等待第三个价格。

在第一个价格到达后的冷却期之内所有来自第一或第二台服务器的价格都会被拒绝。当第三个价格在第二个价格的冷却期之后到达 Beethoven,智能合约会检查发送服务器是否跟之前发送价格的服务器相同。如果第三个收到价格的服务器与之前服务器不同,合约会接受第二个价格。如果服务器与之前任意一个服务器相同,则会接受第三个价格。

如果由第三个服务器发出的第三个价格在第二个价格的冷却期之内抵达,Beethoven会检查与第一个价格抵达时间的差值。如果差值过大,接受第一个价格。如果差值在可接受范围内,则取三个价格的中位数。

下图是 Beethoven 选择价格的逻辑:

DUO Network以智能合约为核心的分级通证系统

1.4 折算

用户会在三种折算中的任意一种发生后获得 ETH。我们假设体系内的用户会将收到的 ETH 重新转化为 A 级和 B 级通证并且需要额外支付转化费。因此在实际应用中,Beethoven 会在折算后直接将 ETH 以 A 级和 B 级通证的形式发给用户,不收取任何费用。为了方便用户,三种折算的转化逻辑各有一些细微的差别:

上折:A 级通证持有者会收到 A 级通证作为补偿,而 B 级通证持有者收到的 B 级通证会多于 A 级通证(非 1:1)。可以想象成 B 级通证持有者用收到的一部分 A 级通证换取了 A 级通证持有者收到的所有 B 级通证。系统中的 A 级通证和 B 级通证总量比例还是 1:1(目前设定中,上折后 B 级通证持有者收到的 A 级通证数量严格一定大于 A 级通证持有者能收到的时候到的 B 级通证数量)。因此 A 级通证持有者可以在上折后依然只持有 A 级通证,并不需要做额外转化。

下折和定折:折后 A 级和 B 级通证持有者都以 1:1 的比例收到 A 级通证和 B 级通证,类似无需转化费用的标准拆分。

1.5 地址和余额阈值

理论上所有持有 A 级或 B 级通证的账户都应该执行折算。因此每次拆分和转账发生中,用户地址都会被记录到一个数组中。折算发生时,Beethoven 会循环这个数组并调整每个地址 A 级和 B 级通证的余额。目前以太坊一个交易的燃料限制是 800 万,且Beethoven 调整每个地址需要花费 20,000 单位的燃料,因此我们一个交易中大约能处理 400 个地址。

诸多譬如合并操作或者转账到其他地址的行为都会导致许多用户的 A 级或 B 级通证的余额可以忽略不计。出于对于时间和费用效率的考虑,我们对 A 级和 B 级通证设置了余额下限 0.01,原因如下:

1) 0.01 个 A 级或 B 级通证都大约等于 0.01 USD,低于任何 ERC-20 功能需要花费的燃料费用(当 ETH 价值 500 USD 时,燃料价格等于 2 GWei,那么一笔交易将至少花费 20,000 燃料,约等于 0.02 USD)。因此,我们可以认为这种地址已经不再被使用;

2) 如果有人建立了大量持有小于 0.01 个 B 级通证的地址来避免折算,由于创造这些地址的燃料费会大于地址本身持有 B 级通证的价值,因此这种行为过于昂贵;

3) 即使在 2)提到的情况实际发生,用户的大量地址躲避了下折,那么将 B 级通证从这些地址转出的燃料费依然会高于 B 级通证的价值。

尽管设置下限会导致 A 级和 B 级通证总量的计算出现瑕疵,但是 Beethoven 能够在不影响通证经济的前提下更合理有效地执行折算。在每次合并或转账中,Beethoven 都会检查地址 A 级和 B 级通证的余额是否低于阈值。如果低于阈值,该地址就会从数组中去除。

1.6 体系管理

合约管理体系内共有六个管理角色:报价者 1(pf1)、报价者 2(pf2)、报价者 3(pf3)、转化费收集账号(fc)、运营账号(opt)以及地址池管理者(pm)。pf可以把价格信息发送到 Beethoven,任何时候每个报价者都对应一个云端服务器的地址。fc 负责收集拆分合并的转化费用。opt 负责更新 Beethoven 的特定参数。为了保障合约的安全性,管理系统结构设计可以确保任何单独的地址都无法通过更改 Beethoven而获益。

DUO Network以智能合约为核心的分级通证系统

Beethoven 内的以太坊地址都能被分配到不同的管理角色,每个地址同一时间只能担任一个管理角色。地址池在任何时刻都最少有 2 个地址。一旦被赋予管理角色,这个地址就会被标记并移出地址池,无法再次被加入地址池中。

Beethoven 初期会生成 6 个候选地址和 1 个地址池管理者。pm 可以将 2 个新候选地址加入地址池中。在加入前,从地址池中随机选择的一个地址会被设为新的 pm,同时此地址将被从地址池中剔除。Pm 不能加入使用过的地址,且加入的 2 个新地址不能相同。pm 每次还可以从池中移出地址,同样,每次移除前 pm 都会被随机替换。

地址池的所有地址都有资格成为委托人。委托人可以在地址池中随机选择(除委托人地址外的)地址委托角色。因此就算一个委托人的私钥泄漏,黑客也无法通过委托自己的地址获益。只有当两个账户的私钥都被同一个人掌握,才有可能用一个地址随机委托到另一个地址,然而由于池中地址的数量大,随机委托到另一个地址的概率非常低。而且只要地址池足够大,这个概率会进一步降低。在委托新角色后,委托和受委托的地址都会从地址池中被去除。

由于存在黑客同时掌握两个账户的私钥并控制一个管理角色的可能性,为了降低这个风险,系统内置了一个 1 天的冷却期,即在上次操作后需要等待 1 天才能执行下一个管理操作。同时,每个管理操作都会发送一个事件到区块链上。收到攻击时,我们的团队能够立即检测到入侵行为,并再黑客掌控任何角色前有 1 天的事件关闭其账户。

DUO Network以智能合约为核心的分级通证系统

1.7 安全性分析

智能合约

SafeMath: 检查合约中除迭代外的所有数值计算的溢出和下溢情况。检查运算次序确保临时结果在 256 位正整数之内。
函数限制: Beethoven 的所有重要函数都只能由特定的调用者在特定的的状态下被调用以避免不必要的函数调用。
事件: 每次系统参数或状态改变都会发送一个相关事件,区块链上所有人都可以借此监控对 Beethoven 的更改。

报价器

综合: 报价器的即时性和相关性优先于平稳性和抗操纵性。与金融市场上的期货交割价格不同,报价器并不是必定触发折算事件。杠杆的存在放大了期货市场的资金,引导参与者操纵市场来影响期货合约的交割。与期货不同,分级货币的价值永远不会高于 ETH 市场,因此用户没有操纵 ETH 市场来影响折算价格的动机。

冗余: 我们使用三种不同的云端服务器。
共识: 通过严格算法从三个报价者计算共识定价。

管理系统随机数生成

系统中每次管理操作后都会随机选择新的管理地址。以太坊虚拟机(EVM)不提供随机数生成的函数,因此最浅显的生成随机数的方法就是用block.timestamp,但这样生成的随机数可以被矿工修改。更加安全的方法是使用上一个区块的哈希值,因为它无法被现在的矿工更改。这样做的问题是上一个区块哈希是公开的,虽然区块间隔只有 15 秒,但还是可以通过上一个区块的哈希值预判下一个随机选择的管理地址。更加巧妙的办法是使用用户地址名单的长度和用户地址。地址名单的长度一直在变化且用户地址不能被人为更改。

我们将以太坊的区块哈希值和产品的用户地址名单结合生成随机数。实现逻辑如下:

1) 取得上一个区块的区块哈希值,转化成数字 a
2) 如果用户名单的长度 n 小于等于 255,a 为生成的随机数
3) 如果 n 大于 255,计算 b = a % n,转化第 b 个用户的地址 addr(b)成一个数字,即生成的随机数

2.智能合约

2.1 DUO 体系通证合约

18 位小数的标准 ERC-20 通证。

函数

balanceOf: 返回指定地址的通证余额。
allowance: 返回指定地址的通证授权额度。
transfer: 将通证转移到指定地址。发送 Transfer 事件。
transferFrom: 将授权通证转移到指定地址。发送 Transfer 事件。
approve: 授予指定地址转移通证的权限。发送 Approval 事件。
totalSupply: 返回通证总量。

事件

Transfer: 转移完成后发送。
Approval: 通证额度获得授权后发送。

2.2 A 级通证合约

18位小数的ERC-20封装通证。3.1.1列出的ERC-20功能会被导至Beethoven来实现 A 级通证的实际操作。3.1.2 中列出的事件也适用于 A 级通证。

2.3 B 级通证合约

18位小数的ERC-20封装通证。3.1.1列出的ERC-20功能会被导至Beethoven来实现 B 级通证的实际操作。3.1.2 中列出的事件也适用于 B 级通证。

2.4 Beethoven(监管)合约

实现 DUO 体系的主要合约。

仅可由报价者调用的函数

startContract: 赋予合约初始价格并将状态转化为 Trading 状态。只有在Inception 状态时才可调用。发送 StartTrading 事件和 AcceptPrice 事件。commitPrice: 从外部报价者接收价格并找到共识价格。只有在 Trading 状态才可调用。如果收到价格但没有接受,发送 CommitPrice 事件。如果价格被接受,发送 AcceptPrice 事件。如果新接受的价格 会触发折算, 发送StartPreReset 事件。

任何用户可调用函数

create: 发送 ETH 到 Beethoven,生成 A 级和 B 级通证,发送 Create 和TotalSupply 事件。只有在 Trading 状态时才可调用。用户可以选择以 ETH或 DUO 支付转化费。

redeem: 发送 A 级和 B 级通证到 Beethoven,发送 ETH 到调用者的地址,发送 Redeem 和 TotalSupply 事件。只有在 Trading 状态时才可调用。用户可以选择以 ETH 或 DUO 支付转化费。

calculateNav: 基于当前系统参数提供的价格计算 A 级和 B 级通证的净值。

startPreReset:准备折算。如果等待时间到达预设数值,将系统过渡到三种折算状态中的一种并发送 StartReset 和 TotalSupply 事件;否则发送一个新的StartPreReset 事件并继续等待。只有在 PreReset 状态才可调用。

startReset: 为有足够Gas支付当前计算的用户地址执行折算。如果Gas不足,发送 StartReset 事件并在下一个交易继续进行折算。如果所有用户都已执行折算,发送 StartTrading 事件。只有在 UpwardReset、DownwardReset 或PeriodicReset 状态才可调用。

getSystemAddresses: 返回 A 级和 B 级通证的合约地址和以下 6 个管理角色的当前地址:运营账号、转化费收集者、报价者 1、报价者 2、报价者 3 以及地址池管理者。
getSystemStates: 返回系统状态或参数列表的当前值。
getSystemPrices: 返回上一次折算的价格和上一个接受的价格的值、时间戳和地址。

A 级和 B 级通证函数

balanceOf: 返回指定地址的 A 级或 B 级通证余额。
allowance: 返回指定地址的 A 级或 B 级通证授权额度。
transfer: 将A级或B级通证发送到指定地址。只有在Trading状态才可调用。发送 Transfer 事件。
transferFrom: 将授权的 A 级或 B 级通证发送到指定地址。只有在 Trading 状态才可调用。发送 Transfer 事件。
approve: 授予指定地址发送 A 级或 B 级通证的权限。发送 Approval 事件。totalSupply: 返回 A 级或 B 级通证的总量。

管理员函数

collectFee: 从 Beethoven 提取 ETH 转化费并发送 CollectFee 事件。只能由转化费收集账号在 Trading 状态调用。用来支付转化费的 DUO 通证不能被提取,这些 DUO 通证可以理解为已被销毁,无法再从 Beethoven 中转出。

setValue: 根据预设设定系统参数并发送 SetValue 事件。请参考智能合约了解预设表单。只能在更新期间内被运营账号调用。
addAddress: 向池中加入 2 个新的地址并委托 1 个新的地址成为地址池管理者。发送 AddAddress 事件。只能在更新期间由地址池管理者调用。
removeAddress: 从池中去除 1 个地址并委托 1 个新的地址成为地址池管理者。发送 RemoveAddress 事件。只能在更新期间由地址池管理者调用。
updateAddress: 委托池中 1 个新的地址为指定角色并去除调用地址。发送UpdateAddress 事件。只能在更新期间由地址池中的地址调用。

状态事件

StartTrading: 在状态转化到 Trading 状态后发送。
StartPreReset: 在状态转化到 PreReset 状态后以及在转化为折算前的等待期间发送。
StartReset: 在 状 态 转 化 到 UpwardReset 、 DownwardReset 或
PeriodicReset 状态后以及转化到 Trading 前的折算发生期间发送。
CommitPrice: 在价格抵达合约后发送。
AcceptPrice: 在抵达合约的价格被接受后发送。
Create: 在拆分行为发生后发送。
Redeem: 在合并事件发生后发送。
TotalSupply: 在 A 级和 B 级通证的总量变化后发送。

管理员事件

AddAddress: 在地址加入地址池后发送。
UpdateAddress: 在池中地址被委任角色后发送。
RemoveAddress: 在地址从地址池移出后发送。
SetValue: 在系统参数更新后发送。
CollectFee: 在作为转化费的 ETH 被取出后发送。

通证事件

Transfer: 在 A 级或 B 级通证转账后发送。
Approval: 在 A 级或 B 级通证授权额度被批准后发送。

燃料消耗

DUO Network以智能合约为核心的分级通证系统

关于更多DUO信息:https://www.duo.network/

更多区块链项目:http://www.qukuaiwang.com.cn/news/xiangmu
风险提示:区块链投资具有极大的风险,项目披露可能不完整或有欺骗。请在尝试投资前确定自己承受以上风险的能力。区块网只做项目介绍,项目真假和价值并未做任何审核!

声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。

发表评论

登录后才能评论

评论列表(1条)