对于稳定币来言,设计过程中会遇到很多细节的问题,今天来讲述下有关通证设计过程中的一些问题。

1、计算手续费

计算费是交易费的一部分,转移给kUSD矿工,并由以下公式决定:

其gasUsed(t) 是用于处理交易t的Gas,而gasPrice(t)是交易时的一个单位的价格 t。gasUsed(t) 和gasPrice(t)的定义类似于以太坊,计算费本身类似于以太坊的“合约执行费”。

对于简单的转账交易,gasUsed(t) 设置为21,000,而对于智能合约的交易,其值将取决于相关智能合约触发的操作。gasPrice(t) 的默认值当前设置为2 x 10^-8。

当前区块中所有交易的计算费总和将给予 该区块的当选提案人:

2、币的销毁

块的销毁量定义为给定块的所有交易的维稳费用的总和的一半:

其中T(b) 是形成块B的所有交易的集合。

销毁量被发送到一个死地址,它具有永久减少kUSD的供应量。随着时间的推移,销毁量允许kUSD有效地响应需求的减少。例如,如果每天只需15%美元(平均)的kUSD币供应是通过链上交易进行,那么在30天内的销毁量将减少8%以上,在180天内将超过41%。

3、维稳奖励和维稳合约

维稳奖励的目的是双重的:允许网络由一个不断扩大的人群参与,并激励支持网络效用的行为(通过在价格低于1美元时减少可供出售的kUSD数量)。向kUSD持有人分配维稳奖励是通过维稳合约来管理的,维稳合约是一种特殊用途的智能合约,该合约是作为单一主合约的子合约实施的。

每个维稳合约都存储多个地址:源地址,储蓄地址和维稳奖励地址。源地址是指资金转移到储蓄地址的原始地址。用于储蓄地址和维稳奖励地址的私钥是从源地址的私钥导出的,从而使源地址拥有者具有将资金从这些其他地址移出的独有能力,受到下面描述的交易。

为了获得维稳奖励,源地址所有者必须事先为其源地址创建稳定合约,并将一些kUSD从源地址移动到合同的储蓄地址中。

此外,交易约束来自储蓄地址的交易被发送到除了源地址之外的任何地方。

为了准备维稳奖励,我们首先将维稳量定义为区块的总维稳费用的一半。请注意,这个量等于销毁量(见上面销毁币)。换言之,总维稳费的一半是针对销毁量,另一半是维稳量。

然后将维稳量划分为个体维稳奖赏,每个维稳合约,使用以下公式:

其中b是区块编号,a是具有相关稳定性契约的源地址,A(b) 是与区块b的维稳合约相关联的所有源地址的集合,而savingsBalance(b,x) 表示从中获得的余额。

在区块b期间,与具有源地址x的智能合约相关联的储蓄地址的区块b。 每个智能合约的维稳奖励将转移到相关的维稳奖励地址,并且第二个交易约束阻止该维稳奖励被转出,直到kUSD的价格返回到1美元或更高。虽然所有者可以随时从他的储蓄地址中移除资金,但只有当kUSD的价格回到1美元或更高时,他才能在维稳奖励地址中领取资金。如果他在此时间之前移除了储蓄地址资金,相关的维稳奖励将被没收。

4、mUSD和其他mToken

Kowala协议是一个双通证系统。Kowala协议块链中的主要令牌是kCoin,即稳定的值支付令牌,如kUSD。此外,与每个kUSD相关联的是次要的挖矿通证或mToken;例如,与kUSD相关联的mTokens被称为 mUSD。这些最小数量(目前为30000)的所有权证明是挖矿kCoin的要求。

每个mToken将与加密地址和其他元信息相关联,目的在于安全地管理

a)跟踪挖矿的情况;

b)挖矿奖励的收件人地址;

c)mToken所有权;

d)将挖矿责任委托给第三方。

将创建专门的智能合约来管理此信息,每个kCoin将有2^30(1,073,741,824)mTokens铸造。一旦最初的mTokens被铸造,智能合约功能将阻止将来创建额外的mTokens。

5、Konsensus:Kowala的共识协议

Kowala的共识协议,Konsensus,有一套正式的规则,允许分散的参与者群体就区块链的推进达成一致,包括交易的处理和激励奖励的分配。

Konsensus来自Tendermint,这是一种大多数异步共识协议,它本身基于拜占庭容错(BFT)。工作基于Tendermint,因为它已经实现了远远优于其他广泛使用的方法,基于POW的区块链共识协议的交易性能,并且因为它具有易于理解的安全性配置文件。与Tendermint一样,Konsensus要求其参与者彼此保持联系。

在Konsensus中,网络由两个或多个通过明确定义的通信协议连接的节点组成。 在此上下文中,节点是运行与Kowala协议兼容的挖矿客户端的计算机。 使用TCP和UDP的标准以太坊模型实现通信。

像其他加密货币一样,kUSD将被开采。对于每个区块,所有符合条件的矿工都有机会通过为区块链的进步和安全做出贡献来获得kUSD的奖励。

矿工是网络上的活动节点,控制最小数量(当前设置为30,000)mTokens。 为了推进区块链,网络必须包括至少一个矿工,尽管我们通常期望还有更多。

Konsensus中的挖矿将一次挖一个区块。对于每一个区块,有一个领导,称为提议者,从当前的矿工中确定性地选出。所有其他矿工在出块期间被称为验证者。

提议者的功能是组合并提出链中的下一个区块,验证者的功能是投票决定是接受建议的块还是拒绝它。

提议者首先组装包含未处理交易的可用区块,然后将区块分发给验证者以进行验证。每个验证者检查区块是否适合,然后进行加密签名投票来接受或拒绝该区块。

如果三分之二或更多的验证者投票接受该区块,则提议者将该区块提交给区块链并向整个网络发信号通知该区块已完成。

如果未达到三分之二的通过率,则拒绝该区块。

然后,该过程再次开始,选择新的提议者提议另一个区块。

5、基于mToken所有权的选举

矿工有可能没有机会当选为提议者; 相反,它们被选择的可能性与节点只有的mTokens数量成正比。 选举矿工的可能性由下式给出:

其中m和M(b) 分别是在当前区块b中挖矿的特定矿工和所有矿工的集合。 随着时间的推移,矿工将被选为提议者,其频率与他或她持有的通证数量与所有活跃矿工持有的总通证数量成正例。 当选后,提议者必须正确地执行提议的实际工作,然后将为此工作获得奖励。

文章作者:Wayne Wong
转载请注明出处
如果有关于区块链学习的交流,可以通过下面的方式联系我:
加我微信,注意备注: 区块链学习
wechat:elninowang
telegram: @omnigeeker
twitter: @omnigeeker
zhihu:@Omnigeeker
 

Kowala协议:一组分布式,自我调节,资产跟踪特性的加密货币(二)的更多相关文章

  1. 分布式调用链跟踪工具Jaeger?两分钟极速体验

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. 部署你的分布式调用链跟踪框架skywalking

    使用docker-compose 一键部署你的分布式调用链跟踪框架skywalking https://www.cnblogs.com/huangxincheng/p/9666930.html 一旦你 ...

  3. SpringCloud(八)Sleuth 分布式请求链路跟踪

    SpringCloud Sleuth 分布式请求链路跟踪 概述 为什么会出现这个技术?需要解决哪些问题? 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后 ...

  4. TiDB:支持 MySQL 协议的分布式数据库解决方案

    [编者按]TiDB 是国内 PingCAP 团队开发的一个分布式 SQL 数据库.其灵感来自于 Google 的 F1,TiDB 支持包括传统 RDBMS 和 NoSQL 的特性.在国内 ITOM 管 ...

  5. 使用docker-compose 一键部署你的分布式调用链跟踪框架skywalking

    一旦你的程序docker化之后,你会遇到各种问题,比如原来采用的本地记日志的方式就不再方便了,虽然你可以挂载到宿主机,但你使用 --scale 的话,会导致 记录日志异常,所以最好的方式还是要做日志中 ...

  6. 分布式事务(ACID特性、CAP定律)

    普通事务和分布式事务的区别: 普通事务就是一般所说的数据库事务,事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成.当事务被提交给了DBMS(数据库管理系统),则DBMS(数 ...

  7. 基础课(三)实验串入OSPF协议和HSRP协议以及HSRP外部链路跟踪

    实验要求1: ,2,3,4分别是vlan10,20,30,40的网关(网关IP-192.168.X.254 /24)      对vlan10做HSRP热备   SW1做主网关,SW2做备份网关    ...

  8. NVMe over Fabrics 协议Discovery服务交互过程跟踪

    Discovery服务过程跟踪 对于NVMe over Fabrics的subsystem,有两种类型:Discovery子系统和NVM子系统.这里介绍与Discovery子系统相关的交互内容(即:在 ...

  9. 实践案例丨基于 Raft 协议的分布式数据库系统应用

    摘要:简单介绍Raft协议的原理.以及存储节点(Pinetree)如何应用 Raft实现复制的一些工程实践经验. 1.引言 在华为分布式数据库的工程实践过程中,我们实现了一个计算存储分离. 底层存储基 ...

随机推荐

  1. Create-React-App脚手架使用方法

    Facebook 官方推出Create-React-App脚手架,基本可以零配置搭建基于webpack的React开发环境,内置了热更新等功能. 由于create-react-app命令预先安装和配置 ...

  2. idea新建工程项目结构

    一:新建项目 File--->new---->project--->Empt Project(空项目)--->next--->java_web--->Finish ...

  3. Tomcat环境变量配置命令行报错:The JRE_HOME environment variable is not defined correctl This environment variable is needed to run this program

    1. tomcat——>bin——>setclasspath.bat,使用记事本打开. 2. 添加如下代码即可: 为自己实际的环境变量配置为准!!! set JAVA_HOME=D:\ID ...

  4. MySQL Profiling--常用命令

    ##=====================================## ## 查看PROFILING是否开启 SELECT @@profiling ## 开始会话级别PROFILING # ...

  5. skipper 内置的常用filters

    skipper 的filter 功能很强大,可做好多方便的扩展 格式: all: * -> filter1 -> filter2 -> "http://127.0.0.1: ...

  6. Survival Shooter 学习

    using UnityEngine; using System.Collections; namespace CompleteProject { /// <summary> /// 摄像机 ...

  7. ASP.NET MVC中常用的ActionResult类型

    常见的ActionResult 1.ViewResult 表示一个视图结果,它根据视图模板产生应答内容.对应得Controller方法为View. 2.PartialViewResult 表示一个部分 ...

  8. Python 不可变对象练习

    Python 不可变对象练习 str 是不可变对象,就是对这个对象进行操作不会改变这个对象的数据. 如下: >>> a = 'abc' >>> a.replace( ...

  9. 我发起了一个 .Net 平台上的 产生式编程 开源项目 GP.Net

    大家好 , 我发起了一个 .Net 平台上的 产生式编程 开源项目 GP.Net . 我们可以先看看一个网友的 代码生成器 项目 : <.Net 代码生成器 for PostgreSql> ...

  10. Hibernate更新删除数据后,再查询数据依然存在的解决办法

    删除数据后,重新查询了数据库,DB中记录已经删除了,但是数据依然能查询到,网上都说是Hibernate的缓冲问题. 我对session进行了clear,flush,并且在事务和查询中都对session ...