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
503acbfc
Commit
503acbfc
authored
Jul 15, 2019
by
liuyuhang
Committed by
33cn
Aug 14, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add prob rule
parent
c4b89c92
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
385 additions
and
126 deletions
+385
-126
boardaction.go
plugin/dapp/autonomy/executor/boardaction.go
+7
-7
exec_del_local.go
plugin/dapp/autonomy/executor/exec_del_local.go
+29
-1
kv.go
plugin/dapp/autonomy/executor/kv.go
+16
-0
projectaction.go
plugin/dapp/autonomy/executor/projectaction.go
+7
-7
ruleaction.go
plugin/dapp/autonomy/executor/ruleaction.go
+0
-0
lcommon.proto
plugin/dapp/autonomy/proto/lcommon.proto
+14
-0
project.proto
plugin/dapp/autonomy/proto/project.proto
+9
-7
rule.proto
plugin/dapp/autonomy/proto/rule.proto
+20
-16
jrpc.go
plugin/dapp/autonomy/rpc/jrpc.go
+69
-0
rpc.go
plugin/dapp/autonomy/rpc/rpc.go
+75
-0
autonomy.pb.go
plugin/dapp/autonomy/types/autonomy.pb.go
+2
-1
const.go
plugin/dapp/autonomy/types/const.go
+1
-23
lcommon.pb.go
plugin/dapp/autonomy/types/lcommon.pb.go
+74
-14
project.pb.go
plugin/dapp/autonomy/types/project.pb.go
+60
-50
rule.pb.go
plugin/dapp/autonomy/types/rule.pb.go
+0
-0
types.go
plugin/dapp/autonomy/types/types.go
+2
-0
No files found.
plugin/dapp/autonomy/executor/boardaction.go
View file @
503acbfc
...
...
@@ -18,10 +18,10 @@ import (
const
(
minBoards
=
3
maxBoards
=
30
lockAmount
int64
=
types
.
Coin
*
1000
//创建者消耗金额
lockAmount
int64
=
types
.
Coin
*
1000
//
创建者消耗金额
ticketPrice
=
types
.
Coin
*
3000
// 单张票价
participationRate
=
float32
(
2
)
/
float32
(
3
)
//参与率
approveRate
=
float32
(
2
)
/
float32
(
3
)
//赞成率
participationRate
int32
=
66
// 参与率以%计
approveRate
int32
=
66
// 赞成率以%计
)
type
action
struct
{
...
...
@@ -226,8 +226,8 @@ func (a *action) votePropBoard(voteProb *auty.VoteProposalBoard) (*types.Receipt
if
cur
.
VoteResult
.
TotalVotes
!=
0
&&
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
!=
0
&&
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
/
float32
(
cur
.
VoteResult
.
TotalVotes
)
>=
participationRate
&&
float32
(
cur
.
VoteResult
.
ApproveVotes
)
/
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
>=
approveRate
{
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
/
float32
(
cur
.
VoteResult
.
TotalVotes
)
>=
float32
(
participationRate
)
&&
float32
(
cur
.
VoteResult
.
ApproveVotes
)
/
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
>=
float32
(
approveRate
)
{
cur
.
VoteResult
.
Pass
=
true
cur
.
PropBoard
.
RealEndBlockHeight
=
a
.
height
...
...
@@ -309,8 +309,8 @@ func (a *action) tmintPropBoard(tmintProb *auty.TerminateProposalBoard) (*types.
cur
.
VoteResult
.
TotalVotes
=
int32
(
account
.
Balance
/
ticketPrice
)
}
if
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
/
float32
(
cur
.
VoteResult
.
TotalVotes
)
>=
participationRate
&&
float32
(
cur
.
VoteResult
.
ApproveVotes
)
/
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
>=
approveRate
{
if
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
/
float32
(
cur
.
VoteResult
.
TotalVotes
)
>=
float32
(
participationRate
)
&&
float32
(
cur
.
VoteResult
.
ApproveVotes
)
/
float32
(
cur
.
VoteResult
.
ApproveVotes
+
cur
.
VoteResult
.
OpposeVotes
)
>=
float32
(
approveRate
)
{
cur
.
VoteResult
.
Pass
=
true
}
else
{
cur
.
VoteResult
.
Pass
=
false
...
...
plugin/dapp/autonomy/executor/exec_del_local.go
View file @
503acbfc
...
...
@@ -9,7 +9,8 @@ import (
auty
"github.com/33cn/plugin/plugin/dapp/autonomy/types"
)
// ExecDelLocal_PropBoard 创建提案
// 提案董事会相关
// ExecDelLocal_PropBoard 创建提案董事会
func
(
a
*
Autonomy
)
ExecDelLocal_PropBoard
(
payload
*
auty
.
ProposalBoard
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
a
.
execDelLocalBoard
(
receiptData
)
}
...
...
@@ -28,3 +29,29 @@ func (a *Autonomy) ExecDelLocal_VotePropBoard(payload *auty.VoteProposalBoard, t
func
(
a
*
Autonomy
)
ExecDelLocal_TmintPropBoard
(
payload
*
auty
.
TerminateProposalBoard
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
a
.
execDelLocalBoard
(
receiptData
)
}
// 提案项目相关
// ExecDelLocal_PropProject 创建提案项目
func
(
a
*
Autonomy
)
ExecDelLocal_PropProject
(
payload
*
auty
.
ProposalProject
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
a
.
execDelLocalProject
(
receiptData
)
}
// ExecDelLocal_RvkPropProject 撤销提案
func
(
a
*
Autonomy
)
ExecDelLocal_RvkPropProject
(
payload
*
auty
.
RevokeProposalProject
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
){
return
a
.
execDelLocalProject
(
receiptData
)
}
// ExecDelLocal_VotePropProject 投票提案
func
(
a
*
Autonomy
)
ExecDelLocal_VotePropProject
(
payload
*
auty
.
VoteProposalProject
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
a
.
execDelLocalProject
(
receiptData
)
}
// ExecDelLocal_PubVotePropProject 投票提案
func
(
a
*
Autonomy
)
ExecDelLocal_PubVotePropProject
(
payload
*
auty
.
PubVoteProposalProject
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
a
.
execDelLocalProject
(
receiptData
)
}
// ExecDelLocal_TmintPropProject 终止提案
func
(
a
*
Autonomy
)
ExecDelLocal_TmintPropProject
(
payload
*
auty
.
TerminateProposalProject
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
a
.
execDelLocalProject
(
receiptData
)
}
\ No newline at end of file
plugin/dapp/autonomy/executor/kv.go
View file @
503acbfc
...
...
@@ -55,6 +55,22 @@ func calcProjectKey4StatusHeight(status int32, heightindex string) []byte {
return
[]
byte
(
key
)
}
var
(
// rule
rulePrefix
=
idPrefix
+
"rule"
+
"-"
localRulePrefix
=
localPrefix
+
"rule"
+
"-"
)
func
activeRuleID
()
[]
byte
{
return
[]
byte
(
fmt
.
Sprintf
(
"%s"
,
rulePrefix
))
}
func
propRuleID
(
txHash
string
)
[]
byte
{
return
[]
byte
(
fmt
.
Sprintf
(
"%s%s"
,
rulePrefix
,
txHash
))
}
func
calcRuleKey4StatusHeight
(
status
int32
,
heightindex
string
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
localRulePrefix
+
"%d-"
+
"%s"
,
status
,
heightindex
)
return
[]
byte
(
key
)
}
plugin/dapp/autonomy/executor/projectaction.go
View file @
503acbfc
...
...
@@ -15,7 +15,7 @@ import (
const
(
largeAmount
=
types
.
Coin
*
100
*
10000
// 重大项目金额阈值
publicPeriod
=
120960
// 公示一周时间,以区块高度计算
opposeRate
=
float32
(
1
)
/
float32
(
3
)
// 反对率
opposeRate
int32
=
33
// 反对率以%计
)
...
...
@@ -224,8 +224,8 @@ func (a *action) votePropProject(voteProb *auty.VoteProposalProject) (*types.Rec
if
cur
.
BoardVoteRes
.
TotalVotes
!=
0
&&
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
!=
0
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
/
float32
(
cur
.
BoardVoteRes
.
TotalVotes
)
>=
participationRate
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
)
/
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
>=
approveRate
{
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
/
float32
(
cur
.
BoardVoteRes
.
TotalVotes
)
>=
float32
(
participationRate
)
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
)
/
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
>=
float32
(
approveRate
)
{
cur
.
BoardVoteRes
.
Pass
=
true
cur
.
PropProject
.
RealEndBlockHeight
=
a
.
height
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
lockAmount
)
...
...
@@ -347,7 +347,7 @@ func (a *action) pubVotePropProject(voteProb *auty.PubVoteProposalProject) (*typ
var
kv
[]
*
types
.
KeyValue
if
cur
.
PubVote
.
TotalVotes
!=
0
&&
float32
(
cur
.
PubVote
.
OpposeVotes
)
/
float32
(
cur
.
PubVote
.
TotalVotes
)
>=
opposeRate
{
float32
(
cur
.
PubVote
.
OpposeVotes
)
/
float32
(
cur
.
PubVote
.
TotalVotes
)
>=
float32
(
opposeRate
)
{
cur
.
PubVote
.
PubPass
=
false
cur
.
PropProject
.
RealEndBlockHeight
=
a
.
height
...
...
@@ -452,8 +452,8 @@ func (a *action) tmintPropProject(tmintProb *auty.TerminateProposalProject) (*ty
if
cur
.
BoardVoteRes
.
TotalVotes
!=
0
&&
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
!=
0
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
/
float32
(
cur
.
BoardVoteRes
.
TotalVotes
)
>=
participationRate
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
)
/
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
>=
approveRate
{
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
/
float32
(
cur
.
BoardVoteRes
.
TotalVotes
)
>=
float32
(
participationRate
)
&&
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
)
/
float32
(
cur
.
BoardVoteRes
.
ApproveVotes
+
cur
.
BoardVoteRes
.
OpposeVotes
)
>=
float32
(
approveRate
)
{
cur
.
BoardVoteRes
.
Pass
=
true
}
else
{
cur
.
BoardVoteRes
.
Pass
=
false
...
...
@@ -469,7 +469,7 @@ func (a *action) tmintPropProject(tmintProb *auty.TerminateProposalProject) (*ty
cur
.
PubVote
.
TotalVotes
=
int32
(
account
.
Balance
/
ticketPrice
)
}
if
cur
.
PubVote
.
TotalVotes
!=
0
&&
float32
(
cur
.
PubVote
.
OpposeVotes
)
/
float32
(
cur
.
PubVote
.
TotalVotes
)
>=
opposeRate
{
float32
(
cur
.
PubVote
.
OpposeVotes
)
/
float32
(
cur
.
PubVote
.
TotalVotes
)
>=
float32
(
opposeRate
)
{
cur
.
PubVote
.
PubPass
=
false
}
}
...
...
plugin/dapp/autonomy/executor/ruleaction.go
0 → 100644
View file @
503acbfc
This diff is collapsed.
Click to expand it.
plugin/dapp/autonomy/proto/lcommon.proto
View file @
503acbfc
...
...
@@ -31,3 +31,16 @@ message PublicVote {
message
VotesRecord
{
repeated
string
address
=
1
;
}
message
RuleConfig
{
// 参与率,以%为单位,只保留整数部分
int32
boardAttendProb
=
1
;
// 通过率
int32
boardPassProb
=
2
;
// 否决率
int32
opposeProb
=
3
;
// 提案金额
int64
proposalAmount
=
4
;
// 公示金额阈值
int64
pubAmountThreshold
=
5
;
}
\ No newline at end of file
plugin/dapp/autonomy/proto/project.proto
View file @
503acbfc
...
...
@@ -10,17 +10,19 @@ package types;
message
AutonomyProposalProject
{
ProposalProject
propProject
=
1
;
// 投票该提案的规则
RuleConfig
CurRule
=
2
;
// 投票该提案的董事会成员
repeated
string
boards
=
2
;
repeated
string
boards
=
3
;
// 董事会投票结果
VoteResult
boardVoteRes
=
3
;
VoteResult
boardVoteRes
=
4
;
// 公示投票
PublicVote
pubVote
=
4
;
PublicVote
pubVote
=
5
;
// 状态
int32
status
=
5
;
string
address
=
6
;
int64
height
=
7
;
int32
index
=
8
;
int32
status
=
6
;
string
address
=
7
;
int64
height
=
8
;
int32
index
=
9
;
}
message
ProposalProject
{
...
...
plugin/dapp/autonomy/proto/rule.proto
View file @
503acbfc
...
...
@@ -10,10 +10,14 @@ package types;
message
AutonomyProposalRule
{
ProposalRule
propRule
=
1
;
RuleConfig
rule
=
2
;
// 全体持票人投票结果
VoteResult
res
=
2
;
VoteResult
voteResult
=
3
;
// 状态
int32
status
=
3
;
int32
status
=
4
;
string
address
=
5
;
int64
height
=
6
;
int32
index
=
7
;
}
message
ProposalRule
{
...
...
@@ -22,17 +26,12 @@ message ProposalRule {
int32
month
=
2
;
int32
day
=
3
;
// 可修改项
int32
boardAttendProb
=
4
;
//参与率,以%为单位,只保留整数部分
int32
boardPassProb
=
5
;
//通过率
int32
opposeProb
=
6
;
//否决率
int32
proposalAmount
=
7
;
//提案金额
int32
pubAmountThreshold
=
8
;
//公示金额阈值
// 规则可修改项,如果某项不修改则置为-1
RuleConfig
ruleCfg
=
4
;
// 投票相关
int64
startBlockHeight
=
9
;
// 提案开始投票高度
int64
endBlockHeight
=
10
;
// 提案结束投票高度
int64
realEndBlockHeight
=
11
;
// 实际提案结束投票高度
int64
startBlockHeight
=
5
;
// 提案开始投票高度
int64
endBlockHeight
=
6
;
// 提案结束投票高度
int64
realEndBlockHeight
=
7
;
// 实际提案结束投票高度
}
message
RevokeProposalRule
{
...
...
@@ -60,10 +59,14 @@ message LocalProposalRule {
}
// query
message
ReplyQueryProposalRule
{
string
proposalID
=
1
;
message
ReqQueryProposalRule
{
//优先根据status查询
int32
status
=
1
;
int32
count
=
2
;
int32
direction
=
3
;
int64
index
=
4
;
}
message
ReplyProposalRule
{
repeated
Local
ProposalRule
propRules
=
1
;
message
Reply
Query
ProposalRule
{
repeated
Autonomy
ProposalRule
propRules
=
1
;
}
\ No newline at end of file
plugin/dapp/autonomy/rpc/jrpc.go
View file @
503acbfc
...
...
@@ -12,6 +12,7 @@ import (
auty
"github.com/33cn/plugin/plugin/dapp/autonomy/types"
)
// 提案董事会相关
// PropBoardTx 提案董事会成员RPC接口
func
(
c
*
Jrpc
)
PropBoardTx
(
parm
*
auty
.
ProposalBoard
,
result
*
interface
{})
error
{
if
parm
==
nil
{
...
...
@@ -64,3 +65,70 @@ func (c *Jrpc) TerminateProposalBoardTx(parm *auty.TerminateProposalBoard, resul
*
result
=
hex
.
EncodeToString
(
reply
.
Data
)
return
nil
}
// 提案项目相关
// PropProjectTx 提案项目RPC接口
func
(
c
*
Jrpc
)
PropProjectTx
(
parm
*
auty
.
ProposalProject
,
result
*
interface
{})
error
{
if
parm
==
nil
{
return
types
.
ErrInvalidParam
}
reply
,
err
:=
c
.
cli
.
propProject
(
context
.
Background
(),
parm
)
if
err
!=
nil
{
return
err
}
*
result
=
hex
.
EncodeToString
(
reply
.
Data
)
return
nil
}
// RevokeProposalProjectTx 撤销提案项目的RPC接口
func
(
c
*
Jrpc
)
RevokeProposalProjectTx
(
parm
*
auty
.
RevokeProposalProject
,
result
*
interface
{})
error
{
if
parm
==
nil
{
return
types
.
ErrInvalidParam
}
reply
,
err
:=
c
.
cli
.
revokeProposalProject
(
context
.
Background
(),
parm
)
if
err
!=
nil
{
return
err
}
*
result
=
hex
.
EncodeToString
(
reply
.
Data
)
return
nil
}
// VoteProposalProjectTx 董事会投票提案项目的RPC接口
func
(
c
*
Jrpc
)
VoteProposalProjectTx
(
parm
*
auty
.
VoteProposalProject
,
result
*
interface
{})
error
{
if
parm
==
nil
{
return
types
.
ErrInvalidParam
}
reply
,
err
:=
c
.
cli
.
voteProposalProject
(
context
.
Background
(),
parm
)
if
err
!=
nil
{
return
err
}
*
result
=
hex
.
EncodeToString
(
reply
.
Data
)
return
nil
}
// PubVoteProposalProjectTx 全体持票人投票提案项目的RPC接口
func
(
c
*
Jrpc
)
PubVoteProposalProjectTx
(
parm
*
auty
.
PubVoteProposalProject
,
result
*
interface
{})
error
{
if
parm
==
nil
{
return
types
.
ErrInvalidParam
}
reply
,
err
:=
c
.
cli
.
pubVoteProposalProject
(
context
.
Background
(),
parm
)
if
err
!=
nil
{
return
err
}
*
result
=
hex
.
EncodeToString
(
reply
.
Data
)
return
nil
}
// TerminateProposalProjectTx 终止提案项目的RPC接口
func
(
c
*
Jrpc
)
TerminateProposalProjectTx
(
parm
*
auty
.
TerminateProposalProject
,
result
*
interface
{})
error
{
if
parm
==
nil
{
return
types
.
ErrInvalidParam
}
reply
,
err
:=
c
.
cli
.
terminateProposalProject
(
context
.
Background
(),
parm
)
if
err
!=
nil
{
return
err
}
*
result
=
hex
.
EncodeToString
(
reply
.
Data
)
return
nil
}
\ No newline at end of file
plugin/dapp/autonomy/rpc/rpc.go
View file @
503acbfc
...
...
@@ -73,3 +73,77 @@ func (c *channelClient) terminateProposalBoard(ctx context.Context, head *auty.T
}
// Proposal Project 相关的接口
func
(
c
*
channelClient
)
propProject
(
ctx
context
.
Context
,
head
*
auty
.
ProposalProject
)
(
*
types
.
UnsignTx
,
error
)
{
val
:=
&
auty
.
AutonomyAction
{
Ty
:
auty
.
AutonomyActionPropProject
,
Value
:
&
auty
.
AutonomyAction_PropProject
{
PropProject
:
head
},
}
tx
:=
&
types
.
Transaction
{
Payload
:
types
.
Encode
(
val
),
}
data
,
err
:=
types
.
FormatTxEncode
(
types
.
ExecName
(
auty
.
AutonomyX
),
tx
)
if
err
!=
nil
{
return
nil
,
err
}
return
&
types
.
UnsignTx
{
Data
:
data
},
nil
}
func
(
c
*
channelClient
)
revokeProposalProject
(
ctx
context
.
Context
,
head
*
auty
.
RevokeProposalProject
)
(
*
types
.
UnsignTx
,
error
)
{
val
:=
&
auty
.
AutonomyAction
{
Ty
:
auty
.
AutonomyActionRvkPropProject
,
Value
:
&
auty
.
AutonomyAction_RvkPropProject
{
RvkPropProject
:
head
},
}
tx
:=
&
types
.
Transaction
{
Payload
:
types
.
Encode
(
val
),
}
data
,
err
:=
types
.
FormatTxEncode
(
types
.
ExecName
(
auty
.
AutonomyX
),
tx
)
if
err
!=
nil
{
return
nil
,
err
}
return
&
types
.
UnsignTx
{
Data
:
data
},
nil
}
func
(
c
*
channelClient
)
voteProposalProject
(
ctx
context
.
Context
,
head
*
auty
.
VoteProposalProject
)
(
*
types
.
UnsignTx
,
error
)
{
val
:=
&
auty
.
AutonomyAction
{
Ty
:
auty
.
AutonomyActionVotePropProject
,
Value
:
&
auty
.
AutonomyAction_VotePropProject
{
VotePropProject
:
head
},
}
tx
:=
&
types
.
Transaction
{
Payload
:
types
.
Encode
(
val
),
}
data
,
err
:=
types
.
FormatTxEncode
(
types
.
ExecName
(
auty
.
AutonomyX
),
tx
)
if
err
!=
nil
{
return
nil
,
err
}
return
&
types
.
UnsignTx
{
Data
:
data
},
nil
}
func
(
c
*
channelClient
)
pubVoteProposalProject
(
ctx
context
.
Context
,
head
*
auty
.
PubVoteProposalProject
)
(
*
types
.
UnsignTx
,
error
)
{
val
:=
&
auty
.
AutonomyAction
{
Ty
:
auty
.
AutonomyActionPubVotePropProject
,
Value
:
&
auty
.
AutonomyAction_PubVotePropProject
{
PubVotePropProject
:
head
},
}
tx
:=
&
types
.
Transaction
{
Payload
:
types
.
Encode
(
val
),
}
data
,
err
:=
types
.
FormatTxEncode
(
types
.
ExecName
(
auty
.
AutonomyX
),
tx
)
if
err
!=
nil
{
return
nil
,
err
}
return
&
types
.
UnsignTx
{
Data
:
data
},
nil
}
func
(
c
*
channelClient
)
terminateProposalProject
(
ctx
context
.
Context
,
head
*
auty
.
TerminateProposalProject
)
(
*
types
.
UnsignTx
,
error
)
{
val
:=
&
auty
.
AutonomyAction
{
Ty
:
auty
.
AutonomyActionTmintPropProject
,
Value
:
&
auty
.
AutonomyAction_TmintPropProject
{
TmintPropProject
:
head
},
}
tx
:=
&
types
.
Transaction
{
Payload
:
types
.
Encode
(
val
),
}
data
,
err
:=
types
.
FormatTxEncode
(
types
.
ExecName
(
auty
.
AutonomyX
),
tx
)
if
err
!=
nil
{
return
nil
,
err
}
return
&
types
.
UnsignTx
{
Data
:
data
},
nil
}
\ No newline at end of file
plugin/dapp/autonomy/types/autonomy.pb.go
View file @
503acbfc
...
...
@@ -25,6 +25,7 @@ It has these top-level messages:
VoteResult
PublicVote
VotesRecord
RuleConfig
AutonomyProposalProject
ProposalProject
RevokeProposalProject
...
...
@@ -42,8 +43,8 @@ It has these top-level messages:
TerminateProposalRule
ReceiptProposalRule
LocalProposalRule
ReqQueryProposalRule
ReplyQueryProposalRule
ReplyProposalRule
*/
package
types
...
...
plugin/dapp/autonomy/types/const.go
View file @
503acbfc
...
...
@@ -14,6 +14,7 @@ const (
AutonomyActionPropProject
AutonomyActionRvkPropProject
AutonomyActionVotePropProject
AutonomyActionPubVotePropProject
AutonomyActionTmintPropProject
AutonomyActionPropRule
...
...
@@ -39,29 +40,6 @@ const (
TyLogTmintPropRule
=
2124
)
const
(
// Action_PropBoard Action 名字
Action_PropBoard
=
"propBoard"
// Action_RvkPropBoard Action 名字
Action_RvkPropBoard
=
"rvkPropBoard"
// Action_TmintPropBoard Action 名字
Action_TmintPropBoard
=
"tmintPropBoard"
// Action_PropProject Action 名字
Action_PropProject
=
"propProject"
// Action_RvkPropProject Action 名字
Action_RvkPropProject
=
"rvkPropProject"
// Action_TmintPropProject Action 名字
Action_TmintPropProject
=
"tmintPropProject"
// Action_PropRule Action 名字
Action_PropRule
=
"propRule"
// Action_RvkPropRule Action 名字
Action_RvkPropRule
=
"rvkPropRule"
// Action_TmintPropRule Action 名字
Action_TmintPropRule
=
"tmintPropRule"
)
// status
const
(
AutonomyStatusProposalBoard
=
iota
+
1
...
...
plugin/dapp/autonomy/types/lcommon.pb.go
View file @
503acbfc
...
...
@@ -116,27 +116,87 @@ func (m *VotesRecord) GetAddress() []string {
return
nil
}
type
RuleConfig
struct
{
// 参与率,以%为单位,只保留整数部分
BoardAttendProb
int32
`protobuf:"varint,1,opt,name=boardAttendProb" json:"boardAttendProb,omitempty"`
// 通过率
BoardPassProb
int32
`protobuf:"varint,2,opt,name=boardPassProb" json:"boardPassProb,omitempty"`
// 否决率
OpposeProb
int32
`protobuf:"varint,3,opt,name=opposeProb" json:"opposeProb,omitempty"`
// 提案金额
ProposalAmount
int64
`protobuf:"varint,4,opt,name=proposalAmount" json:"proposalAmount,omitempty"`
// 公示金额阈值
PubAmountThreshold
int64
`protobuf:"varint,5,opt,name=pubAmountThreshold" json:"pubAmountThreshold,omitempty"`
}
func
(
m
*
RuleConfig
)
Reset
()
{
*
m
=
RuleConfig
{}
}
func
(
m
*
RuleConfig
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
RuleConfig
)
ProtoMessage
()
{}
func
(
*
RuleConfig
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor2
,
[]
int
{
3
}
}
func
(
m
*
RuleConfig
)
GetBoardAttendProb
()
int32
{
if
m
!=
nil
{
return
m
.
BoardAttendProb
}
return
0
}
func
(
m
*
RuleConfig
)
GetBoardPassProb
()
int32
{
if
m
!=
nil
{
return
m
.
BoardPassProb
}
return
0
}
func
(
m
*
RuleConfig
)
GetOpposeProb
()
int32
{
if
m
!=
nil
{
return
m
.
OpposeProb
}
return
0
}
func
(
m
*
RuleConfig
)
GetProposalAmount
()
int64
{
if
m
!=
nil
{
return
m
.
ProposalAmount
}
return
0
}
func
(
m
*
RuleConfig
)
GetPubAmountThreshold
()
int64
{
if
m
!=
nil
{
return
m
.
PubAmountThreshold
}
return
0
}
func
init
()
{
proto
.
RegisterType
((
*
VoteResult
)(
nil
),
"types.VoteResult"
)
proto
.
RegisterType
((
*
PublicVote
)(
nil
),
"types.PublicVote"
)
proto
.
RegisterType
((
*
VotesRecord
)(
nil
),
"types.VotesRecord"
)
proto
.
RegisterType
((
*
RuleConfig
)(
nil
),
"types.RuleConfig"
)
}
func
init
()
{
proto
.
RegisterFile
(
"lcommon.proto"
,
fileDescriptor2
)
}
var
fileDescriptor2
=
[]
byte
{
// 204 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0x84
,
0x90
,
0x3d
,
0x6e
,
0x84
,
0x30
,
0x10
,
0x46
,
0x65
,
0x7e
,
0x12
,
0x18
,
0x92
,
0xc6
,
0x15
,
0x45
,
0x14
,
0x21
,
0x9a
,
0x50
,
0xa5
,
0xc9
,
0x45
,
0x90
,
0x8b
,
0xf4
,
0x06
,
0x5c
,
0x20
,
0x99
,
0xcc
,
0xc8
,
0x36
,
0x91
,
0xb8
,
0x40
,
0xce
,
0x1d
,
0x79
,
0x12
,
0x04
,
0xbb
,
0x5b
,
0x6c
,
0x37
,
0xdf
,
0xd3
,
0x2b
,
0x9e
,
0x06
,
0x9e
,
0xed
,
0x88
,
0xcb
,
0x82
,
0x5f
,
0xef
,
0xe4
,
0x30
,
0xa0
,
0xcc
,
0xc3
,
0x46
,
0xc6
,
0xb7
,
0x3f
,
0x02
,
0xe0
,
0x13
,
0x83
,
0x51
,
0xc6
,
0xaf
,
0x36
,
0xc8
,
0x57
,
0x80
,
0x80
,
0x41
,
0xdb
,
0x88
,
0x7c
,
0x2d
,
0x1a
,
0xd1
,
0xe5
,
0xea
,
0x44
,
0x64
,
0x0b
,
0x4f
,
0x9a
,
0xc8
,
0xe1
,
0xb7
,
0xf9
,
0x33
,
0x12
,
0x36
,
0x2e
,
0x98
,
0x6c
,
0xa0
,
0x42
,
0x22
,
0xf4
,
0xff
,
0x4a
,
0xca
,
0xca
,
0x19
,
0x49
,
0x09
,
0x19
,
0x69
,
0xef
,
0xeb
,
0xac
,
0x11
,
0x5d
,
0xa1
,
0xf8
,
0xe6
,
0x90
,
0x7e
,
0x1d
,
0xec
,
0x3c
,
0x46
,
0x47
,
0xbe
,
0x40
,
0x49
,
0xbc
,
0xe6
,
0xb0
,
0x71
,
0x47
,
0xa1
,
0x0e
,
0x70
,
0x95
,
0x99
,
0xdc
,
0x64
,
0xde
,
0x4f
,
0xa8
,
0xe1
,
0x91
,
0xd6
,
0xa1
,
0x3f
,
0x2a
,
0xf6
,
0xd9
,
0xbe
,
0x41
,
0xc5
,
0x8a
,
0x32
,
0x23
,
0xba
,
0x29
,
0x8a
,
0x7a
,
0x9a
,
0x9c
,
0xf1
,
0xf1
,
0x1d
,
0x69
,
0x57
,
0xaa
,
0x7d
,
0x0e
,
0x0f
,
0xfc
,
0xc8
,
0x8f
,
0xdf
,
0x00
,
0x00
,
0x00
,
0xff
,
0xff
,
0x86
,
0x6a
,
0x7e
,
0x62
,
0x59
,
0x01
,
0x00
,
0x00
,
// 297 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0x84
,
0x92
,
0xcb
,
0x4a
,
0x33
,
0x41
,
0x10
,
0x85
,
0x99
,
0x5c
,
0xfe
,
0x3f
,
0xa9
,
0x18
,
0x85
,
0x5a
,
0xcd
,
0x42
,
0x24
,
0x0c
,
0xa2
,
0xb3
,
0xca
,
0xc6
,
0x27
,
0x08
,
0xbe
,
0x40
,
0x68
,
0xc4
,
0xfd
,
0x74
,
0xba
,
0x35
,
0x81
,
0xce
,
0x54
,
0xd1
,
0x17
,
0x21
,
0x2f
,
0xe0
,
0x13
,
0xfa
,
0x40
,
0xd2
,
0x35
,
0x09
,
0xb9
,
0x28
,
0xb8
,
0x9b
,
0xf3
,
0xcd
,
0x07
,
0x73
,
0x4e
,
0x31
,
0x30
,
0x75
,
0x2b
,
0xda
,
0x6e
,
0xa9
,
0x9d
,
0xb3
,
0xa7
,
0x48
,
0x38
,
0x8c
,
0x3b
,
0xb6
,
0xa1
,
0xfa
,
0x2c
,
0x00
,
0x5e
,
0x29
,
0x5a
,
0x65
,
0x43
,
0x72
,
0x11
,
0xef
,
0x00
,
0x22
,
0xc5
,
0xc6
,
0x65
,
0x14
,
0xca
,
0x62
,
0x56
,
0xd4
,
0x43
,
0x75
,
0x42
,
0xb0
,
0x82
,
0xab
,
0x86
,
0xd9
,
0xd3
,
0x87
,
0xed
,
0x8c
,
0x9e
,
0x18
,
0x67
,
0x0c
,
0x67
,
0x30
,
0x21
,
0x66
,
0x0a
,
0x7b
,
0xa5
,
0x2f
,
0xca
,
0x29
,
0x42
,
0x84
,
0x01
,
0x37
,
0x21
,
0x94
,
0x83
,
0x59
,
0x51
,
0x8f
,
0x94
,
0x3c
,
0x4b
,
0x91
,
0x65
,
0xd2
,
0x6e
,
0xb3
,
0xca
,
0x0e
,
0xde
,
0xc2
,
0x98
,
0x25
,
0x6d
,
0xe2
,
0x4e
,
0x7a
,
0x8c
,
0xd4
,
0x11
,
0x5c
,
0xd4
,
0xec
,
0xfd
,
0xa8
,
0xf9
,
0x77
,
0x85
,
0x12
,
0xfe
,
0x73
,
0xd2
,
0xcb
,
0x63
,
0x8b
,
0x43
,
0xac
,
0x1e
,
0x61
,
0x22
,
0x8a
,
0xb2
,
0x2b
,
0xf2
,
0x26
,
0x8b
,
0x8d
,
0x31
,
0xde
,
0x86
,
0x7c
,
0x8e
,
0x7e
,
0x3d
,
0x56
,
0x87
,
0x58
,
0x7d
,
0x15
,
0x00
,
0x2a
,
0x39
,
0xfb
,
0x4c
,
0xed
,
0xdb
,
0xe6
,
0x1d
,
0x6b
,
0xb8
,
0xd1
,
0xd4
,
0x78
,
0xb3
,
0x88
,
0xd1
,
0xb6
,
0x66
,
0xe9
,
0x49
,
0xef
,
0xef
,
0x77
,
0x89
,
0xf1
,
0x1e
,
0xa6
,
0x82
,
0xf2
,
0xe7
,
0xc4
,
0xeb
,
0x06
,
0x9c
,
0xc3
,
0xbc
,
0xb1
,
0x2b
,
0x2c
,
0x4a
,
0x37
,
0xe1
,
0x84
,
0xe0
,
0x03
,
0x5c
,
0xb3
,
0x27
,
0xa6
,
0xd0
,
0xb8
,
0xc5
,
0x96
,
0x52
,
0x1b
,
0x65
,
0x48
,
0x5f
,
0x5d
,
0x50
,
0x9c
,
0x03
,
0x72
,
0xd2
,
0x5d
,
0x78
,
0x59
,
0x7b
,
0x1b
,
0xd6
,
0xe4
,
0x4c
,
0x39
,
0x14
,
0xf7
,
0x97
,
0x37
,
0xfa
,
0x9f
,
0xfc
,
0x1f
,
0x4f
,
0xdf
,
0x01
,
0x00
,
0x00
,
0xff
,
0xff
,
0x8a
,
0x95
,
0x5e
,
0xd6
,
0x30
,
0x02
,
0x00
,
0x00
,
}
plugin/dapp/autonomy/types/project.pb.go
View file @
503acbfc
This diff is collapsed.
Click to expand it.
plugin/dapp/autonomy/types/rule.pb.go
View file @
503acbfc
This diff is collapsed.
Click to expand it.
plugin/dapp/autonomy/types/types.go
View file @
503acbfc
...
...
@@ -55,6 +55,7 @@ func (a *AutonomyType) GetLogMap() map[int64]*types.LogInfo {
TyLogPropProject
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalProject
{}),
Name
:
"LogPropProject"
},
TyLogRvkPropProject
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalProject
{}),
Name
:
"LogRvkPropProject"
},
TyLogVotePropProject
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalProject
{}),
Name
:
"LogVotePropProject"
},
TyLogPubVotePropProject
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalProject
{}),
Name
:
"LogPubVotePropProject"
},
TyLogTmintPropProject
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalProject
{}),
Name
:
"LogTmintPropProject"
},
TyLogPropRule
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalRule
{}),
Name
:
"LogPropRule"
},
...
...
@@ -80,6 +81,7 @@ func (a *AutonomyType) GetTypeMap() map[string]int32 {
"PropProject"
:
AutonomyActionPropProject
,
"RvkPropProject"
:
AutonomyActionRvkPropProject
,
"VotePropProject"
:
AutonomyActionVotePropProject
,
"PubVotePropProject"
:
AutonomyActionPubVotePropProject
,
"TmintPropProject"
:
AutonomyActionTmintPropProject
,
"PropRule"
:
AutonomyActionPropRule
,
...
...
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