fix: decimals

This commit is contained in:
MiniFrenchBread 2024-06-11 15:20:30 +08:00
parent 7feec1d03b
commit ff01dec980
5 changed files with 57 additions and 72 deletions

View File

@ -10,7 +10,7 @@ import "zgc/dasigners/v1/dasigners.proto";
option go_package = "github.com/0glabs/0g-chain/x/dasigners/v1/types";
message Params {
string tokens_per_vote = 1;
uint64 tokens_per_vote = 1;
uint64 max_votes_per_signer = 2;
uint64 max_quorums = 3;
uint64 epoch_blocks = 4;

View File

@ -2,6 +2,7 @@ package keeper
import (
"bytes"
"fmt"
"math/big"
"sort"
@ -40,10 +41,7 @@ func (k Keeper) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) {
return false
})
ballots := []Ballot{}
tokensPerVote, ok := sdk.NewIntFromString(params.TokensPerVote)
if !ok {
panic("failed to load params tokens_per_vote")
}
tokensPerVote := sdk.NewIntFromUint64(params.TokensPerVote)
for _, registration := range registrations {
// get validator
accAddr, err := sdk.AccAddressFromHexUnsafe(registration.account)
@ -52,10 +50,12 @@ func (k Keeper) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) {
continue
}
bonded := k.GetDelegatorBonded(ctx, accAddr)
num := bonded.Quo(sdk.NewInt(1_000_000_000_000_000_000)).Quo(tokensPerVote).Abs().BigInt()
num := bonded.Quo(BondedConversionRate).Quo(tokensPerVote).Abs().BigInt()
fmt.Printf("ballots num: %v\n", num)
if num.Cmp(big.NewInt(int64(params.MaxVotesPerSigner))) > 0 {
num = big.NewInt(int64(params.MaxVotesPerSigner))
}
fmt.Printf("ballots num limited: %v\n", num)
content := registration.content
ballotNum := num.Int64()
for j := 0; j < int(ballotNum); j += 1 {

View File

@ -13,9 +13,12 @@ import (
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
"github.com/tendermint/tendermint/libs/log"
"github.com/0glabs/0g-chain/chaincfg"
"github.com/0glabs/0g-chain/x/dasigners/v1/types"
)
var BondedConversionRate = math.NewIntFromBigInt(big.NewInt(0).Exp(big.NewInt(10), big.NewInt(chaincfg.GasDenomUnit), nil))
type Keeper struct {
storeKey storetypes.StoreKey
cdc codec.BinaryCodec
@ -228,13 +231,10 @@ func (k Keeper) CheckDelegations(ctx sdk.Context, account string) error {
return err
}
bonded := k.GetDelegatorBonded(ctx, accAddr)
fmt.Printf("delegation: %v\n", bonded)
params := k.GetParams(ctx)
tokensPerVote, ok := sdk.NewIntFromString(params.TokensPerVote)
if !ok {
panic("failed to load params tokens_per_vote")
}
if bonded.Quo(sdk.NewInt(1_000_000_000_000_000_000)).Quo(tokensPerVote).Abs().BigInt().Cmp(big.NewInt(0)) <= 0 {
tokensPerVote := sdk.NewIntFromUint64(params.TokensPerVote)
fmt.Printf("account: %v, bonded: %v, conversion rate: %v, ticket: %v\n", account, bonded, BondedConversionRate, bonded.Quo(BondedConversionRate).Quo(tokensPerVote))
if bonded.Quo(BondedConversionRate).Quo(tokensPerVote).Abs().BigInt().Cmp(big.NewInt(0)) <= 0 {
return types.ErrInsufficientBonded
}
return nil

View File

@ -15,10 +15,11 @@ func NewGenesisState(params Params, epoch uint64, signers []*Signer, quorumsByEp
// DefaultGenesisState returns the default genesis state for the module.
func DefaultGenesisState() *GenesisState {
return NewGenesisState(Params{
TokensPerVote: "100",
MaxVotesPerSigner: 100,
MaxQuorums: 100,
EpochBlocks: 1000,
TokensPerVote: 10,
MaxVotesPerSigner: 1024,
MaxQuorums: 10,
// EpochBlocks: 5760,
EpochBlocks: 20,
EncodedSlices: 3072,
}, 0, make([]*Signer, 0), []*Quorums{{
Quorums: make([]*Quorum, 0),

View File

@ -27,7 +27,7 @@ var _ = math.Inf
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"`
TokensPerVote uint64 `protobuf:"varint,1,opt,name=tokens_per_vote,json=tokensPerVote,proto3" json:"tokens_per_vote,omitempty"`
MaxVotesPerSigner uint64 `protobuf:"varint,2,opt,name=max_votes_per_signer,json=maxVotesPerSigner,proto3" json:"max_votes_per_signer,omitempty"`
MaxQuorums uint64 `protobuf:"varint,3,opt,name=max_quorums,json=maxQuorums,proto3" json:"max_quorums,omitempty"`
EpochBlocks uint64 `protobuf:"varint,4,opt,name=epoch_blocks,json=epochBlocks,proto3" json:"epoch_blocks,omitempty"`
@ -67,11 +67,11 @@ func (m *Params) XXX_DiscardUnknown() {
var xxx_messageInfo_Params proto.InternalMessageInfo
func (m *Params) GetTokensPerVote() string {
func (m *Params) GetTokensPerVote() uint64 {
if m != nil {
return m.TokensPerVote
}
return ""
return 0
}
func (m *Params) GetMaxVotesPerSigner() uint64 {
@ -183,35 +183,35 @@ func init() {
func init() { proto.RegisterFile("zgc/dasigners/v1/genesis.proto", fileDescriptor_896efa766aaca3be) }
var fileDescriptor_896efa766aaca3be = []byte{
// 436 bytes of a gzipped FileDescriptorProto
// 433 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x92, 0xc1, 0x6e, 0x13, 0x31,
0x10, 0x40, 0xb3, 0x24, 0x04, 0xe1, 0xb4, 0xa5, 0x58, 0x3d, 0x38, 0x3d, 0x6c, 0x42, 0x25, 0x50,
0x2f, 0xac, 0xdb, 0x22, 0xf1, 0x01, 0x41, 0x08, 0x71, 0x41, 0x65, 0x23, 0x71, 0xe0, 0xb2, 0xf2,
0x3a, 0xc6, 0x59, 0x35, 0xde, 0x59, 0xd6, 0xde, 0x28, 0xe9, 0x57, 0xf0, 0x59, 0x3d, 0x70, 0xe8,
0x91, 0x13, 0x42, 0xc9, 0x8f, 0xa0, 0x1d, 0x9b, 0x56, 0xb4, 0xbd, 0xd9, 0x6f, 0xde, 0x8c, 0x66,
0xc6, 0x26, 0xf1, 0xa5, 0x96, 0x7c, 0x26, 0x6c, 0xa1, 0x4b, 0x55, 0x5b, 0xbe, 0x3c, 0xe5, 0x5a,
0x95, 0xca, 0x16, 0x36, 0xa9, 0x6a, 0x70, 0x40, 0xf7, 0x2f, 0xb5, 0x4c, 0x6e, 0xe2, 0xc9, 0xf2,
0xf4, 0x70, 0x28, 0xc1, 0x1a, 0xb0, 0x19, 0xc6, 0xb9, 0xbf, 0x78, 0xf9, 0xf0, 0x40, 0x83, 0x06,
0xcf, 0xdb, 0x53, 0xa0, 0x43, 0x0d, 0xa0, 0x17, 0x8a, 0xe3, 0x2d, 0x6f, 0xbe, 0x71, 0x51, 0xae,
0x43, 0x68, 0x74, 0x37, 0xe4, 0x0a, 0xa3, 0xac, 0x13, 0xa6, 0x0a, 0xc2, 0xf8, 0x5e, 0x7b, 0xb7,
0xbd, 0xa0, 0x71, 0xf4, 0x33, 0x22, 0xfd, 0x73, 0x51, 0x0b, 0x63, 0xe9, 0x2b, 0xf2, 0xcc, 0xc1,
0x85, 0x2a, 0x6d, 0x56, 0xa9, 0x3a, 0x5b, 0x82, 0x53, 0x2c, 0x1a, 0x47, 0xc7, 0x4f, 0xd3, 0x5d,
0x8f, 0xcf, 0x55, 0xfd, 0x05, 0x9c, 0xa2, 0x9c, 0x1c, 0x18, 0xb1, 0x42, 0xc1, 0xab, 0xbe, 0x22,
0x7b, 0x34, 0x8e, 0x8e, 0x7b, 0xe9, 0x73, 0x23, 0x56, 0xad, 0xd6, 0xea, 0x53, 0x0c, 0xd0, 0x11,
0x19, 0xb4, 0x09, 0xdf, 0x1b, 0xa8, 0x1b, 0x63, 0x59, 0x17, 0x3d, 0x62, 0xc4, 0xea, 0xb3, 0x27,
0xf4, 0x05, 0xd9, 0x51, 0x15, 0xc8, 0x79, 0x96, 0x2f, 0x40, 0x5e, 0x58, 0xd6, 0x43, 0x63, 0x80,
0x6c, 0x82, 0x88, 0xbe, 0x24, 0x7b, 0xaa, 0x94, 0x30, 0x53, 0xb3, 0xcc, 0x2e, 0x0a, 0xa9, 0x2c,
0x7b, 0x8c, 0xd2, 0x6e, 0xa0, 0x53, 0x84, 0x47, 0x9b, 0x88, 0xec, 0x7c, 0xf0, 0x2f, 0x30, 0x75,
0xc2, 0x29, 0xfa, 0x96, 0xf4, 0x2b, 0x1c, 0x0f, 0x67, 0x19, 0x9c, 0xb1, 0xe4, 0xee, 0x8b, 0x24,
0x7e, 0xfc, 0x49, 0xef, 0xea, 0xf7, 0xa8, 0x93, 0x06, 0xfb, 0xb6, 0xa5, 0xb2, 0x31, 0xf9, 0xcd,
0x70, 0xbe, 0xa5, 0x4f, 0x88, 0xe8, 0x19, 0x79, 0x12, 0xaa, 0xb0, 0xee, 0xb8, 0xfb, 0x70, 0x6d,
0xbf, 0x81, 0xf4, 0x9f, 0x48, 0xdf, 0x91, 0xfd, 0xb0, 0x86, 0x2c, 0x5f, 0x67, 0x58, 0x8d, 0xf5,
0x30, 0x79, 0x78, 0x3f, 0x39, 0xac, 0x27, 0xdd, 0x0b, 0x29, 0x93, 0xf5, 0x7b, 0xdc, 0xc8, 0xc7,
0xab, 0x4d, 0x1c, 0x5d, 0x6f, 0xe2, 0xe8, 0xcf, 0x26, 0x8e, 0x7e, 0x6c, 0xe3, 0xce, 0xf5, 0x36,
0xee, 0xfc, 0xda, 0xc6, 0x9d, 0xaf, 0x5c, 0x17, 0x6e, 0xde, 0xe4, 0x89, 0x04, 0xc3, 0x4f, 0xf4,
0x42, 0xe4, 0x96, 0x9f, 0xe8, 0xd7, 0x72, 0x2e, 0x8a, 0x92, 0xaf, 0xfe, 0xff, 0x08, 0x6e, 0x5d,
0x29, 0x9b, 0xf7, 0xf1, 0x17, 0xbc, 0xf9, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x79, 0x90, 0xf6, 0x00,
0xc8, 0x02, 0x00, 0x00,
0x10, 0x86, 0xb3, 0x24, 0x04, 0xc9, 0x29, 0xa5, 0x58, 0x3d, 0x6c, 0x7a, 0xd8, 0x84, 0x4a, 0x20,
0x2e, 0xac, 0xdb, 0x22, 0xf1, 0x00, 0x41, 0x08, 0x71, 0x41, 0x25, 0x91, 0x38, 0x70, 0x59, 0x79,
0x9d, 0xc1, 0x59, 0x35, 0xde, 0x59, 0xd6, 0xde, 0x28, 0xe9, 0x53, 0xf0, 0x58, 0x3d, 0x70, 0xe8,
0x91, 0x13, 0x42, 0xc9, 0x8b, 0xa0, 0x1d, 0x9b, 0x56, 0xb4, 0xdc, 0xec, 0xff, 0xff, 0x66, 0xf4,
0xcf, 0xd8, 0x2c, 0xb9, 0xd4, 0x4a, 0xcc, 0xa5, 0x2d, 0x74, 0x09, 0xb5, 0x15, 0xab, 0x53, 0xa1,
0xa1, 0x04, 0x5b, 0xd8, 0xb4, 0xaa, 0xd1, 0x21, 0x3f, 0xb8, 0xd4, 0x2a, 0xbd, 0xf1, 0xd3, 0xd5,
0xe9, 0xd1, 0x50, 0xa1, 0x35, 0x68, 0x33, 0xf2, 0x85, 0xbf, 0x78, 0xf8, 0xe8, 0x50, 0xa3, 0x46,
0xaf, 0xb7, 0xa7, 0xa0, 0x0e, 0x35, 0xa2, 0x5e, 0x82, 0xa0, 0x5b, 0xde, 0x7c, 0x15, 0xb2, 0xdc,
0x04, 0x6b, 0x74, 0xd7, 0x72, 0x85, 0x01, 0xeb, 0xa4, 0xa9, 0x02, 0x30, 0xbe, 0x17, 0xef, 0x36,
0x0b, 0x11, 0xc7, 0x3f, 0x22, 0xd6, 0x3f, 0x97, 0xb5, 0x34, 0x96, 0xbf, 0x60, 0x4f, 0x1c, 0x5e,
0x40, 0x69, 0xb3, 0x0a, 0xea, 0x6c, 0x85, 0x0e, 0xe2, 0x68, 0x1c, 0xbd, 0xec, 0x4d, 0x1f, 0x7b,
0xf9, 0x1c, 0xea, 0xcf, 0xe8, 0x80, 0x0b, 0x76, 0x68, 0xe4, 0x9a, 0x00, 0x8f, 0xfa, 0x8e, 0xf1,
0x03, 0x82, 0x9f, 0x1a, 0xb9, 0x6e, 0xb1, 0x16, 0x9f, 0x91, 0xc1, 0x47, 0x6c, 0xd0, 0x16, 0x7c,
0x6b, 0xb0, 0x6e, 0x8c, 0x8d, 0xbb, 0xc4, 0x31, 0x23, 0xd7, 0x9f, 0xbc, 0xc2, 0x9f, 0xb1, 0x3d,
0xa8, 0x50, 0x2d, 0xb2, 0x7c, 0x89, 0xea, 0xc2, 0xc6, 0x3d, 0x22, 0x06, 0xa4, 0x4d, 0x48, 0xe2,
0xcf, 0xd9, 0x3e, 0x94, 0x0a, 0xe7, 0x30, 0xcf, 0xec, 0xb2, 0x50, 0x60, 0xe3, 0x87, 0x3e, 0x5b,
0x50, 0x67, 0x24, 0x1e, 0x6f, 0x23, 0xb6, 0xf7, 0xde, 0xbf, 0xc0, 0xcc, 0x49, 0x07, 0xfc, 0x0d,
0xeb, 0x57, 0x34, 0x1e, 0xcd, 0x32, 0x38, 0x8b, 0xd3, 0xbb, 0x2f, 0x92, 0xfa, 0xf1, 0x27, 0xbd,
0xab, 0x5f, 0xa3, 0xce, 0x34, 0xd0, 0xb7, 0x91, 0xca, 0xc6, 0xe4, 0x37, 0xc3, 0xf9, 0x48, 0x1f,
0x49, 0xe2, 0x67, 0xec, 0x51, 0xe8, 0x12, 0x77, 0xc7, 0xdd, 0xff, 0xf7, 0xf6, 0x1b, 0x98, 0xfe,
0x05, 0xf9, 0x5b, 0x76, 0x10, 0xd6, 0x90, 0xe5, 0x9b, 0x8c, 0xba, 0xc5, 0x3d, 0x2a, 0x1e, 0xde,
0x2f, 0x0e, 0xeb, 0x99, 0xee, 0x87, 0x92, 0xc9, 0xe6, 0x1d, 0x6d, 0xe4, 0xc3, 0xd5, 0x36, 0x89,
0xae, 0xb7, 0x49, 0xf4, 0x7b, 0x9b, 0x44, 0xdf, 0x77, 0x49, 0xe7, 0x7a, 0x97, 0x74, 0x7e, 0xee,
0x92, 0xce, 0x17, 0xa1, 0x0b, 0xb7, 0x68, 0xf2, 0x54, 0xa1, 0x11, 0x27, 0x7a, 0x29, 0x73, 0x2b,
0x4e, 0xf4, 0x2b, 0xb5, 0x90, 0x45, 0x29, 0xd6, 0xff, 0x7e, 0x04, 0xb7, 0xa9, 0xc0, 0xe6, 0x7d,
0xfa, 0x05, 0xaf, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe5, 0x90, 0xe2, 0xc8, 0x02, 0x00,
0x00,
}
func (m *Params) Marshal() (dAtA []byte, err error) {
@ -254,12 +254,10 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i--
dAtA[i] = 0x10
}
if len(m.TokensPerVote) > 0 {
i -= len(m.TokensPerVote)
copy(dAtA[i:], m.TokensPerVote)
i = encodeVarintGenesis(dAtA, i, uint64(len(m.TokensPerVote)))
if m.TokensPerVote != 0 {
i = encodeVarintGenesis(dAtA, i, uint64(m.TokensPerVote))
i--
dAtA[i] = 0xa
dAtA[i] = 0x8
}
return len(dAtA) - i, nil
}
@ -347,9 +345,8 @@ func (m *Params) Size() (n int) {
}
var l int
_ = l
l = len(m.TokensPerVote)
if l > 0 {
n += 1 + l + sovGenesis(uint64(l))
if m.TokensPerVote != 0 {
n += 1 + sovGenesis(uint64(m.TokensPerVote))
}
if m.MaxVotesPerSigner != 0 {
n += 1 + sovGenesis(uint64(m.MaxVotesPerSigner))
@ -428,10 +425,10 @@ func (m *Params) Unmarshal(dAtA []byte) error {
}
switch fieldNum {
case 1:
if wireType != 2 {
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field TokensPerVote", wireType)
}
var stringLen uint64
m.TokensPerVote = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenesis
@ -441,24 +438,11 @@ func (m *Params) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
m.TokensPerVote |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthGenesis
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthGenesis
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.TokensPerVote = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field MaxVotesPerSigner", wireType)