feat: quorum

This commit is contained in:
MiniFrenchBread 2024-05-16 22:49:29 +08:00 committed by 0g-wh
parent 86e2ff6009
commit 845bbd07be
19 changed files with 1300 additions and 526 deletions

View File

@ -84,12 +84,17 @@
"inputs": [
{
"internalType": "uint256",
"name": "epoch",
"name": "_epoch",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_quorumId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "signersBitmap",
"name": "_quorumBitmap",
"type": "bytes"
}
],
@ -129,9 +134,33 @@
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
"internalType": "uint256",
"name": "_epoch",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_quorumId",
"type": "uint256"
}
],
"name": "getQuorum",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_account",
"type": "address[]"
}
],
"name": "getSigner",
@ -183,9 +212,9 @@
"type": "tuple"
}
],
"internalType": "struct IDASigners.SignerDetail",
"internalType": "struct IDASigners.SignerDetail[]",
"name": "",
"type": "tuple"
"type": "tuple[]"
}
],
"stateMutability": "view",
@ -195,62 +224,16 @@
"inputs": [
{
"internalType": "uint256",
"name": "epoch",
"name": "_epoch",
"type": "uint256"
}
],
"name": "getSigners",
"name": "quorumCount",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "signer",
"type": "address"
},
{
"internalType": "string",
"name": "socket",
"type": "string"
},
{
"components": [
{
"internalType": "uint256",
"name": "X",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "Y",
"type": "uint256"
}
],
"internalType": "struct BN254.G1Point",
"name": "pkG1",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint256[2]",
"name": "X",
"type": "uint256[2]"
},
{
"internalType": "uint256[2]",
"name": "Y",
"type": "uint256[2]"
}
],
"internalType": "struct BN254.G2Point",
"name": "pkG2",
"type": "tuple"
}
],
"internalType": "struct IDASigners.SignerDetail[]",
"name": "details",
"type": "tuple[]"
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
@ -361,7 +344,7 @@
"inputs": [
{
"internalType": "string",
"name": "socket",
"name": "_socket",
"type": "string"
}
],

File diff suppressed because one or more lines are too long

View File

@ -19,11 +19,12 @@ const (
RequiredGasMax uint64 = 1000_000_000
DASignersFunctionEpochNumber = "epochNumber"
DASignersFunctionQuorumCount = "quorumCount"
DASignersFunctionGetSigner = "getSigner"
DASignersFunctionGetSigners = "getSigners"
DASignersFunctionGetQuorum = "getQuorum"
DASignersFunctionRegisterSigner = "registerSigner"
DASignersFunctionUpdateSocket = "updateSocket"
DASignersFunctionRegisterNextEpoch = "registerNextEpoch"
DASignersFunctionRegisterSigner = "registerSigner"
DASignersFunctionGetAggPkG1 = "getAggPkG1"
)
@ -111,10 +112,12 @@ func (d *DASignersPrecompile) Run(evm *vm.EVM, contract *vm.Contract, readonly b
// queries
case DASignersFunctionEpochNumber:
bz, err = d.EpochNumber(ctx, evm, method, args)
case DASignersFunctionQuorumCount:
bz, err = d.QuorumCount(ctx, evm, method, args)
case DASignersFunctionGetSigner:
bz, err = d.GetSigner(ctx, evm, method, args)
case DASignersFunctionGetSigners:
bz, err = d.GetSigners(ctx, evm, method, args)
case DASignersFunctionGetQuorum:
bz, err = d.GetQuorum(ctx, evm, method, args)
case DASignersFunctionGetAggPkG1:
bz, err = d.GetAggPkG1(ctx, evm, method, args)
// txs

View File

@ -5,6 +5,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/vm"
)
@ -16,6 +17,15 @@ func (d *DASignersPrecompile) EpochNumber(ctx sdk.Context, _ *vm.EVM, method *ab
return method.Outputs.Pack(big.NewInt(int64(epochNumber)))
}
func (d *DASignersPrecompile) QuorumCount(ctx sdk.Context, _ *vm.EVM, method *abi.Method, args []interface{}) ([]byte, error) {
req, err := NewQueryQuorumCountRequest(args)
response, err := d.dasignersKeeper.QuorumCount(ctx, req)
if err != nil {
return nil, err
}
return method.Outputs.Pack(big.NewInt(int64(response.QuorumCount)))
}
func (d *DASignersPrecompile) GetSigner(ctx sdk.Context, _ *vm.EVM, method *abi.Method, args []interface{}) ([]byte, error) {
req, err := NewQuerySignerRequest(args)
if err != nil {
@ -25,21 +35,25 @@ func (d *DASignersPrecompile) GetSigner(ctx sdk.Context, _ *vm.EVM, method *abi.
if err != nil {
return nil, err
}
return method.Outputs.Pack(NewIDASignersSignerDetail(response.Signer))
signers := make([]IDASignersSignerDetail, len(response.Signer))
for i, signer := range response.Signer {
signers[i] = NewIDASignersSignerDetail(signer)
}
return method.Outputs.Pack(signers)
}
func (d *DASignersPrecompile) GetSigners(ctx sdk.Context, _ *vm.EVM, method *abi.Method, args []interface{}) ([]byte, error) {
req, err := NewQueryEpochSignerSetRequest(args)
func (d *DASignersPrecompile) GetQuorum(ctx sdk.Context, _ *vm.EVM, method *abi.Method, args []interface{}) ([]byte, error) {
req, err := NewQueryEpochQuorumRequest(args)
if err != nil {
return nil, err
}
response, err := d.dasignersKeeper.EpochSignerSet(sdk.WrapSDKContext(ctx), req)
response, err := d.dasignersKeeper.EpochQuorum(sdk.WrapSDKContext(ctx), req)
if err != nil {
return nil, err
}
signers := make([]IDASignersSignerDetail, 0)
for _, signer := range response.Signers {
signers = append(signers, NewIDASignersSignerDetail(signer))
signers := make([]common.Address, len(response.Quorum.Signers))
for i, signer := range response.Quorum.Signers {
signers[i] = common.HexToAddress(signer)
}
return method.Outputs.Pack(signers)
}

View File

@ -63,34 +63,50 @@ func SerializeG2(p BN254G2Point) []byte {
return b
}
func NewQuerySignerRequest(args []interface{}) (*dasignerstypes.QuerySignerRequest, error) {
func NewQueryQuorumCountRequest(args []interface{}) (*dasignerstypes.QueryQuorumCountRequest, error) {
if len(args) != 1 {
return nil, fmt.Errorf(precopmiles_common.ErrInvalidNumberOfArgs, 1, len(args))
}
return &dasignerstypes.QuerySignerRequest{
Account: ToLowerHexWithoutPrefix(args[0].(common.Address)),
}, nil
}
func NewQueryEpochSignerSetRequest(args []interface{}) (*dasignerstypes.QueryEpochSignerSetRequest, error) {
if len(args) != 1 {
return nil, fmt.Errorf(precopmiles_common.ErrInvalidNumberOfArgs, 1, len(args))
}
return &dasignerstypes.QueryEpochSignerSetRequest{
return &dasignerstypes.QueryQuorumCountRequest{
EpochNumber: args[0].(*big.Int).Uint64(),
}, nil
}
func NewQueryAggregatePubkeyG1Request(args []interface{}) (*dasignerstypes.QueryAggregatePubkeyG1Request, error) {
func NewQuerySignerRequest(args []interface{}) (*dasignerstypes.QuerySignerRequest, error) {
if len(args) != 1 {
return nil, fmt.Errorf(precopmiles_common.ErrInvalidNumberOfArgs, 1, len(args))
}
accounts := args[0].([]common.Address)
req := dasignerstypes.QuerySignerRequest{
Accounts: make([]string, len(accounts)),
}
for i, account := range accounts {
req.Accounts[i] = ToLowerHexWithoutPrefix(account)
}
return &req, nil
}
func NewQueryEpochQuorumRequest(args []interface{}) (*dasignerstypes.QueryEpochQuorumRequest, error) {
if len(args) != 2 {
return nil, fmt.Errorf(precopmiles_common.ErrInvalidNumberOfArgs, 2, len(args))
}
return &dasignerstypes.QueryEpochQuorumRequest{
EpochNumber: args[0].(*big.Int).Uint64(),
QuorumId: args[1].(*big.Int).Uint64(),
}, nil
}
func NewQueryAggregatePubkeyG1Request(args []interface{}) (*dasignerstypes.QueryAggregatePubkeyG1Request, error) {
if len(args) != 3 {
return nil, fmt.Errorf(precopmiles_common.ErrInvalidNumberOfArgs, 3, len(args))
}
return &dasignerstypes.QueryAggregatePubkeyG1Request{
EpochNumber: args[0].(*big.Int).Uint64(),
SignersBitmap: args[1].([]byte),
EpochNumber: args[0].(*big.Int).Uint64(),
QuorumId: args[1].(*big.Int).Uint64(),
QuorumBitmap: args[2].([]byte),
}, nil
}

View File

@ -20,6 +20,10 @@ message Signer {
bytes pubkey_g2 = 4;
}
message EpochSignerSet {
message Quorum {
repeated string signers = 1;
}
message Quorums {
repeated Quorum quorums = 1;
}

View File

@ -10,10 +10,10 @@ import "zgc/dasigners/v1/dasigners.proto";
option go_package = "github.com/0glabs/0g-chain/x/dasigners/v1/types";
message Params {
uint64 quorum_size = 1;
string tokens_per_vote = 2;
uint64 max_votes = 3;
uint64 epoch_blocks = 4;
string tokens_per_vote = 1;
uint64 max_votes = 2;
uint64 epoch_blocks = 3;
uint64 encoded_slices = 4;
}
// GenesisState defines the dasigners module's genesis state.
@ -24,6 +24,6 @@ message GenesisState {
uint64 epoch_number = 2;
// signers defines all signers information
repeated Signer signers = 3;
// signers_by_epoch defines chosen signers by epoch
repeated EpochSignerSet signers_by_epoch = 4;
// quorums_by_epoch defines chosen quorums by epoch
repeated Quorums quorums_by_epoch = 4;
}

View File

@ -16,8 +16,11 @@ service Query {
rpc EpochNumber(QueryEpochNumberRequest) returns (QueryEpochNumberResponse) {
option (google.api.http).get = "/0g/dasigners/v1/epoch-number";
}
rpc EpochSignerSet(QueryEpochSignerSetRequest) returns (QueryEpochSignerSetResponse) {
option (google.api.http).get = "/0g/dasigners/v1/epoch-signer-set";
rpc QuorumCount(QueryQuorumCountRequest) returns (QueryQuorumCountResponse) {
option (google.api.http).get = "/0g/dasigners/v1/quorum-count";
}
rpc EpochQuorum(QueryEpochQuorumRequest) returns (QueryEpochQuorumResponse) {
option (google.api.http).get = "/0g/dasigners/v1/epoch-quorum";
}
rpc AggregatePubkeyG1(QueryAggregatePubkeyG1Request) returns (QueryAggregatePubkeyG1Response) {
option (google.api.http).get = "/0g/dasigners/v1/aggregate-pubkey-g1";
@ -28,11 +31,11 @@ service Query {
}
message QuerySignerRequest {
string account = 1;
repeated string accounts = 1;
}
message QuerySignerResponse {
Signer signer = 1;
repeated Signer signer = 1;
}
message QueryEpochNumberRequest {}
@ -41,17 +44,27 @@ message QueryEpochNumberResponse {
uint64 epoch_number = 1;
}
message QueryEpochSignerSetRequest {
message QueryQuorumCountRequest {
uint64 epoch_number = 1;
}
message QueryEpochSignerSetResponse {
repeated Signer signers = 1;
message QueryQuorumCountResponse {
uint64 quorum_count = 1;
}
message QueryEpochQuorumRequest {
uint64 epoch_number = 1;
uint64 quorum_id = 2;
}
message QueryEpochQuorumResponse {
Quorum quorum = 1;
}
message QueryAggregatePubkeyG1Request {
uint64 epoch_number = 1;
bytes signersBitmap = 2;
uint64 quorum_id = 2;
bytes quorum_bitmap = 3;
}
message QueryAggregatePubkeyG1Response {

View File

@ -20,8 +20,8 @@ func InitGenesis(ctx sdk.Context, keeper keeper.Keeper, gs types.GenesisState) {
panic(fmt.Sprintf("failed to write genesis state into store: %s", err))
}
}
for epoch, signers := range gs.SignersByEpoch {
keeper.SetEpochSignerSet(ctx, uint64(epoch), *signers)
for epoch, quorums := range gs.QuorumsByEpoch {
keeper.SetEpochQuorums(ctx, uint64(epoch), *quorums)
}
keeper.SetParams(ctx, gs.Params)
}
@ -38,13 +38,13 @@ func ExportGenesis(ctx sdk.Context, keeper keeper.Keeper) *types.GenesisState {
signers = append(signers, &signer)
return false
})
epochSignerSets := make([]*types.EpochSignerSet, 0)
epochQuorums := make([]*types.Quorums, 0)
for i := 0; i < int(epochNumber); i += 1 {
epochSignerSet, found := keeper.GetEpochSignerSet(ctx, uint64(i))
quorums, found := keeper.GetEpochQuorums(ctx, uint64(i))
if !found {
panic("historical epoch signer set not found")
panic("historical quorums not found")
}
epochSignerSets = append(epochSignerSets, &epochSignerSet)
epochQuorums = append(epochQuorums, &quorums)
}
return types.NewGenesisState(params, epochNumber, signers, epochSignerSets)
return types.NewGenesisState(params, epochNumber, signers, epochQuorums)
}

View File

@ -72,17 +72,32 @@ func (k Keeper) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) {
sort.Slice(ballots, func(i, j int) bool {
return bytes.Compare(ballots[i].content, ballots[j].content) < 0
})
chosen := make(map[string]struct{})
epochSignerSet := types.EpochSignerSet{
Signers: make([]string, 0),
quorums := types.Quorums{
Quorums: make([]*types.Quorum, 0),
}
for _, ballot := range ballots {
if _, ok := chosen[ballot.account]; !ok {
chosen[ballot.account] = struct{}{}
epochSignerSet.Signers = append(epochSignerSet.Signers, ballot.account)
if len(ballots) >= int(params.EncodedSlices) {
for i := 0; i+int(params.EncodedSlices) < len(ballots); i += 1 {
quorum := types.Quorum{
Signers: make([]string, params.EncodedSlices),
}
for j := 0; j < int(params.EncodedSlices); j += 1 {
quorum.Signers[j] = ballots[i+j].account
}
quorums.Quorums = append(quorums.Quorums, &quorum)
}
} else {
quorum := types.Quorum{
Signers: make([]string, params.EncodedSlices),
}
n := len(ballots)
for i := 0; i < int(params.EncodedSlices); i += 1 {
quorum.Signers[i] = ballots[i%n].account
}
quorums.Quorums = append(quorums.Quorums, &quorum)
}
// save to store
k.SetEpochSignerSet(ctx, expectedEpoch, epochSignerSet)
k.SetEpochQuorums(ctx, expectedEpoch, quorums)
k.SetEpochNumber(ctx, expectedEpoch)
}

View File

@ -13,17 +13,22 @@ var _ types.QueryServer = Keeper{}
func (k Keeper) Signer(
c context.Context,
req *types.QuerySignerRequest,
request *types.QuerySignerRequest,
) (*types.QuerySignerResponse, error) {
ctx := sdk.UnwrapSDKContext(c)
signer, found, err := k.GetSigner(ctx, req.Account)
if err != nil {
return nil, err
n := len(request.Accounts)
response := types.QuerySignerResponse{Signer: make([]*types.Signer, n)}
for i := 0; i < n; i += 1 {
signer, found, err := k.GetSigner(ctx, request.Accounts[i])
if err != nil {
return nil, err
}
if !found {
return nil, nil
}
response.Signer[i] = &signer
}
if !found {
return nil, nil
}
return &types.QuerySignerResponse{Signer: &signer}, nil
return &response, nil
}
func (k Keeper) EpochNumber(
@ -38,43 +43,56 @@ func (k Keeper) EpochNumber(
return &types.QueryEpochNumberResponse{EpochNumber: epochNumber}, nil
}
func (k Keeper) EpochSignerSet(c context.Context, request *types.QueryEpochSignerSetRequest) (*types.QueryEpochSignerSetResponse, error) {
func (k Keeper) QuorumCount(
c context.Context,
request *types.QueryQuorumCountRequest,
) (*types.QueryQuorumCountResponse, error) {
ctx := sdk.UnwrapSDKContext(c)
signers, found := k.GetEpochSignerSet(ctx, request.EpochNumber)
quorumCount, err := k.GetQuorumCount(ctx, request.EpochNumber)
if err != nil {
return nil, err
}
return &types.QueryQuorumCountResponse{QuorumCount: quorumCount}, nil
}
func (k Keeper) EpochQuorum(c context.Context, request *types.QueryEpochQuorumRequest) (*types.QueryEpochQuorumResponse, error) {
ctx := sdk.UnwrapSDKContext(c)
quorums, found := k.GetEpochQuorums(ctx, request.EpochNumber)
if !found {
return nil, types.ErrEpochSignerSetNotFound
return nil, types.ErrQuorumNotFound
}
epochSignerSet := make([]*types.Signer, len(signers.Signers))
for _, account := range signers.Signers {
signer, found, err := k.GetSigner(ctx, account)
if err != nil {
return nil, err
}
if !found {
return nil, types.ErrSignerNotFound
}
epochSignerSet = append(epochSignerSet, &signer)
if len(quorums.Quorums) <= int(request.QuorumId) {
return nil, types.ErrQuorumIdOutOfBound
}
return &types.QueryEpochSignerSetResponse{Signers: epochSignerSet}, nil
return &types.QueryEpochQuorumResponse{Quorum: quorums.Quorums[request.QuorumId]}, nil
}
func (k Keeper) AggregatePubkeyG1(c context.Context, request *types.QueryAggregatePubkeyG1Request) (*types.QueryAggregatePubkeyG1Response, error) {
ctx := sdk.UnwrapSDKContext(c)
signers, found := k.GetEpochSignerSet(ctx, request.EpochNumber)
quorums, found := k.GetEpochQuorums(ctx, request.EpochNumber)
if !found {
return nil, types.ErrEpochSignerSetNotFound
return nil, types.ErrQuorumNotFound
}
if len(request.SignersBitmap) != (len(signers.Signers)+7)/8 {
return nil, types.ErrSignerLengthNotMatch
if len(quorums.Quorums) <= int(request.QuorumId) {
return nil, types.ErrQuorumIdOutOfBound
}
quorum := quorums.Quorums[request.QuorumId]
if (len(quorum.Signers)+7)/8 != len(request.QuorumBitmap) {
return nil, types.ErrQuorumBitmapLengthMismatch
}
aggPubkeyG1 := new(bn254.G1Affine)
hit := 0
for i, account := range signers.Signers {
b := request.SignersBitmap[i/8] & (1 << (i % 8))
added := make(map[string]struct{})
for i, signer := range quorum.Signers {
b := request.QuorumBitmap[i/8] & (1 << (i % 8))
if b == 0 {
continue
}
signer, found, err := k.GetSigner(ctx, account)
if _, ok := added[signer]; ok {
continue
}
added[signer] = struct{}{}
signer, found, err := k.GetSigner(ctx, signer)
if err != nil {
return nil, err
}
@ -86,7 +104,7 @@ func (k Keeper) AggregatePubkeyG1(c context.Context, request *types.QueryAggrega
}
return &types.QueryAggregatePubkeyG1Response{
AggregatePubkeyG1: bn254util.SerializeG1(aggPubkeyG1),
Total: uint64(len(signers.Signers)),
Total: uint64(len(quorum.Signers)),
Hit: uint64(hit),
}, nil
}

View File

@ -64,6 +64,20 @@ func (k Keeper) SetEpochNumber(ctx sdk.Context, epoch uint64) {
store.Set(types.EpochNumberKey, sdk.Uint64ToBigEndian(epoch))
}
func (k Keeper) GetQuorumCount(ctx sdk.Context, epoch uint64) (uint64, error) {
store := prefix.NewStore(ctx.KVStore(k.storeKey), types.QuorumCountKeyPrefix)
bz := store.Get(types.GetQuorumCountKey(epoch))
if bz == nil {
return 0, types.ErrQuorumNotFound
}
return sdk.BigEndianToUint64(bz), nil
}
func (k Keeper) SetQuorumCount(ctx sdk.Context, epoch uint64, quorums uint64) {
store := prefix.NewStore(ctx.KVStore(k.storeKey), types.QuorumCountKeyPrefix)
store.Set(types.GetQuorumCountKey(epoch), sdk.Uint64ToBigEndian(quorums))
}
func (k Keeper) GetSigner(ctx sdk.Context, account string) (types.Signer, bool, error) {
store := prefix.NewStore(ctx.KVStore(k.storeKey), types.SignerKeyPrefix)
key, err := types.GetSignerKeyFromAccount(account)
@ -122,21 +136,22 @@ func (k Keeper) IterateSigners(ctx sdk.Context, fn func(index int64, signer type
}
}
func (k Keeper) GetEpochSignerSet(ctx sdk.Context, epoch uint64) (types.EpochSignerSet, bool) {
store := prefix.NewStore(ctx.KVStore(k.storeKey), types.EpochSignerSetKeyPrefix)
bz := store.Get(types.GetEpochSignerSetKeyFromEpoch(epoch))
func (k Keeper) GetEpochQuorums(ctx sdk.Context, epoch uint64) (types.Quorums, bool) {
store := prefix.NewStore(ctx.KVStore(k.storeKey), types.EpochQuorumsKeyPrefix)
bz := store.Get(types.GetEpochQuorumsKeyFromEpoch(epoch))
if bz == nil {
return types.EpochSignerSet{}, false
return types.Quorums{}, false
}
var signers types.EpochSignerSet
k.cdc.MustUnmarshal(bz, &signers)
return signers, true
var quorums types.Quorums
k.cdc.MustUnmarshal(bz, &quorums)
return quorums, true
}
func (k Keeper) SetEpochSignerSet(ctx sdk.Context, epoch uint64, signers types.EpochSignerSet) {
store := prefix.NewStore(ctx.KVStore(k.storeKey), types.EpochSignerSetKeyPrefix)
bz := k.cdc.MustMarshal(&signers)
store.Set(types.GetEpochSignerSetKeyFromEpoch(epoch), bz)
func (k Keeper) SetEpochQuorums(ctx sdk.Context, epoch uint64, quorums types.Quorums) {
store := prefix.NewStore(ctx.KVStore(k.storeKey), types.EpochQuorumsKeyPrefix)
bz := k.cdc.MustMarshal(&quorums)
store.Set(types.GetEpochQuorumsKeyFromEpoch(epoch), bz)
k.SetQuorumCount(ctx, epoch, uint64(len(quorums.Quorums)))
}
func (k Keeper) GetRegistration(ctx sdk.Context, epoch uint64, account string) ([]byte, bool, error) {

View File

@ -70,22 +70,22 @@ func (m *Signer) XXX_DiscardUnknown() {
var xxx_messageInfo_Signer proto.InternalMessageInfo
type EpochSignerSet struct {
type Quorum struct {
Signers []string `protobuf:"bytes,1,rep,name=signers,proto3" json:"signers,omitempty"`
}
func (m *EpochSignerSet) Reset() { *m = EpochSignerSet{} }
func (m *EpochSignerSet) String() string { return proto.CompactTextString(m) }
func (*EpochSignerSet) ProtoMessage() {}
func (*EpochSignerSet) Descriptor() ([]byte, []int) {
func (m *Quorum) Reset() { *m = Quorum{} }
func (m *Quorum) String() string { return proto.CompactTextString(m) }
func (*Quorum) ProtoMessage() {}
func (*Quorum) Descriptor() ([]byte, []int) {
return fileDescriptor_b7328dc8ffac059e, []int{1}
}
func (m *EpochSignerSet) XXX_Unmarshal(b []byte) error {
func (m *Quorum) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *EpochSignerSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
func (m *Quorum) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_EpochSignerSet.Marshal(b, m, deterministic)
return xxx_messageInfo_Quorum.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
@ -95,45 +95,85 @@ func (m *EpochSignerSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, erro
return b[:n], nil
}
}
func (m *EpochSignerSet) XXX_Merge(src proto.Message) {
xxx_messageInfo_EpochSignerSet.Merge(m, src)
func (m *Quorum) XXX_Merge(src proto.Message) {
xxx_messageInfo_Quorum.Merge(m, src)
}
func (m *EpochSignerSet) XXX_Size() int {
func (m *Quorum) XXX_Size() int {
return m.Size()
}
func (m *EpochSignerSet) XXX_DiscardUnknown() {
xxx_messageInfo_EpochSignerSet.DiscardUnknown(m)
func (m *Quorum) XXX_DiscardUnknown() {
xxx_messageInfo_Quorum.DiscardUnknown(m)
}
var xxx_messageInfo_EpochSignerSet proto.InternalMessageInfo
var xxx_messageInfo_Quorum proto.InternalMessageInfo
type Quorums struct {
Quorums []*Quorum `protobuf:"bytes,1,rep,name=quorums,proto3" json:"quorums,omitempty"`
}
func (m *Quorums) Reset() { *m = Quorums{} }
func (m *Quorums) String() string { return proto.CompactTextString(m) }
func (*Quorums) ProtoMessage() {}
func (*Quorums) Descriptor() ([]byte, []int) {
return fileDescriptor_b7328dc8ffac059e, []int{2}
}
func (m *Quorums) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *Quorums) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_Quorums.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *Quorums) XXX_Merge(src proto.Message) {
xxx_messageInfo_Quorums.Merge(m, src)
}
func (m *Quorums) XXX_Size() int {
return m.Size()
}
func (m *Quorums) XXX_DiscardUnknown() {
xxx_messageInfo_Quorums.DiscardUnknown(m)
}
var xxx_messageInfo_Quorums proto.InternalMessageInfo
func init() {
proto.RegisterType((*Signer)(nil), "zgc.dasigners.v1.Signer")
proto.RegisterType((*EpochSignerSet)(nil), "zgc.dasigners.v1.EpochSignerSet")
proto.RegisterType((*Quorum)(nil), "zgc.dasigners.v1.Quorum")
proto.RegisterType((*Quorums)(nil), "zgc.dasigners.v1.Quorums")
}
func init() { proto.RegisterFile("zgc/dasigners/v1/dasigners.proto", fileDescriptor_b7328dc8ffac059e) }
var fileDescriptor_b7328dc8ffac059e = []byte{
// 287 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x90, 0xc1, 0x4a, 0xc3, 0x30,
0x1c, 0xc6, 0x1b, 0x27, 0xd3, 0x05, 0x11, 0x29, 0x22, 0xd9, 0x84, 0x50, 0x76, 0x1a, 0x82, 0xcd,
0x3a, 0xdf, 0x40, 0x10, 0x4f, 0x5e, 0xb6, 0x9b, 0x97, 0x91, 0x66, 0x31, 0x2d, 0xdb, 0xfa, 0x2f,
0x4d, 0x3a, 0xec, 0x9e, 0xc2, 0xc7, 0xda, 0x71, 0x47, 0x8f, 0xda, 0xbe, 0x88, 0xb4, 0xa9, 0xcc,
0x79, 0xcb, 0xef, 0xfb, 0x05, 0x3e, 0xfe, 0x1f, 0xf6, 0xb6, 0x4a, 0xb0, 0x05, 0xd7, 0xb1, 0x4a,
0x64, 0xa6, 0xd9, 0x26, 0x38, 0x80, 0x9f, 0x66, 0x60, 0xc0, 0xbd, 0xda, 0x2a, 0xe1, 0x1f, 0xc2,
0x4d, 0x30, 0xe8, 0x0b, 0xd0, 0x6b, 0xd0, 0xf3, 0xc6, 0x33, 0x0b, 0xf6, 0xf3, 0xe0, 0x5a, 0x81,
0x02, 0x9b, 0xd7, 0xaf, 0x36, 0xed, 0x2b, 0x00, 0xb5, 0x92, 0xac, 0xa1, 0x30, 0x7f, 0x63, 0x3c,
0x29, 0x5a, 0x45, 0xff, 0xab, 0x45, 0x9e, 0x71, 0x13, 0x43, 0x62, 0xfd, 0xd0, 0xe0, 0xee, 0xac,
0x69, 0x76, 0x09, 0x3e, 0xe3, 0x42, 0x40, 0x9e, 0x18, 0x82, 0x3c, 0x34, 0xea, 0x4d, 0x7f, 0xd1,
0xbd, 0xc1, 0x5d, 0x0d, 0x62, 0x29, 0x0d, 0x39, 0x69, 0x44, 0x4b, 0xee, 0x2d, 0xee, 0xa5, 0x79,
0xb8, 0x94, 0xc5, 0x5c, 0x05, 0xa4, 0xe3, 0xa1, 0xd1, 0xc5, 0xf4, 0xdc, 0x06, 0xcf, 0xc1, 0x5f,
0x39, 0x21, 0xa7, 0x47, 0x72, 0x32, 0xbc, 0xc3, 0x97, 0x4f, 0x29, 0x88, 0xc8, 0x56, 0xcf, 0xa4,
0xa9, 0xdb, 0xdb, 0x05, 0x08, 0xf2, 0x3a, 0x75, 0x7b, 0x8b, 0x8f, 0x2f, 0xbb, 0x6f, 0xea, 0xec,
0x4a, 0x8a, 0xf6, 0x25, 0x45, 0x5f, 0x25, 0x45, 0x1f, 0x15, 0x75, 0xf6, 0x15, 0x75, 0x3e, 0x2b,
0xea, 0xbc, 0x32, 0x15, 0x9b, 0x28, 0x0f, 0x7d, 0x01, 0x6b, 0x36, 0x56, 0x2b, 0x1e, 0x6a, 0x36,
0x56, 0xf7, 0x22, 0xe2, 0x71, 0xc2, 0xde, 0x8f, 0x87, 0x37, 0x45, 0x2a, 0x75, 0xd8, 0x6d, 0xee,
0x7e, 0xf8, 0x09, 0x00, 0x00, 0xff, 0xff, 0x77, 0x51, 0x09, 0xd9, 0x99, 0x01, 0x00, 0x00,
// 309 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x91, 0xb1, 0x6e, 0xea, 0x30,
0x14, 0x86, 0xe3, 0xcb, 0x55, 0x28, 0x6e, 0x87, 0x2a, 0xaa, 0x2a, 0x43, 0x25, 0x2b, 0xca, 0xc4,
0xd2, 0x98, 0xa4, 0x73, 0x97, 0x2e, 0x9d, 0x3a, 0x94, 0x6e, 0x5d, 0x90, 0x63, 0x52, 0x13, 0x01,
0x39, 0x34, 0xb6, 0x51, 0xe1, 0x29, 0xfa, 0x58, 0x8c, 0x8c, 0x1d, 0x5b, 0x78, 0x91, 0x0a, 0x3b,
0x88, 0xc2, 0x76, 0xbe, 0xff, 0xfb, 0xa5, 0x23, 0x1f, 0xe3, 0x70, 0x29, 0x05, 0x1b, 0x72, 0x55,
0xc8, 0x32, 0xaf, 0x14, 0x9b, 0x27, 0x07, 0x88, 0x67, 0x15, 0x68, 0x08, 0x2e, 0x97, 0x52, 0xc4,
0x87, 0x70, 0x9e, 0x74, 0xda, 0x02, 0xd4, 0x14, 0xd4, 0xc0, 0x7a, 0xe6, 0xc0, 0x95, 0x3b, 0x57,
0x12, 0x24, 0xb8, 0x7c, 0x37, 0xd5, 0x69, 0x5b, 0x02, 0xc8, 0x49, 0xce, 0x2c, 0x65, 0xe6, 0x8d,
0xf1, 0x72, 0x51, 0x2b, 0x7a, 0xaa, 0x86, 0xa6, 0xe2, 0xba, 0x80, 0xd2, 0xf9, 0x48, 0x63, 0xff,
0xc5, 0x6e, 0x0e, 0x08, 0x6e, 0x72, 0x21, 0xc0, 0x94, 0x9a, 0xa0, 0x10, 0x75, 0x5b, 0xfd, 0x3d,
0x06, 0xd7, 0xd8, 0x57, 0x20, 0xc6, 0xb9, 0x26, 0xff, 0xac, 0xa8, 0x29, 0xb8, 0xc1, 0xad, 0x99,
0xc9, 0xc6, 0xf9, 0x62, 0x20, 0x13, 0xd2, 0x08, 0x51, 0xf7, 0xa2, 0x7f, 0xe6, 0x82, 0xc7, 0xe4,
0xaf, 0x4c, 0xc9, 0xff, 0x23, 0x99, 0x46, 0x11, 0xf6, 0x9f, 0x0d, 0x54, 0x66, 0xba, 0xdb, 0x5a,
0xbf, 0x9c, 0xa0, 0xb0, 0xb1, 0xdb, 0x5a, 0x63, 0x74, 0x8f, 0x9b, 0xae, 0xa3, 0x82, 0x14, 0x37,
0xdf, 0xdd, 0x68, 0x4b, 0xe7, 0x29, 0x89, 0x4f, 0x8f, 0x16, 0xbb, 0x6e, 0x7f, 0x5f, 0x7c, 0x78,
0x5a, 0xfd, 0x50, 0x6f, 0xb5, 0xa1, 0x68, 0xbd, 0xa1, 0xe8, 0x7b, 0x43, 0xd1, 0xe7, 0x96, 0x7a,
0xeb, 0x2d, 0xf5, 0xbe, 0xb6, 0xd4, 0x7b, 0x65, 0xb2, 0xd0, 0x23, 0x93, 0xc5, 0x02, 0xa6, 0xac,
0x27, 0x27, 0x3c, 0x53, 0xac, 0x27, 0x6f, 0xc5, 0x88, 0x17, 0x25, 0xfb, 0x38, 0xfe, 0x2f, 0xbd,
0x98, 0xe5, 0x2a, 0xf3, 0xed, 0xb9, 0xee, 0x7e, 0x03, 0x00, 0x00, 0xff, 0xff, 0xc2, 0x80, 0xdc,
0x60, 0xd0, 0x01, 0x00, 0x00,
}
func (m *Signer) Marshal() (dAtA []byte, err error) {
@ -187,7 +227,7 @@ func (m *Signer) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *EpochSignerSet) Marshal() (dAtA []byte, err error) {
func (m *Quorum) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
@ -197,12 +237,12 @@ func (m *EpochSignerSet) Marshal() (dAtA []byte, err error) {
return dAtA[:n], nil
}
func (m *EpochSignerSet) MarshalTo(dAtA []byte) (int, error) {
func (m *Quorum) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *EpochSignerSet) MarshalToSizedBuffer(dAtA []byte) (int, error) {
func (m *Quorum) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
@ -219,6 +259,43 @@ func (m *EpochSignerSet) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *Quorums) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *Quorums) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *Quorums) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if len(m.Quorums) > 0 {
for iNdEx := len(m.Quorums) - 1; iNdEx >= 0; iNdEx-- {
{
size, err := m.Quorums[iNdEx].MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintDasigners(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0xa
}
}
return len(dAtA) - i, nil
}
func encodeVarintDasigners(dAtA []byte, offset int, v uint64) int {
offset -= sovDasigners(v)
base := offset
@ -255,7 +332,7 @@ func (m *Signer) Size() (n int) {
return n
}
func (m *EpochSignerSet) Size() (n int) {
func (m *Quorum) Size() (n int) {
if m == nil {
return 0
}
@ -270,6 +347,21 @@ func (m *EpochSignerSet) Size() (n int) {
return n
}
func (m *Quorums) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if len(m.Quorums) > 0 {
for _, e := range m.Quorums {
l = e.Size()
n += 1 + l + sovDasigners(uint64(l))
}
}
return n
}
func sovDasigners(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
@ -458,7 +550,7 @@ func (m *Signer) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *EpochSignerSet) Unmarshal(dAtA []byte) error {
func (m *Quorum) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
@ -481,10 +573,10 @@ func (m *EpochSignerSet) Unmarshal(dAtA []byte) error {
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: EpochSignerSet: wiretype end group for non-group")
return fmt.Errorf("proto: Quorum: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: EpochSignerSet: illegal tag %d (wire type %d)", fieldNum, wire)
return fmt.Errorf("proto: Quorum: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
@ -540,6 +632,90 @@ func (m *EpochSignerSet) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *Quorums) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowDasigners
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: Quorums: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: Quorums: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Quorums", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowDasigners
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthDasigners
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthDasigners
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Quorums = append(m.Quorums, &Quorum{})
if err := m.Quorums[len(m.Quorums)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipDasigners(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthDasigners
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipDasigners(dAtA []byte) (n int, err error) {
l := len(dAtA)
iNdEx := 0

View File

@ -3,10 +3,11 @@ package types
import errorsmod "cosmossdk.io/errors"
var (
ErrSignerExists = errorsmod.Register(ModuleName, 1, "signer exists")
ErrEpochNumberNotSet = errorsmod.Register(ModuleName, 2, "epoch number not set")
ErrSignerNotFound = errorsmod.Register(ModuleName, 3, "signer not found")
ErrInvalidSignature = errorsmod.Register(ModuleName, 4, "invalid signature")
ErrEpochSignerSetNotFound = errorsmod.Register(ModuleName, 5, "signer set for epoch not found")
ErrSignerLengthNotMatch = errorsmod.Register(ModuleName, 6, "signer set length not match")
ErrSignerExists = errorsmod.Register(ModuleName, 1, "signer exists")
ErrEpochNumberNotSet = errorsmod.Register(ModuleName, 2, "epoch number not set")
ErrSignerNotFound = errorsmod.Register(ModuleName, 3, "signer not found")
ErrInvalidSignature = errorsmod.Register(ModuleName, 4, "invalid signature")
ErrQuorumNotFound = errorsmod.Register(ModuleName, 5, "quorum for epoch not found")
ErrQuorumIdOutOfBound = errorsmod.Register(ModuleName, 6, "quorum id out of bound")
ErrQuorumBitmapLengthMismatch = errorsmod.Register(ModuleName, 6, "quorum bitmap length mismatch")
)

View File

@ -3,23 +3,23 @@ package types
import "fmt"
// NewGenesisState returns a new genesis state object for the module.
func NewGenesisState(params Params, epoch uint64, signers []*Signer, signersByEpoch []*EpochSignerSet) *GenesisState {
func NewGenesisState(params Params, epoch uint64, signers []*Signer, quorumsByEpoch []*Quorums) *GenesisState {
return &GenesisState{
Params: params,
EpochNumber: epoch,
Signers: signers,
SignersByEpoch: signersByEpoch,
QuorumsByEpoch: quorumsByEpoch,
}
}
// DefaultGenesisState returns the default genesis state for the module.
func DefaultGenesisState() *GenesisState {
return NewGenesisState(Params{
QuorumSize: 1024,
TokensPerVote: "100",
MaxVotes: 100,
EpochBlocks: 1000,
}, 0, make([]*Signer, 0), make([]*EpochSignerSet, 0))
EncodedSlices: 3072,
}, 0, make([]*Signer, 0), make([]*Quorums, 0))
}
// Validate performs basic validation of genesis data.
@ -31,16 +31,18 @@ func (gs GenesisState) Validate() error {
}
registered[signer.Account] = struct{}{}
}
if len(gs.SignersByEpoch) != int(gs.EpochNumber) {
if len(gs.QuorumsByEpoch) != int(gs.EpochNumber) {
return fmt.Errorf("epoch history missing")
}
for _, signers := range gs.SignersByEpoch {
for _, signer := range signers.Signers {
if err := ValidateHexAddress(signer); err != nil {
return err
}
if _, ok := registered[signer]; !ok {
return fmt.Errorf("historical signer detail missing")
for _, quorums := range gs.QuorumsByEpoch {
for _, quorum := range quorums.Quorums {
for _, signer := range quorum.Signers {
if err := ValidateHexAddress(signer); err != nil {
return err
}
if _, ok := registered[signer]; !ok {
return fmt.Errorf("historical signer detail missing")
}
}
}
}

View File

@ -27,10 +27,10 @@ var _ = math.Inf
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type Params struct {
QuorumSize uint64 `protobuf:"varint,1,opt,name=quorum_size,json=quorumSize,proto3" json:"quorum_size,omitempty"`
TokensPerVote string `protobuf:"bytes,2,opt,name=tokens_per_vote,json=tokensPerVote,proto3" json:"tokens_per_vote,omitempty"`
MaxVotes uint64 `protobuf:"varint,3,opt,name=max_votes,json=maxVotes,proto3" json:"max_votes,omitempty"`
EpochBlocks uint64 `protobuf:"varint,4,opt,name=epoch_blocks,json=epochBlocks,proto3" json:"epoch_blocks,omitempty"`
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"`
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"`
}
func (m *Params) Reset() { *m = Params{} }
@ -66,13 +66,6 @@ func (m *Params) XXX_DiscardUnknown() {
var xxx_messageInfo_Params proto.InternalMessageInfo
func (m *Params) GetQuorumSize() uint64 {
if m != nil {
return m.QuorumSize
}
return 0
}
func (m *Params) GetTokensPerVote() string {
if m != nil {
return m.TokensPerVote
@ -94,6 +87,13 @@ func (m *Params) GetEpochBlocks() uint64 {
return 0
}
func (m *Params) GetEncodedSlices() uint64 {
if m != nil {
return m.EncodedSlices
}
return 0
}
// GenesisState defines the dasigners module's genesis state.
type GenesisState struct {
// params defines all the parameters of related to deposit.
@ -102,8 +102,8 @@ type GenesisState struct {
EpochNumber uint64 `protobuf:"varint,2,opt,name=epoch_number,json=epochNumber,proto3" json:"epoch_number,omitempty"`
// signers defines all signers information
Signers []*Signer `protobuf:"bytes,3,rep,name=signers,proto3" json:"signers,omitempty"`
// signers_by_epoch defines chosen signers by epoch
SignersByEpoch []*EpochSignerSet `protobuf:"bytes,4,rep,name=signers_by_epoch,json=signersByEpoch,proto3" json:"signers_by_epoch,omitempty"`
// quorums_by_epoch defines chosen quorums by epoch
QuorumsByEpoch []*Quorums `protobuf:"bytes,4,rep,name=quorums_by_epoch,json=quorumsByEpoch,proto3" json:"quorums_by_epoch,omitempty"`
}
func (m *GenesisState) Reset() { *m = GenesisState{} }
@ -160,9 +160,9 @@ func (m *GenesisState) GetSigners() []*Signer {
return nil
}
func (m *GenesisState) GetSignersByEpoch() []*EpochSignerSet {
func (m *GenesisState) GetQuorumsByEpoch() []*Quorums {
if m != nil {
return m.SignersByEpoch
return m.QuorumsByEpoch
}
return nil
}
@ -175,33 +175,34 @@ func init() {
func init() { proto.RegisterFile("zgc/dasigners/v1/genesis.proto", fileDescriptor_896efa766aaca3be) }
var fileDescriptor_896efa766aaca3be = []byte{
// 415 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x91, 0xc1, 0x6e, 0xd3, 0x30,
0x1c, 0xc6, 0x6b, 0x1a, 0x15, 0xe6, 0x0e, 0x98, 0x2c, 0x0e, 0xd9, 0x90, 0xd2, 0xb0, 0x03, 0xda,
0x85, 0x78, 0x1b, 0x12, 0x0f, 0x10, 0x09, 0x21, 0x38, 0xa0, 0x29, 0x91, 0x38, 0x70, 0x89, 0x9c,
0xf0, 0xc7, 0x8d, 0x56, 0xc7, 0x21, 0x76, 0xaa, 0x26, 0x4f, 0x01, 0x6f, 0xb5, 0xe3, 0x8e, 0x9c,
0x10, 0x6a, 0x4f, 0xbc, 0x05, 0xea, 0xdf, 0x19, 0x13, 0xeb, 0x6e, 0x7f, 0x7f, 0xbf, 0xcf, 0x9f,
0x3f, 0xdb, 0x34, 0xe8, 0x65, 0xc1, 0xbf, 0x08, 0x53, 0xca, 0x0a, 0x1a, 0xc3, 0x97, 0x67, 0x5c,
0x42, 0x05, 0xa6, 0x34, 0x51, 0xdd, 0x68, 0xab, 0xd9, 0x41, 0x2f, 0x8b, 0xe8, 0x1f, 0x8f, 0x96,
0x67, 0x47, 0x87, 0x85, 0x36, 0x4a, 0x9b, 0x0c, 0x39, 0x77, 0x0b, 0x67, 0x3e, 0x7a, 0x26, 0xb5,
0xd4, 0x4e, 0xdf, 0x4e, 0x83, 0x7a, 0x28, 0xb5, 0x96, 0x0b, 0xe0, 0xb8, 0xca, 0xdb, 0xaf, 0x5c,
0x54, 0xdd, 0x80, 0x66, 0x77, 0x91, 0x2d, 0x15, 0x18, 0x2b, 0x54, 0x3d, 0x18, 0xc2, 0x9d, 0x7a,
0xb7, 0x5d, 0xd0, 0x71, 0xfc, 0x83, 0xd0, 0xc9, 0x85, 0x68, 0x84, 0x32, 0x6c, 0x46, 0xa7, 0xdf,
0x5a, 0xdd, 0xb4, 0x2a, 0x33, 0x65, 0x0f, 0x3e, 0x09, 0xc9, 0x89, 0x97, 0x50, 0x27, 0xa5, 0x65,
0x0f, 0xec, 0x25, 0x7d, 0x6a, 0xf5, 0x25, 0x54, 0x26, 0xab, 0xa1, 0xc9, 0x96, 0xda, 0x82, 0xff,
0x20, 0x24, 0x27, 0x7b, 0xc9, 0x63, 0x27, 0x5f, 0x40, 0xf3, 0x49, 0x5b, 0x60, 0xcf, 0xe9, 0x9e,
0x12, 0x2b, 0x34, 0x18, 0x7f, 0x8c, 0x31, 0x8f, 0x94, 0x58, 0x6d, 0x99, 0x61, 0x2f, 0xe8, 0x3e,
0xd4, 0xba, 0x98, 0x67, 0xf9, 0x42, 0x17, 0x97, 0xc6, 0xf7, 0x90, 0x4f, 0x51, 0x8b, 0x51, 0x3a,
0xfe, 0x43, 0xe8, 0xfe, 0x3b, 0xf7, 0x8c, 0xa9, 0x15, 0x16, 0xd8, 0x1b, 0x3a, 0xa9, 0xb1, 0x23,
0x96, 0x9a, 0x9e, 0xfb, 0xd1, 0xdd, 0x67, 0x8d, 0xdc, 0x1d, 0x62, 0xef, 0xea, 0xd7, 0x6c, 0x94,
0x0c, 0xee, 0xdb, 0xb3, 0xaa, 0x56, 0xe5, 0xd0, 0x60, 0xdb, 0x9b, 0xb3, 0x3e, 0xa2, 0xc4, 0xce,
0xe9, 0xc3, 0x21, 0xc5, 0x1f, 0x87, 0xe3, 0xfb, 0xb3, 0x53, 0x1c, 0x93, 0x1b, 0x23, 0xfb, 0x40,
0x0f, 0x86, 0x31, 0xcb, 0xbb, 0x0c, 0xd3, 0x7c, 0x0f, 0x37, 0x87, 0xbb, 0x9b, 0xdf, 0x6e, 0xb1,
0x4b, 0x48, 0xc1, 0x26, 0x4f, 0x06, 0x14, 0x77, 0x08, 0xe2, 0xf7, 0x57, 0xeb, 0x80, 0x5c, 0xaf,
0x03, 0xf2, 0x7b, 0x1d, 0x90, 0xef, 0x9b, 0x60, 0x74, 0xbd, 0x09, 0x46, 0x3f, 0x37, 0xc1, 0xe8,
0x33, 0x97, 0xa5, 0x9d, 0xb7, 0x79, 0x54, 0x68, 0xc5, 0x4f, 0xe5, 0x42, 0xe4, 0x86, 0x9f, 0xca,
0x57, 0xc5, 0x5c, 0x94, 0x15, 0x5f, 0xfd, 0xff, 0xa9, 0xb6, 0xab, 0xc1, 0xe4, 0x13, 0xfc, 0xd1,
0xd7, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xd0, 0x84, 0xf4, 0xab, 0x94, 0x02, 0x00, 0x00,
// 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,
}
func (m *Params) Marshal() (dAtA []byte, err error) {
@ -224,27 +225,27 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if m.EncodedSlices != 0 {
i = encodeVarintGenesis(dAtA, i, uint64(m.EncodedSlices))
i--
dAtA[i] = 0x20
}
if m.EpochBlocks != 0 {
i = encodeVarintGenesis(dAtA, i, uint64(m.EpochBlocks))
i--
dAtA[i] = 0x20
dAtA[i] = 0x18
}
if m.MaxVotes != 0 {
i = encodeVarintGenesis(dAtA, i, uint64(m.MaxVotes))
i--
dAtA[i] = 0x18
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)))
i--
dAtA[i] = 0x12
}
if m.QuorumSize != 0 {
i = encodeVarintGenesis(dAtA, i, uint64(m.QuorumSize))
i--
dAtA[i] = 0x8
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
@ -269,10 +270,10 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if len(m.SignersByEpoch) > 0 {
for iNdEx := len(m.SignersByEpoch) - 1; iNdEx >= 0; iNdEx-- {
if len(m.QuorumsByEpoch) > 0 {
for iNdEx := len(m.QuorumsByEpoch) - 1; iNdEx >= 0; iNdEx-- {
{
size, err := m.SignersByEpoch[iNdEx].MarshalToSizedBuffer(dAtA[:i])
size, err := m.QuorumsByEpoch[iNdEx].MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
@ -332,9 +333,6 @@ func (m *Params) Size() (n int) {
}
var l int
_ = l
if m.QuorumSize != 0 {
n += 1 + sovGenesis(uint64(m.QuorumSize))
}
l = len(m.TokensPerVote)
if l > 0 {
n += 1 + l + sovGenesis(uint64(l))
@ -345,6 +343,9 @@ func (m *Params) Size() (n int) {
if m.EpochBlocks != 0 {
n += 1 + sovGenesis(uint64(m.EpochBlocks))
}
if m.EncodedSlices != 0 {
n += 1 + sovGenesis(uint64(m.EncodedSlices))
}
return n
}
@ -365,8 +366,8 @@ func (m *GenesisState) Size() (n int) {
n += 1 + l + sovGenesis(uint64(l))
}
}
if len(m.SignersByEpoch) > 0 {
for _, e := range m.SignersByEpoch {
if len(m.QuorumsByEpoch) > 0 {
for _, e := range m.QuorumsByEpoch {
l = e.Size()
n += 1 + l + sovGenesis(uint64(l))
}
@ -410,25 +411,6 @@ func (m *Params) Unmarshal(dAtA []byte) error {
}
switch fieldNum {
case 1:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field QuorumSize", wireType)
}
m.QuorumSize = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenesis
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.QuorumSize |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field TokensPerVote", wireType)
}
@ -460,7 +442,7 @@ func (m *Params) Unmarshal(dAtA []byte) error {
}
m.TokensPerVote = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
case 2:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field MaxVotes", wireType)
}
@ -479,7 +461,7 @@ func (m *Params) Unmarshal(dAtA []byte) error {
break
}
}
case 4:
case 3:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field EpochBlocks", wireType)
}
@ -498,6 +480,25 @@ func (m *Params) Unmarshal(dAtA []byte) error {
break
}
}
case 4:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field EncodedSlices", wireType)
}
m.EncodedSlices = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenesis
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.EncodedSlices |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
default:
iNdEx = preIndex
skippy, err := skipGenesis(dAtA[iNdEx:])
@ -636,7 +637,7 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error {
iNdEx = postIndex
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field SignersByEpoch", wireType)
return fmt.Errorf("proto: wrong wireType = %d for field QuorumsByEpoch", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@ -663,8 +664,8 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error {
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.SignersByEpoch = append(m.SignersByEpoch, &EpochSignerSet{})
if err := m.SignersByEpoch[len(m.SignersByEpoch)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
m.QuorumsByEpoch = append(m.QuorumsByEpoch, &Quorums{})
if err := m.QuorumsByEpoch[len(m.QuorumsByEpoch)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex

View File

@ -19,9 +19,10 @@ const (
var (
// prefix
SignerKeyPrefix = []byte{0x00}
EpochSignerSetKeyPrefix = []byte{0x01}
RegistrationKeyPrefix = []byte{0x02}
SignerKeyPrefix = []byte{0x00}
EpochQuorumsKeyPrefix = []byte{0x01}
RegistrationKeyPrefix = []byte{0x02}
QuorumCountKeyPrefix = []byte{0x03}
// keys
ParamsKey = []byte{0x05}
@ -32,7 +33,11 @@ func GetSignerKeyFromAccount(account string) ([]byte, error) {
return hex.DecodeString(account)
}
func GetEpochSignerSetKeyFromEpoch(epoch uint64) []byte {
func GetEpochQuorumsKeyFromEpoch(epoch uint64) []byte {
return sdk.Uint64ToBigEndian(epoch)
}
func GetQuorumCountKey(epoch uint64) []byte {
return sdk.Uint64ToBigEndian(epoch)
}

File diff suppressed because it is too large Load Diff

View File

@ -52,37 +52,73 @@ func local_request_Query_EpochNumber_0(ctx context.Context, marshaler runtime.Ma
}
var (
filter_Query_EpochSignerSet_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
filter_Query_QuorumCount_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
func request_Query_EpochSignerSet_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryEpochSignerSetRequest
func request_Query_QuorumCount_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryQuorumCountRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_EpochSignerSet_0); err != nil {
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_QuorumCount_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.EpochSignerSet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
msg, err := client.QuorumCount(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_Query_EpochSignerSet_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryEpochSignerSetRequest
func local_request_Query_QuorumCount_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryQuorumCountRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_EpochSignerSet_0); err != nil {
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_QuorumCount_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.EpochSignerSet(ctx, &protoReq)
msg, err := server.QuorumCount(ctx, &protoReq)
return msg, metadata, err
}
var (
filter_Query_EpochQuorum_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
func request_Query_EpochQuorum_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryEpochQuorumRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_EpochQuorum_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.EpochQuorum(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_Query_EpochQuorum_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryEpochQuorumRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_EpochQuorum_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.EpochQuorum(ctx, &protoReq)
return msg, metadata, err
}
@ -188,7 +224,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
})
mux.Handle("GET", pattern_Query_EpochSignerSet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
mux.Handle("GET", pattern_Query_QuorumCount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
@ -199,7 +235,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_Query_EpochSignerSet_0(rctx, inboundMarshaler, server, req, pathParams)
resp, md, err := local_request_Query_QuorumCount_0(rctx, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
@ -207,7 +243,30 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
return
}
forward_Query_EpochSignerSet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
forward_Query_QuorumCount_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_Query_EpochQuorum_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_Query_EpochQuorum_0(rctx, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Query_EpochQuorum_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@ -318,7 +377,7 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
})
mux.Handle("GET", pattern_Query_EpochSignerSet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
mux.Handle("GET", pattern_Query_QuorumCount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
@ -327,14 +386,34 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_Query_EpochSignerSet_0(rctx, inboundMarshaler, client, req, pathParams)
resp, md, err := request_Query_QuorumCount_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Query_EpochSignerSet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
forward_Query_QuorumCount_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_Query_EpochQuorum_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_Query_EpochQuorum_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Query_EpochQuorum_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@ -384,7 +463,9 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
var (
pattern_Query_EpochNumber_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"0g", "dasigners", "v1", "epoch-number"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_EpochSignerSet_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"0g", "dasigners", "v1", "epoch-signer-set"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_QuorumCount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"0g", "dasigners", "v1", "quorum-count"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_EpochQuorum_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"0g", "dasigners", "v1", "epoch-quorum"}, "", runtime.AssumeColonVerbOpt(false)))
pattern_Query_AggregatePubkeyG1_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"0g", "dasigners", "v1", "aggregate-pubkey-g1"}, "", runtime.AssumeColonVerbOpt(false)))
@ -394,7 +475,9 @@ var (
var (
forward_Query_EpochNumber_0 = runtime.ForwardResponseMessage
forward_Query_EpochSignerSet_0 = runtime.ForwardResponseMessage
forward_Query_QuorumCount_0 = runtime.ForwardResponseMessage
forward_Query_EpochQuorum_0 = runtime.ForwardResponseMessage
forward_Query_AggregatePubkeyG1_0 = runtime.ForwardResponseMessage