// Copyright (C) 2025, Lux Industries, Inc. All rights reserved. // See the file LICENSE for licensing terms. package vrf import ( "github.com/luxfi/precompile/contract" "github.com/luxfi/precompile/modules" "github.com/luxfi/precompile/precompileconfig" ) var _ contract.Configurator = (*configurator)(nil) // ConfigKey is the key used in genesis JSON to enable this precompile. const ConfigKey = "vrfConfig" // Module is the precompile module descriptor. var Module = modules.Module{ ConfigKey: ConfigKey, Address: ContractAddress, Contract: VRFPrecompile, Configurator: &configurator{}, } type configurator struct{} func init() { if err := modules.RegisterModule(Module); err != nil { panic(err) } } func (*configurator) MakeConfig() precompileconfig.Config { return new(Config) } func (*configurator) Configure( chainConfig precompileconfig.ChainConfig, cfg precompileconfig.Config, state contract.StateDB, blockContext contract.ConfigurationBlockContext, ) error { return nil } // Config implements precompileconfig.Config. type Config struct { Upgrade precompileconfig.Upgrade `json:"upgrade"` } func (c *Config) Key() string { return ConfigKey } func (c *Config) Timestamp() *uint64 { return c.Upgrade.Timestamp() } func (c *Config) IsDisabled() bool { return c.Upgrade.Disable } func (c *Config) Equal(cfg precompileconfig.Config) bool { other, ok := cfg.(*Config) if !ok { return false } return c.Upgrade.Equal(&other.Upgrade) } func (c *Config) Verify(chainConfig precompileconfig.ChainConfig) error { return nil }