Я не вижу никакой реальной документации о том, что это такое или к чему они относятся.
Вот структура в config
файле:
// Various consensus engines
Ethash *EthashConfig `json:"ethash,omitempty"`
Clique *CliqueConfig `json:"clique,omitempty"`
Могу ли я получить техническую информацию о том, что это такое, как они работают и что они делают?
Ethash — это алгоритм Proof-of-Work, используемый Ethereum. Обоснование дизайна и объяснение алгоритма в псевдокоде можно найти на вики (и обсуждалось в предыдущих вопросах — см.: Какую функцию доказательства работы использует Ethereum? ).
Clique — это протокол, используемый в тестовой сети Ethereum Proof-of-Authority под названием Rinkeby.
Если вы действительно спрашиваете, что эти две переменные приравнивают к коду, то логический вывод, если вы будете следовать коду в этом файле (т.е. config.go
), будет созданием genesis.json
файла с engine
полем, зависящим от того, какой тип цепочка, для которой вы его создаете.
// String implements the fmt.Stringer interface.
func (c *ChainConfig) String() string {
var engine interface{}
switch {
case c.Ethash != nil:
engine = c.Ethash
case c.Clique != nil:
engine = c.Clique
default:
engine = "unknown"
}
return fmt.Sprintf("{ChainID: %v Homestead: %v DAO: %v DAOSupport: %v EIP150: %v EIP155: %v EIP158: %v Byzantium: %v Engine: %v}",
c.ChainId,
c.HomesteadBlock,
c.DAOForkBlock,
c.DAOForkSupport,
c.EIP150Block,
c.EIP155Block,
c.EIP158Block,
c.ByzantiumBlock,
engine,
)
}