2014-09-04 03:32:38 -07:00
|
|
|
package consensus
|
|
|
|
|
|
|
|
import (
|
2014-09-07 02:21:25 -07:00
|
|
|
. "github.com/tendermint/tendermint/blocks"
|
2014-09-04 03:32:38 -07:00
|
|
|
db_ "github.com/tendermint/tendermint/db"
|
|
|
|
. "github.com/tendermint/tendermint/state"
|
|
|
|
)
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
type PrivValidator struct {
|
|
|
|
PrivAccount
|
|
|
|
db *db_.LevelDB
|
|
|
|
}
|
|
|
|
|
2014-09-14 15:37:32 -07:00
|
|
|
// Double signing results in an error.
|
|
|
|
func (pv *PrivValidator) SignProposal(proposal *Proposal) {
|
2014-09-07 02:21:25 -07:00
|
|
|
//TODO: prevent double signing.
|
2014-09-14 15:37:32 -07:00
|
|
|
doc := GenProposalDocument(proposal.Height, proposal.Round, proposal.BlockPartsTotal,
|
|
|
|
proposal.BlockPartsHash, proposal.POLPartsTotal, proposal.POLPartsHash)
|
|
|
|
proposal.Signature = pv.Sign([]byte(doc))
|
2014-09-07 02:21:25 -07:00
|
|
|
}
|
|
|
|
|
2014-09-04 03:32:38 -07:00
|
|
|
// Double signing results in an error.
|
2014-09-14 15:37:32 -07:00
|
|
|
func (pv *PrivValidator) SignVote(vote *Vote) {
|
2014-09-07 02:21:25 -07:00
|
|
|
//TODO: prevent double signing.
|
2014-09-14 15:37:32 -07:00
|
|
|
doc := GenVoteDocument(vote.Type, vote.Height, vote.Round, vote.BlockHash)
|
2014-09-07 02:21:25 -07:00
|
|
|
vote.Signature = pv.Sign([]byte(doc))
|
2014-09-04 03:32:38 -07:00
|
|
|
}
|