poa

package module
v0.0.0-...-5842489 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 31, 2023 License: MIT Imports: 19 Imported by: 0

README

PoA

Proof-of-Authority module for Cosmos SDK

This module implements a simple Proof of Authority system to determine the Tendermint validator set of the Cosmos SDK application through internal voting.

This simple module can be used in a Cosmos SDK application without the dependency of other modules.

An initial validator set is defined in the genesis file. Then, validators can be appended or kicked from the validator set through voting from the current validators. A quorum percentage is defined in the parameters of the module. This quorum defines the number of approvals required to vote decision. For example: if the quorum is 50% and the current validator set contains 10 validators. 5 validator approvals are required to accept a new candidate in the validator set. All validators in the system have equal voting power.

Queries

The following queries are available to consult state of the validator set:

  • validator Query a validator
  • validators Query all validators
  • params Query the params
  • applications Query the applications to become validator
  • kick-proposals Query the kick proposals to remove validator

They can be called with the command <cli> query poa <query>

Transactions

The following transactions are available to interact with the validator set

  • apply Apply to become a new validator in the network
  • propose-kick Propose to kick a validator from the validator
  • vote-application Approve or reject the application to become a validator
  • vote-kick-proposal Approve or reject a kick proposal to remove a validator
  • leave-validator-set Instantly leave the validator set

They can be called with the command <cli> tx poa <tx>

Technical specifications

The specifications of this module can be found here

Demonstration Example

An example of the interaction with the validator set can be found here with the SupplyChainX application https://github.com/shivam2320/supplychainx/blob/master/DEMO.md

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BeginBlocker

func BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock, k keeper.Keeper)

BeginBlocker check for infraction evidence or downtime of validators on every begin block

func EndBlocker

func EndBlocker(ctx sdk.Context, k keeper.Keeper) (updates []abci.ValidatorUpdate)

EndBlocker called every block, process inflation, update validator set.

func ExportGenesis

func ExportGenesis(ctx sdk.Context, k keeper.Keeper) (data types.GenesisState)

ExportGenesis writes the current store values to a genesis file, which can be imported again with InitGenesis

func InitGenesis

func InitGenesis(ctx sdk.Context, k keeper.Keeper, data types.GenesisState) (res []abci.ValidatorUpdate)

InitGenesis initialize default parameters and the keeper's address to pubkey map

func MockContext

func MockContext() (sdk.Context, keeper.Keeper)

Context and keeper used for mocking purpose

func MockValAddress

func MockValAddress() sdk.ValAddress

Create an validator address

func MockValidator

func MockValidator() (types.Validator, string)

Create a validator for test

func NewHandler

func NewHandler(k keeper.Keeper) sdk.Handler

NewHandler creates an sdk.Handler for all the poa type messages

Types

type AppModule

type AppModule struct {
	AppModuleBasic
	// contains filtered or unexported fields
}

AppModule implements an application module for the poa module.

func NewAppModule

func NewAppModule(k keeper.Keeper) AppModule

NewAppModule creates a new AppModule object

func (AppModule) BeginBlock

func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock)

BeginBlock returns the begin blocker for the poa module.

func (AppModule) EndBlock

EndBlock returns the end blocker for the poa module.

func (AppModule) ExportGenesis

func (am AppModule) ExportGenesis(ctx sdk.Context) json.RawMessage

ExportGenesis returns the exported genesis state as raw bytes for the poa module.

func (AppModule) InitGenesis

func (am AppModule) InitGenesis(ctx sdk.Context, data json.RawMessage) []abci.ValidatorUpdate

InitGenesis performs genesis initialization for the poa module.

func (AppModule) Name

func (AppModule) Name() string

Name returns the poa module's name.

func (AppModule) NewHandler

func (am AppModule) NewHandler() sdk.Handler

NewHandler returns an sdk.Handler for the poa module.

func (AppModule) NewQuerierHandler

func (am AppModule) NewQuerierHandler() sdk.Querier

NewQuerierHandler returns the poa module sdk.Querier.

func (AppModule) QuerierRoute

func (AppModule) QuerierRoute() string

QuerierRoute returns the poa module's querier route name.

func (AppModule) RegisterInvariants

func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry)

RegisterInvariants registers the poa module invariants.

func (AppModule) Route

func (AppModule) Route() string

Route returns the message routing key for the poa module.

type AppModuleBasic

type AppModuleBasic struct{}

AppModuleBasic defines the basic application module used by the poa module.

func (AppModuleBasic) DefaultGenesis

func (AppModuleBasic) DefaultGenesis() json.RawMessage

DefaultGenesis returns default genesis state as raw bytes for the poa module.

func (AppModuleBasic) GetQueryCmd

func (AppModuleBasic) GetQueryCmd(cdc *codec.Codec) *cobra.Command

GetQueryCmd returns no root query command for the poa module.

func (AppModuleBasic) GetTxCmd

func (AppModuleBasic) GetTxCmd(cdc *codec.Codec) *cobra.Command

GetTxCmd returns the root tx command for the poa module.

func (AppModuleBasic) Name

func (AppModuleBasic) Name() string

Name returns the poa module's name.

func (AppModuleBasic) RegisterCodec

func (AppModuleBasic) RegisterCodec(cdc *codec.Codec)

RegisterCodec registers the poa module's types for the given codec.

func (AppModuleBasic) RegisterRESTRoutes

func (AppModuleBasic) RegisterRESTRoutes(ctx context.CLIContext, rtr *mux.Router)

RegisterRESTRoutes registers the REST routes for the poa module.

func (AppModuleBasic) ValidateGenesis

func (AppModuleBasic) ValidateGenesis(bz json.RawMessage) error

ValidateGenesis performs genesis state validation for the poa module.

Directories

Path Synopsis
client
cli

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL