Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move EVM config ocr and ocr2 #9606

Merged
merged 9 commits into from
Jun 16, 2023
26 changes: 17 additions & 9 deletions core/chains/evm/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,21 +62,29 @@ type ChainScopedOnlyConfig interface {
OperatorFactoryAddress() string
MinIncomingConfirmations() uint32
MinimumContractPayment() *assets.Link

// OCR1 chain specific config
OCRContractConfirmations() uint16
OCRContractTransmitterTransmitTimeout() time.Duration
OCRObservationGracePeriod() time.Duration
OCRDatabaseTimeout() time.Duration

// OCR2 chain specific config
OCR2AutomationGasLimit() uint32
}

type EVM interface {
HeadTracker() HeadTracker
BalanceMonitor() BalanceMonitor
Transactions() Transactions
OCR() OCR
OCR2() OCR2
}

type OCR interface {
ContractConfirmations() uint16
ContractTransmitterTransmitTimeout() time.Duration
ObservationGracePeriod() time.Duration
DatabaseTimeout() time.Duration
}

type OCR2 interface {
Automation() OCR2Automation
}

type OCR2Automation interface {
GasLimit() uint32
}

type HeadTracker interface {
Expand Down
6 changes: 3 additions & 3 deletions core/chains/evm/config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -250,11 +250,11 @@ func TestChainScopedConfig_BSCDefaults(t *testing.T) {
})
cfg := evmtest.NewChainScopedConfig(t, gcfg)

timeout := cfg.OCRDatabaseTimeout()
timeout := cfg.EVM().OCR().DatabaseTimeout()
require.Equal(t, 2*time.Second, timeout)
timeout = cfg.OCRContractTransmitterTransmitTimeout()
timeout = cfg.EVM().OCR().ContractTransmitterTransmitTimeout()
require.Equal(t, 2*time.Second, timeout)
timeout = cfg.OCRObservationGracePeriod()
timeout = cfg.EVM().OCR().ObservationGracePeriod()
require.Equal(t, 500*time.Millisecond, timeout)
}

Expand Down
70 changes: 0 additions & 70 deletions core/chains/evm/config/mocks/chain_scoped_config.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

48 changes: 24 additions & 24 deletions core/chains/evm/config/v2/chain_scoped.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,13 @@ func (c *ChainScoped) Validate() (err error) {
// Most per-chain validation is done on startup, but this combines globals as well.
lc := ocrtypes.LocalConfig{
BlockchainTimeout: c.OCR().BlockchainTimeout(),
ContractConfigConfirmations: c.OCRContractConfirmations(),
ContractConfigConfirmations: c.EVM().OCR().ContractConfirmations(),
ContractConfigTrackerPollInterval: c.OCR().ContractPollInterval(),
ContractConfigTrackerSubscribeInterval: c.OCR().ContractSubscribeInterval(),
ContractTransmitterTransmitTimeout: c.OCRContractTransmitterTransmitTimeout(),
DatabaseTimeout: c.OCRDatabaseTimeout(),
ContractTransmitterTransmitTimeout: c.EVM().OCR().ContractTransmitterTransmitTimeout(),
DatabaseTimeout: c.EVM().OCR().DatabaseTimeout(),
DataSourceTimeout: c.OCR().ObservationTimeout(),
DataSourceGracePeriod: c.OCRObservationGracePeriod(),
DataSourceGracePeriod: c.EVM().OCR().ObservationGracePeriod(),
}
if ocrerr := ocr.SanityCheckLocalConfig(lc); ocrerr != nil {
err = multierr.Append(err, ocrerr)
Expand All @@ -73,6 +73,14 @@ func (e *evmConfig) HeadTracker() config.HeadTracker {
return &headTrackerConfig{c: e.c.HeadTracker}
}

func (e *evmConfig) OCR() config.OCR {
return &ocrConfig{c: e.c.OCR}
}

func (e *evmConfig) OCR2() config.OCR2 {
return &ocr2Config{c: e.c.OCR2}
}

func (c *ChainScoped) EVM() config.EVM {
return &evmConfig{c: c.cfg}
}
Expand Down Expand Up @@ -220,6 +228,18 @@ func (c *ChainScoped) EvmGasTipCapMinimum() *assets.Wei {
return c.cfg.GasEstimator.TipCapMin
}

func (c *ChainScoped) EvmHeadTrackerHistoryDepth() uint32 {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@george-dorin Rebase error? These have been removed in a PR that I merged recently.

return *c.cfg.HeadTracker.HistoryDepth
}

func (c *ChainScoped) EvmHeadTrackerMaxBufferSize() uint32 {
return *c.cfg.HeadTracker.MaxBufferSize
}

func (c *ChainScoped) EvmHeadTrackerSamplingInterval() time.Duration {
return c.cfg.HeadTracker.SamplingInterval.Duration()
}

func (c *ChainScoped) EvmLogBackfillBatchSize() uint32 {
return *c.cfg.LogBackfillBatchSize
}
Expand Down Expand Up @@ -310,26 +330,6 @@ func (c *ChainScoped) NodeSyncThreshold() uint32 {
return *c.cfg.NodePool.SyncThreshold
}

func (c *ChainScoped) OCRContractConfirmations() uint16 {
return *c.cfg.OCR.ContractConfirmations
}

func (c *ChainScoped) OCRContractTransmitterTransmitTimeout() time.Duration {
return c.cfg.OCR.ContractTransmitterTransmitTimeout.Duration()
}

func (c *ChainScoped) OCRObservationGracePeriod() time.Duration {
return c.cfg.OCR.ObservationGracePeriod.Duration()
}

func (c *ChainScoped) OCRDatabaseTimeout() time.Duration {
return c.cfg.OCR.DatabaseTimeout.Duration()
}

func (c *ChainScoped) OCR2AutomationGasLimit() uint32 {
return *c.cfg.OCR2.Automation.GasLimit
}

type balanceMonitorConfig struct {
c BalanceMonitor
}
Expand Down
23 changes: 23 additions & 0 deletions core/chains/evm/config/v2/config_ocr.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package v2

import "time"

type ocrConfig struct {
c OCR
}

func (o *ocrConfig) ContractConfirmations() uint16 {
return *o.c.ContractConfirmations
}

func (o *ocrConfig) ContractTransmitterTransmitTimeout() time.Duration {
return o.c.ContractTransmitterTransmitTimeout.Duration()
}

func (o *ocrConfig) ObservationGracePeriod() time.Duration {
return o.c.ObservationGracePeriod.Duration()
}

func (o *ocrConfig) DatabaseTimeout() time.Duration {
return o.c.DatabaseTimeout.Duration()
}
23 changes: 23 additions & 0 deletions core/chains/evm/config/v2/config_ocr2.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package v2

import "github.com/smartcontractkit/chainlink/v2/core/chains/evm/config"

type ocr2Config struct {
c OCR2
}

type ocr2Automation struct {
c Automation
}

func (o ocr2Automation) GasLimit() uint32 {
return *o.c.GasLimit
}
george-dorin marked this conversation as resolved.
Show resolved Hide resolved

func (o *ocr2Config) Automation() config.OCR2Automation {
return &ocr2Automation{c: o.c.Automation}
}

func (o *ocr2Config) ContractConfirmations() uint16 {
return uint16(*o.c.Automation.GasLimit)
}
14 changes: 14 additions & 0 deletions core/chains/evm/config/v2/config_ocr2_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package v2_test

import (
"testing"

"github.com/stretchr/testify/require"

"github.com/smartcontractkit/chainlink/v2/core/internal/cltest"
)

func TestOcr2Config(t *testing.T) {
evmOcrCfg := cltest.NewTestChainScopedConfig(t) //fallback.toml values
require.Equal(t, uint32(5300000), evmOcrCfg.EVM().OCR2().Automation().GasLimit())
george-dorin marked this conversation as resolved.
Show resolved Hide resolved
}
17 changes: 17 additions & 0 deletions core/chains/evm/config/v2/config_ocr_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package v2_test

import (
"testing"

"github.com/stretchr/testify/require"

"github.com/smartcontractkit/chainlink/v2/core/internal/cltest"
)

func TestOcrConfig(t *testing.T) {
evmOcrCfg := cltest.NewTestChainScopedConfig(t) //fallback.toml values
require.Equal(t, uint16(4), evmOcrCfg.EVM().OCR().ContractConfirmations())
require.Equal(t, cltest.MustParseDuration(t, "10s"), evmOcrCfg.EVM().OCR().ContractTransmitterTransmitTimeout())
require.Equal(t, cltest.MustParseDuration(t, "10s"), evmOcrCfg.EVM().OCR().DatabaseTimeout())
require.Equal(t, cltest.MustParseDuration(t, "1s"), evmOcrCfg.EVM().OCR().ObservationGracePeriod())
}
24 changes: 9 additions & 15 deletions core/services/job/orm.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (

"github.com/smartcontractkit/chainlink/v2/core/bridges"
"github.com/smartcontractkit/chainlink/v2/core/chains/evm"
evmconfig "github.com/smartcontractkit/chainlink/v2/core/chains/evm/config"
"github.com/smartcontractkit/chainlink/v2/core/config"
"github.com/smartcontractkit/chainlink/v2/core/logger"
"github.com/smartcontractkit/chainlink/v2/core/null"
Expand Down Expand Up @@ -653,7 +654,7 @@ func (o *orm) LoadEnvConfigVars(jb *Job) error {
if err != nil {
return err
}
newSpec, err := LoadEnvConfigVarsOCR(ch.Config(), ch.Config().OCR(), *jb.OCROracleSpec)
newSpec, err := LoadEnvConfigVarsOCR(ch.Config().EVM().OCR(), ch.Config().OCR(), *jb.OCROracleSpec)
if err != nil {
return err
}
Expand Down Expand Up @@ -698,13 +699,6 @@ func LoadEnvConfigVarsDR(cfg DRSpecConfig, drs DirectRequestSpec) *DirectRequest
return &drs
}

type OCRSpecConfig interface {
OCRContractConfirmations() uint16
OCRContractTransmitterTransmitTimeout() time.Duration
OCRDatabaseTimeout() time.Duration
OCRObservationGracePeriod() time.Duration
}

type OCRConfig interface {
BlockchainTimeout() time.Duration
CaptureEATelemetry() bool
Expand All @@ -716,7 +710,7 @@ type OCRConfig interface {
}

// LoadEnvConfigVarsLocalOCR loads local OCR env vars into the OCROracleSpec.
func LoadEnvConfigVarsLocalOCR(cfg OCRSpecConfig, os OCROracleSpec, ocrCfg OCRConfig) *OCROracleSpec {
func LoadEnvConfigVarsLocalOCR(evmOcrCfg evmconfig.OCR, os OCROracleSpec, ocrCfg OCRConfig) *OCROracleSpec {
if os.ObservationTimeout == 0 {
os.ObservationTimeoutEnv = true
os.ObservationTimeout = models.Interval(ocrCfg.ObservationTimeout())
Expand All @@ -735,27 +729,27 @@ func LoadEnvConfigVarsLocalOCR(cfg OCRSpecConfig, os OCROracleSpec, ocrCfg OCRCo
}
if os.ContractConfigConfirmations == 0 {
os.ContractConfigConfirmationsEnv = true
os.ContractConfigConfirmations = cfg.OCRContractConfirmations()
os.ContractConfigConfirmations = evmOcrCfg.ContractConfirmations()
}
if os.DatabaseTimeout == nil {
os.DatabaseTimeoutEnv = true
os.DatabaseTimeout = models.NewInterval(cfg.OCRDatabaseTimeout())
os.DatabaseTimeout = models.NewInterval(evmOcrCfg.DatabaseTimeout())
}
if os.ObservationGracePeriod == nil {
os.ObservationGracePeriodEnv = true
os.ObservationGracePeriod = models.NewInterval(cfg.OCRObservationGracePeriod())
os.ObservationGracePeriod = models.NewInterval(evmOcrCfg.ObservationGracePeriod())
}
if os.ContractTransmitterTransmitTimeout == nil {
os.ContractTransmitterTransmitTimeoutEnv = true
os.ContractTransmitterTransmitTimeout = models.NewInterval(cfg.OCRContractTransmitterTransmitTimeout())
os.ContractTransmitterTransmitTimeout = models.NewInterval(evmOcrCfg.ContractTransmitterTransmitTimeout())
}
os.CaptureEATelemetry = ocrCfg.CaptureEATelemetry()

return &os
}

// LoadEnvConfigVarsOCR loads OCR env vars into the OCROracleSpec.
func LoadEnvConfigVarsOCR(cfg OCRSpecConfig, ocrCfg OCRConfig, os OCROracleSpec) (*OCROracleSpec, error) {
func LoadEnvConfigVarsOCR(evmOcrCfg evmconfig.OCR, ocrCfg OCRConfig, os OCROracleSpec) (*OCROracleSpec, error) {
if os.TransmitterAddress == nil {
ta, err := ocrCfg.TransmitterAddress()
if !errors.Is(errors.Cause(err), config.ErrEnvUnset) {
Expand All @@ -780,7 +774,7 @@ func LoadEnvConfigVarsOCR(cfg OCRSpecConfig, ocrCfg OCRConfig, os OCROracleSpec)
os.EncryptedOCRKeyBundleID = &encryptedOCRKeyBundleID
}

return LoadEnvConfigVarsLocalOCR(cfg, os, ocrCfg), nil
return LoadEnvConfigVarsLocalOCR(evmOcrCfg, os, ocrCfg), nil
}

func (o *orm) FindJobTx(id int32) (Job, error) {
Expand Down
2 changes: 1 addition & 1 deletion core/services/job/orm_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func TestLoadEnvConfigVarsLocalOCR(t *testing.T) {
chainConfig := evmtest.NewChainScopedConfig(t, config)
jobSpec := &job.OCROracleSpec{}

jobSpec = job.LoadEnvConfigVarsLocalOCR(chainConfig, *jobSpec, chainConfig.OCR())
jobSpec = job.LoadEnvConfigVarsLocalOCR(chainConfig.EVM().OCR(), *jobSpec, chainConfig.OCR())

require.True(t, jobSpec.ObservationTimeoutEnv)
require.True(t, jobSpec.BlockchainTimeoutEnv)
Expand Down
Loading