diff --git "a/doc/DMCX \347\273\217\346\265\216\346\250\241\345\236\213.md" "b/doc/DMCX \347\273\217\346\265\216\346\250\241\345\236\213.md" index bc2cb0c..b13b9b9 100644 --- "a/doc/DMCX \347\273\217\346\265\216\346\250\241\345\236\213.md" +++ "b/doc/DMCX \347\273\217\346\265\216\346\250\241\345\236\213.md" @@ -1,282 +1,284 @@ -# DMC20 核心经济模型设计 +# DMCX 核心经济模型设计 -相比DMC,DMC20的经济模型会更加简洁。希望通过一些简单的,可博弈的公式让每个人都能用自己的方式和策略,充满信心的加入到去中心存储市场中来。经济模型设计引导的博弈是阳谋,在推动整个去中心存储生态的算力规模增大的同时,推动DMC20价格的上涨。 +相比DMC,DMCX的经济模型会更加简洁。希望通过一些简单的,可博弈的公式让每个人都能用自己的方式和策略,充满信心的加入到去中心存储市场中来。经济模型设计引导的博弈是阳谋,在推动整个去中心存储生态的算力规模增大的同时,推动DMC20价格的上涨。 -## DMC20 挖矿的基本流程 +## GWT、DMCX以及之间的兑换 -### 存储交易市场挖矿 +### GWT/DMCX基本理念介绍 -1. 出售存储资源的用户被称作供应商,可以挂卖单,卖单应详细的描述其存储资源的定义和价格。约定: +1. GWT的基本逻辑来源于传统的央行货币增发理论(无上限) +首先有一个合理的基础CPI设定,可以理解成存100块钱定期在银行,每年的利息就是一个合理增发量。考虑到Web3属性,我们认为比较合理的一个终局是每个月2%的利息。 -- 存储总大小, -- 存储单价(定价单位从0.125到8,单位是GWT(Gb per Week Token) -- 存储有效时间(系统规定最小有效期为24周), -- 单次购买的最小大小(需小设置为2GB)。 -- 存储质量 +2. 如果经济体很小,或在高速增长,那么增发率会进一步提高以增加货币供给的速度 +根据现在的总算力规模,和算力规模增长速度,对利率进行修正。最大可以让月度增长率达到30%。 -2. 挂卖单时矿工用GWT缴纳质量保证金,用来在存储出现问题时赔付给用户。 +3. 公共数据挖矿和私有数据挖矿还有一些自己的业务逻辑,来对GWT的产出效率进行修正,其根本目的是规范让矿工的行为更常规 -``` -保证金总额 = 卖单总空间*有效时间*单价*质保比率 -``` +4. DMCX是每周期固定释放的,因此GWT挖的再多,一个周期能兑换的DMC也是固定的。GWT产出快时,DMCX能兑换的GWT就越多 -系统有要求最小质保比率(0.5),用户可以根据实际的市场竞争调高该保证金。存储价格,质保比率会影响供应方在算力奖励里的比率。 -比如用户有100G空间,挂单24周,价格是2,质保比率是0.5,那么在挂单时,矿工需要准备好 `100*24*2*0.5 = 2400`个GWT的质保金。 +5. DMCX是权益币,主要用途是:销毁得到GWT,质押得到分红,提案投票。 -3. 有需求的用户(需求方)可以选择一个已挂单购买自己需要的空间 +### DMCX 的释放模型 -``` -存储费用=需求空间*剩余有效时间*单价。 -``` -用户并不能选择有效时间。当一个存储订单的剩余有效时间小于系统的最小存储有效时间时,用户无法购买该存储订单。为了降低GAS Fee,用户在购买空间时应设置数据的MixHash. +从2024年8月开始一共有420个周期,每个周期大概是现实世界的1周。每21个周期进行一次难度调整。难度调整后的周期释放的Token是上一个周期的80%。总释放为5亿DMC。 -4. 已成交订单进入等待(数据)状态。数据交付的流程是需求方首先根据供应方公开的账号信息,通过链下协议将数据传输给供应商。供应商收到数据后调用合约接口确认该数据的MixHash。此后订单进入交付状态。 +第1-21周,每周最多释放480万枚DMC。随后的第21-42周,每周最多释放480万*0.8枚DMC。 -5. 未进入交付状态的订单双方都可以随时取消。取消后,用户会立刻得到退款,矿工则是回复了该存储订单的空间。 +### DMCX<->GWT的兑换 -6. 订单进入交付状态12周后,可以调用“提现操作”,提现操作会让供应方得到收入+算力奖励GWT,让用户得到算力奖励GWT。此时系统会在该过程中抽取一部分交易费用GWT。 +通过exchange.sol合约的接口,用户可以在一个周期里进行GWT<->DMCX的兑换。GWT和DMCX的兑换比率(ex_rate)是动态变化的.ex_rate每个周期开始时确定,在整个周期内不变。 -7. 矿工可以随时减少卖单的有效剩余空间。有效剩余空间减少后,矿工会得到退还的质保金。 +基于该ex_rate: -8. 当矿工发现数据丢失时,可以主动声明数据丢失。此时只会赔付给用户质保金的80%,并拿回剩余的20%。 +- 可以将1000个GWT兑换成 ( 1000 / ex_rate) 个DMCX,兑换得到的DMCX来自本cycle待释放的DMCX(如果待释放DMCX消耗完了该调用会失败),消耗的GWT会进入DMC DAO的分红池。 +- 可以将1000个DMCX兑换成 ( 1000 * ex_rate * 1.1) 个GWT,该调用总是会成功,消耗的DMCX会被销毁。 -9. 供应方因为正常的技术理由可以申请订单请假(请假的频率基于有效长度有最大限制),订单请假期间其无法发起存储挑战。供应方可以在主动调用合约接口将请假状态的订单恢复正常。 +#### ex_rate的变化 -10. 存储订单可以协议取消(一方发起,另一方同意),此时双方都会得到剩余交付时间的退款。 +ex_rate变化的基本逻辑是: -11. 使用官方的挖矿软件不会碰到其它异常情况,因此本文不讨论存储挑战等情况下的经济模型 +- 如果一个cycle里的DMCX都被兑换完了,那么下一个cycle的ex_rate就会增加,增加的比率和兑换完的时间有关,兑换的速度越快则ex_rate增加的越多,最多增加20%。 +- 如果一个cycle里的DMCX没有兑换完,那么下一个cycle的ex_rate就会减少,剩余的未兑换DMCX越多则ex_rate下降的越多。ex_rate的下降最多为-20%。未兑换完成的DMCX会平滑的分配到未来的一些周期里,影响这些周期的可释放DMCX数量。 + +### 质押DMCX的分红奖励 + +DMCX的持有者可以将自己的DMCX质押到DMC DAO中,质押的DMCX会参与分红。分红的奖励来自于DMC DAO的分红池.其基本规则是: + +- dividend_cycle: 分红周期,每次DMC DAO的分红池获得收入都会打入当前周期。获得收入时,还会检查当前时间与本周期启动时间的差,如果差大于3天,则开始一个新的分红周期,新的divident_cycle是当前cycle,并把上一个cycle标记为结束。 +- 已结束的cycle里有确定的总收入和总质押DMCX数。 +- 用户质押的DMCX,总是进入下一个分红周期(要等待下一个分红周期的开始) +- 用户可以从已结束的cycle里提取自己的分红奖励,提取的奖励是 (用户在该cycle质押的DMCX数 / 该cycle总质押DMCX数) * 该cycle总收入 + +### DMC DAO -### 公共数据挖矿 +DMCX DAO主要有两个主要的合约组成 -我们不提供公共数据挖矿的自动挖矿程序,公共数据挖矿更像是GWT持有者参与的另一个挖矿游戏。 +1. 分红合约 (dividend.sol) +2. 提案与投票合约 (proposal.sol) -从DApp的角度来说,公共数据挖矿的流程是: -1. 安装DApp -2. 在DApp的网页中配置存储空间 -3. 通过质押GWT来获得有效的公共数据存储空间,目前该值为有效空间*16*64,也就是说获得1G的有效公共数据存储空间,需要质押1024个GWT. -4. 浏览公共数据,选中公共数据后尝试SHOW Proof来获得GWT -5. SHOW Proof会冻结(质押)一定数量的GWT,数量和SHOW成功后的回报有关。用户可以在SHOW之前通过DAapp的界面来决定质押的数量 - 需要额外冻结的GWT一般与SHOW成功的回报有关。SHWO成功得到的回报越大,则需要冻结的GWT越多。 -6. SHOW Proof会将公共数据的MixHash加入用户的公共数据持有列表,并消耗有效公共数据存储空间。 -7. 用户可以随时释放公共数据来获得更多的有效公共数据存储空间 -8. 通过释放未使用的公共数据存储空间,用户可以拿回质押的GWT +通过上述两个合约,DMCX DAO可以实现分红和治理。功能如下: -DApp提供了一系列API,可以让有技术的玩家制定更符合自己需要的策略来自动的玩公共数据存储挖矿,赢得更多的收益。 +1. 任何DMCX的持有者,都可以在分红合约里质押DMCX并得到DMCX生态收入的分红。 +2. 每个地址质押DMCX后有 `3天`的锁定期。 +3. 任何质押了DMCX的用户都可以参与投票,投票后其票数为质押的DMCX数量。每个提案每个用户只能投票一次。 +4. 质押DMCX满足一定条件的用户(目前是大于等于5万DMCX)可以发起投提案(投票),提案的截止日期不大于3天。 +### GWT 全网兑换(未开放) -### 传输证明 -1. 传输证明的核心是,矿工在给用户传输数据的过程中,用户不断确认 “矿工A在时间T内向用户B传输了数据D” -2. 实现上,关键是用户用专用工具(或带身份的网关)下载数据,并在获得数据的过程中提交传输证明 -3. 矿工通过提交传输证明(的集合),可以得到奖励 -4. 传输证明可以是累计的,也可以是单次的。用一个sessionid来表达。同一个sessionid的传输证明,取时间戳最大的那个 -5. 传输证明的验证者既可以是中心化的,也可以是一个去中心化合约。验证的关键是防止反复提交 +DMC我们选择一条链首发(XLayer),以后GWT可以在所有的EVM兼容链上发行(依旧需要基金会部署合约) +我们通过去中心资产桥来实现不同链之间的GWT的兑换 +DMCX不支持跨链兑换。 + +### DMC1.0 -> DMCX (未开放) + +从风险的角度考虑,我们实现的是单向转换(应该没有去中心跨链桥支持DMC1.0)。 +基本是自动化系统,平均登记到转出的时间在3天内。 +从安全的角度考虑,一个地址每天能兑换的DMCX的数量是有效的 +## 公共数据挖矿 -### 用torrent发布公共数据 -1. 我们可以验证一个种子是否被发布到DMC网络 -2. 用户消耗手续费将种子发布到DMC网络 -3. 对tracker进行改造 +公共数据挖矿合约里一共有3类用户,分别是:Supplier,Data Owner,Data Supplier。Supplier保存了完整的公共数据,通过SHOW数据的存储证明来获得激励(公共数据挖矿),Data Owner是公共数据关联的NFT的Owner,Sponoser是公共数据的赞助商,通常是第一个将NFT加入到公共数据合约中的用户。 -### BT下载挖矿 -1. 用户发布种子,消耗GWT -2. 用户加速下载,消耗GWT -3. 用户A上传给用户B,用户B构造传输证明给A,随后用户A向Tracker提交传输证明成功,赚取GWT -4. 任何人都可以查询用户在某个文件上是否有足够的余额(每个用户都有通用余额和指定数据的专用余额) -5. 用户通过支付GWT,可以提高指定数据的余额 -6. 用户A通过定义提交种子文件的存储证明,可以得到公共数据挖矿的奖励 +公共数据挖矿的基本流程是: +1. Sponsor创建公共数据,并给公共数据充入第一笔GWT余额。这笔GWT一部分会进入公共数据的本轮竞赛奖池。 +2. Supplier质押GWT成为Supplier +3. Supplier在矿机上保存公共数据,并在适当的时机展示公共数据的存储证明(SHOW),获得奖励。奖励一方面来自公共数据的余额,一方面来自于算力奖励。 +4. Supplier在SHOW成功后,公共数据在本轮竞赛中的积分会增加。积分增加的多少取决于数据的大小。 +5. 一段时间后本轮竞赛结束,分数最高的前32个公共数据会按比例瓜分本轮竞赛奖池。 +6. 获胜数据的Sponsor,Data Owner ,Supplier可以按比例瓜分该数据的获奖金额 -## 算力奖励 +### 创建公共数据需要准备的GWT -算力奖励的是GWT -奖励的基本逻辑是:系统流通的GWT总量,要比系统的总存储能力略高。因此随着系统里存储能力的增加,GWT需要增发。 +创建公共数据的用户需要为公共数据充入第一笔GWT余额,为了保障后续的公共数据挖矿的正常运行,该余额有一定的最小值要求。最小值的计算公式如下: ``` -奖励 = 持有算力* 存储质量比率 * 系统挖矿难度比率 * 时长 +创建时需要准备的GWT = 公共数据最小质押率(16) * 公共数据大小(单位GB) * 最小时长(96周) * 创建倍率(3倍) ``` -简单的说,1个100G的存储空间,1周获得的奖励是 100GWT *(存储质量比率 * 系统挖矿奖励比率) -存储质量比率和当前订单的 质押率和单价 有关。质押率越高,单价越高,质量存储比率越高。其取值范围是:0.05-8 -系统挖矿奖励比率是系统当前的参数,与系统本周期的总算力增长率,GWT的总发行量,供需关系有关。系统算力增长越快,挖矿奖励比率越高。其取值范围是: -两个比率函数的最后都进入了一个平滑函数,用于限制最大值和最小值。并且通过曲线,我们把最佳收益点放在了价格为1,质押率为2的状态。(假1陪2)。系统增长率 +首次充值的80%会成为公共数据的余额,20%会进入本轮竞赛奖池。 -系统的算力增长率每时每刻都在变化,从简化计算的逻辑来说,我们使用简单的平均数算法来得到一个近似值。 -算力增长率 = (上一次提现时的算力增长率 + 提现时的算力增长率) / 2 -长期来看,算力增长率是一个逐渐下降的函数。,因此,尽量减少提现次数能更好的吃到算力增长率早期较高的红利。 -核心算法如下: +### Supplier(矿工) SHOW一个公共数据需要准备的GWT质押币 -```python -def reward(self, capacity, duration,is_supply,order): - # duration的单位是周 - return capacity * duration * get_quality_rate(order) * get_mining_rate(is_supply) +Supplier(矿工)是真正保存公共数据的人,他们把公共数据保存到本地,并在合适的时机SHOW存储证明以得到奖励。DMCX的存储证明基于ERC7585构造,要出示一个存储证明,就必须基一个“基准块高度”开始计算,在有效块高度前(目前是3个区块,在XLayer上大概是10秒,包含上链时间)完成计算并提交到链上就是一次有效的存储证明。ERC7585的机制里,链上的合约并不能100%验证存储证明的正确性,而是基于博弈模型:如果有人发现了一个更好的存储证明,那就说明之前上链的是Fake的存储证明(挑战成功)。挑战成功的矿工会拿走提交Fake证明用户的质押币。 + + +基于上述流程,矿工在开始公共数据挖矿之前必须需要准备一定的质押币。质押币的需求和其潜在收益有关,公式如下: + +***Normal模式GAS费高,质押币需求低*** + +这里的质押是根据SHOW 数据大小的一般性质押,需要的质押币数量是: +``` +pledgeRate *_dataSizeToGWT(dataSize) * sysConfig.minLockWeeks ``` -## 公共数据存储的算力奖励 -1. 每次成功Public Data Show都能获得算力奖励,奖励的一部分给到矿工,一部分打入公共数据的余额 -2. 每次Show都会更新这一周期内公共数据的总Show次数,并根据Show次数决定挖矿奖励系数(超过5次后,Show奖励会减少) - 奖励 = 时长(最长为2周)* 公共数据大小 * 公告数据挖矿基础奖励比例 *该公共数据奖励调整系数 - 因此,一个用户的首次SHOW不会得到GWT算力奖励 +Normal模式下,Show成功时间的计算是第二次合约调用,因此对于有大量balance的公共数据使用Normal模式无法快人一步得到更大的收益。 -3. 每次Show后会增加本周期的总算力 -4. 切换周期后,会统计本周期的算力增长率(最小0),并根据 算力增长率 与 总公共数据大小 得到公共数据系统挖矿基础奖励比率。(0.2-2.4附近) - 算力增长率越大,挖矿奖励比率越高 - 总公共数据大小约小,挖矿奖励比率越高 +***immediately模式 GAS费低,质押币需求高*** +这里的质押是指根据SHOW收益决定的质押,和数据的Balance有关。需要锁定的Supplier的质押币数量是: +``` +(datablance*0.1*2) + pledgeRate *_dataSizeToGWT(dataSize) * sysConfig.minPublicDataStorageWeeks +``` +当datablance过低时,立即模式附加的GWT需求至少为210 GWT。 -## 挂单奖励 +### 停止SHOW(冷却)等待质押币解锁 -目前的供需机制并未涉及挂单奖励。因此要的到算力奖励,核心就是要成交。(哪怕自己用小号去成交) +每次SHOW公共数据后,Supplier的质押币都会按上述公私被冻结一部分,并更新冻结时间。因此如果Supplier有足够多的质押币的情况下,Supplier可以同时SHOW多个公共数据。 -## 提现周期 +当当前时间大于冻结时间时,所有的质押币都会解冻并可用。因此Supplier的策略应该是一口气SHOW多个公共数据,把可用质押币都用完,同时得到了GWT奖励。这些奖励可以立刻质押进来获得更多的非冻结质押币,也可以一段时间内部SHOW,等待质押币解锁后再开始下一批的SHOW。 -提现周期是指存储订单开始后的最小周期。目前定义为12周(最小周期的一半)。 -## GWT模型的基本理念介绍 -1)GWT的基本逻辑来源于传统的央行货币增发理论(无上限) -首先有一个合理的基础CPI设定,可以理解成存100块钱定期在银行,每年的利息就是一个合理增发量。考虑到Web3属性,我们是每半年的利息为4%,全年8% +### Supplier(矿工) SHOW成功后的奖励 -2) 如果经济体很小,或在高速增长,那么增发率会进一步提高以增加货币供给的速度 -最终世界基础利率的值,就是在年化8%的基础上,根据现在的总算力规模,和算力规模增长速度,进行修正。修正比例通常在50% - 600%,也就是说,早期的利率最高可以到年化48% +- 第一次SHOW成功得到的来自于公共数据余额的奖励 -放到矿工身上,就是在挖矿的时候如果质押了1000个GWT 24周(6个月),那么得到的总算力奖励GWT大概就是 1000 * (0.04*修正比例), -但由于1000个GWT是 空间*时间*质押率算出来的,会有一个公式对这个进行修正,在我们鼓励的区间范围合内时,还有进一步膨胀的空间(鼓励大家将质押率拉到合适的值) +``` +SHOW奖励 = public_data.balance * 0.1 +``` -3)公共数据挖矿和私有数据挖矿还有一些自己的业务逻辑,来对GWT的产出效率进行修正,其根本目的是规范让矿工的行为更常规 +- 非第一次SHOW成功得到的公共数据余额+算力奖励,算力奖励还会增加公共数据的余额 -4)DMC是每周期固定释放的,因此GWT挖的再多,一个周期能兑换的DMC也是固定的。GWT产出快时,DMC能兑换的GWT就越多 +GWT算力奖励是DMCX经济模型里的关键组成部分。其基本规则是: -## DMC20矿工的基本策略 +``` +算力 = 距离上一次SHOW成功的时间 * 公共数据大小 * 公共数据价格倍率(16) * 质押率(pledgeRate) +当前周期总算力 = 当前周期总算力 + 算力 +算力奖励 = 算力 * 算力奖励系数 * 0.8 +公共数据余额增加 = 算力 * 算力奖励系数 * 0.2 +``` -1. 根据自己的存储能力,决定存储的价格和质押率 -2. 根据对挖矿奖励的期望,决定存储的价格和质押率 -3. 适当的挂出卖单,因为每次挂单都有可能真正的锁定GWT质押,因此需要谨慎操作 -4. 手工撤回为成交的卖单,已得到质押GWT的立刻退还 -5. 自动的处理存储订单的交付,也可手工处理黑名单用户的订单。 -6. 理解挖矿规则后,从节约手续费、锁定有利的系统参数、以及及时获得流动性3个角度在合适的时候提现。 -7. 在GWT全链转换的基础上,认证思考如何在不同链上挖矿(寻找挖矿难度更低的链),以及合适转移GWT +算力奖励系数是一个和两次SHOW时间有关的函数,其设计逻辑在于通过首次SHOW和当前SHOW所在周期的平均总算力和平均算力增长率,通过一个公式得到一个算力奖励系数。算力奖励系数的计算公式的基本原则是与平均总算力成反比,与平均算力增长率成正比,公式如下: -## 交易费用 +```python +def getGWTDifficultRatio(total_size,growth_rate): + m = 1024*1024 - 1024*8*growth_rate + result = (0.243*m) / (total_size+0.867*m) + 0.02 -针对任何处于交付状态的订单进行提现,都会收取交易费用。 + return result +``` -在存储交易的过程中,合约会抽取一部分比率的交易费用。比如买家花了1000个GWT购买的空间,实际上卖家只能提现得到995个GWT,剩下的5个GWT会被合约抽取。 -由合约持有的GWT有两种使用方式: -1. 作为分红交给DMC的持有者(这里有一个分红逻辑) -2. 当算力不增长时,销毁GWT来减少GWT的流通 +### SHOW与挑战 -## DMC20 <-> GWT +基于同一个区块,第一次提交公共数据的存储证明被称作SHOW,非第一次则为视为挑战。如果挑战展示的存储证明比上一次的存储证明更好,则挑战成功,挑战者能立刻拿走上一个存储证明提供者的质押币(Normal模式和immediately模式的总数不同),并锁定按自己选择模式所需的质押币。否则挑战失败,挑战失败后挑战者只损失了手续费。在SHOW调用后,如果一段时间里没有人挑战成功,则SHOW最终成功,此时使用Normal模式SHOW的矿工可以发起withdrawShow调用获得SHOW奖励。 -### 销毁DMC20得到GWT +## 公共数据排行榜 -根据上述公式可知,系统有一个最快的GWT增发速度。如果一个矿工希望在早期迅速的扩大规模,此时可以通过销毁DMC的方式来得到GWT。销毁DMC会导致DMC的发行总量的减少。 +### 成功的SHOW会增加公共数据的积分 -销毁DMC得到的GWT的数量,与系统当前的总存储能力和当前周期的期望兑换总数有关。系统的总存储量越大,兑换得到的GWT也就越多。系统会记录一个周期内销毁DMC得到的GWT总量,销毁的DMC越多,说明得到GWT的愿望约强烈,系统会进一步提升单个DMC兑换GWT的比例以尽快满足GWT的流动性需求。 +SHOW成功后数据在当前奖励周期的积分会增加,积分增加的数量只和数据的大小有关。1G以及一下的数据算1分,随后数据大小每次翻倍,积分增加1分。 +挑战成功不会增加公共数据的积分。 -系统的总空间(定期同步) -当前的GWT总量 -上个周期销毁的DMC总数,上个周期的总长度 -上个周期销毁的DMC总量变化(增加或减少的百分比) -与当前的兑换DMC的比例比较,>=1.1 (至少多10%) +### 排行榜规则 -### 用GWT兑换未分配的DMC20 +有了公共数据积分的规则,我们就可以按积分给公共数据排名。从原理上,排名越好的公共数据,其累计的有效存储证明数量也就越多,也就有更好的可靠性和可用性,是更优质的公共数据。DMCX通过公共数据排行榜奖励激励更多的公共数据变成优质的公共数据。 + +在XLayer上,排行榜的周期是固定区块数,约为3天。 +``` +sysConfig.blocksPerCycle = 86400;// Each cycle is 72 hours +``` -根据DMC1.0的白皮书,待挖矿(待释放的)DMC20保存在一个合约中,通过GWT可以兑换出来。 -DMC20按周期释放,一个周期的DMC20兑换完成后会自动进入下一个周期。随着周期总数的增加,需要更多的GWT才能兑换得到DMC20 -兑换DMC20的GWT会和GWT手续费一样,进入GWT分红/销毁池。 +每个排行榜周期开始时,都会重置所有公共数据在本周期的积分。排行榜还有一个进入排名的阈值(64分),未到达这个分值的公共数据无法进入排行榜。 -如果先兑换GWT得到DMC20,再销毁DMC20来得到GWT,通常是不划算的。但如果在早期先得到DMC20,持有一段时间后再销毁,正常会得到更多的GWT。 +排行榜的大小为32. -当前周期的DMC释放量 (上周期未兑换完量+本周期释放量) -上周期兑换剩余的DMC量(百分比) -得到当前周期的DMC兑换比例 +### 排行榜奖励 -```python -def exchange(self, gwt): - 先判断是否需要移动到下一个周期 - 如果要: - 结算当前周期 - 移动到下一个周期 +进入排行榜的公共数据可以瓜分本期排行榜的奖池。排行榜的奖池主要来源是给公共数据充值的20%GWT。以及上期排行榜的一部分。 - # 通过GWT兑换DMC20 - real_dmc_count = 0 - dmc_count = gwt / get_exchange_rate() - if dmc_count > 本阶段DMC可释放余额: - 本阶段DMC可释放余额 = 0 - real_dmc_count = 本阶段DMC可释放余额 - else: - 本阶段DMC可释放余额 -= dmc_count - real_dmc_count = dmc_count +``` +公共数据本期奖励 = 本期奖池余额 * 0.8 * 本期百分比 +``` +第一名的本期百分比是15%,第二名是11.25%,第三名是9.3%... 第32名是0.8% +为了让每期的奖池更加稳定,本期奖池的15%会进入下期排行榜的奖池,5%进入DMC DAO的分红池。 -def 结算当前周期 +#### 排行榜奖励的分配 +当公共数据在一个奖励周期结束后进入了排行榜,任何人都可以发起合约调用来分配奖励(从利益相关来看,该操作一般是公共数据的Sponosr调用)。如果公共数据获得了100GWT的排行榜奖励,那么这100GWT的分配如下: -def 移动到下一个周期 - 本期额为兑换量 = 未兑换总量/未兑换周期总数 - 未兑换总量 = 未兑换总量 - 未兑换总量/未兑换周期总数 - 本周期DMC可释放余额 = 未本期额为兑换量 + 本周期计划释放量 - exchange_rate = last_exchange_rate * (1-上期未兑换量/上期总兑换量) +- 50%给Sponosr +- 20%给Data Owner, Data Owner的确认是根据PublicData关联的NFT的Owner来确认的 +- 30%给最后Show的5个矿工,每个矿工可以拿到6% + + +### 抢获奖数据的Sponosr + +任何用户都可以调用 addDeposit 给公共数据充值,当充值的金额超过公共数据最大单次充值的110%时,本次充值的用户会成为新的Sponosr。根据上述经济模型,在一个公共数据即将赢得排行榜时,如果潜在的奖励超过了成为公共数据Sponosr的成本,那么去抢Sponsor是一个有利可图的行为。 + + +## 存储交易市场挖矿 (即将上线) + +1. 出售存储资源的用户被称作供应商,可以挂卖单,卖单应详细的描述其存储资源的定义和价格。约定: +- 存储总大小, +- 存储单价(定价单位从0.125到8,单位是GWT(Gb per Week Token) +- 存储有效时间(系统规定最小有效期为24周), +- 单次购买的最小大小(需小设置为2GB)。 +- 存储质量 + +2. 挂卖单时矿工用GWT缴纳质量保证金,用来在存储出现问题时赔付给用户。 + +``` +保证金总额 = 卖单总空间*有效时间*单价*质保比率 +``` + +系统有要求最小质保比率(0.5),用户可以根据实际的市场竞争调高该保证金。存储价格,质保比率会影响供应方在算力奖励里的比率。 +比如用户有100G空间,挂单24周,价格是2,质保比率是0.5,那么在挂单时,矿工需要准备好 `100*24*2*0.5 = 2400`个GWT的质保金。 -def 销毁dmc(self,dmc_count): - (系统总空间 / 已释放DMC) * 20 - +3. 有需求的用户(需求方)可以选择一个已挂单购买自己需要的空间 ``` +存储费用=需求空间*剩余有效时间*单价。 +``` +用户并不能选择有效时间。当一个存储订单的剩余有效时间小于系统的最小存储有效时间时,用户无法购买该存储订单。为了降低GAS Fee,用户在购买空间时应设置数据的MixHash. +4. 已成交订单进入等待(数据)状态。数据交付的流程是需求方首先根据供应方公开的账号信息,通过链下协议将数据传输给供应商。供应商收到数据后调用合约接口确认该数据的MixHash。此后订单进入交付状态。 -## DMC DAO的治理 +5. 未进入交付状态的订单双方都可以随时取消。取消后,用户会立刻得到退款,矿工则是回复了该存储订单的空间。 -### DMC <-> DAO Token +6. 订单进入交付状态12周后,可以调用“提现操作”,提现操作会让供应方得到收入+算力奖励GWT,让用户得到算力奖励GWT。此时系统会在该过程中抽取一部分交易费用GWT。 +7. 矿工可以随时减少卖单的有效剩余空间。有效剩余空间减少后,矿工会得到退还的质保金。 -### GWT分红 +8. 当矿工发现数据丢失时,可以主动声明数据丢失。此时只会赔付给用户质保金的80%,并拿回剩余的20%。 -每条链上的GWT合约都会有一个分红池,通过基金会的Oracle机制同步到DMC20的发行链上,随后DMC20的有权分红者就可以通过DMC合约领取GWT分红。这意味着全网所有通过分红得到的GWT,都只会在一条链上发行。 +9. 供应方因为正常的技术理由可以申请订单请假(请假的频率基于有效长度有最大限制),订单请假期间其无法发起存储挑战。供应方可以在主动调用合约接口将请假状态的订单恢复正常。 -系统也可以设定,有一定比例的GWT会进入公共数据挖矿的奖励池(或特定的公共数据)。这样可以进一步激励用户参与公共数据挖矿。 +10. 存储订单可以协议取消(一方发起,另一方同意),此时双方都会得到剩余交付时间的退款。 +11. 使用官方的挖矿软件不会碰到其它异常情况,因此本文不讨论存储挑战等情况下的经济模型 -## GWT/DMC 的全网兑换 +### 交易费用 -### GWT 全网兑换 -DMC我们选择一条链发行(ETH or X1),而GWT可以在所有的EVM兼容链上发行(依旧需要基金会部署合约) -我们通过去中心资产桥来实现不同链之间的GWT的兑换 -DMC不支持跨链兑换。 +针对任何处于交付状态的订单进行提现,都会收取交易费用。 -### DMC->DMC20 +在存储交易的过程中,合约会抽取一部分比率的交易费用。比如买家花了1000个GWT购买的空间,实际上卖家只能提现得到995个GWT,剩下的5个GWT会被合约抽取。 -从风险的角度考虑,我们实现的是单向转换(应该没有去中心跨链桥支持DMC1.0)。 -基本是自动化系统,平均登记到转出的时间在3天内。 -从安全的角度考虑,一个地址每天能得到DMC20的数量是有效的 +由合约持有的GWT有两种使用方式: -## 一些担忧的思考 +1. 作为分红交给DMC的持有者(这里有一个分红逻辑) +2. 当算力不增长时,销毁GWT来减少GWT的流通 -### 经济模型设计问题带来的GWT过多 +### 算力奖励 -GWT过多,会带来GWT的价格下降。随后用户存储的成本下降,但供给端会应为收益下降而减少可用存储空间,或则提高单价。 -实际上出现了供小于求的情况: +整理中 -- 系统的算力进入副增长(算力增长率作为算力的导数,副增长的更快),算力奖励快速归零 -- 用户几乎不得到算力奖励,但支付同样的存储需要消耗更多的GWT了 -- 供应商的主要收入来自于用户支付的GWT,而非算力奖励 -- 系统的交易抽成增加,但因为算力并不增长,因此这部分抽成相当于销毁了 +### 交易的取消 -### GWT全网流转是否会带来问题(DMC只在一条链上) +整理中 -GWT在ChainA=>ChainB之间转移,使用中心化跨链桥(最好找第三方的EVM兼容跨链桥) -ChainA的总供应会减少,ChainB的总供应会增加。进而影响两条链上的GWT奖励模型 -跨链桥是自由的,因此任何人都可以自由的在不同链上搬运GWT,进而实现跨链价值的统一 -一旦一条链的挖矿难度低,进而获得GWT变得容易,则会有更多的用户前往该链上挖矿,进而拉平GWT的获取难度 +### 提现周期 +整理中 ### 自刷挖矿的问题 @@ -287,20 +289,14 @@ ChainA的总供应会减少,ChainB的总供应会增加。进而影响两条 2. 对于用户来说,手续费更低的链总是会让去中心存储的成本下降,因此需求也会不断的在我们支持的链上迁移 +### 矿工的基本策略 -## 术语解析 - -### 基本经济学概念 - -- 质押率 (0.5 - 16) -- 定价 (0.125 - 8) -- 存储最小有效周期: 24周 +1. 根据自己的存储能力,决定存储的价格和质押率 +2. 根据对挖矿奖励的期望,决定存储的价格和质押率 +3. 适当的挂出卖单,因为每次挂单都有可能真正的锁定GWT质押,因此需要谨慎操作 +4. 手工撤回为成交的卖单,已得到质押GWT的立刻退还 +5. 自动的处理存储订单的交付,也可手工处理黑名单用户的订单。 +6. 理解挖矿规则后,从节约手续费、锁定有利的系统参数、以及及时获得流动性3个角度在合适的时候提现。 +7. 在GWT全链转换的基础上,认证思考如何在不同链上挖矿(寻找挖矿难度更低的链),以及合适转移GWT -### 系统的关键经济学参数 -- 最小质押率 -- 最低价格 -- 最高价格 -- 最小挑战间隔周期 56 -- 挑战超时周期 -- 诉讼费用 \ No newline at end of file