CZZ主网上实现去中心化外链资产的承兑业务
去中心化跨链交易质押功能
主要逻辑:
### 质押注册
支持任意个人和组织通过质押方式注册成为跨链交易承兑方,并分配跨链交易承兑ID,注册完成后使用注册交易的同公钥地址作为BTC,BCH,BSV,LTC,USDT,DOGE等资产的外网的默认跨链交易(灯塔)地址,该地址在czz主网上唯一有效,不可修改。czz支持有限个数的跨链交易承兑方,支持公钥为10~99个对应的地址,可用于注册,每个地址仅支持一个用户注册一次,再次注册无效,注册成功后用于承兑用户的纠缠。
注册/更新交易包含信息:
+ amount: 质押czz的数量(最低100w)。
+ type: 类型码。
+ flag: 2字节,表示支持跨链交易资产的类型,每位对应一种资产(doge,ltc,usdt,bsv,bch,btc)。
+ fee: 兑换时所收取的手续费。
用户可以向指定公钥的地址发送注册或更新交易来注册成为跨链承兑方或更新承兑信息,质押信息更新成功后将在下一个块生效。
最低 stake = 100 万 + 累计跨链购入 CZZ - 累计销毁 CZZ。
添加白名单:
+ index: 白名单索引,从0-4。
+ type: 类型码。
+ pubkey: Secp256k1曲线的公钥。
用户可以向其承兑注册的地址发送增加白名单的交易用以增加外部资产存放地址,该方法支持更新外部白名单地址支持更新,并在下一个块生效,同时系统在周期性和指定方式的检测该锁定资产的总数。
### 资产跨链/销毁赎回
用户可向承兑方的灯塔地址打入BTC,BCH,LTC,DOGE等外部资产以一定比例换取czz本币,用户打币后以该比交易的txid作为参数向czz主网做跨链交易申请,czz主网将校验该笔交易并确保该承兑方拥有足够的czz质押数量以满足跨链交易,之后系统将从池地址向原txid的同公钥的czz主网地址转移固定数量的czz资产。
用户销毁兑换赎回:
+ 用户根据其在承兑方可兑换最大数量,将自己的czz币转移到0x00...00公钥上。
+ 用户提交兑换信息或承兑方监控用户销毁兑换交易。
+ 承兑方按用户指定类型资产再收取一定手续费后按整个系统比例释放外部资产(BTC,LTC,DOGE等)
+ 承兑方将该笔赎回释放资产的交易作为赎回证明提交到czz网络。
销毁兑换:
+ address: 0x000...000公钥对应地址(固定兑换地址不可修改)
+ amount: 销毁czz的数量
+ type: 兑换外部资产的类型
+ fee: 兑换手续费
证明:
+ address:0x000....009公钥对应地址(固定证明地址,不可修改)
+ exchangeID: 承兑ID。
+ type: 类型码。
+ burnTxid: 用户销毁兑换交易txid。
+ burnBlockHeight: 用户销毁兑换交易txid所在块高度。
+ redeemTxid: 承兑方释放资产交易txid
+ redeemBlockHeight: 承兑方释放资产交易所在块高度。
+ atype: 资产类型
+ rate: 兑换比例
### 信息统计
主网需要统计用户实时跨链交易数量,承兑方及最大可销毁兑换数量等信息,用于最后的证明验证。也需要就记录承兑方的承兑信息{id,兑换地址,最低质押量,白名单地址}等信息作为当前系统的状态。
+ 区块中恢复最新状态
+ 缓存用户状态和承兑状态
+ 快速同步对状态的重构的影响
### 反注册/惩罚
承兑方可以通过反注册的方式,放弃承兑功能释放其质押的资产,要求满足承兑方必须要完成所有在其上的销毁兑换币业务之后承兑方可以发起一笔反注册交易来移除承兑功能。该交易任然发送给其注册时对应的指定公钥地址。与注册一样,反注册交易也要求有较高的手续费,以防无效攻击。
反注册:
+ 承兑id
+ type: 类型码。
+ amount: 0--表示完全释放,大于零表示赎回部分质押资产。
用户销毁兑换后,承兑方释放用户外部资产后需要将释放的相关证明提交到主网,主网会校验该信息是否能够释放的资产等,如果承兑方没有或超时提交证明,其将受到惩罚,主网将扣除其部分质押资产作为补贴用户损失。证明超时时间暂定为1000块(1000*30s)