SFT协议软件层的具体实现
SFT协议软件层的实现,需要多个软件模块的参与:质押合约,多重签名,资产所有权确认,SSV特别验证人机制,智能合约安全等多模块协同完成。
4.1 质押合约
在SFT协议合约层面创建与Stake原链交互的合约称为StakingContract(简称SC)。例如,创建一个FIL-SC用于连接FIL和SFT。
4.1.1 质押并创建多签地址
当持有FIL的用户A在FIL-SC上发起Stake操作时,StakingContract会先创建一个多签地址,他通过FIL原链将FIL转入该地址,转账成功后,合约将执行多签地址的质押操作,如果成功,代币将锁定在原链上。
4.1.2 Proofs
SFT协议会收到一份FIL原链的证明(Proofs),然后触发合约生成等量的SFT发送给Staker。StakingContract的更新需要原链和SFT协议协同工作,由于需要监控各链的合约状态,Staking合约的实现与跨链机制有很多相似之处。
4.1.3 铸造
当持有人在StakingContract中发起Staking请求时,多签账户的生成发生在SFT协议上。同时,通过Stake用户的签名完成个人资产向多签地址的转移。这种转移发生在原始链上。当Contract捕获到转账信息后,从多签地址向原链发起Stake请求。在原链上完成Staking后,SFT会抓取该地址在原链上的Stake状态并进行验证,验证成功后立即在SFT协议上铸造相应的SFT。
在整个过程中,SFT协议与原链进行了多次交互。状态的监控和捕获对整个协议的安全起着重要的作用。SFT协议通过时间延迟和多遍验证来捕获原始状态,以确保原始链的最终真实性。
4.2 多重签名
为了保证Stake资产的所有权与SFT之间的唯一对应关系,SFT协议设计了一个中间地址模型。
该地址的资产所有权不属于任何人,即任何人都不能拥有该地址的私钥。SFT通过安全的多方计算技术和门限多重签名技术保证中间地址的资产中立性,保证SFT持有者发起赎回时才进行签名。安全多方计算涉及隐私,需要SFT中有一群具有特殊功能的验证者参与,一定数量的验证者,被称SFTSpecialValidator(SSV)的节点使用自己的私钥进行签名,并通过安全通道传输,验证签名的有效性,最终实现中间地址签名的恢复。这个中间地址没有私钥,也没有存储在SFT协议上。只有在需要签名时才由特殊认证者的私有证书签名形成。门限多重签名技术的实现,实现了部分而不是全部的生成器可以生成私钥签名。
4.3 安全的多方计算
当SFT的持有者发起对StakeContract的赎回时,多重签名地址需要在计算和生成过程中创建私钥签名,并有专门的验证者参与。验证者通过加密通道传输计算结果,他们可以相互验证结果而无需透露自己的私钥。
安全多方计算主要关注如何在不存在不可信第三方的情况下安全地计算预定义的函数,解决结果依赖于多方数据计算而各方不愿共享原始数据的现实问题。通过安全的多方计算,可以在不向第三方透露初始输入值的情况下验证最终结果,这是解锁和赎回StakingContract的安全方式。
4.4 所有权转移
当Staking操作完成后,FIL在多签地址上的赎回权就在SFT的持有者手中。只有SFT持有者有权赎回调用FIL-SC合约。如果用户A将SFT交易给用户B,那么用户A就失去了对原链FIL的赎回权,合约中多签地址的FIL与用户A地址的映射关系也给与了B用户B可以根据自己的意愿发起赎回,也可以将SFT交易给其他人。在这个过程中,多签地址通过SFT上不同于Polkadot世界的特殊验证人的签名,完成对原链FIL的多轮所有权确认,不需要出块共识。
4.5 SFT特别验证人(SSV)
SFT协议通过SSV机制实现验证数据的安全性,公平性。
不同于SFTValidator(SV),SSV是SFTStake合约中资产所有权的见证。当符合条件的持有人向合约发起赎回时,特殊验证人将参与计算,通过签名完成资产从多签地址到个人地址的转移。当没有发生赎回操作时,特殊验证器将自己的私钥存储在本地,等待调用。
一个特殊的验证器由随机挑选的多人组成。SFT会通过随机算法从SV中选出N个SSV。SFT会随机选择N个SSV在本地进行计算,并通过秘密通道传输结果。验证通过后,获取参与权限,并分别保存在服务器本地。同时,每个SSV都需要运行StakeContract支持的项目的轻节点,以验证原链交易状态。该程序写入整个专用验证器客户端,自动执行验证。
4.6 SSV节点验证人机制
为了保证赎回数据安全,SFT中有专门的验证人以固定的方式分组执行。在各自轮班期间,单个验证者组完成多信号地址的生成和密钥的存储,执行周期完成后,由另一个新的组代替。这确保了当前验证者的参与。一个验证者任期持续一个时代(1个时代大约是24小时)。下一组的选举是在前一个时代完成的。SFT通过出块率、Staking比例等从SV候选中选择新的SSV。新的SSV将用自己的私钥替换旧的SSV的私钥,同时,系统将破坏与旧SSV私钥建立的关系。
4.7 节点验证人奖惩机制
由于特殊验证者的重要性,SFT为其建立了激励和惩罚机制,激励计算、存储等积极行为,惩罚掉线、不及时更换等消极行为。SFT协议规定,参与地址生成、计算、签名,将获得SFT协议代币——DAO激励。另一方面,SFT对安全问题的处罚是严厉的。SFT将要求所有涉及计算和存储的验证者保持指定的在线时间。如果验证者经常掉线,就会被罚没。如果掉线时间超过N小时,验证人将被Jailed,一段时间内不能参与特殊验证人组的任何计算和存储。
4.8 特殊验证者的质押机制
任何持有SFT代币的人都可以申请成为SFT的特殊证明人。一个特殊的验证者需要质押DAOToken,DAOToken与可以接受的Stake数量成正比,即抵押的DAO越多,Stake资产计算和存储的价值就越大。这可以有效地增加特殊验证者进行联合恶意行为的成本。质押的DAO会受到系统的激励,同时也是系统惩罚的资金池。由于SFT系统的特殊性,对特殊验证人的要求比较严格,上线初期的节点会逐步开放吸引验证人。
4.9 Staking合约安全
SFT协议中StakingContract的资产安全通过多种方式得到保障。
4.9.1 资产中立性
Staking资产会被锁定在原链上,它们的映射关系会记录在StakingContract中。多重签名地址由N个SSV通过门槛多重信号共享技术来保证。因此SC不受任何单一的第三方控制。
4.9.2 多重签名地址使用资产机制
特殊验证者由SFT随机算法选择。验证者互不认识,串通的可能性变小,资产保护会在一定时间内动态更换,保证安全。
4.9.3 惩罚性机制
验证者参与私钥签名计算和存储时,需要质押一定的SPD参与。如果发生攻击或非法行为,质押的SPD将被Slashed,质押的价值可以被处理。资产的价值成正比。当多种条件结合在一起时,SFT系统可以有效地惩罚某些风险因素。在大多数人都是诚实的假设下,Staking合约的资产可以保证一定的安全性。
4.10 流程
质押过程如下。用户先与SC交互,SC再与原链交互。期间,为了让用户的操作足够简单,SC需要承担与原链多次交互的责任。重要的是,SC在向用户分发SFT之前需要验证质押是否成功。用户可以随时通过持有的SFT赎回原链上的资产。SC的关系的修改需要SSV的签名,因为资产的记录关系是在SC上的。当用户发起赎回时,SC触发签名请求。SSV执行签名后,SC与原链交互,提交Unbond/Unstake请求。然后,SSV验证原链上的去信任证据。当证据属实时,用于提交请求的SFT将被销毁。
Last updated