Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
a2907e13
Unverified
Commit
a2907e13
authored
Nov 23, 2021
by
trouble
Committed by
GitHub
Nov 23, 2021
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into feature_exchange
parents
b424df05
808969f4
Hide whitespace changes
Inline
Side-by-side
Showing
40 changed files
with
2406 additions
and
241 deletions
+2406
-241
docker-compose.sh
build/docker-compose.sh
+4
-1
chain33.para.toml
chain33.para.toml
+12
-6
chain33.para.toml.readme
chain33.para.toml.readme
+8
-3
chain33.toml
chain33.toml
+4
-1
go.mod
go.mod
+1
-1
para.go
plugin/consensus/para/para.go
+5
-5
paracreate.go
plugin/consensus/para/paracreate.go
+1
-1
parajumpdownload.go
plugin/consensus/para/parajumpdownload.go
+5
-1
proposal_board.go
plugin/dapp/autonomy/commands/proposal_board.go
+9
-0
proposal_item.go
plugin/dapp/autonomy/commands/proposal_item.go
+267
-0
exec.go
plugin/dapp/autonomy/executor/exec.go
+37
-0
exec_local.go
plugin/dapp/autonomy/executor/exec_local.go
+20
-0
item.go
plugin/dapp/autonomy/executor/item.go
+163
-0
itemaction.go
plugin/dapp/autonomy/executor/itemaction.go
+342
-0
itemtable.go
plugin/dapp/autonomy/executor/itemtable.go
+73
-0
kv.go
plugin/dapp/autonomy/executor/kv.go
+9
-0
projectaction.go
plugin/dapp/autonomy/executor/projectaction.go
+2
-2
query.go
plugin/dapp/autonomy/executor/query.go
+15
-0
autonomy.proto
plugin/dapp/autonomy/proto/autonomy.proto
+8
-0
item.proto
plugin/dapp/autonomy/proto/item.proto
+86
-0
autonomy.pb.go
plugin/dapp/autonomy/types/autonomy.pb.go
+174
-88
const.go
plugin/dapp/autonomy/types/const.go
+23
-0
item.pb.go
plugin/dapp/autonomy/types/item.pb.go
+941
-0
types.go
plugin/dapp/autonomy/types/types.go
+13
-0
paracrosstestcase.sh
plugin/dapp/cross2eth/cmd/build/paracrosstestcase.sh
+1
-1
config.go
plugin/dapp/mix/executor/config.go
+2
-3
testcase.sh
plugin/dapp/paracross/cmd/build/testcase.sh
+6
-6
paracross.go
plugin/dapp/paracross/commands/paracross.go
+35
-31
exec.go
plugin/dapp/paracross/executor/exec.go
+1
-1
exec_del_local.go
plugin/dapp/paracross/executor/exec_del_local.go
+4
-4
exec_local.go
plugin/dapp/paracross/executor/exec_local.go
+4
-4
query.go
plugin/dapp/paracross/executor/query.go
+2
-2
superaccount.go
plugin/dapp/paracross/executor/superaccount.go
+33
-3
supervisionaccount.go
plugin/dapp/paracross/executor/supervisionaccount.go
+61
-53
supervisionaccount_test.go
plugin/dapp/paracross/executor/supervisionaccount_test.go
+18
-18
paracross.proto
plugin/dapp/paracross/proto/paracross.proto
+2
-1
paracross.pb.go
plugin/dapp/paracross/types/paracross.pb.go
+0
-0
type.go
plugin/dapp/paracross/types/type.go
+9
-4
chain33.cfg.toml
plugin/dapp/ticket/executor/testdata/chain33.cfg.toml
+3
-1
rpc_test.go
plugin/dapp/ticket/rpc/rpc_test.go
+3
-0
No files found.
build/docker-compose.sh
View file @
a2907e13
...
@@ -114,7 +114,6 @@ function base_init() {
...
@@ -114,7 +114,6 @@ function base_init() {
# wallet
# wallet
sed
-i
$sedfix
's/^minerdisable=.*/minerdisable=false/g'
chain33.toml
sed
-i
$sedfix
's/^minerdisable=.*/minerdisable=false/g'
chain33.toml
sed
-i
$sedfix
's/^nodeGroupFrozenCoins=.*/nodeGroupFrozenCoins=20/g'
chain33.toml
sed
-i
$sedfix
's/^paraConsensusStopBlocks=.*/paraConsensusStopBlocks=100/g'
chain33.toml
sed
-i
$sedfix
's/^paraConsensusStopBlocks=.*/paraConsensusStopBlocks=100/g'
chain33.toml
# blockchain
# blockchain
...
@@ -132,6 +131,10 @@ function base_init() {
...
@@ -132,6 +131,10 @@ function base_init() {
sed
-i
$sedfix
's/^enableReduceLocaldb=.*/enableReduceLocaldb=false/g'
chain33.toml
sed
-i
$sedfix
's/^enableReduceLocaldb=.*/enableReduceLocaldb=false/g'
chain33.toml
sed
-i
$sedfix
's/^enablePushSubscribe=.*/enablePushSubscribe=true/g'
chain33.toml
sed
-i
$sedfix
's/^enablePushSubscribe=.*/enablePushSubscribe=true/g'
chain33.toml
fi
fi
#autonomy config
sed
-i
$sedfix
's/^autonomyExec=.*/autonomyExec=""/g'
chain33.toml
}
}
function
start
()
{
function
start
()
{
...
...
chain33.para.toml
View file @
a2907e13
...
@@ -107,27 +107,24 @@ halvePeriod=1000
...
@@ -107,27 +107,24 @@ halvePeriod=1000
[consensus.sub.para]
[consensus.sub.para]
#主链节点的grpc服务器ip,当前可以支持多ip负载均衡,如“118.31.177.1:8802,39.97.2.127:8802”
#主链节点的grpc服务器ip,当前可以支持多ip负载均衡,如“118.31.177.1:8802,39.97.2.127:8802”
#ParaRemoteGrpcClient="
118.31.177.1:8802,39.97.2.127:8802,120.77.111.44:8802,
jiedian2.bityuan.com,cloud.bityuan.com"
#ParaRemoteGrpcClient="jiedian2.bityuan.com,cloud.bityuan.com"
ParaRemoteGrpcClient
=
"localhost:8802"
ParaRemoteGrpcClient
=
"localhost:8802"
#主链指定高度的区块开始同步
#主链指定高度的区块开始同步
startHeight
=
345850
startHeight
=
345850
#主链指定高度后等待块数,防止主链回滚,联盟链最小为1,小于1则采用缺省高度100
#主链指定高度后等待块数,防止主链回滚,联盟链最小为1,小于1则采用缺省高度100
#waitMainBlockNum=100
#waitMainBlockNum=100
#
打包时间间隔,单位
秒
#
等待打包主链区块时间间隔,单位毫
秒
writeBlock
Seconds
=
2
writeBlock
Msec
=
2000
#共识节点账户,共识节点需要配置自己的账户,并且钱包导入对应种子,非共识节点留空
#共识节点账户,共识节点需要配置自己的账户,并且钱包导入对应种子,非共识节点留空
authAccount
=
""
authAccount
=
""
#创世地址额度
#创世地址额度
genesisAmount
=
100000000
genesisAmount
=
100000000
#主链计算blockhash forkheight,需要和主链保持严格一致,不可修改,1是bityuan主链对应高度, ycc或其他按实际修改
mainBlockHashForkHeight
=
1
#主链支持平行链共识tx分叉高度,需要和主链保持严格一致,不可修改,2270000是bityuan主链对应高度, ycc或其他按实际修改
#主链支持平行链共识tx分叉高度,需要和主链保持严格一致,不可修改,2270000是bityuan主链对应高度, ycc或其他按实际修改
#不可为0,主链Local时候需特殊配置
#不可为0,主链Local时候需特殊配置
mainForkParacrossCommitTx
=
2270000
mainForkParacrossCommitTx
=
2270000
#主链开启循环检查共识交易done的fork高度,需要和主链保持严格一致,不可修改,4320000是bityuan主链对应高度, ycc或其他按实际修改
#主链开启循环检查共识交易done的fork高度,需要和主链保持严格一致,不可修改,4320000是bityuan主链对应高度, ycc或其他按实际修改
#不可为0,主链Local时候需特殊配置
#不可为0,主链Local时候需特殊配置
mainLoopCheckCommitTxDoneForkHeight
=
4320000
mainLoopCheckCommitTxDoneForkHeight
=
4320000
#mainForkParaSupervision=10400000
#无平行链交易的主链区块间隔,平行链产生一个空块,从高度0开始,配置[blockHeight:interval],比如["0:50","1000:100"]
#无平行链交易的主链区块间隔,平行链产生一个空块,从高度0开始,配置[blockHeight:interval],比如["0:50","1000:100"]
emptyBlockInterval
=
["0:50"]
emptyBlockInterval
=
["0:50"]
...
@@ -190,6 +187,8 @@ genesis="12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
...
@@ -190,6 +187,8 @@ genesis="12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
[exec.sub.manage]
[exec.sub.manage]
superManager
=
["12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"]
superManager
=
["12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"]
#autonomy执行器名字,空则不开启,使用superManager list
autonomyExec
=
""
[exec.sub.token]
[exec.sub.token]
saveTokenTxList
=
true
saveTokenTxList
=
true
...
@@ -218,6 +217,8 @@ pointHX="19172955941344617222923168298456110557655645809646772800021167670156933
...
@@ -218,6 +217,8 @@ pointHX="19172955941344617222923168298456110557655645809646772800021167670156933
pointHY
=
"21116962883761739586121793871108889864627195706475546685847911817475098399811"
pointHY
=
"21116962883761739586121793871108889864627195706475546685847911817475098399811"
#电路最大支持1024个叶子hash,10 level, 配置可以小于1024,但不能大于
#电路最大支持1024个叶子hash,10 level, 配置可以小于1024,但不能大于
maxTreeLeaves
=
1024
maxTreeLeaves
=
1024
#管理员列表
mixApprs
=[]
#系统中所有的fork,默认用chain33的测试网络的
#系统中所有的fork,默认用chain33的测试网络的
#但是我们可以替换
#但是我们可以替换
...
@@ -270,6 +271,8 @@ ForkBadRepeatSecret=0
...
@@ -270,6 +271,8 @@ ForkBadRepeatSecret=0
[fork.sub.manage]
[fork.sub.manage]
Enable
=
0
Enable
=
0
ForkManageExec
=
0
ForkManageExec
=
0
#manage增加配置需要经过autonomy board成员审批,平行链不开启
ForkManageAutonomyEnable
=
-1
[fork.sub.token]
[fork.sub.token]
Enable
=
0
Enable
=
0
...
@@ -300,6 +303,8 @@ ForkParaSupervision=0
...
@@ -300,6 +303,8 @@ ForkParaSupervision=0
ForkParaFullMinerHeight
=
0
ForkParaFullMinerHeight
=
0
#仅平行链适用,在旧的版本中计算blockTxHash输入高度为0,需要在此高度后统一采用新的主链高度值,旧的版本需要设置此分叉高度,新版本缺省为0即可
#仅平行链适用,在旧的版本中计算blockTxHash输入高度为0,需要在此高度后统一采用新的主链高度值,旧的版本需要设置此分叉高度,新版本缺省为0即可
ForkParaRootHash
=
0
ForkParaRootHash
=
0
#nodegroup approve需要经过autonomy board成员审批,平行链不开启
ForkParaAutonomySuperGroup
=
-1
[fork.sub.evm]
[fork.sub.evm]
Enable
=
0
Enable
=
0
...
@@ -393,6 +398,7 @@ ForkUnfreezeIDX= 0
...
@@ -393,6 +398,7 @@ ForkUnfreezeIDX= 0
[fork.sub.autonomy]
[fork.sub.autonomy]
Enable
=
0
Enable
=
0
ForkAutonomyDelRule
=
0
ForkAutonomyDelRule
=
0
ForkAutonomyEnableItem
=
0
[fork.sub.jsvm]
[fork.sub.jsvm]
Enable
=
0
Enable
=
0
...
...
chain33.para.toml.readme
View file @
a2907e13
...
@@ -118,13 +118,13 @@ ParaRemoteGrpcClient="localhost:8802"
...
@@ -118,13 +118,13 @@ ParaRemoteGrpcClient="localhost:8802"
startHeight=345850
startHeight=345850
#主链指定高度后等待块数,防止主链回滚,联盟链最小为1,小于1则采用缺省高度100
#主链指定高度后等待块数,防止主链回滚,联盟链最小为1,小于1则采用缺省高度100
#waitMainBlockNum=100
#waitMainBlockNum=100
#
检索主链最新区块时间间隔,单位
秒
#
等待打包主链区块时间间隔,单位毫
秒
writeBlock
Seconds=2
writeBlock
Msec=2000
#共识节点账户,共识节点需要配置自己的账户,并且钱包导入对应种子,非共识节点留空
#共识节点账户,共识节点需要配置自己的账户,并且钱包导入对应种子,非共识节点留空
authAccount=""
authAccount=""
#创世地址额度
#创世地址额度
genesisAmount=100000000
genesisAmount=100000000
#主链计算blockhash forkheight,需要和主链保持严格一致,不可修改,1是bityuan主链对应高度, ycc或其他按实际修改
#主链计算blockhash forkheight,需要和主链保持严格一致,不可修改,1是bityuan主链对应高度, ycc或其他按实际修改
--此参数弃用
mainBlockHashForkHeight=1
mainBlockHashForkHeight=1
#主链支持平行链共识tx分叉高度,需要和主链保持严格一致,不可修改,2270000是bityuan主链对应高度, ycc或其他按实际修改
#主链支持平行链共识tx分叉高度,需要和主链保持严格一致,不可修改,2270000是bityuan主链对应高度, ycc或其他按实际修改
#不可为0,主链Local时候需特殊配置
#不可为0,主链Local时候需特殊配置
...
@@ -275,6 +275,8 @@ ForkBadRepeatSecret=0
...
@@ -275,6 +275,8 @@ ForkBadRepeatSecret=0
[fork.sub.manage]
[fork.sub.manage]
Enable=0
Enable=0
ForkManageExec=0
ForkManageExec=0
#manage增加配置需要autonomy审批
ForkManageAutonomyEnable=0
[fork.sub.token]
[fork.sub.token]
Enable=0
Enable=0
...
@@ -305,6 +307,8 @@ ForkParaSupervision=0
...
@@ -305,6 +307,8 @@ ForkParaSupervision=0
ForkParaFullMinerHeight=0
ForkParaFullMinerHeight=0
#仅平行链适用,在旧的版本中计算blockTxHash输入高度为0,需要在此高度后统一采用新的主链高度值,旧的版本需要设置此分叉高度,新版本缺省为0即可
#仅平行链适用,在旧的版本中计算blockTxHash输入高度为0,需要在此高度后统一采用新的主链高度值,旧的版本需要设置此分叉高度,新版本缺省为0即可
ForkParaRootHash=0
ForkParaRootHash=0
#nodegroup approve需要经过autonomy board成员审批
ForkParaAutonomySuperGroup=0
[fork.sub.evm]
[fork.sub.evm]
Enable=0
Enable=0
...
@@ -398,6 +402,7 @@ ForkUnfreezeIDX= 0
...
@@ -398,6 +402,7 @@ ForkUnfreezeIDX= 0
[fork.sub.autonomy]
[fork.sub.autonomy]
Enable=0
Enable=0
ForkAutonomyDelRule=0
ForkAutonomyDelRule=0
ForkAutonomyEnableItem=0
[fork.sub.jsvm]
[fork.sub.jsvm]
Enable=0
Enable=0
...
...
chain33.toml
View file @
a2907e13
...
@@ -277,6 +277,9 @@ superManager=[
...
@@ -277,6 +277,9 @@ superManager=[
"12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
,
"12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
,
"1Q8hGLfoGe63efeWa8fJ4Pnukhkngt6poK"
"1Q8hGLfoGe63efeWa8fJ4Pnukhkngt6poK"
]
]
#autonomy执行器名字
autonomyExec
=
"autonomy"
[exec.sub.paracross]
[exec.sub.paracross]
nodeGroupFrozenCoins
=
0
nodeGroupFrozenCoins
=
0
#平行链共识停止后主链等待的高度
#平行链共识停止后主链等待的高度
...
@@ -307,7 +310,7 @@ pointHX="19172955941344617222923168298456110557655645809646772800021167670156933
...
@@ -307,7 +310,7 @@ pointHX="19172955941344617222923168298456110557655645809646772800021167670156933
pointHY
=
"21116962883761739586121793871108889864627195706475546685847911817475098399811"
pointHY
=
"21116962883761739586121793871108889864627195706475546685847911817475098399811"
#电路最大支持1024个叶子hash,10 level, 配置可以小于1024,但不能大于
#电路最大支持1024个叶子hash,10 level, 配置可以小于1024,但不能大于
maxTreeLeaves
=
1024
maxTreeLeaves
=
1024
mixApprs
=
["12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"]
[metrics]
[metrics]
#是否使能发送metrics数据的发送
#是否使能发送metrics数据的发送
...
...
go.mod
View file @
a2907e13
...
@@ -3,7 +3,7 @@ module github.com/33cn/plugin
...
@@ -3,7 +3,7 @@ module github.com/33cn/plugin
go 1.15
go 1.15
require (
require (
github.com/33cn/chain33 v1.65.6-0.20211
025083411-82c4406c6701
github.com/33cn/chain33 v1.65.6-0.20211
118074307-04e724cee41c
github.com/BurntSushi/toml v0.3.1
github.com/BurntSushi/toml v0.3.1
github.com/NebulousLabs/Sia v1.3.7
github.com/NebulousLabs/Sia v1.3.7
github.com/NebulousLabs/errors v0.0.0-20181203160057-9f787ce8f69e // indirect
github.com/NebulousLabs/errors v0.0.0-20181203160057-9f787ce8f69e // indirect
...
...
plugin/consensus/para/para.go
View file @
a2907e13
...
@@ -35,7 +35,7 @@ const (
...
@@ -35,7 +35,7 @@ const (
//current miner tx take any privatekey for unify all nodes sign purpose, and para chain is free
//current miner tx take any privatekey for unify all nodes sign purpose, and para chain is free
minerPrivateKey
=
"6da92a632ab7deb67d38c0f6560bcfed28167998f6496db64c258d5e8393a81b"
minerPrivateKey
=
"6da92a632ab7deb67d38c0f6560bcfed28167998f6496db64c258d5e8393a81b"
defaultGenesisAmount
int64
=
1e8
defaultGenesisAmount
int64
=
1e8
poolMainBlock
Sec
int64
=
5
poolMainBlock
Msec
int64
=
5000
defaultEmptyBlockInterval
int64
=
50
//write empty block every interval blocks in mainchain
defaultEmptyBlockInterval
int64
=
50
//write empty block every interval blocks in mainchain
defaultSearchMatchedBlockDepth
int32
=
10000
defaultSearchMatchedBlockDepth
int32
=
10000
)
)
...
@@ -70,7 +70,7 @@ type client struct {
...
@@ -70,7 +70,7 @@ type client struct {
}
}
type
subConfig
struct
{
type
subConfig
struct
{
WriteBlock
Seconds
int64
`json:"writeBlockSeconds
,omitempty"`
WriteBlock
Msec
int64
`json:"writeBlockMsec
,omitempty"`
ParaRemoteGrpcClient
string
`json:"paraRemoteGrpcClient,omitempty"`
ParaRemoteGrpcClient
string
`json:"paraRemoteGrpcClient,omitempty"`
StartHeight
int64
`json:"startHeight,omitempty"`
StartHeight
int64
`json:"startHeight,omitempty"`
WaitMainBlockNum
int64
`json:"waitMainBlockNum,omitempty"`
WaitMainBlockNum
int64
`json:"waitMainBlockNum,omitempty"`
...
@@ -105,8 +105,8 @@ func New(cfg *types.Consensus, sub []byte) queue.Module {
...
@@ -105,8 +105,8 @@ func New(cfg *types.Consensus, sub []byte) queue.Module {
subcfg
.
GenesisAmount
=
defaultGenesisAmount
subcfg
.
GenesisAmount
=
defaultGenesisAmount
}
}
if
subcfg
.
WriteBlock
Seconds
<=
0
{
if
subcfg
.
WriteBlock
Msec
<=
0
{
subcfg
.
WriteBlock
Seconds
=
poolMainBlockS
ec
subcfg
.
WriteBlock
Msec
=
poolMainBlockMs
ec
}
}
//WaitMainBlockNum 配置最小为1,因为genesis块是startHeight-1, wait=1和startHeight相等
//WaitMainBlockNum 配置最小为1,因为genesis块是startHeight-1, wait=1和startHeight相等
...
@@ -291,7 +291,7 @@ func (client *client) GetStartMainHash(height int64) []byte {
...
@@ -291,7 +291,7 @@ func (client *client) GetStartMainHash(height int64) []byte {
}
}
if
height
>
0
{
if
height
>
0
{
hint
:=
time
.
NewTicker
(
time
.
Second
*
time
.
Duration
(
client
.
subCfg
.
WriteBlockSeconds
)
)
hint
:=
time
.
NewTicker
(
time
.
Second
)
for
lastHeight
<
height
+
client
.
subCfg
.
WaitMainBlockNum
{
for
lastHeight
<
height
+
client
.
subCfg
.
WaitMainBlockNum
{
select
{
select
{
case
<-
hint
.
C
:
case
<-
hint
.
C
:
...
...
plugin/consensus/para/paracreate.go
View file @
a2907e13
...
@@ -537,7 +537,7 @@ out:
...
@@ -537,7 +537,7 @@ out:
if
err
==
nil
{
if
err
==
nil
{
continue
continue
}
}
time
.
Sleep
(
time
.
Second
*
time
.
Duration
(
client
.
subCfg
.
WriteBlockSeconds
))
time
.
Sleep
(
time
.
Millisecond
*
time
.
Duration
(
client
.
subCfg
.
WriteBlockMsec
))
continue
continue
}
}
...
...
plugin/consensus/para/parajumpdownload.go
View file @
a2907e13
...
@@ -63,6 +63,7 @@ func (j *jumpDldClient) getParaHeightList(startHeight, endHeight int64) ([]*type
...
@@ -63,6 +63,7 @@ func (j *jumpDldClient) getParaHeightList(startHeight, endHeight int64) ([]*type
return
heightList
,
nil
return
heightList
,
nil
}
}
//分页查找,只获取范围内的高度
//分页查找,只获取范围内的高度
plog
.
Info
(
"jumpDld.getParaTxHeightList"
,
"start"
,
heights
.
Items
[
0
]
.
GetHeight
(),
"end"
,
heights
.
Items
[
len
(
heights
.
Items
)
-
1
]
.
GetHeight
())
for
_
,
h
:=
range
heights
.
Items
{
for
_
,
h
:=
range
heights
.
Items
{
if
h
.
Height
>=
startHeight
&&
h
.
Height
<=
endHeight
{
if
h
.
Height
>=
startHeight
&&
h
.
Height
<=
endHeight
{
heightList
=
append
(
heightList
,
h
)
heightList
=
append
(
heightList
,
h
)
...
@@ -280,17 +281,20 @@ func (j *jumpDldClient) getParaTxs(startHeight, endHeight int64, heights []*type
...
@@ -280,17 +281,20 @@ func (j *jumpDldClient) getParaTxs(startHeight, endHeight int64, heights []*type
//获取每一排1000个paraTxBlocks
//获取每一排1000个paraTxBlocks
paraBlocks
,
err
:=
j
.
getParaTxsBlocks
(
row
,
title
)
paraBlocks
,
err
:=
j
.
getParaTxsBlocks
(
row
,
title
)
if
err
!=
nil
{
if
err
!=
nil
{
plog
.
Error
(
"jumpDld.getParaTxsBlocks"
,
"err"
,
err
)
return
err
return
err
}
}
//根据1000个paraTxBlocks的头尾高度获取header的头尾高度,header的高度要包含paraTxBlocks高度
//根据1000个paraTxBlocks的头尾高度获取header的头尾高度,header的高度要包含paraTxBlocks高度
headerStart
,
headerEnd
:=
getHeaderStartEndRange
(
startHeight
,
endHeight
,
heightsRows
,
i
)
headerStart
,
headerEnd
:=
getHeaderStartEndRange
(
startHeight
,
endHeight
,
heightsRows
,
i
)
plog
.
Debug
(
"jumpDld.getParaTxs"
,
"headerStart"
,
headerStart
,
"headerEnd"
,
headerEnd
,
"i"
,
i
)
plog
.
Info
(
"jumpDld.getParaTxs"
,
"headerStart"
,
headerStart
,
"headerEnd"
,
headerEnd
,
"i"
,
i
)
err
=
j
.
procParaTxHeaders
(
headerStart
,
headerEnd
,
paraBlocks
,
jobCh
)
err
=
j
.
procParaTxHeaders
(
headerStart
,
headerEnd
,
paraBlocks
,
jobCh
)
if
err
!=
nil
{
if
err
!=
nil
{
plog
.
Error
(
"jumpDld.procParaTxHeaders"
,
"err"
,
err
)
return
err
return
err
}
}
if
atomic
.
LoadInt32
(
&
j
.
downFail
)
!=
0
||
j
.
paraClient
.
isCancel
()
{
if
atomic
.
LoadInt32
(
&
j
.
downFail
)
!=
0
||
j
.
paraClient
.
isCancel
()
{
plog
.
Error
(
"jumpDld.downFail"
,
"downfail"
,
atomic
.
LoadInt32
(
&
j
.
downFail
))
return
errors
.
New
(
"verify fail or main thread cancel"
)
return
errors
.
New
(
"verify fail or main thread cancel"
)
}
}
}
}
...
...
plugin/dapp/autonomy/commands/proposal_board.go
View file @
a2907e13
...
@@ -69,6 +69,15 @@ func AutonomyCmd() *cobra.Command {
...
@@ -69,6 +69,15 @@ func AutonomyCmd() *cobra.Command {
ShowProposalChangeCmd
(),
ShowProposalChangeCmd
(),
)
)
// item
cmd
.
AddCommand
(
ProposalItemCmd
(),
RevokeProposalItemCmd
(),
VoteProposalItemCmd
(),
TerminateProposalItemCmd
(),
ShowProposalItemCmd
(),
)
return
cmd
return
cmd
}
}
...
...
plugin/dapp/autonomy/commands/proposal_item.go
0 → 100644
View file @
a2907e13
// 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.
package
commands
import
(
"encoding/json"
jsonrpc
"github.com/33cn/chain33/rpc/jsonclient"
rpctypes
"github.com/33cn/chain33/rpc/types"
"github.com/33cn/chain33/types"
auty
"github.com/33cn/plugin/plugin/dapp/autonomy/types"
"github.com/spf13/cobra"
)
// ProposalItemCmd 创建提案命令
func
ProposalItemCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"proposalItem"
,
Short
:
"create proposal Item"
,
Run
:
proposalItem
,
}
addProposalItemFlags
(
cmd
)
return
cmd
}
func
addProposalItemFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
Int32P
(
"year"
,
"y"
,
0
,
"year"
)
cmd
.
Flags
()
.
Int32P
(
"month"
,
"m"
,
0
,
"month"
)
cmd
.
Flags
()
.
Int32P
(
"day"
,
"d"
,
0
,
"day"
)
cmd
.
Flags
()
.
StringP
(
"itemTxHash"
,
"i"
,
""
,
"the tx to apply check"
)
cmd
.
MarkFlagRequired
(
"itemTxHash"
)
cmd
.
Flags
()
.
StringP
(
"exec"
,
"x"
,
""
,
"last stage proposal ID"
)
cmd
.
Flags
()
.
StringP
(
"description"
,
"p"
,
""
,
"description item"
)
cmd
.
Flags
()
.
Int64P
(
"startBlock"
,
"s"
,
0
,
"start block height"
)
cmd
.
MarkFlagRequired
(
"startBlock"
)
cmd
.
Flags
()
.
Int64P
(
"endBlock"
,
"e"
,
0
,
"end block height"
)
cmd
.
MarkFlagRequired
(
"endBlock"
)
}
func
proposalItem
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
paraName
,
_
:=
cmd
.
Flags
()
.
GetString
(
"paraName"
)
year
,
_
:=
cmd
.
Flags
()
.
GetInt32
(
"year"
)
month
,
_
:=
cmd
.
Flags
()
.
GetInt32
(
"month"
)
day
,
_
:=
cmd
.
Flags
()
.
GetInt32
(
"day"
)
txHash
,
_
:=
cmd
.
Flags
()
.
GetString
(
"itemTxHash"
)
exec
,
_
:=
cmd
.
Flags
()
.
GetString
(
"exec"
)
description
,
_
:=
cmd
.
Flags
()
.
GetString
(
"description"
)
startBlock
,
_
:=
cmd
.
Flags
()
.
GetInt64
(
"startBlock"
)
endBlock
,
_
:=
cmd
.
Flags
()
.
GetInt64
(
"endBlock"
)
params
:=
&
auty
.
ProposalItem
{
Year
:
year
,
Month
:
month
,
Day
:
day
,
ItemTxHash
:
txHash
,
Exec
:
exec
,
Description
:
description
,
StartBlockHeight
:
startBlock
,
EndBlockHeight
:
endBlock
,
}
payLoad
,
err
:=
json
.
Marshal
(
params
)
if
err
!=
nil
{
return
}
pm
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
types
.
GetExecName
(
auty
.
AutonomyX
,
paraName
),
ActionName
:
"PropItem"
,
Payload
:
payLoad
,
}
var
res
string
ctx
:=
jsonrpc
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.CreateTransaction"
,
pm
,
&
res
)
ctx
.
RunWithoutMarshal
()
}
// RevokeProposalItemCmd 撤销提案
func
RevokeProposalItemCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"revokeItem"
,
Short
:
"revoke proposal Item"
,
Run
:
revokeProposalItem
,
}
addRevokeProposalItemFlags
(
cmd
)
return
cmd
}
func
addRevokeProposalItemFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
StringP
(
"proposalID"
,
"p"
,
""
,
"proposal ID"
)
cmd
.
MarkFlagRequired
(
"proposalID"
)
}
func
revokeProposalItem
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
paraName
,
_
:=
cmd
.
Flags
()
.
GetString
(
"paraName"
)
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
ID
,
_
:=
cmd
.
Flags
()
.
GetString
(
"proposalID"
)
params
:=
&
auty
.
RevokeProposalItem
{
ProposalID
:
ID
,
}
payLoad
,
err
:=
json
.
Marshal
(
params
)
if
err
!=
nil
{
return
}
pm
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
types
.
GetExecName
(
auty
.
AutonomyX
,
paraName
),
ActionName
:
"RvkPropItem"
,
Payload
:
payLoad
,
}
var
res
string
ctx
:=
jsonrpc
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.CreateTransaction"
,
pm
,
&
res
)
ctx
.
RunWithoutMarshal
()
}
// VoteProposalItemCmd 投票提案
func
VoteProposalItemCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"voteItem"
,
Short
:
"vote proposal Item"
,
Run
:
voteProposalItem
,
}
addVoteProposalItemFlags
(
cmd
)
return
cmd
}
func
addVoteProposalItemFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
StringP
(
"proposalID"
,
"p"
,
""
,
"proposal ID"
)
cmd
.
MarkFlagRequired
(
"proposalID"
)
cmd
.
Flags
()
.
Int32P
(
"approve"
,
"r"
,
1
,
"1:approve, 2:oppose, 3:quit, default 1"
)
}
func
voteProposalItem
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
paraName
,
_
:=
cmd
.
Flags
()
.
GetString
(
"paraName"
)
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
ID
,
_
:=
cmd
.
Flags
()
.
GetString
(
"proposalID"
)
approve
,
_
:=
cmd
.
Flags
()
.
GetInt32
(
"approve"
)
params
:=
&
auty
.
VoteProposalItem
{
ProposalID
:
ID
,
Vote
:
auty
.
AutonomyVoteOption
(
approve
),
}
payLoad
,
err
:=
json
.
Marshal
(
params
)
if
err
!=
nil
{
return
}
pm
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
types
.
GetExecName
(
auty
.
AutonomyX
,
paraName
),
ActionName
:
"VotePropItem"
,
Payload
:
payLoad
,
}
var
res
string
ctx
:=
jsonrpc
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.CreateTransaction"
,
pm
,
&
res
)
ctx
.
RunWithoutMarshal
()
}
// TerminateProposalItemCmd 终止提案
func
TerminateProposalItemCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"terminateItem"
,
Short
:
"terminate proposal Item"
,
Run
:
terminateProposalItem
,
}
addTerminateProposalItemFlags
(
cmd
)
return
cmd
}
func
addTerminateProposalItemFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
StringP
(
"proposalID"
,
"p"
,
""
,
"proposal ID"
)
cmd
.
MarkFlagRequired
(
"proposalID"
)
}
func
terminateProposalItem
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
paraName
,
_
:=
cmd
.
Flags
()
.
GetString
(
"paraName"
)
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
ID
,
_
:=
cmd
.
Flags
()
.
GetString
(
"proposalID"
)
params
:=
&
auty
.
RevokeProposalItem
{
ProposalID
:
ID
,
}
payLoad
,
err
:=
json
.
Marshal
(
params
)
if
err
!=
nil
{
return
}
pm
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
types
.
GetExecName
(
auty
.
AutonomyX
,
paraName
),
ActionName
:
"TmintPropItem"
,
Payload
:
payLoad
,
}
var
res
string
ctx
:=
jsonrpc
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.CreateTransaction"
,
pm
,
&
res
)
ctx
.
RunWithoutMarshal
()
}
// ShowProposalItemCmd 显示提案查询信息
func
ShowProposalItemCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"showItem"
,
Short
:
"show proposal Item info"
,
Run
:
showProposalItem
,
}
addShowProposalItemflags
(
cmd
)
return
cmd
}
func
addShowProposalItemflags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
Uint32P
(
"type"
,
"y"
,
0
,
"type(0:query by hash; 1:list)"
)
cmd
.
MarkFlagRequired
(
"type"
)
cmd
.
Flags
()
.
StringP
(
"proposalID"
,
"p"
,
""
,
"proposal ID"
)
cmd
.
Flags
()
.
Uint32P
(
"status"
,
"s"
,
0
,
"status"
)
cmd
.
Flags
()
.
StringP
(
"addr"
,
"a"
,
""
,
"address"
)
cmd
.
Flags
()
.
Int32P
(
"count"
,
"c"
,
1
,
"count, default is 1"
)
cmd
.
Flags
()
.
Int32P
(
"direction"
,
"d"
,
0
,
"direction, default is reserve"
)
cmd
.
Flags
()
.
Int64P
(
"height"
,
"t"
,
-
1
,
"height, default is -1"
)
cmd
.
Flags
()
.
Int32P
(
"index"
,
"i"
,
-
1
,
"index, default is -1"
)
}
func
showProposalItem
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
typ
,
_
:=
cmd
.
Flags
()
.
GetUint32
(
"type"
)
propID
,
_
:=
cmd
.
Flags
()
.
GetString
(
"proposalID"
)
status
,
_
:=
cmd
.
Flags
()
.
GetUint32
(
"status"
)
addr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"addr"
)
count
,
_
:=
cmd
.
Flags
()
.
GetInt32
(
"count"
)
direction
,
_
:=
cmd
.
Flags
()
.
GetInt32
(
"direction"
)
height
,
_
:=
cmd
.
Flags
()
.
GetInt64
(
"height"
)
index
,
_
:=
cmd
.
Flags
()
.
GetInt32
(
"index"
)
var
params
rpctypes
.
Query4Jrpc
var
rep
interface
{}
params
.
Execer
=
auty
.
AutonomyX
if
0
==
typ
{
req
:=
types
.
ReqString
{
Data
:
propID
,
}
params
.
FuncName
=
auty
.
GetProposalItem
params
.
Payload
=
types
.
MustPBToJSON
(
&
req
)
rep
=
&
auty
.
ReplyQueryProposalItem
{}
}
else
if
1
==
typ
{
req
:=
auty
.
ReqQueryProposalItem
{
Status
:
int32
(
status
),
Addr
:
addr
,
Count
:
count
,
Direction
:
direction
,
Height
:
height
,
Index
:
index
,
}
params
.
FuncName
=
auty
.
ListProposalItem
params
.
Payload
=
types
.
MustPBToJSON
(
&
req
)
rep
=
&
auty
.
ReplyQueryProposalItem
{}
}
ctx
:=
jsonrpc
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.Query"
,
params
,
rep
)
ctx
.
Run
()
}
plugin/dapp/autonomy/executor/exec.go
View file @
a2907e13
...
@@ -7,6 +7,7 @@ package executor
...
@@ -7,6 +7,7 @@ package executor
import
(
import
(
"github.com/33cn/chain33/types"
"github.com/33cn/chain33/types"
auty
"github.com/33cn/plugin/plugin/dapp/autonomy/types"
auty
"github.com/33cn/plugin/plugin/dapp/autonomy/types"
"github.com/pkg/errors"
)
)
// 提案董事会相关
// 提案董事会相关
...
@@ -130,3 +131,39 @@ func (a *Autonomy) Exec_TmintPropChange(payload *auty.TerminateProposalChange, t
...
@@ -130,3 +131,39 @@ func (a *Autonomy) Exec_TmintPropChange(payload *auty.TerminateProposalChange, t
action
:=
newAction
(
a
,
tx
,
int32
(
index
))
action
:=
newAction
(
a
,
tx
,
int32
(
index
))
return
action
.
tmintPropChange
(
payload
)
return
action
.
tmintPropChange
(
payload
)
}
}
// Exec_PropChange 创建事项规则
func
(
a
*
Autonomy
)
Exec_PropItem
(
payload
*
auty
.
ProposalItem
,
tx
*
types
.
Transaction
,
index
int
)
(
*
types
.
Receipt
,
error
)
{
if
!
a
.
GetAPI
()
.
GetConfig
()
.
IsDappFork
(
a
.
GetHeight
(),
auty
.
AutonomyX
,
auty
.
ForkAutonomyEnableItem
)
{
return
nil
,
errors
.
Wrapf
(
types
.
ErrActionNotSupport
,
"not after fork"
)
}
action
:=
newAction
(
a
,
tx
,
int32
(
index
))
return
action
.
propItem
(
payload
)
}
// Exec_RvkPropItem 撤销事项规则
func
(
a
*
Autonomy
)
Exec_RvkPropItem
(
payload
*
auty
.
RevokeProposalItem
,
tx
*
types
.
Transaction
,
index
int
)
(
*
types
.
Receipt
,
error
)
{
if
!
a
.
GetAPI
()
.
GetConfig
()
.
IsDappFork
(
a
.
GetHeight
(),
auty
.
AutonomyX
,
auty
.
ForkAutonomyEnableItem
)
{
return
nil
,
errors
.
Wrapf
(
types
.
ErrActionNotSupport
,
"not after fork"
)
}
action
:=
newAction
(
a
,
tx
,
int32
(
index
))
return
action
.
rvkPropItem
(
payload
)
}
// Exec_VotePropItem 投票事项规则
func
(
a
*
Autonomy
)
Exec_VotePropItem
(
payload
*
auty
.
VoteProposalItem
,
tx
*
types
.
Transaction
,
index
int
)
(
*
types
.
Receipt
,
error
)
{
if
!
a
.
GetAPI
()
.
GetConfig
()
.
IsDappFork
(
a
.
GetHeight
(),
auty
.
AutonomyX
,
auty
.
ForkAutonomyEnableItem
)
{
return
nil
,
errors
.
Wrapf
(
types
.
ErrActionNotSupport
,
"not after fork"
)
}
action
:=
newAction
(
a
,
tx
,
int32
(
index
))
return
action
.
votePropItem
(
payload
)
}
// Exec_TmintPropItem 终止事项规则
func
(
a
*
Autonomy
)
Exec_TmintPropItem
(
payload
*
auty
.
TerminateProposalItem
,
tx
*
types
.
Transaction
,
index
int
)
(
*
types
.
Receipt
,
error
)
{
if
!
a
.
GetAPI
()
.
GetConfig
()
.
IsDappFork
(
a
.
GetHeight
(),
auty
.
AutonomyX
,
auty
.
ForkAutonomyEnableItem
)
{
return
nil
,
errors
.
Wrapf
(
types
.
ErrActionNotSupport
,
"not after fork"
)
}
action
:=
newAction
(
a
,
tx
,
int32
(
index
))
return
action
.
tmintPropItem
(
payload
)
}
plugin/dapp/autonomy/executor/exec_local.go
View file @
a2907e13
...
@@ -106,3 +106,23 @@ func (a *Autonomy) ExecLocal_VotePropChange(payload *auty.VoteProposalChange, tx
...
@@ -106,3 +106,23 @@ func (a *Autonomy) ExecLocal_VotePropChange(payload *auty.VoteProposalChange, tx
func
(
a
*
Autonomy
)
ExecLocal_TmintPropChange
(
payload
*
auty
.
TerminateProposalChange
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
func
(
a
*
Autonomy
)
ExecLocal_TmintPropChange
(
payload
*
auty
.
TerminateProposalChange
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
a
.
execAutoLocalChange
(
tx
,
receiptData
)
return
a
.
execAutoLocalChange
(
tx
,
receiptData
)
}
}
// ExecLocal_PropItem 创建事项规则
func
(
a
*
Autonomy
)
ExecLocal_PropItem
(
payload
*
auty
.
ProposalItem
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
a
.
execAutoLocalItem
(
tx
,
receiptData
)
}
// ExecLocal_RvkPropItem 撤销事项规则
func
(
a
*
Autonomy
)
ExecLocal_RvkPropItem
(
payload
*
auty
.
RevokeProposalItem
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
a
.
execAutoLocalItem
(
tx
,
receiptData
)
}
// ExecLocal_VotePropItem 投票事项规则
func
(
a
*
Autonomy
)
ExecLocal_VotePropItem
(
payload
*
auty
.
VoteProposalItem
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
a
.
execAutoLocalItem
(
tx
,
receiptData
)
}
// ExecLocal_TmintPropItem 终止事项规则
func
(
a
*
Autonomy
)
ExecLocal_TmintPropItem
(
payload
*
auty
.
TerminateProposalItem
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
a
.
execAutoLocalItem
(
tx
,
receiptData
)
}
plugin/dapp/autonomy/executor/item.go
0 → 100644
View file @
a2907e13
// 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.
package
executor
import
(
dbm
"github.com/33cn/chain33/common/db"
"github.com/33cn/chain33/system/dapp"
"github.com/33cn/chain33/types"
auty
"github.com/33cn/plugin/plugin/dapp/autonomy/types"
"github.com/pkg/errors"
)
func
(
a
*
Autonomy
)
execAutoLocalItem
(
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
)
(
*
types
.
LocalDBSet
,
error
)
{
set
,
err
:=
a
.
execLocalItem
(
receiptData
)
if
err
!=
nil
{
return
set
,
err
}
dbSet
:=
&
types
.
LocalDBSet
{}
dbSet
.
KV
=
a
.
AddRollbackKV
(
tx
,
tx
.
Execer
,
set
.
KV
)
return
dbSet
,
nil
}
func
(
a
*
Autonomy
)
execLocalItem
(
receiptData
*
types
.
ReceiptData
)
(
*
types
.
LocalDBSet
,
error
)
{
table
:=
NewItemTable
(
a
.
GetLocalDB
())
for
_
,
log
:=
range
receiptData
.
Logs
{
switch
log
.
Ty
{
case
auty
.
TyLogPropItem
,
auty
.
TyLogRvkPropItem
,
auty
.
TyLogVotePropItem
,
auty
.
TyLogTmintPropItem
:
{
var
receipt
auty
.
ReceiptProposalItem
err
:=
types
.
Decode
(
log
.
Log
,
&
receipt
)
if
err
!=
nil
{
return
nil
,
err
}
err
=
table
.
Replace
(
receipt
.
Current
)
if
err
!=
nil
{
return
nil
,
err
}
}
default
:
break
}
}
kvs
,
err
:=
table
.
Save
()
if
err
!=
nil
{
return
nil
,
err
}
dbSet
:=
&
types
.
LocalDBSet
{}
dbSet
.
KV
=
append
(
dbSet
.
KV
,
kvs
...
)
return
dbSet
,
nil
}
func
(
a
*
Autonomy
)
listProposalItem
(
req
*
auty
.
ReqQueryProposalItem
)
(
types
.
Message
,
error
)
{
if
req
==
nil
{
return
nil
,
types
.
ErrInvalidParam
}
localDb
:=
a
.
GetLocalDB
()
query
:=
NewItemTable
(
localDb
)
.
GetQuery
(
localDb
)
var
primary
[]
byte
if
req
.
Height
>
0
{
primary
=
[]
byte
(
dapp
.
HeightIndexStr
(
req
.
Height
,
int64
(
req
.
Index
)))
}
indexName
:=
""
if
req
.
Status
>
0
&&
req
.
Addr
!=
""
{
indexName
=
"addr_status"
}
else
if
req
.
Status
>
0
{
indexName
=
"status"
}
else
if
req
.
Addr
!=
""
{
indexName
=
"addr"
}
cur
:=
&
ItemRow
{
AutonomyProposalItem
:
&
auty
.
AutonomyProposalItem
{},
}
cur
.
Address
=
req
.
Addr
cur
.
Status
=
req
.
Status
cur
.
Height
=
req
.
Height
cur
.
Index
=
req
.
Index
prefix
,
err
:=
cur
.
Get
(
indexName
)
if
err
!=
nil
{
alog
.
Error
(
"Get"
,
"indexName"
,
indexName
,
"err"
,
err
)
return
nil
,
err
}
rows
,
err
:=
query
.
ListIndex
(
indexName
,
prefix
,
primary
,
req
.
Count
,
req
.
Direction
)
if
err
!=
nil
{
alog
.
Error
(
"query List failed"
,
"indexName"
,
indexName
,
"prefix"
,
"prefix"
,
"key"
,
string
(
primary
),
"err"
,
err
)
return
nil
,
err
}
if
len
(
rows
)
==
0
{
return
nil
,
types
.
ErrNotFound
}
var
rep
auty
.
ReplyQueryProposalItem
for
_
,
row
:=
range
rows
{
r
,
ok
:=
row
.
Data
.
(
*
auty
.
AutonomyProposalItem
)
if
!
ok
{
alog
.
Error
(
"listProposalItem"
,
"err"
,
"bad row type"
)
return
nil
,
types
.
ErrDecode
}
rep
.
PropItems
=
append
(
rep
.
PropItems
,
r
)
}
return
&
rep
,
nil
}
func
getProposalItem
(
db
dbm
.
KV
,
req
*
types
.
ReqString
)
(
*
auty
.
ReplyQueryProposalItem
,
error
)
{
if
req
==
nil
||
len
(
req
.
Data
)
<=
0
{
return
nil
,
errors
.
Wrapf
(
types
.
ErrInvalidParam
,
"invalid parameter"
)
}
value
,
err
:=
db
.
Get
(
propItemID
(
req
.
Data
))
if
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"fail,db.get item id=%s"
,
req
.
Data
)
}
prop
:=
&
auty
.
AutonomyProposalItem
{}
err
=
types
.
Decode
(
value
,
prop
)
if
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"decode item fail"
)
}
rep
:=
&
auty
.
ReplyQueryProposalItem
{}
rep
.
PropItems
=
append
(
rep
.
PropItems
,
prop
)
return
rep
,
nil
}
// IsAutonomyApprovedItem get 2 parameters: autonomyItemID, applyTxHash
func
IsAutonomyApprovedItem
(
db
dbm
.
KV
,
req
*
types
.
ReqMultiStrings
)
(
types
.
Message
,
error
)
{
if
req
==
nil
{
return
nil
,
errors
.
Wrapf
(
types
.
ErrInvalidParam
,
"req is nil"
)
}
if
len
(
req
.
Datas
)
<
2
{
return
nil
,
errors
.
Wrapf
(
types
.
ErrInvalidParam
,
"req datas less 2 parameters"
)
}
autonomyItemID
:=
req
.
Datas
[
0
]
applyTxHash
:=
req
.
Datas
[
1
]
res
,
err
:=
getProposalItem
(
db
,
&
types
.
ReqString
{
Data
:
autonomyItemID
})
if
err
!=
nil
{
return
nil
,
err
}
if
len
(
res
.
GetPropItems
())
<=
0
{
return
nil
,
errors
.
Wrapf
(
types
.
ErrNotFound
,
"not get item"
)
}
if
res
.
PropItems
[
0
]
.
ProposalID
!=
autonomyItemID
{
return
nil
,
errors
.
Wrapf
(
types
.
ErrInvalidParam
,
"get prop id=%s not equal req=%s"
,
res
.
PropItems
[
0
]
.
ProposalID
,
autonomyItemID
)
}
if
res
.
PropItems
[
0
]
.
PropItem
.
ItemTxHash
!=
applyTxHash
{
return
nil
,
errors
.
Wrapf
(
types
.
ErrInvalidParam
,
"get item id=%s != req=%s"
,
res
.
PropItems
[
0
]
.
PropItem
.
ItemTxHash
,
applyTxHash
)
}
if
res
.
PropItems
[
0
]
.
Status
==
auty
.
AutonomyStatusTmintPropItem
&&
res
.
PropItems
[
0
]
.
BoardVoteRes
.
Pass
{
return
&
types
.
Reply
{
IsOk
:
true
},
nil
}
if
res
.
PropItems
[
0
]
.
Status
!=
auty
.
AutonomyStatusTmintPropItem
{
return
nil
,
errors
.
Wrapf
(
types
.
ErrNotAllow
,
"item status =%d not terminate"
,
res
.
PropItems
[
0
]
.
Status
)
}
return
nil
,
errors
.
Wrapf
(
types
.
ErrNotAllow
,
"item vote status not pass = %v"
,
res
.
PropItems
[
0
]
.
BoardVoteRes
.
Pass
)
}
plugin/dapp/autonomy/executor/itemaction.go
0 → 100644
View file @
a2907e13
// 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.
package
executor
import
(
"github.com/33cn/chain33/common"
"github.com/33cn/chain33/types"
auty
"github.com/33cn/plugin/plugin/dapp/autonomy/types"
"github.com/pkg/errors"
)
const
(
itemWaitBlockNumber
=
40
*
1000
//4w高度,大概2天
)
func
(
a
*
action
)
propItem
(
prob
*
auty
.
ProposalItem
)
(
*
types
.
Receipt
,
error
)
{
//start和end之间不能小于720高度,end不能超过当前高度+100w
if
prob
.
StartBlockHeight
<
a
.
height
||
prob
.
StartBlockHeight
>=
prob
.
EndBlockHeight
||
prob
.
StartBlockHeight
+
startEndBlockPeriod
>
prob
.
EndBlockHeight
||
prob
.
EndBlockHeight
>
a
.
height
+
propEndBlockPeriod
||
prob
.
RealEndBlockHeight
!=
0
{
return
nil
,
errors
.
Wrapf
(
auty
.
ErrSetBlockHeight
,
"propItem exe height=%d,start=%d,end=%d,realEnd=%d"
,
a
.
height
,
prob
.
StartBlockHeight
,
prob
.
EndBlockHeight
,
prob
.
RealEndBlockHeight
)
}
if
len
(
prob
.
ItemTxHash
)
<=
0
{
return
nil
,
errors
.
Wrap
(
types
.
ErrInvalidParam
,
"propItem tx hash nil"
)
}
// 获取董事会成员
pboard
,
err
:=
a
.
getActiveBoard
()
if
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"propItem.getActiveBoard"
)
}
// 获取当前生效提案规则
rule
,
err
:=
a
.
getActiveRule
()
if
err
!=
nil
{
alog
.
Error
(
"propItem "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"getActiveRule failed"
,
err
)
return
nil
,
err
}
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
// 冻结提案金
receipt
,
err
:=
a
.
coinsAccount
.
ExecFrozen
(
a
.
fromaddr
,
a
.
execaddr
,
rule
.
ProposalAmount
)
if
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"propItem.accountFrozen,proposalAmount=%d,addr=%s"
,
rule
.
ProposalAmount
,
a
.
fromaddr
)
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
cur
:=
&
auty
.
AutonomyProposalItem
{
PropItem
:
prob
,
CurRule
:
rule
,
Boards
:
pboard
.
Boards
,
BoardVoteRes
:
&
auty
.
VoteResult
{
TotalVotes
:
int32
(
len
(
pboard
.
Boards
))},
Status
:
auty
.
AutonomyStatusProposalItem
,
Address
:
a
.
fromaddr
,
Height
:
a
.
height
,
Index
:
a
.
index
,
ProposalID
:
common
.
ToHex
(
a
.
txhash
),
}
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
propItemID
(
common
.
ToHex
(
a
.
txhash
)),
Value
:
types
.
Encode
(
cur
)})
receiptLog
:=
getItemReceiptLog
(
nil
,
cur
,
auty
.
TyLogPropItem
)
logs
=
append
(
logs
,
receiptLog
)
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
}
func
(
a
*
action
)
rvkPropItem
(
rvkProb
*
auty
.
RevokeProposalItem
)
(
*
types
.
Receipt
,
error
)
{
cur
,
err
:=
a
.
getProposalItem
(
rvkProb
.
ProposalID
)
if
err
!=
nil
{
alog
.
Error
(
"rvkPropItem "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"getProposalItem failed"
,
rvkProb
.
ProposalID
,
"err"
,
err
)
return
nil
,
errors
.
Wrapf
(
err
,
"rvkPropItem.getItem,id=%s"
,
rvkProb
.
ProposalID
)
}
pre
:=
copyAutonomyProposalItem
(
cur
)
// 检查当前状态
if
cur
.
Status
!=
auty
.
AutonomyStatusProposalItem
{
err
:=
auty
.
ErrProposalStatus
alog
.
Error
(
"rvkPropItem "
,
"addr"
,
a
.
fromaddr
,
"status"
,
cur
.
Status
,
"status is not match"
,
rvkProb
.
ProposalID
,
"err"
,
err
)
return
nil
,
errors
.
Wrapf
(
err
,
"rvkPropItem wrong status =%d"
,
cur
.
Status
)
}
start
:=
cur
.
GetPropItem
()
.
StartBlockHeight
if
a
.
height
>=
start
{
err
:=
auty
.
ErrRevokeProposalPeriod
alog
.
Error
(
"rvkPropItem "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ProposalID"
,
rvkProb
.
ProposalID
,
"err"
,
err
)
return
nil
,
errors
.
Wrapf
(
err
,
"rvkPropItem item started, startheight=%d,cur=%d"
,
start
,
a
.
height
)
}
if
a
.
fromaddr
!=
cur
.
Address
{
err
:=
auty
.
ErrRevokeProposalPower
alog
.
Error
(
"rvkPropItem "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ProposalID"
,
rvkProb
.
ProposalID
,
"err"
,
err
)
return
nil
,
errors
.
Wrapf
(
err
,
"rvkPropItem wrong from addr, from=%s,,cur=%s"
,
a
.
fromaddr
,
cur
.
Address
)
}
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
// 解冻提案金
receipt
,
err
:=
a
.
coinsAccount
.
ExecActive
(
a
.
fromaddr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
if
err
!=
nil
{
alog
.
Error
(
"rvkPropItem "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecActive amount"
,
cur
.
CurRule
.
ProposalAmount
,
"err"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
cur
.
Status
=
auty
.
AutonomyStatusRvkPropItem
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
propItemID
(
rvkProb
.
ProposalID
),
Value
:
types
.
Encode
(
cur
)})
receiptLog
:=
getItemReceiptLog
(
pre
,
cur
,
auty
.
TyLogRvkPropItem
)
logs
=
append
(
logs
,
receiptLog
)
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
}
func
(
a
*
action
)
votePropItem
(
voteProb
*
auty
.
VoteProposalItem
)
(
*
types
.
Receipt
,
error
)
{
cur
,
err
:=
a
.
getProposalItem
(
voteProb
.
ProposalID
)
if
err
!=
nil
{
alog
.
Error
(
"votePropItem "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"getProposalItem failed"
,
voteProb
.
ProposalID
,
"err"
,
err
)
return
nil
,
errors
.
Wrapf
(
err
,
"votePropItem.getItem id=%s"
,
voteProb
.
ProposalID
)
}
pre
:=
copyAutonomyProposalItem
(
cur
)
// 检查当前状态
if
cur
.
Status
==
auty
.
AutonomyStatusRvkPropItem
||
cur
.
Status
==
auty
.
AutonomyStatusTmintPropItem
{
err
:=
auty
.
ErrProposalStatus
alog
.
Error
(
"votePropItem "
,
"addr"
,
a
.
fromaddr
,
"status"
,
cur
.
Status
,
"ProposalID"
,
voteProb
.
ProposalID
,
"err"
,
err
)
return
nil
,
errors
.
Wrapf
(
err
,
"votePropItem cur status=%d"
,
cur
.
Status
)
}
start
:=
cur
.
GetPropItem
()
.
StartBlockHeight
end
:=
cur
.
GetPropItem
()
.
EndBlockHeight
realHeight
:=
cur
.
GetPropItem
()
.
RealEndBlockHeight
if
a
.
height
<
start
||
a
.
height
>
end
||
realHeight
!=
0
{
err
:=
auty
.
ErrVotePeriod
alog
.
Error
(
"votePropItem "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ProposalID"
,
voteProb
.
ProposalID
,
"err"
,
err
)
return
nil
,
errors
.
Wrapf
(
err
,
"votePropItem current height=%d,start=%d,end=%d,real=%d"
,
a
.
height
,
start
,
end
,
realHeight
)
}
// 董事会成员验证
var
isBoard
bool
for
_
,
addr
:=
range
cur
.
Boards
{
if
addr
==
a
.
fromaddr
{
isBoard
=
true
break
}
}
if
!
isBoard
{
err
=
auty
.
ErrNoActiveBoard
alog
.
Error
(
"votePropItem "
,
"addr"
,
a
.
fromaddr
,
"this addr is not active board member"
,
voteProb
.
ProposalID
,
"err"
,
err
)
return
nil
,
errors
.
Wrapf
(
err
,
"fromAddr notActiveBoardMember proposalid=%s"
,
voteProb
.
ProposalID
)
}
// 检查是否已经参与投票
votes
,
err
:=
a
.
checkVotesRecord
([]
string
{
a
.
fromaddr
},
boardVotesRecord
(
voteProb
.
ProposalID
))
if
err
!=
nil
{
alog
.
Error
(
"votePropItem "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"checkVotesRecord boardVotesRecord failed"
,
voteProb
.
ProposalID
,
"err"
,
err
)
return
nil
,
errors
.
Wrapf
(
err
,
"check votes record from addr=%s"
,
a
.
fromaddr
)
}
// 更新已经投票地址
votes
.
Address
=
append
(
votes
.
Address
,
a
.
fromaddr
)
// 更新投票结果
switch
voteProb
.
Vote
{
case
auty
.
AutonomyVoteOption_APPROVE
:
cur
.
BoardVoteRes
.
ApproveVotes
++
case
auty
.
AutonomyVoteOption_OPPOSE
:
cur
.
BoardVoteRes
.
OpposeVotes
++
case
auty
.
AutonomyVoteOption_QUIT
:
cur
.
BoardVoteRes
.
QuitVotes
++
default
:
return
nil
,
errors
.
Wrapf
(
types
.
ErrInvalidParam
,
"vote option=%d"
,
voteProb
.
Vote
)
}
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
// 首次进入投票期,即将提案金转入自治系统地址
if
cur
.
Status
==
auty
.
AutonomyStatusProposalItem
{
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
a
.
execaddr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
if
err
!=
nil
{
alog
.
Error
(
"votePropItem "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
}
if
cur
.
BoardVoteRes
.
TotalVotes
!=
0
&&
cur
.
BoardVoteRes
.
TotalVotes
>
cur
.
BoardVoteRes
.
QuitVotes
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
)
/
float32
(
cur
.
BoardVoteRes
.
TotalVotes
-
cur
.
BoardVoteRes
.
QuitVotes
)
>=
float32
(
cur
.
CurRule
.
BoardApproveRatio
)
/
100.0
{
cur
.
BoardVoteRes
.
Pass
=
true
cur
.
PropItem
.
RealEndBlockHeight
=
a
.
height
}
key
:=
propItemID
(
voteProb
.
ProposalID
)
cur
.
Status
=
auty
.
AutonomyStatusVotePropItem
if
cur
.
BoardVoteRes
.
Pass
{
cur
.
Status
=
auty
.
AutonomyStatusTmintPropItem
}
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
key
,
Value
:
types
.
Encode
(
cur
)})
// 更新VotesRecord
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
boardVotesRecord
(
voteProb
.
ProposalID
),
Value
:
types
.
Encode
(
votes
)})
ty
:=
auty
.
TyLogVotePropItem
if
cur
.
BoardVoteRes
.
Pass
{
ty
=
auty
.
TyLogTmintPropItem
}
receiptLog
:=
getItemReceiptLog
(
pre
,
cur
,
int32
(
ty
))
logs
=
append
(
logs
,
receiptLog
)
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
}
func
(
a
*
action
)
tmintPropItem
(
tmintProb
*
auty
.
TerminateProposalItem
)
(
*
types
.
Receipt
,
error
)
{
cur
,
err
:=
a
.
getProposalItem
(
tmintProb
.
ProposalID
)
if
err
!=
nil
{
alog
.
Error
(
"tmintPropItem "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"getProposalItem failed"
,
tmintProb
.
ProposalID
,
"err"
,
err
)
return
nil
,
errors
.
Wrapf
(
err
,
"get item id=%s"
,
tmintProb
.
ProposalID
)
}
pre
:=
copyAutonomyProposalItem
(
cur
)
// 检查当前状态
if
cur
.
Status
==
auty
.
AutonomyStatusTmintPropItem
||
cur
.
Status
==
auty
.
AutonomyStatusRvkPropItem
{
err
:=
auty
.
ErrProposalStatus
alog
.
Error
(
"tmintPropItem "
,
"addr"
,
a
.
fromaddr
,
"status"
,
cur
.
Status
,
"status is not match"
,
tmintProb
.
ProposalID
,
"err"
,
err
)
return
nil
,
errors
.
Wrapf
(
err
,
"cur status=%d"
,
cur
.
Status
)
}
// 董事会投票期间不能终止
end
:=
cur
.
GetPropItem
()
.
EndBlockHeight
if
!
cur
.
BoardVoteRes
.
Pass
&&
a
.
height
<=
end
{
err
:=
auty
.
ErrTerminatePeriod
alog
.
Error
(
"tmintPropItem "
,
"addr"
,
a
.
fromaddr
,
"status"
,
cur
.
Status
,
"height"
,
a
.
height
,
"in board vote period can not terminate"
,
tmintProb
.
ProposalID
,
"err"
,
err
)
return
nil
,
errors
.
Wrapf
(
err
,
"vote period not should be terminated"
)
}
if
cur
.
BoardVoteRes
.
TotalVotes
!=
0
&&
cur
.
BoardVoteRes
.
TotalVotes
>
cur
.
BoardVoteRes
.
QuitVotes
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
)
/
float32
(
cur
.
BoardVoteRes
.
TotalVotes
-
cur
.
BoardVoteRes
.
QuitVotes
)
>=
float32
(
cur
.
CurRule
.
BoardApproveRatio
)
/
100.0
{
cur
.
BoardVoteRes
.
Pass
=
true
}
else
{
cur
.
BoardVoteRes
.
Pass
=
false
}
cur
.
PropItem
.
RealEndBlockHeight
=
a
.
height
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
// 如果为提案状态,则判断是否需要扣除提案费
if
cur
.
Status
==
auty
.
AutonomyStatusProposalItem
&&
a
.
height
>
end
{
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
a
.
execaddr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
if
err
!=
nil
{
alog
.
Error
(
"tmintPropItem "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
}
cur
.
Status
=
auty
.
AutonomyStatusTmintPropItem
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
propItemID
(
tmintProb
.
ProposalID
),
Value
:
types
.
Encode
(
cur
)})
receiptLog
:=
getItemReceiptLog
(
pre
,
cur
,
auty
.
TyLogTmintPropItem
)
logs
=
append
(
logs
,
receiptLog
)
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
}
func
(
a
*
action
)
getProposalItem
(
ID
string
)
(
*
auty
.
AutonomyProposalItem
,
error
)
{
value
,
err
:=
a
.
db
.
Get
(
propItemID
(
ID
))
if
err
!=
nil
{
return
nil
,
err
}
cur
:=
&
auty
.
AutonomyProposalItem
{}
err
=
types
.
Decode
(
value
,
cur
)
if
err
!=
nil
{
return
nil
,
err
}
return
cur
,
nil
}
// getItemReceiptLog 根据提案信息获取log
// 状态变化:
func
getItemReceiptLog
(
pre
,
cur
*
auty
.
AutonomyProposalItem
,
ty
int32
)
*
types
.
ReceiptLog
{
log
:=
&
types
.
ReceiptLog
{}
log
.
Ty
=
ty
r
:=
&
auty
.
ReceiptProposalItem
{
Prev
:
pre
,
Current
:
cur
}
log
.
Log
=
types
.
Encode
(
r
)
return
log
}
func
copyAutonomyProposalItem
(
cur
*
auty
.
AutonomyProposalItem
)
*
auty
.
AutonomyProposalItem
{
if
cur
==
nil
{
return
nil
}
newAut
:=
*
cur
if
cur
.
PropItem
!=
nil
{
newItem
:=
*
cur
.
GetPropItem
()
newAut
.
PropItem
=
&
newItem
}
if
cur
.
CurRule
!=
nil
{
newRule
:=
*
cur
.
GetCurRule
()
newAut
.
CurRule
=
&
newRule
}
if
len
(
cur
.
Boards
)
>
0
{
newAut
.
Boards
=
make
([]
string
,
len
(
cur
.
Boards
))
copy
(
newAut
.
Boards
,
cur
.
Boards
)
}
if
cur
.
BoardVoteRes
!=
nil
{
newRes
:=
*
cur
.
GetBoardVoteRes
()
newAut
.
BoardVoteRes
=
&
newRes
}
return
&
newAut
}
plugin/dapp/autonomy/executor/itemtable.go
0 → 100644
View file @
a2907e13
package
executor
import
(
"fmt"
"github.com/33cn/chain33/common/db"
"github.com/33cn/chain33/common/db/table"
"github.com/33cn/chain33/system/dapp"
"github.com/33cn/chain33/types"
auty
"github.com/33cn/plugin/plugin/dapp/autonomy/types"
)
/*
table struct
data: autonomy item
index: status, addr
*/
var
itemOpt
=
&
table
.
Option
{
Prefix
:
"LODB-autonomy"
,
Name
:
"item"
,
Primary
:
"heightindex"
,
Index
:
[]
string
{
"addr"
,
"status"
,
"addr_status"
},
}
//NewItemTable 新建表
func
NewItemTable
(
kvdb
db
.
KV
)
*
table
.
Table
{
rowmeta
:=
NewItemRow
()
newTable
,
err
:=
table
.
NewTable
(
rowmeta
,
kvdb
,
itemOpt
)
if
err
!=
nil
{
panic
(
err
)
}
return
newTable
}
//ItemRow table meta 结构
type
ItemRow
struct
{
*
auty
.
AutonomyProposalItem
}
//NewItemRow 新建一个meta 结构
func
NewItemRow
()
*
ItemRow
{
return
&
ItemRow
{
AutonomyProposalItem
:
&
auty
.
AutonomyProposalItem
{}}
}
//CreateRow 新建数据行(注意index 数据一定也要保存到数据中,不能就保存heightindex)
func
(
r
*
ItemRow
)
CreateRow
()
*
table
.
Row
{
return
&
table
.
Row
{
Data
:
&
auty
.
AutonomyProposalItem
{}}
}
//SetPayload 设置数据
func
(
r
*
ItemRow
)
SetPayload
(
data
types
.
Message
)
error
{
if
d
,
ok
:=
data
.
(
*
auty
.
AutonomyProposalItem
);
ok
{
r
.
AutonomyProposalItem
=
d
return
nil
}
return
types
.
ErrTypeAsset
}
//Get 按照indexName 查询 indexValue
func
(
r
*
ItemRow
)
Get
(
key
string
)
([]
byte
,
error
)
{
if
key
==
"heightindex"
{
return
[]
byte
(
dapp
.
HeightIndexStr
(
r
.
Height
,
int64
(
r
.
Index
))),
nil
}
else
if
key
==
"status"
{
return
[]
byte
(
fmt
.
Sprintf
(
"%2d"
,
r
.
Status
)),
nil
}
else
if
key
==
"addr"
{
return
[]
byte
(
r
.
Address
),
nil
}
else
if
key
==
"addr_status"
{
return
[]
byte
(
fmt
.
Sprintf
(
"%s:%2d"
,
r
.
Address
,
r
.
Status
)),
nil
}
return
nil
,
types
.
ErrNotFound
}
plugin/dapp/autonomy/executor/kv.go
View file @
a2907e13
...
@@ -79,3 +79,12 @@ var (
...
@@ -79,3 +79,12 @@ var (
func
propChangeID
(
txHash
string
)
[]
byte
{
func
propChangeID
(
txHash
string
)
[]
byte
{
return
[]
byte
(
fmt
.
Sprintf
(
"%s%s"
,
changePrefix
,
txHash
))
return
[]
byte
(
fmt
.
Sprintf
(
"%s%s"
,
changePrefix
,
txHash
))
}
}
var
(
//item
itemPrefix
=
idPrefix
+
"item-"
)
func
propItemID
(
txHash
string
)
[]
byte
{
return
[]
byte
(
fmt
.
Sprintf
(
"%s%s"
,
itemPrefix
,
txHash
))
}
plugin/dapp/autonomy/executor/projectaction.go
View file @
a2907e13
...
@@ -261,7 +261,7 @@ func (a *action) votePropProject(voteProb *auty.VoteProposalProject) (*types.Rec
...
@@ -261,7 +261,7 @@ func (a *action) votePropProject(voteProb *auty.VoteProposalProject) (*types.Rec
}
}
if
a
.
api
.
GetConfig
()
.
IsDappFork
(
a
.
height
,
auty
.
AutonomyX
,
auty
.
ForkAutonomyDelRule
)
{
if
a
.
api
.
GetConfig
()
.
IsDappFork
(
a
.
height
,
auty
.
AutonomyX
,
auty
.
ForkAutonomyDelRule
)
{
if
cur
.
BoardVoteRes
.
TotalVotes
!=
0
&&
if
cur
.
BoardVoteRes
.
TotalVotes
!=
0
&&
cur
.
BoardVoteRes
.
TotalVotes
>
cur
.
BoardVoteRes
.
QuitVotes
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
)
/
float32
(
cur
.
BoardVoteRes
.
TotalVotes
-
cur
.
BoardVoteRes
.
QuitVotes
)
>=
float32
(
cur
.
CurRule
.
BoardApproveRatio
)
/
100.0
{
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
)
/
float32
(
cur
.
BoardVoteRes
.
TotalVotes
-
cur
.
BoardVoteRes
.
QuitVotes
)
>=
float32
(
cur
.
CurRule
.
BoardApproveRatio
)
/
100.0
{
cur
.
BoardVoteRes
.
Pass
=
true
cur
.
BoardVoteRes
.
Pass
=
true
cur
.
PropProject
.
RealEndBlockHeight
=
a
.
height
cur
.
PropProject
.
RealEndBlockHeight
=
a
.
height
...
@@ -463,7 +463,7 @@ func (a *action) tmintPropProject(tmintProb *auty.TerminateProposalProject) (*ty
...
@@ -463,7 +463,7 @@ func (a *action) tmintPropProject(tmintProb *auty.TerminateProposalProject) (*ty
return
nil
,
err
return
nil
,
err
}
}
if
a
.
api
.
GetConfig
()
.
IsDappFork
(
a
.
height
,
auty
.
AutonomyX
,
auty
.
ForkAutonomyDelRule
)
{
if
a
.
api
.
GetConfig
()
.
IsDappFork
(
a
.
height
,
auty
.
AutonomyX
,
auty
.
ForkAutonomyDelRule
)
{
if
cur
.
BoardVoteRes
.
TotalVotes
!=
0
&&
if
cur
.
BoardVoteRes
.
TotalVotes
!=
0
&&
cur
.
BoardVoteRes
.
TotalVotes
>
cur
.
BoardVoteRes
.
QuitVotes
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
)
/
float32
(
cur
.
BoardVoteRes
.
TotalVotes
-
cur
.
BoardVoteRes
.
QuitVotes
)
>=
float32
(
cur
.
CurRule
.
BoardApproveRatio
)
/
100.0
{
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
)
/
float32
(
cur
.
BoardVoteRes
.
TotalVotes
-
cur
.
BoardVoteRes
.
QuitVotes
)
>=
float32
(
cur
.
CurRule
.
BoardApproveRatio
)
/
100.0
{
cur
.
BoardVoteRes
.
Pass
=
true
cur
.
BoardVoteRes
.
Pass
=
true
}
else
{
}
else
{
...
...
plugin/dapp/autonomy/executor/query.go
View file @
a2907e13
...
@@ -63,3 +63,18 @@ func (a *Autonomy) Query_GetProposalChange(in *types.ReqString) (types.Message,
...
@@ -63,3 +63,18 @@ func (a *Autonomy) Query_GetProposalChange(in *types.ReqString) (types.Message,
func
(
a
*
Autonomy
)
Query_ListProposalChange
(
in
*
auty
.
ReqQueryProposalChange
)
(
types
.
Message
,
error
)
{
func
(
a
*
Autonomy
)
Query_ListProposalChange
(
in
*
auty
.
ReqQueryProposalChange
)
(
types
.
Message
,
error
)
{
return
a
.
listProposalChange
(
in
)
return
a
.
listProposalChange
(
in
)
}
}
// Query_GetProposalItem 查询提案
func
(
a
*
Autonomy
)
Query_GetProposalItem
(
in
*
types
.
ReqString
)
(
types
.
Message
,
error
)
{
return
getProposalItem
(
a
.
GetStateDB
(),
in
)
}
// Query_ListProposalItem 批量查询
func
(
a
*
Autonomy
)
Query_ListProposalItem
(
in
*
auty
.
ReqQueryProposalItem
)
(
types
.
Message
,
error
)
{
return
a
.
listProposalItem
(
in
)
}
// Query_GetProposalChange 查询提案修改董事会成员
func
(
a
*
Autonomy
)
Query_IsAutonomyApprovedItem
(
in
*
types
.
ReqMultiStrings
)
(
types
.
Message
,
error
)
{
return
IsAutonomyApprovedItem
(
a
.
GetStateDB
(),
in
)
}
plugin/dapp/autonomy/proto/autonomy.proto
View file @
a2907e13
...
@@ -9,6 +9,7 @@ import "board.proto";
...
@@ -9,6 +9,7 @@ import "board.proto";
import
"project.proto"
;
import
"project.proto"
;
import
"rule.proto"
;
import
"rule.proto"
;
import
"change.proto"
;
import
"change.proto"
;
import
"item.proto"
;
package
types
;
package
types
;
option
go_package
=
"../types"
;
option
go_package
=
"../types"
;
...
@@ -40,6 +41,13 @@ message AutonomyAction {
...
@@ -40,6 +41,13 @@ message AutonomyAction {
RevokeProposalChange
rvkPropChange
=
17
;
RevokeProposalChange
rvkPropChange
=
17
;
VoteProposalChange
votePropChange
=
18
;
VoteProposalChange
votePropChange
=
18
;
TerminateProposalChange
tmintPropChange
=
19
;
TerminateProposalChange
tmintPropChange
=
19
;
//提案事项审核相关
ProposalItem
propItem
=
21
;
RevokeProposalItem
rvkPropItem
=
22
;
VoteProposalItem
votePropItem
=
23
;
TerminateProposalItem
tmintPropItem
=
24
;
}
}
int32
ty
=
20
;
int32
ty
=
20
;
}
}
plugin/dapp/autonomy/proto/item.proto
0 → 100644
View file @
a2907e13
// 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.
syntax
=
"proto3"
;
import
"lcommon.proto"
;
package
types
;
option
go_package
=
"../types"
;
message
AutonomyProposalItem
{
ProposalItem
propItem
=
1
;
// 投票该提案的规则
RuleConfig
curRule
=
2
;
// 投票该提案的董事会成员
repeated
string
boards
=
3
;
// 董事会投票结果
VoteResult
boardVoteRes
=
4
;
// 状态
int32
status
=
6
;
string
address
=
7
;
int64
height
=
8
;
int32
index
=
9
;
string
proposalID
=
10
;
}
message
ProposalItem
{
// 提案时间
int32
year
=
1
;
int32
month
=
2
;
int32
day
=
3
;
// 项目相关
string
itemTxHash
=
4
;
// item tx hash
string
exec
=
5
;
// 合约执行器
string
description
=
7
;
// 简述
// 投票相关
int64
startBlockHeight
=
12
;
// 提案开始投票高度
int64
endBlockHeight
=
13
;
// 提案结束投票高度
int64
realEndBlockHeight
=
14
;
// 实际提案结束投票高度
int32
projectNeedBlockNum
=
15
;
// 以提案结束投票高度为准,需要项目需要消耗的区块数目所对应的时间
}
message
RevokeProposalItem
{
string
proposalID
=
1
;
}
message
VoteProposalItem
{
string
proposalID
=
1
;
bool
approve
=
2
;
AutonomyVoteOption
vote
=
3
;
}
message
TerminateProposalItem
{
string
proposalID
=
1
;
}
// receipt
message
ReceiptProposalItem
{
AutonomyProposalItem
prev
=
1
;
AutonomyProposalItem
current
=
2
;
}
message
LocalProposalItem
{
AutonomyProposalItem
propItem
=
1
;
repeated
string
comments
=
2
;
}
// query
message
ReqQueryProposalItem
{
int32
status
=
1
;
string
addr
=
2
;
int32
count
=
3
;
int32
direction
=
4
;
int64
height
=
5
;
int32
index
=
6
;
}
message
ReplyQueryProposalItem
{
repeated
AutonomyProposalItem
propItems
=
1
;
}
plugin/dapp/autonomy/types/autonomy.pb.go
View file @
a2907e13
...
@@ -51,6 +51,10 @@ type AutonomyAction struct {
...
@@ -51,6 +51,10 @@ type AutonomyAction struct {
// *AutonomyAction_RvkPropChange
// *AutonomyAction_RvkPropChange
// *AutonomyAction_VotePropChange
// *AutonomyAction_VotePropChange
// *AutonomyAction_TmintPropChange
// *AutonomyAction_TmintPropChange
// *AutonomyAction_PropItem
// *AutonomyAction_RvkPropItem
// *AutonomyAction_VotePropItem
// *AutonomyAction_TmintPropItem
Value
isAutonomyAction_Value
`protobuf_oneof:"value"`
Value
isAutonomyAction_Value
`protobuf_oneof:"value"`
Ty
int32
`protobuf:"varint,20,opt,name=ty,proto3" json:"ty,omitempty"`
Ty
int32
`protobuf:"varint,20,opt,name=ty,proto3" json:"ty,omitempty"`
}
}
...
@@ -227,6 +231,34 @@ func (x *AutonomyAction) GetTmintPropChange() *TerminateProposalChange {
...
@@ -227,6 +231,34 @@ func (x *AutonomyAction) GetTmintPropChange() *TerminateProposalChange {
return
nil
return
nil
}
}
func
(
x
*
AutonomyAction
)
GetPropItem
()
*
ProposalItem
{
if
x
,
ok
:=
x
.
GetValue
()
.
(
*
AutonomyAction_PropItem
);
ok
{
return
x
.
PropItem
}
return
nil
}
func
(
x
*
AutonomyAction
)
GetRvkPropItem
()
*
RevokeProposalItem
{
if
x
,
ok
:=
x
.
GetValue
()
.
(
*
AutonomyAction_RvkPropItem
);
ok
{
return
x
.
RvkPropItem
}
return
nil
}
func
(
x
*
AutonomyAction
)
GetVotePropItem
()
*
VoteProposalItem
{
if
x
,
ok
:=
x
.
GetValue
()
.
(
*
AutonomyAction_VotePropItem
);
ok
{
return
x
.
VotePropItem
}
return
nil
}
func
(
x
*
AutonomyAction
)
GetTmintPropItem
()
*
TerminateProposalItem
{
if
x
,
ok
:=
x
.
GetValue
()
.
(
*
AutonomyAction_TmintPropItem
);
ok
{
return
x
.
TmintPropItem
}
return
nil
}
func
(
x
*
AutonomyAction
)
GetTy
()
int32
{
func
(
x
*
AutonomyAction
)
GetTy
()
int32
{
if
x
!=
nil
{
if
x
!=
nil
{
return
x
.
Ty
return
x
.
Ty
...
@@ -319,6 +351,23 @@ type AutonomyAction_TmintPropChange struct {
...
@@ -319,6 +351,23 @@ type AutonomyAction_TmintPropChange struct {
TmintPropChange
*
TerminateProposalChange
`protobuf:"bytes,19,opt,name=tmintPropChange,proto3,oneof"`
TmintPropChange
*
TerminateProposalChange
`protobuf:"bytes,19,opt,name=tmintPropChange,proto3,oneof"`
}
}
type
AutonomyAction_PropItem
struct
{
//提案事项审核相关
PropItem
*
ProposalItem
`protobuf:"bytes,21,opt,name=propItem,proto3,oneof"`
}
type
AutonomyAction_RvkPropItem
struct
{
RvkPropItem
*
RevokeProposalItem
`protobuf:"bytes,22,opt,name=rvkPropItem,proto3,oneof"`
}
type
AutonomyAction_VotePropItem
struct
{
VotePropItem
*
VoteProposalItem
`protobuf:"bytes,23,opt,name=votePropItem,proto3,oneof"`
}
type
AutonomyAction_TmintPropItem
struct
{
TmintPropItem
*
TerminateProposalItem
`protobuf:"bytes,24,opt,name=tmintPropItem,proto3,oneof"`
}
func
(
*
AutonomyAction_PropBoard
)
isAutonomyAction_Value
()
{}
func
(
*
AutonomyAction_PropBoard
)
isAutonomyAction_Value
()
{}
func
(
*
AutonomyAction_RvkPropBoard
)
isAutonomyAction_Value
()
{}
func
(
*
AutonomyAction_RvkPropBoard
)
isAutonomyAction_Value
()
{}
...
@@ -357,6 +406,14 @@ func (*AutonomyAction_VotePropChange) isAutonomyAction_Value() {}
...
@@ -357,6 +406,14 @@ func (*AutonomyAction_VotePropChange) isAutonomyAction_Value() {}
func
(
*
AutonomyAction_TmintPropChange
)
isAutonomyAction_Value
()
{}
func
(
*
AutonomyAction_TmintPropChange
)
isAutonomyAction_Value
()
{}
func
(
*
AutonomyAction_PropItem
)
isAutonomyAction_Value
()
{}
func
(
*
AutonomyAction_RvkPropItem
)
isAutonomyAction_Value
()
{}
func
(
*
AutonomyAction_VotePropItem
)
isAutonomyAction_Value
()
{}
func
(
*
AutonomyAction_TmintPropItem
)
isAutonomyAction_Value
()
{}
var
File_autonomy_proto
protoreflect
.
FileDescriptor
var
File_autonomy_proto
protoreflect
.
FileDescriptor
var
file_autonomy_proto_rawDesc
=
[]
byte
{
var
file_autonomy_proto_rawDesc
=
[]
byte
{
...
@@ -364,89 +421,105 @@ var file_autonomy_proto_rawDesc = []byte{
...
@@ -364,89 +421,105 @@ var file_autonomy_proto_rawDesc = []byte{
0x12
,
0x05
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x1a
,
0x0b
,
0x62
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x2e
,
0x70
,
0x12
,
0x05
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x1a
,
0x0b
,
0x62
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x2e
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x1a
,
0x0d
,
0x70
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x2e
,
0x70
,
0x72
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x1a
,
0x0d
,
0x70
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x2e
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x1a
,
0x0a
,
0x72
,
0x75
,
0x6c
,
0x65
,
0x2e
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x1a
,
0x6f
,
0x74
,
0x6f
,
0x1a
,
0x0a
,
0x72
,
0x75
,
0x6c
,
0x65
,
0x2e
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x1a
,
0x0c
,
0x63
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x2e
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x22
,
0x85
,
0x0a
,
0x0c
,
0x63
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x2e
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x1a
,
0x0a
,
0x69
,
0x0a
,
0x0e
,
0x41
,
0x75
,
0x74
,
0x6f
,
0x6e
,
0x6f
,
0x6d
,
0x79
,
0x41
,
0x63
,
0x74
,
0x69
,
0x6f
,
0x6e
,
0x74
,
0x65
,
0x6d
,
0x2e
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x22
,
0xfc
,
0x0b
,
0x0a
,
0x0e
,
0x41
,
0x75
,
0x12
,
0x34
,
0x0a
,
0x09
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x18
,
0x01
,
0x20
,
0x74
,
0x6f
,
0x6e
,
0x6f
,
0x6d
,
0x79
,
0x41
,
0x63
,
0x74
,
0x69
,
0x6f
,
0x6e
,
0x12
,
0x34
,
0x0a
,
0x09
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x14
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x48
,
0x00
,
0x52
,
0x09
,
0x70
,
0x72
,
0x6f
,
0x14
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x70
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x12
,
0x40
,
0x0a
,
0x0c
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x48
,
0x00
,
0x52
,
0x09
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x42
,
0x6f
,
0x61
,
0x70
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1a
,
0x2e
,
0x74
,
0x72
,
0x64
,
0x12
,
0x40
,
0x0a
,
0x0c
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x42
,
0x6f
,
0x61
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x52
,
0x65
,
0x76
,
0x6f
,
0x6b
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x72
,
0x64
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1a
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x73
,
0x61
,
0x6c
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x48
,
0x00
,
0x52
,
0x0c
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x2e
,
0x52
,
0x65
,
0x76
,
0x6f
,
0x6b
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x42
,
0x72
,
0x6f
,
0x70
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x12
,
0x40
,
0x0a
,
0x0d
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x48
,
0x00
,
0x52
,
0x0c
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x42
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x18
,
0x03
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x12
,
0x40
,
0x0a
,
0x0d
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x18
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x18
,
0x03
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x18
,
0x2e
,
0x74
,
0x79
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x48
,
0x00
,
0x52
,
0x0d
,
0x76
,
0x6f
,
0x74
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x12
,
0x47
,
0x0a
,
0x0e
,
0x74
,
0x6d
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x48
,
0x00
,
0x52
,
0x0d
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x18
,
0x04
,
0x20
,
0x01
,
0x70
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x12
,
0x47
,
0x0a
,
0x0e
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x28
,
0x0b
,
0x32
,
0x1d
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x54
,
0x65
,
0x72
,
0x6d
,
0x69
,
0x72
,
0x6f
,
0x70
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x18
,
0x04
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1d
,
0x6e
,
0x61
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x54
,
0x65
,
0x72
,
0x6d
,
0x69
,
0x6e
,
0x61
,
0x74
,
0x65
,
0x64
,
0x48
,
0x00
,
0x52
,
0x0e
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x42
,
0x6f
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x48
,
0x00
,
0x52
,
0x61
,
0x72
,
0x64
,
0x12
,
0x3a
,
0x0a
,
0x0b
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x0e
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x42
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x12
,
0x63
,
0x74
,
0x18
,
0x05
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x16
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x3a
,
0x0a
,
0x0b
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x18
,
0x05
,
0x2e
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x16
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x50
,
0x72
,
0x6f
,
0x48
,
0x00
,
0x52
,
0x0b
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x12
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x48
,
0x00
,
0x52
,
0x0b
,
0x46
,
0x0a
,
0x0e
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x12
,
0x46
,
0x0a
,
0x0e
,
0x72
,
0x74
,
0x18
,
0x06
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1c
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x18
,
0x06
,
0x20
,
0x52
,
0x65
,
0x76
,
0x6f
,
0x6b
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x50
,
0x72
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1c
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x52
,
0x65
,
0x76
,
0x6f
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x48
,
0x00
,
0x52
,
0x0e
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6b
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x12
,
0x46
,
0x0a
,
0x0f
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x74
,
0x48
,
0x00
,
0x52
,
0x0e
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x18
,
0x07
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x65
,
0x63
,
0x74
,
0x12
,
0x46
,
0x0a
,
0x0f
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x32
,
0x1a
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x18
,
0x07
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1a
,
0x2e
,
0x74
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x48
,
0x00
,
0x52
,
0x0f
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x12
,
0x6c
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x48
,
0x00
,
0x52
,
0x0f
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x4f
,
0x0a
,
0x12
,
0x70
,
0x75
,
0x62
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x12
,
0x4f
,
0x0a
,
0x12
,
0x70
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x18
,
0x08
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1d
,
0x2e
,
0x74
,
0x79
,
0x75
,
0x62
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x50
,
0x75
,
0x62
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x74
,
0x18
,
0x08
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1d
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x73
,
0x61
,
0x6c
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x48
,
0x00
,
0x52
,
0x12
,
0x70
,
0x75
,
0x50
,
0x75
,
0x62
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x50
,
0x62
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x48
,
0x00
,
0x52
,
0x12
,
0x70
,
0x75
,
0x62
,
0x56
,
0x6f
,
0x74
,
0x12
,
0x4d
,
0x0a
,
0x10
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x12
,
0x4d
,
0x0a
,
0x10
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x18
,
0x09
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1f
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x65
,
0x73
,
0x2e
,
0x54
,
0x65
,
0x72
,
0x6d
,
0x69
,
0x6e
,
0x61
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x18
,
0x09
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1f
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x54
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x48
,
0x00
,
0x52
,
0x10
,
0x74
,
0x65
,
0x72
,
0x6d
,
0x69
,
0x6e
,
0x61
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x12
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x48
,
0x00
,
0x52
,
0x10
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x31
,
0x0a
,
0x08
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x18
,
0x0a
,
0x20
,
0x01
,
0x28
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x50
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x12
,
0x31
,
0x0a
,
0x08
,
0x70
,
0x0b
,
0x32
,
0x13
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x18
,
0x0a
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x13
,
0x2e
,
0x61
,
0x6c
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x48
,
0x00
,
0x52
,
0x08
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x12
,
0x3d
,
0x0a
,
0x0b
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x6c
,
0x6c
,
0x65
,
0x48
,
0x00
,
0x52
,
0x08
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x12
,
0x3d
,
0x65
,
0x18
,
0x0b
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x19
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x0a
,
0x0b
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x18
,
0x0b
,
0x20
,
0x52
,
0x65
,
0x76
,
0x6f
,
0x6b
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x52
,
0x75
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x19
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x52
,
0x65
,
0x76
,
0x6f
,
0x6c
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0b
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x6c
,
0x6b
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x48
,
0x00
,
0x65
,
0x12
,
0x3d
,
0x0a
,
0x0c
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x6c
,
0x52
,
0x0b
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x12
,
0x3d
,
0x0a
,
0x65
,
0x18
,
0x0c
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x17
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x0c
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x18
,
0x0c
,
0x20
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x17
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0c
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0c
,
0x12
,
0x44
,
0x0a
,
0x0d
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x6c
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x12
,
0x44
,
0x0a
,
0x0d
,
0x65
,
0x18
,
0x0d
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1c
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x18
,
0x0d
,
0x20
,
0x54
,
0x65
,
0x72
,
0x6d
,
0x69
,
0x6e
,
0x61
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1c
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x54
,
0x65
,
0x72
,
0x6d
,
0x6c
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0d
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x69
,
0x6e
,
0x61
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x52
,
0x75
,
0x6c
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x12
,
0x31
,
0x0a
,
0x08
,
0x74
,
0x72
,
0x61
,
0x6e
,
0x73
,
0x66
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0d
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x75
,
0x65
,
0x72
,
0x18
,
0x0e
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x13
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x6c
,
0x65
,
0x12
,
0x31
,
0x0a
,
0x08
,
0x74
,
0x72
,
0x61
,
0x6e
,
0x73
,
0x66
,
0x65
,
0x72
,
0x18
,
0x0e
,
0x2e
,
0x54
,
0x72
,
0x61
,
0x6e
,
0x73
,
0x66
,
0x65
,
0x72
,
0x46
,
0x75
,
0x6e
,
0x64
,
0x48
,
0x00
,
0x52
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x13
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x54
,
0x72
,
0x61
,
0x08
,
0x74
,
0x72
,
0x61
,
0x6e
,
0x73
,
0x66
,
0x65
,
0x72
,
0x12
,
0x32
,
0x0a
,
0x0b
,
0x63
,
0x6f
,
0x6d
,
0x6e
,
0x73
,
0x66
,
0x65
,
0x72
,
0x46
,
0x75
,
0x6e
,
0x64
,
0x48
,
0x00
,
0x52
,
0x08
,
0x74
,
0x72
,
0x61
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x18
,
0x0f
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x0e
,
0x6e
,
0x73
,
0x66
,
0x65
,
0x72
,
0x12
,
0x32
,
0x0a
,
0x0b
,
0x63
,
0x6f
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x43
,
0x6f
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x48
,
0x00
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x18
,
0x0f
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x0e
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x52
,
0x0b
,
0x63
,
0x6f
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x12
,
0x37
,
0x0a
,
0x65
,
0x73
,
0x2e
,
0x43
,
0x6f
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x48
,
0x00
,
0x52
,
0x0b
,
0x63
,
0x6f
,
0x0a
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x18
,
0x10
,
0x20
,
0x01
,
0x28
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x12
,
0x37
,
0x0a
,
0x0a
,
0x70
,
0x72
,
0x6f
,
0x0b
,
0x32
,
0x15
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x70
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x18
,
0x10
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x15
,
0x2e
,
0x61
,
0x6c
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0a
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x43
,
0x68
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x12
,
0x43
,
0x0a
,
0x0d
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0a
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x70
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x18
,
0x11
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1b
,
0x2e
,
0x67
,
0x65
,
0x12
,
0x43
,
0x0a
,
0x0d
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x43
,
0x68
,
0x61
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x52
,
0x65
,
0x76
,
0x6f
,
0x6b
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6e
,
0x67
,
0x65
,
0x18
,
0x11
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1b
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0d
,
0x72
,
0x76
,
0x73
,
0x2e
,
0x52
,
0x65
,
0x76
,
0x6f
,
0x6b
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x12
,
0x43
,
0x0a
,
0x0e
,
0x76
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0d
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x18
,
0x12
,
0x20
,
0x70
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x12
,
0x43
,
0x0a
,
0x0e
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x19
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x72
,
0x6f
,
0x70
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x18
,
0x12
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x48
,
0x00
,
0x19
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x52
,
0x0e
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0e
,
0x76
,
0x6f
,
0x12
,
0x4a
,
0x0a
,
0x0f
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x43
,
0x68
,
0x61
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x12
,
0x4a
,
0x0a
,
0x0f
,
0x6e
,
0x67
,
0x65
,
0x18
,
0x13
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1e
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x18
,
0x73
,
0x2e
,
0x54
,
0x65
,
0x72
,
0x6d
,
0x69
,
0x6e
,
0x61
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x13
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1e
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x54
,
0x65
,
0x73
,
0x61
,
0x6c
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0f
,
0x74
,
0x6d
,
0x69
,
0x72
,
0x6d
,
0x69
,
0x6e
,
0x61
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x43
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x12
,
0x0e
,
0x0a
,
0x02
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x48
,
0x00
,
0x52
,
0x0f
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x74
,
0x79
,
0x18
,
0x14
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x02
,
0x74
,
0x79
,
0x42
,
0x07
,
0x0a
,
0x05
,
0x6f
,
0x70
,
0x43
,
0x68
,
0x61
,
0x6e
,
0x67
,
0x65
,
0x12
,
0x31
,
0x0a
,
0x08
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x76
,
0x61
,
0x6c
,
0x75
,
0x65
,
0x42
,
0x0a
,
0x5a
,
0x08
,
0x2e
,
0x2e
,
0x2f
,
0x74
,
0x79
,
0x70
,
0x65
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x18
,
0x15
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x13
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x73
,
0x62
,
0x06
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x33
,
0x65
,
0x73
,
0x2e
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x48
,
0x00
,
0x52
,
0x08
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x3d
,
0x0a
,
0x0b
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x18
,
0x16
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x19
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x52
,
0x65
,
0x76
,
0x6f
,
0x6b
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x48
,
0x00
,
0x52
,
0x0b
,
0x72
,
0x76
,
0x6b
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x3d
,
0x0a
,
0x0c
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x18
,
0x17
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x17
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x48
,
0x00
,
0x52
,
0x0c
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x44
,
0x0a
,
0x0d
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x18
,
0x18
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1c
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x54
,
0x65
,
0x72
,
0x6d
,
0x69
,
0x6e
,
0x61
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x48
,
0x00
,
0x52
,
0x0d
,
0x74
,
0x6d
,
0x69
,
0x6e
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x0e
,
0x0a
,
0x02
,
0x74
,
0x79
,
0x18
,
0x14
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x02
,
0x74
,
0x79
,
0x42
,
0x07
,
0x0a
,
0x05
,
0x76
,
0x61
,
0x6c
,
0x75
,
0x65
,
0x42
,
0x0a
,
0x5a
,
0x08
,
0x2e
,
0x2e
,
0x2f
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x62
,
0x06
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x33
,
}
}
var
(
var
(
...
@@ -483,6 +556,10 @@ var file_autonomy_proto_goTypes = []interface{}{
...
@@ -483,6 +556,10 @@ var file_autonomy_proto_goTypes = []interface{}{
(
*
RevokeProposalChange
)(
nil
),
// 17: types.RevokeProposalChange
(
*
RevokeProposalChange
)(
nil
),
// 17: types.RevokeProposalChange
(
*
VoteProposalChange
)(
nil
),
// 18: types.VoteProposalChange
(
*
VoteProposalChange
)(
nil
),
// 18: types.VoteProposalChange
(
*
TerminateProposalChange
)(
nil
),
// 19: types.TerminateProposalChange
(
*
TerminateProposalChange
)(
nil
),
// 19: types.TerminateProposalChange
(
*
ProposalItem
)(
nil
),
// 20: types.ProposalItem
(
*
RevokeProposalItem
)(
nil
),
// 21: types.RevokeProposalItem
(
*
VoteProposalItem
)(
nil
),
// 22: types.VoteProposalItem
(
*
TerminateProposalItem
)(
nil
),
// 23: types.TerminateProposalItem
}
}
var
file_autonomy_proto_depIdxs
=
[]
int32
{
var
file_autonomy_proto_depIdxs
=
[]
int32
{
1
,
// 0: types.AutonomyAction.propBoard:type_name -> types.ProposalBoard
1
,
// 0: types.AutonomyAction.propBoard:type_name -> types.ProposalBoard
...
@@ -504,11 +581,15 @@ var file_autonomy_proto_depIdxs = []int32{
...
@@ -504,11 +581,15 @@ var file_autonomy_proto_depIdxs = []int32{
17
,
// 16: types.AutonomyAction.rvkPropChange:type_name -> types.RevokeProposalChange
17
,
// 16: types.AutonomyAction.rvkPropChange:type_name -> types.RevokeProposalChange
18
,
// 17: types.AutonomyAction.votePropChange:type_name -> types.VoteProposalChange
18
,
// 17: types.AutonomyAction.votePropChange:type_name -> types.VoteProposalChange
19
,
// 18: types.AutonomyAction.tmintPropChange:type_name -> types.TerminateProposalChange
19
,
// 18: types.AutonomyAction.tmintPropChange:type_name -> types.TerminateProposalChange
19
,
// [19:19] is the sub-list for method output_type
20
,
// 19: types.AutonomyAction.propItem:type_name -> types.ProposalItem
19
,
// [19:19] is the sub-list for method input_type
21
,
// 20: types.AutonomyAction.rvkPropItem:type_name -> types.RevokeProposalItem
19
,
// [19:19] is the sub-list for extension type_name
22
,
// 21: types.AutonomyAction.votePropItem:type_name -> types.VoteProposalItem
19
,
// [19:19] is the sub-list for extension extendee
23
,
// 22: types.AutonomyAction.tmintPropItem:type_name -> types.TerminateProposalItem
0
,
// [0:19] is the sub-list for field type_name
23
,
// [23:23] is the sub-list for method output_type
23
,
// [23:23] is the sub-list for method input_type
23
,
// [23:23] is the sub-list for extension type_name
23
,
// [23:23] is the sub-list for extension extendee
0
,
// [0:23] is the sub-list for field type_name
}
}
func
init
()
{
file_autonomy_proto_init
()
}
func
init
()
{
file_autonomy_proto_init
()
}
...
@@ -520,6 +601,7 @@ func file_autonomy_proto_init() {
...
@@ -520,6 +601,7 @@ func file_autonomy_proto_init() {
file_project_proto_init
()
file_project_proto_init
()
file_rule_proto_init
()
file_rule_proto_init
()
file_change_proto_init
()
file_change_proto_init
()
file_item_proto_init
()
if
!
protoimpl
.
UnsafeEnabled
{
if
!
protoimpl
.
UnsafeEnabled
{
file_autonomy_proto_msgTypes
[
0
]
.
Exporter
=
func
(
v
interface
{},
i
int
)
interface
{}
{
file_autonomy_proto_msgTypes
[
0
]
.
Exporter
=
func
(
v
interface
{},
i
int
)
interface
{}
{
switch
v
:=
v
.
(
*
AutonomyAction
);
i
{
switch
v
:=
v
.
(
*
AutonomyAction
);
i
{
...
@@ -554,6 +636,10 @@ func file_autonomy_proto_init() {
...
@@ -554,6 +636,10 @@ func file_autonomy_proto_init() {
(
*
AutonomyAction_RvkPropChange
)(
nil
),
(
*
AutonomyAction_RvkPropChange
)(
nil
),
(
*
AutonomyAction_VotePropChange
)(
nil
),
(
*
AutonomyAction_VotePropChange
)(
nil
),
(
*
AutonomyAction_TmintPropChange
)(
nil
),
(
*
AutonomyAction_TmintPropChange
)(
nil
),
(
*
AutonomyAction_PropItem
)(
nil
),
(
*
AutonomyAction_RvkPropItem
)(
nil
),
(
*
AutonomyAction_VotePropItem
)(
nil
),
(
*
AutonomyAction_TmintPropItem
)(
nil
),
}
}
type
x
struct
{}
type
x
struct
{}
out
:=
protoimpl
.
TypeBuilder
{
out
:=
protoimpl
.
TypeBuilder
{
...
...
plugin/dapp/autonomy/types/const.go
View file @
a2907e13
...
@@ -30,6 +30,11 @@ const (
...
@@ -30,6 +30,11 @@ const (
AutonomyActionVotePropChange
AutonomyActionVotePropChange
AutonomyActionTmintPropChange
AutonomyActionTmintPropChange
AutonomyActionPropItem
AutonomyActionRvkPropItem
AutonomyActionVotePropItem
AutonomyActionTmintPropItem
//log for autonomy
//log for autonomy
TyLogPropBoard
=
2101
TyLogPropBoard
=
2101
TyLogRvkPropBoard
=
2102
TyLogRvkPropBoard
=
2102
...
@@ -53,6 +58,11 @@ const (
...
@@ -53,6 +58,11 @@ const (
TyLogRvkPropChange
=
2142
TyLogRvkPropChange
=
2142
TyLogVotePropChange
=
2143
TyLogVotePropChange
=
2143
TyLogTmintPropChange
=
2144
TyLogTmintPropChange
=
2144
TyLogPropItem
=
2161
TyLogRvkPropItem
=
2162
TyLogVotePropItem
=
2163
TyLogTmintPropItem
=
2164
)
)
// Board status
// Board status
...
@@ -88,6 +98,14 @@ const (
...
@@ -88,6 +98,14 @@ const (
AutonomyStatusTmintPropChange
AutonomyStatusTmintPropChange
)
)
// Item status
const
(
AutonomyStatusProposalItem
=
iota
+
1
AutonomyStatusRvkPropItem
AutonomyStatusVotePropItem
AutonomyStatusTmintPropItem
)
const
(
const
(
// GetProposalBoard 用于在cmd里面的区分不同的查询
// GetProposalBoard 用于在cmd里面的区分不同的查询
GetProposalBoard
=
"GetProposalBoard"
GetProposalBoard
=
"GetProposalBoard"
...
@@ -111,6 +129,11 @@ const (
...
@@ -111,6 +129,11 @@ const (
GetProposalChange
=
"GetProposalChange"
GetProposalChange
=
"GetProposalChange"
// ListProposalChange 查询多个
// ListProposalChange 查询多个
ListProposalChange
=
"ListProposalChange"
ListProposalChange
=
"ListProposalChange"
// GetProposalItem 用于在cmd里面的区分不同的查询
GetProposalItem
=
"GetProposalItem"
// ListProposalItem 查询多个
ListProposalItem
=
"ListProposalItem"
)
)
//包的名字可以通过配置文件来配置
//包的名字可以通过配置文件来配置
...
...
plugin/dapp/autonomy/types/item.pb.go
0 → 100644
View file @
a2907e13
// 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.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
// protoc v3.9.1
// source: item.proto
package
types
import
(
reflect
"reflect"
sync
"sync"
protoreflect
"google.golang.org/protobuf/reflect/protoreflect"
protoimpl
"google.golang.org/protobuf/runtime/protoimpl"
)
const
(
// Verify that this generated code is sufficiently up-to-date.
_
=
protoimpl
.
EnforceVersion
(
20
-
protoimpl
.
MinVersion
)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_
=
protoimpl
.
EnforceVersion
(
protoimpl
.
MaxVersion
-
20
)
)
type
AutonomyProposalItem
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
PropItem
*
ProposalItem
`protobuf:"bytes,1,opt,name=propItem,proto3" json:"propItem,omitempty"`
// 投票该提案的规则
CurRule
*
RuleConfig
`protobuf:"bytes,2,opt,name=curRule,proto3" json:"curRule,omitempty"`
// 投票该提案的董事会成员
Boards
[]
string
`protobuf:"bytes,3,rep,name=boards,proto3" json:"boards,omitempty"`
// 董事会投票结果
BoardVoteRes
*
VoteResult
`protobuf:"bytes,4,opt,name=boardVoteRes,proto3" json:"boardVoteRes,omitempty"`
// 状态
Status
int32
`protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"`
Address
string
`protobuf:"bytes,7,opt,name=address,proto3" json:"address,omitempty"`
Height
int64
`protobuf:"varint,8,opt,name=height,proto3" json:"height,omitempty"`
Index
int32
`protobuf:"varint,9,opt,name=index,proto3" json:"index,omitempty"`
ProposalID
string
`protobuf:"bytes,10,opt,name=proposalID,proto3" json:"proposalID,omitempty"`
}
func
(
x
*
AutonomyProposalItem
)
Reset
()
{
*
x
=
AutonomyProposalItem
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_item_proto_msgTypes
[
0
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
}
func
(
x
*
AutonomyProposalItem
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
AutonomyProposalItem
)
ProtoMessage
()
{}
func
(
x
*
AutonomyProposalItem
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_item_proto_msgTypes
[
0
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
ms
.
StoreMessageInfo
(
mi
)
}
return
ms
}
return
mi
.
MessageOf
(
x
)
}
// Deprecated: Use AutonomyProposalItem.ProtoReflect.Descriptor instead.
func
(
*
AutonomyProposalItem
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_item_proto_rawDescGZIP
(),
[]
int
{
0
}
}
func
(
x
*
AutonomyProposalItem
)
GetPropItem
()
*
ProposalItem
{
if
x
!=
nil
{
return
x
.
PropItem
}
return
nil
}
func
(
x
*
AutonomyProposalItem
)
GetCurRule
()
*
RuleConfig
{
if
x
!=
nil
{
return
x
.
CurRule
}
return
nil
}
func
(
x
*
AutonomyProposalItem
)
GetBoards
()
[]
string
{
if
x
!=
nil
{
return
x
.
Boards
}
return
nil
}
func
(
x
*
AutonomyProposalItem
)
GetBoardVoteRes
()
*
VoteResult
{
if
x
!=
nil
{
return
x
.
BoardVoteRes
}
return
nil
}
func
(
x
*
AutonomyProposalItem
)
GetStatus
()
int32
{
if
x
!=
nil
{
return
x
.
Status
}
return
0
}
func
(
x
*
AutonomyProposalItem
)
GetAddress
()
string
{
if
x
!=
nil
{
return
x
.
Address
}
return
""
}
func
(
x
*
AutonomyProposalItem
)
GetHeight
()
int64
{
if
x
!=
nil
{
return
x
.
Height
}
return
0
}
func
(
x
*
AutonomyProposalItem
)
GetIndex
()
int32
{
if
x
!=
nil
{
return
x
.
Index
}
return
0
}
func
(
x
*
AutonomyProposalItem
)
GetProposalID
()
string
{
if
x
!=
nil
{
return
x
.
ProposalID
}
return
""
}
type
ProposalItem
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
// 提案时间
Year
int32
`protobuf:"varint,1,opt,name=year,proto3" json:"year,omitempty"`
Month
int32
`protobuf:"varint,2,opt,name=month,proto3" json:"month,omitempty"`
Day
int32
`protobuf:"varint,3,opt,name=day,proto3" json:"day,omitempty"`
// 项目相关
ItemTxHash
string
`protobuf:"bytes,4,opt,name=itemTxHash,proto3" json:"itemTxHash,omitempty"`
// item tx hash
Exec
string
`protobuf:"bytes,5,opt,name=exec,proto3" json:"exec,omitempty"`
// 合约执行器
Description
string
`protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"`
// 简述
// 投票相关
StartBlockHeight
int64
`protobuf:"varint,12,opt,name=startBlockHeight,proto3" json:"startBlockHeight,omitempty"`
// 提案开始投票高度
EndBlockHeight
int64
`protobuf:"varint,13,opt,name=endBlockHeight,proto3" json:"endBlockHeight,omitempty"`
// 提案结束投票高度
RealEndBlockHeight
int64
`protobuf:"varint,14,opt,name=realEndBlockHeight,proto3" json:"realEndBlockHeight,omitempty"`
// 实际提案结束投票高度
ProjectNeedBlockNum
int32
`protobuf:"varint,15,opt,name=projectNeedBlockNum,proto3" json:"projectNeedBlockNum,omitempty"`
// 以提案结束投票高度为准,需要项目需要消耗的区块数目所对应的时间
}
func
(
x
*
ProposalItem
)
Reset
()
{
*
x
=
ProposalItem
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_item_proto_msgTypes
[
1
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
}
func
(
x
*
ProposalItem
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
ProposalItem
)
ProtoMessage
()
{}
func
(
x
*
ProposalItem
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_item_proto_msgTypes
[
1
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
ms
.
StoreMessageInfo
(
mi
)
}
return
ms
}
return
mi
.
MessageOf
(
x
)
}
// Deprecated: Use ProposalItem.ProtoReflect.Descriptor instead.
func
(
*
ProposalItem
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_item_proto_rawDescGZIP
(),
[]
int
{
1
}
}
func
(
x
*
ProposalItem
)
GetYear
()
int32
{
if
x
!=
nil
{
return
x
.
Year
}
return
0
}
func
(
x
*
ProposalItem
)
GetMonth
()
int32
{
if
x
!=
nil
{
return
x
.
Month
}
return
0
}
func
(
x
*
ProposalItem
)
GetDay
()
int32
{
if
x
!=
nil
{
return
x
.
Day
}
return
0
}
func
(
x
*
ProposalItem
)
GetItemTxHash
()
string
{
if
x
!=
nil
{
return
x
.
ItemTxHash
}
return
""
}
func
(
x
*
ProposalItem
)
GetExec
()
string
{
if
x
!=
nil
{
return
x
.
Exec
}
return
""
}
func
(
x
*
ProposalItem
)
GetDescription
()
string
{
if
x
!=
nil
{
return
x
.
Description
}
return
""
}
func
(
x
*
ProposalItem
)
GetStartBlockHeight
()
int64
{
if
x
!=
nil
{
return
x
.
StartBlockHeight
}
return
0
}
func
(
x
*
ProposalItem
)
GetEndBlockHeight
()
int64
{
if
x
!=
nil
{
return
x
.
EndBlockHeight
}
return
0
}
func
(
x
*
ProposalItem
)
GetRealEndBlockHeight
()
int64
{
if
x
!=
nil
{
return
x
.
RealEndBlockHeight
}
return
0
}
func
(
x
*
ProposalItem
)
GetProjectNeedBlockNum
()
int32
{
if
x
!=
nil
{
return
x
.
ProjectNeedBlockNum
}
return
0
}
type
RevokeProposalItem
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
ProposalID
string
`protobuf:"bytes,1,opt,name=proposalID,proto3" json:"proposalID,omitempty"`
}
func
(
x
*
RevokeProposalItem
)
Reset
()
{
*
x
=
RevokeProposalItem
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_item_proto_msgTypes
[
2
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
}
func
(
x
*
RevokeProposalItem
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
RevokeProposalItem
)
ProtoMessage
()
{}
func
(
x
*
RevokeProposalItem
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_item_proto_msgTypes
[
2
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
ms
.
StoreMessageInfo
(
mi
)
}
return
ms
}
return
mi
.
MessageOf
(
x
)
}
// Deprecated: Use RevokeProposalItem.ProtoReflect.Descriptor instead.
func
(
*
RevokeProposalItem
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_item_proto_rawDescGZIP
(),
[]
int
{
2
}
}
func
(
x
*
RevokeProposalItem
)
GetProposalID
()
string
{
if
x
!=
nil
{
return
x
.
ProposalID
}
return
""
}
type
VoteProposalItem
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
ProposalID
string
`protobuf:"bytes,1,opt,name=proposalID,proto3" json:"proposalID,omitempty"`
Approve
bool
`protobuf:"varint,2,opt,name=approve,proto3" json:"approve,omitempty"`
Vote
AutonomyVoteOption
`protobuf:"varint,3,opt,name=vote,proto3,enum=types.AutonomyVoteOption" json:"vote,omitempty"`
}
func
(
x
*
VoteProposalItem
)
Reset
()
{
*
x
=
VoteProposalItem
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_item_proto_msgTypes
[
3
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
}
func
(
x
*
VoteProposalItem
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
VoteProposalItem
)
ProtoMessage
()
{}
func
(
x
*
VoteProposalItem
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_item_proto_msgTypes
[
3
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
ms
.
StoreMessageInfo
(
mi
)
}
return
ms
}
return
mi
.
MessageOf
(
x
)
}
// Deprecated: Use VoteProposalItem.ProtoReflect.Descriptor instead.
func
(
*
VoteProposalItem
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_item_proto_rawDescGZIP
(),
[]
int
{
3
}
}
func
(
x
*
VoteProposalItem
)
GetProposalID
()
string
{
if
x
!=
nil
{
return
x
.
ProposalID
}
return
""
}
func
(
x
*
VoteProposalItem
)
GetApprove
()
bool
{
if
x
!=
nil
{
return
x
.
Approve
}
return
false
}
func
(
x
*
VoteProposalItem
)
GetVote
()
AutonomyVoteOption
{
if
x
!=
nil
{
return
x
.
Vote
}
return
AutonomyVoteOption_NOJOIN
}
type
TerminateProposalItem
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
ProposalID
string
`protobuf:"bytes,1,opt,name=proposalID,proto3" json:"proposalID,omitempty"`
}
func
(
x
*
TerminateProposalItem
)
Reset
()
{
*
x
=
TerminateProposalItem
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_item_proto_msgTypes
[
4
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
}
func
(
x
*
TerminateProposalItem
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
TerminateProposalItem
)
ProtoMessage
()
{}
func
(
x
*
TerminateProposalItem
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_item_proto_msgTypes
[
4
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
ms
.
StoreMessageInfo
(
mi
)
}
return
ms
}
return
mi
.
MessageOf
(
x
)
}
// Deprecated: Use TerminateProposalItem.ProtoReflect.Descriptor instead.
func
(
*
TerminateProposalItem
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_item_proto_rawDescGZIP
(),
[]
int
{
4
}
}
func
(
x
*
TerminateProposalItem
)
GetProposalID
()
string
{
if
x
!=
nil
{
return
x
.
ProposalID
}
return
""
}
// receipt
type
ReceiptProposalItem
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
Prev
*
AutonomyProposalItem
`protobuf:"bytes,1,opt,name=prev,proto3" json:"prev,omitempty"`
Current
*
AutonomyProposalItem
`protobuf:"bytes,2,opt,name=current,proto3" json:"current,omitempty"`
}
func
(
x
*
ReceiptProposalItem
)
Reset
()
{
*
x
=
ReceiptProposalItem
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_item_proto_msgTypes
[
5
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
}
func
(
x
*
ReceiptProposalItem
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
ReceiptProposalItem
)
ProtoMessage
()
{}
func
(
x
*
ReceiptProposalItem
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_item_proto_msgTypes
[
5
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
ms
.
StoreMessageInfo
(
mi
)
}
return
ms
}
return
mi
.
MessageOf
(
x
)
}
// Deprecated: Use ReceiptProposalItem.ProtoReflect.Descriptor instead.
func
(
*
ReceiptProposalItem
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_item_proto_rawDescGZIP
(),
[]
int
{
5
}
}
func
(
x
*
ReceiptProposalItem
)
GetPrev
()
*
AutonomyProposalItem
{
if
x
!=
nil
{
return
x
.
Prev
}
return
nil
}
func
(
x
*
ReceiptProposalItem
)
GetCurrent
()
*
AutonomyProposalItem
{
if
x
!=
nil
{
return
x
.
Current
}
return
nil
}
type
LocalProposalItem
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
PropItem
*
AutonomyProposalItem
`protobuf:"bytes,1,opt,name=propItem,proto3" json:"propItem,omitempty"`
Comments
[]
string
`protobuf:"bytes,2,rep,name=comments,proto3" json:"comments,omitempty"`
}
func
(
x
*
LocalProposalItem
)
Reset
()
{
*
x
=
LocalProposalItem
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_item_proto_msgTypes
[
6
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
}
func
(
x
*
LocalProposalItem
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
LocalProposalItem
)
ProtoMessage
()
{}
func
(
x
*
LocalProposalItem
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_item_proto_msgTypes
[
6
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
ms
.
StoreMessageInfo
(
mi
)
}
return
ms
}
return
mi
.
MessageOf
(
x
)
}
// Deprecated: Use LocalProposalItem.ProtoReflect.Descriptor instead.
func
(
*
LocalProposalItem
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_item_proto_rawDescGZIP
(),
[]
int
{
6
}
}
func
(
x
*
LocalProposalItem
)
GetPropItem
()
*
AutonomyProposalItem
{
if
x
!=
nil
{
return
x
.
PropItem
}
return
nil
}
func
(
x
*
LocalProposalItem
)
GetComments
()
[]
string
{
if
x
!=
nil
{
return
x
.
Comments
}
return
nil
}
// query
type
ReqQueryProposalItem
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
Status
int32
`protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
Addr
string
`protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
Count
int32
`protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
Direction
int32
`protobuf:"varint,4,opt,name=direction,proto3" json:"direction,omitempty"`
Height
int64
`protobuf:"varint,5,opt,name=height,proto3" json:"height,omitempty"`
Index
int32
`protobuf:"varint,6,opt,name=index,proto3" json:"index,omitempty"`
}
func
(
x
*
ReqQueryProposalItem
)
Reset
()
{
*
x
=
ReqQueryProposalItem
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_item_proto_msgTypes
[
7
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
}
func
(
x
*
ReqQueryProposalItem
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
ReqQueryProposalItem
)
ProtoMessage
()
{}
func
(
x
*
ReqQueryProposalItem
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_item_proto_msgTypes
[
7
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
ms
.
StoreMessageInfo
(
mi
)
}
return
ms
}
return
mi
.
MessageOf
(
x
)
}
// Deprecated: Use ReqQueryProposalItem.ProtoReflect.Descriptor instead.
func
(
*
ReqQueryProposalItem
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_item_proto_rawDescGZIP
(),
[]
int
{
7
}
}
func
(
x
*
ReqQueryProposalItem
)
GetStatus
()
int32
{
if
x
!=
nil
{
return
x
.
Status
}
return
0
}
func
(
x
*
ReqQueryProposalItem
)
GetAddr
()
string
{
if
x
!=
nil
{
return
x
.
Addr
}
return
""
}
func
(
x
*
ReqQueryProposalItem
)
GetCount
()
int32
{
if
x
!=
nil
{
return
x
.
Count
}
return
0
}
func
(
x
*
ReqQueryProposalItem
)
GetDirection
()
int32
{
if
x
!=
nil
{
return
x
.
Direction
}
return
0
}
func
(
x
*
ReqQueryProposalItem
)
GetHeight
()
int64
{
if
x
!=
nil
{
return
x
.
Height
}
return
0
}
func
(
x
*
ReqQueryProposalItem
)
GetIndex
()
int32
{
if
x
!=
nil
{
return
x
.
Index
}
return
0
}
type
ReplyQueryProposalItem
struct
{
state
protoimpl
.
MessageState
sizeCache
protoimpl
.
SizeCache
unknownFields
protoimpl
.
UnknownFields
PropItems
[]
*
AutonomyProposalItem
`protobuf:"bytes,1,rep,name=propItems,proto3" json:"propItems,omitempty"`
}
func
(
x
*
ReplyQueryProposalItem
)
Reset
()
{
*
x
=
ReplyQueryProposalItem
{}
if
protoimpl
.
UnsafeEnabled
{
mi
:=
&
file_item_proto_msgTypes
[
8
]
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
ms
.
StoreMessageInfo
(
mi
)
}
}
func
(
x
*
ReplyQueryProposalItem
)
String
()
string
{
return
protoimpl
.
X
.
MessageStringOf
(
x
)
}
func
(
*
ReplyQueryProposalItem
)
ProtoMessage
()
{}
func
(
x
*
ReplyQueryProposalItem
)
ProtoReflect
()
protoreflect
.
Message
{
mi
:=
&
file_item_proto_msgTypes
[
8
]
if
protoimpl
.
UnsafeEnabled
&&
x
!=
nil
{
ms
:=
protoimpl
.
X
.
MessageStateOf
(
protoimpl
.
Pointer
(
x
))
if
ms
.
LoadMessageInfo
()
==
nil
{
ms
.
StoreMessageInfo
(
mi
)
}
return
ms
}
return
mi
.
MessageOf
(
x
)
}
// Deprecated: Use ReplyQueryProposalItem.ProtoReflect.Descriptor instead.
func
(
*
ReplyQueryProposalItem
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
file_item_proto_rawDescGZIP
(),
[]
int
{
8
}
}
func
(
x
*
ReplyQueryProposalItem
)
GetPropItems
()
[]
*
AutonomyProposalItem
{
if
x
!=
nil
{
return
x
.
PropItems
}
return
nil
}
var
File_item_proto
protoreflect
.
FileDescriptor
var
file_item_proto_rawDesc
=
[]
byte
{
0x0a
,
0x0a
,
0x69
,
0x74
,
0x65
,
0x6d
,
0x2e
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x12
,
0x05
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x1a
,
0x0d
,
0x6c
,
0x63
,
0x6f
,
0x6d
,
0x6d
,
0x6f
,
0x6e
,
0x2e
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x22
,
0xc3
,
0x02
,
0x0a
,
0x14
,
0x41
,
0x75
,
0x74
,
0x6f
,
0x6e
,
0x6f
,
0x6d
,
0x79
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x2f
,
0x0a
,
0x08
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x13
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x52
,
0x08
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x2b
,
0x0a
,
0x07
,
0x63
,
0x75
,
0x72
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x11
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x43
,
0x6f
,
0x6e
,
0x66
,
0x69
,
0x67
,
0x52
,
0x07
,
0x63
,
0x75
,
0x72
,
0x52
,
0x75
,
0x6c
,
0x65
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x62
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x73
,
0x18
,
0x03
,
0x20
,
0x03
,
0x28
,
0x09
,
0x52
,
0x06
,
0x62
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x73
,
0x12
,
0x35
,
0x0a
,
0x0c
,
0x62
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x52
,
0x65
,
0x73
,
0x18
,
0x04
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x11
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x52
,
0x65
,
0x73
,
0x75
,
0x6c
,
0x74
,
0x52
,
0x0c
,
0x62
,
0x6f
,
0x61
,
0x72
,
0x64
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x52
,
0x65
,
0x73
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x74
,
0x61
,
0x74
,
0x75
,
0x73
,
0x18
,
0x06
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x73
,
0x74
,
0x61
,
0x74
,
0x75
,
0x73
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x61
,
0x64
,
0x64
,
0x72
,
0x65
,
0x73
,
0x73
,
0x18
,
0x07
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x07
,
0x61
,
0x64
,
0x64
,
0x72
,
0x65
,
0x73
,
0x73
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x68
,
0x65
,
0x69
,
0x67
,
0x68
,
0x74
,
0x18
,
0x08
,
0x20
,
0x01
,
0x28
,
0x03
,
0x52
,
0x06
,
0x68
,
0x65
,
0x69
,
0x67
,
0x68
,
0x74
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x78
,
0x18
,
0x09
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x05
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x78
,
0x12
,
0x1e
,
0x0a
,
0x0a
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x44
,
0x18
,
0x0a
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0a
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x44
,
0x22
,
0xd6
,
0x02
,
0x0a
,
0x0c
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x12
,
0x0a
,
0x04
,
0x79
,
0x65
,
0x61
,
0x72
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x04
,
0x79
,
0x65
,
0x61
,
0x72
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x6d
,
0x6f
,
0x6e
,
0x74
,
0x68
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x05
,
0x6d
,
0x6f
,
0x6e
,
0x74
,
0x68
,
0x12
,
0x10
,
0x0a
,
0x03
,
0x64
,
0x61
,
0x79
,
0x18
,
0x03
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x03
,
0x64
,
0x61
,
0x79
,
0x12
,
0x1e
,
0x0a
,
0x0a
,
0x69
,
0x74
,
0x65
,
0x6d
,
0x54
,
0x78
,
0x48
,
0x61
,
0x73
,
0x68
,
0x18
,
0x04
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0a
,
0x69
,
0x74
,
0x65
,
0x6d
,
0x54
,
0x78
,
0x48
,
0x61
,
0x73
,
0x68
,
0x12
,
0x12
,
0x0a
,
0x04
,
0x65
,
0x78
,
0x65
,
0x63
,
0x18
,
0x05
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x04
,
0x65
,
0x78
,
0x65
,
0x63
,
0x12
,
0x20
,
0x0a
,
0x0b
,
0x64
,
0x65
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x69
,
0x6f
,
0x6e
,
0x18
,
0x07
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0b
,
0x64
,
0x65
,
0x73
,
0x63
,
0x72
,
0x69
,
0x70
,
0x74
,
0x69
,
0x6f
,
0x6e
,
0x12
,
0x2a
,
0x0a
,
0x10
,
0x73
,
0x74
,
0x61
,
0x72
,
0x74
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x48
,
0x65
,
0x69
,
0x67
,
0x68
,
0x74
,
0x18
,
0x0c
,
0x20
,
0x01
,
0x28
,
0x03
,
0x52
,
0x10
,
0x73
,
0x74
,
0x61
,
0x72
,
0x74
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x48
,
0x65
,
0x69
,
0x67
,
0x68
,
0x74
,
0x12
,
0x26
,
0x0a
,
0x0e
,
0x65
,
0x6e
,
0x64
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x48
,
0x65
,
0x69
,
0x67
,
0x68
,
0x74
,
0x18
,
0x0d
,
0x20
,
0x01
,
0x28
,
0x03
,
0x52
,
0x0e
,
0x65
,
0x6e
,
0x64
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x48
,
0x65
,
0x69
,
0x67
,
0x68
,
0x74
,
0x12
,
0x2e
,
0x0a
,
0x12
,
0x72
,
0x65
,
0x61
,
0x6c
,
0x45
,
0x6e
,
0x64
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x48
,
0x65
,
0x69
,
0x67
,
0x68
,
0x74
,
0x18
,
0x0e
,
0x20
,
0x01
,
0x28
,
0x03
,
0x52
,
0x12
,
0x72
,
0x65
,
0x61
,
0x6c
,
0x45
,
0x6e
,
0x64
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x48
,
0x65
,
0x69
,
0x67
,
0x68
,
0x74
,
0x12
,
0x30
,
0x0a
,
0x13
,
0x70
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x4e
,
0x65
,
0x65
,
0x64
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x4e
,
0x75
,
0x6d
,
0x18
,
0x0f
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x13
,
0x70
,
0x72
,
0x6f
,
0x6a
,
0x65
,
0x63
,
0x74
,
0x4e
,
0x65
,
0x65
,
0x64
,
0x42
,
0x6c
,
0x6f
,
0x63
,
0x6b
,
0x4e
,
0x75
,
0x6d
,
0x22
,
0x34
,
0x0a
,
0x12
,
0x52
,
0x65
,
0x76
,
0x6f
,
0x6b
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x1e
,
0x0a
,
0x0a
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x44
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0a
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x44
,
0x22
,
0x7b
,
0x0a
,
0x10
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x1e
,
0x0a
,
0x0a
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x44
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0a
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x44
,
0x12
,
0x18
,
0x0a
,
0x07
,
0x61
,
0x70
,
0x70
,
0x72
,
0x6f
,
0x76
,
0x65
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x08
,
0x52
,
0x07
,
0x61
,
0x70
,
0x70
,
0x72
,
0x6f
,
0x76
,
0x65
,
0x12
,
0x2d
,
0x0a
,
0x04
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x18
,
0x03
,
0x20
,
0x01
,
0x28
,
0x0e
,
0x32
,
0x19
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x41
,
0x75
,
0x74
,
0x6f
,
0x6e
,
0x6f
,
0x6d
,
0x79
,
0x56
,
0x6f
,
0x74
,
0x65
,
0x4f
,
0x70
,
0x74
,
0x69
,
0x6f
,
0x6e
,
0x52
,
0x04
,
0x76
,
0x6f
,
0x74
,
0x65
,
0x22
,
0x37
,
0x0a
,
0x15
,
0x54
,
0x65
,
0x72
,
0x6d
,
0x69
,
0x6e
,
0x61
,
0x74
,
0x65
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x1e
,
0x0a
,
0x0a
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x44
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x0a
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x44
,
0x22
,
0x7d
,
0x0a
,
0x13
,
0x52
,
0x65
,
0x63
,
0x65
,
0x69
,
0x70
,
0x74
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x2f
,
0x0a
,
0x04
,
0x70
,
0x72
,
0x65
,
0x76
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1b
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x41
,
0x75
,
0x74
,
0x6f
,
0x6e
,
0x6f
,
0x6d
,
0x79
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x52
,
0x04
,
0x70
,
0x72
,
0x65
,
0x76
,
0x12
,
0x35
,
0x0a
,
0x07
,
0x63
,
0x75
,
0x72
,
0x72
,
0x65
,
0x6e
,
0x74
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1b
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x41
,
0x75
,
0x74
,
0x6f
,
0x6e
,
0x6f
,
0x6d
,
0x79
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x52
,
0x07
,
0x63
,
0x75
,
0x72
,
0x72
,
0x65
,
0x6e
,
0x74
,
0x22
,
0x68
,
0x0a
,
0x11
,
0x4c
,
0x6f
,
0x63
,
0x61
,
0x6c
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x37
,
0x0a
,
0x08
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x0b
,
0x32
,
0x1b
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x41
,
0x75
,
0x74
,
0x6f
,
0x6e
,
0x6f
,
0x6d
,
0x79
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x52
,
0x08
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x1a
,
0x0a
,
0x08
,
0x63
,
0x6f
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x73
,
0x18
,
0x02
,
0x20
,
0x03
,
0x28
,
0x09
,
0x52
,
0x08
,
0x63
,
0x6f
,
0x6d
,
0x6d
,
0x65
,
0x6e
,
0x74
,
0x73
,
0x22
,
0xa4
,
0x01
,
0x0a
,
0x14
,
0x52
,
0x65
,
0x71
,
0x51
,
0x75
,
0x65
,
0x72
,
0x79
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x73
,
0x74
,
0x61
,
0x74
,
0x75
,
0x73
,
0x18
,
0x01
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x06
,
0x73
,
0x74
,
0x61
,
0x74
,
0x75
,
0x73
,
0x12
,
0x12
,
0x0a
,
0x04
,
0x61
,
0x64
,
0x64
,
0x72
,
0x18
,
0x02
,
0x20
,
0x01
,
0x28
,
0x09
,
0x52
,
0x04
,
0x61
,
0x64
,
0x64
,
0x72
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x63
,
0x6f
,
0x75
,
0x6e
,
0x74
,
0x18
,
0x03
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x05
,
0x63
,
0x6f
,
0x75
,
0x6e
,
0x74
,
0x12
,
0x1c
,
0x0a
,
0x09
,
0x64
,
0x69
,
0x72
,
0x65
,
0x63
,
0x74
,
0x69
,
0x6f
,
0x6e
,
0x18
,
0x04
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x09
,
0x64
,
0x69
,
0x72
,
0x65
,
0x63
,
0x74
,
0x69
,
0x6f
,
0x6e
,
0x12
,
0x16
,
0x0a
,
0x06
,
0x68
,
0x65
,
0x69
,
0x67
,
0x68
,
0x74
,
0x18
,
0x05
,
0x20
,
0x01
,
0x28
,
0x03
,
0x52
,
0x06
,
0x68
,
0x65
,
0x69
,
0x67
,
0x68
,
0x74
,
0x12
,
0x14
,
0x0a
,
0x05
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x78
,
0x18
,
0x06
,
0x20
,
0x01
,
0x28
,
0x05
,
0x52
,
0x05
,
0x69
,
0x6e
,
0x64
,
0x65
,
0x78
,
0x22
,
0x53
,
0x0a
,
0x16
,
0x52
,
0x65
,
0x70
,
0x6c
,
0x79
,
0x51
,
0x75
,
0x65
,
0x72
,
0x79
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x12
,
0x39
,
0x0a
,
0x09
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x73
,
0x18
,
0x01
,
0x20
,
0x03
,
0x28
,
0x0b
,
0x32
,
0x1b
,
0x2e
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x2e
,
0x41
,
0x75
,
0x74
,
0x6f
,
0x6e
,
0x6f
,
0x6d
,
0x79
,
0x50
,
0x72
,
0x6f
,
0x70
,
0x6f
,
0x73
,
0x61
,
0x6c
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x52
,
0x09
,
0x70
,
0x72
,
0x6f
,
0x70
,
0x49
,
0x74
,
0x65
,
0x6d
,
0x73
,
0x42
,
0x0a
,
0x5a
,
0x08
,
0x2e
,
0x2e
,
0x2f
,
0x74
,
0x79
,
0x70
,
0x65
,
0x73
,
0x62
,
0x06
,
0x70
,
0x72
,
0x6f
,
0x74
,
0x6f
,
0x33
,
}
var
(
file_item_proto_rawDescOnce
sync
.
Once
file_item_proto_rawDescData
=
file_item_proto_rawDesc
)
func
file_item_proto_rawDescGZIP
()
[]
byte
{
file_item_proto_rawDescOnce
.
Do
(
func
()
{
file_item_proto_rawDescData
=
protoimpl
.
X
.
CompressGZIP
(
file_item_proto_rawDescData
)
})
return
file_item_proto_rawDescData
}
var
file_item_proto_msgTypes
=
make
([]
protoimpl
.
MessageInfo
,
9
)
var
file_item_proto_goTypes
=
[]
interface
{}{
(
*
AutonomyProposalItem
)(
nil
),
// 0: types.AutonomyProposalItem
(
*
ProposalItem
)(
nil
),
// 1: types.ProposalItem
(
*
RevokeProposalItem
)(
nil
),
// 2: types.RevokeProposalItem
(
*
VoteProposalItem
)(
nil
),
// 3: types.VoteProposalItem
(
*
TerminateProposalItem
)(
nil
),
// 4: types.TerminateProposalItem
(
*
ReceiptProposalItem
)(
nil
),
// 5: types.ReceiptProposalItem
(
*
LocalProposalItem
)(
nil
),
// 6: types.LocalProposalItem
(
*
ReqQueryProposalItem
)(
nil
),
// 7: types.ReqQueryProposalItem
(
*
ReplyQueryProposalItem
)(
nil
),
// 8: types.ReplyQueryProposalItem
(
*
RuleConfig
)(
nil
),
// 9: types.RuleConfig
(
*
VoteResult
)(
nil
),
// 10: types.VoteResult
(
AutonomyVoteOption
)(
0
),
// 11: types.AutonomyVoteOption
}
var
file_item_proto_depIdxs
=
[]
int32
{
1
,
// 0: types.AutonomyProposalItem.propItem:type_name -> types.ProposalItem
9
,
// 1: types.AutonomyProposalItem.curRule:type_name -> types.RuleConfig
10
,
// 2: types.AutonomyProposalItem.boardVoteRes:type_name -> types.VoteResult
11
,
// 3: types.VoteProposalItem.vote:type_name -> types.AutonomyVoteOption
0
,
// 4: types.ReceiptProposalItem.prev:type_name -> types.AutonomyProposalItem
0
,
// 5: types.ReceiptProposalItem.current:type_name -> types.AutonomyProposalItem
0
,
// 6: types.LocalProposalItem.propItem:type_name -> types.AutonomyProposalItem
0
,
// 7: types.ReplyQueryProposalItem.propItems:type_name -> types.AutonomyProposalItem
8
,
// [8:8] is the sub-list for method output_type
8
,
// [8:8] is the sub-list for method input_type
8
,
// [8:8] is the sub-list for extension type_name
8
,
// [8:8] is the sub-list for extension extendee
0
,
// [0:8] is the sub-list for field type_name
}
func
init
()
{
file_item_proto_init
()
}
func
file_item_proto_init
()
{
if
File_item_proto
!=
nil
{
return
}
file_lcommon_proto_init
()
if
!
protoimpl
.
UnsafeEnabled
{
file_item_proto_msgTypes
[
0
]
.
Exporter
=
func
(
v
interface
{},
i
int
)
interface
{}
{
switch
v
:=
v
.
(
*
AutonomyProposalItem
);
i
{
case
0
:
return
&
v
.
state
case
1
:
return
&
v
.
sizeCache
case
2
:
return
&
v
.
unknownFields
default
:
return
nil
}
}
file_item_proto_msgTypes
[
1
]
.
Exporter
=
func
(
v
interface
{},
i
int
)
interface
{}
{
switch
v
:=
v
.
(
*
ProposalItem
);
i
{
case
0
:
return
&
v
.
state
case
1
:
return
&
v
.
sizeCache
case
2
:
return
&
v
.
unknownFields
default
:
return
nil
}
}
file_item_proto_msgTypes
[
2
]
.
Exporter
=
func
(
v
interface
{},
i
int
)
interface
{}
{
switch
v
:=
v
.
(
*
RevokeProposalItem
);
i
{
case
0
:
return
&
v
.
state
case
1
:
return
&
v
.
sizeCache
case
2
:
return
&
v
.
unknownFields
default
:
return
nil
}
}
file_item_proto_msgTypes
[
3
]
.
Exporter
=
func
(
v
interface
{},
i
int
)
interface
{}
{
switch
v
:=
v
.
(
*
VoteProposalItem
);
i
{
case
0
:
return
&
v
.
state
case
1
:
return
&
v
.
sizeCache
case
2
:
return
&
v
.
unknownFields
default
:
return
nil
}
}
file_item_proto_msgTypes
[
4
]
.
Exporter
=
func
(
v
interface
{},
i
int
)
interface
{}
{
switch
v
:=
v
.
(
*
TerminateProposalItem
);
i
{
case
0
:
return
&
v
.
state
case
1
:
return
&
v
.
sizeCache
case
2
:
return
&
v
.
unknownFields
default
:
return
nil
}
}
file_item_proto_msgTypes
[
5
]
.
Exporter
=
func
(
v
interface
{},
i
int
)
interface
{}
{
switch
v
:=
v
.
(
*
ReceiptProposalItem
);
i
{
case
0
:
return
&
v
.
state
case
1
:
return
&
v
.
sizeCache
case
2
:
return
&
v
.
unknownFields
default
:
return
nil
}
}
file_item_proto_msgTypes
[
6
]
.
Exporter
=
func
(
v
interface
{},
i
int
)
interface
{}
{
switch
v
:=
v
.
(
*
LocalProposalItem
);
i
{
case
0
:
return
&
v
.
state
case
1
:
return
&
v
.
sizeCache
case
2
:
return
&
v
.
unknownFields
default
:
return
nil
}
}
file_item_proto_msgTypes
[
7
]
.
Exporter
=
func
(
v
interface
{},
i
int
)
interface
{}
{
switch
v
:=
v
.
(
*
ReqQueryProposalItem
);
i
{
case
0
:
return
&
v
.
state
case
1
:
return
&
v
.
sizeCache
case
2
:
return
&
v
.
unknownFields
default
:
return
nil
}
}
file_item_proto_msgTypes
[
8
]
.
Exporter
=
func
(
v
interface
{},
i
int
)
interface
{}
{
switch
v
:=
v
.
(
*
ReplyQueryProposalItem
);
i
{
case
0
:
return
&
v
.
state
case
1
:
return
&
v
.
sizeCache
case
2
:
return
&
v
.
unknownFields
default
:
return
nil
}
}
}
type
x
struct
{}
out
:=
protoimpl
.
TypeBuilder
{
File
:
protoimpl
.
DescBuilder
{
GoPackagePath
:
reflect
.
TypeOf
(
x
{})
.
PkgPath
(),
RawDescriptor
:
file_item_proto_rawDesc
,
NumEnums
:
0
,
NumMessages
:
9
,
NumExtensions
:
0
,
NumServices
:
0
,
},
GoTypes
:
file_item_proto_goTypes
,
DependencyIndexes
:
file_item_proto_depIdxs
,
MessageInfos
:
file_item_proto_msgTypes
,
}
.
Build
()
File_item_proto
=
out
.
File
file_item_proto_rawDesc
=
nil
file_item_proto_goTypes
=
nil
file_item_proto_depIdxs
=
nil
}
plugin/dapp/autonomy/types/types.go
View file @
a2907e13
...
@@ -15,6 +15,8 @@ var name string
...
@@ -15,6 +15,8 @@ var name string
var
(
var
(
//ForkAutonomyDelRule fork for delete boards member rules
//ForkAutonomyDelRule fork for delete boards member rules
ForkAutonomyDelRule
=
"ForkAutonomyDelRule"
ForkAutonomyDelRule
=
"ForkAutonomyDelRule"
//ForkAutonomyEnableItem fork for add autonomy item support
ForkAutonomyEnableItem
=
"ForkAutonomyEnableItem"
)
)
func
init
()
{
func
init
()
{
...
@@ -28,6 +30,7 @@ func init() {
...
@@ -28,6 +30,7 @@ func init() {
func
InitFork
(
cfg
*
types
.
Chain33Config
)
{
func
InitFork
(
cfg
*
types
.
Chain33Config
)
{
cfg
.
RegisterDappFork
(
AutonomyX
,
"Enable"
,
0
)
cfg
.
RegisterDappFork
(
AutonomyX
,
"Enable"
,
0
)
cfg
.
RegisterDappFork
(
AutonomyX
,
ForkAutonomyDelRule
,
9500000
)
cfg
.
RegisterDappFork
(
AutonomyX
,
ForkAutonomyDelRule
,
9500000
)
cfg
.
RegisterDappFork
(
AutonomyX
,
ForkAutonomyEnableItem
,
10000000
)
}
}
//InitExecutor ...
//InitExecutor ...
...
@@ -78,6 +81,11 @@ func (a *AutonomyType) GetLogMap() map[int64]*types.LogInfo {
...
@@ -78,6 +81,11 @@ func (a *AutonomyType) GetLogMap() map[int64]*types.LogInfo {
TyLogRvkPropChange
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalChange
{}),
Name
:
"LogRvkPropChange"
},
TyLogRvkPropChange
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalChange
{}),
Name
:
"LogRvkPropChange"
},
TyLogVotePropChange
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalChange
{}),
Name
:
"LogVotePropChange"
},
TyLogVotePropChange
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalChange
{}),
Name
:
"LogVotePropChange"
},
TyLogTmintPropChange
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalChange
{}),
Name
:
"LogTmintPropChange"
},
TyLogTmintPropChange
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalChange
{}),
Name
:
"LogTmintPropChange"
},
TyLogPropItem
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalItem
{}),
Name
:
"LogPropItem"
},
TyLogRvkPropItem
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalItem
{}),
Name
:
"LogRvkPropItem"
},
TyLogVotePropItem
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalItem
{}),
Name
:
"LogVotePropItem"
},
TyLogTmintPropItem
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalItem
{}),
Name
:
"LogTmintPropItem"
},
}
}
}
}
...
@@ -112,5 +120,10 @@ func (a *AutonomyType) GetTypeMap() map[string]int32 {
...
@@ -112,5 +120,10 @@ func (a *AutonomyType) GetTypeMap() map[string]int32 {
"RvkPropChange"
:
AutonomyActionRvkPropChange
,
"RvkPropChange"
:
AutonomyActionRvkPropChange
,
"VotePropChange"
:
AutonomyActionVotePropChange
,
"VotePropChange"
:
AutonomyActionVotePropChange
,
"TmintPropChange"
:
AutonomyActionTmintPropChange
,
"TmintPropChange"
:
AutonomyActionTmintPropChange
,
"PropItem"
:
AutonomyActionPropItem
,
"RvkPropItem"
:
AutonomyActionRvkPropItem
,
"VotePropItem"
:
AutonomyActionVotePropItem
,
"TmintPropItem"
:
AutonomyActionTmintPropItem
,
}
}
}
}
plugin/dapp/cross2eth/cmd/build/paracrosstestcase.sh
View file @
a2907e13
...
@@ -426,7 +426,7 @@ function para_create_nodegroup() {
...
@@ -426,7 +426,7 @@ function para_create_nodegroup() {
echo
"=========== # para chain approve node group ============="
echo
"=========== # para chain approve node group ============="
##approve
##approve
txhash
=
$(${
PARA_CLI
}
send para nodegroup approve
-i
"
$id
"
-c
6
-k
0xc34b5d9d44ac7b754806f761d3d4d2c4fe5214f6b074c19f069c4f5c2a29c8cc
)
txhash
=
$(${
PARA_CLI
}
send para nodegroup approve
-i
"
$id
"
-
a
""
-
c
6
-k
0xc34b5d9d44ac7b754806f761d3d4d2c4fe5214f6b074c19f069c4f5c2a29c8cc
)
echo
"tx=
$txhash
"
echo
"tx=
$txhash
"
query_tx
"
${
PARA_CLI
}
"
"
${
txhash
}
"
query_tx
"
${
PARA_CLI
}
"
"
${
txhash
}
"
...
...
plugin/dapp/mix/executor/config.go
View file @
a2907e13
...
@@ -6,7 +6,6 @@ package executor
...
@@ -6,7 +6,6 @@ package executor
import
(
import
(
dbm
"github.com/33cn/chain33/common/db"
dbm
"github.com/33cn/chain33/common/db"
manager
"github.com/33cn/chain33/system/dapp/manage/types"
"github.com/33cn/chain33/types"
"github.com/33cn/chain33/types"
mixTy
"github.com/33cn/plugin/plugin/dapp/mix/types"
mixTy
"github.com/33cn/plugin/plugin/dapp/mix/types"
"github.com/pkg/errors"
"github.com/pkg/errors"
...
@@ -14,8 +13,8 @@ import (
...
@@ -14,8 +13,8 @@ import (
// IsSuperManager is supper manager or not
// IsSuperManager is supper manager or not
func
isSuperManager
(
cfg
*
types
.
Chain33Config
,
addr
string
)
bool
{
func
isSuperManager
(
cfg
*
types
.
Chain33Config
,
addr
string
)
bool
{
confM
anager
:=
types
.
ConfSub
(
cfg
,
manager
.
Manage
X
)
confM
ix
:=
types
.
ConfSub
(
cfg
,
mixTy
.
Mix
X
)
for
_
,
m
:=
range
confM
anager
.
GStrList
(
"superManager
"
)
{
for
_
,
m
:=
range
confM
ix
.
GStrList
(
"mixApprs
"
)
{
if
addr
==
m
{
if
addr
==
m
{
return
true
return
true
}
}
...
...
plugin/dapp/paracross/cmd/build/testcase.sh
View file @
a2907e13
...
@@ -544,7 +544,7 @@ function para_create_nodegroup_gamechain() {
...
@@ -544,7 +544,7 @@ function para_create_nodegroup_gamechain() {
echo
"=========== # game para chain approve node group ============="
echo
"=========== # game para chain approve node group ============="
##approve
##approve
txhash
=
$(${
CLI
}
--paraName
user.p.game. send para nodegroup approve
-i
"
$id
"
-c
5
-k
"
${
SUPER_KEY
}
"
)
txhash
=
$(${
CLI
}
--paraName
user.p.game. send para nodegroup approve
-i
"
$id
"
-
a
""
-
c
5
-k
"
${
SUPER_KEY
}
"
)
echo
"tx=
$txhash
"
echo
"tx=
$txhash
"
query_tx
"
${
PARA_CLI5
}
"
"
${
txhash
}
"
query_tx
"
${
PARA_CLI5
}
"
"
${
txhash
}
"
...
@@ -718,7 +718,7 @@ function para_create_nodegroup() {
...
@@ -718,7 +718,7 @@ function para_create_nodegroup() {
echo
"=========== # para chain approve node group ============="
echo
"=========== # para chain approve node group ============="
##approve
##approve
txhash
=
$(${
PARA_CLI
}
send para nodegroup approve
-i
"
$id
"
-c
6
-k
"
${
SUPER_KEY
}
"
)
txhash
=
$(${
PARA_CLI
}
send para nodegroup approve
-i
"
$id
"
-
a
""
-
c
6
-k
"
${
SUPER_KEY
}
"
)
echo
"tx=
$txhash
"
echo
"tx=
$txhash
"
query_tx
"
${
PARA_CLI
}
"
"
${
txhash
}
"
query_tx
"
${
PARA_CLI
}
"
"
${
txhash
}
"
...
@@ -758,7 +758,7 @@ function para_create_nodegroup() {
...
@@ -758,7 +758,7 @@ function para_create_nodegroup() {
fi
fi
##approve
##approve
txhash
=
$(${
PARA_CLI
}
send para nodegroup approve
-i
"
$modifyid
"
-c
5
-k
"
${
SUPER_KEY
}
"
)
txhash
=
$(${
PARA_CLI
}
send para nodegroup approve
-i
"
$modifyid
"
-
a
""
-
c
5
-k
"
${
SUPER_KEY
}
"
)
echo
"tx=
$txhash
"
echo
"tx=
$txhash
"
query_tx
"
${
PARA_CLI
}
"
"
${
txhash
}
"
query_tx
"
${
PARA_CLI
}
"
"
${
txhash
}
"
...
@@ -850,7 +850,7 @@ function para_create_supervision_nodegroup_quit() {
...
@@ -850,7 +850,7 @@ function para_create_supervision_nodegroup_quit() {
echo
"=========== # para chain approve supervision node group 28 ============="
echo
"=========== # para chain approve supervision node group 28 ============="
##approve
##approve
txhash
=
$(${
PARA_CLI
}
send para supervision_node approve
-i
"
$id
"
-c
6
-k
"
${
SUPER_KEY
}
"
)
txhash
=
$(${
PARA_CLI
}
send para supervision_node approve
-i
"
$id
"
-
a
""
-
c
6
-k
"
${
SUPER_KEY
}
"
)
echo
"tx=
$txhash
"
echo
"tx=
$txhash
"
query_tx
"
${
PARA_CLI
}
"
"
${
txhash
}
"
query_tx
"
${
PARA_CLI
}
"
"
${
txhash
}
"
...
@@ -865,7 +865,7 @@ function para_create_supervision_nodegroup_quit() {
...
@@ -865,7 +865,7 @@ function para_create_supervision_nodegroup_quit() {
query_tx
"
${
PARA_CLI
}
"
"
${
txhash
}
"
query_tx
"
${
PARA_CLI
}
"
"
${
txhash
}
"
check_balance_1ka
"
$balancePre
"
-6
check_balance_1ka
"
$balancePre
"
-6
check_supervision_node_group_list 3
"
$
id
"
check_supervision_node_group_list 3
"
$
txhash
"
check_supervision_node_addr_status 3
"
$ADDR_28
"
check_supervision_node_addr_status 3
"
$ADDR_28
"
check_supervision_node_addrs null
check_supervision_node_addrs null
echo
"=========== #
${
FUNCNAME
}
end ============="
echo
"=========== #
${
FUNCNAME
}
end ============="
...
@@ -885,7 +885,7 @@ function para_create_supervision_nodegroup_approve() {
...
@@ -885,7 +885,7 @@ function para_create_supervision_nodegroup_approve() {
echo
"=========== # para chain approve supervision node group 28 ============="
echo
"=========== # para chain approve supervision node group 28 ============="
##approve
##approve
txhash
=
$(${
PARA_CLI
}
send para supervision_node approve
-i
"
$id
"
-c
6
-k
"
${
SUPER_KEY
}
"
)
txhash
=
$(${
PARA_CLI
}
send para supervision_node approve
-i
"
$id
"
-
a
""
-
c
6
-k
"
${
SUPER_KEY
}
"
)
echo
"tx=
$txhash
"
echo
"tx=
$txhash
"
query_tx
"
${
PARA_CLI
}
"
"
${
txhash
}
"
query_tx
"
${
PARA_CLI
}
"
"
${
txhash
}
"
...
...
plugin/dapp/paracross/commands/paracross.go
View file @
a2907e13
...
@@ -363,7 +363,6 @@ func addNodeJoinFlags(cmd *cobra.Command) {
...
@@ -363,7 +363,6 @@ func addNodeJoinFlags(cmd *cobra.Command) {
_
=
cmd
.
MarkFlagRequired
(
"addr"
)
_
=
cmd
.
MarkFlagRequired
(
"addr"
)
cmd
.
Flags
()
.
Float64P
(
"coins"
,
"c"
,
0
,
"frozen coins amount, should not less nodegroup's setting"
)
cmd
.
Flags
()
.
Float64P
(
"coins"
,
"c"
,
0
,
"frozen coins amount, should not less nodegroup's setting"
)
_
=
cmd
.
MarkFlagRequired
(
"coins"
)
}
}
...
@@ -908,7 +907,6 @@ func addNodeGroupApplyCmdFlags(cmd *cobra.Command) {
...
@@ -908,7 +907,6 @@ func addNodeGroupApplyCmdFlags(cmd *cobra.Command) {
cmd
.
Flags
()
.
StringP
(
"blspubs"
,
"p"
,
""
,
"bls sign pub key for addr's private key,split by ',' (optional)"
)
cmd
.
Flags
()
.
StringP
(
"blspubs"
,
"p"
,
""
,
"bls sign pub key for addr's private key,split by ',' (optional)"
)
cmd
.
Flags
()
.
Float64P
(
"coins"
,
"c"
,
0
,
"coins amount to frozen, not less config"
)
cmd
.
Flags
()
.
Float64P
(
"coins"
,
"c"
,
0
,
"coins amount to frozen, not less config"
)
_
=
cmd
.
MarkFlagRequired
(
"coins"
)
}
}
...
@@ -946,12 +944,24 @@ func nodeGroupApply(cmd *cobra.Command, args []string) {
...
@@ -946,12 +944,24 @@ func nodeGroupApply(cmd *cobra.Command, args []string) {
ctx
.
RunWithoutMarshal
()
ctx
.
RunWithoutMarshal
()
}
}
func
nodeGroupApproveCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"approve"
,
Short
:
"approve for para chain's super node group application"
,
Run
:
nodeGroupApprove
,
}
addNodeGroupApproveCmdFlags
(
cmd
)
return
cmd
}
func
addNodeGroupApproveCmdFlags
(
cmd
*
cobra
.
Command
)
{
func
addNodeGroupApproveCmdFlags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
StringP
(
"id"
,
"i"
,
""
,
"apply id for nodegroup "
)
cmd
.
Flags
()
.
StringP
(
"id"
,
"i"
,
""
,
"apply id for nodegroup "
)
_
=
cmd
.
MarkFlagRequired
(
"id"
)
_
=
cmd
.
MarkFlagRequired
(
"id"
)
cmd
.
Flags
()
.
StringP
(
"autonomyId"
,
"a"
,
""
,
"autonomy approved id "
)
_
=
cmd
.
MarkFlagRequired
(
"autonomyId"
)
cmd
.
Flags
()
.
Float64P
(
"coins"
,
"c"
,
0
,
"coins amount to frozen, not less config"
)
cmd
.
Flags
()
.
Float64P
(
"coins"
,
"c"
,
0
,
"coins amount to frozen, not less config"
)
_
=
cmd
.
MarkFlagRequired
(
"coins"
)
}
}
...
@@ -959,6 +969,7 @@ func nodeGroupApprove(cmd *cobra.Command, args []string) {
...
@@ -959,6 +969,7 @@ func nodeGroupApprove(cmd *cobra.Command, args []string) {
paraName
,
_
:=
cmd
.
Flags
()
.
GetString
(
"paraName"
)
paraName
,
_
:=
cmd
.
Flags
()
.
GetString
(
"paraName"
)
id
,
_
:=
cmd
.
Flags
()
.
GetString
(
"id"
)
id
,
_
:=
cmd
.
Flags
()
.
GetString
(
"id"
)
coins
,
_
:=
cmd
.
Flags
()
.
GetFloat64
(
"coins"
)
coins
,
_
:=
cmd
.
Flags
()
.
GetFloat64
(
"coins"
)
autonomyId
,
_
:=
cmd
.
Flags
()
.
GetString
(
"autonomyId"
)
if
!
strings
.
HasPrefix
(
paraName
,
"user.p"
)
{
if
!
strings
.
HasPrefix
(
paraName
,
"user.p"
)
{
_
,
_
=
fmt
.
Fprintln
(
os
.
Stderr
,
"paraName is not right, paraName format like `user.p.guodun.`"
)
_
,
_
=
fmt
.
Fprintln
(
os
.
Stderr
,
"paraName is not right, paraName format like `user.p.guodun.`"
)
...
@@ -975,7 +986,7 @@ func nodeGroupApprove(cmd *cobra.Command, args []string) {
...
@@ -975,7 +986,7 @@ func nodeGroupApprove(cmd *cobra.Command, args []string) {
fmt
.
Fprintln
(
os
.
Stderr
,
errors
.
Wrapf
(
err
,
"FormatFloatDisplay2Value.coins"
))
fmt
.
Fprintln
(
os
.
Stderr
,
errors
.
Wrapf
(
err
,
"FormatFloatDisplay2Value.coins"
))
return
return
}
}
payload
:=
&
pt
.
ParaNodeGroupConfig
{
Title
:
paraName
,
Op
:
2
,
Id
:
id
,
CoinsFrozen
:
coinsInt64
}
payload
:=
&
pt
.
ParaNodeGroupConfig
{
Title
:
paraName
,
Op
:
2
,
Id
:
id
,
CoinsFrozen
:
coinsInt64
,
AutonomyItemID
:
autonomyId
}
params
:=
&
rpctypes
.
CreateTxIn
{
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
getRealExecName
(
paraName
,
pt
.
ParaX
),
Execer
:
getRealExecName
(
paraName
,
pt
.
ParaX
),
ActionName
:
"NodeGroupConfig"
,
ActionName
:
"NodeGroupConfig"
,
...
@@ -986,13 +997,13 @@ func nodeGroupApprove(cmd *cobra.Command, args []string) {
...
@@ -986,13 +997,13 @@ func nodeGroupApprove(cmd *cobra.Command, args []string) {
ctx
.
RunWithoutMarshal
()
ctx
.
RunWithoutMarshal
()
}
}
func
nodeGroup
Approve
Cmd
()
*
cobra
.
Command
{
func
nodeGroup
Quit
Cmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"
approve
"
,
Use
:
"
quit
"
,
Short
:
"
approve
for para chain's super node group application"
,
Short
:
"
quit
for para chain's super node group application"
,
Run
:
nodeGroup
Approve
,
Run
:
nodeGroup
Quit
,
}
}
addNodeGroup
Approve
CmdFlags
(
cmd
)
addNodeGroup
Quit
CmdFlags
(
cmd
)
return
cmd
return
cmd
}
}
...
@@ -1005,6 +1016,7 @@ func addNodeGroupQuitCmdFlags(cmd *cobra.Command) {
...
@@ -1005,6 +1016,7 @@ func addNodeGroupQuitCmdFlags(cmd *cobra.Command) {
func
nodeGroupQuit
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
func
nodeGroupQuit
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
paraName
,
_
:=
cmd
.
Flags
()
.
GetString
(
"paraName"
)
paraName
,
_
:=
cmd
.
Flags
()
.
GetString
(
"paraName"
)
id
,
_
:=
cmd
.
Flags
()
.
GetString
(
"id"
)
id
,
_
:=
cmd
.
Flags
()
.
GetString
(
"id"
)
if
!
strings
.
HasPrefix
(
paraName
,
"user.p"
)
{
if
!
strings
.
HasPrefix
(
paraName
,
"user.p"
)
{
_
,
_
=
fmt
.
Fprintln
(
os
.
Stderr
,
"paraName is not right, paraName format like `user.p.guodun.`"
)
_
,
_
=
fmt
.
Fprintln
(
os
.
Stderr
,
"paraName is not right, paraName format like `user.p.guodun.`"
)
return
return
...
@@ -1021,13 +1033,13 @@ func nodeGroupQuit(cmd *cobra.Command, args []string) {
...
@@ -1021,13 +1033,13 @@ func nodeGroupQuit(cmd *cobra.Command, args []string) {
ctx
.
RunWithoutMarshal
()
ctx
.
RunWithoutMarshal
()
}
}
func
nodeGroup
Quit
Cmd
()
*
cobra
.
Command
{
func
nodeGroup
Modify
Cmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"
quit
"
,
Use
:
"
modify
"
,
Short
:
"
quit for para chain's super node group application
"
,
Short
:
"
modify for para chain's super node group parameters
"
,
Run
:
nodeGroup
Quit
,
Run
:
nodeGroup
Modify
,
}
}
addNodeGroup
Quit
CmdFlags
(
cmd
)
addNodeGroup
Modify
CmdFlags
(
cmd
)
return
cmd
return
cmd
}
}
...
@@ -1066,16 +1078,6 @@ func nodeGroupModify(cmd *cobra.Command, args []string) {
...
@@ -1066,16 +1078,6 @@ func nodeGroupModify(cmd *cobra.Command, args []string) {
ctx
.
RunWithoutMarshal
()
ctx
.
RunWithoutMarshal
()
}
}
func
nodeGroupModifyCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"modify"
,
Short
:
"modify for para chain's super node group parameters"
,
Run
:
nodeGroupModify
,
}
addNodeGroupModifyCmdFlags
(
cmd
)
return
cmd
}
// IsSyncCmd query parachain is sync
// IsSyncCmd query parachain is sync
func
IsSyncCmd
()
*
cobra
.
Command
{
func
IsSyncCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
...
@@ -1645,7 +1647,6 @@ func addSupervisionNodeApplyCmdFlags(cmd *cobra.Command) {
...
@@ -1645,7 +1647,6 @@ func addSupervisionNodeApplyCmdFlags(cmd *cobra.Command) {
cmd
.
Flags
()
.
StringP
(
"blspub"
,
"p"
,
""
,
"bls sign pub key for addr's private key"
)
cmd
.
Flags
()
.
StringP
(
"blspub"
,
"p"
,
""
,
"bls sign pub key for addr's private key"
)
cmd
.
Flags
()
.
Float64P
(
"coins"
,
"c"
,
0
,
"coins amount to frozen, not less config"
)
cmd
.
Flags
()
.
Float64P
(
"coins"
,
"c"
,
0
,
"coins amount to frozen, not less config"
)
_
=
cmd
.
MarkFlagRequired
(
"coins"
)
}
}
func
supervisionNodeApply
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
func
supervisionNodeApply
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
...
@@ -1658,7 +1659,7 @@ func supervisionNodeApply(cmd *cobra.Command, args []string) {
...
@@ -1658,7 +1659,7 @@ func supervisionNodeApply(cmd *cobra.Command, args []string) {
_
,
_
=
fmt
.
Fprintln
(
os
.
Stderr
,
"paraName is not right, paraName format like `user.p.guodun.`"
)
_
,
_
=
fmt
.
Fprintln
(
os
.
Stderr
,
"paraName is not right, paraName format like `user.p.guodun.`"
)
return
return
}
}
payload
:=
&
pt
.
ParaNode
AddrConfig
{
Title
:
paraName
,
Op
:
1
,
Addr
:
addr
,
BlsPubKey
:
blspub
,
CoinsFrozen
:
int64
(
math
.
Trunc
((
coins
+
0.0000001
)
*
1e4
))
*
1e4
}
payload
:=
&
pt
.
ParaNode
GroupConfig
{
Title
:
paraName
,
Op
:
1
,
Addrs
:
addr
,
BlsPubKeys
:
blspub
,
CoinsFrozen
:
int64
(
math
.
Trunc
((
coins
+
0.0000001
)
*
1e4
))
*
1e4
}
params
:=
&
rpctypes
.
CreateTxIn
{
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
getRealExecName
(
paraName
,
pt
.
ParaX
),
Execer
:
getRealExecName
(
paraName
,
pt
.
ParaX
),
ActionName
:
"SupervisionNodeConfig"
,
ActionName
:
"SupervisionNodeConfig"
,
...
@@ -1684,13 +1685,16 @@ func addSupervisionNodeApproveCmdFlags(cmd *cobra.Command) {
...
@@ -1684,13 +1685,16 @@ func addSupervisionNodeApproveCmdFlags(cmd *cobra.Command) {
cmd
.
Flags
()
.
StringP
(
"id"
,
"i"
,
""
,
"apply id for supervision node "
)
cmd
.
Flags
()
.
StringP
(
"id"
,
"i"
,
""
,
"apply id for supervision node "
)
_
=
cmd
.
MarkFlagRequired
(
"id"
)
_
=
cmd
.
MarkFlagRequired
(
"id"
)
cmd
.
Flags
()
.
StringP
(
"autonomyId"
,
"a"
,
""
,
"autonomy approved id "
)
_
=
cmd
.
MarkFlagRequired
(
"autonomyId"
)
cmd
.
Flags
()
.
Float64P
(
"coins"
,
"c"
,
0
,
"coins amount to frozen, not less config"
)
cmd
.
Flags
()
.
Float64P
(
"coins"
,
"c"
,
0
,
"coins amount to frozen, not less config"
)
_
=
cmd
.
MarkFlagRequired
(
"coins"
)
}
}
func
supervisionNodeApprove
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
func
supervisionNodeApprove
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
paraName
,
_
:=
cmd
.
Flags
()
.
GetString
(
"paraName"
)
paraName
,
_
:=
cmd
.
Flags
()
.
GetString
(
"paraName"
)
id
,
_
:=
cmd
.
Flags
()
.
GetString
(
"id"
)
id
,
_
:=
cmd
.
Flags
()
.
GetString
(
"id"
)
autonomyId
,
_
:=
cmd
.
Flags
()
.
GetString
(
"autonomyId"
)
coins
,
_
:=
cmd
.
Flags
()
.
GetFloat64
(
"coins"
)
coins
,
_
:=
cmd
.
Flags
()
.
GetFloat64
(
"coins"
)
if
!
strings
.
HasPrefix
(
paraName
,
"user.p"
)
{
if
!
strings
.
HasPrefix
(
paraName
,
"user.p"
)
{
...
@@ -1698,7 +1702,7 @@ func supervisionNodeApprove(cmd *cobra.Command, args []string) {
...
@@ -1698,7 +1702,7 @@ func supervisionNodeApprove(cmd *cobra.Command, args []string) {
return
return
}
}
payload
:=
&
pt
.
ParaNode
AddrConfig
{
Title
:
paraName
,
Op
:
2
,
Id
:
i
d
,
CoinsFrozen
:
int64
(
math
.
Trunc
((
coins
+
0.0000001
)
*
1e4
))
*
1e4
}
payload
:=
&
pt
.
ParaNode
GroupConfig
{
Title
:
paraName
,
Op
:
2
,
Id
:
id
,
AutonomyItemID
:
autonomyI
d
,
CoinsFrozen
:
int64
(
math
.
Trunc
((
coins
+
0.0000001
)
*
1e4
))
*
1e4
}
params
:=
&
rpctypes
.
CreateTxIn
{
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
getRealExecName
(
paraName
,
pt
.
ParaX
),
Execer
:
getRealExecName
(
paraName
,
pt
.
ParaX
),
ActionName
:
"SupervisionNodeConfig"
,
ActionName
:
"SupervisionNodeConfig"
,
...
@@ -1732,7 +1736,7 @@ func supervisionNodeQuit(cmd *cobra.Command, args []string) {
...
@@ -1732,7 +1736,7 @@ func supervisionNodeQuit(cmd *cobra.Command, args []string) {
_
,
_
=
fmt
.
Fprintln
(
os
.
Stderr
,
"paraName is not right, paraName format like `user.p.guodun.`"
)
_
,
_
=
fmt
.
Fprintln
(
os
.
Stderr
,
"paraName is not right, paraName format like `user.p.guodun.`"
)
return
return
}
}
payload
:=
&
pt
.
ParaNode
AddrConfig
{
Title
:
paraName
,
Op
:
3
,
Addr
:
opAddr
}
payload
:=
&
pt
.
ParaNode
GroupConfig
{
Title
:
paraName
,
Op
:
3
,
Addrs
:
opAddr
}
params
:=
&
rpctypes
.
CreateTxIn
{
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
getRealExecName
(
paraName
,
pt
.
ParaX
),
Execer
:
getRealExecName
(
paraName
,
pt
.
ParaX
),
ActionName
:
"SupervisionNodeConfig"
,
ActionName
:
"SupervisionNodeConfig"
,
...
@@ -1766,7 +1770,7 @@ func supervisionNodeCancel(cmd *cobra.Command, args []string) {
...
@@ -1766,7 +1770,7 @@ func supervisionNodeCancel(cmd *cobra.Command, args []string) {
_
,
_
=
fmt
.
Fprintln
(
os
.
Stderr
,
"paraName is not right, paraName format like `user.p.guodun.`"
)
_
,
_
=
fmt
.
Fprintln
(
os
.
Stderr
,
"paraName is not right, paraName format like `user.p.guodun.`"
)
return
return
}
}
payload
:=
&
pt
.
ParaNode
Addr
Config
{
Title
:
paraName
,
Op
:
4
,
Id
:
id
}
payload
:=
&
pt
.
ParaNode
Group
Config
{
Title
:
paraName
,
Op
:
4
,
Id
:
id
}
params
:=
&
rpctypes
.
CreateTxIn
{
params
:=
&
rpctypes
.
CreateTxIn
{
Execer
:
getRealExecName
(
paraName
,
pt
.
ParaX
),
Execer
:
getRealExecName
(
paraName
,
pt
.
ParaX
),
ActionName
:
"SupervisionNodeConfig"
,
ActionName
:
"SupervisionNodeConfig"
,
...
@@ -1833,7 +1837,7 @@ func supervisionNodeListInfo(cmd *cobra.Command, args []string) {
...
@@ -1833,7 +1837,7 @@ func supervisionNodeListInfo(cmd *cobra.Command, args []string) {
}
}
params
.
Payload
=
types
.
MustPBToJSON
(
&
req
)
params
.
Payload
=
types
.
MustPBToJSON
(
&
req
)
var
res
pt
.
RespParacrossNode
Addr
s
var
res
pt
.
RespParacrossNode
Group
s
ctx
:=
jsonclient
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.Query"
,
params
,
&
res
)
ctx
:=
jsonclient
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.Query"
,
params
,
&
res
)
ctx
.
Run
()
ctx
.
Run
()
}
}
...
...
plugin/dapp/paracross/executor/exec.go
View file @
a2907e13
...
@@ -127,7 +127,7 @@ func (e *Paracross) Exec_ParaBindMiner(payload *pt.ParaBindMinerCmd, tx *types.T
...
@@ -127,7 +127,7 @@ func (e *Paracross) Exec_ParaBindMiner(payload *pt.ParaBindMinerCmd, tx *types.T
}
}
//Exec_SupervisionNodeConfig exec Supervision node config
//Exec_SupervisionNodeConfig exec Supervision node config
func
(
e
*
Paracross
)
Exec_SupervisionNodeConfig
(
payload
*
pt
.
ParaNode
Addr
Config
,
tx
*
types
.
Transaction
,
index
int
)
(
*
types
.
Receipt
,
error
)
{
func
(
e
*
Paracross
)
Exec_SupervisionNodeConfig
(
payload
*
pt
.
ParaNode
Group
Config
,
tx
*
types
.
Transaction
,
index
int
)
(
*
types
.
Receipt
,
error
)
{
a
:=
newAction
(
e
,
tx
)
a
:=
newAction
(
e
,
tx
)
return
a
.
SupervisionNodeConfig
(
payload
)
return
a
.
SupervisionNodeConfig
(
payload
)
}
}
plugin/dapp/paracross/executor/exec_del_local.go
View file @
a2907e13
...
@@ -137,22 +137,22 @@ func (e *Paracross) ExecDelLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig
...
@@ -137,22 +137,22 @@ func (e *Paracross) ExecDelLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig
return
&
set
,
nil
return
&
set
,
nil
}
}
func
(
e
*
Paracross
)
ExecDelLocal_SupervisionNodeConfig
(
payload
*
pt
.
ParaNode
Addr
Config
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
func
(
e
*
Paracross
)
ExecDelLocal_SupervisionNodeConfig
(
payload
*
pt
.
ParaNode
Group
Config
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
var
set
types
.
LocalDBSet
var
set
types
.
LocalDBSet
for
_
,
log
:=
range
receiptData
.
Logs
{
for
_
,
log
:=
range
receiptData
.
Logs
{
if
log
.
Ty
==
pt
.
TyLogParaSupervisionNodeConfig
{
if
log
.
Ty
==
pt
.
TyLogParaSupervisionNodeConfig
{
var
g
pt
.
ReceiptParaNodeConfig
var
g
pt
.
ReceiptParaNode
Group
Config
err
:=
types
.
Decode
(
log
.
Log
,
&
g
)
err
:=
types
.
Decode
(
log
.
Log
,
&
g
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
if
g
.
Prev
!=
nil
{
if
g
.
Prev
!=
nil
{
set
.
KV
=
append
(
set
.
KV
,
&
types
.
KeyValue
{
set
.
KV
=
append
(
set
.
KV
,
&
types
.
KeyValue
{
Key
:
calcLocalSupervisionNodeStatusTitle
(
g
.
Current
.
Title
,
g
.
Prev
.
Status
,
g
.
Current
.
TargetAddr
,
g
.
Current
.
Id
),
Value
:
types
.
Encode
(
g
.
Prev
)})
Key
:
calcLocalSupervisionNodeStatusTitle
(
g
.
Current
.
Title
,
g
.
Prev
.
Status
,
g
.
Current
.
TargetAddr
s
,
g
.
Current
.
Id
),
Value
:
types
.
Encode
(
g
.
Prev
)})
}
}
set
.
KV
=
append
(
set
.
KV
,
&
types
.
KeyValue
{
set
.
KV
=
append
(
set
.
KV
,
&
types
.
KeyValue
{
Key
:
calcLocalSupervisionNodeStatusTitle
(
g
.
Current
.
Title
,
g
.
Current
.
Status
,
g
.
Current
.
TargetAddr
,
g
.
Current
.
Id
),
Value
:
nil
})
Key
:
calcLocalSupervisionNodeStatusTitle
(
g
.
Current
.
Title
,
g
.
Current
.
Status
,
g
.
Current
.
TargetAddr
s
,
g
.
Current
.
Id
),
Value
:
nil
})
}
}
}
}
return
&
set
,
nil
return
&
set
,
nil
...
...
plugin/dapp/paracross/executor/exec_local.go
View file @
a2907e13
...
@@ -141,22 +141,22 @@ func (e *Paracross) ExecLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig, t
...
@@ -141,22 +141,22 @@ func (e *Paracross) ExecLocal_NodeGroupConfig(payload *pt.ParaNodeGroupConfig, t
return
&
set
,
nil
return
&
set
,
nil
}
}
func
(
e
*
Paracross
)
ExecLocal_SupervisionNodeConfig
(
payload
*
pt
.
ParaNode
Addr
Config
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
func
(
e
*
Paracross
)
ExecLocal_SupervisionNodeConfig
(
payload
*
pt
.
ParaNode
Group
Config
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
var
set
types
.
LocalDBSet
var
set
types
.
LocalDBSet
for
_
,
log
:=
range
receiptData
.
Logs
{
for
_
,
log
:=
range
receiptData
.
Logs
{
if
log
.
Ty
==
pt
.
TyLogParaSupervisionNodeConfig
{
if
log
.
Ty
==
pt
.
TyLogParaSupervisionNodeConfig
{
var
g
pt
.
ReceiptParaNodeConfig
var
g
pt
.
ReceiptParaNode
Group
Config
err
:=
types
.
Decode
(
log
.
Log
,
&
g
)
err
:=
types
.
Decode
(
log
.
Log
,
&
g
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
if
g
.
Prev
!=
nil
{
if
g
.
Prev
!=
nil
{
set
.
KV
=
append
(
set
.
KV
,
&
types
.
KeyValue
{
set
.
KV
=
append
(
set
.
KV
,
&
types
.
KeyValue
{
Key
:
calcLocalSupervisionNodeStatusTitle
(
g
.
Current
.
Title
,
g
.
Prev
.
Status
,
g
.
Current
.
TargetAddr
,
g
.
Current
.
Id
),
Value
:
nil
})
Key
:
calcLocalSupervisionNodeStatusTitle
(
g
.
Current
.
Title
,
g
.
Prev
.
Status
,
g
.
Current
.
TargetAddr
s
,
g
.
Current
.
Id
),
Value
:
nil
})
}
}
set
.
KV
=
append
(
set
.
KV
,
&
types
.
KeyValue
{
set
.
KV
=
append
(
set
.
KV
,
&
types
.
KeyValue
{
Key
:
calcLocalSupervisionNodeStatusTitle
(
g
.
Current
.
Title
,
g
.
Current
.
Status
,
g
.
Current
.
TargetAddr
,
g
.
Current
.
Id
),
Value
:
types
.
Encode
(
g
.
Current
)})
Key
:
calcLocalSupervisionNodeStatusTitle
(
g
.
Current
.
Title
,
g
.
Current
.
Status
,
g
.
Current
.
TargetAddr
s
,
g
.
Current
.
Id
),
Value
:
types
.
Encode
(
g
.
Current
)})
}
}
}
}
return
&
set
,
nil
return
&
set
,
nil
...
...
plugin/dapp/paracross/executor/query.go
View file @
a2907e13
...
@@ -281,12 +281,12 @@ func (p *Paracross) Query_ListSupervisionNodeStatusInfo(in *pt.ReqParacrossNodeI
...
@@ -281,12 +281,12 @@ func (p *Paracross) Query_ListSupervisionNodeStatusInfo(in *pt.ReqParacrossNodeI
prefix
=
calcLocalSupervisionNodeStatusTitlePrefix
(
in
.
Title
,
in
.
Status
)
prefix
=
calcLocalSupervisionNodeStatusTitlePrefix
(
in
.
Title
,
in
.
Status
)
}
}
resp
,
err
:=
listNodeStatus
(
p
.
GetLocalDB
(),
prefix
)
resp
,
err
:=
listNode
Group
Status
(
p
.
GetLocalDB
(),
prefix
)
if
err
!=
nil
{
if
err
!=
nil
{
return
resp
,
err
return
resp
,
err
}
}
addrs
:=
resp
.
(
*
pt
.
RespParacrossNode
Addr
s
)
addrs
:=
resp
.
(
*
pt
.
RespParacrossNode
Group
s
)
for
_
,
id
:=
range
addrs
.
Ids
{
for
_
,
id
:=
range
addrs
.
Ids
{
id
.
Id
=
getParaNodeIDSuffix
(
id
.
Id
)
id
.
Id
=
getParaNodeIDSuffix
(
id
.
Id
)
}
}
...
...
plugin/dapp/paracross/executor/superaccount.go
View file @
a2907e13
...
@@ -957,12 +957,42 @@ func (a *action) nodeGroupApproveApply(config *pt.ParaNodeGroupConfig, apply *pt
...
@@ -957,12 +957,42 @@ func (a *action) nodeGroupApproveApply(config *pt.ParaNodeGroupConfig, apply *pt
return
receipt
,
nil
return
receipt
,
nil
}
}
func
(
a
*
action
)
checkApproveOp
(
config
*
pt
.
ParaNodeGroupConfig
)
error
{
cfg
:=
a
.
api
.
GetConfig
()
//fork之后采用 autonomy 检查模式
confManager
:=
types
.
ConfSub
(
cfg
,
manager
.
ManageX
)
autonomyExec
:=
confManager
.
GStr
(
types
.
AutonomyCfgKey
)
if
cfg
.
IsDappFork
(
a
.
height
,
pt
.
ParaX
,
pt
.
ForkParaAutonomySuperGroup
)
&&
len
(
autonomyExec
)
>
0
{
//去autonomy 合约检验是否id approved, 成功 err返回nil
_
,
err
:=
a
.
api
.
QueryChain
(
&
types
.
ChainExecutor
{
Driver
:
autonomyExec
,
FuncName
:
"IsAutonomyApprovedItem"
,
Param
:
types
.
Encode
(
&
types
.
ReqMultiStrings
{
Datas
:
[]
string
{
config
.
AutonomyItemID
,
config
.
Id
}}),
})
if
err
!=
nil
{
return
errors
.
Wrapf
(
err
,
"query autonomy,approveid=%s,hashId=%s"
,
config
.
AutonomyItemID
,
config
.
Id
)
}
return
nil
}
//fork之前检查是否from superManager
if
!
isSuperManager
(
cfg
,
a
.
fromaddr
)
{
return
errors
.
Wrapf
(
types
.
ErrNotAllow
,
"node group approve not super manager:%s"
,
a
.
fromaddr
)
}
return
nil
}
// NodeGroupApprove super addr approve the node group apply
// NodeGroupApprove super addr approve the node group apply
func
(
a
*
action
)
nodeGroupApprove
(
config
*
pt
.
ParaNodeGroupConfig
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
nodeGroupApprove
(
config
*
pt
.
ParaNodeGroupConfig
)
(
*
types
.
Receipt
,
error
)
{
cfg
:=
a
.
api
.
GetConfig
()
cfg
:=
a
.
api
.
GetConfig
()
//只在主链检查
if
!
cfg
.
IsPara
()
&&
!
isSuperManager
(
cfg
,
a
.
fromaddr
)
{
//只在主链检查, 主链检查失败不会同步到平行链,主链成功,平行链默认成功
return
nil
,
errors
.
Wrapf
(
types
.
ErrNotAllow
,
"node group approve not super manager:%s"
,
a
.
fromaddr
)
if
!
cfg
.
IsPara
()
{
err
:=
a
.
checkApproveOp
(
config
)
if
err
!=
nil
{
return
nil
,
err
}
}
}
id
,
err
:=
getNodeGroupID
(
cfg
,
a
.
db
,
config
.
Title
,
a
.
exec
.
GetMainHeight
(),
config
.
Id
)
id
,
err
:=
getNodeGroupID
(
cfg
,
a
.
db
,
config
.
Title
,
a
.
exec
.
GetMainHeight
(),
config
.
Id
)
...
...
plugin/dapp/paracross/executor/supervisionaccount.go
View file @
a2907e13
package
executor
package
executor
import
(
import
(
"strings"
"github.com/33cn/chain33/common"
"github.com/33cn/chain33/common"
dbm
"github.com/33cn/chain33/common/db"
dbm
"github.com/33cn/chain33/common/db"
"github.com/33cn/chain33/types"
"github.com/33cn/chain33/types"
...
@@ -26,8 +28,8 @@ func makeParaSupervisionNodeGroupReceipt(title string, prev, current *types.Conf
...
@@ -26,8 +28,8 @@ func makeParaSupervisionNodeGroupReceipt(title string, prev, current *types.Conf
}
}
}
}
func
makeSupervisionNodeConfigReceipt
(
fromAddr
string
,
config
*
pt
.
ParaNode
AddrConfig
,
prev
,
current
*
pt
.
ParaNodeId
Status
)
*
types
.
Receipt
{
func
makeSupervisionNodeConfigReceipt
(
fromAddr
string
,
config
*
pt
.
ParaNode
GroupConfig
,
prev
,
current
*
pt
.
ParaNodeGroup
Status
)
*
types
.
Receipt
{
log
:=
&
pt
.
ReceiptParaNodeConfig
{
log
:=
&
pt
.
ReceiptParaNode
Group
Config
{
Addr
:
fromAddr
,
Addr
:
fromAddr
,
Config
:
config
,
Config
:
config
,
Prev
:
prev
,
Prev
:
prev
,
...
@@ -68,14 +70,13 @@ func makeParaSupervisionNodeStatusReceipt(fromAddr string, prev, current *pt.Par
...
@@ -68,14 +70,13 @@ func makeParaSupervisionNodeStatusReceipt(fromAddr string, prev, current *pt.Par
}
}
}
}
func
getSupervisionNodeID
(
db
dbm
.
KV
,
title
string
,
id
string
)
(
*
pt
.
ParaNodeIdStatus
,
error
)
{
func
getSupervisionNodeID
(
db
dbm
.
KV
,
id
string
)
(
*
pt
.
ParaNodeGroupStatus
,
error
)
{
id
=
calcParaSupervisionNodeIDKey
(
title
,
id
)
val
,
err
:=
getDb
(
db
,
[]
byte
(
id
))
val
,
err
:=
getDb
(
db
,
[]
byte
(
id
))
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
var
status
pt
.
ParaNode
Id
Status
var
status
pt
.
ParaNode
Group
Status
err
=
types
.
Decode
(
val
,
&
status
)
err
=
types
.
Decode
(
val
,
&
status
)
return
&
status
,
err
return
&
status
,
err
}
}
...
@@ -124,14 +125,14 @@ func (a *action) updateSupervisionNodeGroup(title, addr string, add bool) (*type
...
@@ -124,14 +125,14 @@ func (a *action) updateSupervisionNodeGroup(title, addr string, add bool) (*type
return
receipt
,
nil
return
receipt
,
nil
}
}
func
(
a
*
action
)
checkValidSupervisionNode
(
config
*
pt
.
ParaNode
Addr
Config
)
(
bool
,
error
)
{
func
(
a
*
action
)
checkValidSupervisionNode
(
config
*
pt
.
ParaNode
Group
Config
)
(
bool
,
error
)
{
key
:=
calcParaSupervisionNodeGroupAddrsKey
(
config
.
Title
)
key
:=
calcParaSupervisionNodeGroupAddrsKey
(
config
.
Title
)
nodes
,
_
,
err
:=
getNodes
(
a
.
db
,
key
)
nodes
,
_
,
err
:=
getNodes
(
a
.
db
,
key
)
if
err
!=
nil
&&
!
(
isNotFound
(
err
)
||
errors
.
Cause
(
err
)
==
pt
.
ErrTitleNotExist
)
{
if
err
!=
nil
&&
!
(
isNotFound
(
err
)
||
errors
.
Cause
(
err
)
==
pt
.
ErrTitleNotExist
)
{
return
false
,
errors
.
Wrapf
(
err
,
"getNodes for title:%s"
,
config
.
Title
)
return
false
,
errors
.
Wrapf
(
err
,
"getNodes for title:%s"
,
config
.
Title
)
}
}
if
validNode
(
config
.
Addr
,
nodes
)
{
if
validNode
(
config
.
Addr
s
,
nodes
)
{
return
true
,
nil
return
true
,
nil
}
}
return
false
,
nil
return
false
,
nil
...
@@ -173,16 +174,16 @@ func (a *action) supervisionNodeGroupCreate(title, targetAddrs string) (*types.R
...
@@ -173,16 +174,16 @@ func (a *action) supervisionNodeGroupCreate(title, targetAddrs string) (*types.R
}
}
//由于propasal id 和quit id分开,quit id不知道对应addr proposal id的coinfrozen信息,需要维护一个围绕addr的数据库结构信息
//由于propasal id 和quit id分开,quit id不知道对应addr proposal id的coinfrozen信息,需要维护一个围绕addr的数据库结构信息
func
(
a
*
action
)
updateSupervisionNodeAddrStatus
(
stat
*
pt
.
ParaNode
Id
Status
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
updateSupervisionNodeAddrStatus
(
stat
*
pt
.
ParaNode
Group
Status
)
(
*
types
.
Receipt
,
error
)
{
addrStat
,
err
:=
getNodeAddr
(
a
.
db
,
stat
.
Title
,
stat
.
TargetAddr
)
addrStat
,
err
:=
getNodeAddr
(
a
.
db
,
stat
.
Title
,
stat
.
TargetAddr
s
)
if
err
!=
nil
{
if
err
!=
nil
{
if
!
isNotFound
(
err
)
{
if
!
isNotFound
(
err
)
{
return
nil
,
errors
.
Wrapf
(
err
,
"nodeAddr:%s get error"
,
stat
.
TargetAddr
)
return
nil
,
errors
.
Wrapf
(
err
,
"nodeAddr:%s get error"
,
stat
.
TargetAddr
s
)
}
}
addrStat
=
&
pt
.
ParaNodeAddrIdStatus
{}
addrStat
=
&
pt
.
ParaNodeAddrIdStatus
{}
addrStat
.
Title
=
stat
.
Title
addrStat
.
Title
=
stat
.
Title
addrStat
.
Addr
=
stat
.
TargetAddr
addrStat
.
Addr
=
stat
.
TargetAddr
s
addrStat
.
BlsPubKey
=
stat
.
BlsPubKey
addrStat
.
BlsPubKey
=
stat
.
BlsPubKey
s
addrStat
.
Status
=
pt
.
ParacrossSupervisionNodeApprove
addrStat
.
Status
=
pt
.
ParacrossSupervisionNodeApprove
addrStat
.
ProposalId
=
stat
.
Id
addrStat
.
ProposalId
=
stat
.
Id
addrStat
.
QuitId
=
""
addrStat
.
QuitId
=
""
...
@@ -191,9 +192,9 @@ func (a *action) updateSupervisionNodeAddrStatus(stat *pt.ParaNodeIdStatus) (*ty
...
@@ -191,9 +192,9 @@ func (a *action) updateSupervisionNodeAddrStatus(stat *pt.ParaNodeIdStatus) (*ty
preStat
:=
*
addrStat
preStat
:=
*
addrStat
if
stat
.
Status
==
pt
.
ParacrossSupervisionNodeQuit
{
if
stat
.
Status
==
pt
.
ParacrossSupervisionNodeQuit
{
proposalStat
,
err
:=
getNodeID
(
a
.
db
,
addrStat
.
ProposalId
)
proposalStat
,
err
:=
get
Supervision
NodeID
(
a
.
db
,
addrStat
.
ProposalId
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"nodeAddr:%s quiting wrong proposeid:%s"
,
stat
.
TargetAddr
,
addrStat
.
ProposalId
)
return
nil
,
errors
.
Wrapf
(
err
,
"nodeAddr:%s quiting wrong proposeid:%s"
,
stat
.
TargetAddr
s
,
addrStat
.
ProposalId
)
}
}
addrStat
.
Status
=
stat
.
Status
addrStat
.
Status
=
stat
.
Status
...
@@ -217,16 +218,20 @@ func (a *action) updateSupervisionNodeAddrStatus(stat *pt.ParaNodeIdStatus) (*ty
...
@@ -217,16 +218,20 @@ func (a *action) updateSupervisionNodeAddrStatus(stat *pt.ParaNodeIdStatus) (*ty
}
}
}
}
func
(
a
*
action
)
supervisionNodeApply
(
config
*
pt
.
ParaNode
Addr
Config
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
supervisionNodeApply
(
config
*
pt
.
ParaNode
Group
Config
)
(
*
types
.
Receipt
,
error
)
{
// 必须要有授权节点 监督节点才有意义 判断是否存在授权节点
// 必须要有授权节点 监督节点才有意义 判断是否存在授权节点
addrExist
,
err
:=
a
.
checkValidNode
(
config
)
if
strings
.
Contains
(
config
.
Addrs
,
","
)
{
return
nil
,
errors
.
Wrapf
(
types
.
ErrInvalidParam
,
"not support multi addr currently,addrs=%s"
,
config
.
Addrs
)
}
nodeCfg
:=
&
pt
.
ParaNodeAddrConfig
{
Title
:
config
.
Title
,
Addr
:
config
.
Addrs
}
addrExist
,
err
:=
a
.
checkValidNode
(
nodeCfg
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
// 不能跟授权节点一致
// 不能跟授权节点一致
if
addrExist
{
if
addrExist
{
return
nil
,
errors
.
Wrapf
(
pt
.
ErrParaNodeAddrExisted
,
"supervisionNodeGroup Apply Addr existed:%s in super group"
,
config
.
Addr
)
return
nil
,
errors
.
Wrapf
(
pt
.
ErrParaNodeAddrExisted
,
"supervisionNodeGroup Apply Addr existed:%s in super group"
,
config
.
Addr
s
)
}
}
// 判断 node 是否已经申请
// 判断 node 是否已经申请
...
@@ -235,7 +240,7 @@ func (a *action) supervisionNodeApply(config *pt.ParaNodeAddrConfig) (*types.Rec
...
@@ -235,7 +240,7 @@ func (a *action) supervisionNodeApply(config *pt.ParaNodeAddrConfig) (*types.Rec
return
nil
,
err
return
nil
,
err
}
}
if
addrExist
{
if
addrExist
{
return
nil
,
errors
.
Wrapf
(
pt
.
ErrParaSupervisionNodeAddrExisted
,
"supervisionNodeGroup Apply Addr existed:%s"
,
config
.
Addr
)
return
nil
,
errors
.
Wrapf
(
pt
.
ErrParaSupervisionNodeAddrExisted
,
"supervisionNodeGroup Apply Addr existed:%s"
,
config
.
Addr
s
)
}
}
// 在主链上冻结金额
// 在主链上冻结金额
...
@@ -249,12 +254,12 @@ func (a *action) supervisionNodeApply(config *pt.ParaNodeAddrConfig) (*types.Rec
...
@@ -249,12 +254,12 @@ func (a *action) supervisionNodeApply(config *pt.ParaNodeAddrConfig) (*types.Rec
receipt
=
mergeReceipt
(
receipt
,
r
)
receipt
=
mergeReceipt
(
receipt
,
r
)
}
}
stat
:=
&
pt
.
ParaNode
Id
Status
{
stat
:=
&
pt
.
ParaNode
Group
Status
{
Id
:
calcParaSupervisionNodeIDKey
(
config
.
Title
,
common
.
ToHex
(
a
.
txhash
)),
Id
:
calcParaSupervisionNodeIDKey
(
config
.
Title
,
common
.
ToHex
(
a
.
txhash
)),
Status
:
pt
.
ParacrossSupervisionNodeApply
,
Status
:
pt
.
ParacrossSupervisionNodeApply
,
Title
:
config
.
Title
,
Title
:
config
.
Title
,
TargetAddr
:
config
.
Addr
,
TargetAddr
s
:
config
.
Addrs
,
BlsPubKey
:
config
.
BlsPubKey
,
BlsPubKey
s
:
config
.
BlsPubKeys
,
CoinsFrozen
:
config
.
CoinsFrozen
,
CoinsFrozen
:
config
.
CoinsFrozen
,
FromAddr
:
a
.
fromaddr
,
FromAddr
:
a
.
fromaddr
,
Height
:
a
.
height
,
Height
:
a
.
height
,
...
@@ -265,14 +270,17 @@ func (a *action) supervisionNodeApply(config *pt.ParaNodeAddrConfig) (*types.Rec
...
@@ -265,14 +270,17 @@ func (a *action) supervisionNodeApply(config *pt.ParaNodeAddrConfig) (*types.Rec
return
receipt
,
nil
return
receipt
,
nil
}
}
func
(
a
*
action
)
supervisionNodeApprove
(
config
*
pt
.
ParaNode
Addr
Config
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
supervisionNodeApprove
(
config
*
pt
.
ParaNode
Group
Config
)
(
*
types
.
Receipt
,
error
)
{
cfg
:=
a
.
api
.
GetConfig
()
cfg
:=
a
.
api
.
GetConfig
()
//只在主链检查
//只在主链检查, 主链检查失败不会同步到平行链,主链成功,平行链默认成功
if
!
cfg
.
IsPara
()
&&
!
isSuperManager
(
cfg
,
a
.
fromaddr
)
{
if
!
cfg
.
IsPara
()
{
return
nil
,
errors
.
Wrapf
(
types
.
ErrNotAllow
,
"node group approve not supervision manager:%s"
,
a
.
fromaddr
)
err
:=
a
.
checkApproveOp
(
config
)
if
err
!=
nil
{
return
nil
,
err
}
}
}
apply
,
err
:=
getSupervisionNodeID
(
a
.
db
,
c
onfig
.
Title
,
config
.
Id
)
apply
,
err
:=
getSupervisionNodeID
(
a
.
db
,
c
alcParaSupervisionNodeIDKey
(
config
.
Title
,
config
.
Id
)
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -292,21 +300,21 @@ func (a *action) supervisionNodeApprove(config *pt.ParaNodeAddrConfig) (*types.R
...
@@ -292,21 +300,21 @@ func (a *action) supervisionNodeApprove(config *pt.ParaNodeAddrConfig) (*types.R
receipt
:=
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
}
receipt
:=
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
}
if
!
exist
{
if
!
exist
{
// 监督账户组不存在
// 监督账户组不存在
r
,
err
:=
a
.
supervisionNodeGroupCreate
(
apply
.
Title
,
apply
.
TargetAddr
)
r
,
err
:=
a
.
supervisionNodeGroupCreate
(
apply
.
Title
,
apply
.
TargetAddr
s
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"nodegroup create:title:%s,addrs:%s"
,
config
.
Title
,
apply
.
TargetAddr
)
return
nil
,
errors
.
Wrapf
(
err
,
"nodegroup create:title:%s,addrs:%s"
,
config
.
Title
,
apply
.
TargetAddr
s
)
}
}
receipt
=
mergeReceipt
(
receipt
,
r
)
receipt
=
mergeReceipt
(
receipt
,
r
)
}
else
{
}
else
{
// 监督账户组已经存在
// 监督账户组已经存在
r
,
err
:=
a
.
updateSupervisionNodeGroup
(
config
.
Title
,
apply
.
TargetAddr
,
true
)
r
,
err
:=
a
.
updateSupervisionNodeGroup
(
config
.
Title
,
apply
.
TargetAddr
s
,
true
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
receipt
=
mergeReceipt
(
receipt
,
r
)
receipt
=
mergeReceipt
(
receipt
,
r
)
}
}
copyStat
:=
proto
.
Clone
(
apply
)
.
(
*
pt
.
ParaNode
Id
Status
)
copyStat
:=
proto
.
Clone
(
apply
)
.
(
*
pt
.
ParaNode
Group
Status
)
apply
.
Status
=
pt
.
ParacrossSupervisionNodeApprove
apply
.
Status
=
pt
.
ParacrossSupervisionNodeApprove
apply
.
Height
=
a
.
height
apply
.
Height
=
a
.
height
...
@@ -321,31 +329,31 @@ func (a *action) supervisionNodeApprove(config *pt.ParaNodeAddrConfig) (*types.R
...
@@ -321,31 +329,31 @@ func (a *action) supervisionNodeApprove(config *pt.ParaNodeAddrConfig) (*types.R
return
receipt
,
nil
return
receipt
,
nil
}
}
func
(
a
*
action
)
supervisionNodeQuit
(
config
*
pt
.
ParaNode
Addr
Config
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
supervisionNodeQuit
(
config
*
pt
.
ParaNode
Group
Config
)
(
*
types
.
Receipt
,
error
)
{
addrExist
,
err
:=
a
.
checkValidSupervisionNode
(
config
)
addrExist
,
err
:=
a
.
checkValidSupervisionNode
(
config
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
if
!
addrExist
{
if
!
addrExist
{
return
nil
,
errors
.
Wrapf
(
pt
.
ErrParaSupervisionNodeAddrNotExisted
,
"nodeAddr not existed:%s"
,
config
.
Addr
)
return
nil
,
errors
.
Wrapf
(
pt
.
ErrParaSupervisionNodeAddrNotExisted
,
"nodeAddr not existed:%s"
,
config
.
Addr
s
)
}
}
status
,
err
:=
getNodeAddr
(
a
.
db
,
config
.
Title
,
config
.
Addr
)
status
,
err
:=
getNodeAddr
(
a
.
db
,
config
.
Title
,
config
.
Addr
s
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"nodeAddr:%s get error"
,
config
.
Addr
)
return
nil
,
errors
.
Wrapf
(
err
,
"nodeAddr:%s get error"
,
config
.
Addr
s
)
}
}
if
status
.
Status
!=
pt
.
ParacrossSupervisionNodeApprove
{
if
status
.
Status
!=
pt
.
ParacrossSupervisionNodeApprove
{
return
nil
,
errors
.
Wrapf
(
pt
.
ErrParaSupervisionNodeAddrNotExisted
,
"nodeAddr:%s status:%d"
,
config
.
Addr
,
status
.
Status
)
return
nil
,
errors
.
Wrapf
(
pt
.
ErrParaSupervisionNodeAddrNotExisted
,
"nodeAddr:%s status:%d"
,
config
.
Addr
s
,
status
.
Status
)
}
}
cfg
:=
a
.
api
.
GetConfig
()
cfg
:=
a
.
api
.
GetConfig
()
stat
:=
&
pt
.
ParaNode
Id
Status
{
stat
:=
&
pt
.
ParaNode
Group
Status
{
Id
:
status
.
ProposalId
,
Id
:
calcParaSupervisionNodeIDKey
(
config
.
Title
,
common
.
ToHex
(
a
.
txhash
))
,
Status
:
pt
.
ParacrossSupervisionNodeQuit
,
Status
:
pt
.
ParacrossSupervisionNodeQuit
,
Title
:
config
.
Title
,
Title
:
config
.
Title
,
TargetAddr
:
config
.
Addr
,
TargetAddr
s
:
config
.
Addrs
,
FromAddr
:
a
.
fromaddr
,
FromAddr
:
a
.
fromaddr
,
Height
:
a
.
height
,
Height
:
a
.
height
,
}
}
//只能提案发起人或超级节点可以撤销
//只能提案发起人或超级节点可以撤销
...
@@ -366,7 +374,7 @@ func (a *action) supervisionNodeQuit(config *pt.ParaNodeAddrConfig) (*types.Rece
...
@@ -366,7 +374,7 @@ func (a *action) supervisionNodeQuit(config *pt.ParaNodeAddrConfig) (*types.Rece
}
}
receipt
=
mergeReceipt
(
receipt
,
r
)
receipt
=
mergeReceipt
(
receipt
,
r
)
r
,
err
=
a
.
updateSupervisionNodeGroup
(
config
.
Title
,
stat
.
TargetAddr
,
false
)
r
,
err
=
a
.
updateSupervisionNodeGroup
(
config
.
Title
,
stat
.
TargetAddr
s
,
false
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -384,9 +392,9 @@ func (a *action) supervisionNodeQuit(config *pt.ParaNodeAddrConfig) (*types.Rece
...
@@ -384,9 +392,9 @@ func (a *action) supervisionNodeQuit(config *pt.ParaNodeAddrConfig) (*types.Rece
return
receipt
,
nil
return
receipt
,
nil
}
}
func
(
a
*
action
)
supervisionNodeCancel
(
config
*
pt
.
ParaNode
Addr
Config
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
supervisionNodeCancel
(
config
*
pt
.
ParaNode
Group
Config
)
(
*
types
.
Receipt
,
error
)
{
cfg
:=
a
.
api
.
GetConfig
()
cfg
:=
a
.
api
.
GetConfig
()
status
,
err
:=
getSupervisionNodeID
(
a
.
db
,
c
onfig
.
Title
,
config
.
Id
)
status
,
err
:=
getSupervisionNodeID
(
a
.
db
,
c
alcParaSupervisionNodeIDKey
(
config
.
Title
,
config
.
Id
)
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -412,7 +420,7 @@ func (a *action) supervisionNodeCancel(config *pt.ParaNodeAddrConfig) (*types.Re
...
@@ -412,7 +420,7 @@ func (a *action) supervisionNodeCancel(config *pt.ParaNodeAddrConfig) (*types.Re
receipt
=
mergeReceipt
(
receipt
,
r
)
receipt
=
mergeReceipt
(
receipt
,
r
)
}
}
copyStat
:=
proto
.
Clone
(
status
)
.
(
*
pt
.
ParaNode
Id
Status
)
copyStat
:=
proto
.
Clone
(
status
)
.
(
*
pt
.
ParaNode
Group
Status
)
status
.
Status
=
pt
.
ParacrossSupervisionNodeCancel
status
.
Status
=
pt
.
ParacrossSupervisionNodeCancel
status
.
Height
=
a
.
height
status
.
Height
=
a
.
height
...
@@ -422,24 +430,24 @@ func (a *action) supervisionNodeCancel(config *pt.ParaNodeAddrConfig) (*types.Re
...
@@ -422,24 +430,24 @@ func (a *action) supervisionNodeCancel(config *pt.ParaNodeAddrConfig) (*types.Re
return
receipt
,
nil
return
receipt
,
nil
}
}
func
(
a
*
action
)
supervisionNodeModify
(
config
*
pt
.
ParaNode
Addr
Config
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
supervisionNodeModify
(
config
*
pt
.
ParaNode
Group
Config
)
(
*
types
.
Receipt
,
error
)
{
addrStat
,
err
:=
getNodeAddr
(
a
.
db
,
config
.
Title
,
config
.
Addr
)
addrStat
,
err
:=
getNodeAddr
(
a
.
db
,
config
.
Title
,
config
.
Addr
s
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
errors
.
Wrapf
(
err
,
"nodeAddr:%s get error"
,
config
.
Addr
)
return
nil
,
errors
.
Wrapf
(
err
,
"nodeAddr:%s get error"
,
config
.
Addr
s
)
}
}
// 只能提案发起人
// 只能提案发起人
if
a
.
fromaddr
!=
config
.
Addr
{
if
a
.
fromaddr
!=
config
.
Addr
s
{
return
nil
,
errors
.
Wrapf
(
types
.
ErrNotAllow
,
"addr create by:%s,not by:%s"
,
config
.
Addr
,
a
.
fromaddr
)
return
nil
,
errors
.
Wrapf
(
types
.
ErrNotAllow
,
"addr create by:%s,not by:%s"
,
config
.
Addr
s
,
a
.
fromaddr
)
}
}
preStat
:=
*
addrStat
preStat
:=
*
addrStat
addrStat
.
BlsPubKey
=
config
.
BlsPubKey
addrStat
.
BlsPubKey
=
config
.
BlsPubKey
s
return
makeParaSupervisionNodeStatusReceipt
(
a
.
fromaddr
,
&
preStat
,
addrStat
),
nil
return
makeParaSupervisionNodeStatusReceipt
(
a
.
fromaddr
,
&
preStat
,
addrStat
),
nil
}
}
func
(
a
*
action
)
SupervisionNodeConfig
(
config
*
pt
.
ParaNode
Addr
Config
)
(
*
types
.
Receipt
,
error
)
{
func
(
a
*
action
)
SupervisionNodeConfig
(
config
*
pt
.
ParaNode
Group
Config
)
(
*
types
.
Receipt
,
error
)
{
cfg
:=
a
.
api
.
GetConfig
()
cfg
:=
a
.
api
.
GetConfig
()
if
!
validTitle
(
cfg
,
config
.
Title
)
{
if
!
validTitle
(
cfg
,
config
.
Title
)
{
return
nil
,
pt
.
ErrInvalidTitle
return
nil
,
pt
.
ErrInvalidTitle
...
...
plugin/dapp/paracross/executor/supervisionaccount_test.go
View file @
a2907e13
...
@@ -7,7 +7,7 @@ import (
...
@@ -7,7 +7,7 @@ import (
)
)
// createRawSupervisionNodeConfigTx create raw tx for node config
// createRawSupervisionNodeConfigTx create raw tx for node config
func
createRawSupervisionNodeConfigTx
(
config
*
pt
.
ParaNode
Addr
Config
)
*
types
.
Transaction
{
func
createRawSupervisionNodeConfigTx
(
config
*
pt
.
ParaNode
Group
Config
)
*
types
.
Transaction
{
action
:=
&
pt
.
ParacrossAction
{
action
:=
&
pt
.
ParacrossAction
{
Ty
:
pt
.
ParacrossActionSupervisionNodeConfig
,
Ty
:
pt
.
ParacrossActionSupervisionNodeConfig
,
Value
:
&
pt
.
ParacrossAction_SupervisionNodeConfig
{
SupervisionNodeConfig
:
config
},
Value
:
&
pt
.
ParacrossAction_SupervisionNodeConfig
{
SupervisionNodeConfig
:
config
},
...
@@ -32,10 +32,10 @@ func (suite *NodeManageTestSuite) testSupervisionExec() {
...
@@ -32,10 +32,10 @@ func (suite *NodeManageTestSuite) testSupervisionExec() {
func
(
suite
*
NodeManageTestSuite
)
testSupervisionNodeConfigCancel
(
addr
,
privKey
string
)
{
func
(
suite
*
NodeManageTestSuite
)
testSupervisionNodeConfigCancel
(
addr
,
privKey
string
)
{
// Apply
// Apply
config
:=
&
pt
.
ParaNode
Addr
Config
{
config
:=
&
pt
.
ParaNode
Group
Config
{
Title
:
chain33TestCfg
.
GetTitle
(),
Title
:
chain33TestCfg
.
GetTitle
(),
Op
:
pt
.
ParacrossSupervisionNodeApply
,
Op
:
pt
.
ParacrossSupervisionNodeApply
,
Addr
:
addr
,
Addr
s
:
addr
,
}
}
tx
:=
createRawSupervisionNodeConfigTx
(
config
)
tx
:=
createRawSupervisionNodeConfigTx
(
config
)
receipt
:=
nodeCommit
(
suite
,
privKey
,
tx
)
receipt
:=
nodeCommit
(
suite
,
privKey
,
tx
)
...
@@ -46,7 +46,7 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigCancel(addr, privKey
...
@@ -46,7 +46,7 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigCancel(addr, privKey
suite
.
Nil
(
err
)
suite
.
Nil
(
err
)
// cancel
// cancel
config
=
&
pt
.
ParaNode
Addr
Config
{
config
=
&
pt
.
ParaNode
Group
Config
{
Title
:
chain33TestCfg
.
GetTitle
(),
Title
:
chain33TestCfg
.
GetTitle
(),
Op
:
pt
.
ParacrossSupervisionNodeCancel
,
Op
:
pt
.
ParacrossSupervisionNodeCancel
,
Id
:
getParaNodeIDSuffix
(
g
.
Current
.
Id
),
Id
:
getParaNodeIDSuffix
(
g
.
Current
.
Id
),
...
@@ -57,10 +57,10 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigCancel(addr, privKey
...
@@ -57,10 +57,10 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigCancel(addr, privKey
}
}
func
(
suite
*
NodeManageTestSuite
)
testSupervisionNodeConfigApprove
(
addr
,
privKey
string
)
{
func
(
suite
*
NodeManageTestSuite
)
testSupervisionNodeConfigApprove
(
addr
,
privKey
string
)
{
config
:=
&
pt
.
ParaNode
Addr
Config
{
config
:=
&
pt
.
ParaNode
Group
Config
{
Title
:
chain33TestCfg
.
GetTitle
(),
Title
:
chain33TestCfg
.
GetTitle
(),
Op
:
pt
.
ParacrossSupervisionNodeApply
,
Op
:
pt
.
ParacrossSupervisionNodeApply
,
Addr
:
addr
,
Addr
s
:
addr
,
}
}
tx
:=
createRawSupervisionNodeConfigTx
(
config
)
tx
:=
createRawSupervisionNodeConfigTx
(
config
)
receipt
:=
nodeCommit
(
suite
,
privKey
,
tx
)
receipt
:=
nodeCommit
(
suite
,
privKey
,
tx
)
...
@@ -70,7 +70,7 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigApprove(addr, privKey
...
@@ -70,7 +70,7 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigApprove(addr, privKey
err
:=
types
.
Decode
(
receipt
.
Logs
[
0
]
.
Log
,
&
g
)
err
:=
types
.
Decode
(
receipt
.
Logs
[
0
]
.
Log
,
&
g
)
suite
.
Nil
(
err
)
suite
.
Nil
(
err
)
config
=
&
pt
.
ParaNode
Addr
Config
{
config
=
&
pt
.
ParaNode
Group
Config
{
Title
:
chain33TestCfg
.
GetTitle
(),
Title
:
chain33TestCfg
.
GetTitle
(),
Id
:
getParaNodeIDSuffix
(
g
.
Current
.
Id
),
Id
:
getParaNodeIDSuffix
(
g
.
Current
.
Id
),
Op
:
pt
.
ParacrossSupervisionNodeApprove
,
Op
:
pt
.
ParacrossSupervisionNodeApprove
,
...
@@ -81,20 +81,20 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigApprove(addr, privKey
...
@@ -81,20 +81,20 @@ func (suite *NodeManageTestSuite) testSupervisionNodeConfigApprove(addr, privKey
}
}
func
(
suite
*
NodeManageTestSuite
)
testSupervisionNodeError
()
{
func
(
suite
*
NodeManageTestSuite
)
testSupervisionNodeError
()
{
config
:=
&
pt
.
ParaNode
Addr
Config
{
config
:=
&
pt
.
ParaNode
Group
Config
{
Title
:
chain33TestCfg
.
GetTitle
(),
Title
:
chain33TestCfg
.
GetTitle
(),
Op
:
pt
.
ParacrossSupervisionNodeApply
,
Op
:
pt
.
ParacrossSupervisionNodeApply
,
Addr
:
Account1M3
,
Addr
s
:
Account1M3
,
}
}
tx
:=
createRawSupervisionNodeConfigTx
(
config
)
tx
:=
createRawSupervisionNodeConfigTx
(
config
)
tx
,
_
=
signTx
(
suite
.
Suite
,
tx
,
PrivKey1M3
)
tx
,
_
=
signTx
(
suite
.
Suite
,
tx
,
PrivKey1M3
)
_
,
err
:=
suite
.
exec
.
Exec
(
tx
,
0
)
_
,
err
:=
suite
.
exec
.
Exec
(
tx
,
0
)
suite
.
NotNil
(
err
)
suite
.
NotNil
(
err
)
config
=
&
pt
.
ParaNode
Addr
Config
{
config
=
&
pt
.
ParaNode
Group
Config
{
Title
:
chain33TestCfg
.
GetTitle
(),
Title
:
chain33TestCfg
.
GetTitle
(),
Op
:
pt
.
ParacrossSupervisionNodeApply
,
Op
:
pt
.
ParacrossSupervisionNodeApply
,
Addr
:
"1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"
,
Addr
s
:
"1KSBd17H7ZK8iT37aJztFB22XGwsPTdwE4"
,
}
}
tx
=
createRawSupervisionNodeConfigTx
(
config
)
tx
=
createRawSupervisionNodeConfigTx
(
config
)
tx
,
_
=
signTx
(
suite
.
Suite
,
tx
,
PrivKey1KS
)
tx
,
_
=
signTx
(
suite
.
Suite
,
tx
,
PrivKey1KS
)
...
@@ -103,10 +103,10 @@ func (suite *NodeManageTestSuite) testSupervisionNodeError() {
...
@@ -103,10 +103,10 @@ func (suite *NodeManageTestSuite) testSupervisionNodeError() {
}
}
func
(
suite
*
NodeManageTestSuite
)
testSupervisionNodeQuit
()
{
func
(
suite
*
NodeManageTestSuite
)
testSupervisionNodeQuit
()
{
config
:=
&
pt
.
ParaNode
Addr
Config
{
config
:=
&
pt
.
ParaNode
Group
Config
{
Title
:
chain33TestCfg
.
GetTitle
(),
Title
:
chain33TestCfg
.
GetTitle
(),
Op
:
pt
.
ParacrossSupervisionNodeQuit
,
Op
:
pt
.
ParacrossSupervisionNodeQuit
,
Addr
:
Account1Ku
,
Addr
s
:
Account1Ku
,
}
}
tx
:=
createRawSupervisionNodeConfigTx
(
config
)
tx
:=
createRawSupervisionNodeConfigTx
(
config
)
receipt
:=
nodeCommit
(
suite
,
PrivKey1Ku
,
tx
)
receipt
:=
nodeCommit
(
suite
,
PrivKey1Ku
,
tx
)
...
@@ -123,11 +123,11 @@ func (suite *NodeManageTestSuite) testSupervisionNodeQuit() {
...
@@ -123,11 +123,11 @@ func (suite *NodeManageTestSuite) testSupervisionNodeQuit() {
}
}
func
(
suite
*
NodeManageTestSuite
)
testSupervisionNodeModify
()
{
func
(
suite
*
NodeManageTestSuite
)
testSupervisionNodeModify
()
{
config
:=
&
pt
.
ParaNode
Addr
Config
{
config
:=
&
pt
.
ParaNode
Group
Config
{
Title
:
chain33TestCfg
.
GetTitle
(),
Title
:
chain33TestCfg
.
GetTitle
(),
Op
:
pt
.
ParacrossSupervisionNodeModify
,
Op
:
pt
.
ParacrossSupervisionNodeModify
,
Addr
:
Account14K
,
Addr
s
:
Account14K
,
BlsPubKey
:
Bls14K
,
BlsPubKey
s
:
Bls14K
,
}
}
tx
:=
createRawSupervisionNodeConfigTx
(
config
)
tx
:=
createRawSupervisionNodeConfigTx
(
config
)
receipt
:=
nodeCommit
(
suite
,
PrivKey14K
,
tx
)
receipt
:=
nodeCommit
(
suite
,
PrivKey14K
,
tx
)
...
...
plugin/dapp/paracross/proto/paracross.proto
View file @
a2907e13
...
@@ -125,6 +125,7 @@ message ParaNodeGroupConfig {
...
@@ -125,6 +125,7 @@ message ParaNodeGroupConfig {
string
addrs
=
4
;
string
addrs
=
4
;
int64
coinsFrozen
=
5
;
int64
coinsFrozen
=
5
;
string
blsPubKeys
=
6
;
string
blsPubKeys
=
6
;
string
autonomyItemID
=
7
;
}
}
message
ParaNodeGroupStatus
{
message
ParaNodeGroupStatus
{
...
@@ -356,7 +357,7 @@ message ParacrossAction {
...
@@ -356,7 +357,7 @@ message ParacrossAction {
ParaStageConfig
selfStageConfig
=
11
;
ParaStageConfig
selfStageConfig
=
11
;
CrossAssetTransfer
crossAssetTransfer
=
12
;
CrossAssetTransfer
crossAssetTransfer
=
12
;
ParaBindMinerCmd
paraBindMiner
=
13
;
ParaBindMinerCmd
paraBindMiner
=
13
;
ParaNode
AddrConfig
supervisionNodeConfig
=
14
;
ParaNode
GroupConfig
supervisionNodeConfig
=
14
;
}
}
int32
ty
=
2
;
int32
ty
=
2
;
}
}
...
...
plugin/dapp/paracross/types/paracross.pb.go
View file @
a2907e13
This source diff could not be displayed because it is too large. You can
view the blob
instead.
plugin/dapp/paracross/types/type.go
View file @
a2907e13
...
@@ -19,19 +19,23 @@ var (
...
@@ -19,19 +19,23 @@ var (
// ForkCommitTx main chain support paracross commit tx
// ForkCommitTx main chain support paracross commit tx
ForkCommitTx
=
"ForkParacrossCommitTx"
ForkCommitTx
=
"ForkParacrossCommitTx"
// MainForkParacrossCommitTx 平行链配置项对应主链的ForkCommitTx 高度
// MainForkParacrossCommitTx 平行链配置项对应主链的ForkCommitTx 高度
// 同一个fork,同一份代码在主链和平行链需要执行高度一致,需要平行链配置主链fork高度
MainForkParacrossCommitTx
=
"mainForkParacrossCommitTx"
MainForkParacrossCommitTx
=
"mainForkParacrossCommitTx"
// ForkLoopCheckCommitTxDone 循环检查共识交易done的fork
// ForkLoopCheckCommitTxDone 循环检查共识交易done的fork
ForkLoopCheckCommitTxDone
=
"ForkLoopCheckCommitTxDone"
ForkLoopCheckCommitTxDone
=
"ForkLoopCheckCommitTxDone"
// MainLoopCheckCommitTxDoneForkHeight 平行链的配置项,对应主链的ForkLoopCheckCommitTxDone高度
// MainLoopCheckCommitTxDoneForkHeight 平行链的配置项,对应主链的ForkLoopCheckCommitTxDone高度
MainLoopCheckCommitTxDoneForkHeight
=
"mainLoopCheckCommitTxDoneForkHeight"
MainLoopCheckCommitTxDoneForkHeight
=
"mainLoopCheckCommitTxDoneForkHeight"
//MainForkParaSupervision = "mainForkParaSupervision"
// ForkParaSelfConsStages 平行链自共识分阶段共识
ForkParaSelfConsStages
=
"ForkParaSelfConsStages"
// ForkParaAssetTransferRbk 平行链资产转移平行链失败主链回滚
// ForkParaAssetTransferRbk 平行链资产转移平行链失败主链回滚
ForkParaAssetTransferRbk
=
"ForkParaAssetTransferRbk"
ForkParaAssetTransferRbk
=
"ForkParaAssetTransferRbk"
// ForkParaSupervision 平行链新增监督节点
// ForkParaSupervision 平行链新增监督节点
ForkParaSupervision
=
"ForkParaSupervision"
ForkParaSupervision
=
"ForkParaSupervision"
//ForkParaAutonomySuperGroup 分叉之后autonomy授权共识账户组,之前是配置超级管理员授权
ForkParaAutonomySuperGroup
=
"ForkParaAutonomySuperGroup"
//只在平行链开启的分叉
// ForkParaSelfConsStages 平行链自共识分阶段共识
ForkParaSelfConsStages
=
"ForkParaSelfConsStages"
// ForkParaFullMinerHeight 平行链全挖矿开启高度
// ForkParaFullMinerHeight 平行链全挖矿开启高度
ForkParaFullMinerHeight
=
"ForkParaFullMinerHeight"
ForkParaFullMinerHeight
=
"ForkParaFullMinerHeight"
// ForkParaRootHash 平行链按照ForkRootHash计算rootHash高度,在之前版本中平行链侧计算txRootHash没有提供正确的主链高度计算,需要分叉
// ForkParaRootHash 平行链按照ForkRootHash计算rootHash高度,在之前版本中平行链侧计算txRootHash没有提供正确的主链高度计算,需要分叉
...
@@ -65,6 +69,7 @@ func InitFork(cfg *types.Chain33Config) {
...
@@ -65,6 +69,7 @@ func InitFork(cfg *types.Chain33Config) {
cfg
.
RegisterDappFork
(
ParaX
,
ForkLoopCheckCommitTxDone
,
3230000
)
cfg
.
RegisterDappFork
(
ParaX
,
ForkLoopCheckCommitTxDone
,
3230000
)
cfg
.
RegisterDappFork
(
ParaX
,
ForkParaAssetTransferRbk
,
4500000
)
cfg
.
RegisterDappFork
(
ParaX
,
ForkParaAssetTransferRbk
,
4500000
)
cfg
.
RegisterDappFork
(
ParaX
,
ForkParaSupervision
,
6000000
)
cfg
.
RegisterDappFork
(
ParaX
,
ForkParaSupervision
,
6000000
)
cfg
.
RegisterDappFork
(
ParaX
,
ForkParaAutonomySuperGroup
,
10200000
)
//只在平行链启用
//只在平行链启用
cfg
.
RegisterDappFork
(
ParaX
,
ForkParaSelfConsStages
,
types
.
MaxHeight
)
cfg
.
RegisterDappFork
(
ParaX
,
ForkParaSelfConsStages
,
types
.
MaxHeight
)
...
@@ -122,7 +127,7 @@ func (p *ParacrossType) GetLogMap() map[int64]*types.LogInfo {
...
@@ -122,7 +127,7 @@ func (p *ParacrossType) GetLogMap() map[int64]*types.LogInfo {
TyLogParaStageGroupUpdate
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptSelfConsStagesUpdate
{}),
Name
:
"LogParaSelfConfStagesUpdate"
},
TyLogParaStageGroupUpdate
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptSelfConsStagesUpdate
{}),
Name
:
"LogParaSelfConfStagesUpdate"
},
TyLogParaBindMinerAddr
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptParaBindMinerInfo
{}),
Name
:
"TyLogParaBindMinerAddrUpdate"
},
TyLogParaBindMinerAddr
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptParaBindMinerInfo
{}),
Name
:
"TyLogParaBindMinerAddrUpdate"
},
TyLogParaBindMinerNode
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptParaNodeBindListUpdate
{}),
Name
:
"TyLogParaBindNodeListUpdate"
},
TyLogParaBindMinerNode
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptParaNodeBindListUpdate
{}),
Name
:
"TyLogParaBindNodeListUpdate"
},
TyLogParaSupervisionNodeConfig
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptParaNodeConfig
{}),
Name
:
"LogParaSupervisionNodeConfig"
},
TyLogParaSupervisionNodeConfig
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptParaNode
Group
Config
{}),
Name
:
"LogParaSupervisionNodeConfig"
},
TyLogParaSupervisionNodeGroupAddrsUpdate
:
{
Ty
:
reflect
.
TypeOf
(
types
.
ReceiptConfig
{}),
Name
:
"LogParaSupervisionNodeGroupAddrsUpdate"
},
TyLogParaSupervisionNodeGroupAddrsUpdate
:
{
Ty
:
reflect
.
TypeOf
(
types
.
ReceiptConfig
{}),
Name
:
"LogParaSupervisionNodeGroupAddrsUpdate"
},
TyLogParaSupervisionNodeStatusUpdate
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptParaNodeAddrStatUpdate
{}),
Name
:
"LogParaSupervisionNodeStatusUpdate"
},
TyLogParaSupervisionNodeStatusUpdate
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptParaNodeAddrStatUpdate
{}),
Name
:
"LogParaSupervisionNodeStatusUpdate"
},
}
}
...
...
plugin/dapp/ticket/executor/testdata/chain33.cfg.toml
View file @
a2907e13
...
@@ -236,6 +236,7 @@ ForkTokenCheck= 0
...
@@ -236,6 +236,7 @@ ForkTokenCheck= 0
[fork.sub.manage]
[fork.sub.manage]
Enable
=
0
Enable
=
0
ForkManageExec
=
0
ForkManageExec
=
0
ForkManageAutonomyEnable
=
-1
[fork.sub.valnode]
[fork.sub.valnode]
Enable
=
0
Enable
=
0
...
@@ -255,6 +256,7 @@ ForkParaAssetTransferRbk=0
...
@@ -255,6 +256,7 @@ ForkParaAssetTransferRbk=0
ForkParaFullMinerHeight
=
0
ForkParaFullMinerHeight
=
0
ForkParaSupervision
=
0
ForkParaSupervision
=
0
ForkParaRootHash
=
0
ForkParaRootHash
=
0
#nodegroup approve需要经过autonomy board成员审批,平行链不开启
ForkParaAutonomySuperGroup
=
-1
[fork.sub.qbftNode]
[fork.sub.qbftNode]
Enable
=
0
Enable
=
0
plugin/dapp/ticket/rpc/rpc_test.go
View file @
a2907e13
...
@@ -295,6 +295,7 @@ ForkBadRepeatSecret=0
...
@@ -295,6 +295,7 @@ ForkBadRepeatSecret=0
[fork.sub.manage]
[fork.sub.manage]
Enable=0
Enable=0
ForkManageExec=100000
ForkManageExec=100000
ForkManageAutonomyEnable=-1
[fork.sub.token]
[fork.sub.token]
Enable=0
Enable=0
...
@@ -324,6 +325,7 @@ ForkParaAssetTransferRbk=0
...
@@ -324,6 +325,7 @@ ForkParaAssetTransferRbk=0
ForkParaFullMinerHeight=0
ForkParaFullMinerHeight=0
ForkParaSupervision=0
ForkParaSupervision=0
ForkParaRootHash=0
ForkParaRootHash=0
ForkParaAutonomySuperGroup=-1
[fork.sub.evm]
[fork.sub.evm]
Enable=0
Enable=0
...
@@ -402,6 +404,7 @@ ForkUnfreezeIDX= 0
...
@@ -402,6 +404,7 @@ ForkUnfreezeIDX= 0
[fork.sub.autonomy]
[fork.sub.autonomy]
Enable=0
Enable=0
ForkAutonomyDelRule=0
ForkAutonomyDelRule=0
ForkAutonomyEnableItem=0
[fork.sub.jsvm]
[fork.sub.jsvm]
Enable=0
Enable=0
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment