// Copyright Fuzamei Corp. 2018 All Rights Reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

//Chain33投票治理系统旨在为chain33链提供一种社区发展自治的系统，可以由利益相关者制定规则。
//Chain33投票治理系统中参与投票治理主要由董事会以及全体持票人。
//董事会主要参与日常项目的执行决策；董事会的产生由提案人提案董事会成员（暂定30），由全体持票人投票，超过50%的持票进行投票，其中得票率超过50%
//即可认为该提案的董事会成员合法；董事会行使投票权利：针对某一提案，需要全体董事会成员三分之二以上成员参与，且需要参与成员中三分之二以上投赞成票，说明该提案通过董事会投票。
//根据提案示项目大小（金额，这个金额可以由全体持票人投票来定）来决定是否需要公示期：
//（1）对于小项目，则不需要进入公示期，董事会通过之后即可以进行项目开发。
//（2）对于大项目，则董事会成员通过之后，进入公示期，公示期期间（大约一周的区块高度），全体持票人可以对该项目投否决票，超过三分之一的全体持票人投否决票，则该提案视为不通过(后台服务提供消息注册提醒功能)
//全体持票人指全体持有比特元票的人。全体持票人主要负责：
//（1）选举董事会成员，对于提案的董事会成员进行投票
//（2）对于重大项目的否决权利，即对通过董事会成员投票进入公示期的重大项目有否决权利。
//（3）可以重新对董事会成员进行提案投票，一旦通过，则原有董事会成员权利自动失效。
//（4）可以重新对提案投票自治系统某些参数进行修改，一旦通过，则投票的判断以新参数为准。
//
//
//任何人可以消耗一定数量的费用（如1000）进行提案，提案的费用转入到发展基金中，提案的种类包括三种：
//（1）提案董事会成员，即提案董事会成员后投票形成董事会；
//1）提案董事会成员数目在[3 30]范围
//2）提案需要指定参与有效投票的区块高度区间。
//3）需全体持票50%进行投票且得票率超过50%即可认为该提案的董事会成员合法。
//
//（2）提案项目方案，提案后投票确定是否执行该项目；
//1）提案人跟具体线下承包方具有一定的绑定关系：
//a 承包商可以将营业执照、收款地址、身份证信息等注册到钱包或者其它的服务器上面；
//b 在某个承包商提交一个提案后，客户端获得（钱包或者服务器可以主动将该提案推送给董事会成员）该提案，并且与保存在钱包服务器中的承包商信息想匹配，给出参与投票人相关的提示；
//2）提案需要指定参与有效投票的区块高度区间
//3）需要按照要求在填入项目相关信息，包括项目地址、第一阶段提案hash（针对项目多阶段提案）、上一阶段提案hash（针对项目多阶段提案）、项目阶段性简述（md格式）、承包人、项目经费、经费细则（md格式）、收款地址。
//4）提案通过董事会之后，根据项目金额大小来决定是否进入公示期，公示期周期固定为1周的区块高度，从董事会实际投票结束的高度向后推算一周区块高度。有超过30%的否决票，则该提案不通过。
//5）根据每个不同阶段，完成的情况，追缴上一阶段的金额，开始阶段预付一定金额，最后一个阶段支付尾款，尾款的控制由董事会进行把控。
//6）董事会成员可以对提案进行评论，评论将以交易的形式提出并且与提案相关联，显示到提案区，参与评论的截止时间以实际提案结束投票高度为准。
//
//（3）提案投票自治系统参数修改，如达成董事会投票的参与率/通过率，全体持票人重大项目的否决率，提案费用，重大项目金额阈值的修改。
/*
Item项目提案:
Item是针对系统配置项的自治合约管理，用户需要在配置项修改合约提交申请交易，在Autonomy自治合约提交包含申请交易id的item申请，社区委员会投票
满足设定成员投票通过后，在原合约提交approve交易，附带autonomy合约申请id，原合约查询Autonomy合约后完成配置项的修改
1. manage合约 增加新的配置项申请交易，在Autonomy提交item申请，board投票通过，manager合约提交附带item id的approve交易，完成配置项修改
2. paracross nodegroup申请。首先在paracross 提交nodegroup申请交易，在Autonomy提交item申请，board投票通过，paracross合约提交approve申请完成注册。

*/

package autonomy
