# paracross 执行器 授权账户管理

## 场景
 1. 平行链申请开链之前申请几个授权账户，没有授权账户无法做跨链交易，目前没有押金机制
 1. 主链超级用户会分别向主链和平行链的manager合约发送账户添加tx，作为平行链的初始授权账户
 1. 平行链开链后在做跨链tx之前需要任何一个初始授权账户在平行链上发送takeover tx把初始授权账户接管到平行链，
    由平行链自己管理，如果不发送接管tx，平行链跨链无法完成
 1. 平行链接管初始授权账户后，初始授权账户审核后续新授权账户的添加和退出申请工作，必须除自己外，超过2/3数同意
    才可加入和退出，如果只剩最后一个账户，则不允许退出，如果随意退出有只留下僵尸授权账户风险，平行链失控
 1. 当前授权账户有投票删除某一个授权账户的权利，2/3数同意的规则
 1. 新申请账户在当前任一账户同意条件下，超级账户投票有直接通过权利，尤其是在当前授权账户不足2/3达不成共识时候，需要超级账户干预
 1. 特殊或异常场景：
    1. 新申请节点还没投票就退出,不允许，必须都投完票之后再申请
    1. 申请节点退出后重新申请,允许重新加入，但需要重新投票
    1. 新申请节点投票超过2/3否决，后来又投票超过2/3同意，可以加入或退出   
    
## 四个状态
```
    +-----------------------------------
    |                                  |
  adding  --+ added --+ quiting --+ quited
                |                      |
                -----------------------+
``` 
  1. adding:  新授权账户申请状态，若投票超过2/3否决停留在此状态，后续可以继续投赞成票
  1. added:   授权账户被当前授权账户组超过2/3票通过状态
  1. quiting: 当前授权账户申请退出账户组状态，投票超过2/3否决停留在此状态，后续可以继续投赞成票
  1. quited:  授权账户quiting被账户组除自己外账户投票超过2/3通过状态，或added的账户被账户组除自己外投票超过2/3否决除名状态   
  
## 测试场景：
 1. 新节点发tx申请加入，超2/3同意，新节点加入成功处于added状态
 1. 已加入节点申请退出，超2/3同意，已加入节点退出管理组处于quited状态
 1. 新节点重新申请加入，超2/3否决，新节点仍停留在adding状态，后来投票节点又2/3同意，新节点加入
 1. 投票节点一起投某一个账户组里面的账户否决票，超2/3数后，此账户退出账户组，又超过2/3同意后，仍处于退出状态（需自己申请加入）
 1. 账户组里面账户申请退出，当是最后一个时候退出失败
 1. 配4个节点，只有2个可以投票发共识消息，共识停止，2个新节点申请加入，其中一节点vote通过后，超级账户vote后通过，加入管理组参与共识             