Stafi 白皮书(V1)

摘要

PoS共识中采用了Stake模型来保证系统安全,以币权重的方式代替PoW共识中的算力权重,解决了矿机计算争夺出块权的能源消耗,以更优于PoW共识的口号开始进入人们视野。PoS共识的代币进行Stake获得选举权,可以有效的解决了PoW算力集中的问题,但也带来了Stake本身的问题,为此衍生出来的解决方案都不够完美,或损伤了持币人利益,或降低了系统整体价值。为了达到的安全,采用PoS共识的项目几乎都设计了激励机制,来激励Stake率,同时为了防止币权重所带来的攻击可能性,几乎所有的项目都对Stake代币设定了锁定时间,导致PoS共识中出现了主网安全性和代币流动性的矛盾,即理论100%Stake锁定能带来相对高的安全,但是却因流动性为0对系统的价值增长而不利。我们希望创建一个去中心化的债券协议,通过Staking-合约来Stake的方式,发行对等价值的有价债券,以此提供Stake资产的流动性,同时保证原链Stake代币不会频繁的发生变动,有效的提高系统安全。

简介

2011年,QuantumMechanic在Bitcointalk论坛首次提及了PoS共识机制,创造性提出了用币权重代替算力权重的想法,选举出块人。持币人通过Stake向系统声明参与,系统通过随机算法选择出块人,出块人打包,验证交易,形成链的最新高度。PoS共识作为后来者,在共识,选举,打包,验证等很多方面都借鉴了PoW共识,并随着技术的发展,逐步带动区块链在性能,扩容和可持续等技术的发展。2019年~2020年,是二代(1)PoS共识落地的周期,包括Cardano,Tezos,Cosmos和Polkadot等项目都将上线主网,这些项目成为新时代共识的试金石。

PoS共识中的Stake模型,是一种颠覆算力权重的设计。Stake模型中,持币人的权利和挖矿权利合为一体,持币人通过Stake就能参与到网络共识。这个过程持币人只需要运行一定配置的服务器或者将权利委托给运行服务的验证人代运行(2015年后的主流PoS共识项目都开始加入委托机制来保证系统的Stake率,提高系统安全),随机选举的方式解决了矿机竞争计算带来的能源消耗问题,同时Stake模型创造出了一种新的区块链关系:持币人即矿工。这种关系的形成给公有链世界带来了变化。

激励上,无论是PoW共识还是PoS共识,几乎都设计了一套激励体系来激励人们加入节点运行。PoS共识主网启动前,系统往往会加大激励以保证Stake率,激励更多数量的初始分发代币进行Stake来提高系统的安全系数,Tezos创始人Arthur在Tezos的白皮书中写到:初期的激励必须足够高,对主网安全启动极其重要。Staker锁定者需要承担一定时间和机会成本(2),如果激励不足,主网会受到比较严重的安全威胁。Cosmos更是在代码中设置了初始高达7%~20%的浮动年化,来激励主网启动时的Stake率。

锁定时间是PoS共识区别于PoW共识的一个重要特点。Stake模型中,系统对Stake的token有稳定性上的要求,用于防止长程攻击,Nothing at stake,还有计算碎片化等问题,Stake过程中的代币会被系统锁定一定的周期(3),虽然进行Stake的持币人可以随时发起解锁,但是解锁期间持币人同样无法进行Token交易,这时候,持有人仍然需要继续承担期间Token价值波动的风险。这是Stake模型中,Token Stake安全性和Token流动性之间的矛盾。

这种矛盾很大程度上会造成双向的问题,很多人因为害怕承担风险而不敢Stake,而系统会因为没有足够高的Stake率而不够安全,最终的结果往往变得糟糕,少量人拿走了大部分奖励,系统安全程度还非常危急。现在一些已经上线的PoS共识项目中,Stake率大概在40%左右,受市场关注度较高的项目Stake率一般在50%~60%左右,最高可达80%,而关注度低的项目就只有20%左右。理论上,对于安全最合理的Stake率应该是100%,但这往往是不现实。另外,100%的Stake率意味着代币的流动性为0,很多愿景做成区块链OS(操作系统)的项目,代币流动性对其系统的运行和价值的支撑有非常重要的作用,流动性为0所造成的影响几乎全是负面的。目前,业界对于合理的Stake率尚未达成一致,或者说无法达成一致,希望用模拟环境测试分布式网络,几乎无法实现。

Stafi为此提供了一套安全解决方案,来解决Stake模型中主网安全性和Token流动性的矛盾。持币人通过合约Stake的方式,获得对等价值的有价债券,比如Stake XTZ,持币人会同时获得了一个XTZ_STAKE的有价证券,XTZ_STAKE对应着定期收益和原链XTZ的拥有权,持币人可以通过创建在Stafi协议上的债券市场交易XTZ_STAKE。和原链进行Stake的XTZ不同,可交易的XTZ_STAKE没有锁定期,但仍然可以继续获得奖励,持有XTZ_STAKE的持币人不再需要承担波动性风险,对市场情况作出及时的判断。Stafi协议让持币人拥有了更多的权利,在利益驱使的情况下,持币人会因为风险解除而进入Stake合约中做Staking,这会直接增加Stake率。理论上,在去中心化程度足够分散的项目里,Stafi协议会将Stake率提高到90%以上(刨除一些丢币的情况),而且同时能创造出高达90%以上的流动性。

已存在的工作——解放Stake流动性

目前解放Stake流动性的方式并不多,有中心化和去中心化两种类别的分类。

中心化的流动方式,背后通常有一个第三方机构来做背书,该机构通过收集持币人Token的方式获得代币拥有权,并整体进行Stake,这些Stake的Token通过一个节点来出块并获得激励。当该机构获得的足够多的Token时,就可以发行一个有价债券给到Stake的用户(比如一个ERC20标准的代币,叫CENTRALIZED_STAKE),机构可以联合一个中心化交易所上线CENTRALIZED_STAKE的交易对,或者自己在去中心化的交易所创建交易对,拥有CENTRALIZED_STAKE的持币人可以在不赎回原链Stake代币的情况下,交易原链上代币的拥有权(包括赎回权和收益权),这样的方式可以解决Stake代币的流动性,但带来的弊端是,持币人需要充分相信第三方机构的背书,相信CENTRALIZED_STAKE这种债券对应的收益权和赎回权。在此信任的基础上,还需要考虑该机构是否有能力构建CENTRALIZED_STAKE的交易深度,而这种能力的拥有由多个因素决定,其中一个重要因素是该机构必须有足够多的Stake代币,小的收币方也有发行类似债券的权利,但现实可能无人使用,那么这种解放流动性的发行实属名存实亡。另外一方面,如果单一机构发行了足够多的CENTRALIZED_STAKE,那说明该机构收了很多Stake代币,这会带来新的问题——中心化风险,该风险使得收币机构极易成为黑客攻击的目标,用户资产安全受到威胁。此类攻击可参照中心化交易所频繁出现被攻击的安全事件。当然,除了中心化安全,这种方法本质上也违背了区块链中最重要的去中心化精神。

另外一种中心化的做法是,项目方(开发团队Devs)和交易所做合作,Stake的资产由项目方给中心化交易所做背书,甚至,项目方(Devs)可以将Stake中锁定的资产交给中心化交易所保管(当然前提是项目方在开发设计Stake的时候设置了对Stake的拥有权),交易所有了背书,发行一个代币(如一个ERC20标准的代币,叫EXCHANGE_STAKE),交易所为EXCHANGE_STAKE创建多个交易对,提供Stake资产的流动性,并且支持所有使用EXCHANGE_STAKE对原链上的Stake代币做赎回,只不过所有过程都要从交易所经手。这种方法的问题在于,项目方改变了资产的拥有权关系,并擅自进行了挪用,其次当拥有权交到交易所手中后,暗箱操作,监守自盗的问题时有发生,同样,历史频繁出现的交易所失窃情况就是典型的例子。总之,以上两种中心化的操作方式都和区块链去中心化精神完全背离。

第三种方案,项目方修改底层协议,支持Staking后获得流动性Token(可以称之为PBLT Project-Base Liquid Token),用户可以交易PBLT,而不需要等待Staking Token的解锁时间,解决频繁unstake所引起的安全威胁,同时给用户带来便利。这种方案的优点在于PBLT是系统级别安全背书的一种ABS资产,安全性可以得到保障,同时整个共识承认这种ABS资产所拥有的权利。而问题是大部分已上线的公链对此想法还保持一个比较中立的态度,直接修改底层可能较为困难,开放性的社区开发进度也会比较慢,而且对于PoS Token的持有者来说,这并不是一个全面的解决方案,目前只有Cosmos和Near Protocol对此提出自己的想法,拥有其他资产的持有者并不能一并解决他们的锁定问题。

而Stafi协议则是通过在上层建立Stake合约的方式,让持币人通过指定的Stake合约进行Stake,同时获得XXX_STAKE(后面简写为XXX_S)的有价债券,而获得XXX_S的持币人可以在Stafi应用层上搭建的去中心化债券交易所流通,交易。持币人的Stake过程以及XXX_STAKE债券的发行过程全都由合约代码自动执行,中间并不需要任何第三方背书,并且持有Stake代币的用户可以随时向合约发起Stake,赎回Stake,合约验证通过后会立即执行。除了没有第三方介入,整个XXX_S的发行权利回归到了原链代币人手中,持币人都可以发行对应价值的有价债券,这和现行的资产证券化的方式相似,最大的不同在于机构发行变成了个人发行,个人发行的动机在于可以抵抗波动性风险,所以理论上,去中心化的处理方式应该使得原链持币人获得XXX_S的动机更充足。为此,市场上的XXX_S证券数量也会变得充足,足以撑起一个债券交易市场,并且这种去中心化的方式,会反向推动债券的交易,进而缩小现货的交易,达到一种人人发债券,人人交易债券的一种景象。

人人发债的背书由Stake资产作为背书,Stake资产由其模型背后的公有链/功能作为背书,目前来看,Stake模型并没有被大量的滥用,这保证了Stake资产的一种优质性。相比现行资产证券化的资产(ABS)来说,Stake资产不需要ABS中增信的环节,这大大减少了XXX_S的发行难度。但是这种债券的问题/风险在于,这种Stake资产的定期收益是相对于Token的,虽然持币人通过Stake可以持续获得收益,但这种收益预期对于法币仍然是有波动的,这造成了交易市场上对于XXX_S的交易预期不一致,这也会促使交易市场上开始出现杠杆,这给Stafi上创建去中心化的债券交易所带来了更多的机会和可能性。当2019~2020年大量PoS共识项目上线主网,Stake资产会变多,交易也会变得频繁,持币人作为债券发行人,相当于将Stake的代币作为抵押物,当债券发生转移时,抵押物的赎回权也就随之发生了转移,这些所属关系全都是有智能合约决定,而不是由中心化公司或者机构决定的,这是去中心化协议Stafi领先于中心化方法中最重要的一点。

Stafi协议

Stafi是一个去中心化债券协议,整个协议分为底层,合约层和应用层。底层主要是基于Substrate建立的一条区块链体系(Substrate是Parity开发的一套区块链架构,整个架构集成了很多开发模块,其中包括共识模块,P2P模块,Staking模块等),其合约层支持创建多种Stake合约,如XTZ的Stake合约,Atom的Stake合约,Dot的Stake合约等,持币人通过Stake合约进行代币Stake,该方式和普通方式Stake获得的通胀激励一致,不同的是,持币人还同时获得了一个有价债券XXX_S(如XTZ_S)。应用层则支持第三方基于Stafi的API或者自定义API创建一个去中心化的债券交易市场,供XXX_S资产在Stafi协议上流通,转移,交易。

协议以完全的去中心化方式运行,基于Substrate搭建的Stafi会以平行链的方式接入到Polkadot当中,共享Polkadot的底层共识,主要安全和性能由Polkadot底层来保证。核心层在Stake合约层,Stake代币的所属权完全由合约代码保证。Stafi采用分布式密钥存储协议,通过多验证人签名保证Stake地址的安全性,在完全无需第三方介入的情况下,持币人可以随时随地发起Stake或者赎回Stake。当持币人向Stake合约发起Stake代币的动作后,可以在合适的时间获得系统的通胀激励,而任何持有XXX_S的持币人也可以向随时随地向对应的Stake合约发起赎回操作(此赎回操作通过Stafi协议和原链交互,赎回交易上链后,Stake会在系统解锁后发送到提交的提币账户)。Stafi协议保证有价债券XXX_STAKE对原链代币一对一的所属权,即只有拥有XXX_S的持币人,可以向Stake合约发起赎回原链代币,当A将有价债券XXX_STAKE交易给B后,A不再拥有XXX的赎回权,而B可以向Stake合约发起赎回,整个过程无需第三方介入。

任何第三方可以在Stafi协议的应用层,采用Stafi的协议建立一个去中心化的债券交易所,所有的债券交易所共享交易深度,该交易所还支持围绕XXX_STAKE资产创建多种类型的服务,如券化,增信,担保和保险等。开发者可以利用开放的接口创建合适费率或者多种债券产品,而且,可以把传统资产证券化的多种服务都搬到Stafi上层来实现,提高XXX_S资产交易可靠性。随着采用PoS共识的公有链越来越多的上线主网,Stake的代币数量和种类也变得越来越多之后,这种资产的交易会变得频繁,开发者可以从构建的债券交易手续费中获得丰厚的回报。

具体实现

1. Stake合约

在Stafi合约层创建和Stake原链交互的合约,我们称之为Stake合约。比如在Stafi上创建连接Tezos的XTZ-Stake合约,当持有XTZ的用户A在XTZ-Stake上发起Stake操作时,Stake合约会先创建出一个多签地址,用户A会将XTZ通过Tezos原链转移到多签地址中来,当转移成功后,合约执行多签地址的Stake操作,当Stake操作成功的后,Stafi协议会接收到一个Tezos原链的证明(Proof),进而触发合约生成一个对等数量XTZ的有债债券XTZ_STAKE(n),简写XTZ_S(n),如果用户A Stake的XTZ数量为100,则该债券表示为XTZ_S(100)。XTZ_S(n)是Stafi协议上流通发行的Token,因为Stake数量的不同,每个Stake债券都对应不一样的价值。

Stake合约的状态更换需要原链和Stafi协议共同配合实现,因为需要监测各个链的合约状态,Stake合约的实现方式其实和跨链机制有非常多的相似之处。当持币人在Stake合约发起Stake请求时,多签账户的生成发生在Stafi协议上,同时,由Stake用户签名完成个人资产到多签地址的转移,此转移发生在原链上,Stake合约在捕获原链上的转移状态后,由多签地址向原链发起Stake请求。在原链完成Stake操作后,Stafi捕获该地址在原链上的Stake状态,并验证,验证成功后随即在Stafi协议上发行对应的XTZ_STAKE(n)资产。整个过程Stafi协议和原链交互多次,互相之间对状态的监控和捕获对整个协议的安全起到重要作用,Stafi协议对原链状态的捕获通过时延和多道验证保证原链的最终确定性。比目前跨链协议跨PoW共识要庆幸的是,2015年后半年上线的项目PoS项目当中,大多数都将区块交易的最终确定性当成一种目标来实现,即最新高度形成的时候,包含的交易就是最终确定性的。目前,业界对最终确定或者及时确定性的实现方案,最普遍的解决方案是前置验证交易合法性,后再打包数据到确定的新高度。这种实现依赖于BFT拜占庭容错算法,也依赖于一些人为指定的分叉惩罚机制Slash。鉴于此,Stafi协议在和PoS共识原链交互的时候,安全性大大提高。

2. 多签地址

目前几乎所有的Stake模型都依赖于账户(Account)模型,在用户发起Stake时,都需要一个原链地址的私钥来进行签名,为了保证Stake资产拥有权和XXX_STAKE(n)的一对一关系,Stafi设计了一个中间地址来完成此目标,该地址的资产权不属于任何人,也就是说没有任何一个人能拥有此地址的私钥。Stafi通过安全多方计算技术和门限多签技术实现中间地址的资产中立性,保证只有拥有XXX_STAKE(n)的持币人发起赎回时才执行签名。安全多方计算属于隐私计算,该计算需要Stafi中一群拥有特殊职能的验证人角色参与,一定数量的验证人通过自己的私钥签名,并通过安全通道传输,验证签名的合法性,最终实现恢复中间地址签名的方式。此中间地址并不会存在一个私钥,更不会存储在Stafi协议上,并且只有在需要签名的时候,通过特殊验证人的的私钥签名来形成。门限多签技术实现的是生成私钥签名的过程,部分生成人就可以完成私钥签名的生成,能够极大的满足对签名的需要。比如多签地址通过多名验证人(如21个)的公钥建立联系,当持有XXX_STAKE(n)的人需要发起赎回时,需要21个验证人服务器中的16个验证人签名即可以完成Stake资产的Staking和Unstaking。

3. 安全多方计算(Secure Multi-Party Computation)

安全多方计算主要研究的针对无可信第三方的情况下,如何安全地计算一个约定函数的问题。主要解决的是现实一些场景中,依赖于多方数据计算结果,各自之间又不愿意分享原始数据的问题,不需要向第三方透露出初始输入值的情况下最终结果可验证。在Stafi的Stake合约中,用户操作Stake需要新生成一个多签地址,当持有XXX_STAKE(n)的持币人向Stake合约发起赎回时,多签地址需要创建私钥签名,私钥的签名由特殊验证人参与计算生成,验证人之间经过加密通道,传输计算结果,彼此之间能互相验证计算结果,且不需要向他方透露出自己的私钥,从而实现Stake合约的解锁和赎回。

4. 所属关系转换

当完成Stake操作后,多签地址上XTZ的赎回权在XTZ_S(n)的持有人手中,只有XTZ_S(n)的持有人有权向XTZ-Stake合约发起赎回,其他持币人没有赎回权。如果用户A将XTZ_S(n)交易给了用户B,那么用户A就失去了对原链XTZ的赎回权,同时合约中多签地址的XTZ和用户A地址的映射关系也变换成了和B地址的映射关系。用户B根据自己意愿,可以发起赎回,也可以交易XTZ_S(n)资产给其他人,这一过程中,多签地址通过Stafi上验证人的签名完成对原链XTZ所属权的多轮更换。多签地址的Stake签名由Stafi上一种特殊的验证人共同生成,Stafi上的验证人和Polkadot的共识验证人不同,并不需要完成出块共识,只需要在多签地址生成和所属权更换时完成共识,当用户A将XTZ_S(n)资产交换给用户B后,特殊验证人需要执行签名,并完成原来Stake XTZ的所属权更换。

5. 特殊验证人(SV, Special-Validator)

区别于共识验证人,特殊验证人为Stafi Stake合约中资产拥有权的见证人,当符合条件的持有人在向合约发起赎回的时候,特殊验证人会参与计算并完成资产的转移,通过签名完成资产从多签地址中转移到个人地址。在未发生赎回操作时,特殊验证人在本地存储着自己的私钥,等待被调用。特殊验证人由多人随机组成。多签地址形成前,Stafi会通过随机算法从验证人群组中挑选N个验证人,N个验证人本地执行计算后通过秘密通道传输结果,验证后获得参与权,同时存储在各自的服务器本地,整个过程由程序自动化执行。

同时,每个特殊验证人会被要求运行Stake合约支持项目的轻节点,用于验证原链交易状态。此程序会被写入整个特殊验证人客户端,自动执行验证。

6. 特殊验证人群组

为了保证赎回通道的通畅,Stafi中的特殊验证人是以群组的方式执行任务,有固定的工作周期。在这段周期内,单个验证人群组共同完成多签地址生成和秘钥的存储工作,并且在执行周期完成后,随着新的一个群组介入,替换之前群组的计算和存储角色,以此保证当前验证人的活性。验证人的选举更迭以Epoch为周期(一个Epoch周期大概是1个自然日)前一个Epoch完成当前Epoch的选举工作,Stafi从候选人当中每次随机选出新的N个特殊验证人形成群组。新的特殊验证人通过秘密通道验证的方式,实现新旧验证人的更换。新的验证人会以自己的私钥替换掉旧的验证人私钥,同时系统对旧的验证人私钥执行的关系销毁。但频繁的更替会导致计算效率低下的问题,Stafi上线时,会在保证安全和效率的基础上,会选择一个比较合理的更替周期。

7. 特殊验证人奖惩

由于特殊验证人的重要性,Stafi对验证人设立了奖惩机制,对计算和存储等正向行为实行激励,对掉线,不按时更替等负向行为实行惩罚。在Stafi协议中,参与生成地址,参与计算,签名都可以获得Stafi的token--SFI的激励。同时,Stafi对于安全问题的惩罚也是极其严厉的,Stafi会要求所有参与计算和存储的验证人保持严格的在线时间,如果验证人经常掉线,会被Slash,如果掉线时间超过N小时后,验证人会被Jailed,一段时间内无法参与特殊验证人群组的计算和存储。另外,系统会根据链上可证明数据,对尝试恢复私钥,盗取别人资产的攻击行为进行严厉惩罚。

8. 特殊验证人的Staking机制

任何持有Stafi token的人都可以申请成为Stafi的特殊验证人,成为特殊验证人需要质押SFI Token,质押的SFI Token和能接受的Stake量成正比,也就是质押的SFI越多,所能处理的Stake资产计算和存储的价值也就越大,这能有效提高特殊验证人联合作恶的成本。进行Staking的SFI会得到系统的激励,同时,也是系统惩罚来源的资金池。由于Stafi系统的特殊性,特殊验证人的要求比较严格,上线初期节点会采取逐步开放的方式让验证人参与进来。

9. Stake合约安全

Stake合约的资产安全受到多方面的保证,一是资产中立性,整体的Stake资产被存储在一个多签地址地址中,多签地址的资产变动通过门限多签共享技术由N个特殊验证人保证安全,不受任何单一第三方控制。二是多签地址使用资产机制,特殊验证人通过Stafi随机算法选出,验证人互相不知道彼此,合谋的可能性变小,并且资产的保护在一定周期内会动态的实现更换,保证安全性。三是可惩罚性,验证人在参与私钥签名计算和存储时,都需要抵押一定的SFI才能参与进来,在发生攻击或者不合法行为时,抵押的SFI会被Slash,抵押的价值和能处理的资产价值成正比。多种条件组合在一起,Stafi系统能有效抵押一定危险系数的攻击,在大部分人都是诚实的假设下,Stake合约的资产能够保证一定的安全。

10. Stake合约的资产去中心化

当持币人从Stake合约发起Stake时,整个Stake资产会集中在一个合约当中,虽然每个Stake都是一个地址发起的,不会影响去中心化程度,但是当Stake资产较为集中时,被攻击的概率就会增大。Stafi通过建立多个同种Token Stake合约的方式,避免资产的集中。合约整体的数量会根据Stake资产的多少来自动增加,新的资产进入新的Stake合约Stake。同时,Stafi会在初期启动时建立多个Stake合约,Stafi系统会自动将初始Stake的需求平均分配到这些Stake合约中,起到一个保障作用,后期随着Stake需求的增加,逐步将合约的数量增多,并且加以变量区分。同时,Stafi是一个去中心化的开放协议,初始开发团队开发的Stake合约都会经过审计并开源给第三方使用,第三方可以创建自己的Stake合约,一起实现Stake资产的去中心化。

11. 开放接口

去中心化协议的开放性非常重要,Stafi协议提供多种类型的架构/接口,方便开发者使用。包括,使用Stake合约资产的定制化接口、自行建立Stake合约的底层接口,实体/虚拟ABS化资产的自定义底层接口,Stake资产,ABS化资产的链上撮合接口等等丰富的RPC,最大自由化的提供开发者使用Stafi协议资产和在Stafi协议上开发/发行新的资产。

接口使用请后续查看Stafi的开发者文档。

上层应用

1. 债券资产流通

Stafi上创建的Stake合约将Stake资产释放出来,可以在Stafi上进行流通,用户无需在等待系统的锁定时间,可以轻松的将资产交易给别人。系统层面保证XXX_STAKE(n)资产和原链资产1对1 的关系,所以持币用户可以随时赎回原链资产。

Stake资产除了流通在Stafi协议上之外,也可以作为一种通用资产流通在不同的区块链交易通道中,比如中心化交易所,中心化交易所可以接通Stafi接口,定义不同XXX_STAKE(n)的初始定价,因为n不同,所以每种资产的交易成交价可能会有所变动。当然,去中心化交易所同样可以上线XXX_STAKE(n)类资产,提供多种撮合方式。更加进一步的合作是,交易所可以将Stake合约集成到自己的项目当中,并和自己交易所上持有原链资产的用户做结合,发行的资产直接同步到Stafi协议中,交易所通过连接Stafi协议,就可以轻松完成资产的对接,实现交易。

2. 债券交易市场BDEX

Stafi协议会提供多种Stake合约,Stake资产的对接。并且,在Stafi上会创建一个基于资产API的去中心化债券交易所,这个债券交易所简称BDEX。BDEX在V1版本会支持所有开放接入的Stake资产,支持充提,支持自动化撮合的订单交易系统。

3. 可扩展的ABS

ABS俗称资产证券化,Stafi希望成为未来ABS的一种资产入口,整个协议框架的搭建都以资产加未来收益的模型搭建,是一个面向未来的一个债券交易协议,所以Stafi在初步完成Stake的资产ABS化后,会逐渐开始现实ABS化资产的接入,流通。

Token Economy

Stafi作为一个去中心化债券协议,支持资产的ABS化,以及流通和交易,和传统资产的ABS化不同,Stafi在资产ABS化的过程中,需要消耗计算资源。人们通过在Stafi协议上部署合约,以去中心化可自动化执行的方式,实现债券资产发行的自由权。SFI是Stafi上的Native token,作为流通的价值媒介协调整个协议运行,在无需第三方信任的情况下,发行债券,流通债券,交易债券都将使用SFI Token来保证协议运行。在整个协议的设计当中,SFI承载着以下几个作用

1. Staking

多位特殊验证人需要保证合约资产的所属权,为了激励验证人参与,同时也为了防止参与的验证人作恶,验证人需要使用SFI进行Staking来获得参与机会,并在真正完成相应计算和存储之后,获得系统的SFI奖励。Staking的SFI会被锁定,只有在新的一轮特殊验证人进行更换时候,才能发起解锁定。同时,为了合约资产的安全,系统规定Staking的SFI数量和能处理的Stake资产数量成正比,意味着Staking的SFI越多,能处理的Stake合约资产也就越多,也能获得更多的SFI奖励。如果特殊验证人的不诚实行为被系统检测出,系统会对Stake的SFI执行Slash,Slash比例视情节轻重来定,比如Stafi对验证人的在线时间要求较为严格,掉线时长超过2小时,会被Jailed,1个自然日不能获得奖励机会,掉线时间超过1个自然日,会被Slash掉5%的Staking SFI。严重情况下,比如尝试恢复非自有财产,全部的Staking SFI会被Slash。所以Staking的设计作为Stafi系统中一个重要的功能,保证合约资产安全。

2. Stake合约部署&存储

Stafi协议支持部署多种Stake合约,也将是未来ABS化资产债券化的部署平台,一个新的Stake合约部署,需要消耗一定的SFI来执行。和以太坊的GAS消耗模型一致,执行所需要消耗的SFI通过以下模型计算

Fee=Gas x GasPrice

其中,Gas等于10^-9SFI,初始参数由Stafi系统Stafi设置,GasPrice由部署人自定义,最终Fee以SFI定价,支付的SFI如果高于系统运行所需要的资源,那么运行完成后系统会将剩余的SFI返还给合约账户,反之,系统会在无SFI支付资源时停止运行。

3. Stake合约调用

Stafi协议会开放多个接口给第三方使用,合约调用会消耗系统的计算资源,为了限制恶意的低成本攻击,也为了满足一定程度的商业调用,合约调用频率达到一定高频率时,调用者需要承担一定的计算资源成本。当然,商业调用方可以自定义支付人,可以是平台使用者,也可以是平台自己支付。

整体的Fee模型以SFI计价,系统会计算调用时,节点付出的计算资源和存储资源,比较调用方所支付的SFI,最终确定最后的执行情况。

4. Transaction Fee

在Stafi上创建的Stake合约,通过原链Stake的方式获得了在Stafi协议上流通的XXX_STAKE(n),在Stafi协议上流通XXX_STAKE(n)需要支付SFI来获得计算力,验证人打包交易并上传到最新的区块数据中,更新完最新的区块高度后,XXX_STAKE(n)的交易得到转移。SFI的支付数量和所需要运行的交易数据大小有关系,普通交易的手续费模型如下:

Fee=Gas x GasPrice

其中,Gas等于10^-9SFI,初始参数由Stafi系统Stafi设置,GasPrice由部署人自定义,最终Fee以SFI定价,支付的SFI如果高于系统运行所需要的资源,那么运行完成后系统会将剩余的SFI返还给合约账户,反之,系统会在无SFI支付资源时停止运行。

以上所有的Fee会流向一个系统的Pool中,用以支付在Polkadot上运行Parachain的费用和激励特殊验证人。

Summary

目前解决Stake资产的流动性是一种用户刚需,随着2019~2020年更多PoS公有链上线主网,加密货币圈子会出现非常多的Stake资产,预计未来的2~3年,Stake资产的规模会达到千亿美元以上的市值,届时大量资产会因为安全问题被系统锁定,丧失了流动性价值。Stafi协议以Stake资产ABS化为起始点,旨在创建一个去中心化的ABS资产发行协议,初期以提供Stake资产为重点,支持无需第三方信任的方式,跨链发行Stake资产的ABS产品,解决Stake资产流动性和系统安全性的矛盾关系。无论是XTZ,ATOM,亦或是还未出现的DOT,DFN等,都会在Stafi协议上发行对应的XXX_STAKE(n)资产,支持流动,为一些对流动性需求较强的资产构建一个可交易,可流通的平台。

平台支持高度可编程化,可以实现多种接口的自定义。底层架构为Stake资产的ABS产品构建,可以快速,简单的实现多种公有链的结合,发行对应的Stake资产。开发者可以根据自身需要,在Stafi上开发Stake合约,或是直接使用已有合约接口,构建Stake资产流动的平台。

Stafi的愿景是创建一个资产ABS化的区块链底层架构,支持开发者或者机构利用此协议创建各种ABS化资产,并且能简化掉繁琐的审批流程,实现去中心化债券的发行和买卖自由。但是,获得自由的背后往往隐藏了多方面的风险,如投资保障,投资回报等需要明确的投资风险。这些风险在现实当中是通过增信机构背书,通过保险公司来保障的,但这些方式往往和去中心化精神所背离,也会带来中心化背书的风险。现今的分布式金融发展的越来越快,相信未来会有更多的分布式商业着手解决此类问题,比如去中心化保险,去中心化增信等等,这些去中心化产品的出现,会更好的和Stafi协议结合在一起,为ABS资产提供更好的价值背书,而这一切都是去中心化的,这也是Stafi未来的一个发展方向。

未来工作

完成一个去中心化资产债券的发行过程,需要很多挑战,这些挑战是未知的,但是从现实中ABS化资产过程窥探究竟,目前ABS化资产需要经过很多层级的审批和增信,以此来实现ABS资产的优质化,整个优质化的过程其实是耗时和耗力的,Stafi实现了ABS资产的自动发行,并减少了中间比较少的第三方参与环节,但由于区块链金融发展尚属早期,ABS资产的去中心化”背书“远远没有达到要求,这段空白时间,要求参与的投资者要有足够成熟的心智。未来,为了让更多的资产,通过Stafi发行,也为了让更多的投资者进入,Stafi希望发展成一个可以以去中心化方式保护投资者的ABS发行和交易协议。为此,Stafi还要考虑以下要做的工作。

链上治理

Stafi是一个去中心化的协议,其升级方向和治理息息相关,将Token Staking作为投票权成为了众多PoS共识项目的治理手段之一。在Staking的基础上,不同项目的实现细节会有不同,比如通过激励来增加投票的参与度,比如通过预测市场来提供投票的参考,又比如通过代理制度避免投票结果走向中庸。Stafi认为现实中的投票问题颇多,参与度,结果都是为人诟病的一些问题,尝试提供更多参考意见和激励机制可以有效解决投票问题,但是现行的一些投票机制当中,并不存在完美的解决办法,大部分都是通过间接的解决手段结合区块链来优化投票,但这往往又带出来了新的问题,所以投票一直都是一个比较棘手的问题,虽然结合区块链带来了效率提升,但这种结合还触动不了一些根基问题,Stafi会在初始阶段实现基本的投票逻辑,再升级成为链上治理逻辑,同时将投票问题的解决放在长期优化的计划中。

私钥维护方式

目前多签地址的私钥签名是通过门限多签算法,由多名特殊验证人参与保管的,验证人的私钥存储在验证人本地服务器上(加密后),但是资产的保存和验证人的存在时间都具有一定的时效性,两者有效性在现实中无法达成一致,会危及到资产的存储安全。目前Stafi通过定期轮换的方式,保证私钥存储的随机性和随时性,但是动态频繁更换验证人会耗费无效的计算资源,所以频率上需要保持一定的合理水平。目前并不能确定最佳的频率,未来的工作有一部分重点将放在调整频率和安全的关系上。

同样,门限多签技术仍需要保证对随机验证人的信任,Stafi正在研究和寻找新的可用于降低信任的算法,以此来推进协议安全的升级。目前隐私计算如MPC,TEE等技术的研究方向和Stafi上所需要的安全模型有一定的契合,隐私计算技术也在快速发展当中,工程化落地的项目开始变多,未来协议层也会积极探索该方向。

分散智能合约

当持币人通过Stake合约进行Staking时,Token会被原链锁定,原链的安全机制保证Stake Token的安全,但是由于有跨链发行债券XXX_STAKE(n)的存在,资产多签账户的映射关系会保存在Stake合约中,当Stake的原链代币越来越多的时候,这个合约被攻击的可能性会加大。虽然映射关系不是原链资产赎回的决定性要素,但会对系统造成有危害。Stafi尝试创建一套分配体系,将Stake合约的生成根据Stake资产的价值而变化,为每个Stake合约预设一定的阈值,当超过阈值后Stake将不会从此合约中Staking,而会从新生成的Stake合约中实现。动态设定解决资产集中化问题,也降低了大额资产被攻击的风险。

业界有成熟的设定,能实现Stake的合约并不拥有全部锁定的Stake资产,相反,当调用Stake合约时,会创建一个只有持有人权限的单独合约。该合约和单一Staker有强相关关系。另外,发布前,此合约将会被第三方审计机构审计。

原链资产安全

ABS Token的发行根据原链证明,当原链上完成Staking后,ABS Token会被锻造出来并发送给相应用户。Stafi协议保证了ABS Token和原链资产1对1的赎回权,但是如果当原链上的Staking模块出现问题时,ABS Token也会相应的减少价值。比如用户在初始Staking的10个XTZ,那么初始得到一个对应的XTZ_S (10),当该XTZ被Slash后,变成了5个XTZ的价值,那么ABS Token会有减少对应的价值,变成XTZ_S (5),动态监控涉及到Stafi和原链的频繁交互,这使得整个协议变得复杂,所以,维持合理的监控和交互频率,也会是未来Stafi协议一个比较关注的重点。

债券发行风控

去中心化的投资风险全有个人投资者承担,这使得参与的投资人需要有更加成熟的心智,大量投资失败的案例可能会阻碍了很多新的投资人参与的机会,所以我们看到现实中很多投资品是有背书,大的机构或者是体制支持,当Stafi协议引入ABS资产的时候,节省了过程中很多中心化背书和审计的环节,虽然提高效率但也带了新的投资风险。为了降低风险评估决策,Stafi会创建新的一套,以去中心化模式运行的体系,如去中心化保险,去中心化增信,去中心化风控等,帮助不同投资人完成投资。

参考

https://multicoin.capital/2018/02/13/new-models-utility-tokens/

https://www.tezcn.com/wp-content/uploads/2018/03/white_paper_zh.pdf

https://herdius.com/whitepaper/Herdius_Technical_Paper.pdf

解释

(1)作者把PoS共识的发展按照时间周期划分成两个周期,第一个周期是2011~2015年,第一代PoS共识诞生了如Peercoin,Nxt等Token;第二周期是2016~至今,第二代PoS共识在第一代PoS共识的基础上发展而来,如Tezos,Cardano,Cosmos,Polkadot等。

(2)Staker需要将币进行Staking,以参与到PoS网络共识,这个过程参与Staking的Token将会被锁定在系统当中,无法进行流通/交易,持有者无法对市场变化做出及时反应,很可能会错失利润获得窗口。

(3)PoS共识有计算复杂性,在做选举的时候,如果Staking代表的权重是动态变化的,那么计算将变得复杂,共识性能也会降低,所以对短时间内Staking权重加以时间锁定,是处于性能,安全等多方面的考虑结果。