Documentation ¶
Index ¶
- Constants
- func ABCIValidator(v Validator) abci.Validator
- func Bech32ifyAcc(addr Address) (string, error)
- func Bech32ifyAccPub(pub crypto.PubKey) (string, error)
- func Bech32ifyVal(addr Address) (string, error)
- func Bech32ifyValPub(pub crypto.PubKey) (string, error)
- func BondStatusToString(b BondStatus) string
- func CodeToDefaultMsg(code CodeType) string
- func GetAccPubKeyBech32(address string) (pk crypto.PubKey, err error)
- func GetFromBech32(bech32str, prefix string) ([]byte, error)
- func GetValPubKeyBech32(pubkey string) (pk crypto.PubKey, err error)
- func MustBech32ifyAcc(addr Address) string
- func MustBech32ifyAccPub(pub crypto.PubKey) string
- func MustBech32ifyVal(addr Address) string
- func MustBech32ifyValPub(pub crypto.PubKey) string
- func NewRatFromDecimal(decimalStr string) (f Rat, err Error)
- func PrefixEndBytes(prefix []byte) []byte
- func RatEq(t *testing.T, exp, got Rat) (*testing.T, bool, string, Rat, Rat)
- func RatsEqual(r1s, r2s []Rat) bool
- func RegisterWire(cdc *wire.Codec)
- type ABCICodeType
- type Address
- type AnteHandler
- type BeginBlocker
- type BondStatus
- type CacheKVStore
- type CacheMultiStore
- type CacheWrap
- type CacheWrapper
- type CodeType
- type CodespaceType
- type Codespacer
- type Coin
- func (coin Coin) IsEqual(other Coin) bool
- func (coin Coin) IsGTE(other Coin) bool
- func (coin Coin) IsNotNegative() bool
- func (coin Coin) IsPositive() bool
- func (coin Coin) IsZero() bool
- func (coin Coin) Minus(coinB Coin) Coin
- func (coin Coin) Plus(coinB Coin) Coin
- func (coin Coin) SameDenomAs(other Coin) bool
- func (coin Coin) String() string
- type Coins
- func (coins Coins) AmountOf(denom string) int64
- func (coins Coins) IsEqual(coinsB Coins) bool
- func (coins Coins) IsGTE(coinsB Coins) bool
- func (coins Coins) IsNotNegative() bool
- func (coins Coins) IsPositive() bool
- func (coins Coins) IsValid() bool
- func (coins Coins) IsZero() bool
- func (coins Coins) Len() int
- func (coins Coins) Less(i, j int) bool
- func (coins Coins) Minus(coinsB Coins) Coins
- func (coins Coins) Negative() Coins
- func (coins Coins) Plus(coinsB Coins) Coins
- func (coins Coins) Sort() Coins
- func (coins Coins) String() string
- func (coins Coins) Swap(i, j int)
- type CommitID
- type CommitKVStore
- type CommitMultiStore
- type CommitStore
- type Committer
- type Context
- func (c Context) BlockHeader() abci.Header
- func (c Context) BlockHeight() int64
- func (c Context) CacheContext() (cc Context, writeCache func())
- func (c Context) ChainID() string
- func (c Context) GasMeter() GasMeter
- func (c Context) GetOp(ver int64) (Op, bool)
- func (c Context) IsCheckTx() bool
- func (c Context) IsZero() bool
- func (c Context) KVStore(key StoreKey) KVStore
- func (c Context) Logger() log.Logger
- func (c Context) SigningValidators() []abci.SigningValidator
- func (c Context) TxBytes() []byte
- func (c Context) Value(key interface{}) interface{}
- func (c Context) WithBlockHeader(header abci.Header) Context
- func (c Context) WithBlockHeight(height int64) Context
- func (c Context) WithCacheWrapper(key interface{}, value CacheWrapper) Context
- func (c Context) WithChainID(chainID string) Context
- func (c Context) WithCloner(key interface{}, value cloner) Context
- func (c Context) WithGasMeter(meter GasMeter) Context
- func (c Context) WithInt32(key interface{}, value int32) Context
- func (c Context) WithIsCheckTx(isCheckTx bool) Context
- func (c Context) WithLogger(logger log.Logger) Context
- func (c Context) WithMultiStore(ms MultiStore) Context
- func (c Context) WithProtoMsg(key interface{}, value proto.Message) Context
- func (c Context) WithSigningValidators(SigningValidators []abci.SigningValidator) Context
- func (c Context) WithString(key interface{}, value string) Context
- func (c Context) WithTxBytes(txBytes []byte) Context
- func (c Context) WithUint32(key interface{}, value uint32) Context
- func (c Context) WithUint64(key interface{}, value uint64) Context
- func (c Context) WithValue(key interface{}, value interface{}) Context
- type Delegation
- type DelegationSet
- type EndBlocker
- type Error
- func ErrInsufficientCoins(msg string) Error
- func ErrInsufficientFunds(msg string) Error
- func ErrInternal(msg string) Error
- func ErrInvalidAddress(msg string) Error
- func ErrInvalidCoins(msg string) Error
- func ErrInvalidPubKey(msg string) Error
- func ErrInvalidSequence(msg string) Error
- func ErrOutOfGas(msg string) Error
- func ErrTxDecode(msg string) Error
- func ErrUnauthorized(msg string) Error
- func ErrUnknownAddress(msg string) Error
- func ErrUnknownRequest(msg string) Error
- func NewError(codespace CodespaceType, code CodeType, msg string) Error
- type ErrorOutOfGas
- type Gas
- type GasMeter
- type Handler
- type InitChainer
- type Iterator
- type KVPair
- type KVStore
- type KVStoreKey
- type Msg
- type MultiStore
- type Op
- type PeerFilter
- type Queryable
- type Rat
- func (r Rat) Add(r2 Rat) Rat
- func (r Rat) Denom() int64
- func (r Rat) Equal(r2 Rat) bool
- func (r Rat) Evaluate() int64
- func (r Rat) EvaluateBig() *big.Int
- func (r Rat) GT(r2 Rat) bool
- func (r Rat) IsZero() bool
- func (r Rat) LT(r2 Rat) bool
- func (r Rat) MarshalAmino() (string, error)
- func (r Rat) Mul(r2 Rat) Rat
- func (r Rat) Num() int64
- func (r Rat) Quo(r2 Rat) Rat
- func (r Rat) Round(precisionFactor int64) Rat
- func (r Rat) String() string
- func (r Rat) Sub(r2 Rat) Rat
- func (r Rat) ToLeftPadded(totalDigits int8) string
- func (r *Rat) UnmarshalAmino(text string) (err error)
- type Result
- type Store
- type StoreKey
- type StoreType
- type Tag
- type Tags
- type TestMsg
- type Tx
- type TxDecoder
- type Validator
- type ValidatorSet
Constants ¶
const ( Bech32PrefixAccAddr = "cosmosaccaddr" Bech32PrefixAccPub = "cosmosaccpub" Bech32PrefixValAddr = "cosmosvaladdr" Bech32PrefixValPub = "cosmosvalpub" )
Bech32 prefixes
const ( // ABCI error codes ABCICodeOK ABCICodeType = 0 // Base error codes CodeOK CodeType = 0 CodeInternal CodeType = 1 CodeTxDecode CodeType = 2 CodeInvalidSequence CodeType = 3 CodeInsufficientFunds CodeType = 5 CodeUnknownRequest CodeType = 6 CodeInvalidAddress CodeType = 7 CodeInvalidPubKey CodeType = 8 CodeUnknownAddress CodeType = 9 CodeInsufficientCoins CodeType = 10 CodeInvalidCoins CodeType = 11 CodeOutOfGas CodeType = 12 // CodespaceRoot is a codespace for error codes in this file only. // Notice that 0 is an "unset" codespace, which can be overridden with // Error.WithDefaultCodespace(). CodespaceUndefined CodespaceType = 0 CodespaceRoot CodespaceType = 1 // Maximum reservable codespace (2^16 - 1) MaximumCodespace CodespaceType = 65535 )
SDK error codes
Variables ¶
This section is empty.
Functions ¶
func ABCIValidator ¶ added in v0.18.0
validator which fulfills abci validator interface for use in Tendermint
func Bech32ifyAcc ¶ added in v0.18.0
Bech32ifyAcc takes Address and returns the bech32 encoded string
func Bech32ifyAccPub ¶ added in v0.18.0
Bech32ifyAccPub takes AccountPubKey and returns the bech32 encoded string
func Bech32ifyVal ¶ added in v0.19.0
Bech32ifyVal returns the bech32 encoded string for a validator address
func Bech32ifyValPub ¶ added in v0.18.0
Bech32ifyValPub returns the bech32 encoded string for a validator pubkey
func BondStatusToString ¶ added in v0.18.0
func BondStatusToString(b BondStatus) string
BondStatusToString for pretty prints of Bond Status
func CodeToDefaultMsg ¶ added in v0.2.0
NOTE: Don't stringer this, we'll put better messages in later.
func GetAccPubKeyBech32 ¶ added in v0.19.0
create a Pubkey from a string
func GetFromBech32 ¶
decode a bytestring from a bech32-encoded string
func GetValPubKeyBech32 ¶ added in v0.18.0
decode a validator public key into a PubKey
func MustBech32ifyAcc ¶ added in v0.19.0
MustBech32ifyAcc panics on bech32-encoding failure
func MustBech32ifyAccPub ¶ added in v0.19.0
MustBech32ifyAccPub panics on bech32-encoding failure
func MustBech32ifyVal ¶ added in v0.19.0
MustBech32ifyVal panics on bech32-encoding failure
func MustBech32ifyValPub ¶ added in v0.19.0
MustBech32ifyValPub pancis on bech32-encoding failure
func NewRatFromDecimal ¶ added in v0.2.0
create a rational from decimal string or integer string
func PrefixEndBytes ¶
PrefixEndBytes returns the []byte that would end a range query for all []byte with a certain prefix Deals with last byte of prefix being FF without overflowing
func RegisterWire ¶ added in v0.16.0
Register the sdk message type
Types ¶
type ABCICodeType ¶ added in v0.16.0
type ABCICodeType uint32
ABCICodeType - combined codetype / codespace
func ToABCICode ¶ added in v0.16.0
func ToABCICode(space CodespaceType, code CodeType) ABCICodeType
get the abci code from the local code and codespace
func (ABCICodeType) IsOK ¶ added in v0.16.0
func (code ABCICodeType) IsOK() bool
IsOK - is everything okay?
type Address ¶
Address is a go crypto-style Address
func GetAccAddressBech32 ¶ added in v0.18.0
create an Address from a string
func GetAccAddressHex ¶ added in v0.18.0
create an Address from a string
func GetValAddressBech32 ¶ added in v0.18.0
create an Address from a bech32 string
func GetValAddressHex ¶ added in v0.18.0
create an Address from a hex string
type AnteHandler ¶
If newCtx.IsZero(), ctx is used instead.
type BeginBlocker ¶
type BeginBlocker func(ctx Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock
run code before the transactions in a block
type BondStatus ¶
type BondStatus byte
status of a validator
const ( Unbonded BondStatus = 0x00 Unbonding BondStatus = 0x01 Bonded BondStatus = 0x02 )
nolint
type CacheKVStore ¶
type CacheKVStore interface { KVStore // Writes operations to underlying KVStore Write() }
CacheKVStore cache-wraps a KVStore. After calling .Write() on the CacheKVStore, all previously created CacheKVStores on the object expire.
type CacheMultiStore ¶
type CacheMultiStore interface { MultiStore Write() // Writes operations to underlying KVStore }
From MultiStore.CacheMultiStore()....
type CacheWrap ¶
type CacheWrap interface { // Write syncs with the underlying store. Write() // CacheWrap recursively wraps again. CacheWrap() CacheWrap }
CacheWrap() makes the most appropriate cache-wrap. For example, IAVLStore.CacheWrap() returns a CacheKVStore.
CacheWrap() should not return a Committer, since Commit() on cache-wraps make no sense. It can return KVStore, HeapStore, SpaceStore, etc.
type CacheWrapper ¶
type CacheWrapper interface {
CacheWrap() CacheWrap
}
type CodespaceType ¶ added in v0.16.0
type CodespaceType uint16
CodespaceType - codespace identifier
type Codespacer ¶ added in v0.16.0
type Codespacer struct {
// contains filtered or unexported fields
}
Codespacer is a simple struct to track reserved codespaces
func NewCodespacer ¶ added in v0.16.0
func NewCodespacer() *Codespacer
NewCodespacer generates a new Codespacer with the starting codespace
func (*Codespacer) RegisterNext ¶ added in v0.16.0
func (c *Codespacer) RegisterNext(codespace CodespaceType) CodespaceType
RegisterNext reserves and returns the next available codespace, starting from a default, and panics if the maximum codespace is reached
func (*Codespacer) RegisterOrPanic ¶ added in v0.16.0
func (c *Codespacer) RegisterOrPanic(codespace CodespaceType)
RegisterOrPanic reserved a codespace or panics if it is unavailable
type Coin ¶
Coin hold some amount of one currency
func ParseCoin ¶
ParseCoin parses a cli input for one coin type, returning errors if invalid. This returns an error on an empty string as well.
func (Coin) IsGTE ¶
IsGTE returns true if they are the same type and the receiver is an equal or greater value
func (Coin) IsNotNegative ¶ added in v0.2.0
IsNotNegative returns true if coin amount is not negative
func (Coin) IsPositive ¶
IsPositive returns true if coin amount is positive
func (Coin) SameDenomAs ¶ added in v0.2.0
SameDenomAs returns true if the two coins are the same denom
type Coins ¶
type Coins []Coin
Coins is a set of Coin, one per currency
func ParseCoins ¶
ParseCoins will parse out a list of coins separated by commas. If nothing is provided, it returns nil Coins. Returned coins are sorted.
func (Coins) IsGTE ¶ added in v0.2.0
IsGTE returns True iff coins is NonNegative(), and for every currency in coinsB, the currency is present at an equal or greater amount in coinsB
func (Coins) IsNotNegative ¶ added in v0.2.0
IsNotNegative returns true if there is no currency with a negative value (even no coins is true here)
func (Coins) IsPositive ¶ added in v0.2.0
IsPositive returns true if there is at least one coin, and all currencies have a positive value
func (Coins) Plus ¶ added in v0.2.0
Plus combines two sets of coins CONTRACT: Plus will never return Coins where one Coin has a 0 amount.
type CommitKVStore ¶
Stores of MultiStore must implement CommitStore.
type CommitMultiStore ¶
type CommitMultiStore interface { Committer MultiStore // Mount a store of type using the given db. // If db == nil, the new store will use the CommitMultiStore db. MountStoreWithDB(key StoreKey, typ StoreType, db dbm.DB) // Panics on a nil key. GetCommitStore(key StoreKey) CommitStore // Panics on a nil key. GetCommitKVStore(key StoreKey) CommitKVStore // Load the latest persisted version. Called once after all // calls to Mount*Store() are complete. LoadLatestVersion() error // Load a specific persisted version. When you load an old // version, or when the last commit attempt didn't complete, // the next commit after loading must be idempotent (return the // same commit id). Otherwise the behavior is undefined. LoadVersion(ver int64) error }
A non-cache MultiStore.
type CommitStore ¶
Stores of MultiStore must implement CommitStore.
type Context ¶
The intent of Context is for it to be an immutable object that can be cloned and updated cheaply with WithValue() and passed forward to the next decorator or handler. For example,
func MsgHandler(ctx Context, tx Tx) Result { ... ctx = ctx.WithValue(key, value) ... }
func NewContext ¶
func NewContext(ms MultiStore, header abci.Header, isCheckTx bool, txBytes []byte, logger log.Logger) Context
create a new context
func (Context) BlockHeight ¶
func (Context) CacheContext ¶
Cache the multistore and return a new cached context. The cached context is written to the context when writeCache is called.
func (Context) GetOp ¶ added in v0.2.0
Returns false if ver <= 0 || ver > len(c.pst.ops). The first operation is version 1.
func (Context) SigningValidators ¶ added in v0.18.0
func (c Context) SigningValidators() []abci.SigningValidator
func (Context) Value ¶
func (c Context) Value(key interface{}) interface{}
context value for the provided key
func (Context) WithBlockHeight ¶
func (Context) WithCacheWrapper ¶ added in v0.2.0
func (c Context) WithCacheWrapper(key interface{}, value CacheWrapper) Context
func (Context) WithChainID ¶
func (Context) WithCloner ¶ added in v0.2.0
func (Context) WithGasMeter ¶
func (Context) WithIsCheckTx ¶
func (Context) WithMultiStore ¶
func (c Context) WithMultiStore(ms MultiStore) Context
func (Context) WithProtoMsg ¶ added in v0.2.0
func (Context) WithSigningValidators ¶ added in v0.18.0
func (c Context) WithSigningValidators(SigningValidators []abci.SigningValidator) Context
func (Context) WithString ¶ added in v0.2.0
func (Context) WithTxBytes ¶
func (Context) WithUint32 ¶ added in v0.2.0
func (Context) WithUint64 ¶ added in v0.2.0
type Delegation ¶ added in v0.18.0
type Delegation interface { GetDelegator() Address // delegator address for the bond GetValidator() Address // validator owner address for the bond }
delegation bond for a delegated proof of stake system
type DelegationSet ¶ added in v0.18.0
type DelegationSet interface { // iterate through all delegations from one delegator by validator-address, // execute func for each validator IterateDelegators(Context, delegator Address, fn func(index int64, delegation Delegation) (stop bool)) }
properties for the set of all delegations for a particular
type EndBlocker ¶
type EndBlocker func(ctx Context, req abci.RequestEndBlock) abci.ResponseEndBlock
run code after the transactions in a block and return updates to the validator set
type Error ¶ added in v0.2.0
type Error interface { Error() string Code() CodeType Codespace() CodespaceType ABCILog() string ABCICode() ABCICodeType WithDefaultCodespace(codespace CodespaceType) Error Trace(msg string) Error T() interface{} Result() Result QueryResult() abci.ResponseQuery }
sdk Error type
func ErrInsufficientCoins ¶ added in v0.2.0
func ErrInsufficientFunds ¶ added in v0.2.0
func ErrInvalidAddress ¶ added in v0.2.0
func ErrInvalidCoins ¶ added in v0.2.0
func ErrInvalidPubKey ¶ added in v0.2.0
func ErrInvalidSequence ¶ added in v0.2.0
func ErrOutOfGas ¶ added in v0.18.0
func ErrTxDecode ¶ added in v0.2.0
func ErrUnauthorized ¶ added in v0.2.0
func ErrUnknownAddress ¶ added in v0.2.0
func ErrUnknownRequest ¶ added in v0.2.0
type GasMeter ¶
GasMeter interface to track gas consumption
func NewGasMeter ¶
func NewInfiniteGasMeter ¶
func NewInfiniteGasMeter() GasMeter
type InitChainer ¶
type InitChainer func(ctx Context, req abci.RequestInitChain) abci.ResponseInitChain
initialize application state at genesis
type Iterator ¶
Alias iterator to db's Iterator for convenience.
func KVStorePrefixIterator ¶
Iterator over all the keys with a certain prefix in ascending order
func KVStoreReversePrefixIterator ¶
Iterator over all the keys with a certain prefix in descending order.
type KVStore ¶
type KVStore interface { Store // Get returns nil iff key doesn't exist. Panics on nil key. Get(key []byte) []byte // Has checks if a key exists. Panics on nil key. Has(key []byte) bool // Set sets the key. Panics on nil key. Set(key, value []byte) // Delete deletes the key. Panics on nil key. Delete(key []byte) // Iterator over a domain of keys in ascending order. End is exclusive. // Start must be less than end, or the Iterator is invalid. // CONTRACT: No writes may happen within a domain while an iterator exists over it. Iterator(start, end []byte) Iterator // Iterator over a domain of keys in descending order. End is exclusive. // Start must be greater than end, or the Iterator is invalid. // CONTRACT: No writes may happen within a domain while an iterator exists over it. ReverseIterator(start, end []byte) Iterator }
KVStore is a simple interface to get/set data
type KVStoreKey ¶
type KVStoreKey struct {
// contains filtered or unexported fields
}
KVStoreKey is used for accessing substores. Only the pointer value should ever be used - it functions as a capabilities key.
func NewKVStoreKey ¶
func NewKVStoreKey(name string) *KVStoreKey
NewKVStoreKey returns a new pointer to a KVStoreKey. Use a pointer so keys don't collide.
func (*KVStoreKey) Name ¶ added in v0.2.0
func (key *KVStoreKey) Name() string
func (*KVStoreKey) String ¶ added in v0.2.0
func (key *KVStoreKey) String() string
type Msg ¶
type Msg interface { // Return the message type. // Must be alphanumeric or empty. Type() string // Get the canonical byte representation of the Msg. GetSignBytes() []byte // ValidateBasic does a simple validation check that // doesn't require access to any other information. ValidateBasic() Error // Signers returns the addrs of signers that must sign. // CONTRACT: All signatures must be present to be valid. // CONTRACT: Returns addrs in some deterministic order. GetSigners() []Address }
Transactions messages must fulfill the Msg
type MultiStore ¶
type MultiStore interface { Store // Cache wrap MultiStore. // NOTE: Caller should probably not call .Write() on each, but // call CacheMultiStore.Write(). CacheMultiStore() CacheMultiStore // Convenience for fetching substores. GetStore(StoreKey) Store GetKVStore(StoreKey) KVStore GetKVStoreWithGas(GasMeter, StoreKey) KVStore }
type Op ¶ added in v0.2.0
type Op struct {
// contains filtered or unexported fields
}
XXX add description
type PeerFilter ¶
type PeerFilter func(info string) abci.ResponseQuery
respond to p2p filtering queries from Tendermint
type Queryable ¶
type Queryable interface {
Query(abci.RequestQuery) abci.ResponseQuery
}
Queryable allows a Store to expose internal state to the abci.Query interface. Multistore can route requests to the proper Store.
This is an optional, but useful extension to any CommitStore
type Rat ¶ added in v0.2.0
NOTE: never use new(Rat) or else we will panic unmarshalling into the nil embedded big.Rat
func (Rat) EvaluateBig ¶ added in v0.2.0
evaluate the rational using bankers rounding
func (Rat) MarshalAmino ¶ added in v0.17.0
Wraps r.MarshalText().
func (Rat) ToLeftPadded ¶ added in v0.2.0
TODO panic if negative or if totalDigits < len(initStr)??? evaluate as an integer and return left padded string
func (*Rat) UnmarshalAmino ¶ added in v0.17.0
Requires a valid JSON string - strings quotes and calls UnmarshalText
type Result ¶
type Result struct { // Code is the response code, is stored back on the chain. Code ABCICodeType // Data is any data returned from the app. Data []byte // Log is just debug information. NOTE: nondeterministic. Log string // GasWanted is the maximum units of work we allow this tx to perform. GasWanted int64 // GasUsed is the amount of gas actually consumed. NOTE: unimplemented GasUsed int64 // Tx fee amount and denom. FeeAmount int64 FeeDenom string // Changes to the validator set. ValidatorUpdates []abci.Validator // Tags are used for transaction indexing and pubsub. Tags Tags }
Result is the union of ResponseDeliverTx and ResponseCheckTx.
type Store ¶
type Store interface { GetStoreType() StoreType CacheWrapper }
type Tags ¶ added in v0.17.0
Type synonym for convenience
func NewTags ¶ added in v0.17.0
func NewTags(tags ...interface{}) Tags
New variadic tags, must be k string, v []byte repeating
func (Tags) AppendTags ¶ added in v0.17.0
Append two lists of tags
type TestMsg ¶
type TestMsg struct {
// contains filtered or unexported fields
}
msg type for testing
func NewTestMsg ¶
func (*TestMsg) GetSignBytes ¶
func (*TestMsg) GetSigners ¶
func (*TestMsg) ValidateBasic ¶
type Tx ¶
type Tx interface { // Gets the Msg. GetMsg() Msg }
Transactions objects must fulfill the Tx
type Validator ¶ added in v0.18.0
type Validator interface { GetMoniker() string // moniker of the validator GetStatus() BondStatus // status of the validator GetOwner() Address // owner address to receive/return validators coins GetPubKey() crypto.PubKey // validation pubkey GetPower() Rat // validation power GetBondHeight() int64 // height in which the validator became active }
validator for a delegated proof of stake system
type ValidatorSet ¶ added in v0.18.0
type ValidatorSet interface { // iterate through validator by owner-address, execute func for each validator IterateValidators(Context, func(index int64, validator Validator) (stop bool)) // iterate through bonded validator by pubkey-address, execute func for each validator IterateValidatorsBonded(Context, func(index int64, validator Validator) (stop bool)) Validator(Context, Address) Validator // get a particular validator by owner address TotalPower(Context) Rat // total power of the validator set Slash(Context, crypto.PubKey, int64, Rat) // slash the validator and delegators of the validator, specifying offence height & slash fraction Revoke(Context, crypto.PubKey) // revoke a validator Unrevoke(Context, crypto.PubKey) // unrevoke a validator }
properties for the set of all validators