isaacoperation

package
v2.0.0-alpha Latest Latest
Warning

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

Go to latest
Published: Mar 28, 2023 License: GPL-3.0 Imports: 18 Imported by: 1

Documentation

Overview

Package isaacoperation provides the base operations.

Index

Constants

This section is empty.

Variables

View Source
var (
	NetworkPolicyHint           = hint.MustNewHint("currency-network-policy-v0.0.1")
	NetworkPolicyStateValueHint = hint.MustNewHint("currency-network-policy-state-value-v0.0.1")

	DefaultMaxOperationsInProposal uint64 = 333
	DefaultMaxSuffrageSize         uint64 = 33

	// NOTE suffrage candidate can be approved within lifespan height; almost 15
	// days(based on 5 second for one block)
	DefaultSuffrageCandidateLifespan base.Height = 1 << 18
	DefaultSuffrageWithdrawLifespan              = base.Height(333) //nolint:gomnd //...
)
View Source
var (
	GenesisNetworkPolicyFactHint = hint.MustNewHint("currency-genesis-network-policy-fact-v0.0.1")
	GenesisNetworkPolicyHint     = hint.MustNewHint("currency-genesis-network-policy-v0.0.1")
)
View Source
var (
	SuffrageCandidateFactHint = hint.MustNewHint("currency-suffrage-candidate-fact-v0.0.1")
	SuffrageCandidateHint     = hint.MustNewHint("currency-suffrage-candidate-operation-v0.0.1")
)
View Source
var (
	SuffrageDisjoinFactHint = hint.MustNewHint("currency-suffrage-disjoin-fact-v0.0.1")
	SuffrageDisjoinHint     = hint.MustNewHint("currency-suffrage-disjoin-operation-v0.0.1")
)
View Source
var (
	SuffrageJoinFactHint        = hint.MustNewHint("currency-suffrage-join-fact-v0.0.1")
	SuffrageJoinHint            = hint.MustNewHint("currency-suffrage-join-operation-v0.0.1")
	SuffrageGenesisJoinFactHint = hint.MustNewHint("currency-suffrage-genesis-join-fact-v0.0.1")
	SuffrageGenesisJoinHint     = hint.MustNewHint("currency-suffrage-genesis-join-operation-v0.0.1")
)
View Source
var (
	FixedSuffrageCandidateLimiterRuleHint    = hint.MustNewHint("currency-fixed-suffrage-candidate-limiter-rule-v0.0.1")
	MajoritySuffrageCandidateLimiterRuleHint = hint.MustNewHint("currency-majority-suffrage-candidate-limiter-rule-v0.0.1")
)
View Source
var WithdrawPreProcessedContextKey = util.ContextKey("withdraw-preprocessed")

Functions

func NewCandidatesOfMajoritySuffrageCandidateLimiterRule

func NewCandidatesOfMajoritySuffrageCandidateLimiterRule(
	ratio float64,
	getSuffrage func() (uint64, error),
) (uint64, error)

NewCandidatesOfMajoritySuffrageCandidateLimiterRule find the number of new candidates to prevent the current suffrage majority.

func NewMajoritySuffrageCandidateLimiter

func NewMajoritySuffrageCandidateLimiter(
	rule MajoritySuffrageCandidateLimiterRule,
	getSuffrage func() (uint64, error),
) base.SuffrageCandidateLimiter

Types

type FixedSuffrageCandidateLimiterRule

type FixedSuffrageCandidateLimiterRule struct {
	hint.BaseHinter
	// contains filtered or unexported fields
}

func NewFixedSuffrageCandidateLimiterRule

func NewFixedSuffrageCandidateLimiterRule(limit uint64) FixedSuffrageCandidateLimiterRule

func (*FixedSuffrageCandidateLimiterRule) DecodeBSON

func (l *FixedSuffrageCandidateLimiterRule) DecodeBSON(b []byte, enc *bsonenc.Encoder) error

func (FixedSuffrageCandidateLimiterRule) HashBytes

func (l FixedSuffrageCandidateLimiterRule) HashBytes() []byte

func (FixedSuffrageCandidateLimiterRule) IsValid

func (FixedSuffrageCandidateLimiterRule) Limit

func (FixedSuffrageCandidateLimiterRule) MarshalBSON

func (l FixedSuffrageCandidateLimiterRule) MarshalBSON() ([]byte, error)

func (FixedSuffrageCandidateLimiterRule) MarshalJSON

func (l FixedSuffrageCandidateLimiterRule) MarshalJSON() ([]byte, error)

func (*FixedSuffrageCandidateLimiterRule) UnmarshalJSON

func (l *FixedSuffrageCandidateLimiterRule) UnmarshalJSON(b []byte) error

type FixedSuffrageCandidateLimiterRuleBSONUnMarshaler

type FixedSuffrageCandidateLimiterRuleBSONUnMarshaler struct {
	Hint  string `bson:"_hint"`
	Limit uint64 `bson:"limit"`
}

type GenesisNetworkPolicy

type GenesisNetworkPolicy struct {
	currency.BaseOperation
}

GenesisNetworkPolicy is only for used for genesis block

func (GenesisNetworkPolicy) IsValid

func (op GenesisNetworkPolicy) IsValid(networkID []byte) error

func (GenesisNetworkPolicy) PreProcess

type GenesisNetworkPolicyFact

type GenesisNetworkPolicyFact struct {
	base.BaseFact
	// contains filtered or unexported fields
}

func NewGenesisNetworkPolicyFact

func NewGenesisNetworkPolicyFact(policy base.NetworkPolicy) GenesisNetworkPolicyFact

func (*GenesisNetworkPolicyFact) DecodeBSON

func (fact *GenesisNetworkPolicyFact) DecodeBSON(b []byte, enc *bsonenc.Encoder) error

func (*GenesisNetworkPolicyFact) DecodeJSON

func (fact *GenesisNetworkPolicyFact) DecodeJSON(b []byte, enc *jsonenc.Encoder) error

func (GenesisNetworkPolicyFact) IsValid

func (fact GenesisNetworkPolicyFact) IsValid([]byte) error

func (GenesisNetworkPolicyFact) MarshalBSON

func (fact GenesisNetworkPolicyFact) MarshalBSON() ([]byte, error)

func (GenesisNetworkPolicyFact) MarshalJSON

func (fact GenesisNetworkPolicyFact) MarshalJSON() ([]byte, error)

func (GenesisNetworkPolicyFact) Policy

type GenesisNetworkPolicyFactBSONUnMarshaler

type GenesisNetworkPolicyFactBSONUnMarshaler struct {
	Hint   string   `bson:"_hint"`
	Policy bson.Raw `bson:"policy"`
}

type GenesisNetworkPolicyFactJSONMarshaler

type GenesisNetworkPolicyFactJSONMarshaler struct {
	Policy base.NetworkPolicy `json:"policy"`
	base.BaseFactJSONMarshaler
}

type GenesisNetworkPolicyFactJSONUnmarshaler

type GenesisNetworkPolicyFactJSONUnmarshaler struct {
	base.BaseFactJSONUnmarshaler
	Policy json.RawMessage `json:"policy"`
}

type MajoritySuffrageCandidateLimiterRule

type MajoritySuffrageCandidateLimiterRule struct {
	hint.BaseHinter
	// contains filtered or unexported fields
}

func NewMajoritySuffrageCandidateLimiterRule

func NewMajoritySuffrageCandidateLimiterRule(ratio float64, min, max uint64) MajoritySuffrageCandidateLimiterRule

func (*MajoritySuffrageCandidateLimiterRule) DecodeBSON

func (MajoritySuffrageCandidateLimiterRule) HashBytes

func (MajoritySuffrageCandidateLimiterRule) IsValid

func (MajoritySuffrageCandidateLimiterRule) MarshalBSON

func (l MajoritySuffrageCandidateLimiterRule) MarshalBSON() ([]byte, error)

func (MajoritySuffrageCandidateLimiterRule) MarshalJSON

func (l MajoritySuffrageCandidateLimiterRule) MarshalJSON() ([]byte, error)

func (MajoritySuffrageCandidateLimiterRule) Max

func (MajoritySuffrageCandidateLimiterRule) Min

func (MajoritySuffrageCandidateLimiterRule) Ratio

func (*MajoritySuffrageCandidateLimiterRule) UnmarshalJSON

func (l *MajoritySuffrageCandidateLimiterRule) UnmarshalJSON(b []byte) error

type MajoritySuffrageCandidateLimiterRuleBSONUnMarshaler

type MajoritySuffrageCandidateLimiterRuleBSONUnMarshaler struct {
	Hint  string  `bson:"_hint"`
	Ratio float64 `bson:"ratio"`
	Max   uint64  `bson:"max"`
	Min   uint64  `bson:"min"`
}

type NetworkPolicy

type NetworkPolicy struct {
	util.DefaultJSONMarshaled
	hint.BaseHinter
	// contains filtered or unexported fields
}

func DefaultNetworkPolicy

func DefaultNetworkPolicy() NetworkPolicy

func (*NetworkPolicy) DecodeBSON

func (p *NetworkPolicy) DecodeBSON(b []byte, enc *bsonenc.Encoder) error

func (*NetworkPolicy) DecodeJSON

func (p *NetworkPolicy) DecodeJSON(b []byte, enc *jsonenc.Encoder) error

func (NetworkPolicy) HashBytes

func (p NetworkPolicy) HashBytes() []byte

func (NetworkPolicy) IsValid

func (p NetworkPolicy) IsValid([]byte) error

func (NetworkPolicy) MarshalBSON

func (p NetworkPolicy) MarshalBSON() ([]byte, error)

func (NetworkPolicy) MarshalJSON

func (p NetworkPolicy) MarshalJSON() ([]byte, error)

func (NetworkPolicy) MaxOperationsInProposal

func (p NetworkPolicy) MaxOperationsInProposal() uint64

func (NetworkPolicy) MaxSuffrageSize

func (p NetworkPolicy) MaxSuffrageSize() uint64

func (NetworkPolicy) SuffrageCandidateLifespan

func (p NetworkPolicy) SuffrageCandidateLifespan() base.Height

func (NetworkPolicy) SuffrageCandidateLimiterRule

func (p NetworkPolicy) SuffrageCandidateLimiterRule() base.SuffrageCandidateLimiterRule

func (NetworkPolicy) SuffrageWithdrawLifespan

func (p NetworkPolicy) SuffrageWithdrawLifespan() base.Height

type NetworkPolicyBSONUnMarshaler

type NetworkPolicyBSONUnMarshaler struct {
	Hint                         string      `bson:"_hint"`
	SuffrageCandidateLimiterRule bson.Raw    `bson:"suffrage_candidate_limiter"`
	MaxOperationsInProposal      uint64      `bson:"max_operations_in_proposal"`
	SuffrageCandidateLifespan    base.Height `bson:"suffrage_candidate_lifespan"`
	MaxSuffrageSize              uint64      `bson:"max_suffrage_size"`
	SuffrageWithdrawLifespan     base.Height `bson:"suffrage_withdraw_lifespan"`
}

type NetworkPolicyStateValue

type NetworkPolicyStateValue struct {
	hint.BaseHinter
	// contains filtered or unexported fields
}

func NewNetworkPolicyStateValue

func NewNetworkPolicyStateValue(policy base.NetworkPolicy) NetworkPolicyStateValue

func (*NetworkPolicyStateValue) DecodeBSON

func (s *NetworkPolicyStateValue) DecodeBSON(b []byte, enc *bsonenc.Encoder) error

func (*NetworkPolicyStateValue) DecodeJSON

func (s *NetworkPolicyStateValue) DecodeJSON(b []byte, enc *jsonenc.Encoder) error

func (NetworkPolicyStateValue) HashBytes

func (s NetworkPolicyStateValue) HashBytes() []byte

func (NetworkPolicyStateValue) IsValid

func (s NetworkPolicyStateValue) IsValid([]byte) error

func (NetworkPolicyStateValue) MarshalBSON

func (s NetworkPolicyStateValue) MarshalBSON() ([]byte, error)

func (NetworkPolicyStateValue) MarshalJSON

func (s NetworkPolicyStateValue) MarshalJSON() ([]byte, error)

func (NetworkPolicyStateValue) Policy

type NetworkPolicyStateValueBSONUnmarshaler

type NetworkPolicyStateValueBSONUnmarshaler struct {
	Hint   string   `bson:"_hint"`
	Policy bson.Raw `bson:"policy"`
}

type NetworkPolicyStateValueJSONMarshaler

type NetworkPolicyStateValueJSONMarshaler struct {
	Policy base.NetworkPolicy `json:"policy"`
	hint.BaseHinter
}

type NetworkPolicyStateValueJSONUnmarshaler

type NetworkPolicyStateValueJSONUnmarshaler struct {
	Policy json.RawMessage `json:"policy"`
}

type SuffrageCandidate

type SuffrageCandidate struct {
	currency.BaseNodeOperation
}

func NewSuffrageCandidate

func NewSuffrageCandidate(fact SuffrageCandidateFact) SuffrageCandidate

func (*SuffrageCandidate) DecodeBSON

func (op *SuffrageCandidate) DecodeBSON(b []byte, enc *bsonenc.Encoder) error

func (SuffrageCandidate) IsValid

func (op SuffrageCandidate) IsValid(networkID []byte) error

func (SuffrageCandidate) MarshalBSON

func (op SuffrageCandidate) MarshalBSON() ([]byte, error)

func (*SuffrageCandidate) SetToken

func (op *SuffrageCandidate) SetToken(t base.Token) error

type SuffrageCandidateFact

type SuffrageCandidateFact struct {
	base.BaseFact
	// contains filtered or unexported fields
}

func NewSuffrageCandidateFact

func NewSuffrageCandidateFact(
	token base.Token,
	address base.Address,
	publickey base.Publickey,
) SuffrageCandidateFact

func (SuffrageCandidateFact) Address

func (fact SuffrageCandidateFact) Address() base.Address

func (*SuffrageCandidateFact) DecodeBSON

func (fact *SuffrageCandidateFact) DecodeBSON(b []byte, enc *bsonenc.Encoder) error

func (*SuffrageCandidateFact) DecodeJSON

func (fact *SuffrageCandidateFact) DecodeJSON(b []byte, enc *jsonenc.Encoder) error

func (SuffrageCandidateFact) IsValid

func (fact SuffrageCandidateFact) IsValid([]byte) error

func (SuffrageCandidateFact) MarshalBSON

func (fact SuffrageCandidateFact) MarshalBSON() ([]byte, error)

func (SuffrageCandidateFact) MarshalJSON

func (fact SuffrageCandidateFact) MarshalJSON() ([]byte, error)

func (SuffrageCandidateFact) Publickey

func (fact SuffrageCandidateFact) Publickey() base.Publickey

type SuffrageCandidateFactBSONUnMarshaler

type SuffrageCandidateFactBSONUnMarshaler struct {
	Hint      string `bson:"_hint"`
	Address   string `bson:"address"`
	Publickey string `bson:"publickey"`
}

type SuffrageCandidateProcessor

type SuffrageCandidateProcessor struct {
	*base.BaseOperationProcessor
	// contains filtered or unexported fields
}

func NewSuffrageCandidateProcessor

func NewSuffrageCandidateProcessor(
	height base.Height,
	getStateFunc base.GetStateFunc,
	newPreProcessConstraintFunc base.NewOperationProcessorProcessFunc,
	newProcessConstraintFunc base.NewOperationProcessorProcessFunc,
	lifespan base.Height,
) (*SuffrageCandidateProcessor, error)

func (*SuffrageCandidateProcessor) Close

func (p *SuffrageCandidateProcessor) Close() error

func (*SuffrageCandidateProcessor) PreProcess

func (*SuffrageCandidateProcessor) Process

type SuffrageCandidatesStateValueMerger

type SuffrageCandidatesStateValueMerger struct {
	*base.BaseStateValueMerger
	// contains filtered or unexported fields
}

func NewSuffrageCandidatesStateValueMerger

func NewSuffrageCandidatesStateValueMerger(height base.Height, st base.State) *SuffrageCandidatesStateValueMerger

func (*SuffrageCandidatesStateValueMerger) Close

func (*SuffrageCandidatesStateValueMerger) Merge

type SuffrageDisjoin

type SuffrageDisjoin struct {
	currency.BaseNodeOperation
}

func NewSuffrageDisjoin

func NewSuffrageDisjoin(fact SuffrageDisjoinFact) SuffrageDisjoin

func (*SuffrageDisjoin) DecodeBSON

func (op *SuffrageDisjoin) DecodeBSON(b []byte, enc *bsonenc.Encoder) error

func (SuffrageDisjoin) IsValid

func (op SuffrageDisjoin) IsValid(networkID []byte) error

func (*SuffrageDisjoin) SetToken

func (op *SuffrageDisjoin) SetToken(t base.Token) error

type SuffrageDisjoinFact

type SuffrageDisjoinFact struct {
	base.BaseFact
	// contains filtered or unexported fields
}

func NewSuffrageDisjoinFact

func NewSuffrageDisjoinFact(
	token base.Token,
	node base.Address,
	start base.Height,
) SuffrageDisjoinFact

func (*SuffrageDisjoinFact) DecodeBSON

func (fact *SuffrageDisjoinFact) DecodeBSON(b []byte, enc *bsonenc.Encoder) error

func (*SuffrageDisjoinFact) DecodeJSON

func (fact *SuffrageDisjoinFact) DecodeJSON(b []byte, enc *jsonenc.Encoder) error

func (SuffrageDisjoinFact) IsValid

func (fact SuffrageDisjoinFact) IsValid([]byte) error

func (SuffrageDisjoinFact) MarshalBSON

func (fact SuffrageDisjoinFact) MarshalBSON() ([]byte, error)

func (SuffrageDisjoinFact) MarshalJSON

func (fact SuffrageDisjoinFact) MarshalJSON() ([]byte, error)

func (SuffrageDisjoinFact) Node

func (fact SuffrageDisjoinFact) Node() base.Address

func (SuffrageDisjoinFact) Start

func (fact SuffrageDisjoinFact) Start() base.Height

type SuffrageDisjoinFactBSONUnMarshaler

type SuffrageDisjoinFactBSONUnMarshaler struct {
	Hint  string      `bson:"_hint"`
	Node  string      `bson:"node"`
	Start base.Height `bson:"start"`
}

type SuffrageDisjoinProcessor

type SuffrageDisjoinProcessor struct {
	*base.BaseOperationProcessor
	// contains filtered or unexported fields
}

func NewSuffrageDisjoinProcessor

func NewSuffrageDisjoinProcessor(
	height base.Height,
	getStateFunc base.GetStateFunc,
	newPreProcessConstraintFunc base.NewOperationProcessorProcessFunc,
	newProcessConstraintFunc base.NewOperationProcessorProcessFunc,
) (*SuffrageDisjoinProcessor, error)

func (*SuffrageDisjoinProcessor) Close

func (p *SuffrageDisjoinProcessor) Close() error

func (*SuffrageDisjoinProcessor) PreProcess

func (*SuffrageDisjoinProcessor) Process

type SuffrageGenesisJoin

type SuffrageGenesisJoin struct {
	currency.BaseOperation
}

SuffrageGenesisJoin is only for used for genesis block

func NewSuffrageGenesisJoin

func NewSuffrageGenesisJoin(fact SuffrageGenesisJoinFact) SuffrageGenesisJoin

func (*SuffrageGenesisJoin) DecodeBSON

func (op *SuffrageGenesisJoin) DecodeBSON(b []byte, enc *bsonenc.Encoder) error

func (SuffrageGenesisJoin) IsValid

func (op SuffrageGenesisJoin) IsValid(networkID []byte) error

func (SuffrageGenesisJoin) PreProcess

type SuffrageGenesisJoinFact

type SuffrageGenesisJoinFact struct {
	base.BaseFact
	// contains filtered or unexported fields
}

func NewSuffrageGenesisJoinFact

func NewSuffrageGenesisJoinFact(
	nodes []base.Node,
	networkID base.NetworkID,
) SuffrageGenesisJoinFact

func (*SuffrageGenesisJoinFact) DecodeBSON

func (fact *SuffrageGenesisJoinFact) DecodeBSON(b []byte, enc *bsonenc.Encoder) error

func (*SuffrageGenesisJoinFact) DecodeJSON

func (fact *SuffrageGenesisJoinFact) DecodeJSON(b []byte, enc *jsonenc.Encoder) error

func (SuffrageGenesisJoinFact) IsValid

func (fact SuffrageGenesisJoinFact) IsValid(networkID []byte) error

func (SuffrageGenesisJoinFact) MarshalBSON

func (fact SuffrageGenesisJoinFact) MarshalBSON() ([]byte, error)

func (SuffrageGenesisJoinFact) MarshalJSON

func (fact SuffrageGenesisJoinFact) MarshalJSON() ([]byte, error)

func (SuffrageGenesisJoinFact) Nodes

func (fact SuffrageGenesisJoinFact) Nodes() []base.Node

type SuffrageGenesisJoinFactBSONUnMarshaler

type SuffrageGenesisJoinFactBSONUnMarshaler struct {
	Hint  string   `bson:"_hint"`
	Nodes bson.Raw `bson:"nodes"`
}

type SuffrageJoin

type SuffrageJoin struct {
	currency.BaseNodeOperation
}

func NewSuffrageJoin

func NewSuffrageJoin(fact SuffrageJoinFact) SuffrageJoin

func (*SuffrageJoin) DecodeBSON

func (op *SuffrageJoin) DecodeBSON(b []byte, enc *bsonenc.Encoder) error

func (SuffrageJoin) IsValid

func (op SuffrageJoin) IsValid(networkID []byte) error

func (*SuffrageJoin) SetToken

func (op *SuffrageJoin) SetToken(t base.Token) error

type SuffrageJoinFact

type SuffrageJoinFact struct {
	base.BaseFact
	// contains filtered or unexported fields
}

func NewSuffrageJoinFact

func NewSuffrageJoinFact(
	token base.Token,
	candidate base.Address,
	start base.Height,
) SuffrageJoinFact

func (SuffrageJoinFact) Candidate

func (fact SuffrageJoinFact) Candidate() base.Address

func (*SuffrageJoinFact) DecodeBSON

func (fact *SuffrageJoinFact) DecodeBSON(b []byte, enc *bsonenc.Encoder) error

func (*SuffrageJoinFact) DecodeJSON

func (fact *SuffrageJoinFact) DecodeJSON(b []byte, enc *jsonenc.Encoder) error

func (SuffrageJoinFact) IsValid

func (fact SuffrageJoinFact) IsValid([]byte) error

func (SuffrageJoinFact) MarshalBSON

func (fact SuffrageJoinFact) MarshalBSON() ([]byte, error)

func (SuffrageJoinFact) MarshalJSON

func (fact SuffrageJoinFact) MarshalJSON() ([]byte, error)

func (SuffrageJoinFact) Start

func (fact SuffrageJoinFact) Start() base.Height

type SuffrageJoinFactBSONUnMarshaler

type SuffrageJoinFactBSONUnMarshaler struct {
	Hint      string      `bson:"_hint"`
	Candidate string      `bson:"candidate"`
	Start     base.Height `bson:"start"`
}

type SuffrageJoinProcessor

type SuffrageJoinProcessor struct {
	*base.BaseOperationProcessor
	// contains filtered or unexported fields
}

func NewSuffrageJoinProcessor

func NewSuffrageJoinProcessor(
	height base.Height,
	threshold base.Threshold,
	getStateFunc base.GetStateFunc,
	newPreProcessConstraintFunc base.NewOperationProcessorProcessFunc,
	newProcessConstraintFunc base.NewOperationProcessorProcessFunc,
) (*SuffrageJoinProcessor, error)

func (*SuffrageJoinProcessor) Close

func (p *SuffrageJoinProcessor) Close() error

func (*SuffrageJoinProcessor) PreProcess

func (*SuffrageJoinProcessor) Process

type SuffrageJoinStateValueMerger

type SuffrageJoinStateValueMerger struct {
	*base.BaseStateValueMerger
	// contains filtered or unexported fields
}

func NewSuffrageJoinStateValueMerger

func NewSuffrageJoinStateValueMerger(height base.Height, st base.State) *SuffrageJoinStateValueMerger

func (*SuffrageJoinStateValueMerger) Close

func (*SuffrageJoinStateValueMerger) Merge

func (s *SuffrageJoinStateValueMerger) Merge(value base.StateValue, ops []util.Hash) error

type SuffrageWithdrawProcessor

type SuffrageWithdrawProcessor struct {
	*base.BaseOperationProcessor
	// contains filtered or unexported fields
}

func NewSuffrageWithdrawProcessor

func NewSuffrageWithdrawProcessor(
	height base.Height,
	getStateFunc base.GetStateFunc,
	newPreProcessConstraintFunc base.NewOperationProcessorProcessFunc,
	newProcessConstraintFunc base.NewOperationProcessorProcessFunc,
) (*SuffrageWithdrawProcessor, error)

func (*SuffrageWithdrawProcessor) Close

func (p *SuffrageWithdrawProcessor) Close() error

func (*SuffrageWithdrawProcessor) PreProcess

func (*SuffrageWithdrawProcessor) Process

Jump to

Keyboard shortcuts

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