Documentation
¶
Index ¶
- Constants
- Variables
- func LoadtestAccounts(genesisDir string) []*account.Account
- func UpdateGenesisAlloc(cluserConfig *ClusterConfig) error
- type ChainConfig
- type ChainConfigAlias
- type ClusterConfig
- type GenesisAddress
- type MasterConfig
- type MonitoringConfig
- type NetWorkId
- type P2PConfig
- type POSWConfig
- type POWConfig
- type QuarkChainConfig
- func (q *QuarkChainConfig) GasLimit(fullShardID uint32) (*big.Int, error)
- func (q *QuarkChainConfig) GetFullShardIdByFullShardKey(fullShardKey uint32) (uint32, error)
- func (q *QuarkChainConfig) GetGenesisRootHeight(fullShardId uint32) uint32
- func (q *QuarkChainConfig) GetGenesisShardIds() []uint32
- func (q *QuarkChainConfig) GetInitializedShardIdsBeforeRootHeight(rootHeight uint32) []uint32
- func (q *QuarkChainConfig) GetShardConfigByFullShardID(fullShardID uint32) *ShardConfig
- func (q *QuarkChainConfig) GetShardSizeByChainId(ID uint32) (uint32, error)
- func (q *QuarkChainConfig) MarshalJSON() ([]byte, error)
- func (q *QuarkChainConfig) SetShardsAndValidate(shards map[uint32]*ShardConfig)
- func (q *QuarkChainConfig) UnmarshalJSON(input []byte) error
- func (q *QuarkChainConfig) Update(chainSize, shardSizePerChain, rootBlockTime, minorBlockTime uint32)
- type QuarkChainConfigAlias
- type RootConfig
- type RootConfigAlias
- type RootGenesis
- type ShardConfig
- func (s *ShardConfig) GetFullShardId() uint32
- func (s *ShardConfig) GetRootConfig() *RootConfig
- func (s *ShardConfig) MaxBlocksPerShardInOneRootBlock() uint32
- func (s *ShardConfig) MaxMinorBlocksInMemory() uint64
- func (s *ShardConfig) MaxStaleMinorBlockHeightDiff() uint64
- func (s *ShardConfig) SetRootConfig(value *RootConfig)
- type ShardGenesis
- type ShardGenesisAlias
- type SimpleNetwork
- type SlaveConfig
- type SlaveConfigAlias
Constants ¶
View Source
const ( // PoWNone is the default empty consensus type specifying no shard. PoWNone = "NONE" // PoWEthash is the consensus type running ethash algorithm. PoWEthash = "POW_ETHASH" // PoWDoubleSha256 is the consensus type running double-sha256 algorithm. PoWDoubleSha256 = "POW_DOUBLESHA256" // PoWSimulate is the simulated consensus type by simply sleeping. PoWSimulate = "POW_SIMULATE" // PoWQkchash is the consensus type running qkchash algorithm. PoWQkchash = "POW_QKCHASH" GrpcPort uint16 = 38591 GrpcHost = "127.0.0.1" HeartbeatInterval = time.Duration(4 * time.Second) )
Variables ¶
View Source
var ( QuarkashToJiaozi = big.NewInt(1000000000000000000) DefaultNumSlaves = 4 )
Functions ¶
func LoadtestAccounts ¶
func UpdateGenesisAlloc ¶
func UpdateGenesisAlloc(cluserConfig *ClusterConfig) error
Update ShardConfig.GENESIS.ALLOC
Types ¶
type ChainConfig ¶
type ChainConfig struct {
ChainID uint32 `json:"CHAIN_ID"`
ShardSize uint32 `json:"SHARD_SIZE"`
DefaultChainToken string `json:"-"`
ConsensusType string `json:"CONSENSUS_TYPE"`
// Only set when CONSENSUS_TYPE is not NONE
ConsensusConfig *POWConfig `json:"CONSENSUS_CONFIG"`
Genesis *ShardGenesis `json:"GENESIS"`
CoinbaseAddress account.Address `json:"-"`
CoinbaseAmount *big.Int `json:"COINBASE_AMOUNT"`
// Gas Limit
GasLimitEmaDenominator uint32 `json:"GAS_LIMIT_EMA_DENOMINATOR"`
GasLimitAdjustmentFactor uint32 `json:"GAS_LIMIT_ADJUSTMENT_FACTOR"`
GasLimitMinimum uint64 `json:"GAS_LIMIT_MINIMUM"`
GasLimitMaximum uint64 `json:"GAS_LIMIT_MAXIMUM"`
GasLimitUsageAdjustmentNumerator uint32 `json:"GAS_LIMIT_USAGE_ADJUSTMENT_NUMERATOR"`
GasLimitUsageAdjustmentDenominator uint32 `json:"GAS_LIMIT_USAGE_ADJUSTMENT_DENOMINATOR"`
DifficultyAdjustmentCutoffTime uint32 `json:"DIFFICULTY_ADJUSTMENT_CUTOFF_TIME"`
DifficultyAdjustmentFactor uint32 `json:"DIFFICULTY_ADJUSTMENT_FACTOR"`
ExtraShardBlocksInRootBlock uint32 `json:"EXTRA_SHARD_BLOCKS_IN_ROOT_BLOCK"`
PoswConfig *POSWConfig `json:"POSW_CONFIG"`
}
func NewChainConfig ¶
func NewChainConfig() *ChainConfig
func (*ChainConfig) MarshalJSON ¶
func (c *ChainConfig) MarshalJSON() ([]byte, error)
func (*ChainConfig) UnmarshalJSON ¶
func (c *ChainConfig) UnmarshalJSON(input []byte) error
type ChainConfigAlias ¶
type ChainConfigAlias ChainConfig
type ClusterConfig ¶
type ClusterConfig struct {
P2PPort uint16 `json:"P2P_PORT"`
JSONRPCPort uint16 `json:"JSON_RPC_PORT"`
PrivateJSONRPCPort uint16 `json:"PRIVATE_JSON_RPC_PORT"`
EnableTransactionHistory bool `json:"ENABLE_TRANSACTION_HISTORY"`
DbPathRoot string `json:"DB_PATH_ROOT"`
LogLevel string `json:"LOG_LEVEL"`
StartSimulatedMining bool `json:"START_SIMULATED_MINING"`
Clean bool `json:"CLEAN"`
GenesisDir string `json:"GENESIS_DIR"`
Quarkchain *QuarkChainConfig `json:"QUARKCHAIN"`
Master *MasterConfig `json:"MASTER"`
SlaveList []*SlaveConfig `json:"SLAVE_LIST"`
SimpleNetwork *SimpleNetwork `json:"SIMPLE_NETWORK,omitempty"`
P2P *P2PConfig `json:"P2P,omitempty"`
Monitoring *MonitoringConfig `json:"MONITORING"`
}
func NewClusterConfig ¶
func NewClusterConfig() *ClusterConfig
func (*ClusterConfig) GetSlaveConfig ¶
func (c *ClusterConfig) GetSlaveConfig(id string) (*SlaveConfig, error)
type GenesisAddress ¶
type MasterConfig ¶
type MasterConfig struct {
// default 1.0
MasterToSlaveConnectRetryDelay float32 `json:"MASTER_TO_SLAVE_CONNECT_RETRY_DELAY"`
}
func NewMasterConfig ¶
func NewMasterConfig() *MasterConfig
type MonitoringConfig ¶
type MonitoringConfig struct {
NetworkName string `json:"NETWORK_NAME"`
ClusterID string `json:"CLUSTER_ID"`
KafkaRestAddress string `json:"KAFKA_REST_ADDRESS"` // REST API endpoint for logging to Kafka, IP[:PORT] format
MinerTopic string `json:"MINER_TOPIC"` // "qkc_miner"
PropagationTopic string `json:"PROPAGATION_TOPIC"` // "block_propagation"
Errors string `json:"ERRORS"` // "error"
}
func NewMonitoringConfig ¶
func NewMonitoringConfig() *MonitoringConfig
type P2PConfig ¶
type P2PConfig struct {
// *new p2p module*
BootNodes string `json:"BOOT_NODES"` // comma separated encodes format: encode://PUBKEY@IP:PORT
PrivKey string `json:"PRIV_KEY"`
MaxPeers uint64 `json:"MAX_PEERS"`
UPnP bool `json:"UPNP"`
AllowDialInRatio float32 `json:"ALLOW_DIAL_IN_RATIO"`
PreferredNodes string `json:"PREFERRED_NODES"`
}
TODO move to P2P
func NewP2PConfig ¶
func NewP2PConfig() *P2PConfig
func (*P2PConfig) GetBootNodes ¶
type POSWConfig ¶
type POSWConfig struct {
Enabled bool `json:"ENABLED"`
DiffDivider uint32 `json:"DIFF_DIVIDER"`
WindowSize uint32 `json:"WINDOW_SIZE"`
TotalStakePerBlock *big.Int `json:"TOTAL_STAKE_PER_BLOCK"`
}
func NewPOSWConfig ¶
func NewPOSWConfig() *POSWConfig
type POWConfig ¶
type POWConfig struct {
TargetBlockTime uint32 `json:"TARGET_BLOCK_TIME"`
RemoteMine bool `json:"REMOTE_MINE"`
}
func NewPOWConfig ¶
func NewPOWConfig() *POWConfig
type QuarkChainConfig ¶
type QuarkChainConfig struct {
ChainSize uint32 `json:"CHAIN_SIZE"`
MaxNeighbors uint32 `json:"MAX_NEIGHBORS"`
NetworkID uint32 `json:"NETWORK_ID"`
TransactionQueueSizeLimitPerShard uint64 `json:"TRANSACTION_QUEUE_SIZE_LIMIT_PER_SHARD"`
BlockExtraDataSizeLimit uint32 `json:"BLOCK_EXTRA_DATA_SIZE_LIMIT"`
GuardianPublicKey string `json:"GUARDIAN_PUBLIC_KEY"`
GuardianPrivateKey []byte `json:"GUARDIAN_PRIVATE_KEY"`
P2PProtocolVersion uint32 `json:"P2P_PROTOCOL_VERSION"`
P2PCommandSizeLimit uint32 `json:"P2P_COMMAND_SIZE_LIMIT"`
SkipRootDifficultyCheck bool `json:"SKIP_ROOT_DIFFICULTY_CHECK"`
SkipRootCoinbaseCheck bool `json:"SKIP_ROOT_COINBASE_CHECK"`
SkipMinorDifficultyCheck bool `json:"SKIP_MINOR_DIFFICULTY_CHECK"`
GenesisToken string `json:"GENESIS_TOKEN"`
Root *RootConfig `json:"ROOT"`
Chains map[uint32]*ChainConfig `json:"-"`
RewardTaxRate *big.Rat `json:"-"`
// contains filtered or unexported fields
}
func NewQuarkChainConfig ¶
func NewQuarkChainConfig() *QuarkChainConfig
func (*QuarkChainConfig) GasLimit ¶
func (q *QuarkChainConfig) GasLimit(fullShardID uint32) (*big.Int, error)
func (*QuarkChainConfig) GetFullShardIdByFullShardKey ¶
func (q *QuarkChainConfig) GetFullShardIdByFullShardKey(fullShardKey uint32) (uint32, error)
func (*QuarkChainConfig) GetGenesisRootHeight ¶
func (q *QuarkChainConfig) GetGenesisRootHeight(fullShardId uint32) uint32
Return the root block height at which the shard shall be created
func (*QuarkChainConfig) GetGenesisShardIds ¶
func (q *QuarkChainConfig) GetGenesisShardIds() []uint32
GetGenesisShardIds returns a list of ids for shards that have GENESIS.
func (*QuarkChainConfig) GetInitializedShardIdsBeforeRootHeight ¶
func (q *QuarkChainConfig) GetInitializedShardIdsBeforeRootHeight(rootHeight uint32) []uint32
Return a list of ids of the shards that have been initialized before a certain root height
func (*QuarkChainConfig) GetShardConfigByFullShardID ¶
func (q *QuarkChainConfig) GetShardConfigByFullShardID(fullShardID uint32) *ShardConfig
func (*QuarkChainConfig) GetShardSizeByChainId ¶
func (q *QuarkChainConfig) GetShardSizeByChainId(ID uint32) (uint32, error)
func (*QuarkChainConfig) MarshalJSON ¶
func (q *QuarkChainConfig) MarshalJSON() ([]byte, error)
func (*QuarkChainConfig) SetShardsAndValidate ¶
func (q *QuarkChainConfig) SetShardsAndValidate(shards map[uint32]*ShardConfig)
func (*QuarkChainConfig) UnmarshalJSON ¶
func (q *QuarkChainConfig) UnmarshalJSON(input []byte) error
func (*QuarkChainConfig) Update ¶
func (q *QuarkChainConfig) Update(chainSize, shardSizePerChain, rootBlockTime, minorBlockTime uint32)
type QuarkChainConfigAlias ¶
type QuarkChainConfigAlias QuarkChainConfig
type RootConfig ¶
type RootConfig struct {
// To ignore super old blocks from peers
// This means the network will fork permanently after a long partition
MaxStaleRootBlockHeightDiff uint64 `json:"MAX_STALE_ROOT_BLOCK_HEIGHT_DIFF"`
ConsensusType string `json:"CONSENSUS_TYPE"`
ConsensusConfig *POWConfig `json:"CONSENSUS_CONFIG"`
Genesis *RootGenesis `json:"GENESIS"`
CoinbaseAddress account.Address `json:"-"`
CoinbaseAmount *big.Int `json:"COINBASE_AMOUNT"`
DifficultyAdjustmentCutoffTime uint32 `json:"DIFFICULTY_ADJUSTMENT_CUTOFF_TIME"`
DifficultyAdjustmentFactor uint32 `json:"DIFFICULTY_ADJUSTMENT_FACTOR"`
GRPCHost string `json:"-"`
GRPCPort uint16 `json:"-"`
}
func NewRootConfig ¶
func NewRootConfig() *RootConfig
func (*RootConfig) MarshalJSON ¶
func (r *RootConfig) MarshalJSON() ([]byte, error)
func (*RootConfig) MaxRootBlocksInMemory ¶
func (r *RootConfig) MaxRootBlocksInMemory() uint64
func (*RootConfig) UnmarshalJSON ¶
func (r *RootConfig) UnmarshalJSON(input []byte) error
type RootConfigAlias ¶
type RootConfigAlias RootConfig
type RootGenesis ¶
type RootGenesis struct {
Version uint32 `json:"VERSION"`
Height uint32 `json:"HEIGHT"`
HashPrevBlock string `json:"HASH_PREV_BLOCK"`
HashMerkleRoot string `json:"HASH_MERKLE_ROOT"`
Timestamp uint64 `json:"TIMESTAMP"`
Difficulty uint64 `json:"DIFFICULTY"`
Nonce uint32 `json:"NONCE"`
}
func NewRootGenesis ¶
func NewRootGenesis() *RootGenesis
type ShardConfig ¶
type ShardConfig struct {
ShardID uint32
*ChainConfig
// contains filtered or unexported fields
}
func NewShardConfig ¶
func NewShardConfig(chainCfg *ChainConfig) *ShardConfig
func (*ShardConfig) GetFullShardId ¶
func (s *ShardConfig) GetFullShardId() uint32
func (*ShardConfig) GetRootConfig ¶
func (s *ShardConfig) GetRootConfig() *RootConfig
func (*ShardConfig) MaxBlocksPerShardInOneRootBlock ¶
func (s *ShardConfig) MaxBlocksPerShardInOneRootBlock() uint32
func (*ShardConfig) MaxMinorBlocksInMemory ¶
func (s *ShardConfig) MaxMinorBlocksInMemory() uint64
func (*ShardConfig) MaxStaleMinorBlockHeightDiff ¶
func (s *ShardConfig) MaxStaleMinorBlockHeightDiff() uint64
func (*ShardConfig) SetRootConfig ¶
func (s *ShardConfig) SetRootConfig(value *RootConfig)
type ShardGenesis ¶
type ShardGenesis struct {
RootHeight uint32 `json:"ROOT_HEIGHT"`
Version uint32 `json:"VERSION"`
Height uint64 `json:"HEIGHT"`
HashPrevMinorBlock string `json:"HASH_PREV_MINOR_BLOCK"`
HashMerkleRoot string `json:"HASH_MERKLE_ROOT"`
ExtraData []byte `json:"-"`
Timestamp uint64 `json:"TIMESTAMP"`
Difficulty uint64 `json:"DIFFICULTY"`
GasLimit uint64 `json:"GAS_LIMIT"`
Nonce uint32 `json:"NONCE"`
Alloc map[account.Address]*big.Int `json:"-"`
}
func NewShardGenesis ¶
func NewShardGenesis() *ShardGenesis
func (*ShardGenesis) MarshalJSON ¶
func (s *ShardGenesis) MarshalJSON() ([]byte, error)
func (*ShardGenesis) UnmarshalJSON ¶
func (s *ShardGenesis) UnmarshalJSON(input []byte) error
type ShardGenesisAlias ¶
type ShardGenesisAlias ShardGenesis
type SimpleNetwork ¶
type SimpleNetwork struct {
BootstrapHost string `json:"BOOT_STRAP_HOST"`
BootstrapPort uint64 `json:"BOOT_STRAP_PORT"`
}
func NewSimpleNetwork ¶
func NewSimpleNetwork() *SimpleNetwork
type SlaveConfig ¶
type SlaveConfig struct {
IP string `json:"HOST"` // DEFAULT_HOST
Port uint16 `json:"PORT"` // 38392
ID string `json:"ID"`
ChainMaskList []*types.ChainMask `json:"-"`
}
func NewDefaultSlaveConfig ¶
func NewDefaultSlaveConfig() *SlaveConfig
func (*SlaveConfig) MarshalJSON ¶
func (s *SlaveConfig) MarshalJSON() ([]byte, error)
func (*SlaveConfig) UnmarshalJSON ¶
func (s *SlaveConfig) UnmarshalJSON(input []byte) error
type SlaveConfigAlias ¶
type SlaveConfigAlias SlaveConfig
Click to show internal directories.
Click to hide internal directories.