Documentation
¶
Index ¶
- Constants
- Variables
- func EncodeCastVote(cv CastVote) ([]byte, error)
- func EncodeCastVoteReply(cvr CastVoteReply) ([]byte, error)
- func EncodeInventory(i Inventory) ([]byte, error)
- func EncodeInventoryReply(ir InventoryReply) ([]byte, error)
- func EncodeLoadVoteResults(lvr LoadVoteResults) ([]byte, error)
- func EncodeLoadVoteResultsReply(reply LoadVoteResultsReply) ([]byte, error)
- func EncodeStartVote(v StartVote) ([]byte, error)
- func EncodeStartVoteReply(v StartVoteReply) ([]byte, error)
- func EncodeVote(v Vote) ([]byte, error)
- func EncodeVoteDetails(vd VoteDetails) ([]byte, error)
- func EncodeVoteDetailsReply(vdr VoteDetailsReply) ([]byte, error)
- func EncodeVoteResults(v VoteResults) ([]byte, error)
- func EncodeVoteResultsReply(v VoteResultsReply) ([]byte, error)
- func EncodeVoteSummary(v VoteSummary) ([]byte, error)
- func EncodeVoteSummaryReply(v VoteSummaryReply) ([]byte, error)
- type CastVote
- type CastVoteReply
- type ErrorStatusT
- type Inventory
- type InventoryReply
- type LoadVoteResults
- type LoadVoteResultsReply
- type StartVote
- type StartVoteReply
- type StartVoteTuple
- type UserWeight
- type Vote
- type VoteDetails
- type VoteDetailsReply
- type VoteOption
- type VoteOptionResult
- type VoteResults
- type VoteResultsReply
- type VoteSummary
- type VoteSummaryReply
Constants ¶
const ( Version = "1" ID = "cms" CmdVoteDetails = "votedccdetails" CmdStartVote = "startdccvote" CmdCastVote = "castdccvote" CmdInventory = "cmsinventory" CmdVoteSummary = "votedccsummary" CmdDCCVoteResults = "dccvoteresults" MDStreamVoteBits = 16 // Vote bits and mask MDStreamVoteSnapshot = 17 // Vote tickets and start/end parameters VoteDurationMin = 2016 // Minimum vote duration (in blocks) VoteDurationMax = 4032 // Maximum vote duration (in blocks) // Error status codes ErrorStatusInvalid ErrorStatusT = 0 ErrorStatusInternalError ErrorStatusT = 1 ErrorStatusDCCNotFound ErrorStatusT = 2 ErrorStatusInvalidVoteBit ErrorStatusT = 3 ErrorStatusVoteHasEnded ErrorStatusT = 4 ErrorStatusDuplicateVote ErrorStatusT = 5 ErrorStatusIneligibleUserID ErrorStatusT = 6 ErrorStatusLast ErrorStatusT = 7 // String constant to ensure that the observed dcc vote option is tabulated // as "approved" or "disapproved". DCCApprovalString = "yes" DCCDisapprovalString = "no" )
Plugin settings, kinda doesn't go here but for now it is fine
const VersionStartVote = 1
const VersionStartVoteReply = 1
Variables ¶
var ( // ErrorStatus converts error status codes to human readable text. ErrorStatus = map[ErrorStatusT]string{ ErrorStatusInvalid: "invalid error status", ErrorStatusInternalError: "internal error", ErrorStatusDCCNotFound: "dcc not found", ErrorStatusInvalidVoteBit: "invalid vote bit", ErrorStatusVoteHasEnded: "vote has ended", ErrorStatusDuplicateVote: "duplicate vote", ErrorStatusIneligibleUserID: "inegligible user id", } )
Functions ¶
func EncodeCastVote ¶
EncodeCastVote encodes CastVotes into a JSON byte slice.
func EncodeCastVoteReply ¶
func EncodeCastVoteReply(cvr CastVoteReply) ([]byte, error)
EncodeCastVoteReply encodes CastVoteReply into a JSON byte slice.
func EncodeInventory ¶
EncodeInventory encodes Inventory into a JSON byte slice.
func EncodeInventoryReply ¶
func EncodeInventoryReply(ir InventoryReply) ([]byte, error)
EncodeInventoryReply encodes a InventoryReply into a JSON byte slice.
func EncodeLoadVoteResults ¶
func EncodeLoadVoteResults(lvr LoadVoteResults) ([]byte, error)
EncodeLoadVoteResults encodes a LoadVoteResults into a JSON byte slice.
func EncodeLoadVoteResultsReply ¶
func EncodeLoadVoteResultsReply(reply LoadVoteResultsReply) ([]byte, error)
EncodeLoadVoteResultsReply encodes a LoadVoteResultsReply into a JSON byte slice.
func EncodeStartVote ¶
EncodeStartVote a JSON byte slice.
func EncodeStartVoteReply ¶
func EncodeStartVoteReply(v StartVoteReply) ([]byte, error)
EncodeStartVoteReply encodes StartVoteReply into a JSON byte slice.
func EncodeVote ¶
EncodeVote encodes Vote into a JSON byte slice.
func EncodeVoteDetails ¶
func EncodeVoteDetails(vd VoteDetails) ([]byte, error)
EncodeVoteDetails encodes VoteDetails into a JSON byte slice.
func EncodeVoteDetailsReply ¶
func EncodeVoteDetailsReply(vdr VoteDetailsReply) ([]byte, error)
EncodeVoteDetailsReply encodes VoteDetailsReply into a JSON byte slice.
func EncodeVoteResults ¶
func EncodeVoteResults(v VoteResults) ([]byte, error)
EncodeVoteResults encodes VoteResults into a JSON byte slice.
func EncodeVoteResultsReply ¶
func EncodeVoteResultsReply(v VoteResultsReply) ([]byte, error)
EncodeVoteResultsReply encodes VoteResults into a JSON byte slice.
func EncodeVoteSummary ¶
func EncodeVoteSummary(v VoteSummary) ([]byte, error)
EncodeVoteSummary encodes VoteSummary into a JSON byte slice.
func EncodeVoteSummaryReply ¶
func EncodeVoteSummaryReply(v VoteSummaryReply) ([]byte, error)
EncodeVoteSummaryReply encodes VoteSummary into a JSON byte slice.
Types ¶
type CastVote ¶
type CastVote struct {
Token string `json:"token"` // DCC ID
UserID string `json:"publickey"` // User ID provided by cmswww
VoteBit string `json:"votebit"` // Vote bit that was selected, this is encode in hex
Signature string `json:"signature"` // Signature of the Token+VoteBit+UserID by the submitting user.
}
CastVote is a signed vote.
func DecodeCastVote ¶
DecodeCastVote decodes a JSON byte slice into a CastVote.
type CastVoteReply ¶
type CastVoteReply struct {
ClientSignature string `json:"clientsignature"` // Signature that was sent in
Signature string `json:"signature"` // Signature of the ClientSignature
Error string `json:"error"` // Error status message
ErrorStatus ErrorStatusT `json:"errorstatus,omitempty"` // Error status code
}
CastVoteReply contains the signature or error to a cast vote command. The Error and ErrorStatus fields will only be populated if something went wrong while attempting to cast the vote.
func DecodeCastVoteReply ¶
func DecodeCastVoteReply(payload []byte) (*CastVoteReply, error)
DecodeCastVoteReply decodes a JSON byte slice into a CastVote.
type ErrorStatusT ¶
type ErrorStatusT int
type Inventory ¶
type Inventory struct{}
Inventory is used to retrieve the decred plugin inventory.
func DecodeInventory ¶
DecodeInventory decodes a JSON byte slice into a Inventory.
type InventoryReply ¶
type InventoryReply struct {
StartVoteTuples []StartVoteTuple `json:"startvotetuples"` // Start vote tuples
CastVotes []CastVote `json:"castvotes"` // Cast votes
}
InventoryReply returns the cms plugin inventory.
func DecodeInventoryReply ¶
func DecodeInventoryReply(payload []byte) (*InventoryReply, error)
DecodeInventoryReply decodes a JSON byte slice into a inventory.
type LoadVoteResults ¶
type LoadVoteResults struct {
BestBlock uint64 `json:"bestblock"` // Best block height
}
LoadVoteResults creates a vote results entry in the cache for any proposals that have finsished voting but have not yet been added to the lazy loaded vote results table.
func DecodeLoadVoteResults ¶
func DecodeLoadVoteResults(payload []byte) (*LoadVoteResults, error)
DecodeLoadVoteResults decodes a JSON byte slice into a LoadVoteResults.
type LoadVoteResultsReply ¶
type LoadVoteResultsReply struct{}
LoadVoteResultsReply is the reply to the LoadVoteResults command.
func DecodeLoadVoteResultsReply ¶
func DecodeLoadVoteResultsReply(payload []byte) (*LoadVoteResultsReply, error)
DecodeLoadVoteResultsReply decodes a JSON byte slice into a LoadVoteResults.
type StartVote ¶
type StartVote struct {
// decred plugin only data
Version uint `json:"version"` // Version of this structure
Token string `json:"token"` // Token
PublicKey string `json:"publickey"` // Key used for signature.
UserWeights []UserWeight `json:"userweights"` // Array of User ID + weight
Vote Vote `json:"vote"` // Vote + options
Signature string `json:"signature"` // Signature of Votehash
}
StartVote instructs the plugin to commence voting on a proposal with the provided vote bits.
func DecodeStartVote ¶
DecodeStartVote a JSON byte slice into a StartVote.
func (*StartVote) VerifySignature ¶
VerifySignature verifies that the StartVoteV2 signature is correct.
type StartVoteReply ¶
type StartVoteReply struct {
// cms plugin only data
Version uint `json:"version"` // Version of this structure
// Shared data
StartBlockHeight uint32 `json:"startblockheight"` // Block height
StartBlockHash string `json:"startblockhash"` // Block hash
EndHeight uint32 `json:"endheight"` // Height of vote end
}
StartVoteReply is the reply to StartVote.
func DecodeStartVoteReply ¶
func DecodeStartVoteReply(payload []byte) (StartVoteReply, error)
DecodeStartVoteReply decodes a JSON byte slice into a StartVoteReply.
type StartVoteTuple ¶
type StartVoteTuple struct {
StartVote StartVote `json:"startvote"` // Start vote
StartVoteReply StartVoteReply `json:"startvotereply"` // Start vote reply
}
StartVoteTuple is used to return the StartVote and StartVoteReply for a record. StartVoteReply does not contain any record identifying data so it must be returned with the StartVote in order to know what record it belongs to.
type UserWeight ¶
type UserWeight struct {
UserID string `json:"userid"` // Unique user id from cmswww.
Weight int64 `json:"weight"` // Calculated user voted weight, provided by cmswww.
}
UserWeight describes a single vote option.
type Vote ¶
type Vote struct {
Token string `json:"token"` // Token that identifies vote
Mask uint64 `json:"mask"` // Valid votebits
Duration uint32 `json:"duration"` // Duration in blocks
QuorumPercentage uint32 `json:"quorumpercentage"` // Percent of eligible votes required for quorum
PassPercentage uint32 `json:"passpercentage"` // Percent of total votes required to pass
Options []VoteOption `json:"options"` // Vote option
}
Vote represents the vote options for vote that is identified by its token.
func DecodeVote ¶
DecodeVote decodes a JSON byte slice into a Vote.
type VoteDetails ¶
type VoteDetails struct {
Token string `json:"token"` // Censorship token
}
VoteDetails is used to retrieve the voting period details for a record.
func DecodeVoteDetails ¶
func DecodeVoteDetails(payload []byte) (*VoteDetails, error)
DecodeVoteDetails decodes a JSON byte slice into a VoteDetails.
type VoteDetailsReply ¶
type VoteDetailsReply struct {
StartVote StartVote `json:"startvote"` // Vote ballot
StartVoteReply StartVoteReply `json:"startvotereply"` // Start vote snapshot
}
VoteDetailsReply is the reply to VoteDetails.
func DecodeVoteDetailsReply ¶
func DecodeVoteDetailsReply(payload []byte) (*VoteDetailsReply, error)
DecodeVoteReply decodes a JSON byte slice into a VoteDetailsReply.
type VoteOption ¶
type VoteOption struct {
Id string `json:"id"` // Single unique word identifying vote (e.g. yes)
Description string `json:"description"` // Longer description of the vote.
Bits uint64 `json:"bits"` // Bits used for this option
}
VoteOption describes a single vote option.
type VoteOptionResult ¶
type VoteOptionResult struct {
ID string `json:"id"` // Single unique word identifying vote (e.g. yes)
Description string `json:"description"` // Longer description of the vote.
Bits uint64 `json:"bits"` // Bits used for this option
Votes uint64 `json:"votes"` // Number of votes cast for this option
}
VoteOptionResult describes a vote option and the total number of votes that have been cast for this option.
type VoteResults ¶
type VoteResults struct {
Token string `json:"token"` // Censorship token
}
func DecodeVoteResults ¶
func DecodeVoteResults(payload []byte) (*VoteResults, error)
DecodeVoteResults decodes a JSON byte slice into a VoteResults.
type VoteResultsReply ¶
type VoteResultsReply struct {
StartVote StartVote `json:"startvote"` // Original ballot
CastVotes []CastVote `json:"castvotes"` // All votes
}
func DecodeVoteResultsReply ¶
func DecodeVoteResultsReply(payload []byte) (*VoteResultsReply, error)
DecodeVoteResultsReply decodes a JSON byte slice into a VoteResults.
type VoteSummary ¶
type VoteSummary struct {
Token string `json:"token"` // Censorship token
}
VoteSummary requests a summary of a proposal vote. This includes certain voting period parameters and a summary of the vote results.
func DecodeVoteSummary ¶
func DecodeVoteSummary(payload []byte) (*VoteSummary, error)
DecodeVoteSummary decodes a JSON byte slice into a VoteSummary.
type VoteSummaryReply ¶
type VoteSummaryReply struct {
Duration uint32 `json:"duration"` // Vote duration
EndHeight uint32 `json:"endheight"` // End block height
PassPercentage uint32 `json:"passpercentage"` // Percent of total votes required to pass
Results []VoteOptionResult `json:"results"` // Vote results
}
VoteSummaryReply is the reply to the VoteSummary command and returns certain voting period parameters as well as a summary of the vote results.
func DecodeVoteSummaryReply ¶
func DecodeVoteSummaryReply(payload []byte) (*VoteSummaryReply, error)
DecodeVoteSummaryReply decodes a JSON byte slice into a VoteSummaryReply.