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
2138931a
Commit
2138931a
authored
Jul 25, 2019
by
liuyuhang
Committed by
33cn
Aug 14, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add comment cmd
parent
19ee94ab
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
305 additions
and
29 deletions
+305
-29
proposal_board.go
plugin/dapp/autonomy/commands/proposal_board.go
+2
-0
proposal_rule.go
plugin/dapp/autonomy/commands/proposal_rule.go
+81
-2
autonomy.go
plugin/dapp/autonomy/executor/autonomy.go
+1
-0
boardaction.go
plugin/dapp/autonomy/executor/boardaction.go
+2
-2
boardaction_test.go
plugin/dapp/autonomy/executor/boardaction_test.go
+1
-1
exec_del_local.go
plugin/dapp/autonomy/executor/exec_del_local.go
+6
-0
projectaction.go
plugin/dapp/autonomy/executor/projectaction.go
+51
-14
projectaction_test.go
plugin/dapp/autonomy/executor/projectaction_test.go
+19
-4
query.go
plugin/dapp/autonomy/executor/query.go
+7
-0
rule.go
plugin/dapp/autonomy/executor/rule.go
+69
-1
ruleaction.go
plugin/dapp/autonomy/executor/ruleaction.go
+3
-3
ruleaction_test.go
plugin/dapp/autonomy/executor/ruleaction_test.go
+1
-1
rule.proto
plugin/dapp/autonomy/proto/rule.proto
+20
-1
jrpc.go
plugin/dapp/autonomy/rpc/jrpc.go
+15
-0
rpc.go
plugin/dapp/autonomy/rpc/rpc.go
+16
-0
autonomy.pb.go
plugin/dapp/autonomy/types/autonomy.pb.go
+3
-0
const.go
plugin/dapp/autonomy/types/const.go
+3
-0
rule.pb.go
plugin/dapp/autonomy/types/rule.pb.go
+0
-0
types.go
plugin/dapp/autonomy/types/types.go
+5
-0
No files found.
plugin/dapp/autonomy/commands/proposal_board.go
View file @
2138931a
...
@@ -53,6 +53,8 @@ func AutonomyCmd() *cobra.Command {
...
@@ -53,6 +53,8 @@ func AutonomyCmd() *cobra.Command {
cmd
.
AddCommand
(
cmd
.
AddCommand
(
TransferFundCmd
(),
TransferFundCmd
(),
CommentProposalCmd
(),
ShowProposalCommentCmd
(),
)
)
return
cmd
return
cmd
...
...
plugin/dapp/autonomy/commands/proposal_rule.go
View file @
2138931a
...
@@ -257,4 +257,84 @@ func transferFund(cmd *cobra.Command, args []string) {
...
@@ -257,4 +257,84 @@ func transferFund(cmd *cobra.Command, args []string) {
var
res
string
var
res
string
ctx
:=
jsonrpc
.
NewRPCCtx
(
rpcLaddr
,
"autonomy.TransferFundTx"
,
params
,
&
res
)
ctx
:=
jsonrpc
.
NewRPCCtx
(
rpcLaddr
,
"autonomy.TransferFundTx"
,
params
,
&
res
)
ctx
.
RunWithoutMarshal
()
ctx
.
RunWithoutMarshal
()
}
}
\ No newline at end of file
// CommentProposalCmd 评论提案
func
CommentProposalCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"comment"
,
Short
:
"comment proposal"
,
Run
:
commentProposal
,
}
addCommentProposalflags
(
cmd
)
return
cmd
}
func
addCommentProposalflags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
StringP
(
"proposalID"
,
"p"
,
""
,
"proposal ID"
)
cmd
.
MarkFlagRequired
(
"proposalID"
)
cmd
.
Flags
()
.
StringP
(
"repCmtHash"
,
"r"
,
""
,
"reply Comment hash"
)
cmd
.
Flags
()
.
StringP
(
"comment"
,
"c"
,
""
,
"comment"
)
cmd
.
MarkFlagRequired
(
"comment"
)
}
func
commentProposal
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
proposalID
,
_
:=
cmd
.
Flags
()
.
GetString
(
"proposalID"
)
repCmtHash
,
_
:=
cmd
.
Flags
()
.
GetString
(
"repCmtHash"
)
comment
,
_
:=
cmd
.
Flags
()
.
GetString
(
"comment"
)
params
:=
&
auty
.
Comment
{
ProposalID
:
proposalID
,
RepCmtHash
:
repCmtHash
,
Comment
:
comment
,
}
var
res
string
ctx
:=
jsonrpc
.
NewRPCCtx
(
rpcLaddr
,
"autonomy.CommentProposalTx"
,
params
,
&
res
)
ctx
.
RunWithoutMarshal
()
}
// ShowProposalCommentCmd 显示提案评论查询信息
func
ShowProposalCommentCmd
()
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"showComment"
,
Short
:
"show proposal comment info"
,
Run
:
showProposalComment
,
}
addShowProposalCommentflags
(
cmd
)
return
cmd
}
func
addShowProposalCommentflags
(
cmd
*
cobra
.
Command
)
{
cmd
.
Flags
()
.
StringP
(
"proposalID"
,
"p"
,
""
,
"proposal ID"
)
cmd
.
MarkFlagRequired
(
"proposalID"
)
cmd
.
Flags
()
.
Int32P
(
"count"
,
"c"
,
0
,
"count"
)
cmd
.
Flags
()
.
Int32P
(
"direction"
,
"d"
,
0
,
"direction"
)
cmd
.
Flags
()
.
Int64P
(
"index"
,
"i"
,
0
,
"index"
)
}
func
showProposalComment
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
rpcLaddr
,
_
:=
cmd
.
Flags
()
.
GetString
(
"rpc_laddr"
)
propID
,
_
:=
cmd
.
Flags
()
.
GetString
(
"proposalID"
)
count
,
_
:=
cmd
.
Flags
()
.
GetInt32
(
"count"
)
direction
,
_
:=
cmd
.
Flags
()
.
GetInt32
(
"direction"
)
index
,
_
:=
cmd
.
Flags
()
.
GetInt64
(
"index"
)
var
params
rpctypes
.
Query4Jrpc
var
rep
interface
{}
params
.
Execer
=
auty
.
AutonomyX
req
:=
auty
.
ReqQueryProposalComment
{
ProposalID
:
propID
,
Count
:
count
,
Direction
:
direction
,
Index
:
index
,
}
params
.
FuncName
=
auty
.
ListProposalComment
params
.
Payload
=
types
.
MustPBToJSON
(
&
req
)
rep
=
&
auty
.
ReplyQueryProposalComment
{}
ctx
:=
jsonrpc
.
NewRPCCtx
(
rpcLaddr
,
"Chain33.Query"
,
params
,
rep
)
ctx
.
Run
()
}
plugin/dapp/autonomy/executor/autonomy.go
View file @
2138931a
...
@@ -16,6 +16,7 @@ var (
...
@@ -16,6 +16,7 @@ var (
alog
=
log
.
New
(
"module"
,
"execs.autonomy"
)
alog
=
log
.
New
(
"module"
,
"execs.autonomy"
)
driverName
=
auty
.
AutonomyX
driverName
=
auty
.
AutonomyX
autonomyAddr
=
address
.
ExecAddress
(
auty
.
AutonomyX
)
autonomyAddr
=
address
.
ExecAddress
(
auty
.
AutonomyX
)
autonomyFundAddr
=
address
.
ExecAddress
(
"autonomyfund"
)
)
)
...
...
plugin/dapp/autonomy/executor/boardaction.go
View file @
2138931a
...
@@ -220,7 +220,7 @@ func (a *action) votePropBoard(voteProb *auty.VoteProposalBoard) (*types.Receipt
...
@@ -220,7 +220,7 @@ func (a *action) votePropBoard(voteProb *auty.VoteProposalBoard) (*types.Receipt
// 首次进入投票期,即将提案金转入自治系统地址
// 首次进入投票期,即将提案金转入自治系统地址
if
cur
.
Status
==
auty
.
AutonomyStatusProposalBoard
{
if
cur
.
Status
==
auty
.
AutonomyStatusProposalBoard
{
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomy
Fund
Addr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
if
err
!=
nil
{
if
err
!=
nil
{
alog
.
Error
(
"votePropBoard "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
alog
.
Error
(
"votePropBoard "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
return
nil
,
err
...
@@ -311,7 +311,7 @@ func (a *action) tmintPropBoard(tmintProb *auty.TerminateProposalBoard) (*types.
...
@@ -311,7 +311,7 @@ func (a *action) tmintPropBoard(tmintProb *auty.TerminateProposalBoard) (*types.
// 未进行投票情况下,符合提案关闭的也需要扣除提案费用
// 未进行投票情况下,符合提案关闭的也需要扣除提案费用
if
cur
.
Status
==
auty
.
AutonomyStatusProposalBoard
{
if
cur
.
Status
==
auty
.
AutonomyStatusProposalBoard
{
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomy
Fund
Addr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
if
err
!=
nil
{
if
err
!=
nil
{
alog
.
Error
(
"votePropBoard "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
alog
.
Error
(
"votePropBoard "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
return
nil
,
err
...
...
plugin/dapp/autonomy/executor/boardaction_test.go
View file @
2138931a
...
@@ -319,7 +319,7 @@ func voteProposalBoard(t *testing.T, env *execEnv, exec drivers.Driver, stateDB
...
@@ -319,7 +319,7 @@ func voteProposalBoard(t *testing.T, env *execEnv, exec drivers.Driver, stateDB
accCoin
.
SetDB
(
stateDB
)
accCoin
.
SetDB
(
stateDB
)
account
:=
accCoin
.
LoadExecAccount
(
AddrA
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
account
:=
accCoin
.
LoadExecAccount
(
AddrA
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
require
.
Equal
(
t
,
int64
(
0
),
account
.
Frozen
)
require
.
Equal
(
t
,
int64
(
0
),
account
.
Frozen
)
account
=
accCoin
.
LoadExecAccount
(
autonomyAddr
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
account
=
accCoin
.
LoadExecAccount
(
autonomy
Fund
Addr
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
require
.
Equal
(
t
,
int64
(
proposalAmount
),
account
.
Balance
)
require
.
Equal
(
t
,
int64
(
proposalAmount
),
account
.
Balance
)
// status
// status
value
,
err
:=
stateDB
.
Get
(
propBoardID
(
proposalID
))
value
,
err
:=
stateDB
.
Get
(
propBoardID
(
proposalID
))
...
...
plugin/dapp/autonomy/executor/exec_del_local.go
View file @
2138931a
...
@@ -75,4 +75,9 @@ func (a *Autonomy) ExecDelLocal_VotePropRule(payload *auty.VoteProposalRule, tx
...
@@ -75,4 +75,9 @@ func (a *Autonomy) ExecDelLocal_VotePropRule(payload *auty.VoteProposalRule, tx
// ExecDelLocal_TmintPropRule 终止提案规则
// ExecDelLocal_TmintPropRule 终止提案规则
func
(
a
*
Autonomy
)
ExecDelLocal_TmintPropRule
(
payload
*
auty
.
TerminateProposalRule
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
func
(
a
*
Autonomy
)
ExecDelLocal_TmintPropRule
(
payload
*
auty
.
TerminateProposalRule
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
a
.
execDelLocalRule
(
receiptData
)
return
a
.
execDelLocalRule
(
receiptData
)
}
// ExecDelLocal_TmintPropRule 终止提案规则
func
(
a
*
Autonomy
)
ExecDelLocal_Comment
(
payload
*
auty
.
Comment
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
a
.
execDelLocalComment
(
receiptData
)
}
}
\ No newline at end of file
plugin/dapp/autonomy/executor/projectaction.go
View file @
2138931a
...
@@ -38,18 +38,27 @@ func (a *action) propProject(prob *auty.ProposalProject) (*types.Receipt, error)
...
@@ -38,18 +38,27 @@ func (a *action) propProject(prob *auty.ProposalProject) (*types.Receipt, error)
return
nil
,
err
return
nil
,
err
}
}
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
// 冻结提案金
receipt
,
err
:=
a
.
coinsAccount
.
ExecFrozen
(
a
.
fromaddr
,
a
.
execaddr
,
rule
.
ProposalAmount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecFrozen
(
a
.
fromaddr
,
a
.
execaddr
,
rule
.
ProposalAmount
)
if
err
!=
nil
{
if
err
!=
nil
{
alog
.
Error
(
"propProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecFrozen
amount"
,
rule
.
ProposalAmount
)
alog
.
Error
(
"propProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecFrozen
proposal amount"
,
rule
.
ProposalAmount
,
"error"
,
err
)
return
nil
,
err
return
nil
,
err
}
}
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
logs
=
append
(
logs
,
receipt
.
Logs
...
)
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
// 冻结项目金
receiptPrj
,
err
:=
a
.
coinsAccount
.
ExecFrozen
(
autonomyFundAddr
,
a
.
execaddr
,
prob
.
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"propProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecFrozen project amount"
,
prob
.
Amount
,
"error"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receiptPrj
.
Logs
...
)
kv
=
append
(
kv
,
receiptPrj
.
KV
...
)
var
isPubVote
bool
var
isPubVote
bool
if
prob
.
Amount
>=
rule
.
LargeProjectAmount
{
if
prob
.
Amount
>=
rule
.
LargeProjectAmount
{
isPubVote
=
true
isPubVote
=
true
...
@@ -107,6 +116,7 @@ func (a *action) rvkPropProject(rvkProb *auty.RevokeProposalProject) (*types.Rec
...
@@ -107,6 +116,7 @@ func (a *action) rvkPropProject(rvkProb *auty.RevokeProposalProject) (*types.Rec
var
logs
[]
*
types
.
ReceiptLog
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
var
kv
[]
*
types
.
KeyValue
// 解冻提案金
receipt
,
err
:=
a
.
coinsAccount
.
ExecActive
(
a
.
fromaddr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecActive
(
a
.
fromaddr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
if
err
!=
nil
{
if
err
!=
nil
{
alog
.
Error
(
"rvkPropProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecActive amount"
,
cur
.
CurRule
.
ProposalAmount
,
"err"
,
err
)
alog
.
Error
(
"rvkPropProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecActive amount"
,
cur
.
CurRule
.
ProposalAmount
,
"err"
,
err
)
...
@@ -115,6 +125,15 @@ func (a *action) rvkPropProject(rvkProb *auty.RevokeProposalProject) (*types.Rec
...
@@ -115,6 +125,15 @@ func (a *action) rvkPropProject(rvkProb *auty.RevokeProposalProject) (*types.Rec
logs
=
append
(
logs
,
receipt
.
Logs
...
)
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
// 解冻项目金
receiptPrj
,
err
:=
a
.
coinsAccount
.
ExecActive
(
autonomyFundAddr
,
a
.
execaddr
,
cur
.
PropProject
.
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"rvkPropProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecActive project amount"
,
cur
.
PropProject
.
Amount
,
"error"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receiptPrj
.
Logs
...
)
kv
=
append
(
kv
,
receiptPrj
.
KV
...
)
cur
.
Status
=
auty
.
AutonomyStatusRvkPropProject
cur
.
Status
=
auty
.
AutonomyStatusRvkPropProject
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
propProjectID
(
rvkProb
.
ProposalID
),
Value
:
types
.
Encode
(
cur
)})
kv
=
append
(
kv
,
&
types
.
KeyValue
{
Key
:
propProjectID
(
rvkProb
.
ProposalID
),
Value
:
types
.
Encode
(
cur
)})
...
@@ -191,7 +210,7 @@ func (a *action) votePropProject(voteProb *auty.VoteProposalProject) (*types.Rec
...
@@ -191,7 +210,7 @@ func (a *action) votePropProject(voteProb *auty.VoteProposalProject) (*types.Rec
// 首次进入投票期,即将提案金转入自治系统地址
// 首次进入投票期,即将提案金转入自治系统地址
if
cur
.
Status
==
auty
.
AutonomyStatusProposalProject
{
if
cur
.
Status
==
auty
.
AutonomyStatusProposalProject
{
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomy
Fund
Addr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
if
err
!=
nil
{
if
err
!=
nil
{
alog
.
Error
(
"votePropProject "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
alog
.
Error
(
"votePropProject "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
return
nil
,
err
...
@@ -218,9 +237,9 @@ func (a *action) votePropProject(voteProb *auty.VoteProposalProject) (*types.Rec
...
@@ -218,9 +237,9 @@ func (a *action) votePropProject(voteProb *auty.VoteProposalProject) (*types.Rec
}
else
{
}
else
{
cur
.
Status
=
auty
.
AutonomyStatusTmintPropProject
cur
.
Status
=
auty
.
AutonomyStatusTmintPropProject
// 提案通过,将工程金额从基金付款给承包商
// 提案通过,将工程金额从基金付款给承包商
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransfer
(
autonomy
Addr
,
cur
.
PropProject
.
ToAddr
,
a
.
execaddr
,
cur
.
PropProject
.
Amount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransfer
Frozen
(
autonomyFund
Addr
,
cur
.
PropProject
.
ToAddr
,
a
.
execaddr
,
cur
.
PropProject
.
Amount
)
if
err
!=
nil
{
if
err
!=
nil
{
alog
.
Error
(
"votePropProject "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransfer to contractor project amount fail"
,
err
)
alog
.
Error
(
"votePropProject "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransfer
Frozen
to contractor project amount fail"
,
err
)
return
nil
,
err
return
nil
,
err
}
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
logs
=
append
(
logs
,
receipt
.
Logs
...
)
...
@@ -304,8 +323,17 @@ func (a *action) pubVotePropProject(voteProb *auty.PubVoteProposalProject) (*typ
...
@@ -304,8 +323,17 @@ func (a *action) pubVotePropProject(voteProb *auty.PubVoteProposalProject) (*typ
if
cur
.
PubVote
.
TotalVotes
!=
0
&&
if
cur
.
PubVote
.
TotalVotes
!=
0
&&
float32
(
cur
.
PubVote
.
OpposeVotes
)
/
float32
(
cur
.
PubVote
.
TotalVotes
)
>=
float32
(
cur
.
CurRule
.
PubOpposeRatio
)
/
100.0
{
float32
(
cur
.
PubVote
.
OpposeVotes
)
/
float32
(
cur
.
PubVote
.
TotalVotes
)
>=
float32
(
cur
.
CurRule
.
PubOpposeRatio
)
/
100.0
{
cur
.
PubVote
.
PubPass
=
false
cur
.
PubVote
.
PubPass
=
false
cur
.
PropProject
.
RealEndBlockHeight
=
a
.
height
cur
.
PropProject
.
RealEndBlockHeight
=
a
.
height
// 解冻项目金
receiptPrj
,
err
:=
a
.
coinsAccount
.
ExecActive
(
autonomyFundAddr
,
a
.
execaddr
,
cur
.
PropProject
.
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"pubVotePropProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecActive project amount"
,
cur
.
PropProject
.
Amount
,
"error"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receiptPrj
.
Logs
...
)
kv
=
append
(
kv
,
receiptPrj
.
KV
...
)
}
}
key
:=
propProjectID
(
voteProb
.
ProposalID
)
key
:=
propProjectID
(
voteProb
.
ProposalID
)
...
@@ -394,9 +422,9 @@ func (a *action) tmintPropProject(tmintProb *auty.TerminateProposalProject) (*ty
...
@@ -394,9 +422,9 @@ func (a *action) tmintPropProject(tmintProb *auty.TerminateProposalProject) (*ty
// 如果为提案状态,则判断是否需要扣除提案费
// 如果为提案状态,则判断是否需要扣除提案费
if
cur
.
Status
==
auty
.
AutonomyStatusProposalProject
&&
a
.
height
>
end
{
if
cur
.
Status
==
auty
.
AutonomyStatusProposalProject
&&
a
.
height
>
end
{
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomy
Fund
Addr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
if
err
!=
nil
{
if
err
!=
nil
{
alog
.
Error
(
"
vote
PropProject "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
alog
.
Error
(
"
tmint
PropProject "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
return
nil
,
err
}
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
logs
=
append
(
logs
,
receipt
.
Logs
...
)
...
@@ -404,15 +432,24 @@ func (a *action) tmintPropProject(tmintProb *auty.TerminateProposalProject) (*ty
...
@@ -404,15 +432,24 @@ func (a *action) tmintPropProject(tmintProb *auty.TerminateProposalProject) (*ty
}
}
if
(
cur
.
PubVote
.
Publicity
&&
cur
.
PubVote
.
PubPass
)
||
// 需要公示且公示通过
if
(
cur
.
PubVote
.
Publicity
&&
cur
.
PubVote
.
PubPass
)
||
// 需要公示且公示通过
(
!
cur
.
PubVote
.
Publicity
&&
cur
.
BoardVoteRes
.
Pass
){
// 不需要公示且董事会通过
(
!
cur
.
PubVote
.
Publicity
&&
cur
.
BoardVoteRes
.
Pass
)
{
// 不需要公示且董事会通过
// 提案通过,将工程金额从基金付款给承包商
// 提案通过,将工程金额从基金付款给承包商
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransfer
(
autonomy
Addr
,
cur
.
PropProject
.
ToAddr
,
a
.
execaddr
,
cur
.
PropProject
.
Amount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransfer
Frozen
(
autonomyFund
Addr
,
cur
.
PropProject
.
ToAddr
,
a
.
execaddr
,
cur
.
PropProject
.
Amount
)
if
err
!=
nil
{
if
err
!=
nil
{
alog
.
Error
(
"tmintPropProject "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransfer to contractor project amount fail"
,
err
)
alog
.
Error
(
"tmintPropProject "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransfer
Frozen
to contractor project amount fail"
,
err
)
return
nil
,
err
return
nil
,
err
}
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
}
else
{
// 解冻项目金
receiptPrj
,
err
:=
a
.
coinsAccount
.
ExecActive
(
autonomyFundAddr
,
a
.
execaddr
,
cur
.
PropProject
.
Amount
)
if
err
!=
nil
{
alog
.
Error
(
"tmintPropProject "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecActive project amount"
,
cur
.
PropProject
.
Amount
,
"error"
,
err
)
return
nil
,
err
}
logs
=
append
(
logs
,
receiptPrj
.
Logs
...
)
kv
=
append
(
kv
,
receiptPrj
.
KV
...
)
}
}
cur
.
Status
=
auty
.
AutonomyStatusTmintPropProject
cur
.
Status
=
auty
.
AutonomyStatusTmintPropProject
...
...
plugin/dapp/autonomy/executor/projectaction_test.go
View file @
2138931a
...
@@ -59,6 +59,17 @@ func InitRule(stateDB dbm.KV) {
...
@@ -59,6 +59,17 @@ func InitRule(stateDB dbm.KV) {
stateDB
.
Set
(
activeRuleID
(),
types
.
Encode
(
rule
))
stateDB
.
Set
(
activeRuleID
(),
types
.
Encode
(
rule
))
}
}
func
InitFund
(
stateDB
dbm
.
KV
,
amount
int64
)
{
accountA
:=
types
.
Account
{
Balance
:
amount
,
Frozen
:
0
,
Addr
:
autonomyFundAddr
,
}
accCoin
:=
account
.
NewCoinsAccount
()
accCoin
.
SetDB
(
stateDB
)
accCoin
.
SaveExecAccount
(
autonomyAddr
,
&
accountA
)
}
func
TestPropProject
(
t
*
testing
.
T
)
{
func
TestPropProject
(
t
*
testing
.
T
)
{
env
,
exec
,
_
,
_
:=
InitEnv
()
env
,
exec
,
_
,
_
:=
InitEnv
()
...
@@ -110,6 +121,7 @@ func TestPropProject(t *testing.T) {
...
@@ -110,6 +121,7 @@ func TestPropProject(t *testing.T) {
func
TestRevokeProposalProject
(
t
*
testing
.
T
)
{
func
TestRevokeProposalProject
(
t
*
testing
.
T
)
{
env
,
exec
,
stateDB
,
kvdb
:=
InitEnv
()
env
,
exec
,
stateDB
,
kvdb
:=
InitEnv
()
InitBoard
(
stateDB
)
InitBoard
(
stateDB
)
InitFund
(
stateDB
,
testProjectAmount
)
// PropProject
// PropProject
testPropProject
(
t
,
env
,
exec
,
stateDB
,
kvdb
,
true
)
testPropProject
(
t
,
env
,
exec
,
stateDB
,
kvdb
,
true
)
//RevokeProposalProject
//RevokeProposalProject
...
@@ -119,6 +131,7 @@ func TestRevokeProposalProject(t *testing.T) {
...
@@ -119,6 +131,7 @@ func TestRevokeProposalProject(t *testing.T) {
func
TestVoteProposalProject
(
t
*
testing
.
T
)
{
func
TestVoteProposalProject
(
t
*
testing
.
T
)
{
env
,
exec
,
stateDB
,
kvdb
:=
InitEnv
()
env
,
exec
,
stateDB
,
kvdb
:=
InitEnv
()
InitBoard
(
stateDB
)
InitBoard
(
stateDB
)
InitFund
(
stateDB
,
testProjectAmount
)
// PropProject
// PropProject
testPropProject
(
t
,
env
,
exec
,
stateDB
,
kvdb
,
true
)
testPropProject
(
t
,
env
,
exec
,
stateDB
,
kvdb
,
true
)
//voteProposalProject
//voteProposalProject
...
@@ -131,6 +144,7 @@ func TestPubVoteProposalProject(t *testing.T) {
...
@@ -131,6 +144,7 @@ func TestPubVoteProposalProject(t *testing.T) {
env
,
exec
,
stateDB
,
kvdb
:=
InitEnv
()
env
,
exec
,
stateDB
,
kvdb
:=
InitEnv
()
InitBoard
(
stateDB
)
InitBoard
(
stateDB
)
InitRule
(
stateDB
)
InitRule
(
stateDB
)
InitFund
(
stateDB
,
testProjectAmount
)
// PropProject
// PropProject
testPropProject
(
t
,
env
,
exec
,
stateDB
,
kvdb
,
true
)
testPropProject
(
t
,
env
,
exec
,
stateDB
,
kvdb
,
true
)
// voteProposalProject
// voteProposalProject
...
@@ -145,6 +159,7 @@ func TestPubVoteProposalProject(t *testing.T) {
...
@@ -145,6 +159,7 @@ func TestPubVoteProposalProject(t *testing.T) {
func
TestTerminateProposalProject
(
t
*
testing
.
T
)
{
func
TestTerminateProposalProject
(
t
*
testing
.
T
)
{
env
,
exec
,
stateDB
,
kvdb
:=
InitEnv
()
env
,
exec
,
stateDB
,
kvdb
:=
InitEnv
()
InitBoard
(
stateDB
)
InitBoard
(
stateDB
)
InitFund
(
stateDB
,
testProjectAmount
)
// PropProject
// PropProject
testPropProject
(
t
,
env
,
exec
,
stateDB
,
kvdb
,
true
)
testPropProject
(
t
,
env
,
exec
,
stateDB
,
kvdb
,
true
)
//terminateProposalProject
//terminateProposalProject
...
@@ -360,8 +375,8 @@ func checkVoteProposalProjectResult(t *testing.T, stateDB dbm.KV, proposalID str
...
@@ -360,8 +375,8 @@ func checkVoteProposalProjectResult(t *testing.T, stateDB dbm.KV, proposalID str
accCoin
.
SetDB
(
stateDB
)
accCoin
.
SetDB
(
stateDB
)
account
:=
accCoin
.
LoadExecAccount
(
AddrA
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
account
:=
accCoin
.
LoadExecAccount
(
AddrA
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
require
.
Equal
(
t
,
int64
(
0
),
account
.
Frozen
)
require
.
Equal
(
t
,
int64
(
0
),
account
.
Frozen
)
account
=
accCoin
.
LoadExecAccount
(
autonomyAddr
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
account
=
accCoin
.
LoadExecAccount
(
autonomy
Fund
Addr
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
require
.
Equal
(
t
,
int64
(
proposalAmount
)
-
testProjectAmount
,
account
.
Balance
)
require
.
Equal
(
t
,
int64
(
proposalAmount
),
account
.
Balance
)
// status
// status
value
,
err
:=
stateDB
.
Get
(
propProjectID
(
proposalID
))
value
,
err
:=
stateDB
.
Get
(
propProjectID
(
proposalID
))
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
...
@@ -459,8 +474,8 @@ func checkPubVoteProposalProjectResult(t *testing.T, stateDB dbm.KV, proposalID
...
@@ -459,8 +474,8 @@ func checkPubVoteProposalProjectResult(t *testing.T, stateDB dbm.KV, proposalID
accCoin
.
SetDB
(
stateDB
)
accCoin
.
SetDB
(
stateDB
)
account
:=
accCoin
.
LoadExecAccount
(
AddrA
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
account
:=
accCoin
.
LoadExecAccount
(
AddrA
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
require
.
Equal
(
t
,
int64
(
0
),
account
.
Frozen
)
require
.
Equal
(
t
,
int64
(
0
),
account
.
Frozen
)
account
=
accCoin
.
LoadExecAccount
(
autonomyAddr
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
account
=
accCoin
.
LoadExecAccount
(
autonomy
Fund
Addr
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
require
.
Equal
(
t
,
int64
(
proposalAmount
),
account
.
Balance
)
require
.
Equal
(
t
,
int64
(
proposalAmount
)
+
testProjectAmount
,
account
.
Balance
)
// status
// status
value
,
err
:=
stateDB
.
Get
(
propProjectID
(
proposalID
))
value
,
err
:=
stateDB
.
Get
(
propProjectID
(
proposalID
))
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
...
...
plugin/dapp/autonomy/executor/query.go
View file @
2138931a
...
@@ -39,4 +39,10 @@ func (a *Autonomy) Query_GetProposalRule(in *types.ReqString) (types.Message, er
...
@@ -39,4 +39,10 @@ func (a *Autonomy) Query_GetProposalRule(in *types.ReqString) (types.Message, er
// Query_ListProposalRule 批量查询
// Query_ListProposalRule 批量查询
func
(
a
*
Autonomy
)
Query_ListProposalRule
(
in
*
auty
.
ReqQueryProposalRule
)
(
types
.
Message
,
error
)
{
func
(
a
*
Autonomy
)
Query_ListProposalRule
(
in
*
auty
.
ReqQueryProposalRule
)
(
types
.
Message
,
error
)
{
return
a
.
listProposalRule
(
in
)
return
a
.
listProposalRule
(
in
)
}
// Query_ListProposalComment 批量查询提案评论
func
(
a
*
Autonomy
)
Query_ListProposalComment
(
in
*
auty
.
ReqQueryProposalComment
)
(
types
.
Message
,
error
)
{
return
a
.
listProposalComment
(
in
)
}
}
\ No newline at end of file
plugin/dapp/autonomy/executor/rule.go
View file @
2138931a
...
@@ -173,7 +173,74 @@ func (a *Autonomy) execLocalComment(receiptData *types.ReceiptData) (*types.Loca
...
@@ -173,7 +173,74 @@ func (a *Autonomy) execLocalComment(receiptData *types.ReceiptData) (*types.Loca
func
saveCommentHeightIndex
(
res
*
auty
.
ReceiptProposalComment
)
(
kvs
[]
*
types
.
KeyValue
)
{
func
saveCommentHeightIndex
(
res
*
auty
.
ReceiptProposalComment
)
(
kvs
[]
*
types
.
KeyValue
)
{
kv
:=
&
types
.
KeyValue
{}
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcCommentHeight
(
res
.
Cmt
.
ProposalID
,
dapp
.
HeightIndexStr
(
res
.
Height
,
int64
(
res
.
Index
)))
kv
.
Key
=
calcCommentHeight
(
res
.
Cmt
.
ProposalID
,
dapp
.
HeightIndexStr
(
res
.
Height
,
int64
(
res
.
Index
)))
kv
.
Value
=
types
.
Encode
(
&
types
.
ReqString
{
Data
:
res
.
Cmt
.
Comment
})
kv
.
Value
=
types
.
Encode
(
&
auty
.
RelationCmt
{
RepCmtHash
:
res
.
Cmt
.
RepCmtHash
,
Comment
:
res
.
Cmt
.
Comment
})
kvs
=
append
(
kvs
,
kv
)
kvs
=
append
(
kvs
,
kv
)
return
kvs
return
kvs
}
func
(
a
*
Autonomy
)
execDelLocalComment
(
receiptData
*
types
.
ReceiptData
)
(
*
types
.
LocalDBSet
,
error
)
{
dbSet
:=
&
types
.
LocalDBSet
{}
var
set
[]
*
types
.
KeyValue
for
_
,
log
:=
range
receiptData
.
Logs
{
switch
log
.
Ty
{
case
auty
.
TyLogCommentProp
:
{
var
receipt
auty
.
ReceiptProposalComment
err
:=
types
.
Decode
(
log
.
Log
,
&
receipt
)
if
err
!=
nil
{
return
nil
,
err
}
kv
:=
delCommentHeightIndex
(
&
receipt
)
set
=
append
(
set
,
kv
...
)
}
default
:
break
}
}
dbSet
.
KV
=
append
(
dbSet
.
KV
,
set
...
)
return
dbSet
,
nil
}
func
delCommentHeightIndex
(
res
*
auty
.
ReceiptProposalComment
)
(
kvs
[]
*
types
.
KeyValue
)
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcCommentHeight
(
res
.
Cmt
.
ProposalID
,
dapp
.
HeightIndexStr
(
res
.
Height
,
int64
(
res
.
Index
)))
kv
.
Value
=
nil
kvs
=
append
(
kvs
,
kv
)
return
kvs
}
func
(
a
*
Autonomy
)
listProposalComment
(
req
*
auty
.
ReqQueryProposalComment
)
(
types
.
Message
,
error
)
{
if
req
==
nil
{
return
nil
,
types
.
ErrInvalidParam
}
var
key
[]
byte
var
values
[][]
byte
var
err
error
localDb
:=
a
.
GetLocalDB
()
if
req
.
GetIndex
()
==
-
1
{
key
=
nil
}
else
{
//翻页查找指定的txhash列表
heightstr
:=
genHeightIndexStr
(
req
.
GetIndex
())
key
=
calcCommentHeight
(
req
.
ProposalID
,
heightstr
)
}
prefix
:=
calcCommentHeight
(
req
.
ProposalID
,
""
)
values
,
err
=
localDb
.
List
(
prefix
,
key
,
req
.
Count
,
req
.
GetDirection
())
if
err
!=
nil
{
return
nil
,
err
}
if
len
(
values
)
==
0
{
return
nil
,
types
.
ErrNotFound
}
var
rep
auty
.
ReplyQueryProposalComment
for
_
,
value
:=
range
values
{
cmt
:=
&
auty
.
RelationCmt
{}
err
=
types
.
Decode
(
value
,
cmt
)
if
err
!=
nil
{
return
nil
,
err
}
rep
.
RltCmt
=
append
(
rep
.
RltCmt
,
cmt
)
}
return
&
rep
,
nil
}
}
\ No newline at end of file
plugin/dapp/autonomy/executor/ruleaction.go
View file @
2138931a
...
@@ -188,7 +188,7 @@ func (a *action) votePropRule(voteProb *auty.VoteProposalRule) (*types.Receipt,
...
@@ -188,7 +188,7 @@ func (a *action) votePropRule(voteProb *auty.VoteProposalRule) (*types.Receipt,
// 首次进入投票期,即将提案金转入自治系统地址
// 首次进入投票期,即将提案金转入自治系统地址
if
cur
.
Status
==
auty
.
AutonomyStatusProposalRule
{
if
cur
.
Status
==
auty
.
AutonomyStatusProposalRule
{
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomy
Fund
Addr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
if
err
!=
nil
{
if
err
!=
nil
{
alog
.
Error
(
"votePropRule "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
alog
.
Error
(
"votePropRule "
,
"addr"
,
cur
.
Address
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
return
nil
,
err
...
@@ -281,7 +281,7 @@ func (a *action) tmintPropRule(tmintProb *auty.TerminateProposalRule) (*types.Re
...
@@ -281,7 +281,7 @@ func (a *action) tmintPropRule(tmintProb *auty.TerminateProposalRule) (*types.Re
// 未进行投票情况下,符合提案关闭的也需要扣除提案费用
// 未进行投票情况下,符合提案关闭的也需要扣除提案费用
if
cur
.
Status
==
auty
.
AutonomyStatusProposalRule
{
if
cur
.
Status
==
auty
.
AutonomyStatusProposalRule
{
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomyAddr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransferFrozen
(
cur
.
Address
,
autonomy
Fund
Addr
,
a
.
execaddr
,
cur
.
CurRule
.
ProposalAmount
)
if
err
!=
nil
{
if
err
!=
nil
{
alog
.
Error
(
"votePropRule "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
alog
.
Error
(
"votePropRule "
,
"addr"
,
a
.
fromaddr
,
"execaddr"
,
a
.
execaddr
,
"ExecTransferFrozen amount fail"
,
err
)
return
nil
,
err
return
nil
,
err
...
@@ -315,7 +315,7 @@ func (a *action) transfer(tf *auty.TransferFund) (*types.Receipt, error) {
...
@@ -315,7 +315,7 @@ func (a *action) transfer(tf *auty.TransferFund) (*types.Receipt, error) {
var
logs
[]
*
types
.
ReceiptLog
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
var
kv
[]
*
types
.
KeyValue
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransfer
(
a
.
fromaddr
,
autonomyAddr
,
a
.
execaddr
,
tf
.
Amount
)
receipt
,
err
:=
a
.
coinsAccount
.
ExecTransfer
(
a
.
fromaddr
,
autonomy
Fund
Addr
,
a
.
execaddr
,
tf
.
Amount
)
if
err
!=
nil
{
if
err
!=
nil
{
alog
.
Error
(
"autonomy transfer "
,
"addr"
,
a
.
fromaddr
,
"amount"
,
tf
.
Amount
,
"ExecTransfer fail"
,
err
)
alog
.
Error
(
"autonomy transfer "
,
"addr"
,
a
.
fromaddr
,
"amount"
,
tf
.
Amount
,
"ExecTransfer fail"
,
err
)
return
nil
,
err
return
nil
,
err
...
...
plugin/dapp/autonomy/executor/ruleaction_test.go
View file @
2138931a
...
@@ -263,7 +263,7 @@ func voteProposalRule(t *testing.T, env *execEnv, exec drivers.Driver, stateDB d
...
@@ -263,7 +263,7 @@ func voteProposalRule(t *testing.T, env *execEnv, exec drivers.Driver, stateDB d
accCoin
.
SetDB
(
stateDB
)
accCoin
.
SetDB
(
stateDB
)
account
:=
accCoin
.
LoadExecAccount
(
AddrA
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
account
:=
accCoin
.
LoadExecAccount
(
AddrA
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
require
.
Equal
(
t
,
int64
(
0
),
account
.
Frozen
)
require
.
Equal
(
t
,
int64
(
0
),
account
.
Frozen
)
account
=
accCoin
.
LoadExecAccount
(
autonomyAddr
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
account
=
accCoin
.
LoadExecAccount
(
autonomy
Fund
Addr
,
address
.
ExecAddress
(
auty
.
AutonomyX
))
require
.
Equal
(
t
,
int64
(
proposalAmount
),
account
.
Balance
)
require
.
Equal
(
t
,
int64
(
proposalAmount
),
account
.
Balance
)
// status
// status
value
,
err
:=
stateDB
.
Get
(
propRuleID
(
proposalID
))
value
,
err
:=
stateDB
.
Get
(
propRuleID
(
proposalID
))
...
...
plugin/dapp/autonomy/proto/rule.proto
View file @
2138931a
...
@@ -80,11 +80,29 @@ message TransferFund {
...
@@ -80,11 +80,29 @@ message TransferFund {
// Comment action
// Comment action
message
Comment
{
message
Comment
{
string
proposalID
=
1
;
string
proposalID
=
1
;
string
comment
=
2
;
string
repCmtHash
=
2
;
string
comment
=
3
;
}
}
message
ReceiptProposalComment
{
message
ReceiptProposalComment
{
Comment
cmt
=
1
;
Comment
cmt
=
1
;
int64
height
=
2
;
int64
height
=
2
;
int32
index
=
3
;
int32
index
=
3
;
}
// query
message
ReqQueryProposalComment
{
string
proposalID
=
1
;
int32
count
=
2
;
int32
direction
=
3
;
int64
index
=
4
;
}
message
RelationCmt
{
string
repCmtHash
=
1
;
string
comment
=
2
;
}
message
ReplyQueryProposalComment
{
repeated
RelationCmt
rltCmt
=
1
;
}
}
\ No newline at end of file
plugin/dapp/autonomy/rpc/jrpc.go
View file @
2138931a
...
@@ -199,4 +199,18 @@ func (c *Jrpc) TransferFundTx(parm *auty.TransferFund, result *interface{}) erro
...
@@ -199,4 +199,18 @@ func (c *Jrpc) TransferFundTx(parm *auty.TransferFund, result *interface{}) erro
*
result
=
hex
.
EncodeToString
(
reply
.
Data
)
*
result
=
hex
.
EncodeToString
(
reply
.
Data
)
return
nil
return
nil
}
// CommentProposalTx 提案评论
func
(
c
*
Jrpc
)
CommentProposalTx
(
parm
*
auty
.
Comment
,
result
*
interface
{})
error
{
if
parm
==
nil
{
return
types
.
ErrInvalidParam
}
reply
,
err
:=
c
.
cli
.
commentProposal
(
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 @
2138931a
...
@@ -222,4 +222,19 @@ func (c *channelClient) transferFund(ctx context.Context, head *auty.TransferFun
...
@@ -222,4 +222,19 @@ func (c *channelClient) transferFund(ctx context.Context, head *auty.TransferFun
return
nil
,
err
return
nil
,
err
}
}
return
&
types
.
UnsignTx
{
Data
:
data
},
nil
return
&
types
.
UnsignTx
{
Data
:
data
},
nil
}
func
(
c
*
channelClient
)
commentProposal
(
ctx
context
.
Context
,
head
*
auty
.
Comment
)
(
*
types
.
UnsignTx
,
error
)
{
val
:=
&
auty
.
AutonomyAction
{
Ty
:
auty
.
AutonomyActionCommentProp
,
Value
:
&
auty
.
AutonomyAction_CommentProp
{
CommentProp
:
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 @
2138931a
...
@@ -48,6 +48,9 @@ It has these top-level messages:
...
@@ -48,6 +48,9 @@ It has these top-level messages:
TransferFund
TransferFund
Comment
Comment
ReceiptProposalComment
ReceiptProposalComment
ReqQueryProposalComment
RelationCmt
ReplyQueryProposalComment
*/
*/
package
types
package
types
...
...
plugin/dapp/autonomy/types/const.go
View file @
2138931a
...
@@ -23,6 +23,7 @@ const (
...
@@ -23,6 +23,7 @@ const (
AutonomyActionTmintPropRule
AutonomyActionTmintPropRule
AutonomyActionTransfer
AutonomyActionTransfer
AutonomyActionCommentProp
//log for autonomy
//log for autonomy
TyLogPropBoard
=
2101
TyLogPropBoard
=
2101
...
@@ -80,6 +81,8 @@ const (
...
@@ -80,6 +81,8 @@ const (
GetProposalRule
=
"GetProposalRule"
GetProposalRule
=
"GetProposalRule"
// ListProposalRule
// ListProposalRule
ListProposalRule
=
"ListProposalRule"
ListProposalRule
=
"ListProposalRule"
// ListProposalComment
ListProposalComment
=
"ListProposalComment"
)
)
...
...
plugin/dapp/autonomy/types/rule.pb.go
View file @
2138931a
This diff is collapsed.
Click to expand it.
plugin/dapp/autonomy/types/types.go
View file @
2138931a
...
@@ -62,6 +62,9 @@ func (a *AutonomyType) GetLogMap() map[int64]*types.LogInfo {
...
@@ -62,6 +62,9 @@ func (a *AutonomyType) GetLogMap() map[int64]*types.LogInfo {
TyLogRvkPropRule
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalRule
{}),
Name
:
"LogRvkPropRule"
},
TyLogRvkPropRule
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalRule
{}),
Name
:
"LogRvkPropRule"
},
TyLogVotePropRule
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalRule
{}),
Name
:
"LogVotePropRule"
},
TyLogVotePropRule
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalRule
{}),
Name
:
"LogVotePropRule"
},
TyLogTmintPropRule
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalRule
{}),
Name
:
"LogTmintPropRule"
},
TyLogTmintPropRule
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalRule
{}),
Name
:
"LogTmintPropRule"
},
TyLogCommentProp
:
{
Ty
:
reflect
.
TypeOf
(
ReceiptProposalComment
{}),
Name
:
"LogCommentProp"
},
}
}
}
}
...
@@ -90,5 +93,6 @@ func (a *AutonomyType) GetTypeMap() map[string]int32 {
...
@@ -90,5 +93,6 @@ func (a *AutonomyType) GetTypeMap() map[string]int32 {
"TmintPropRule"
:
AutonomyActionTmintPropRule
,
"TmintPropRule"
:
AutonomyActionTmintPropRule
,
"Transfer"
:
AutonomyActionTransfer
,
"Transfer"
:
AutonomyActionTransfer
,
"CommentProp"
:
AutonomyActionCommentProp
,
}
}
}
}
\ No newline at end of file
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