Documentation ¶
Index ¶
- Constants
- Variables
- func ArchiveVersion(gitCommit string) string
- func VersionWithCommit(gitCommit string) string
- type BaseConfig
- type BlockConfig
- type ChainConfig
- func (c *ChainConfig) CheckCompatible(newcfg *ChainConfig, height uint64) *ConfigCompatError
- func (c *ChainConfig) GasTable(num *big.Int) GasTable
- func (c *ChainConfig) IsTIP3(num *big.Int) bool
- func (c *ChainConfig) IsTIP5(num *big.Int) bool
- func (c *ChainConfig) Rules(num *big.Int) Rules
- func (c *ChainConfig) String() string
- func (c *ChainConfig) UnmarshalJSON(input []byte) error
- type ConfigCompatError
- type ConsensusConfig
- func (cfg *ConsensusConfig) CatchupTime(t time.Time) time.Time
- func (cfg *ConsensusConfig) Commit(t time.Time) time.Time
- func (cfg *ConsensusConfig) EmptyBlocksInterval() time.Duration
- func (cfg *ConsensusConfig) EmptyBlocksIntervalForPer(times int) time.Duration
- func (cfg *ConsensusConfig) PeerGossipSleep() time.Duration
- func (cfg *ConsensusConfig) PeerQueryMaj23Sleep() time.Duration
- func (cfg *ConsensusConfig) Precommit(round int) time.Duration
- func (cfg *ConsensusConfig) Prevote(round int) time.Duration
- func (cfg *ConsensusConfig) Propose(round int) time.Duration
- func (cfg *ConsensusConfig) SetWalFile(walFile string)
- func (cfg *ConsensusConfig) WaitForEmptyBlocks(times int) bool
- func (cfg *ConsensusConfig) WaitForTxs() bool
- func (cfg *ConsensusConfig) WalFile() string
- type FuzzConnConfig
- type GasTable
- type MinervaConfig
- type P2PConfig
- type Rules
- type TbftConfig
Constants ¶
const ( Wei = 1 Ada = 1e3 Babbage = 1e6 Shannon = 1e9 GWei = 1e9 Szabo = 1e12 Finney = 1e15 Ether = 1e18 Einstein = 1e21 Douglas = 1e42 )
These are the multipliers for ether denominations. Example: To get the wei value of an amount in 'gwei', use
new(big.Int).Mul(value, big.NewInt(params.GWei))
const ( // BloomBitsBlocks is the number of blocks a single bloom bit section vector // contains on the server side. BloomBitsBlocks uint64 = 4096 // BloomBitsBlocksClient is the number of blocks a single bloom bit section vector // contains on the light client side BloomBitsBlocksClient uint64 = 32768 // BloomConfirms is the number of confirmation blocks before a bloom section is // considered probably final and its rotated bits are calculated. BloomConfirms = 256 // CHTFrequencyClient is the block frequency for creating CHTs on the client side. CHTFrequencyClient = 32768 // CHTFrequencyServer is the block frequency for creating CHTs on the server side. // Eventually this can be merged back with the client version, but that requires a // full database upgrade, so that should be left for a suitable moment. CHTFrequencyServer = 4096 // BloomTrieFrequency is the block frequency for creating BloomTrie on both // server/client sides. BloomTrieFrequency = 32768 // HelperTrieConfirmations is the number of confirmations before a client is expected // to have the given HelperTrie available. HelperTrieConfirmations = 2048 // HelperTrieProcessConfirmations is the number of confirmations before a HelperTrie // is generated HelperTrieProcessConfirmations = 256 )
const ( //GasLimitBoundDivisor uint64 = 1024 // The bound divisor of the gas limit, used in update calculations. GasLimitBoundDivisor uint64 = 100 // The bound divisor of the gas limit, used in update calculations. MinGasLimit uint64 = 5000 // Minimum the gas limit may ever be. //GenesisGasLimit uint64 = 4712388 // Gas limit of the Genesis block. GenesisGasLimit uint64 = 10000000 // Gas limit of the Genesis block. MaximumExtraDataSize uint64 = 32 // Maximum size extra data may be after Genesis. ExpByteGas uint64 = 10 // Times ceil(log256(exponent)) for the EXP instruction. SloadGas uint64 = 50 // Multiplied by the number of 32-byte words that are copied (round up) for any *COPY operation and added. CallValueTransferGas uint64 = 9000 // Paid for CALL when the value transfer is non-zero. CallNewAccountGas uint64 = 25000 // Paid for CALL when the destination address didn't exist prior. TxGas uint64 = 21000 // Per transaction not creating a contract. NOTE: Not payable on data of calls between transactions. TxGasContractCreation uint64 = 53000 // Per transaction that creates a contract. NOTE: Not payable on data of calls between transactions. TxDataZeroGas uint64 = 4 // Per byte of data attached to a transaction that equals zero. NOTE: Not payable on data of calls between transactions. QuadCoeffDiv uint64 = 512 // Divisor for the quadratic particle of the memory cost equation. SstoreSetGas uint64 = 20000 // Once per SLOAD operation. LogDataGas uint64 = 8 // Per byte in a LOG* operation's data. CallStipend uint64 = 2300 // Free gas given at beginning of call. Sha3Gas uint64 = 30 // Once per SHA3 operation. Sha3WordGas uint64 = 6 // Once per word of the SHA3 operation's data. SstoreResetGas uint64 = 5000 // Once per SSTORE operation if the zeroness changes from zero. SstoreClearGas uint64 = 5000 // Once per SSTORE operation if the zeroness doesn't change. SstoreRefundGas uint64 = 15000 // Once per SSTORE operation if the zeroness changes to zero. NetSstoreNoopGas uint64 = 200 // Once per SSTORE operation if the value doesn't change. NetSstoreInitGas uint64 = 20000 // Once per SSTORE operation from clean zero. NetSstoreCleanGas uint64 = 5000 // Once per SSTORE operation from clean non-zero. NetSstoreDirtyGas uint64 = 200 // Once per SSTORE operation from dirty. NetSstoreClearRefund uint64 = 15000 // Once per SSTORE operation for clearing an originally existing storage slot NetSstoreResetRefund uint64 = 4800 // Once per SSTORE operation for resetting to the original non-zero value NetSstoreResetClearRefund uint64 = 19800 // Once per SSTORE operation for resetting to the original zero value JumpdestGas uint64 = 1 // Refunded gas, once per SSTORE operation if the zeroness changes to zero. EpochDuration uint64 = 30000 // Duration between proof-of-work epochs. CallGas uint64 = 40 // Once per CALL operation & message call transaction. CreateDataGas uint64 = 200 // CallCreateDepth uint64 = 1024 // Maximum depth of call/create stack. ExpGas uint64 = 10 // Once per EXP instruction LogGas uint64 = 375 // Per LOG* operation. CopyGas uint64 = 3 // StackLimit uint64 = 1024 // Maximum size of VM stack allowed. TierStepGas uint64 = 0 // Once per operation, for a selection of them. LogTopicGas uint64 = 375 // Multiplied by the * of the LOG*, per LOG transaction. e.g. LOG0 incurs 0 * c_txLogTopicGas, LOG4 incurs 4 * c_txLogTopicGas. CreateGas uint64 = 32000 // Once per CREATE operation & contract-creation transaction. Create2Gas uint64 = 32000 // Once per CREATE2 operation SuicideRefundGas uint64 = 24000 // Refunded following a suicide operation. MemoryGas uint64 = 3 // Times the address of the (highest referenced byte in memory + 1). NOTE: referencing happens on read, write and in instructions such as RETURN and CALL. TxDataNonZeroGas uint64 = 68 // Per byte of data attached to a transaction that is not equal to zero. NOTE: Not payable on data of calls between transactions. MaxCodeSize = 24576 // Maximum bytecode to permit for a contract EcrecoverGas uint64 = 3000 // Elliptic curve sender recovery gas price Sha256BaseGas uint64 = 60 // Base price for a SHA256 operation Sha256PerWordGas uint64 = 12 // Per-word price for a SHA256 operation Ripemd160BaseGas uint64 = 600 // Base price for a RIPEMD160 operation Ripemd160PerWordGas uint64 = 120 // Per-word price for a RIPEMD160 operation IdentityBaseGas uint64 = 15 // Base price for a data copy operation IdentityPerWordGas uint64 = 3 // Per-work price for a data copy operation ModExpQuadCoeffDiv uint64 = 20 // Divisor for the quadratic particle of the big int modular exponentiation Bn256AddGas uint64 = 500 // Gas needed for an elliptic curve addition Bn256ScalarMulGas uint64 = 40000 // Gas needed for an elliptic curve scalar multiplication Bn256PairingBaseGas uint64 = 100000 // Base price for an elliptic curve pairing check Bn256PairingPerPointGas uint64 = 80000 // Per-point price for an elliptic curve pairing check )
const ( // FuzzModeDrop is a mode in which we randomly drop reads/writes, connections or sleep FuzzModeDrop = iota // FuzzModeDelay is a mode in which we randomly sleep FuzzModeDelay )
const ( VersionMajor = 1 // Major version component of the current release VersionMinor = 1 // Minor version component of the current release VersionPatch = 1 // Patch version component of the current release VersionMeta = "stable" // Version metadata to append to the version string )
Variables ¶
var ( MainnetGenesisHash = common.HexToHash("0x0c6e644fcbd396f7b235ecef44551c45afd9274e87cd77ec6e9778cf8bfb46fc") MainnetSnailGenesisHash = common.HexToHash("0xf82fd9c0c8a53474c9e40e4f1c0583a94609eaf88dae01a5496da459398485c6") TestnetGenesisHash = common.HexToHash("0x4b82a68ebbf32f2e816754f2b50eda0ae2c0a71dd5f4e0ecd93ccbfb7dba00b8") TestnetSnailGenesisHash = common.HexToHash("0x4ab1748c057b744de202d6ebea64e8d3a0b2ec4c19abbc59e8639967b14b7c96") )
Genesis hashes to enforce below configs on.
var ( // MainnetChainConfig is the chain parameters to run a node on the main network. MainnetChainConfig = &ChainConfig{ ChainID: big.NewInt(19330), Minerva: &(MinervaConfig{ MinimumDifficulty: big.NewInt(134217728), MinimumFruitDifficulty: big.NewInt(262144), DurationLimit: big.NewInt(600), }), TIP3: &BlockConfig{FastNumber: big.NewInt(1500000)}, TIP5: &BlockConfig{SnailNumber: big.NewInt(12800)}, } // TestnetChainConfig contains the chain parameters to run a node on the Ropsten test network. TestnetChainConfig = &ChainConfig{ ChainID: big.NewInt(18928), Minerva: &(MinervaConfig{ MinimumDifficulty: big.NewInt(60000), MinimumFruitDifficulty: big.NewInt(200), DurationLimit: big.NewInt(600), }), TIP3: &BlockConfig{FastNumber: big.NewInt(450000)}, TIP5: &BlockConfig{SnailNumber: big.NewInt(4000)}, } // DevnetChainConfig contains the chain parameters to run a node on the Ropsten test network. DevnetChainConfig = &ChainConfig{ ChainID: big.NewInt(100), Minerva: &(MinervaConfig{ MinimumDifficulty: big.NewInt(10000), MinimumFruitDifficulty: big.NewInt(100), DurationLimit: big.NewInt(150), }), TIP3: &BlockConfig{FastNumber: big.NewInt(380000)}, TIP5: &BlockConfig{SnailNumber: big.NewInt(5000)}, } // This configuration is intentionally not using keyed fields to force anyone // adding flags to the config to also have to set these fields. AllMinervaProtocolChanges = &ChainConfig{ChainID: chainId, Minerva: new(MinervaConfig), TIP3: &BlockConfig{FastNumber: big.NewInt(0)}, TIP5: nil} TestChainConfig = &ChainConfig{ChainID: chainId, Minerva: &MinervaConfig{MinimumDifficulty, MinimumFruitDifficulty, DurationLimit}, TIP3: &BlockConfig{FastNumber: big.NewInt(0)}, TIP5: nil} )
var ( // GasTableHomestead contain the gas prices for // the homestead phase. GasTableHomestead = GasTable{ ExtcodeSize: 20, ExtcodeCopy: 20, Balance: 20, SLoad: 50, Calls: 40, Suicide: 0, ExpByte: 10, } // GasTableEIP150 contain the gas re-prices for // the EIP150 phase. GasTableEIP150 = GasTable{ ExtcodeSize: 700, ExtcodeCopy: 700, Balance: 400, SLoad: 200, Calls: 700, Suicide: 5000, ExpByte: 10, CreateBySuicide: 25000, } // GasTableEIP158 contain the gas re-prices for // the EIP155/EIP158 phase. GasTableEIP158 = GasTable{ ExtcodeSize: 700, ExtcodeCopy: 700, Balance: 400, SLoad: 200, Calls: 700, Suicide: 5000, ExpByte: 50, CreateBySuicide: 25000, } // GasTableConstantinople contain the gas re-prices for // the constantinople phase. GasTableConstantinople = GasTable{ ExtcodeSize: 700, ExtcodeCopy: 700, ExtcodeHash: 400, Balance: 400, SLoad: 200, Calls: 700, Suicide: 5000, ExpByte: 50, CreateBySuicide: 25000, } )
Variables containing gas prices for different ethereum phases.
var ( DifficultyBoundDivisor = big.NewInt(2) // The bound divisor of the difficulty, used in the update calculations. GenesisDifficulty = big.NewInt(6000000) // Difficulty of the Genesis block. MinimumDifficulty = big.NewInt(2000000) // The minimum that the difficulty may ever be. MinimumFruitDifficulty = big.NewInt(2000) DurationLimit = big.NewInt(600) // The decision boundary on the blocktime duration used to determine whether difficulty should go up or not. DifficultyPeriod = big.NewInt(144) // FruitBlockRatio = big.NewInt(600) // difficulty ratio between fruit and snail block FruitFreshness = big.NewInt(17) // fruit freshness MinimumFruits int = 60 MaximumFruits int = 600 MinTimeGap = big.NewInt(359) )
var ( SnailConfirmInterval = big.NewInt(12) SnailRewardInterval = big.NewInt(14) SnailMaximumRewardInterval = big.NewInt(20) FastToFruitSpace = big.NewInt(1500) ElectionPeriodNumber = big.NewInt(180) // snail block period number ElectionSwitchoverNumber = big.NewInt(9600) ElectionFruitsThreshold uint64 = 100 // fruit size threshold for committee election MaximumCommitteeNumber = big.NewInt(50) ProposalCommitteeNumber = 20 MinimumCommitteeNumber = 7 )
var ( // EmptyAddress = common.Address{} EmptyHash = common.Hash{} )
var (
DefaultTBFTDir = ".tbft"
)
NOTE: Most of the structs & relevant comments + the default configuration options were used to manually generate the config.toml. Please reflect any changes made here in the defaultConfigTemplate constant in config/toml.go NOTE: tmlibs/cli must know to look in the config dir!
var DevnetBootnodes = []string{
"enode://f1ce2725b0e5cf403293be25ce94c222d8f4e6e7e4e2881559382a8fbfb64934923467ca182985f8391c6f65d79a717c13df4fb2a53ccd8aba51e5638d6da6a7@39.98.202.190:30314",
"enode://5f8f37510d880693e3b8f68f76c2d12fa11074bdf0f11695743af4546b374065fb1dc2ec83dc0f31e1ae7d5304102d429c664869aa7f6b2b70bda45d2a1716ee@39.98.240.34:30314",
}
DevnetBootnodes are the enode URLs of the P2P bootstrap nodes running on the dev Truechain network.
var MainnetBootnodes = []string{
"enode://cd99daa76de43e2b7a5806c3455d33012cd127bca9b2e271be3af5d78e402c153a77e1d408f708770fb390e597621407f963f1c444090c21f91e03e03caa2110@39.98.216.197:30313",
"enode://e95937d68263a59c95ac1199eecc450b3590624accaf1542c7e51d8dc3ca3bfa6d3f60785b021c408b4a9a67b2869da33237c75448ae29b70506164a2bfe6931@13.52.156.74:30313",
"enode://85ac935873a1ac9a898e371e4583ef9ffbd91ce580a647bf9875ef890108bfad4ade4b74efe4b510aaeeaa7096c11278600abf98eefa319843a6d2dbbc3c56a4@104.160.39.87:30313",
"enode://9032cc37954363b4d2dd37a898959aadf213718ff1bdb146848fb8c9a5adfd31d543ca870a08a223b27da2309051d0ce41775fa6de9337ed519b64cfa85b5b0c@52.77.99.47:30313",
"enode://6f5f92f2515c96f1f222e2de70c47022c0976947d1e7a42576af2e2cbbbfc8fc44de0e5f4ecab51f4a0d0dfeb07018802f9dad030a2f1c61542c5f115f05c108@35.157.61.21:30313",
"enode://fb331ff6aded86b393d9de2f9c449d313b356af0c4c0b9500e0f6c51bcb4ed31ca45dc2ab64c6182d1876eb9e3fd073d488277a40a6d357bc6e63350a2e00ffc@101.132.183.35:30313",
}
MainnetBootnodes are the enode URLs of the P2P bootstrap nodes running on the main Truechain network.
var ( // TargetGasLimit is the artificial target TargetGasLimit = GenesisGasLimit )
var TestnetBootnodes = []string{
"enode://a395d2799c1e63307b9a5ecc44729e9ba2fb8fa6d64e362e8498ce9aba85b7b405755ad28bd662a9a48d941bbbfe18d29e0ea46105258110e2318fd6faab8c09@39.108.212.229:30313",
"enode://946dd380c75f756696e4183a3bba661f5a72dcd4af231189a966de7fb2b561ecdff7ef531ca090b6c22e32876368c5360a069d3ca709a107359d511c248eb0ac@3.209.142.83:30313",
"enode://50ac2f679890052610954f986157d434eeef8ed78eb3b2da62334f5822658ac96eff75e3d12fbf81289a6fb559cec03ba8179db02e98459b5eeb86b15d80cf69@138.128.216.58:30313",
"enode://cf04b2cfadb241358c8a08001e88244f79c1e12f8d3f57251c27b8cf5010dc7588c2de75fe9ea09eecfa3c7d16b2513290d3a3d1d1203324fef77e6fc231c707@47.74.185.172:30313",
}
TestnetBootnodes are the enode URLs of the P2P bootstrap nodes running on the Ropsten test network.
var Version = func() string { return fmt.Sprintf("%d.%d.%d", VersionMajor, VersionMinor, VersionPatch) }()
Version holds the textual version string.
var VersionWithMeta = func() string { v := Version if VersionMeta != "" { v += "-" + VersionMeta } return v }()
VersionWithMeta holds the textual version string including the metadata.
Functions ¶
func ArchiveVersion ¶
ArchiveVersion holds the textual version string used for Geth archives. e.g. "1.8.11-dea1ce05" for stable releases, or
"1.8.13-unstable-21c059b6" for unstable releases
func VersionWithCommit ¶
Types ¶
type BaseConfig ¶
type BaseConfig struct { // A custom human readable name for this node Moniker string `mapstructure:"moniker"` // If true, query the ABCI app on connecting to a new peer // so the app can decide if we should keep the connection or not FilterPeers bool `mapstructure:"filter_peers"` // false }
BaseConfig defines the base configuration for a truechain node
func DefaultBaseConfig ¶
func DefaultBaseConfig() BaseConfig
DefaultBaseConfig returns a default base configuration for a truechain node
func TestBaseConfig ¶
func TestBaseConfig() BaseConfig
TestBaseConfig returns a base configuration for testing a truechain node
type BlockConfig ¶ added in v1.1.1
type ChainConfig ¶
type ChainConfig struct { ChainID *big.Int `json:"chainId"` // chainId identifies the current chain and is used for replay protection // Various consensus engines Minerva *MinervaConfig `json:"minerva"` TIP3 *BlockConfig `json:"tip3"` TIP5 *BlockConfig `json:"tip5"` }
ChainConfig is the core config which determines the blockchain settings.
ChainConfig is stored in the database on a per block basis. This means that any network, identified by its genesis block, can have its own set of configuration options.
func (*ChainConfig) CheckCompatible ¶
func (c *ChainConfig) CheckCompatible(newcfg *ChainConfig, height uint64) *ConfigCompatError
CheckCompatible checks whether scheduled fork transitions have been imported with a mismatching chain configuration.
func (*ChainConfig) GasTable ¶
func (c *ChainConfig) GasTable(num *big.Int) GasTable
GasTable returns the gas table corresponding to the current phase (homestead or homestead reprice).
The returned GasTable's fields shouldn't, under any circumstances, be changed.
func (*ChainConfig) IsTIP3 ¶ added in v1.1.1
func (c *ChainConfig) IsTIP3(num *big.Int) bool
IsTIP3 returns whether num is either equal to the IsTIP3 fork block or greater.
func (*ChainConfig) IsTIP5 ¶ added in v1.1.1
func (c *ChainConfig) IsTIP5(num *big.Int) bool
IsTIP5 returns whether num is either equal to the IsTIP5 fork block or greater.
func (*ChainConfig) Rules ¶
func (c *ChainConfig) Rules(num *big.Int) Rules
Rules ensures c's ChainID is not nil.
func (*ChainConfig) String ¶
func (c *ChainConfig) String() string
String implements the fmt.Stringer interface.
func (*ChainConfig) UnmarshalJSON ¶
func (c *ChainConfig) UnmarshalJSON(input []byte) error
type ConfigCompatError ¶
type ConfigCompatError struct { What string // block numbers of the stored and new configurations StoredConfig, NewConfig *big.Int // the block number to which the local chain must be rewound to correct the error RewindTo uint64 }
ConfigCompatError is raised if the locally-stored blockchain is initialised with a ChainConfig that would alter the past.
func (*ConfigCompatError) Error ¶
func (err *ConfigCompatError) Error() string
type ConsensusConfig ¶
type ConsensusConfig struct { RootDir string `mapstructure:"home"` WalPath string `mapstructure:"wal_file"` // All timeouts are in milliseconds TimeoutPropose int `mapstructure:"timeout_propose"` TimeoutProposeDelta int `mapstructure:"timeout_propose_delta"` TimeoutPrevote int `mapstructure:"timeout_prevote"` TimeoutPrevoteDelta int `mapstructure:"timeout_prevote_delta"` TimeoutPrecommit int `mapstructure:"timeout_precommit"` TimeoutPrecommitDelta int `mapstructure:"timeout_precommit_delta"` TimeoutCommit int `mapstructure:"timeout_commit"` TimeoutCatchup int `mapstructure:"timeout_consensus"` // Make progress as soon as we have all the precommits (as if TimeoutCommit = 0) SkipTimeoutCommit bool `mapstructure:"skip_timeout_commit"` // EmptyBlocks mode and possible interval between empty blocks in seconds CreateEmptyBlocks bool `mapstructure:"create_empty_blocks"` CreateEmptyBlocksInterval int `mapstructure:"create_empty_blocks_interval"` // Reactor sleep duration parameters are in milliseconds PeerGossipSleepDuration int `mapstructure:"peer_gossip_sleep_duration"` PeerQueryMaj23SleepDuration int `mapstructure:"peer_query_maj23_sleep_duration"` // contains filtered or unexported fields }
ConsensusConfig defines the configuration for the truechain consensus service, including timeouts and details about the WAL and the block structure.
func DefaultConsensusConfig ¶
func DefaultConsensusConfig() *ConsensusConfig
DefaultConsensusConfig returns a default configuration for the consensus service
func TestConsensusConfig ¶
func TestConsensusConfig() *ConsensusConfig
TestConsensusConfig returns a configuration for testing the consensus service
func (*ConsensusConfig) CatchupTime ¶
func (cfg *ConsensusConfig) CatchupTime(t time.Time) time.Time
CatchupTime catch up same consensus for peer
func (*ConsensusConfig) Commit ¶
func (cfg *ConsensusConfig) Commit(t time.Time) time.Time
Commit returns the amount of time to wait for straggler votes after receiving +2/3 precommits for a single block (ie. a commit).
func (*ConsensusConfig) EmptyBlocksInterval ¶
func (cfg *ConsensusConfig) EmptyBlocksInterval() time.Duration
EmptyBlocksInterval returns the amount of time to wait before proposing an empty block or starting the propose timer if there are no txs available
func (*ConsensusConfig) EmptyBlocksIntervalForPer ¶
func (cfg *ConsensusConfig) EmptyBlocksIntervalForPer(times int) time.Duration
EmptyBlocksIntervalForPer rerutns time Duration that how long it wait for per times
func (*ConsensusConfig) PeerGossipSleep ¶
func (cfg *ConsensusConfig) PeerGossipSleep() time.Duration
PeerGossipSleep returns the amount of time to sleep if there is nothing to send from the ConsensusReactor
func (*ConsensusConfig) PeerQueryMaj23Sleep ¶
func (cfg *ConsensusConfig) PeerQueryMaj23Sleep() time.Duration
PeerQueryMaj23Sleep returns the amount of time to sleep after each VoteSetMaj23Message is sent in the ConsensusReactor
func (*ConsensusConfig) Precommit ¶
func (cfg *ConsensusConfig) Precommit(round int) time.Duration
Precommit returns the amount of time to wait for straggler votes after receiving any +2/3 precommits
func (*ConsensusConfig) Prevote ¶
func (cfg *ConsensusConfig) Prevote(round int) time.Duration
Prevote returns the amount of time to wait for straggler votes after receiving any +2/3 prevotes
func (*ConsensusConfig) Propose ¶
func (cfg *ConsensusConfig) Propose(round int) time.Duration
Propose returns the amount of time to wait for a proposal
func (*ConsensusConfig) SetWalFile ¶
func (cfg *ConsensusConfig) SetWalFile(walFile string)
SetWalFile sets the path to the write-ahead log file
func (*ConsensusConfig) WaitForEmptyBlocks ¶
func (cfg *ConsensusConfig) WaitForEmptyBlocks(times int) bool
WaitForEmptyBlocks rerutns true if the consensus should wait for transactions before entering the propose step
func (*ConsensusConfig) WaitForTxs ¶
func (cfg *ConsensusConfig) WaitForTxs() bool
WaitForTxs returns true if the consensus should wait for transactions before entering the propose step
func (*ConsensusConfig) WalFile ¶
func (cfg *ConsensusConfig) WalFile() string
WalFile returns the full path to the write-ahead log file
type FuzzConnConfig ¶
type FuzzConnConfig struct { Mode int MaxDelay time.Duration ProbDropRW float64 ProbDropConn float64 ProbSleep float64 }
FuzzConnConfig is a FuzzedConnection configuration.
func DefaultFuzzConnConfig ¶
func DefaultFuzzConnConfig() *FuzzConnConfig
DefaultFuzzConnConfig returns the default config.
type GasTable ¶
type GasTable struct { ExtcodeSize uint64 ExtcodeCopy uint64 ExtcodeHash uint64 Balance uint64 SLoad uint64 Calls uint64 Suicide uint64 ExpByte uint64 // CreateBySuicide occurs when the // refunded account is one that does // not exist. This logic is similar // to call. May be left nil. Nil means // not charged. CreateBySuicide uint64 }
GasTable organizes gas prices for different ethereum phases.
type MinervaConfig ¶
type MinervaConfig struct { MinimumDifficulty *big.Int `json:"minimumDifficulty"` MinimumFruitDifficulty *big.Int `json:"minimumFruitDifficulty"` DurationLimit *big.Int `json:"durationLimit"` }
MinervaConfig is the consensus engine configs for proof-of-work based sealing.
func (MinervaConfig) MarshalJSON ¶
func (c MinervaConfig) MarshalJSON() ([]byte, error)
func (*MinervaConfig) String ¶
func (c *MinervaConfig) String() string
String implements the stringer interface, returning the consensus engine details.
func (*MinervaConfig) UnmarshalJSON ¶
func (c *MinervaConfig) UnmarshalJSON(input []byte) error
type P2PConfig ¶
type P2PConfig struct { RootDir string `mapstructure:"home"` // Address to listen for incoming connections ListenAddress1 string `mapstructure:"laddr"` ListenAddress2 string `mapstructure:"laddr"` // Address to advertise to peers for them to dial ExternalAddress string `mapstructure:"external_address"` // UPNP port forwarding UPNP bool `mapstructure:"upnp"` // Path to address book AddrBook string `mapstructure:"addr_book_file"` // Set true for strict address routability rules AddrBookStrict bool `mapstructure:"addr_book_strict"` // Maximum number of peers to connect to MaxNumPeers int `mapstructure:"max_num_peers"` // Time to wait before flushing messages out on the connection, in ms FlushThrottleTimeout int `mapstructure:"flush_throttle_timeout"` // Maximum size of a message packet payload, in bytes MaxPacketMsgPayloadSize int `mapstructure:"max_packet_msg_payload_size"` // Rate at which packets can be sent, in bytes/second SendRate int64 `mapstructure:"send_rate"` // Rate at which packets can be received, in bytes/second RecvRate int64 `mapstructure:"recv_rate"` // Comma separated list of peer IDs to keep private (will not be gossiped to // other peers) PrivatePeerIDs string `mapstructure:"private_peer_ids"` // Toggle to disable guard against peers connecting from the same ip. AllowDuplicateIP bool `mapstructure:"allow_duplicate_ip"` // Peer connection configuration. HandshakeTimeout time.Duration `mapstructure:"handshake_timeout"` DialTimeout time.Duration `mapstructure:"dial_timeout"` // Testing params. // Force dial to fail TestDialFail bool `mapstructure:"test_dial_fail"` // FUzz connection TestFuzz bool `mapstructure:"test_fuzz"` TestFuzzConfig *FuzzConnConfig `mapstructure:"test_fuzz_config"` }
P2PConfig defines the configuration options for the truechain peer-to-peer networking layer
func DefaultP2PConfig ¶
func DefaultP2PConfig() *P2PConfig
DefaultP2PConfig returns a default configuration for the peer-to-peer layer
func TestP2PConfig ¶
func TestP2PConfig() *P2PConfig
TestP2PConfig returns a configuration for testing the peer-to-peer layer
func (*P2PConfig) AddrBookFile ¶
AddrBookFile returns the full path to the address book
type Rules ¶
Rules wraps ChainConfig and is merely syntatic sugar or can be used for functions that do not have or require information about the block.
Rules is a one time interface meaning that it shouldn't be used in between transition phases.
type TbftConfig ¶
type TbftConfig struct { // Top level options use an anonymous struct BaseConfig `mapstructure:",squash"` // Options for services P2P *P2PConfig `mapstructure:"p2p"` Consensus *ConsensusConfig `mapstructure:"consensus"` }
Config defines the top level configuration for a truechain node
func DefaultConfig ¶
func DefaultConfig() *TbftConfig
DefaultConfig returns a default configuration for a truechain node
func TestConfig ¶
func TestConfig() *TbftConfig
TestConfig returns a configuration that can be used for testing
func (*TbftConfig) SetRoot ¶
func (cfg *TbftConfig) SetRoot(root string) *TbftConfig
SetRoot sets the RootDir for all Config structs