Commit 15fc6a0d authored by jiangpeng's avatar jiangpeng Committed by vipwzw

vote:check vote time in tx execution stage

parent d9cf7b75
......@@ -165,9 +165,21 @@ func (a *action) commitVote(commit *vty.CommitVote) (*types.Receipt, error) {
receipt := &types.Receipt{Ty: types.ExecOk}
vote, err := a.getVoteInfo(commit.VoteID)
if err != nil {
elog.Error("vote exec commitVote", "txHash", a.txHash, "get vote err", err)
elog.Error("vote exec commitVote", "txHash", a.txHash, "vid", commit.VoteID, "get vote err", err)
return nil, errStateDBGet
}
// 由于目前底层检测交易阶段提供区块时间可能不是最新区块的,依赖区块时间的比较需要放在执行阶段处理
if vote.BeginTimestamp > a.blockTime {
elog.Error("vote exec commitVote", "txHash", a.txHash, "vid", commit.VoteID,
"beginTime", vote.BeginTimestamp, "blockTime", a.blockTime, "err", errVoteNotStarted)
return nil, errVoteNotStarted
}
if vote.EndTimestamp <= a.blockTime {
elog.Error("vote exec commitVote", "txHash", a.txHash, "vid", commit.VoteID,
"endTime", vote.EndTimestamp, "blockTime", a.blockTime, "err", errVoteAlreadyFinished)
return nil, errVoteAlreadyFinished
}
group, err := a.getGroupInfo(vote.GroupID)
if err != nil {
elog.Error("vote exec commitVote", "txHash", a.txHash, "get group err", err)
......
......@@ -37,7 +37,7 @@ func (v *vote) CheckTx(tx *types.Transaction, index int) error {
}
if err != nil {
elog.Error("vote CheckTx", "txHash", txHash, "actionName", tx.ActionName(), "err", err, "actionData", action)
elog.Error("vote CheckTx", "txHash", txHash, "actionName", tx.ActionName(), "err", err, "actionData", action.String())
}
return err
}
......@@ -152,13 +152,6 @@ func (v *vote) checkCommitVote(commit *vty.CommitVote, tx *types.Transaction, in
return err
}
if voteInfo.BeginTimestamp > action.blockTime {
return errVoteNotStarted
}
if voteInfo.EndTimestamp <= action.blockTime {
return errVoteAlreadyFinished
}
if voteInfo.Status == voteStatusClosed {
return errVoteAlreadyClosed
}
......
......@@ -146,7 +146,6 @@ func TestVote_CheckTx_CommitVote(t *testing.T) {
groupID := formatGroupID(dapp.HeightIndexStr(testHeight, 0))
voteID := formatVoteID(dapp.HeightIndexStr(testHeight, 1))
vote2 := formatVoteID(dapp.HeightIndexStr(testHeight, 7))
tcArr := []*testcase{{
index: 0,
payload: &vty.CreateGroup{Name: "test", Members: []*vty.GroupMember{{Addr: testAddrs[0]}}},
......@@ -193,8 +192,9 @@ func TestVote_CheckTx_CommitVote(t *testing.T) {
execType: testTypeExecLocal,
}, {
index: 8,
payload: &vty.CommitVote{VoteID: vote2},
expectCheckErr: errVoteNotStarted,
payload: &vty.CommitVote{VoteID: formatVoteID(dapp.HeightIndexStr(testHeight, 7))},
execType: testTypeExec,
expectExecErr: errVoteNotStarted,
}}
testExec(t, nil, testTypeCheckTx, tcArr, privKeys[0])
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment