feat: max quorum num

This commit is contained in:
MiniFrenchBread 2024-05-16 23:39:07 +08:00 committed by 0g-wh
parent 9d15e399d8
commit b3e526871e
4 changed files with 51 additions and 44 deletions

View File

@ -11,7 +11,7 @@ option go_package = "github.com/0glabs/0g-chain/x/dasigners/v1/types";
message Params {
string tokens_per_vote = 1;
uint64 max_votes = 2;
uint64 max_quorums = 2;
uint64 epoch_blocks = 3;
uint64 encoded_slices = 4;
}

View File

@ -2,7 +2,6 @@ package keeper
import (
"bytes"
"math/big"
"sort"
"github.com/0glabs/0g-chain/x/dasigners/v1/types"
@ -56,9 +55,6 @@ func (k Keeper) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) {
continue
}
num := validator.Tokens.Quo(sdk.NewInt(1_000_000_000_000_000_000)).Quo(tokensPerVote).Abs().BigInt()
if num.Cmp(big.NewInt(int64(params.MaxVotes))) > 0 {
num = big.NewInt(int64(params.MaxVotes))
}
content := registration.content
ballotNum := num.Int64()
for j := 0; j < int(ballotNum); j += 1 {
@ -78,6 +74,9 @@ func (k Keeper) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) {
}
if len(ballots) >= int(params.EncodedSlices) {
for i := 0; i+int(params.EncodedSlices) < len(ballots); i += 1 {
if int(params.MaxQuorums) < len(quorums.Quorums) {
break
}
quorum := types.Quorum{
Signers: make([]string, params.EncodedSlices),
}
@ -86,6 +85,15 @@ func (k Keeper) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) {
}
quorums.Quorums = append(quorums.Quorums, &quorum)
}
if len(ballots)%int(params.EncodedSlices) != 0 && int(params.MaxQuorums) < len(quorums.Quorums) {
quorum := types.Quorum{
Signers: make([]string, 0),
}
for j := len(ballots) - int(params.EncodedSlices); j < len(ballots); j += 1 {
quorum.Signers = append(quorum.Signers, ballots[j].account)
}
quorums.Quorums = append(quorums.Quorums, &quorum)
}
} else if len(ballots) > 0 {
quorum := types.Quorum{
Signers: make([]string, params.EncodedSlices),

View File

@ -16,7 +16,7 @@ func NewGenesisState(params Params, epoch uint64, signers []*Signer, quorumsByEp
func DefaultGenesisState() *GenesisState {
return NewGenesisState(Params{
TokensPerVote: "100",
MaxVotes: 100,
MaxQuorums: 100,
EpochBlocks: 1000,
EncodedSlices: 3072,
}, 0, make([]*Signer, 0), []*Quorums{{

View File

@ -28,7 +28,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type Params struct {
TokensPerVote string `protobuf:"bytes,1,opt,name=tokens_per_vote,json=tokensPerVote,proto3" json:"tokens_per_vote,omitempty"`
MaxVotes uint64 `protobuf:"varint,2,opt,name=max_votes,json=maxVotes,proto3" json:"max_votes,omitempty"`
MaxQuorums uint64 `protobuf:"varint,2,opt,name=max_quorums,json=maxQuorums,proto3" json:"max_quorums,omitempty"`
EpochBlocks uint64 `protobuf:"varint,3,opt,name=epoch_blocks,json=epochBlocks,proto3" json:"epoch_blocks,omitempty"`
EncodedSlices uint64 `protobuf:"varint,4,opt,name=encoded_slices,json=encodedSlices,proto3" json:"encoded_slices,omitempty"`
}
@ -73,9 +73,9 @@ func (m *Params) GetTokensPerVote() string {
return ""
}
func (m *Params) GetMaxVotes() uint64 {
func (m *Params) GetMaxQuorums() uint64 {
if m != nil {
return m.MaxVotes
return m.MaxQuorums
}
return 0
}
@ -175,34 +175,33 @@ func init() {
func init() { proto.RegisterFile("zgc/dasigners/v1/genesis.proto", fileDescriptor_896efa766aaca3be) }
var fileDescriptor_896efa766aaca3be = []byte{
// 417 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xcf, 0x6e, 0xd3, 0x40,
0x10, 0xc6, 0x63, 0x12, 0x05, 0xba, 0xfd, 0x43, 0x65, 0x71, 0x70, 0x8a, 0xe4, 0x86, 0x4a, 0xa0,
0x5e, 0xf0, 0xb6, 0x45, 0xe2, 0x01, 0x82, 0x10, 0xe2, 0x82, 0x8a, 0x23, 0x71, 0xe0, 0x62, 0xad,
0x37, 0xc3, 0xc6, 0x6a, 0xd6, 0x63, 0x3c, 0xeb, 0x28, 0xe9, 0x53, 0x70, 0xe3, 0x95, 0x7a, 0xec,
0x91, 0x13, 0x42, 0xce, 0x8b, 0xa0, 0x8e, 0x17, 0x2a, 0x5a, 0x6e, 0x3b, 0xdf, 0xf7, 0x9b, 0xd1,
0xb7, 0x33, 0x22, 0xbe, 0x34, 0x5a, 0xce, 0x14, 0x15, 0xa6, 0x84, 0x9a, 0xe4, 0xf2, 0x54, 0x1a,
0x28, 0x81, 0x0a, 0x4a, 0xaa, 0x1a, 0x1d, 0x86, 0xfb, 0x97, 0x46, 0x27, 0x7f, 0xfd, 0x64, 0x79,
0x7a, 0x30, 0xd2, 0x48, 0x16, 0x29, 0x63, 0x5f, 0x76, 0x45, 0x07, 0x1f, 0x3c, 0x31, 0x68, 0xb0,
0xd3, 0x6f, 0x5e, 0x5e, 0x1d, 0x19, 0x44, 0xb3, 0x00, 0xc9, 0x55, 0xde, 0x7c, 0x91, 0xaa, 0x5c,
0x7b, 0xeb, 0xf0, 0xae, 0xe5, 0x0a, 0x0b, 0xe4, 0x94, 0xad, 0x3c, 0x30, 0xbe, 0x17, 0xef, 0x36,
0x0b, 0x13, 0x47, 0xdf, 0x03, 0x31, 0x3c, 0x57, 0xb5, 0xb2, 0x14, 0xbe, 0x10, 0x8f, 0x1d, 0x5e,
0x40, 0x49, 0x59, 0x05, 0x75, 0xb6, 0x44, 0x07, 0x51, 0x30, 0x0e, 0x8e, 0xb7, 0xd2, 0xdd, 0x4e,
0x3e, 0x87, 0xfa, 0x13, 0x3a, 0x08, 0x9f, 0x8a, 0x2d, 0xab, 0x56, 0x0c, 0x50, 0xf4, 0x60, 0x1c,
0x1c, 0x0f, 0xd2, 0x47, 0x56, 0xad, 0x6e, 0x3c, 0x0a, 0x9f, 0x89, 0x1d, 0xa8, 0x50, 0xcf, 0xb3,
0x7c, 0x81, 0xfa, 0x82, 0xa2, 0x3e, 0xfb, 0xdb, 0xac, 0x4d, 0x58, 0x0a, 0x9f, 0x8b, 0x3d, 0x28,
0x35, 0xce, 0x60, 0x96, 0xd1, 0xa2, 0xd0, 0x40, 0xd1, 0x80, 0xa1, 0x5d, 0xaf, 0x4e, 0x59, 0x3c,
0x6a, 0x03, 0xb1, 0xf3, 0xae, 0x5b, 0xe6, 0xd4, 0x29, 0x07, 0xe1, 0x6b, 0x31, 0xac, 0x38, 0x29,
0xc7, 0xda, 0x3e, 0x8b, 0x92, 0xbb, 0xcb, 0x4d, 0xba, 0x9f, 0x4c, 0x06, 0x57, 0x3f, 0x0f, 0x7b,
0xa9, 0xa7, 0x6f, 0x23, 0x95, 0x8d, 0xcd, 0xa1, 0xf6, 0x91, 0xbb, 0x48, 0x1f, 0x58, 0x0a, 0xcf,
0xc4, 0x43, 0x3f, 0x25, 0xea, 0x8f, 0xfb, 0xff, 0x9f, 0x3d, 0xe5, 0x67, 0xfa, 0x07, 0x0c, 0xdf,
0x88, 0xfd, 0xaf, 0x0d, 0xd6, 0x8d, 0xa5, 0x2c, 0x5f, 0x67, 0x3c, 0x2d, 0x1a, 0x70, 0xf3, 0xe8,
0x7e, 0xf3, 0xc7, 0x8e, 0x4c, 0xf7, 0x7c, 0xcb, 0x64, 0xfd, 0x96, 0x37, 0xf2, 0xfe, 0xaa, 0x8d,
0x83, 0xeb, 0x36, 0x0e, 0x7e, 0xb5, 0x71, 0xf0, 0x6d, 0x13, 0xf7, 0xae, 0x37, 0x71, 0xef, 0xc7,
0x26, 0xee, 0x7d, 0x96, 0xa6, 0x70, 0xf3, 0x26, 0x4f, 0x34, 0x5a, 0x79, 0x62, 0x16, 0x2a, 0x27,
0x79, 0x62, 0x5e, 0xea, 0xb9, 0x2a, 0x4a, 0xb9, 0xfa, 0xf7, 0xa6, 0x6e, 0x5d, 0x01, 0xe5, 0x43,
0x3e, 0xe8, 0xab, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x46, 0x09, 0x1c, 0x6e, 0x93, 0x02, 0x00,
0x00,
// 416 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xc1, 0x6e, 0x13, 0x31,
0x10, 0x86, 0xb3, 0x24, 0x0a, 0xc2, 0x69, 0x4b, 0xb5, 0xe2, 0xb0, 0xe9, 0x61, 0x13, 0x2a, 0x81,
0x7a, 0x61, 0xdd, 0x16, 0x89, 0x07, 0x08, 0x42, 0x88, 0x0b, 0x2a, 0x1b, 0x89, 0x03, 0x17, 0xcb,
0xeb, 0x0c, 0xce, 0xaa, 0xf1, 0xce, 0xb2, 0xf6, 0x46, 0x49, 0x9f, 0x82, 0x3b, 0x2f, 0xd4, 0x63,
0x8f, 0x9c, 0x10, 0xda, 0xbc, 0x08, 0x62, 0x6c, 0xa8, 0x68, 0xb9, 0xd9, 0xdf, 0xff, 0xcf, 0xe8,
0xf7, 0x6f, 0x96, 0x5e, 0x69, 0xc5, 0x17, 0xd2, 0x96, 0xba, 0x82, 0xc6, 0xf2, 0xf5, 0x19, 0xd7,
0x50, 0x81, 0x2d, 0x6d, 0x56, 0x37, 0xe8, 0x30, 0x3e, 0xbc, 0xd2, 0x2a, 0xfb, 0xab, 0x67, 0xeb,
0xb3, 0xa3, 0xb1, 0x42, 0x6b, 0xd0, 0x0a, 0xd2, 0xb9, 0xbf, 0x78, 0xf3, 0xd1, 0x13, 0x8d, 0x1a,
0x3d, 0xff, 0x7d, 0x0a, 0x74, 0xac, 0x11, 0xf5, 0x0a, 0x38, 0xdd, 0x8a, 0xf6, 0x33, 0x97, 0xd5,
0x36, 0x48, 0x93, 0xbb, 0x92, 0x2b, 0x0d, 0x58, 0x27, 0x4d, 0x1d, 0x0c, 0xd3, 0x7b, 0xf1, 0x6e,
0xb3, 0x90, 0xe3, 0xf8, 0x5b, 0xc4, 0x86, 0x17, 0xb2, 0x91, 0xc6, 0xc6, 0xcf, 0xd9, 0x63, 0x87,
0x97, 0x50, 0x59, 0x51, 0x43, 0x23, 0xd6, 0xe8, 0x20, 0x89, 0xa6, 0xd1, 0xc9, 0xa3, 0x7c, 0xdf,
0xe3, 0x0b, 0x68, 0x3e, 0xa2, 0x83, 0x78, 0xc2, 0x46, 0x46, 0x6e, 0xc4, 0x97, 0x16, 0x9b, 0xd6,
0xd8, 0xe4, 0xc1, 0x34, 0x3a, 0x19, 0xe4, 0xcc, 0xc8, 0xcd, 0x07, 0x4f, 0xe2, 0xa7, 0x6c, 0x0f,
0x6a, 0x54, 0x4b, 0x51, 0xac, 0x50, 0x5d, 0xda, 0xa4, 0x4f, 0x8e, 0x11, 0xb1, 0x19, 0xa1, 0xf8,
0x19, 0x3b, 0x80, 0x4a, 0xe1, 0x02, 0x16, 0xc2, 0xae, 0x4a, 0x05, 0x36, 0x19, 0x90, 0x69, 0x3f,
0xd0, 0x39, 0xc1, 0xe3, 0x2e, 0x62, 0x7b, 0x6f, 0x7d, 0xa1, 0x73, 0x27, 0x1d, 0xc4, 0xaf, 0xd8,
0xb0, 0xa6, 0xb4, 0x14, 0x6d, 0x74, 0x9e, 0x64, 0x77, 0x0b, 0xce, 0xfc, 0x6b, 0x66, 0x83, 0xeb,
0x1f, 0x93, 0x5e, 0x1e, 0xdc, 0xb7, 0x91, 0xaa, 0xd6, 0x14, 0xd0, 0x84, 0xd0, 0x3e, 0xd2, 0x7b,
0x42, 0xf1, 0x39, 0x7b, 0x18, 0xb6, 0x24, 0xfd, 0x69, 0xff, 0xff, 0xbb, 0xe7, 0x74, 0xcc, 0xff,
0x18, 0xe3, 0xd7, 0xec, 0x30, 0xd4, 0x20, 0x8a, 0xad, 0xa0, 0x6d, 0xc9, 0x80, 0x86, 0xc7, 0xf7,
0x87, 0x43, 0x3d, 0xf9, 0x41, 0x18, 0x99, 0x6d, 0xdf, 0x50, 0x23, 0xef, 0xae, 0xbb, 0x34, 0xba,
0xe9, 0xd2, 0xe8, 0x67, 0x97, 0x46, 0x5f, 0x77, 0x69, 0xef, 0x66, 0x97, 0xf6, 0xbe, 0xef, 0xd2,
0xde, 0x27, 0xae, 0x4b, 0xb7, 0x6c, 0x8b, 0x4c, 0xa1, 0xe1, 0xa7, 0x7a, 0x25, 0x0b, 0xcb, 0x4f,
0xf5, 0x0b, 0xb5, 0x94, 0x65, 0xc5, 0x37, 0xff, 0xfe, 0xab, 0xdb, 0xd6, 0x60, 0x8b, 0x21, 0x7d,
0xea, 0xcb, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x28, 0xe1, 0x73, 0x5d, 0x97, 0x02, 0x00, 0x00,
}
func (m *Params) Marshal() (dAtA []byte, err error) {
@ -235,8 +234,8 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x18
}
if m.MaxVotes != 0 {
i = encodeVarintGenesis(dAtA, i, uint64(m.MaxVotes))
if m.MaxQuorums != 0 {
i = encodeVarintGenesis(dAtA, i, uint64(m.MaxQuorums))
i--
dAtA[i] = 0x10
}
@ -337,8 +336,8 @@ func (m *Params) Size() (n int) {
if l > 0 {
n += 1 + l + sovGenesis(uint64(l))
}
if m.MaxVotes != 0 {
n += 1 + sovGenesis(uint64(m.MaxVotes))
if m.MaxQuorums != 0 {
n += 1 + sovGenesis(uint64(m.MaxQuorums))
}
if m.EpochBlocks != 0 {
n += 1 + sovGenesis(uint64(m.EpochBlocks))
@ -444,9 +443,9 @@ func (m *Params) Unmarshal(dAtA []byte) error {
iNdEx = postIndex
case 2:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field MaxVotes", wireType)
return fmt.Errorf("proto: wrong wireType = %d for field MaxQuorums", wireType)
}
m.MaxVotes = 0
m.MaxQuorums = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenesis
@ -456,7 +455,7 @@ func (m *Params) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
m.MaxVotes |= uint64(b&0x7F) << shift
m.MaxQuorums |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}