Documentation ¶
Index ¶
- Constants
- func InsertBuckets(tableName string, driverName DRIVERTYPE, records interface{}, tx *sql.Tx) (frequencies map[hash.Hash256]int, err error)
- func InsertDeltaBuckets(tableName string, driverName DRIVERTYPE, records interface{}, tx *sql.Tx) (frequencies map[hash.Hash256]int, indexes map[int64]hash.Hash256, err error)
- func InsertRegistrations(tableName string, driverName DRIVERTYPE, records interface{}, tx *sql.Tx) (frequencies map[hash.Hash256]int, err error)
- func QueryBuckets(tableName string, frequencies map[int64]int, sdb *sql.DB, tx *sql.Tx) (interface{}, error)
- func QueryRegistrations(tableName string, frequencies map[int64]int, sdb *sql.DB, tx *sql.Tx) (interface{}, error)
- type BucketArchive
- func (arch *BucketArchive) Buckets(height uint64) ([]*types.Bucket, error)
- func (arch *BucketArchive) MintTime(height uint64) (time.Time, error)
- func (arch *BucketArchive) PutDelta(height uint64, ts time.Time, updatedBuckets []*pyggBucket) (err error)
- func (arch *BucketArchive) Start(ctx context.Context) (err error)
- func (arch *BucketArchive) Stop(_ context.Context) (err error)
- func (arch *BucketArchive) TipHeight() (uint64, error)
- type CalcGravityChainHeight
- type Committee
- type Config
- type DRIVERTYPE
- type InsertDeltaRecordsFunc
- type InsertRecordsFunc
- type NativeCommittee
- type NativeCommitteeConfig
- type Operator
- func NewBucketTableOperator(tableName string, driverName DRIVERTYPE) (Operator, error)
- func NewDeltaBucketTableOperator(tableName string, driverName DRIVERTYPE) (Operator, error)
- func NewDeltaRecordTableOperator(tableName string, driverName DRIVERTYPE, ...) (Operator, error)
- func NewRecordTableOperator(tableName string, driverName DRIVERTYPE, insertRecordsFunc InsertRecordsFunc, ...) (Operator, error)
- func NewRegistrationTableOperator(tableName string, driverName DRIVERTYPE) (Operator, error)
- type PollArchive
- type QueryRecordsFunc
- type Record
- type STATUS
- type TimeTableOperator
- func (operator *TimeTableOperator) CreateTables(tx *sql.Tx) (err error)
- func (operator *TimeTableOperator) Get(height uint64, sdb *sql.DB, tx *sql.Tx) (interface{}, error)
- func (operator *TimeTableOperator) HeightBefore(ts time.Time, sdb *sql.DB, tx *sql.Tx) (height uint64, err error)
- func (operator *TimeTableOperator) Put(height uint64, value interface{}, tx *sql.Tx) error
- func (operator *TimeTableOperator) TipHeight(sdb *sql.DB, tx *sql.Tx) (uint64, error)
Constants ¶
const BucketRecordQuery = "SELECT id, start_time, duration, amount, decay, voter, candidate FROM %s WHERE id IN (%s)"
BucketRecordQuery is query to return buckets by ids
const EthHardForkHeight = 8581700
EthHardForkHeight stands for the height of ethereum hard fork
const InsertBucketsQueryMySQL = "INSERT IGNORE INTO %s (hash, start_time, duration, amount, decay, voter, candidate) VALUES (?, ?, ?, ?, ?, ?, ?)"
InsertBucketsQueryMySQL is query to insert buckets in MYSQL driver
const InsertBucketsQuerySQLITE = "INSERT OR IGNORE INTO %s (hash, start_time, duration, amount, decay, voter, candidate) VALUES (?, ?, ?, ?, ?, ?, ?)"
InsertBucketsQuerySQLITE is query to insert buckets in SQLITE driver
const InsertRegistrationQueryMySQL = "INSERT IGNORE INTO %s (hash, name, address, operator_address, reward_address, self_staking_weight) VALUES (?, ?, ?, ?, ?, ?)"
InsertRegistrationQueryMySQL is query to insert registrations in MySQL driver
const InsertRegistrationQuerySQLITE = "" /* 127-byte string literal not displayed */
InsertRegistrationQuerySQLITE is query to insert registrations in SQLITE driver
const RegistrationQuery = "SELECT id, name, address, operator_address, reward_address, self_staking_weight FROM %s WHERE id IN (%s)"
RegistrationQuery is query to get registrations by ids
Variables ¶
This section is empty.
Functions ¶
func InsertBuckets ¶ added in v0.2.3
func InsertBuckets(tableName string, driverName DRIVERTYPE, records interface{}, tx *sql.Tx) (frequencies map[hash.Hash256]int, err error)
InsertBuckets inserts bucket records into table by tx
func InsertDeltaBuckets ¶ added in v0.2.14
func InsertDeltaBuckets(tableName string, driverName DRIVERTYPE, records interface{}, tx *sql.Tx) ( frequencies map[hash.Hash256]int, indexes map[int64]hash.Hash256, err error, )
InsertDeltaBuckets inserts bucket records into table by tx
func InsertRegistrations ¶ added in v0.2.3
func InsertRegistrations(tableName string, driverName DRIVERTYPE, records interface{}, tx *sql.Tx) (frequencies map[hash.Hash256]int, err error)
InsertRegistrations inserts registration records into table by tx
Types ¶
type BucketArchive ¶ added in v0.2.14
type BucketArchive struct {
// contains filtered or unexported fields
}
func NewBucketArchive ¶ added in v0.2.14
func NewBucketArchive(dbPath string, numOfRetries uint8, startHeight uint64, interval uint64) (*BucketArchive, error)
NewBucketArchive creates a new archive of bucket
func (*BucketArchive) Buckets ¶ added in v0.2.14
func (arch *BucketArchive) Buckets(height uint64) ([]*types.Bucket, error)
func (*BucketArchive) MintTime ¶ added in v0.2.14
func (arch *BucketArchive) MintTime(height uint64) (time.Time, error)
func (*BucketArchive) PutDelta ¶ added in v0.2.14
func (arch *BucketArchive) PutDelta(height uint64, ts time.Time, updatedBuckets []*pyggBucket) (err error)
func (*BucketArchive) Start ¶ added in v0.2.14
func (arch *BucketArchive) Start(ctx context.Context) (err error)
func (*BucketArchive) Stop ¶ added in v0.2.14
func (arch *BucketArchive) Stop(_ context.Context) (err error)
func (*BucketArchive) TipHeight ¶ added in v0.2.14
func (arch *BucketArchive) TipHeight() (uint64, error)
type CalcGravityChainHeight ¶ added in v0.1.5
CalcGravityChainHeight calculates the corresponding gravity chain height for an epoch
type Committee ¶
type Committee interface { // Start starts the committee service Start(context.Context) error // Stop stops the committee service Stop(context.Context) error // ResultByHeight returns the result on a specific ethereum height ResultByHeight(uint64) (*types.ElectionResult, error) //RawDataByHeight returns the bucket list and registration list and mintTime RawDataByHeight(uint64) ([]*types.Bucket, []*types.Registration, time.Time, error) // HeightByTime returns the nearest result before time HeightByTime(time.Time) (uint64, error) // LatestHeight returns the height with latest result LatestHeight() uint64 // Status returns the committee status Status() STATUS // PutNativePollByEpoch puts one native poll record on IoTeX chain PutNativePollByEpoch(uint64, time.Time, []*types.Bucket) error // NativeBucketsByEpoch returns a list of Bucket of a given epoch number NativeBucketsByEpoch(uint64) ([]*types.Bucket, error) }
Committee defines an interface of an election committee It could be considered as a light state db of gravity chain, that
func NewCommittee ¶
func NewCommittee(archive PollArchive, cfg Config) (Committee, error)
NewCommittee creates a committee
type Config ¶
type Config struct { NumOfRetries uint8 `yaml:"numOfRetries"` GravityChainAPIs []string `yaml:"gravityChainAPIs"` GravityChainHeightInterval uint64 `yaml:"gravityChainHeightInterval"` GravityChainStartHeight uint64 `yaml:"gravityChainStartHeight"` GravityChainCeilingHeight uint64 `yaml:"gravityChainCeilingHeight"` RegisterContractAddress string `yaml:"registerContractAddress"` StakingContractAddress string `yaml:"stakingContractAddress"` PaginationSize uint8 `yaml:"paginationSize"` VoteThreshold string `yaml:"voteThreshold"` ScoreThreshold string `yaml:"scoreThreshold"` SelfStakingThreshold string `yaml:"selfStakingThreshold"` CacheSize uint32 `yaml:"cacheSize"` NumOfFetchInParallel uint8 `yaml:"numOfFetchInParallel"` SkipManifiedCandidate bool `yaml:"skipManifiedCandidate"` GravityChainBatchSize uint64 `yaml:"gravityChainBatchSize"` }
Config defines the config of the committee
type DRIVERTYPE ¶ added in v0.2.6
type DRIVERTYPE uint8
DRIVERTYPE represents the type of sql driver
const ( //SQLITE stands for a Sqlite driver SQLITE DRIVERTYPE = iota //MYSQL stands for a mysql driver MYSQL )
type InsertDeltaRecordsFunc ¶ added in v0.2.14
type InsertDeltaRecordsFunc func(string, DRIVERTYPE, interface{}, *sql.Tx) ( map[hash.Hash256]int, map[int64]hash.Hash256, error, )
InsertDeltaRecordsFunc defines an api to insert records
type InsertRecordsFunc ¶ added in v0.2.3
InsertRecordsFunc defines an api to insert records
type NativeCommittee ¶ added in v0.2.14
type NativeCommittee struct {
// contains filtered or unexported fields
}
func NewNativeStakingCommittee ¶ added in v0.2.14
func NewNativeStakingCommittee( archive *BucketArchive, cfg NativeCommitteeConfig, ) (*NativeCommittee, error)
func (*NativeCommittee) DataByHeight ¶ added in v0.2.14
func (*NativeCommittee) Start ¶ added in v0.2.14
func (nc *NativeCommittee) Start(ctx context.Context) error
func (*NativeCommittee) Status ¶ added in v0.2.14
func (nc *NativeCommittee) Status() STATUS
func (*NativeCommittee) Stop ¶ added in v0.2.14
func (nc *NativeCommittee) Stop(ctx context.Context) error
func (*NativeCommittee) TipHeight ¶ added in v0.2.14
func (nc *NativeCommittee) TipHeight() uint64
type NativeCommitteeConfig ¶ added in v0.2.14
type Operator ¶ added in v0.2.3
type Operator interface { // CreateTables prepares the tables for the operator CreateTables(*sql.Tx) error // Get returns the value by height Get(uint64, *sql.DB, *sql.Tx) (interface{}, error) // Put writes value for height Put(uint64, interface{}, *sql.Tx) error // TipHeight returns the tip height TipHeight(*sql.DB, *sql.Tx) (uint64, error) }
Operator defines an interface of operations on some tables in SQL DB
func NewBucketTableOperator ¶ added in v0.2.3
func NewBucketTableOperator(tableName string, driverName DRIVERTYPE) (Operator, error)
NewBucketTableOperator creates an operator for bucket table
func NewDeltaBucketTableOperator ¶ added in v0.2.14
func NewDeltaBucketTableOperator(tableName string, driverName DRIVERTYPE) (Operator, error)
NewDeltaBucketTableOperator creates an operator for bucket table
func NewDeltaRecordTableOperator ¶ added in v0.2.14
func NewDeltaRecordTableOperator( tableName string, driverName DRIVERTYPE, insertDeltaRecordsFunc InsertDeltaRecordsFunc, queryRecordsFunc QueryRecordsFunc, recordTableCreation string, ) (Operator, error)
NewDeltaRecordTableOperator creates a record table storing delta
func NewRecordTableOperator ¶ added in v0.2.3
func NewRecordTableOperator( tableName string, driverName DRIVERTYPE, insertRecordsFunc InsertRecordsFunc, queryRecordsFunc QueryRecordsFunc, recordTableCreation string, ) (Operator, error)
NewRecordTableOperator creates a new arch of poll
func NewRegistrationTableOperator ¶ added in v0.2.3
func NewRegistrationTableOperator(tableName string, driverName DRIVERTYPE) (Operator, error)
NewRegistrationTableOperator create an operator for registration table
type PollArchive ¶ added in v0.2.3
type PollArchive interface { HeightBefore(time.Time) (uint64, error) // Buckets returns a list of Bucket of a given height Buckets(uint64) ([]*types.Bucket, error) // NativeBuckets returns a list of Bucket of a given epoch number NativeBuckets(uint64) ([]*types.Bucket, error) // Registrations returns a list of Registration of a given height Registrations(uint64) ([]*types.Registration, error) // MintTime returns the mint time of a given height MintTime(uint64) (time.Time, error) // NativeMintTime returns the mint time of a given epoch number NativeMintTime(uint64) (time.Time, error) // PutPoll puts one poll record PutPoll(uint64, time.Time, []*types.Registration, []*types.Bucket) error // PutNativePoll puts one native poll record on IoTeX chain PutNativePoll(uint64, time.Time, []*types.Bucket) error // TipHeight returns the tip height stored in archive TipHeight() (uint64, error) // Start starts the archive Start(context.Context) error // Stop stops the archive Stop(context.Context) error }
PollArchive stores registrations, buckets, and other data
func NewArchive ¶ added in v0.2.1
func NewArchive(dbPath string, numOfRetries uint8, startHeight uint64, interval uint64) (PollArchive, error)
NewArchive creates a new archive of poll
type QueryRecordsFunc ¶ added in v0.2.3
QueryRecordsFunc defines an api to query records
type TimeTableOperator ¶ added in v0.2.3
type TimeTableOperator struct {
// contains filtered or unexported fields
}
TimeTableOperator defines an operator on timetable
func NewTimeTableOperator ¶ added in v0.2.3
func NewTimeTableOperator(tableName string, driverName DRIVERTYPE) *TimeTableOperator
NewTimeTableOperator returns an operator to time table
func (*TimeTableOperator) CreateTables ¶ added in v0.2.3
func (operator *TimeTableOperator) CreateTables(tx *sql.Tx) (err error)
CreateTables prepares the tables for the operator
func (*TimeTableOperator) HeightBefore ¶ added in v0.2.3
func (operator *TimeTableOperator) HeightBefore(ts time.Time, sdb *sql.DB, tx *sql.Tx) (height uint64, err error)
HeightBefore returns the Height before ts in the time table