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

WIP Automation LOOPP #11029

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion core/scripts/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ require (
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 // indirect
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20231109141932-cb1ea9020255 // indirect
github.com/smartcontractkit/chainlink-relay v0.1.7-0.20231113174149-046d4ddaca1a // indirect
github.com/smartcontractkit/chainlink-relay v0.1.7-0.20231115022839-6b4362375ac7 // indirect
github.com/smartcontractkit/chainlink-solana v1.0.3-0.20231023133638-72f4e799ab05 // indirect
github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20231024133459-1ef3a11319eb // indirect
github.com/smartcontractkit/tdh2/go/ocr2/decryptionplugin v0.0.0-20230906073235-9e478e5e19f1 // indirect
Expand Down Expand Up @@ -398,3 +398,9 @@ replace (
github.com/mwitkow/grpc-proxy => github.com/smartcontractkit/grpc-proxy v0.0.0-20230731113816-f1be6620749f

)

replace github.com/smartcontractkit/chainlink-solana => github.com/ferglor/chainlink-solana v0.0.0-20231115023106-27199e228ed6

replace github.com/smartcontractkit/chainlink-starknet/relayer => github.com/ferglor/chainlink-starknet/relayer v0.0.0-20231115023044-991a15feb10a

replace github.com/smartcontractkit/chainlink-cosmos => github.com/ferglor/chainlink-cosmos v0.0.0-20231115023018-7dcc60ab26d0
16 changes: 8 additions & 8 deletions core/scripts/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,12 @@ github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBD
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk=
github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/ferglor/chainlink-cosmos v0.0.0-20231115023018-7dcc60ab26d0 h1:lQCzMaKwRqPVIwZoSihAf1AHRPxiCL2n5opeWXx8k14=
github.com/ferglor/chainlink-cosmos v0.0.0-20231115023018-7dcc60ab26d0/go.mod h1:GCGftugwmkwNzkfp60U5OWSY5eBuzF8ed4Vy1QI68hI=
github.com/ferglor/chainlink-solana v0.0.0-20231115023106-27199e228ed6 h1:Oy3xr0NNGUqyYEB0kF0QuI1BitH+nBz/tBoWma1vqgs=
github.com/ferglor/chainlink-solana v0.0.0-20231115023106-27199e228ed6/go.mod h1:/9AcIYClwT4OA3j5xym2Ms+lNfdurJqFiqtugZbHa7c=
github.com/ferglor/chainlink-starknet/relayer v0.0.0-20231115023044-991a15feb10a h1:21gvop/8RlDyI3aWhAFsWgKWP2B11vzK2RMxq2qQT9Y=
github.com/ferglor/chainlink-starknet/relayer v0.0.0-20231115023044-991a15feb10a/go.mod h1:zBNnuavovJN/zqv8CjloStAiie4JloeeM33rWN+oeK4=
github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c=
github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0=
github.com/flynn/noise v0.0.0-20180327030543-2492fe189ae6 h1:u/UEqS66A5ckRmS4yNpjmVH56sVtS/RfclBAYocb4as=
Expand Down Expand Up @@ -1462,14 +1468,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 h1:T3lFWumvbfM1u/etVq42Afwq/jtNSBSOA8n5jntnNPo=
github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704/go.mod h1:2QuJdEouTWjh5BDy5o/vgGXQtR4Gz8yH1IYB5eT7u4M=
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20231109141932-cb1ea9020255 h1:Pt6c7bJU9wIN6PQQnmN8UmYYH6lpfiQ6U/B8yEC2s5s=
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20231109141932-cb1ea9020255/go.mod h1:EHppaccd/LTlTMI2o4dmBHe4BknEgEFFDjDGMNuGb3k=
github.com/smartcontractkit/chainlink-relay v0.1.7-0.20231113174149-046d4ddaca1a h1:G/pD8uI1PULRJU8Y3eLLzjqQBp9ruG9hj+wWxtyrgTo=
github.com/smartcontractkit/chainlink-relay v0.1.7-0.20231113174149-046d4ddaca1a/go.mod h1:M9U1JV7IQi8Sfj4JR1qSi1tIh6omgW78W/8SHN/8BUQ=
github.com/smartcontractkit/chainlink-solana v1.0.3-0.20231023133638-72f4e799ab05 h1:DaPSVnxe7oz1QJ+AVIhQWs1W3ubQvwvGo9NbHpMs1OQ=
github.com/smartcontractkit/chainlink-solana v1.0.3-0.20231023133638-72f4e799ab05/go.mod h1:o0Pn1pbaUluboaK6/yhf8xf7TiFCkyFl6WUOdwqamuU=
github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20231024133459-1ef3a11319eb h1:HiluOfEVGOQTM6BTDImOqYdMZZ7qq7fkZ3TJdmItNr8=
github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20231024133459-1ef3a11319eb/go.mod h1:/30flFG4L/iCYAFeA3DUzR0xuHSxAMONiWTzyzvsNwo=
github.com/smartcontractkit/chainlink-relay v0.1.7-0.20231115022839-6b4362375ac7 h1:JJRFp7x71pdBrBv0HHDxzRTKDHezqZ3lKso920m/gDg=
github.com/smartcontractkit/chainlink-relay v0.1.7-0.20231115022839-6b4362375ac7/go.mod h1:M9U1JV7IQi8Sfj4JR1qSi1tIh6omgW78W/8SHN/8BUQ=
github.com/smartcontractkit/go-plugin v0.0.0-20231003134350-e49dad63b306 h1:ko88+ZznniNJZbZPWAvHQU8SwKAdHngdDZ+pvVgB5ss=
github.com/smartcontractkit/go-plugin v0.0.0-20231003134350-e49dad63b306/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4=
github.com/smartcontractkit/grpc-proxy v0.0.0-20230731113816-f1be6620749f h1:hgJif132UCdjo8u43i7iPN1/MFnu49hv7lFGFftCHKU=
Expand Down
104 changes: 85 additions & 19 deletions core/services/ocr2/delegate.go
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@ func (d *Delegate) ServicesForSpec(jb job.Job) ([]job.ServiceCtx, error) {
return d.newServicesOCR2VRF(lggr, jb, runResults, bootstrapPeers, kb, ocrDB, lc)

case types.OCR2Keeper:
return d.newServicesOCR2Keepers(lggr, jb, runResults, bootstrapPeers, kb, ocrDB, lc, ocrLogger)
return d.newServicesOCR2Keepers(ctx, lggr, jb, runResults, bootstrapPeers, kb, ocrDB, lc, ocrLogger)

case types.Functions:
const (
Expand Down Expand Up @@ -1026,6 +1026,7 @@ func (d *Delegate) newServicesOCR2VRF(
}

func (d *Delegate) newServicesOCR2Keepers(
ctx context.Context,
lggr logger.SugaredLogger,
jb job.Job,
runResults chan *pipeline.Run,
Expand All @@ -1047,15 +1048,16 @@ func (d *Delegate) newServicesOCR2Keepers(

switch cfg.ContractVersion {
case "v2.1":
return d.newServicesOCR2Keepers21(lggr, jb, runResults, bootstrapPeers, kb, ocrDB, lc, ocrLogger, cfg, spec)
return d.newServicesOCR2Keepers21(ctx, lggr, jb, runResults, bootstrapPeers, kb, ocrDB, lc, ocrLogger, cfg, spec)
case "v2.0":
return d.newServicesOCR2Keepers20(lggr, jb, runResults, bootstrapPeers, kb, ocrDB, lc, ocrLogger, cfg, spec)
return d.newServicesOCR2Keepers20(ctx, lggr, jb, runResults, bootstrapPeers, kb, ocrDB, lc, ocrLogger, cfg, spec)
default:
return d.newServicesOCR2Keepers20(lggr, jb, runResults, bootstrapPeers, kb, ocrDB, lc, ocrLogger, cfg, spec)
return d.newServicesOCR2Keepers20(ctx, lggr, jb, runResults, bootstrapPeers, kb, ocrDB, lc, ocrLogger, cfg, spec)
}
}

func (d *Delegate) newServicesOCR2Keepers21(
ctx context.Context,
lggr logger.SugaredLogger,
jb job.Job,
runResults chan *pipeline.Run,
Expand All @@ -1067,9 +1069,9 @@ func (d *Delegate) newServicesOCR2Keepers21(
cfg ocr2keeper.PluginConfig,
spec *job.OCR2OracleSpec,
) ([]job.ServiceCtx, error) {
credName, err2 := jb.OCR2OracleSpec.PluginConfig.MercuryCredentialName()
if err2 != nil {
return nil, errors.Wrap(err2, "failed to get mercury credential name")
credName, err := jb.OCR2OracleSpec.PluginConfig.MercuryCredentialName()
if err != nil {
return nil, errors.Wrap(err, "failed to get mercury credential name")
}

mc := d.cfg.Mercury().Credentials(credName)
Expand All @@ -1081,15 +1083,47 @@ func (d *Delegate) newServicesOCR2Keepers21(
return nil, fmt.Errorf("keeper2 services: expected EVM relayer got %s", rid.Network)
}

chain, err2 := d.legacyChains.Get(rid.ChainID)
if err2 != nil {
return nil, fmt.Errorf("keeper2 services: failed to get chain %s: %w", rid.ChainID, err2)
transmitterID := spec.TransmitterID.String
//if len(transmitterID) != 64 {
// return nil, errors.Errorf("ServicesForSpec: keepers job type requires transmitter ID to be a 32-byte hex string, got: %q", transmitterID)
//}

relayer, err := d.RelayGetter.Get(rid)
if err != nil {
return nil, ErrRelayNotEnabled{Err: err, Relay: spec.Relay, PluginName: "ocr2keepers"}
}

keeperProvider, services, err2 := ocr2keeper.EVMDependencies21(jb, d.db, lggr, chain, d.pipelineRunner, mc, kb, d.cfg.Database())
if err2 != nil {
return nil, errors.Wrap(err2, "could not build dependencies for ocr2 keepers")
provider, err := relayer.NewPluginProvider(ctx,
types.RelayArgs{
ExternalJobID: jb.ExternalJobID,
JobID: jb.ID,
ContractID: spec.ContractID,
New: d.isNewlyCreatedJob,
RelayConfig: spec.RelayConfig.Bytes(),
ProviderType: string(spec.PluginType),
}, types.PluginArgs{
TransmitterID: transmitterID,
PluginConfig: spec.PluginConfig.Bytes(),
})
if err != nil {
return nil, err
}

keeperProvider, ok := provider.(types.OCR2KeepersProvider)
if !ok {
return nil, errors.New("could not coerce PluginProvider to OCR2KeepersProvider")
}

chain, err := d.legacyChains.Get(rid.ChainID)
if err != nil {
return nil, fmt.Errorf("keeper2 services: failed to get chain %s: %w", rid.ChainID, err)
}

services, err := ocr2keeper.EVMDependencies21(jb, d.db, lggr, chain, d.pipelineRunner, mc, kb, d.cfg.Database())
if err != nil {
return nil, errors.Wrap(err, "could not build dependencies for ocr2 keepers")
}

// set some defaults
conf := ocr2keepers21config.ReportingFactoryConfig{
CacheExpiration: ocr2keepers21config.DefaultCacheExpiration,
Expand Down Expand Up @@ -1175,6 +1209,7 @@ func (d *Delegate) newServicesOCR2Keepers21(
}

func (d *Delegate) newServicesOCR2Keepers20(
ctx context.Context,
lggr logger.SugaredLogger,
jb job.Job,
runResults chan *pipeline.Run,
Expand All @@ -1194,14 +1229,45 @@ func (d *Delegate) newServicesOCR2Keepers20(
if rid.Network != relay.EVM {
return nil, fmt.Errorf("keepers2.0 services: expected EVM relayer got %s", rid.Network)
}
chain, err2 := d.legacyChains.Get(rid.ChainID)
if err2 != nil {
return nil, fmt.Errorf("keepers2.0 services: failed to get chain (%s): %w", rid.ChainID, err2)
chain, err := d.legacyChains.Get(rid.ChainID)
if err != nil {
return nil, fmt.Errorf("keepers2.0 services: failed to get chain (%s): %w", rid.ChainID, err)
}

keeperProvider, rgstry, encoder, logProvider, err2 := ocr2keeper.EVMDependencies20(jb, d.db, lggr, chain, d.pipelineRunner)
if err2 != nil {
return nil, errors.Wrap(err2, "could not build dependencies for ocr2 keepers")
transmitterID := spec.TransmitterID.String
//if len(transmitterID) != 64 {
// return nil, errors.Errorf("ServicesForSpec: keepers job type requires transmitter ID to be a 32-byte hex string, got: %q", transmitterID)
//}

relayer, err := d.RelayGetter.Get(rid)
if err != nil {
return nil, ErrRelayNotEnabled{Err: err, Relay: spec.Relay, PluginName: "mercury"}
}

provider, err := relayer.NewPluginProvider(ctx,
types.RelayArgs{
ExternalJobID: jb.ExternalJobID,
JobID: jb.ID,
ContractID: spec.ContractID,
New: d.isNewlyCreatedJob,
RelayConfig: spec.RelayConfig.Bytes(),
ProviderType: string(spec.PluginType),
}, types.PluginArgs{
TransmitterID: transmitterID,
PluginConfig: spec.PluginConfig.Bytes(),
})
if err != nil {
return nil, err
}

keeperProvider, ok := provider.(types.OCR2KeepersProvider)
if !ok {
return nil, errors.New("could not coerce PluginProvider to OCR2KeepersProvider")
}

rgstry, encoder, logProvider, err := ocr2keeper.EVMDependencies20(jb, d.db, lggr, chain, d.pipelineRunner)
if err != nil {
return nil, errors.Wrap(err, "could not build dependencies for ocr2 keepers")
}

w := &logWriter{log: lggr.Named("Automation Dependencies")}
Expand Down
26 changes: 12 additions & 14 deletions core/services/ocr2/plugins/ocr2keeper/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,20 +72,19 @@ func EVMDependencies20(
lggr logger.Logger,
chain evm.Chain,
pr pipeline.Runner,
) (evmrelay.OCR2KeeperProvider, *kevm20.EvmRegistry, Encoder20, *kevm20.LogProvider, error) {
) (*kevm20.EvmRegistry, Encoder20, *kevm20.LogProvider, error) {
var err error

var keeperProvider evmrelay.OCR2KeeperProvider
var registry *kevm20.EvmRegistry

// the provider will be returned as a dependency
if keeperProvider, err = EVMProvider(db, chain, lggr, spec, pr); err != nil {
return nil, nil, nil, nil, err
}
//if keeperProvider, err = EVMProvider(db, chain, lggr, spec, pr); err != nil {
// return nil, nil, nil, nil, err
//}

rAddr := ethkey.MustEIP55Address(spec.OCR2OracleSpec.ContractID).Address()
if registry, err = kevm20.NewEVMRegistryService(rAddr, chain, lggr); err != nil {
return nil, nil, nil, nil, err
return nil, nil, nil, err
}

encoder := kevm20.EVMAutomationEncoder20{}
Expand All @@ -96,7 +95,7 @@ func EVMDependencies20(
// TODO: accept a version of the registry contract and use the correct interfaces
logProvider, err := kevm20.NewLogProvider(lggr, chain.LogPoller(), rAddr, chain.Client(), lookbackBlocks)

return keeperProvider, registry, encoder, logProvider, err
return registry, encoder, logProvider, err
}

func FilterNamesFromSpec20(spec *job.OCR2OracleSpec) (names []string, err error) {
Expand All @@ -116,23 +115,22 @@ func EVMDependencies21(
mc *models.MercuryCredentials,
keyring ocrtypes.OnchainKeyring,
dbCfg pg.QConfig,
) (evmrelay.OCR2KeeperProvider, kevm21.AutomationServices, error) {
) (kevm21.AutomationServices, error) {
var err error
var keeperProvider evmrelay.OCR2KeeperProvider

oSpec := spec.OCR2OracleSpec
// the provider will be returned as a dependency
if keeperProvider, err = EVMProvider(db, chain, lggr, spec, pr); err != nil {
return nil, nil, err
}
//if keeperProvider, err = EVMProvider(db, chain, lggr, spec, pr); err != nil {
// return nil, nil, err
//}

rAddr := ethkey.MustEIP55Address(oSpec.ContractID).Address()
services, err := kevm21.New(rAddr, chain, mc, keyring, lggr, db, dbCfg)
if err != nil {
return nil, nil, err
return nil, err
}

return keeperProvider, services, err
return services, err
}

func FilterNamesFromSpec21(spec *job.OCR2OracleSpec) (names []string, err error) {
Expand Down
8 changes: 8 additions & 0 deletions core/services/relay/evm/evm.go
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,14 @@ func (r *Relayer) NewFunctionsProvider(rargs relaytypes.RelayArgs, pargs relayty
return NewFunctionsProvider(r.chain, rargs, pargs, lggr, r.ks.Eth(), functions.FunctionsPlugin)
}

func (r *Relayer) NewOCR2KeepersProvider(rargs relaytypes.RelayArgs, pargs relaytypes.PluginArgs) (relaytypes.OCR2KeepersProvider, error) {
//lggr := r.lggr.Named("OCR2KeepersProvider").Named(rargs.ExternalJobID.String())
//ocr2keeperRelayer := NewOCR2KeeperRelayer(r.db, r.chain, r.pr, spec, lggr.Named("OCR2KeeperRelayer"))

//return NewOC(r.chain, rargs, pargs, lggr, r.ks.Eth(), functions.FunctionsPlugin)
return nil, nil
}

func (r *Relayer) NewConfigProvider(args relaytypes.RelayArgs) (relaytypes.ConfigProvider, error) {
lggr := r.lggr.Named("ConfigProvider").Named(args.ExternalJobID.String())
relayOpts := types.NewRelayOpts(args)
Expand Down
4 changes: 3 additions & 1 deletion core/services/relay/relay.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,9 @@ func (r *ServerAdapter) NewPluginProvider(ctx context.Context, rargs types.Relay
return r.NewFunctionsProvider(ctx, rargs, pargs)
case types.Mercury:
return r.NewMercuryProvider(ctx, rargs, pargs)
case types.DKG, types.OCR2VRF, types.OCR2Keeper, types.GenericPlugin:
case types.OCR2Keeper:
return r.NewOCR2KeepersProvider(ctx, rargs, pargs)
case types.DKG, types.OCR2VRF, types.GenericPlugin:
return r.RelayerAdapter.NewPluginProvider(ctx, rargs, pargs)
case types.CCIPCommit, types.CCIPExecution:
return nil, fmt.Errorf("provider type not supported: %s", rargs.ProviderType)
Expand Down
8 changes: 8 additions & 0 deletions core/services/relay/relay_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,10 @@ type staticMercuryProvider struct {
types.MercuryProvider
}

type staticOCR2KeepersProvider struct {
types.OCR2KeepersProvider
}

type mockRelayer struct {
types.Relayer
}
Expand All @@ -111,6 +115,10 @@ func (m *mockRelayer) NewMercuryProvider(rargs types.RelayArgs, pargs types.Plug
return staticMercuryProvider{}, nil
}

func (m *mockRelayer) NewOCR2KeepersProvider(rargs types.RelayArgs, pargs types.PluginArgs) (types.OCR2KeepersProvider, error) {
return staticOCR2KeepersProvider{}, nil
}

type mockRelayerExt struct {
loop.RelayerExt
}
Expand Down
8 changes: 7 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ require (
github.com/shopspring/decimal v1.3.1
github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20231109141932-cb1ea9020255
github.com/smartcontractkit/chainlink-relay v0.1.7-0.20231113174149-046d4ddaca1a
github.com/smartcontractkit/chainlink-relay v0.1.7-0.20231115022839-6b4362375ac7
github.com/smartcontractkit/chainlink-solana v1.0.3-0.20231023133638-72f4e799ab05
github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20231024133459-1ef3a11319eb
github.com/smartcontractkit/libocr v0.0.0-20231107151413-13e0202ae8d7
Expand Down Expand Up @@ -389,3 +389,9 @@ replace (
// until merged upstream: https://github.com/mwitkow/grpc-proxy/pull/69
github.com/mwitkow/grpc-proxy => github.com/smartcontractkit/grpc-proxy v0.0.0-20230731113816-f1be6620749f
)

replace github.com/smartcontractkit/chainlink-solana => github.com/ferglor/chainlink-solana v0.0.0-20231115023106-27199e228ed6

replace github.com/smartcontractkit/chainlink-starknet/relayer => github.com/ferglor/chainlink-starknet/relayer v0.0.0-20231115023044-991a15feb10a

replace github.com/smartcontractkit/chainlink-cosmos => github.com/ferglor/chainlink-cosmos v0.0.0-20231115023018-7dcc60ab26d0
Loading
Loading