3 vapor侧链中验证人、收集人、联邦三个角色:
5 验证人:侧链的出块人,任何人都可以成为验证人。
7 收集人:监控主链锁定在联邦合约地址的交易,收集交易并生成claim交易,发送到节点验证人进行验证入交易池。
9 联邦 : 侧链充值是指资产从主链转移到侧链的过程,转移过程,是需要资产先锁定到联邦合约地址。
11 ![main2side](main2side.png)
17 1、联邦合约地址需要7个联邦成员公钥生成,系统开始启动由初始出块人担任。
19 2、运行一段时间后vapor侧链上用户可以注册为联邦成员候选人,由vapor侧链用户投票,从注册候选人中选出联邦成员,每次联邦成员变动不能超 过联盟成员的1/3
21 3、选出联邦成员后,由新的联邦成员生成新的合约地址,以前的联邦合约地址转账到新的联邦合约地址。
23 4、转账完成后,主链锁定资产到新的联邦地址,以后可以再竞选联邦成员。
31 2、运行一段时间后,vapor侧链上用户可以注册成为候选人收集人,由vapor侧链用户投票,从注册的候选人中选出收集人(dpos出块一轮筛选一次)
33 3、下发新的监控主链的联邦合约地址的收集人,收集交易,并附带收集人列表、收集人签名、原始交易、收集人公钥的claim交易到节点
37 注:成为验证人、收集人、联邦在侧链都需要质押一定数量的btm
43 1、vapor侧链用户发起提现请求,销毁vapor侧链的资产
45 2、联邦合约地址针对请求向vapor侧链用户的主链地址发送对应对应数量的资产(前提交易已经在侧链上达到不会回滚的确认数)
47 3、联邦在侧链上生成一笔完成提现的操作的交易
55 type ClaimInput struct {
57 SpendCommitmentSuffix []byte // The unconsumed suffix of the output commitment
59 Arguments [][]byte // Witness
65 2、TxInput结构作用增加字段Peginwitness
67 Peginwitness保存了主链的源交易信息,用于其他节点收到交易时做验证。
69 内容如下(字段序列化后依次放入Peginwitness):
71 amount + ParentGenesisBlockHash + claimScript + rawTx + merkleBlock