OSDN Git Service

Add doc of claim
[bytom/vapor.git] / docs / vapor-docs / 0.1 / core / claim-tx.md
1 # 侧链充值流程
2
3 ​     vapor侧链中验证人、收集人、联邦三个角色:
4
5 ​             验证人:侧链的出块人,任何人都可以成为验证人。
6
7 ​             收集人:监控主链锁定在联邦合约地址的交易,收集交易并生成claim交易,发送到节点验证人进行验证入交易池。
8
9 ​             联邦   : 侧链充值是指资产从主链转移到侧链的过程,转移过程,是需要资产先锁定到联邦合约地址。
10
11 ​     ![main2side](main2side.png)
12
13
14
15 ​     联邦合约地址生成:
16
17 ​     1、联邦合约地址需要7个联邦成员公钥生成,系统开始启动由初始出块人担任。
18
19 ​     2、运行一段时间后vapor侧链上用户可以注册为联邦成员候选人,由vapor侧链用户投票,从注册候选人中选出联邦成员,每次联邦成员变动不能超          过联盟成员的1/3
20
21 ​     3、选出联邦成员后,由新的联邦成员生成新的合约地址,以前的联邦合约地址转账到新的联邦合约地址。
22
23 ​     4、转账完成后,主链锁定资产到新的联邦地址,以后可以再竞选联邦成员。
24
25 ​     
26
27 ​     收集人:
28
29 ​     1、系统启动之时,由初始出块人担任。
30
31 ​     2、运行一段时间后,vapor侧链上用户可以注册成为候选人收集人,由vapor侧链用户投票,从注册的候选人中选出收集人(dpos出块一轮筛选一次)
32
33 ​     3、下发新的监控主链的联邦合约地址的收集人,收集交易,并附带收集人列表、收集人签名、原始交易、收集人公钥的claim交易到节点
34
35
36
37 ​     注:成为验证人、收集人、联邦在侧链都需要质押一定数量的btm
38
39
40
41 # 侧链提现流程
42
43 ​     1、vapor侧链用户发起提现请求,销毁vapor侧链的资产
44
45 ​     2、联邦合约地址针对请求向vapor侧链用户的主链地址发送对应对应数量的资产(前提交易已经在侧链上达到不会回滚的确认数)
46
47 ​     3、联邦在侧链上生成一笔完成提现的操作的交易
48
49
50
51 # claim交易输入类型
52
53 1、定义此输入类型,为了处理claim交易
54
55 type ClaimInput struct {
56
57 ​    SpendCommitmentSuffix []byte   // The unconsumed suffix of the output commitment
58
59 ​    Arguments             [][]byte // Witness
60
61 ​    SpendCommitment
62
63 }
64
65 2、TxInput结构作用增加字段Peginwitness
66
67 ​     Peginwitness保存了主链的源交易信息,用于其他节点收到交易时做验证。
68
69 ​     内容如下(字段序列化后依次放入Peginwitness):
70
71 ​     amount + ParentGenesisBlockHash + claimScript + rawTx + merkleBlock
72