Stafi 协议白皮书

V2

作者

Liam ; Middle

摘要

PoS共识中采用了Stake模型来保证系统安全,以币权重的方式代替PoW共识中的算力权重,解决了矿机计算争夺出块权的能源消耗,以更优于PoW共识的口号开始进入人们视野。为了保障安全,采用PoS共识的项目几乎都设计了激励机制,来激励Stake率,同时为了防止币权重所带来的攻击可能性,几乎所有的项目都对Stake代币设定了锁定时间,导致PoS共识中出现了主网安全性和代币流动性的矛盾,即理论100%Stake锁定能带来相对高的安全,但是却因流动性为0对系统的价值增长而不利。我们希望创建一个去中心化的流行性协议,将锁定的Staking资产再流通起来。通过Staking合约的方式,发行对等价值的rToken(reward Token),以此提供Stake资产的流动性,同时保证原链Stake代币不会频繁的发生变动,有效的提高系统安全。

背景

2011年,Quantum Mechanic在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流动性的矛盾。持币人通过合约Staking的方式,获得对等价值的rToken,比如用户 stake 一个XTZ,持币人会同时获得了一个对应XTZ的rXTZ(reward XTZ),rXTZ对应着定期收益和原链XTZ的拥有权,持币人可以通过创建在Stafi协议上的rToken市场交易rXTZ。和原链进行Stake的XTZ不同,可交易的rXTZ没有锁定期,但仍然可以继续获得奖励,持有rXTZ的持币人不再需要承担波动性风险,可以对市场情况作出及时的反应。Stafi协议让持币人拥有了更多的权利,在利益驱使的情况下,持币人会因为风险解除而进入Stake合约中做Staking,这会直接增加Stake率。理论上,在去中心化程度足够分散的项目里,Stafi协议会将Stake率提高到90%以上(刨除一些丢币的情况),而且同时能创造出高达90%以上的流动性。

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

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

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

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

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

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

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

Stafi协议

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

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

任何第三方可以在Stafi协议的应用层,采用Stafi的协议建立一个去中心化的rToken交易所,所有的rToken交易所共享交易深度。随着采用PoS共识的公有链越来越多的上线主网,Stake的代币数量和种类也变得越来越多之后,rToken的交易会变得频繁,Stafi上的交易所应用开发者可以从rToken交易手续费中获得丰厚的回报。

具体实现

1.Staking合约

在Stafi合约层创建和Stake原链交互的合约,我们称之为Staking Contract(简称SC)。比如在Stafi上创建连接Tezos的XTZ-SC,当持有XTZ的用户A在XTZ-SC上发起Staking操作时,SC会先创建出一个多签地址,用户A会将XTZ通过Tezos原链转移到多签地址中来,当转移成功后,合约执行多签地址的Staking操作,当Staking操作成功的后,资产会被锁定在原链上,随之Stafi协议会接收到一个Tezos原链的证明(Proofs),进而触发合约生成一个对等数量的rXTZ,发送给Staker。

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

2.多签地址

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

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

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

4.所属关系转换

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

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

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

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

5.1 特殊验证人群组

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

5.2 特殊验证人奖惩

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

5.3 特殊验证人的Staking机制

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

6. Staking Contract安全

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

  • Staking Contract的资产去中心化

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

同时,Stafi是一个去中心化的开放协议,初始开发团队开发的Stake合约都会经过审计并开源给第三方使用,第三方可以创建自己的Staking合约,一起实现Staking资产的去中心化。

7. 时序图

Staking过程如下,用户先和SC交互,然后SC和原链交互。期间,为了让用户的操作足够简单,SC需要承担多次和原链交互的责任,最重要的一点是,SC需要在确定Staking成功之后,才能给用户分发rToken,以下时序图展示了整个的rToken发行过程的请求顺序。

任何时间,用户可以使用rToken赎回原链上的资产。因为资产的记录关系在SC上,SC的关系修改需要SSV的签名,当用户发起赎回时,SC触发签名请求,SSV执行签名后,和原链进行交互,提交解委托(Unbond/Unstake)请求,后SSV核实原链上的解委托证据,当证据为真是,提交请求的rToken将会被销毁。

上层应用

1. rToken资产流通

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

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

2. rToken交易市场

Stafi协议会提供多种Staking Contracts,支持项目的token转化为rToken,并且,为了提供更加丰富的流动性,在Stafi上会创建一个基于rToken的兑换池子,系统根据不同类型的rToken进行评估,并建立了相应的风控模型。在模型中,对于急需将rToken置换成其他资产但又找不到合适的标的的用户,系统可以通过增发FIS来回收此类rToken,兑换比例会比根据市场情况和用户的急需程度来决定。增发的FIS和持有rToken期间会给FIS持币人承担风险,但风险会平摊到持有人身上,降低了坏账的概率,同时,rToken与FIS之间存在一定的市场价差,在rToken发起赎回期间,系统会此而受益,整体依赖于风控模型。

3. 新型流通性Token协议

基于SC的Stafi协议可以为锁定的Staking资产提供流动性,同时,Stafi协议也可以创建更多类型的SC来满足不同类型的抵押资产,通过创建不同的SC开发套件,开发者可以在Stafi上建立类型更丰富的衍生品。

4. 与现有Defi的结合

与现有Defi结合主要资产层面的输出,现在的Defi主要集中的以太坊上,资产围绕着Erc20展开,但是基于erc20的很多Token流动性都比较差,而流动性的Staking Token市场可以为Defi带来更多的资产组合,与现有的借贷平台,抵押平台,都可以通过桥的方式,获得Staking Token。

Tokenomics

Stafi协议通过提供抵押资产流动性创造价值。Staker可以在获得通胀奖励的同时,流通rToken及时对市场做出反应,协议捕获流动性过程的价值,输出价值到协议当中。FIS是Stafi协议的原生Token,捕获的价值通过回购销毁FIS的方式,传输到FIS的持有人手中。

Stafi协议上会创建不同的Staking Contracts,处理不同的Staking Token,这些Staking Token被锁定在原链上获得通胀奖励,当rToken发生转移或者赎回时,一笔针对Staking奖励的收费会在用户操作时收取,收取的数量是奖励的一个百分比,协议上称之为流动手续费(Liquid Fee)。

基于Staking奖励的收费会随着SC的使用和SC的扩充而增多,目前市场上的Staking Token市值在14亿美金,锁定Token的市值在60%左右,一个乐观的估计是,当Stafi协议中实现了ETH2,XTZ,ATOM,EOS的SC后,通过SC解锁的Staking Token占领10%左右市场,那么Stafi的收益将非常可观

计算的公式是:

Earning=v(vαβγ)Earning=\sum_{v}^{} (v*α*β*γ)

其中v为不同Staking Token的市值,α为锁定的token比例,β为年通胀率,γ为流动手续费率,我们假设流动手续费为30%,平均通胀奖励为5%,平均Staking率为50%。,一年Stafi总收益为2千万美金。

捕获的价值用以平衡系统的通胀。很浅显的一个道理是,当销毁的FIS大于系统通胀的FIS时,系统的总体价值是增长的,反之则是下降的,所以SC的开发和采用是Stafi协议的重要的收入来源。

FISburn>FISinflationCreatevalueFIS_{burn}>FIS_{inflation}→Createvalue
FISburn<FISinfaltionLostvalueFIS_{burn} <FIS_{infaltion}→Lostvalue

通胀的存在是为了实现Stafi协议的去中心化,每个区块的产生,需要验证人付出相应的计算、带宽以及存储资源,同出块产生的FIS用于补偿验证人所做的贡献。同时,由于SC的特殊设计,协议要求更高级别的验证人提供安全服务,如多签服务,轻节点服务,预言机服务等,相应的服务也会得到激励。

所有类型的激励加在一起,形成了一年的通胀率,通胀率的设计是一个复杂的经济问题,通过研究,我们发现市面上PoS项目的通胀率,一般设置在年通胀5~20之间,大部分根据整体的Staking率动态调整该比例。

Stafi的初始年通胀率划分为两部分,分别针对验证人SV和特殊验证人SSV。针对SV的年通胀率为【2.5%,10%】,根据Staking率动态调整,针对SSV的年通胀率为【1%,2%】,根据服务调用次数动态调整。总通胀率理论上会逐年降低,而随着SC的采用,捕获的价值也会增加,最终创造一个向上收益的协议产品。

Token model

Stafi协议中有两种类型的Token,一种是替代性Token(目前为rToken),一种原生Token(FIS),两种Token在协议中承担的职能不一样。rToken主要承担流动性资产的作用,权益继承于Staking Token。FIS作为Stafi协议的原生Token,主要是系统交易媒介,主要承担价值捕捉,共识激励,防止系统滥用(Tx fee)等作用。

  • 验证人的Staking与激励

开放性的PoS网络需要激励验证人参与,同时也为了防止参与的验证人作恶,验证人需要Staking FIS来获得参与机会,并在真正完成相应计算和存储之后,获得系统的FIS奖励。Staking的FIS会被锁定,如果验证人作恶,锁定的FIS会被Slash。特殊验证人从验证人中选举,通过一定的判断条件(如在线时间,自由抵押金比例等)来确定选举对象。一般情况下,为了合约资产的安全,系统规定Staking的FIS数量和能处理的Stake资产数量成正比,意味着Staking的FIS越多,能处理的Stake合约资产也就越多,也能获得更多的FIS奖励。如果特殊验证人的不诚实行为被系统检测出,系统同样会对Staking的FIS执行Slash,Slash比例视情节轻重来定。

  • 交易手续费Transaction Fee

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

Feetx=ctraffic(basefee+type(tx)lenthOf(tx))+weight(tx))Fee_{tx}=c_{traffic}*(basefee+type(tx)*lenthOf(tx))+weight(tx))

其中 是根据网络交易情况动态调整的参数,tpye(tx)是根据交易类型动态调整的参数,basefee为基础费率,lengthOf(tx)为交易的数据大小,weight(tx)是一个时长和状态的综合函数。

最终Fee以FIS定价,支付的FIS如果高于系统运行所需要的资源,那么运行完成后系统会将剩余的FIS返还给合约账户,反之,系统会在无FIS支付资源时停止运行。

  • Stake合约调用

Stafi协议会开放多个接口给第三方使用,合约调用会消耗系统的计算资源,为了限制恶意的低成本攻击,也为了满足一定程度的商业调用,合约调用频率达到一定高频率时,调用者需要承担一定的计算资源成本。当然,商业调用方可以自定义支付人,可以是平台使用者,也可以是平台自己支付。整体的Fee模型以FIS计价,系统会计算调用时,节点付出的计算资源和存储资源,比较调用方所支付的FIS,最终确定最后的执行情况。

协议所得的所有交易费,会通过一定的比例分发给验证人(SV)和国库(Treasure),比例的参数可以通过线上治理实现修改。

  • 国库(Protocol Treasure)

为了实现协议的去中心化和可持续发展,系统收益的一部分将被发送到国库,用以支持后续开发和社区工作。国库来源主要是通胀奖励,流动手续费,交易手续费,Slash押金等,国库的使用通过提案系统审批,持币人通过投票确定提案通过情况。

如果一定周期中,国库中的FIS未使用完, 那么将启动销毁的方案。早期,协议仍需要发展,基金会会决定国库的使用和销毁,待协议开饭完善,国库使用将开放给社区。

Token的初始分发

FIS的初始分发中,有很大一块权重被分配到社区奖励当中(Community Reward),用户可以通过Staking Contracts进行Staking获得社区奖励,获得的数量和Staking Token的总价值成正比,我们把奖励的过程称作为Staking Drop。Staking Drop是Stafi设计的一套初始激励机制,用以激励Stafi早期的采用(Adoption),Stafi的整体价值依赖于SC的扩充,新的激励能提高流动手续费的收取。这套方式和通胀FIS->收益回购销毁FIS的逻辑一样,只不过StakingDrop中,通胀部分被FIS的初始分发所替代了。

为了获得较大范围的覆盖和让更多人能参与,我们把Staking Drop当成一种长期的运营活动,时间持续按年计算,并根据不同项目的锁定时间设定不同的空投周期,单个项目可以设置多次空投,每个周期从开始到最后逐步递减,开始的激励设计的足够高以吸引更多的持币人进行Staking,Drop的基本模型如下

关于Stafi的Tokenomic,更具体的内容可以查看Stafi的经济白皮书《Stafi Tokenomic Whitepaper

Summary

目前解决Staking资产的流动性是一种用户刚需,随着2019~2020年更多PoS公有链上线主网,加密货币圈子会出现非常多的Staking资产,预计未来的2~3年,Stake资产的规模会达到千亿美元以上的市值,届时大量资产会因为安全问题被系统锁定,丧失了流动性价值。Stafi协议以为Staking资产流动性作为目标,以无需第三方信任的方式,跨链发行Staking资产的替代型token,解决Staking资产流动性和系统安全性的矛盾关系。无论是XTZ,ATOM,亦或是还未出现的DOT,DFN等,都会在Stafi协议上发行对应的rToken,支持流动,支持交易。

对于原生token而言,rToken是衍生资产,而对于DeFi世界,rToken是绝佳的基础资产。以rToken作为基础资产,开发金融衍生品,避免了衍生品和原链安全性竞争。因此,Stafi将成为DeFi世界的重要基础实施。这是Stafi未来的一个发展方向。

未来工作

实现rToken的广泛流通,和基于rToken的衍生资产的繁荣,需要很多挑战,这些挑战包括技术层面的,也包括信任层面的。Stafi协议需要保障,Stafi协议所管理的Staking资产是安全的,这种安全性是一个基础,有了这个基础,才会有更多的Staker通过Stafi来参与Staking,有了这个基础,当Stafi协议管理的Staking资产数量极其庞大时,依旧能够抵御黑客攻击,以及其他黑天鹅事件。有了这个基础,开发者们才愿意基于rToken去开发更多应用,衍生更多资产。

因此,Stafi还有很多工作要做。

1. 链上治理

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

2. 私钥维护方式

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

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

3. 分散智能合约

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

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

4. 原链资产安全

rToken的发行根据原链证明,当原链上完成Staking后,rToken会被锻造出来并发送给相应用户。Stafi协议保证了rToken和原链资产1对1的赎回权,但是如果当原链上的Staking模块出现问题时,rToken可能会减少价值。比如用户在初始Staking的10个XTZ,那么初始得到一个对应的10个rXTZ,当该XTZ被Slash后,变成了5个XTZ的价值,那么10个rToken对应的赎回权变成了5个XTZ,rXTZ和XTZ的一对一关系发生了脱锚。为了规避这种情况,Stafi设计了一套风控和代偿机制,在Staking Contract系列第三篇,《Staking Contract的风控框架》中有详细阐述。

这个机制还在不断打磨完善,也是Stafi未来的工作重点之一。

5. 替代性Token的权益分发

通过Stafi发行的rToken代表这原StakingToken的赎回权和收益权,除此之外,还有投票权或者其他生态权益,Staking Contracts目前只实现了基本的赎回权和收益权,在此基础上,研究拓展rToken对应在原链上的权益,甚至是提供更多原链上没有的权益是Stafi未来一个主要的发展方向。

同时,分配权益的公平性需要进一步的打磨,由于不同PoS公链的分发权益机制并不一致,完善SC的接入需要一段时间来打磨产品,完善的产品能保持和原链上一模一样,甚至更优于原链的分配方式,建立一套通用的权益分发机制变得很重要,既能降低开发难度,又可以提高用户满意度。目前,Stafi采用简单易懂的权益分发方式,秉承大众承担/分担风险权益的原则,对Staker进行分发权益,但由于和原链机制并不一致,可能会引来一些质疑,但是这个发展过程中不得不面对的一些问题。

6. Staking资产之外,更多资产的替代型Token发行

Stafi的本质是基于Staking资产去发行替代型token,反过来讲,发行替代型Token的基础资产是Staking资产。如果基础资产能够扩展到更多形式的加密资产,甚至衍生到非加密资产呢?倘若能实现,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

https://wanchain.org/files/Wanchain-Whitepaper-CH-version.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权重加以时间锁定,是处于性能,安全等多方面的考虑结果。