Gov module should use byte prefixes instead of strings for keys #4437
Closed
Description
opened on May 29, 2019
Summary of Bug
Currently x/gov
uses strings instead of bytes for storing the keys on the store. This makes it harder to parse/split and adds extra bytes to the keys:
func KeyProposal(proposalID uint64) []byte {
return []byte(fmt.Sprintf("proposals:%d", proposalID))
}
func KeyDeposit(proposalID uint64, depositorAddr sdk.AccAddress) []byte {
return []byte(fmt.Sprintf("deposits:%d:%d", proposalID, depositorAddr))
}
func KeyVote(proposalID uint64, voterAddr sdk.AccAddress) []byte {
return []byte(fmt.Sprintf("votes:%d:%d", proposalID, voterAddr))
}
Suggested changes:
var (
ProposalKeyPrefix = []byte{0x0}
DepositsKeyPrefix = []byte{0x1}
VotesKeyPrefix = []byte{0x2}
)
keyProposal: 0x0<proposalID_bytes>
keyDeposit:0x1<proposalID_bytes><depositorAddress_Bytes>
keyVotes: 0x2<proposalID_bytes><voterAddress_Bytes>
For Admin Use
- Not duplicate issue
- Appropriate labels applied
- Appropriate contributors tagged
- Contributor assigned/self-assigned
Activity