From d9729c3a1179c9cdd53fbc395a7a2d493fe85395 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 1 Aug 2024 17:52:20 -0400 Subject: [PATCH 01/42] Start deployment --- core/capabilities/ccip/deployment/deploy.go | 58 +++++ .../ccip/deployment/deploy_test.go | 33 +++ core/capabilities/ccip/deployment/state.go | 153 +++++++++++ core/environment/environment.go | 100 ++++++++ core/environment/memory/address_book.go | 25 ++ core/environment/memory/chain.go | 54 ++++ core/environment/memory/job_client.go | 37 +++ core/environment/memory/node.go | 242 ++++++++++++++++++ core/environment/memory/node_test.go | 23 ++ core/environment/persistent/address_book.go | 94 +++++++ .../persistent/address_book_test.go | 44 ++++ 11 files changed, 863 insertions(+) create mode 100644 core/capabilities/ccip/deployment/deploy.go create mode 100644 core/capabilities/ccip/deployment/deploy_test.go create mode 100644 core/capabilities/ccip/deployment/state.go create mode 100644 core/environment/environment.go create mode 100644 core/environment/memory/address_book.go create mode 100644 core/environment/memory/chain.go create mode 100644 core/environment/memory/job_client.go create mode 100644 core/environment/memory/node.go create mode 100644 core/environment/memory/node_test.go create mode 100644 core/environment/persistent/address_book.go create mode 100644 core/environment/persistent/address_book_test.go diff --git a/core/capabilities/ccip/deployment/deploy.go b/core/capabilities/ccip/deployment/deploy.go new file mode 100644 index 0000000000..398f2599c6 --- /dev/null +++ b/core/capabilities/ccip/deployment/deploy.go @@ -0,0 +1,58 @@ +package deployment + +import ( + "github.com/ethereum/go-ethereum/common" + + "github.com/smartcontractkit/chainlink-common/pkg/logger" + "github.com/smartcontractkit/chainlink/v2/core/environment" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/token_admin_registry" +) + +// TODO: pull up to environment pkg +func deployContract( + lggr logger.Logger, + deploy func() (string, common.Hash, error), + confirm func(common.Hash) error, + save func(string) error, +) error { + contractAddr, tx, err := deploy() + if err != nil { + lggr.Errorw("Failed to deploy contract", "err", err) + return err + } + err = confirm(tx) + if err != nil { + lggr.Errorw("Failed to confirm deployment", "err", err) + return err + } + err = save(contractAddr) + if err != nil { + lggr.Errorw("Failed to save contract address", "err", err) + return err + } + return nil +} + +func DeployCCIPContracts(e environment.Environment) error { + for _, chain := range e.Chains { + // For example deploy token admin registry to all chains + // And save the address + err := deployContract(e.Logger, + func() (string, common.Hash, error) { + tokenAdminRegistry, tx, _, err := token_admin_registry.DeployTokenAdminRegistry( + chain.DeployerKey, + chain.Client) + return tokenAdminRegistry.String(), tx.Hash(), err + }, + chain.Confirm, + func(addr string) error { + return e.AddressBook.Save(chain.Selector, addr) + }, + ) + if err != nil { + e.Logger.Errorw("Failed to deploy token admin registry", "err", err) + return err + } + } + return nil +} diff --git a/core/capabilities/ccip/deployment/deploy_test.go b/core/capabilities/ccip/deployment/deploy_test.go new file mode 100644 index 0000000000..b2101cd5d4 --- /dev/null +++ b/core/capabilities/ccip/deployment/deploy_test.go @@ -0,0 +1,33 @@ +package deployment + +import ( + "testing" + + chainsel "github.com/smartcontractkit/chain-selectors" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/smartcontractkit/chainlink/v2/core/environment" +) + +func TestDeployCCIPContracts(t *testing.T) { + e := environment.NewMemoryEnvironment(t, environment.MemoryEnvironmentConfig{ + Chains: 1, + Nodes: 1, + }) + // Deploy all the CCIP contracts. + require.NoError(t, DeployCCIPContracts(e)) + state, err := GenerateOnchainState(e) + require.NoError(t, err) + snap, err := state.Snapshot(e.AllChainSelectors()) + require.NoError(t, err) + + // Assert expect every deployed address to be in the address book. + for name, chain := range snap.Chains { + addrs, err := e.AddressBook.Addresses() + require.NoError(t, err) + evmChainID, _ := chainsel.ChainIdFromName(name) + sel, _ := chainsel.SelectorFromChainId(evmChainID) + assert.Contains(t, addrs[sel], chain.TokenAdminRegistry.String()) + } +} diff --git a/core/capabilities/ccip/deployment/state.go b/core/capabilities/ccip/deployment/state.go new file mode 100644 index 0000000000..ca5f1a3c20 --- /dev/null +++ b/core/capabilities/ccip/deployment/state.go @@ -0,0 +1,153 @@ +package deployment + +import ( + "fmt" + + "github.com/ethereum/go-ethereum/common" + "github.com/pkg/errors" + chainsel "github.com/smartcontractkit/chain-selectors" + + "github.com/smartcontractkit/chainlink/v2/core/environment" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/arm_proxy_contract" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_offramp" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_onramp" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/nonce_manager" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/price_registry" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/token_admin_registry" + type_and_version "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/type_and_version_interface_wrapper" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/keystone/generated/capabilities_registry" +) + +// Onchain state always derivable from an address book. +// Offchain state always derivable from a list of nodeIds. +// Note can translate this into Go struct needed for MCMS/Docs/UI. +type CCIPOnChainState struct { + // Populated go bindings for the appropriate version for all contracts. + // We would hold 2 versions of each contract here. Once we upgrade we can phase out the old one. + // When generating bindings, make sure the package name corresponds to the version. + EvmOnRampsV160 map[uint64]*evm_2_evm_multi_onramp.EVM2EVMMultiOnRamp + EvmOffRampsV160 map[uint64]*evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp + PriceRegistries map[uint64]*price_registry.PriceRegistry + ArmProxies map[uint64]*arm_proxy_contract.ARMProxyContract + NonceManagers map[uint64]*nonce_manager.NonceManager + TokenAdminRegistries map[uint64]*token_admin_registry.TokenAdminRegistry + Routers map[uint64]*router.Router + + // Only lives on the home chain. + CapabilityRegistry *capabilities_registry.CapabilitiesRegistry +} + +type CCIPSnapShot struct { + Chains map[string]Chain `json:"chains"` +} + +type Chain struct { + TokenAdminRegistry common.Address `json:"tokenAdminRegistry"` + TokenAdminRegistryTokens []common.Address `json:"tokenAdminRegistryTokens"` +} + +func (s CCIPOnChainState) Snapshot(chains []uint64) (CCIPSnapShot, error) { + snapshot := CCIPSnapShot{ + Chains: make(map[string]Chain), + } + for _, chainSelector := range chains { + chainid, _ := chainsel.ChainIdFromSelector(chainSelector) + chainName, _ := chainsel.NameFromChainId(chainid) + var c Chain + if ta, ok := s.TokenAdminRegistries[chainSelector]; ok { + tokens, err := ta.GetAllConfiguredTokens(nil, 0, 10) + if err != nil { + return snapshot, err + } + c.TokenAdminRegistry = ta.Address() + c.TokenAdminRegistryTokens = tokens + } + snapshot.Chains[chainName] = c + } + return snapshot, nil +} + +func GenerateOnchainState(e environment.Environment) (CCIPOnChainState, error) { + state := CCIPOnChainState{ + EvmOnRampsV160: make(map[uint64]*evm_2_evm_multi_onramp.EVM2EVMMultiOnRamp), + EvmOffRampsV160: make(map[uint64]*evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp), + PriceRegistries: make(map[uint64]*price_registry.PriceRegistry), + ArmProxies: make(map[uint64]*arm_proxy_contract.ARMProxyContract), + NonceManagers: make(map[uint64]*nonce_manager.NonceManager), + TokenAdminRegistries: make(map[uint64]*token_admin_registry.TokenAdminRegistry), + Routers: make(map[uint64]*router.Router), + } + // Get all the onchain state + addresses, err := e.AddressBook.Addresses() + if err != nil { + return state, errors.Wrap(err, "could not get addresses") + } + for chainSelector, addresses := range addresses { + for address := range addresses { + tv, err := type_and_version.NewTypeAndVersionInterface(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + tvStr, err := tv.TypeAndVersion(nil) + if err != nil { + // TODO: there are some contracts which dont like the link token + // Handle here. + return state, err + } + switch tvStr { + case "CapabilitiesRegistry 1.0.0": + cr, err := capabilities_registry.NewCapabilitiesRegistry(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.CapabilityRegistry = cr + case "EVM2EVMMultiOnRamp 1.6.0-dev": + onRamp, err := evm_2_evm_multi_onramp.NewEVM2EVMMultiOnRamp(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.EvmOnRampsV160[chainSelector] = onRamp + case "EVM2EVMMultiOffRamp 1.6.0-dev": + offRamp, err := evm_2_evm_multi_offramp.NewEVM2EVMMultiOffRamp(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.EvmOffRampsV160[chainSelector] = offRamp + case "ARMProxy 1.0.0": + armProxy, err := arm_proxy_contract.NewARMProxyContract(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.ArmProxies[chainSelector] = armProxy + case "NonceManager 1.6.0-dev": + nm, err := nonce_manager.NewNonceManager(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.NonceManagers[chainSelector] = nm + case "TokenAdminRegistry 1.5.0-dev": + tm, err := token_admin_registry.NewTokenAdminRegistry(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.TokenAdminRegistries[chainSelector] = tm + case "Router 1.2.0": + r, err := router.NewRouter(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.Routers[chainSelector] = r + case "PriceRegistry 1.6.0-dev": + pr, err := price_registry.NewPriceRegistry(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.PriceRegistries[chainSelector] = pr + default: + return state, fmt.Errorf("unknown contract %s", tvStr) + } + } + } + return state, nil +} diff --git a/core/environment/environment.go b/core/environment/environment.go new file mode 100644 index 0000000000..349c8108c7 --- /dev/null +++ b/core/environment/environment.go @@ -0,0 +1,100 @@ +package environment + +import ( + "context" + "testing" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/hashicorp/consul/sdk/freeport" + chainsel "github.com/smartcontractkit/chain-selectors" + "github.com/stretchr/testify/require" + "go.uber.org/zap/zapcore" + + "github.com/smartcontractkit/chainlink-common/pkg/logger" + "github.com/smartcontractkit/chainlink/v2/core/environment/memory" +) + +type AddressBook interface { + Save(chainSelector uint64, address string) error + Addresses() (map[uint64]map[string]struct{}, error) +} + +type OnchainClient interface { + // For EVM specifically we can use existing geth interface + // to abstract chain clients. + bind.ContractBackend +} + +type OffchainClient interface { + // The job distributor grpc interface can be used to abstract offchain read/writes + ProposeJob(ctx context.Context, nodeId string, spec string) (int64, error) + GetJob(ctx context.Context, nodeId string, jobID int64) (string, error) +} + +type Chain struct { + // Selectors used as canonical chain identifier. + Selector uint64 + Client OnchainClient + // Note the Sign function can be abstract supporting a variety of key storage mechanisms (e.g. KMS etc). + DeployerKey *bind.TransactOpts + Confirm func(tx common.Hash) error +} + +type Environment struct { + Chains map[uint64]Chain + NodeIds []string + AddressBook AddressBook + Offchain OffchainClient + Logger logger.Logger +} + +func (e Environment) AllChainSelectors() []uint64 { + var selectors []uint64 + for sel := range e.Chains { + selectors = append(selectors, sel) + } + return selectors +} + +type MemoryEnvironmentConfig struct { + Chains int + Nodes int +} + +// To be used by tests and any kind of deployment logic. +func NewMemoryEnvironment(t *testing.T, config MemoryEnvironmentConfig) Environment { + mchains := memory.GenerateChains(t, config.Chains) + chains := make(map[uint64]Chain) + for cid, chain := range mchains { + sel, err := chainsel.SelectorFromChainId(cid) + require.NoError(t, err) + chains[sel] = Chain{ + Selector: sel, + Client: chain.Backend, + DeployerKey: chain.DeployerKey, + Confirm: func(tx common.Hash) error { + chain.Backend.Commit() + return nil + }, + } + } + + nodesByPeerID := make(map[string]memory.Node) + var keys []string + ports := freeport.GetN(t, config.Nodes) + for i := 0; i < config.Nodes; i++ { + node := memory.NewNode(t, ports[i], mchains, zapcore.DebugLevel) + nodesByPeerID[node.Keys.PeerID.String()] = *node + keys = append(keys, node.Keys.PeerID.String()) + } + lggr, err := logger.New() + require.NoError(t, err) + return Environment{ + Offchain: memory.NewMemoryJobClient(nodesByPeerID), + Chains: chains, + NodeIds: keys, + AddressBook: memory.NewMemoryAddressBook(), + Logger: lggr, + } +} diff --git a/core/environment/memory/address_book.go b/core/environment/memory/address_book.go new file mode 100644 index 0000000000..771fa304ab --- /dev/null +++ b/core/environment/memory/address_book.go @@ -0,0 +1,25 @@ +package memory + +type AddressBook struct { + AddressesByChain map[uint64]map[string]struct{} +} + +func (m *AddressBook) Save(chainSelector uint64, address string) error { + if _, exists := m.AddressesByChain[chainSelector]; !exists { + m.AddressesByChain[chainSelector] = make(map[string]struct{}) + } else { + // Error? + } + m.AddressesByChain[chainSelector][address] = struct{}{} + return nil +} + +func (m *AddressBook) Addresses() (map[uint64]map[string]struct{}, error) { + return m.AddressesByChain, nil +} + +func NewMemoryAddressBook() *AddressBook { + return &AddressBook{ + AddressesByChain: make(map[uint64]map[string]struct{}), + } +} diff --git a/core/environment/memory/chain.go b/core/environment/memory/chain.go new file mode 100644 index 0000000000..f36ec57ea9 --- /dev/null +++ b/core/environment/memory/chain.go @@ -0,0 +1,54 @@ +package memory + +import ( + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core" + gethtypes "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/params" + chainsel "github.com/smartcontractkit/chain-selectors" + "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" + "github.com/stretchr/testify/require" + "math/big" + "testing" +) + +type EVMChain struct { + Backend *backends.SimulatedBackend + DeployerKey *bind.TransactOpts +} + +func fundAddress(t *testing.T, from *bind.TransactOpts, to common.Address, amount *big.Int, backend *backends.SimulatedBackend) { + nonce, err := backend.PendingNonceAt(testutils.Context(t), from.From) + require.NoError(t, err) + gp, err := backend.SuggestGasPrice(testutils.Context(t)) + require.NoError(t, err) + rawTx := gethtypes.NewTx(&gethtypes.LegacyTx{ + Nonce: nonce, + GasPrice: gp, + Gas: 21000, + To: &to, + Value: amount, + }) + signedTx, err := from.Signer(from.From, rawTx) + require.NoError(t, err) + err = backend.SendTransaction(testutils.Context(t), signedTx) + require.NoError(t, err) + backend.Commit() +} + +func GenerateChains(t *testing.T, numChains int) map[uint64]EVMChain { + chains := make(map[uint64]EVMChain) + for i := 0; i < numChains; i++ { + chainID := chainsel.TEST_90000001.EvmChainID + uint64(i) + owner := testutils.MustNewSimTransactor(t) + backend := backends.NewSimulatedBackend(core.GenesisAlloc{ + owner.From: {Balance: big.NewInt(0).Mul(big.NewInt(100), big.NewInt(params.Ether))}}, 10000000) + chains[chainID] = EVMChain{ + Backend: backend, + DeployerKey: owner, + } + } + return chains +} diff --git a/core/environment/memory/job_client.go b/core/environment/memory/job_client.go new file mode 100644 index 0000000000..5422d2b2d2 --- /dev/null +++ b/core/environment/memory/job_client.go @@ -0,0 +1,37 @@ +package memory + +import ( + "context" + + "github.com/google/uuid" + + "github.com/smartcontractkit/chainlink/v2/core/services/feeds" +) + +type JobClient struct { + Nodes map[string]Node +} + +func NewMemoryJobClient(nodesByPeerID map[string]Node) *JobClient { + return &JobClient{nodesByPeerID} +} + +// TODO: Use interface once ready. +func (m JobClient) ProposeJob(ctx context.Context, nodeId string, spec string) (int64, error) { + jobProposalID, err := m.Nodes[nodeId].App.GetFeedsService().ProposeJob(ctx, &feeds.ProposeJobArgs{ + FeedsManagerID: 0, + RemoteUUID: uuid.New(), + Multiaddrs: nil, + Version: 0, + Spec: spec, + }) + return jobProposalID, err +} + +func (m JobClient) GetJob(ctx context.Context, nodeId string, jobID int64) (string, error) { + jobProposal, err := m.Nodes[nodeId].App.GetFeedsService().GetSpec(ctx, jobID) + if err != nil { + return "", err + } + return jobProposal.Definition, nil +} diff --git a/core/environment/memory/node.go b/core/environment/memory/node.go new file mode 100644 index 0000000000..dc3f53d110 --- /dev/null +++ b/core/environment/memory/node.go @@ -0,0 +1,242 @@ +package memory + +import ( + "context" + "fmt" + "github.com/ethereum/go-ethereum/common" + gethtypes "github.com/ethereum/go-ethereum/core/types" + "github.com/smartcontractkit/chainlink-common/pkg/config" + "github.com/smartcontractkit/chainlink-common/pkg/loop" + "github.com/smartcontractkit/chainlink-common/pkg/utils/mailbox" + "github.com/smartcontractkit/chainlink/v2/core/chains/evm/assets" + "github.com/smartcontractkit/chainlink/v2/core/chains/evm/client" + v2toml "github.com/smartcontractkit/chainlink/v2/core/chains/evm/config/toml" + evmutils "github.com/smartcontractkit/chainlink/v2/core/chains/evm/utils/big" + "github.com/smartcontractkit/chainlink/v2/core/chains/legacyevm" + configv2 "github.com/smartcontractkit/chainlink/v2/core/config/toml" + "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" + "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" + "github.com/smartcontractkit/chainlink/v2/core/logger" + "github.com/smartcontractkit/chainlink/v2/core/logger/audit" + "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" + "github.com/smartcontractkit/chainlink/v2/core/services/keystore" + "github.com/smartcontractkit/chainlink/v2/core/services/keystore/chaintype" + "github.com/smartcontractkit/chainlink/v2/core/services/keystore/keys/ocr2key" + "github.com/smartcontractkit/chainlink/v2/core/services/keystore/keys/p2pkey" + "github.com/smartcontractkit/chainlink/v2/core/utils" + "github.com/smartcontractkit/chainlink/v2/plugins" + "github.com/stretchr/testify/require" + "go.uber.org/zap/zapcore" + "math/big" + "net/http" + "testing" + "time" +) + +type Node struct { + App chainlink.Application + // Transmitter key/OCR keys for this node + Keys Keys +} + +// Creates a CL node which is: +// - Configured for OCR +// - Configured for the chains specified +// - Transmitter keys funded. +func NewNode( + t *testing.T, + port int, // Port for the P2P V2 listener. + chains map[uint64]EVMChain, + logLevel zapcore.Level, +) *Node { + // Do not want to load fixtures as they contain a dummy chainID. + // Create database and initial configuration. + cfg, db := heavyweight.FullTestDBNoFixturesV2(t, func(c *chainlink.Config, s *chainlink.Secrets) { + c.Insecure.OCRDevelopmentMode = ptr(true) // Disables ocr spec validation so we can have fast polling for the test. + + c.Feature.LogPoller = ptr(true) + + // P2P V2 configs. + c.P2P.V2.Enabled = ptr(true) + c.P2P.V2.DeltaDial = config.MustNewDuration(500 * time.Millisecond) + c.P2P.V2.DeltaReconcile = config.MustNewDuration(5 * time.Second) + c.P2P.V2.ListenAddresses = &[]string{fmt.Sprintf("127.0.0.1:%d", port)} + + // OCR configs + c.OCR.Enabled = ptr(false) + c.OCR.DefaultTransactionQueueDepth = ptr(uint32(200)) + c.OCR2.Enabled = ptr(true) + c.OCR2.ContractPollInterval = config.MustNewDuration(5 * time.Second) + + c.Log.Level = ptr(configv2.LogLevel(logLevel)) + + var chainConfigs v2toml.EVMConfigs + for chainID := range chains { + chainConfigs = append(chainConfigs, createConfigV2Chain(chainID)) + } + c.EVM = chainConfigs + }) + + // Set logging. + lggr := logger.TestLogger(t) + lggr.SetLogLevel(logLevel) + + // Create clients for the core node backed by sim. + clients := make(map[uint64]client.Client) + for chainID, chain := range chains { + clients[chainID] = client.NewSimulatedBackendClient(t, chain.Backend, big.NewInt(int64(chainID))) + } + + // Create keystore + master := keystore.New(db, utils.FastScryptParams, lggr) + kStore := KeystoreSim{ + eks: &EthKeystoreSim{ + Eth: master.Eth(), + }, + csa: master.CSA(), + } + + // Build evm factory using clients + keystore. + mailMon := mailbox.NewMonitor("ccip", lggr.Named("mailbox")) + evmOpts := chainlink.EVMFactoryConfig{ + ChainOpts: legacyevm.ChainOpts{ + AppConfig: cfg, + GenEthClient: func(i *big.Int) client.Client { + t.Log("genning eth client for chain id:", i.String()) + client, ok := clients[i.Uint64()] + if !ok { + t.Fatal("no backend for chainID", i) + } + return client + }, + MailMon: mailMon, + DS: db, + }, + CSAETHKeystore: kStore, + } + + // Build relayer factory with EVM. + relayerFactory := chainlink.RelayerFactory{ + Logger: lggr, + LoopRegistry: plugins.NewLoopRegistry(lggr.Named("LoopRegistry"), cfg.Tracing()), + GRPCOpts: loop.GRPCOpts{}, + } + initOps := []chainlink.CoreRelayerChainInitFunc{chainlink.InitEVM(testutils.Context(t), relayerFactory, evmOpts)} + rci, err := chainlink.NewCoreRelayerChainInteroperators(initOps...) + require.NoError(t, err) + + app, err := chainlink.NewApplication(chainlink.ApplicationOpts{ + Config: cfg, + DS: db, + KeyStore: master, + RelayerChainInteroperators: rci, + Logger: lggr, + ExternalInitiatorManager: nil, + CloseLogger: lggr.Sync, + UnrestrictedHTTPClient: &http.Client{}, + RestrictedHTTPClient: &http.Client{}, + AuditLogger: audit.NoopLogger, + MailMon: mailMon, + LoopRegistry: plugins.NewLoopRegistry(lggr, cfg.Tracing()), + }) + t.Cleanup(func() { + require.NoError(t, db.Close()) + }) + keys := CreateKeys(t, app, chains) + + return &Node{ + App: app, + Keys: keys, + } +} + +type Keys struct { + PeerID p2pkey.PeerID + Transmitters map[uint64]common.Address + OCRKeyBundle ocr2key.KeyBundle +} + +func CreateKeys(t *testing.T, + app chainlink.Application, chains map[uint64]EVMChain) Keys { + ctx := testutils.Context(t) + require.NoError(t, app.GetKeyStore().Unlock(ctx, "password")) + _, err := app.GetKeyStore().P2P().Create(ctx) + require.NoError(t, err) + + p2pIDs, err := app.GetKeyStore().P2P().GetAll() + require.NoError(t, err) + require.Len(t, p2pIDs, 1) + peerID := p2pIDs[0].PeerID() + // create a transmitter for each chain + transmitters := make(map[uint64]common.Address) + for chainID, chain := range chains { + cid := big.NewInt(int64(chainID)) + addrs, err2 := app.GetKeyStore().Eth().EnabledAddressesForChain(testutils.Context(t), cid) + require.NoError(t, err2) + if len(addrs) == 1 { + // just fund the address + fundAddress(t, chain.DeployerKey, addrs[0], assets.Ether(10).ToInt(), chain.Backend) + transmitters[chainID] = addrs[0] + } else { + // create key and fund it + _, err3 := app.GetKeyStore().Eth().Create(testutils.Context(t), cid) + require.NoError(t, err3, "failed to create key for chain", chainID) + sendingKeys, err3 := app.GetKeyStore().Eth().EnabledAddressesForChain(testutils.Context(t), cid) + require.NoError(t, err3) + require.Len(t, sendingKeys, 1) + fundAddress(t, chain.DeployerKey, sendingKeys[0], assets.Ether(10).ToInt(), chain.Backend) + transmitters[chainID] = sendingKeys[0] + } + } + require.Len(t, transmitters, len(chains)) + + keybundle, err := app.GetKeyStore().OCR2().Create(ctx, chaintype.EVM) + require.NoError(t, err) + return Keys{ + PeerID: peerID, + Transmitters: transmitters, + OCRKeyBundle: keybundle, + } +} + +func createConfigV2Chain(chainID uint64) *v2toml.EVMConfig { + chainIDBig := evmutils.NewI(int64(chainID)) + chain := v2toml.Defaults(chainIDBig) + chain.GasEstimator.LimitDefault = ptr(uint64(5e6)) + chain.LogPollInterval = config.MustNewDuration(100 * time.Millisecond) + chain.Transactions.ForwardersEnabled = ptr(false) + chain.FinalityDepth = ptr(uint32(2)) + return &v2toml.EVMConfig{ + ChainID: chainIDBig, + Enabled: ptr(true), + Chain: chain, + Nodes: v2toml.EVMNodes{&v2toml.Node{}}, + } +} + +func ptr[T any](v T) *T { return &v } + +var _ keystore.Eth = &EthKeystoreSim{} + +type EthKeystoreSim struct { + keystore.Eth +} + +// override +func (e *EthKeystoreSim) SignTx(ctx context.Context, address common.Address, tx *gethtypes.Transaction, chainID *big.Int) (*gethtypes.Transaction, error) { + // always sign with chain id 1337 for the simulated backend + return e.Eth.SignTx(ctx, address, tx, big.NewInt(1337)) +} + +type KeystoreSim struct { + eks keystore.Eth + csa keystore.CSA +} + +func (e KeystoreSim) Eth() keystore.Eth { + return e.eks +} + +func (e KeystoreSim) CSA() keystore.CSA { + return e.csa +} diff --git a/core/environment/memory/node_test.go b/core/environment/memory/node_test.go new file mode 100644 index 0000000000..c8daaacf10 --- /dev/null +++ b/core/environment/memory/node_test.go @@ -0,0 +1,23 @@ +package memory + +import ( + "github.com/hashicorp/consul/sdk/freeport" + "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" + "github.com/stretchr/testify/require" + "go.uber.org/zap/zapcore" + "testing" +) + +func TestNode(t *testing.T) { + chains := GenerateChains(t, 3) + ports := freeport.GetN(t, 1) + node := NewNode(t, ports[0], chains, zapcore.DebugLevel) + // We expect 3 transmitter keys + keys, err := node.App.GetKeyStore().Eth().GetAll(testutils.Context(t)) + require.NoError(t, err) + require.Len(t, keys, 3) + // We expect 3 chains supported + evmChains := node.App.GetRelayers().LegacyEVMChains().Slice() + require.NoError(t, err) + require.Len(t, evmChains, 3) +} diff --git a/core/environment/persistent/address_book.go b/core/environment/persistent/address_book.go new file mode 100644 index 0000000000..2b551393d3 --- /dev/null +++ b/core/environment/persistent/address_book.go @@ -0,0 +1,94 @@ +package persistent + +import ( + "encoding/json" + "fmt" + "github.com/pkg/errors" + "io/ioutil" + "os" + "sync" +) + +type AddressBook struct { + filePath string + mu sync.Mutex +} + +// Save stores an address in the address book. +func (m *AddressBook) Save(chainSelector uint64, address string) error { + m.mu.Lock() + defer m.mu.Unlock() + + addressesByChain, err := m.loadFromFile() + if err != nil { + return err + } + + if _, exists := addressesByChain[chainSelector]; !exists { + addressesByChain[chainSelector] = make(map[string]struct{}) + } + addressesByChain[chainSelector][address] = struct{}{} + + return m.saveToFile(addressesByChain) +} + +// Addresses returns all addresses. +func (m *AddressBook) Addresses() (map[uint64]map[string]struct{}, error) { + m.mu.Lock() + defer m.mu.Unlock() + return m.loadFromFile() +} + +// saveToFile writes the address book to the file. +func (m *AddressBook) saveToFile(addressesByChain map[uint64]map[string]struct{}) error { + // Make json friendly + addressLists := make(map[uint64][]string) + for chain, addressMp := range addressesByChain { + for addr := range addressMp { + addressLists[chain] = append(addressLists[chain], addr) + } + } + data, err := json.Marshal(addressLists) + if err != nil { + return err + } + return ioutil.WriteFile(m.filePath, data, 0644) +} + +// loadFromFile loads the address book from the file. +func (m *AddressBook) loadFromFile() (map[uint64]map[string]struct{}, error) { + file, err := os.Open(m.filePath) + if err != nil { + if errors.Is(err, os.ErrNotExist) { + return make(map[uint64]map[string]struct{}), err + } + return nil, err + } + defer file.Close() + + data, err := ioutil.ReadAll(file) + if err != nil { + return nil, err + } + + addressLists := make(map[uint64][]string) + err = json.Unmarshal(data, &addressLists) + if err != nil { + return nil, errors.Wrap(err, fmt.Sprintf("failed to unmarshal address book %s %s", m.filePath, data)) + } + addressesByChain := make(map[uint64]map[string]struct{}) + for chain, addresses := range addressLists { + addressesByChain[chain] = make(map[string]struct{}) + for _, address := range addresses { + addressesByChain[chain][address] = struct{}{} + } + } + return addressesByChain, nil +} + +// NewFileBackedAddressBook creates a new AddressBook with file storage. +func NewAddressBook(filePath string) *AddressBook { + return &AddressBook{ + filePath: filePath, + } +} diff --git a/core/environment/persistent/address_book_test.go b/core/environment/persistent/address_book_test.go new file mode 100644 index 0000000000..94cf960ec2 --- /dev/null +++ b/core/environment/persistent/address_book_test.go @@ -0,0 +1,44 @@ +package persistent + +import ( + "github.com/stretchr/testify/require" + "gotest.tools/v3/assert" + "os" + "testing" +) + +func TestAddressBook(t *testing.T) { + fn := "blah.json" + _, err := os.Create(fn) + require.NoError(t, err) + os.WriteFile(fn, []byte("{}"), 0644) + defer func() { + require.NoError(t, os.Remove(fn)) + }() + + a := NewAddressBook(fn) + addrs, err := a.Addresses() + require.NoError(t, err) + require.Equal(t, 0, len(addrs)) + + err = a.Save(1, "0x1") + addrs, err = a.Addresses() + require.NoError(t, err) + assert.DeepEqual(t, map[uint64]map[string]struct{}{1: {"0x1": {}}}, addrs) + + err = a.Save(1, "0x2") + addrs, err = a.Addresses() + require.NoError(t, err) + assert.DeepEqual(t, map[uint64]map[string]struct{}{ + 1: {"0x1": {}, "0x2": {}}, + }, addrs) + + // TODO: Maybe prevent chain collisions? + err = a.Save(2, "0x2") + addrs, err = a.Addresses() + require.NoError(t, err) + assert.DeepEqual(t, map[uint64]map[string]struct{}{ + 1: {"0x1": {}, "0x2": {}}, + 2: {"0x2": {}}, + }, addrs) +} From 75916f8f3d4356a72e7383753379d97066252371 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 1 Aug 2024 18:24:55 -0400 Subject: [PATCH 02/42] Start on more contracts --- core/capabilities/ccip/deployment/deploy.go | 99 +++++++++++++++++---- core/capabilities/ccip/deployment/state.go | 10 ++- core/environment/environment.go | 1 + 3 files changed, 88 insertions(+), 22 deletions(-) diff --git a/core/capabilities/ccip/deployment/deploy.go b/core/capabilities/ccip/deployment/deploy.go index 398f2599c6..2a0fa05aa5 100644 --- a/core/capabilities/ccip/deployment/deploy.go +++ b/core/capabilities/ccip/deployment/deploy.go @@ -5,54 +5,117 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/logger" "github.com/smartcontractkit/chainlink/v2/core/environment" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/arm_proxy_contract" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/mock_arm_contract" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/token_admin_registry" ) // TODO: pull up to environment pkg func deployContract( lggr logger.Logger, - deploy func() (string, common.Hash, error), + deploy func() (common.Address, common.Hash, error), confirm func(common.Hash) error, - save func(string) error, -) error { + save func(address common.Address) error, +) (common.Address, error) { contractAddr, tx, err := deploy() if err != nil { lggr.Errorw("Failed to deploy contract", "err", err) - return err + return common.Address{}, err } err = confirm(tx) if err != nil { lggr.Errorw("Failed to confirm deployment", "err", err) - return err + return common.Address{}, err } err = save(contractAddr) if err != nil { lggr.Errorw("Failed to save contract address", "err", err) - return err + return common.Address{}, err } - return nil + return contractAddr, nil } +// TODO: Likely we'll want to further parameterize the deployment +// For example a list of contracts to skip deploying if they already exist. +// Or mock vs real RMN. func DeployCCIPContracts(e environment.Environment) error { for _, chain := range e.Chains { - // For example deploy token admin registry to all chains - // And save the address - err := deployContract(e.Logger, - func() (string, common.Hash, error) { + saveToChain := func(addr common.Address) error { + return e.AddressBook.Save(chain.Selector, addr.String()) + } + + // TODO: Still waiting for RMNRemote/RMNHome contracts etc. + mockARM, err := deployContract(e.Logger, + func() (common.Address, common.Hash, error) { + mockARM, tx, _, err := mock_arm_contract.DeployMockARMContract( + chain.DeployerKey, + chain.Client, + ) + return mockARM, tx.Hash(), err + }, chain.Confirm, saveToChain) + if err != nil { + e.Logger.Errorw("Failed to deploy mockARM", "err", err) + return err + } + e.Logger.Infow("deployed mockARM", "addr", mockARM) + + armProxy, err := deployContract(e.Logger, + func() (common.Address, common.Hash, error) { + mockARM, tx, _, err := arm_proxy_contract.DeployARMProxyContract( + chain.DeployerKey, + chain.Client, + mockARM, + ) + return mockARM, tx.Hash(), err + }, chain.Confirm, saveToChain) + if err != nil { + e.Logger.Errorw("Failed to deploy armProxy", "err", err) + return err + } + e.Logger.Infow("deployed armProxy", "addr", armProxy) + + //weth9, err := deployContract(e.Logger, + // func() (common.Address, common.Hash, error) { + // weth9, tx, _, err := weth9.DeployWETH9( + // chain.DeployerKey, + // chain.Client, + // ) + // return weth9, tx.Hash(), err + // }, chain.Confirm, saveToChain) + //if err != nil { + // e.Logger.Errorw("Failed to deploy weth9", "err", err) + // return err + //} + + routerAddr, err := deployContract(e.Logger, + func() (common.Address, common.Hash, error) { + router, tx, _, err := router.DeployRouter( + chain.DeployerKey, + chain.Client, + common.HexToAddress("0x0"), + armProxy, + ) + return router, tx.Hash(), err + }, chain.Confirm, saveToChain) + if err != nil { + e.Logger.Errorw("Failed to deploy router", "err", err) + return err + } + e.Logger.Infow("deployed router", "addr", routerAddr) + + tokenAdminRegistry, err := deployContract(e.Logger, + func() (common.Address, common.Hash, error) { tokenAdminRegistry, tx, _, err := token_admin_registry.DeployTokenAdminRegistry( chain.DeployerKey, chain.Client) - return tokenAdminRegistry.String(), tx.Hash(), err - }, - chain.Confirm, - func(addr string) error { - return e.AddressBook.Save(chain.Selector, addr) - }, - ) + return tokenAdminRegistry, tx.Hash(), err + }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy token admin registry", "err", err) return err } + e.Logger.Infow("deployed tokenAdminRegistry", "addr", tokenAdminRegistry) } return nil } diff --git a/core/capabilities/ccip/deployment/state.go b/core/capabilities/ccip/deployment/state.go index ca5f1a3c20..8fe98fcdfe 100644 --- a/core/capabilities/ccip/deployment/state.go +++ b/core/capabilities/ccip/deployment/state.go @@ -15,6 +15,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/price_registry" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/token_admin_registry" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/weth9" type_and_version "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/type_and_version_interface_wrapper" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/keystone/generated/capabilities_registry" ) @@ -33,6 +34,7 @@ type CCIPOnChainState struct { NonceManagers map[uint64]*nonce_manager.NonceManager TokenAdminRegistries map[uint64]*token_admin_registry.TokenAdminRegistry Routers map[uint64]*router.Router + Weth9s map[uint64]*weth9.WETH9 // Only lives on the home chain. CapabilityRegistry *capabilities_registry.CapabilitiesRegistry @@ -77,6 +79,7 @@ func GenerateOnchainState(e environment.Environment) (CCIPOnChainState, error) { NonceManagers: make(map[uint64]*nonce_manager.NonceManager), TokenAdminRegistries: make(map[uint64]*token_admin_registry.TokenAdminRegistry), Routers: make(map[uint64]*router.Router), + Weth9s: make(map[uint64]*weth9.WETH9), } // Get all the onchain state addresses, err := e.AddressBook.Addresses() @@ -87,13 +90,12 @@ func GenerateOnchainState(e environment.Environment) (CCIPOnChainState, error) { for address := range addresses { tv, err := type_and_version.NewTypeAndVersionInterface(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { - return state, err + return state, errors.Wrap(err, "could not create tv interface") } tvStr, err := tv.TypeAndVersion(nil) if err != nil { - // TODO: there are some contracts which dont like the link token - // Handle here. - return state, err + // TODO: there are some contracts which dont like the link token/weth9 + return state, errors.Wrap(err, fmt.Sprintf("could not call tv version, does the contract %s implement it?", address)) } switch tvStr { case "CapabilitiesRegistry 1.0.0": diff --git a/core/environment/environment.go b/core/environment/environment.go index 349c8108c7..686face2ff 100644 --- a/core/environment/environment.go +++ b/core/environment/environment.go @@ -16,6 +16,7 @@ import ( ) type AddressBook interface { + // TODO: Need manualTV override Save(chainSelector uint64, address string) error Addresses() (map[uint64]map[string]struct{}, error) } From 5c38c8354268cf0b1e1c94dc9039e73f24032ed3 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Tue, 6 Aug 2024 14:46:50 -0400 Subject: [PATCH 03/42] Solana sanity check --- core/capabilities/ccip/deployment/deploy.go | 21 ++++ .../ccip/deployment/deploy_solana_test.go | 101 ++++++++++++++++++ go.mod | 8 +- go.sum | 1 - 4 files changed, 127 insertions(+), 4 deletions(-) create mode 100644 core/capabilities/ccip/deployment/deploy_solana_test.go diff --git a/core/capabilities/ccip/deployment/deploy.go b/core/capabilities/ccip/deployment/deploy.go index 2a0fa05aa5..a11354e67d 100644 --- a/core/capabilities/ccip/deployment/deploy.go +++ b/core/capabilities/ccip/deployment/deploy.go @@ -11,6 +11,17 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/token_admin_registry" ) +type Proposal struct { +} + +func (p Proposal) String() string { + return "" +} + +func GenerateAcceptOwnershipProposal(e environment.Environment, state CCIPOnChainState) Proposal { + return Proposal{} +} + // TODO: pull up to environment pkg func deployContract( lggr logger.Logger, @@ -36,6 +47,16 @@ func deployContract( return contractAddr, nil } +type CCIPSpec struct{} + +func (s CCIPSpec) String() string { + return "" +} + +func GenerateJobSpecs(capReg common.Address) CCIPSpec { + return CCIPSpec{} +} + // TODO: Likely we'll want to further parameterize the deployment // For example a list of contracts to skip deploying if they already exist. // Or mock vs real RMN. diff --git a/core/capabilities/ccip/deployment/deploy_solana_test.go b/core/capabilities/ccip/deployment/deploy_solana_test.go new file mode 100644 index 0000000000..fb74f581b7 --- /dev/null +++ b/core/capabilities/ccip/deployment/deploy_solana_test.go @@ -0,0 +1,101 @@ +//go:build solana +// +build solana + +package deployment + +import ( + "context" + "fmt" + "testing" + "time" + + "github.com/gagliardetto/solana-go" + "github.com/gagliardetto/solana-go/programs/system" + "github.com/gagliardetto/solana-go/rpc" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func confirmTx(c *rpc.Client, ctx context.Context, sig solana.Signature) error { + var confirmed bool + for i := 0; i < 30; i++ { + block, err := c.GetConfirmedTransactionWithOpts(ctx, sig, &rpc.GetTransactionOpts{ + // Must be finalized for state to actually change. + Commitment: rpc.CommitmentConfirmed, + }) + if err != nil { + fmt.Println(err) + time.Sleep(1 * time.Second) + continue + } + fmt.Println("Confirmed!", block) + confirmed = true + break + } + if !confirmed { + return fmt.Errorf("transaction not confirmed") + } + return nil +} + +func TestSolanaCreateAccount(t *testing.T) { + t.Skip() + // Note that uploading a program is fairly complex: + // 2 options + // - Replicate https://github.com/solana-labs/solana/blob/7409d9d2687fba21078a745842c25df805cdf105/cli/src/program.rs#L2086 + // using solana-go. Not particularly difficult but a little bit of work. + // - Shell out to solana go for deployment. + ctx := context.Background() + + // solana-test-validator + client := rpc.New("http://127.0.0.1:8899") + + // Fund a deployer + deployer := solana.NewWallet() + airdrop, err := client.RequestAirdrop(ctx, deployer.PublicKey(), 10*solana.LAMPORTS_PER_SOL, rpc.CommitmentConfirmed) + require.NoError(t, err) + require.NoError(t, confirmTx(client, ctx, airdrop)) + b, err := client.GetBalance(ctx, deployer.PublicKey(), rpc.CommitmentFinalized) + require.NoError(t, err) + assert.Equal(t, 10*solana.LAMPORTS_PER_SOL, b.Value) + + // Create + programAccount := solana.NewWallet() + createInst, err := system.NewCreateAccountInstruction( + solana.LAMPORTS_PER_SOL, // If you don't fund the account it won't exist + 9, + solana.SystemProgramID, + deployer.PublicKey(), + programAccount.PublicKey()).ValidateAndBuild() + require.NoError(t, err) + + bh, err := client.GetRecentBlockhash(ctx, rpc.CommitmentFinalized) + require.NoError(t, err) + programAccountTx, err := solana.NewTransaction( + []solana.Instruction{ + createInst, // Create the program account + }, + bh.Value.Blockhash, + ) + require.NoError(t, err) + fmt.Println(programAccountTx) + sig, err := programAccountTx.Sign(func(key solana.PublicKey) *solana.PrivateKey { + if key.Equals(deployer.PublicKey()) { + return &deployer.PrivateKey + } else if key.Equals(programAccount.PublicKey()) { + return &programAccount.PrivateKey + } + panic("unauthorized sign") + }) + require.NoError(t, err) + programAccountTx.Signatures = sig + require.NoError(t, programAccountTx.VerifySignatures()) + txSig, err := client.SendTransaction(ctx, programAccountTx) + require.NoError(t, err) + fmt.Printf("Program deployment transaction signature: %s\n", txSig.String()) + // Program account will not exist without this + require.NoError(t, confirmTx(client, ctx, txSig)) + acct, err := client.GetAccountInfo(ctx, programAccount.PublicKey()) + require.NoError(t, err) + fmt.Println(acct.Value.Data) +} diff --git a/go.mod b/go.mod index c34c41b1b7..e17d2f58d7 100644 --- a/go.mod +++ b/go.mod @@ -14,13 +14,17 @@ require ( github.com/cometbft/cometbft v0.37.5 github.com/cosmos/cosmos-sdk v0.47.11 github.com/danielkov/gin-helmet v0.0.0-20171108135313-1387e224435e + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/deckarep/golang-set/v2 v2.6.0 github.com/dominikbraun/graph v0.23.0 github.com/esote/minmaxheap v1.0.0 github.com/ethereum/go-ethereum v1.13.8 github.com/fatih/color v1.16.0 github.com/fxamacker/cbor/v2 v2.5.0 + github.com/gagliardetto/binary v0.7.7 + github.com/gagliardetto/gofuzz v1.2.2 github.com/gagliardetto/solana-go v1.8.4 + github.com/gagliardetto/treeout v0.1.4 github.com/getsentry/sentry-go v0.23.0 github.com/gin-contrib/cors v1.5.0 github.com/gin-contrib/expvar v0.0.1 @@ -116,6 +120,7 @@ require ( google.golang.org/protobuf v1.34.2 gopkg.in/guregu/null.v4 v4.0.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 + gotest.tools/v3 v3.5.1 k8s.io/utils v0.0.0-20230711102312-30195339c3c7 ) @@ -181,7 +186,6 @@ require ( github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect github.com/danieljoos/wincred v1.1.2 // indirect - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/dfuse-io/logging v0.0.0-20210109005628-b97a57253f70 // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect @@ -193,8 +197,6 @@ require ( github.com/ethereum/c-kzg-4844 v0.4.0 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.2 // indirect - github.com/gagliardetto/binary v0.7.7 // indirect - github.com/gagliardetto/treeout v0.1.4 // indirect github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813 // indirect diff --git a/go.sum b/go.sum index acb9c8fc1a..d8379e6718 100644 --- a/go.sum +++ b/go.sum @@ -1674,7 +1674,6 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From bfec5730b2d6d628371ff03e0c198cafdd06ed97 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Tue, 6 Aug 2024 17:14:17 -0400 Subject: [PATCH 04/42] More flexible address book --- core/capabilities/ccip/deployment/deploy.go | 21 +++-- .../ccip/deployment/deploy_test.go | 7 +- core/capabilities/ccip/deployment/state.go | 12 ++- core/environment/address_book.go | 47 ++++++++++ core/environment/address_book_test.go | 1 + core/environment/environment.go | 28 +++--- core/environment/memory/address_book.go | 25 ----- core/environment/persistent/address_book.go | 94 ------------------- .../persistent/address_book_test.go | 44 --------- 9 files changed, 89 insertions(+), 190 deletions(-) create mode 100644 core/environment/address_book.go create mode 100644 core/environment/address_book_test.go delete mode 100644 core/environment/memory/address_book.go delete mode 100644 core/environment/persistent/address_book.go delete mode 100644 core/environment/persistent/address_book_test.go diff --git a/core/capabilities/ccip/deployment/deploy.go b/core/capabilities/ccip/deployment/deploy.go index a11354e67d..95b569eca7 100644 --- a/core/capabilities/ccip/deployment/deploy.go +++ b/core/capabilities/ccip/deployment/deploy.go @@ -57,13 +57,20 @@ func GenerateJobSpecs(capReg common.Address) CCIPSpec { return CCIPSpec{} } +type DeployCCIPContractConfig struct { + Weth9s map[uint64]common.Address + // TODO: More params as needed +} + // TODO: Likely we'll want to further parameterize the deployment // For example a list of contracts to skip deploying if they already exist. // Or mock vs real RMN. -func DeployCCIPContracts(e environment.Environment) error { +// Deployment produces an address book of everything it deployed. +func DeployCCIPContracts(e environment.Environment, c DeployCCIPContractConfig) (environment.AddressBook, error) { + ab := environment.NewMemoryAddressBook() for _, chain := range e.Chains { saveToChain := func(addr common.Address) error { - return e.AddressBook.Save(chain.Selector, addr.String()) + return ab.Save(chain.Selector, addr.String()) } // TODO: Still waiting for RMNRemote/RMNHome contracts etc. @@ -77,7 +84,7 @@ func DeployCCIPContracts(e environment.Environment) error { }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy mockARM", "err", err) - return err + return ab, err } e.Logger.Infow("deployed mockARM", "addr", mockARM) @@ -92,7 +99,7 @@ func DeployCCIPContracts(e environment.Environment) error { }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy armProxy", "err", err) - return err + return ab, err } e.Logger.Infow("deployed armProxy", "addr", armProxy) @@ -121,7 +128,7 @@ func DeployCCIPContracts(e environment.Environment) error { }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy router", "err", err) - return err + return ab, err } e.Logger.Infow("deployed router", "addr", routerAddr) @@ -134,9 +141,9 @@ func DeployCCIPContracts(e environment.Environment) error { }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy token admin registry", "err", err) - return err + return ab, err } e.Logger.Infow("deployed tokenAdminRegistry", "addr", tokenAdminRegistry) } - return nil + return ab, nil } diff --git a/core/capabilities/ccip/deployment/deploy_test.go b/core/capabilities/ccip/deployment/deploy_test.go index b2101cd5d4..74c53373ec 100644 --- a/core/capabilities/ccip/deployment/deploy_test.go +++ b/core/capabilities/ccip/deployment/deploy_test.go @@ -16,15 +16,16 @@ func TestDeployCCIPContracts(t *testing.T) { Nodes: 1, }) // Deploy all the CCIP contracts. - require.NoError(t, DeployCCIPContracts(e)) - state, err := GenerateOnchainState(e) + ab, err := DeployCCIPContracts(e, DeployCCIPContractConfig{}) + require.NoError(t, err) + state, err := GenerateOnchainState(e, ab) require.NoError(t, err) snap, err := state.Snapshot(e.AllChainSelectors()) require.NoError(t, err) // Assert expect every deployed address to be in the address book. for name, chain := range snap.Chains { - addrs, err := e.AddressBook.Addresses() + addrs, err := ab.Addresses() require.NoError(t, err) evmChainID, _ := chainsel.ChainIdFromName(name) sel, _ := chainsel.SelectorFromChainId(evmChainID) diff --git a/core/capabilities/ccip/deployment/state.go b/core/capabilities/ccip/deployment/state.go index 8fe98fcdfe..63ab995823 100644 --- a/core/capabilities/ccip/deployment/state.go +++ b/core/capabilities/ccip/deployment/state.go @@ -70,7 +70,15 @@ func (s CCIPOnChainState) Snapshot(chains []uint64) (CCIPSnapShot, error) { return snapshot, nil } -func GenerateOnchainState(e environment.Environment) (CCIPOnChainState, error) { +func SnapshotState(e environment.Environment, ab environment.AddressBook) (CCIPSnapShot, error) { + state, err := GenerateOnchainState(e, ab) + if err != nil { + return CCIPSnapShot{}, err + } + return state.Snapshot(e.AllChainSelectors()) +} + +func GenerateOnchainState(e environment.Environment, ab environment.AddressBook) (CCIPOnChainState, error) { state := CCIPOnChainState{ EvmOnRampsV160: make(map[uint64]*evm_2_evm_multi_onramp.EVM2EVMMultiOnRamp), EvmOffRampsV160: make(map[uint64]*evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp), @@ -82,7 +90,7 @@ func GenerateOnchainState(e environment.Environment) (CCIPOnChainState, error) { Weth9s: make(map[uint64]*weth9.WETH9), } // Get all the onchain state - addresses, err := e.AddressBook.Addresses() + addresses, err := ab.Addresses() if err != nil { return state, errors.Wrap(err, "could not get addresses") } diff --git a/core/environment/address_book.go b/core/environment/address_book.go new file mode 100644 index 0000000000..9ff5e0d9da --- /dev/null +++ b/core/environment/address_book.go @@ -0,0 +1,47 @@ +package environment + +type AddressBook interface { + // TODO: Need manualTV override + Save(chainSelector uint64, address string) error + Addresses() (map[uint64]map[string]struct{}, error) + // Allows for merging address books + Merge(other AddressBook) error +} + +type AddressBookMap struct { + AddressesByChain map[uint64]map[string]struct{} +} + +func (m *AddressBookMap) Save(chainSelector uint64, address string) error { + if _, exists := m.AddressesByChain[chainSelector]; !exists { + m.AddressesByChain[chainSelector] = make(map[string]struct{}) + } else { + // Error? + } + m.AddressesByChain[chainSelector][address] = struct{}{} + return nil +} + +func (m *AddressBookMap) Addresses() (map[uint64]map[string]struct{}, error) { + return m.AddressesByChain, nil +} + +// Attention this will mutate existing book +func (m *AddressBookMap) Merge(ab AddressBook) error { + addresses, err := ab.Addresses() + if err != nil { + return err + } + for chain, chainAddresses := range addresses { + for address := range chainAddresses { + return m.Save(chain, address) + } + } + return nil +} + +func NewMemoryAddressBook() *AddressBookMap { + return &AddressBookMap{ + AddressesByChain: make(map[uint64]map[string]struct{}), + } +} diff --git a/core/environment/address_book_test.go b/core/environment/address_book_test.go new file mode 100644 index 0000000000..f2d9ed195f --- /dev/null +++ b/core/environment/address_book_test.go @@ -0,0 +1 @@ +package environment diff --git a/core/environment/environment.go b/core/environment/environment.go index 686face2ff..a870b39362 100644 --- a/core/environment/environment.go +++ b/core/environment/environment.go @@ -15,11 +15,9 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/environment/memory" ) -type AddressBook interface { - // TODO: Need manualTV override - Save(chainSelector uint64, address string) error - Addresses() (map[uint64]map[string]struct{}, error) -} +const ( + Memory = "memory" +) type OnchainClient interface { // For EVM specifically we can use existing geth interface @@ -43,11 +41,11 @@ type Chain struct { } type Environment struct { - Chains map[uint64]Chain - NodeIds []string - AddressBook AddressBook - Offchain OffchainClient - Logger logger.Logger + Name string + Chains map[uint64]Chain + NodeIds []string + Offchain OffchainClient + Logger logger.Logger } func (e Environment) AllChainSelectors() []uint64 { @@ -92,10 +90,10 @@ func NewMemoryEnvironment(t *testing.T, config MemoryEnvironmentConfig) Environm lggr, err := logger.New() require.NoError(t, err) return Environment{ - Offchain: memory.NewMemoryJobClient(nodesByPeerID), - Chains: chains, - NodeIds: keys, - AddressBook: memory.NewMemoryAddressBook(), - Logger: lggr, + Name: Memory, + Offchain: memory.NewMemoryJobClient(nodesByPeerID), + Chains: chains, + NodeIds: keys, + Logger: lggr, } } diff --git a/core/environment/memory/address_book.go b/core/environment/memory/address_book.go deleted file mode 100644 index 771fa304ab..0000000000 --- a/core/environment/memory/address_book.go +++ /dev/null @@ -1,25 +0,0 @@ -package memory - -type AddressBook struct { - AddressesByChain map[uint64]map[string]struct{} -} - -func (m *AddressBook) Save(chainSelector uint64, address string) error { - if _, exists := m.AddressesByChain[chainSelector]; !exists { - m.AddressesByChain[chainSelector] = make(map[string]struct{}) - } else { - // Error? - } - m.AddressesByChain[chainSelector][address] = struct{}{} - return nil -} - -func (m *AddressBook) Addresses() (map[uint64]map[string]struct{}, error) { - return m.AddressesByChain, nil -} - -func NewMemoryAddressBook() *AddressBook { - return &AddressBook{ - AddressesByChain: make(map[uint64]map[string]struct{}), - } -} diff --git a/core/environment/persistent/address_book.go b/core/environment/persistent/address_book.go deleted file mode 100644 index 2b551393d3..0000000000 --- a/core/environment/persistent/address_book.go +++ /dev/null @@ -1,94 +0,0 @@ -package persistent - -import ( - "encoding/json" - "fmt" - "github.com/pkg/errors" - "io/ioutil" - "os" - "sync" -) - -type AddressBook struct { - filePath string - mu sync.Mutex -} - -// Save stores an address in the address book. -func (m *AddressBook) Save(chainSelector uint64, address string) error { - m.mu.Lock() - defer m.mu.Unlock() - - addressesByChain, err := m.loadFromFile() - if err != nil { - return err - } - - if _, exists := addressesByChain[chainSelector]; !exists { - addressesByChain[chainSelector] = make(map[string]struct{}) - } - addressesByChain[chainSelector][address] = struct{}{} - - return m.saveToFile(addressesByChain) -} - -// Addresses returns all addresses. -func (m *AddressBook) Addresses() (map[uint64]map[string]struct{}, error) { - m.mu.Lock() - defer m.mu.Unlock() - return m.loadFromFile() -} - -// saveToFile writes the address book to the file. -func (m *AddressBook) saveToFile(addressesByChain map[uint64]map[string]struct{}) error { - // Make json friendly - addressLists := make(map[uint64][]string) - for chain, addressMp := range addressesByChain { - for addr := range addressMp { - addressLists[chain] = append(addressLists[chain], addr) - } - } - data, err := json.Marshal(addressLists) - if err != nil { - return err - } - return ioutil.WriteFile(m.filePath, data, 0644) -} - -// loadFromFile loads the address book from the file. -func (m *AddressBook) loadFromFile() (map[uint64]map[string]struct{}, error) { - file, err := os.Open(m.filePath) - if err != nil { - if errors.Is(err, os.ErrNotExist) { - return make(map[uint64]map[string]struct{}), err - } - return nil, err - } - defer file.Close() - - data, err := ioutil.ReadAll(file) - if err != nil { - return nil, err - } - - addressLists := make(map[uint64][]string) - err = json.Unmarshal(data, &addressLists) - if err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("failed to unmarshal address book %s %s", m.filePath, data)) - } - addressesByChain := make(map[uint64]map[string]struct{}) - for chain, addresses := range addressLists { - addressesByChain[chain] = make(map[string]struct{}) - for _, address := range addresses { - addressesByChain[chain][address] = struct{}{} - } - } - return addressesByChain, nil -} - -// NewFileBackedAddressBook creates a new AddressBook with file storage. -func NewAddressBook(filePath string) *AddressBook { - return &AddressBook{ - filePath: filePath, - } -} diff --git a/core/environment/persistent/address_book_test.go b/core/environment/persistent/address_book_test.go deleted file mode 100644 index 94cf960ec2..0000000000 --- a/core/environment/persistent/address_book_test.go +++ /dev/null @@ -1,44 +0,0 @@ -package persistent - -import ( - "github.com/stretchr/testify/require" - "gotest.tools/v3/assert" - "os" - "testing" -) - -func TestAddressBook(t *testing.T) { - fn := "blah.json" - _, err := os.Create(fn) - require.NoError(t, err) - os.WriteFile(fn, []byte("{}"), 0644) - defer func() { - require.NoError(t, os.Remove(fn)) - }() - - a := NewAddressBook(fn) - addrs, err := a.Addresses() - require.NoError(t, err) - require.Equal(t, 0, len(addrs)) - - err = a.Save(1, "0x1") - addrs, err = a.Addresses() - require.NoError(t, err) - assert.DeepEqual(t, map[uint64]map[string]struct{}{1: {"0x1": {}}}, addrs) - - err = a.Save(1, "0x2") - addrs, err = a.Addresses() - require.NoError(t, err) - assert.DeepEqual(t, map[uint64]map[string]struct{}{ - 1: {"0x1": {}, "0x2": {}}, - }, addrs) - - // TODO: Maybe prevent chain collisions? - err = a.Save(2, "0x2") - addrs, err = a.Addresses() - require.NoError(t, err) - assert.DeepEqual(t, map[uint64]map[string]struct{}{ - 1: {"0x1": {}, "0x2": {}}, - 2: {"0x2": {}}, - }, addrs) -} From 4d7eae62d6eaa955eb00099cbb82f3e1fa80c022 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Wed, 7 Aug 2024 18:59:50 -0400 Subject: [PATCH 05/42] Some renaming, pull migrations closer to code --- core/capabilities/ccip/deployment/deploy.go | 92 ++++++++++--------- .../ccip/deployment/deploy_test.go | 4 +- .../deployment/migrations/1_initial_deploy.go | 39 ++++++++ .../migrations/1_initial_deploy_test.go | 52 +++++++++++ core/capabilities/ccip/deployment/propose.go | 46 ++++++++++ core/capabilities/ccip/deployment/state.go | 49 +++++----- core/deployment/address_book.go | 50 ++++++++++ core/deployment/address_book_test.go | 41 +++++++++ .../environment.go | 4 +- .../memory/chain.go | 0 .../memory/job_client.go | 0 .../memory/node.go | 0 .../memory/node_test.go | 0 core/deployment/migrations.go | 39 ++++++++ core/environment/address_book.go | 47 ---------- core/environment/address_book_test.go | 1 - 16 files changed, 346 insertions(+), 118 deletions(-) create mode 100644 core/capabilities/ccip/deployment/migrations/1_initial_deploy.go create mode 100644 core/capabilities/ccip/deployment/migrations/1_initial_deploy_test.go create mode 100644 core/capabilities/ccip/deployment/propose.go create mode 100644 core/deployment/address_book.go create mode 100644 core/deployment/address_book_test.go rename core/{environment => deployment}/environment.go (96%) rename core/{environment => deployment}/memory/chain.go (100%) rename core/{environment => deployment}/memory/job_client.go (100%) rename core/{environment => deployment}/memory/node.go (100%) rename core/{environment => deployment}/memory/node_test.go (100%) create mode 100644 core/deployment/migrations.go delete mode 100644 core/environment/address_book.go delete mode 100644 core/environment/address_book_test.go diff --git a/core/capabilities/ccip/deployment/deploy.go b/core/capabilities/ccip/deployment/deploy.go index 95b569eca7..da9ce0c06b 100644 --- a/core/capabilities/ccip/deployment/deploy.go +++ b/core/capabilities/ccip/deployment/deploy.go @@ -4,32 +4,36 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/smartcontractkit/chainlink-common/pkg/logger" - "github.com/smartcontractkit/chainlink/v2/core/environment" + "github.com/smartcontractkit/chainlink/v2/core/deployment" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/arm_proxy_contract" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/mock_arm_contract" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/token_admin_registry" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/weth9" ) -type Proposal struct { -} - -func (p Proposal) String() string { - return "" -} - -func GenerateAcceptOwnershipProposal(e environment.Environment, state CCIPOnChainState) Proposal { - return Proposal{} -} +var ( + ARMProxy_1_1_0 = "ARMProxy 1.0.0" + MockARM_1_0_0 = "MockARM 1.0.0" + LinkToken_1_0_0 = "LinkToken 1.0.0" + TokenAdminRegistry_1_0_0 = "TokenAdminRegistry 1.0.0" + WETH9_1_0_0 = "WETH9 1.0.0" + Router_1_0_0 = "Router 1.0.0" + CapabilitiesRegistry_1_0_0 = "CapabilitiesRegistry 1.0.0" + EVM2EVMMultiOnRamp_1_6_0 = "EVM2EVMMultiOnRamp 1.6.0-dev" + EVM2EVMMultiOffRamp_1_6_0 = "EVM2EVMMultiOffRamp 1.6.0-dev" + PriceRegistry_1_0_0 = "PriceRegistry 1.0.0" + NonceManager_1_0_0 = "NonceManager 1.0.0" +) -// TODO: pull up to environment pkg +// TODO: pull up to general deployment pkg func deployContract( lggr logger.Logger, - deploy func() (common.Address, common.Hash, error), + deploy func() (common.Address, string, common.Hash, error), confirm func(common.Hash) error, - save func(address common.Address) error, + save func(address common.Address, tv string) error, ) (common.Address, error) { - contractAddr, tx, err := deploy() + contractAddr, tvStr, tx, err := deploy() if err != nil { lggr.Errorw("Failed to deploy contract", "err", err) return common.Address{}, err @@ -39,7 +43,7 @@ func deployContract( lggr.Errorw("Failed to confirm deployment", "err", err) return common.Address{}, err } - err = save(contractAddr) + err = save(contractAddr, tvStr) if err != nil { lggr.Errorw("Failed to save contract address", "err", err) return common.Address{}, err @@ -53,8 +57,8 @@ func (s CCIPSpec) String() string { return "" } -func GenerateJobSpecs(capReg common.Address) CCIPSpec { - return CCIPSpec{} +func GenerateJobSpecs(capReg common.Address) (CCIPSpec, error) { + return CCIPSpec{}, nil } type DeployCCIPContractConfig struct { @@ -66,21 +70,21 @@ type DeployCCIPContractConfig struct { // For example a list of contracts to skip deploying if they already exist. // Or mock vs real RMN. // Deployment produces an address book of everything it deployed. -func DeployCCIPContracts(e environment.Environment, c DeployCCIPContractConfig) (environment.AddressBook, error) { - ab := environment.NewMemoryAddressBook() +func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) (deployment.AddressBook, error) { + ab := deployment.NewMemoryAddressBook() for _, chain := range e.Chains { - saveToChain := func(addr common.Address) error { - return ab.Save(chain.Selector, addr.String()) + saveToChain := func(addr common.Address, tv string) error { + return ab.Save(chain.Selector, addr.String(), tv) } // TODO: Still waiting for RMNRemote/RMNHome contracts etc. mockARM, err := deployContract(e.Logger, - func() (common.Address, common.Hash, error) { + func() (common.Address, string, common.Hash, error) { mockARM, tx, _, err := mock_arm_contract.DeployMockARMContract( chain.DeployerKey, chain.Client, ) - return mockARM, tx.Hash(), err + return mockARM, MockARM_1_0_0, tx.Hash(), err }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy mockARM", "err", err) @@ -89,13 +93,13 @@ func DeployCCIPContracts(e environment.Environment, c DeployCCIPContractConfig) e.Logger.Infow("deployed mockARM", "addr", mockARM) armProxy, err := deployContract(e.Logger, - func() (common.Address, common.Hash, error) { - mockARM, tx, _, err := arm_proxy_contract.DeployARMProxyContract( + func() (common.Address, string, common.Hash, error) { + armProxy, tx, _, err := arm_proxy_contract.DeployARMProxyContract( chain.DeployerKey, chain.Client, mockARM, ) - return mockARM, tx.Hash(), err + return armProxy, ARMProxy_1_1_0, tx.Hash(), err }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy armProxy", "err", err) @@ -103,28 +107,28 @@ func DeployCCIPContracts(e environment.Environment, c DeployCCIPContractConfig) } e.Logger.Infow("deployed armProxy", "addr", armProxy) - //weth9, err := deployContract(e.Logger, - // func() (common.Address, common.Hash, error) { - // weth9, tx, _, err := weth9.DeployWETH9( - // chain.DeployerKey, - // chain.Client, - // ) - // return weth9, tx.Hash(), err - // }, chain.Confirm, saveToChain) - //if err != nil { - // e.Logger.Errorw("Failed to deploy weth9", "err", err) - // return err - //} + weth9, err := deployContract(e.Logger, + func() (common.Address, string, common.Hash, error) { + weth9, tx, _, err := weth9.DeployWETH9( + chain.DeployerKey, + chain.Client, + ) + return weth9, WETH9_1_0_0, tx.Hash(), err + }, chain.Confirm, saveToChain) + if err != nil { + e.Logger.Errorw("Failed to deploy weth9", "err", err) + return ab, err + } routerAddr, err := deployContract(e.Logger, - func() (common.Address, common.Hash, error) { + func() (common.Address, string, common.Hash, error) { router, tx, _, err := router.DeployRouter( chain.DeployerKey, chain.Client, - common.HexToAddress("0x0"), + weth9, armProxy, ) - return router, tx.Hash(), err + return router, Router_1_0_0, tx.Hash(), err }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy router", "err", err) @@ -133,11 +137,11 @@ func DeployCCIPContracts(e environment.Environment, c DeployCCIPContractConfig) e.Logger.Infow("deployed router", "addr", routerAddr) tokenAdminRegistry, err := deployContract(e.Logger, - func() (common.Address, common.Hash, error) { + func() (common.Address, string, common.Hash, error) { tokenAdminRegistry, tx, _, err := token_admin_registry.DeployTokenAdminRegistry( chain.DeployerKey, chain.Client) - return tokenAdminRegistry, tx.Hash(), err + return tokenAdminRegistry, TokenAdminRegistry_1_0_0, tx.Hash(), err }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy token admin registry", "err", err) diff --git a/core/capabilities/ccip/deployment/deploy_test.go b/core/capabilities/ccip/deployment/deploy_test.go index 74c53373ec..b621b3a745 100644 --- a/core/capabilities/ccip/deployment/deploy_test.go +++ b/core/capabilities/ccip/deployment/deploy_test.go @@ -7,11 +7,11 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/smartcontractkit/chainlink/v2/core/environment" + "github.com/smartcontractkit/chainlink/v2/core/deployment" ) func TestDeployCCIPContracts(t *testing.T) { - e := environment.NewMemoryEnvironment(t, environment.MemoryEnvironmentConfig{ + e := deployment.NewMemoryEnvironment(t, deployment.MemoryEnvironmentConfig{ Chains: 1, Nodes: 1, }) diff --git a/core/capabilities/ccip/deployment/migrations/1_initial_deploy.go b/core/capabilities/ccip/deployment/migrations/1_initial_deploy.go new file mode 100644 index 0000000000..ea525de153 --- /dev/null +++ b/core/capabilities/ccip/deployment/migrations/1_initial_deploy.go @@ -0,0 +1,39 @@ +package migrations + +import ( + "github.com/ethereum/go-ethereum/common" + + ccipdeployment "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/deployment" + "github.com/smartcontractkit/chainlink/v2/core/deployment" +) + +// We expect the migration input to be unique per migration. +// TODO: Maybe there's a generics approach here? +func Apply0001(env deployment.Environment, c ccipdeployment.DeployCCIPContractConfig) (deployment.MigrationOutput, error) { + ab, err := ccipdeployment.DeployCCIPContracts(env, c) + if err != nil { + // If we fail here, just throw away the addresses. + // TODO: if expensive could consider partial recovery + env.Logger.Errorw("Failed to deploy CCIP contracts", "err", err, "addresses", ab) + return deployment.MigrationOutput{}, err + } + state, err := ccipdeployment.GenerateOnchainState(env, ab) + if err != nil { + return deployment.MigrationOutput{}, err + } + js, err := ccipdeployment.GenerateJobSpecs(common.Address{}) + if err != nil { + return deployment.MigrationOutput{}, err + } + proposal, err := ccipdeployment.GenerateAcceptOwnershipProposal(env, env.AllChainSelectors(), state) + if err != nil { + return deployment.MigrationOutput{}, err + } + return deployment.MigrationOutput{ + Proposals: []deployment.Proposal{proposal}, + AddressBook: ab, + JobSpecs: map[string][]string{ + "chain-layer": {js.String()}, + }, + }, nil +} diff --git a/core/capabilities/ccip/deployment/migrations/1_initial_deploy_test.go b/core/capabilities/ccip/deployment/migrations/1_initial_deploy_test.go new file mode 100644 index 0000000000..2bbc385eac --- /dev/null +++ b/core/capabilities/ccip/deployment/migrations/1_initial_deploy_test.go @@ -0,0 +1,52 @@ +package migrations + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + + ccipdeployment "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/deployment" + "github.com/smartcontractkit/chainlink/v2/core/deployment" +) + +func Test0001_InitialDeploy(t *testing.T) { + t.Skip() // WIP + e := deployment.NewMemoryEnvironment(t, deployment.MemoryEnvironmentConfig{ + Chains: 1, + Nodes: 1, + }) + // Apply migration + output, err := Apply0001(e, ccipdeployment.DeployCCIPContractConfig{}) + require.NoError(t, err) + + state, err := ccipdeployment.GenerateOnchainState(e, output.AddressBook) + require.NoError(t, err) + + // TODO: Validate jobs + // Apply jobs + for nodeIDs, jobs := range output.JobSpecs { + for _, job := range jobs { + _, err := e.Offchain.ProposeJob(context.Background(), nodeIDs, job) + require.NoError(t, err) + } + } + // TODO: Inspect proposal + // Apply proposal + require.NoError(t, ccipdeployment.ApplyProposal(e, output.Proposals[0], state)) + + // TODO: Inspect onchain state + // TODO: Send traffic + + //snap, err := state.Snapshot(e.AllChainSelectors()) + //require.NoError(t, err) + // + //// Assert expect every deployed address to be in the address book. + //for name, chain := range snap.Chains { + // addrs, err := ab.Addresses() + // require.NoError(t, err) + // evmChainID, _ := chainsel.ChainIdFromName(name) + // sel, _ := chainsel.SelectorFromChainId(evmChainID) + // assert.Contains(t, addrs[sel], chain.TokenAdminRegistry.String()) + //} +} diff --git a/core/capabilities/ccip/deployment/propose.go b/core/capabilities/ccip/deployment/propose.go new file mode 100644 index 0000000000..3b5ffad31c --- /dev/null +++ b/core/capabilities/ccip/deployment/propose.go @@ -0,0 +1,46 @@ +package deployment + +import ( + "math/big" + "time" + + "github.com/ethereum/go-ethereum/common" + chainsel "github.com/smartcontractkit/chain-selectors" + + "github.com/smartcontractkit/chainlink/v2/core/deployment" +) + +func GenerateAcceptOwnershipProposal( + e deployment.Environment, + chains []uint64, + state CCIPOnChainState, +) (deployment.Proposal, error) { + // TODO: Just onramp as an example + var ops []deployment.ManyChainMultiSigOp + for _, sel := range chains { + e.Chains[sel].DeployerKey.NoSend = true + txData, err := state.EvmOnRampsV160[sel].AcceptOwnership(e.Chains[sel].DeployerKey) + if err != nil { + return deployment.Proposal{}, err + } + evmID, err := chainsel.ChainIdFromSelector(sel) + if err != nil { + return deployment.Proposal{}, err + } + ops = append(ops, deployment.ManyChainMultiSigOp{ + ChainId: big.NewInt(int64(evmID)), + MultiSig: common.Address{}, + Nonce: big.NewInt(0), + To: state.EvmOnRampsV160[sel].Address(), + Value: big.NewInt(0), + Data: txData.Data(), + }) + } + // TODO: Real valid until. + return deployment.Proposal{ValidUntil: uint32(time.Now().Unix()), Ops: ops}, nil +} + +func ApplyProposal(env deployment.Environment, p deployment.Proposal, state CCIPOnChainState) error { + // TODO + return nil +} diff --git a/core/capabilities/ccip/deployment/state.go b/core/capabilities/ccip/deployment/state.go index 63ab995823..6880b1da2f 100644 --- a/core/capabilities/ccip/deployment/state.go +++ b/core/capabilities/ccip/deployment/state.go @@ -7,16 +7,16 @@ import ( "github.com/pkg/errors" chainsel "github.com/smartcontractkit/chain-selectors" - "github.com/smartcontractkit/chainlink/v2/core/environment" + "github.com/smartcontractkit/chainlink/v2/core/deployment" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/arm_proxy_contract" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_offramp" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_onramp" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/mock_arm_contract" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/nonce_manager" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/price_registry" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/token_admin_registry" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/weth9" - type_and_version "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/type_and_version_interface_wrapper" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/keystone/generated/capabilities_registry" ) @@ -35,6 +35,7 @@ type CCIPOnChainState struct { TokenAdminRegistries map[uint64]*token_admin_registry.TokenAdminRegistry Routers map[uint64]*router.Router Weth9s map[uint64]*weth9.WETH9 + MockArms map[uint64]*mock_arm_contract.MockARMContract // Only lives on the home chain. CapabilityRegistry *capabilities_registry.CapabilitiesRegistry @@ -70,7 +71,7 @@ func (s CCIPOnChainState) Snapshot(chains []uint64) (CCIPSnapShot, error) { return snapshot, nil } -func SnapshotState(e environment.Environment, ab environment.AddressBook) (CCIPSnapShot, error) { +func SnapshotState(e deployment.Environment, ab deployment.AddressBook) (CCIPSnapShot, error) { state, err := GenerateOnchainState(e, ab) if err != nil { return CCIPSnapShot{}, err @@ -78,7 +79,7 @@ func SnapshotState(e environment.Environment, ab environment.AddressBook) (CCIPS return state.Snapshot(e.AllChainSelectors()) } -func GenerateOnchainState(e environment.Environment, ab environment.AddressBook) (CCIPOnChainState, error) { +func GenerateOnchainState(e deployment.Environment, ab deployment.AddressBook) (CCIPOnChainState, error) { state := CCIPOnChainState{ EvmOnRampsV160: make(map[uint64]*evm_2_evm_multi_onramp.EVM2EVMMultiOnRamp), EvmOffRampsV160: make(map[uint64]*evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp), @@ -87,6 +88,7 @@ func GenerateOnchainState(e environment.Environment, ab environment.AddressBook) NonceManagers: make(map[uint64]*nonce_manager.NonceManager), TokenAdminRegistries: make(map[uint64]*token_admin_registry.TokenAdminRegistry), Routers: make(map[uint64]*router.Router), + MockArms: make(map[uint64]*mock_arm_contract.MockARMContract), Weth9s: make(map[uint64]*weth9.WETH9), } // Get all the onchain state @@ -95,60 +97,63 @@ func GenerateOnchainState(e environment.Environment, ab environment.AddressBook) return state, errors.Wrap(err, "could not get addresses") } for chainSelector, addresses := range addresses { - for address := range addresses { - tv, err := type_and_version.NewTypeAndVersionInterface(common.HexToAddress(address), e.Chains[chainSelector].Client) - if err != nil { - return state, errors.Wrap(err, "could not create tv interface") - } - tvStr, err := tv.TypeAndVersion(nil) - if err != nil { - // TODO: there are some contracts which dont like the link token/weth9 - return state, errors.Wrap(err, fmt.Sprintf("could not call tv version, does the contract %s implement it?", address)) - } + for address, tvStr := range addresses { switch tvStr { - case "CapabilitiesRegistry 1.0.0": + case CapabilitiesRegistry_1_0_0: cr, err := capabilities_registry.NewCapabilitiesRegistry(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { return state, err } state.CapabilityRegistry = cr - case "EVM2EVMMultiOnRamp 1.6.0-dev": + case EVM2EVMMultiOnRamp_1_6_0: onRamp, err := evm_2_evm_multi_onramp.NewEVM2EVMMultiOnRamp(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { return state, err } state.EvmOnRampsV160[chainSelector] = onRamp - case "EVM2EVMMultiOffRamp 1.6.0-dev": + case EVM2EVMMultiOffRamp_1_6_0: offRamp, err := evm_2_evm_multi_offramp.NewEVM2EVMMultiOffRamp(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { return state, err } state.EvmOffRampsV160[chainSelector] = offRamp - case "ARMProxy 1.0.0": + case ARMProxy_1_1_0: armProxy, err := arm_proxy_contract.NewARMProxyContract(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { return state, err } state.ArmProxies[chainSelector] = armProxy - case "NonceManager 1.6.0-dev": + case MockARM_1_0_0: + mockARM, err := mock_arm_contract.NewMockARMContract(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.MockArms[chainSelector] = mockARM + case WETH9_1_0_0: + weth9, err := weth9.NewWETH9(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.Weth9s[chainSelector] = weth9 + case NonceManager_1_0_0: nm, err := nonce_manager.NewNonceManager(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { return state, err } state.NonceManagers[chainSelector] = nm - case "TokenAdminRegistry 1.5.0-dev": + case TokenAdminRegistry_1_0_0: tm, err := token_admin_registry.NewTokenAdminRegistry(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { return state, err } state.TokenAdminRegistries[chainSelector] = tm - case "Router 1.2.0": + case Router_1_0_0: r, err := router.NewRouter(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { return state, err } state.Routers[chainSelector] = r - case "PriceRegistry 1.6.0-dev": + case PriceRegistry_1_0_0: pr, err := price_registry.NewPriceRegistry(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { return state, err diff --git a/core/deployment/address_book.go b/core/deployment/address_book.go new file mode 100644 index 0000000000..f18d634a5f --- /dev/null +++ b/core/deployment/address_book.go @@ -0,0 +1,50 @@ +package deployment + +import "fmt" + +type AddressBook interface { + Save(chainSelector uint64, address string, typeAndVersion string) error + Addresses() (map[uint64]map[string]string, error) + // Allows for merging address books (e.g. new deployments with existing ones) + Merge(other AddressBook) error +} + +type AddressBookMap struct { + AddressesByChain map[uint64]map[string]string +} + +func (m *AddressBookMap) Save(chainSelector uint64, address string, typeAndVersion string) error { + if _, exists := m.AddressesByChain[chainSelector]; !exists { + // First time chain add, create map + m.AddressesByChain[chainSelector] = make(map[string]string) + } + if _, exists := m.AddressesByChain[chainSelector][address]; exists { + return fmt.Errorf("address %s already exists for chain %d", address, chainSelector) + } + m.AddressesByChain[chainSelector][address] = typeAndVersion + return nil +} + +func (m *AddressBookMap) Addresses() (map[uint64]map[string]string, error) { + return m.AddressesByChain, nil +} + +// Attention this will mutate existing book +func (m *AddressBookMap) Merge(ab AddressBook) error { + addresses, err := ab.Addresses() + if err != nil { + return err + } + for chain, chainAddresses := range addresses { + for address, typeAndVersions := range chainAddresses { + return m.Save(chain, address, typeAndVersions) + } + } + return nil +} + +func NewMemoryAddressBook() *AddressBookMap { + return &AddressBookMap{ + AddressesByChain: make(map[uint64]map[string]string), + } +} diff --git a/core/deployment/address_book_test.go b/core/deployment/address_book_test.go new file mode 100644 index 0000000000..3e9b8e6791 --- /dev/null +++ b/core/deployment/address_book_test.go @@ -0,0 +1,41 @@ +package deployment + +import ( + "testing" + + "github.com/stretchr/testify/require" + "gotest.tools/v3/assert" +) + +func TestAddressBook(t *testing.T) { + ab := NewMemoryAddressBook() + err := ab.Save(1, "0x1", "OnRamp 1.0.0") + require.NoError(t, err) + // Duplicate address will error + err = ab.Save(1, "0x1", "OnRamp 1.0.0") + require.Error(t, err) + // Distinct address same TV will not + err = ab.Save(1, "0x2", "OnRamp 1.0.0") + require.NoError(t, err) + // Same address different chain will not error + err = ab.Save(2, "0x1", "OnRamp 1.0.0") + require.NoError(t, err) + // We can save different versions of the same contract + err = ab.Save(2, "0x2", "OnRamp 1.2.0") + require.NoError(t, err) + + addresses, err := ab.Addresses() + require.NoError(t, err) + assert.DeepEqual(t, addresses, map[uint64]map[string]string{ + 1: { + "0x1": "OnRamp 1.0.0", + "0x2": "OnRamp 1.0.0", + }, + 2: { + "0x1": "OnRamp 1.0.0", + "0x2": "OnRamp 1.2.0", + }, + }) + + // TODO: Further testing of merge etc. +} diff --git a/core/environment/environment.go b/core/deployment/environment.go similarity index 96% rename from core/environment/environment.go rename to core/deployment/environment.go index a870b39362..4cd63ada6f 100644 --- a/core/environment/environment.go +++ b/core/deployment/environment.go @@ -1,4 +1,4 @@ -package environment +package deployment import ( "context" @@ -12,7 +12,7 @@ import ( "go.uber.org/zap/zapcore" "github.com/smartcontractkit/chainlink-common/pkg/logger" - "github.com/smartcontractkit/chainlink/v2/core/environment/memory" + "github.com/smartcontractkit/chainlink/v2/core/deployment/memory" ) const ( diff --git a/core/environment/memory/chain.go b/core/deployment/memory/chain.go similarity index 100% rename from core/environment/memory/chain.go rename to core/deployment/memory/chain.go diff --git a/core/environment/memory/job_client.go b/core/deployment/memory/job_client.go similarity index 100% rename from core/environment/memory/job_client.go rename to core/deployment/memory/job_client.go diff --git a/core/environment/memory/node.go b/core/deployment/memory/node.go similarity index 100% rename from core/environment/memory/node.go rename to core/deployment/memory/node.go diff --git a/core/environment/memory/node_test.go b/core/deployment/memory/node_test.go similarity index 100% rename from core/environment/memory/node_test.go rename to core/deployment/memory/node_test.go diff --git a/core/deployment/migrations.go b/core/deployment/migrations.go new file mode 100644 index 0000000000..ceb12e7d9d --- /dev/null +++ b/core/deployment/migrations.go @@ -0,0 +1,39 @@ +package deployment + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/common" +) + +// TODO: To move to ccip-owner-contracts +type ManyChainMultiSigOp struct { + ChainId *big.Int + MultiSig common.Address + Nonce *big.Int + To common.Address + Value *big.Int + Data []byte +} + +type Proposal struct { + // keccak256(abi.encode(root, validUntil)) is what is signed by MCMS + // signers. + ValidUntil uint32 + // Leaves are the items in the proposal. + // Uses these to generate the root as well as display whats in the root. + // These Ops may be destined for distinct chains. + Ops []ManyChainMultiSigOp +} + +func (p Proposal) String() string { + // TODO + return "" +} + +// Services as input to CI/Async tasks +type MigrationOutput struct { + JobSpecs map[string][]string + Proposals []Proposal + AddressBook AddressBook +} diff --git a/core/environment/address_book.go b/core/environment/address_book.go deleted file mode 100644 index 9ff5e0d9da..0000000000 --- a/core/environment/address_book.go +++ /dev/null @@ -1,47 +0,0 @@ -package environment - -type AddressBook interface { - // TODO: Need manualTV override - Save(chainSelector uint64, address string) error - Addresses() (map[uint64]map[string]struct{}, error) - // Allows for merging address books - Merge(other AddressBook) error -} - -type AddressBookMap struct { - AddressesByChain map[uint64]map[string]struct{} -} - -func (m *AddressBookMap) Save(chainSelector uint64, address string) error { - if _, exists := m.AddressesByChain[chainSelector]; !exists { - m.AddressesByChain[chainSelector] = make(map[string]struct{}) - } else { - // Error? - } - m.AddressesByChain[chainSelector][address] = struct{}{} - return nil -} - -func (m *AddressBookMap) Addresses() (map[uint64]map[string]struct{}, error) { - return m.AddressesByChain, nil -} - -// Attention this will mutate existing book -func (m *AddressBookMap) Merge(ab AddressBook) error { - addresses, err := ab.Addresses() - if err != nil { - return err - } - for chain, chainAddresses := range addresses { - for address := range chainAddresses { - return m.Save(chain, address) - } - } - return nil -} - -func NewMemoryAddressBook() *AddressBookMap { - return &AddressBookMap{ - AddressesByChain: make(map[uint64]map[string]struct{}), - } -} diff --git a/core/environment/address_book_test.go b/core/environment/address_book_test.go deleted file mode 100644 index f2d9ed195f..0000000000 --- a/core/environment/address_book_test.go +++ /dev/null @@ -1 +0,0 @@ -package environment From 186d18fa30c0aca98ce5f1a78f0bc7f6d7782f3b Mon Sep 17 00:00:00 2001 From: connorwstein Date: Wed, 7 Aug 2024 19:12:20 -0400 Subject: [PATCH 06/42] Leave out sol --- .../ccip/deployment/deploy_solana_test.go | 101 ------------------ 1 file changed, 101 deletions(-) delete mode 100644 core/capabilities/ccip/deployment/deploy_solana_test.go diff --git a/core/capabilities/ccip/deployment/deploy_solana_test.go b/core/capabilities/ccip/deployment/deploy_solana_test.go deleted file mode 100644 index fb74f581b7..0000000000 --- a/core/capabilities/ccip/deployment/deploy_solana_test.go +++ /dev/null @@ -1,101 +0,0 @@ -//go:build solana -// +build solana - -package deployment - -import ( - "context" - "fmt" - "testing" - "time" - - "github.com/gagliardetto/solana-go" - "github.com/gagliardetto/solana-go/programs/system" - "github.com/gagliardetto/solana-go/rpc" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func confirmTx(c *rpc.Client, ctx context.Context, sig solana.Signature) error { - var confirmed bool - for i := 0; i < 30; i++ { - block, err := c.GetConfirmedTransactionWithOpts(ctx, sig, &rpc.GetTransactionOpts{ - // Must be finalized for state to actually change. - Commitment: rpc.CommitmentConfirmed, - }) - if err != nil { - fmt.Println(err) - time.Sleep(1 * time.Second) - continue - } - fmt.Println("Confirmed!", block) - confirmed = true - break - } - if !confirmed { - return fmt.Errorf("transaction not confirmed") - } - return nil -} - -func TestSolanaCreateAccount(t *testing.T) { - t.Skip() - // Note that uploading a program is fairly complex: - // 2 options - // - Replicate https://github.com/solana-labs/solana/blob/7409d9d2687fba21078a745842c25df805cdf105/cli/src/program.rs#L2086 - // using solana-go. Not particularly difficult but a little bit of work. - // - Shell out to solana go for deployment. - ctx := context.Background() - - // solana-test-validator - client := rpc.New("http://127.0.0.1:8899") - - // Fund a deployer - deployer := solana.NewWallet() - airdrop, err := client.RequestAirdrop(ctx, deployer.PublicKey(), 10*solana.LAMPORTS_PER_SOL, rpc.CommitmentConfirmed) - require.NoError(t, err) - require.NoError(t, confirmTx(client, ctx, airdrop)) - b, err := client.GetBalance(ctx, deployer.PublicKey(), rpc.CommitmentFinalized) - require.NoError(t, err) - assert.Equal(t, 10*solana.LAMPORTS_PER_SOL, b.Value) - - // Create - programAccount := solana.NewWallet() - createInst, err := system.NewCreateAccountInstruction( - solana.LAMPORTS_PER_SOL, // If you don't fund the account it won't exist - 9, - solana.SystemProgramID, - deployer.PublicKey(), - programAccount.PublicKey()).ValidateAndBuild() - require.NoError(t, err) - - bh, err := client.GetRecentBlockhash(ctx, rpc.CommitmentFinalized) - require.NoError(t, err) - programAccountTx, err := solana.NewTransaction( - []solana.Instruction{ - createInst, // Create the program account - }, - bh.Value.Blockhash, - ) - require.NoError(t, err) - fmt.Println(programAccountTx) - sig, err := programAccountTx.Sign(func(key solana.PublicKey) *solana.PrivateKey { - if key.Equals(deployer.PublicKey()) { - return &deployer.PrivateKey - } else if key.Equals(programAccount.PublicKey()) { - return &programAccount.PrivateKey - } - panic("unauthorized sign") - }) - require.NoError(t, err) - programAccountTx.Signatures = sig - require.NoError(t, programAccountTx.VerifySignatures()) - txSig, err := client.SendTransaction(ctx, programAccountTx) - require.NoError(t, err) - fmt.Printf("Program deployment transaction signature: %s\n", txSig.String()) - // Program account will not exist without this - require.NoError(t, confirmTx(client, ctx, txSig)) - acct, err := client.GetAccountInfo(ctx, programAccount.PublicKey()) - require.NoError(t, err) - fmt.Println(acct.Value.Data) -} From 2c943d8c39aa27826e096f58e19ca9c200dae680 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 8 Aug 2024 09:19:06 -0400 Subject: [PATCH 07/42] Imports and lint --- core/capabilities/ccip/deployment/deploy.go | 20 ++++++++++---------- core/capabilities/ccip/deployment/state.go | 1 + core/deployment/memory/chain.go | 8 +++++--- core/deployment/memory/node.go | 14 ++++++++------ core/deployment/memory/node_test.go | 6 ++++-- 5 files changed, 28 insertions(+), 21 deletions(-) diff --git a/core/capabilities/ccip/deployment/deploy.go b/core/capabilities/ccip/deployment/deploy.go index da9ce0c06b..f228773c64 100644 --- a/core/capabilities/ccip/deployment/deploy.go +++ b/core/capabilities/ccip/deployment/deploy.go @@ -80,11 +80,11 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( // TODO: Still waiting for RMNRemote/RMNHome contracts etc. mockARM, err := deployContract(e.Logger, func() (common.Address, string, common.Hash, error) { - mockARM, tx, _, err := mock_arm_contract.DeployMockARMContract( + mockARM, tx, _, err2 := mock_arm_contract.DeployMockARMContract( chain.DeployerKey, chain.Client, ) - return mockARM, MockARM_1_0_0, tx.Hash(), err + return mockARM, MockARM_1_0_0, tx.Hash(), err2 }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy mockARM", "err", err) @@ -94,12 +94,12 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( armProxy, err := deployContract(e.Logger, func() (common.Address, string, common.Hash, error) { - armProxy, tx, _, err := arm_proxy_contract.DeployARMProxyContract( + armProxy, tx, _, err2 := arm_proxy_contract.DeployARMProxyContract( chain.DeployerKey, chain.Client, mockARM, ) - return armProxy, ARMProxy_1_1_0, tx.Hash(), err + return armProxy, ARMProxy_1_1_0, tx.Hash(), err2 }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy armProxy", "err", err) @@ -109,11 +109,11 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( weth9, err := deployContract(e.Logger, func() (common.Address, string, common.Hash, error) { - weth9, tx, _, err := weth9.DeployWETH9( + weth9, tx, _, err2 := weth9.DeployWETH9( chain.DeployerKey, chain.Client, ) - return weth9, WETH9_1_0_0, tx.Hash(), err + return weth9, WETH9_1_0_0, tx.Hash(), err2 }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy weth9", "err", err) @@ -122,13 +122,13 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( routerAddr, err := deployContract(e.Logger, func() (common.Address, string, common.Hash, error) { - router, tx, _, err := router.DeployRouter( + router, tx, _, err2 := router.DeployRouter( chain.DeployerKey, chain.Client, weth9, armProxy, ) - return router, Router_1_0_0, tx.Hash(), err + return router, Router_1_0_0, tx.Hash(), err2 }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy router", "err", err) @@ -138,10 +138,10 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( tokenAdminRegistry, err := deployContract(e.Logger, func() (common.Address, string, common.Hash, error) { - tokenAdminRegistry, tx, _, err := token_admin_registry.DeployTokenAdminRegistry( + tokenAdminRegistry, tx, _, err2 := token_admin_registry.DeployTokenAdminRegistry( chain.DeployerKey, chain.Client) - return tokenAdminRegistry, TokenAdminRegistry_1_0_0, tx.Hash(), err + return tokenAdminRegistry, TokenAdminRegistry_1_0_0, tx.Hash(), err2 }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy token admin registry", "err", err) diff --git a/core/capabilities/ccip/deployment/state.go b/core/capabilities/ccip/deployment/state.go index 6880b1da2f..3ee149dbc4 100644 --- a/core/capabilities/ccip/deployment/state.go +++ b/core/capabilities/ccip/deployment/state.go @@ -55,6 +55,7 @@ func (s CCIPOnChainState) Snapshot(chains []uint64) (CCIPSnapShot, error) { Chains: make(map[string]Chain), } for _, chainSelector := range chains { + // TODO: Need a utility for this chainid, _ := chainsel.ChainIdFromSelector(chainSelector) chainName, _ := chainsel.NameFromChainId(chainid) var c Chain diff --git a/core/deployment/memory/chain.go b/core/deployment/memory/chain.go index f36ec57ea9..8701009962 100644 --- a/core/deployment/memory/chain.go +++ b/core/deployment/memory/chain.go @@ -1,6 +1,9 @@ package memory import ( + "math/big" + "testing" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" "github.com/ethereum/go-ethereum/common" @@ -8,10 +11,9 @@ import ( gethtypes "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/params" chainsel "github.com/smartcontractkit/chain-selectors" - "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/stretchr/testify/require" - "math/big" - "testing" + + "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" ) type EVMChain struct { diff --git a/core/deployment/memory/node.go b/core/deployment/memory/node.go index dc3f53d110..a28feb7313 100644 --- a/core/deployment/memory/node.go +++ b/core/deployment/memory/node.go @@ -3,8 +3,16 @@ package memory import ( "context" "fmt" + "math/big" + "net/http" + "testing" + "time" + "github.com/ethereum/go-ethereum/common" gethtypes "github.com/ethereum/go-ethereum/core/types" + "github.com/stretchr/testify/require" + "go.uber.org/zap/zapcore" + "github.com/smartcontractkit/chainlink-common/pkg/config" "github.com/smartcontractkit/chainlink-common/pkg/loop" "github.com/smartcontractkit/chainlink-common/pkg/utils/mailbox" @@ -25,12 +33,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/keystore/keys/p2pkey" "github.com/smartcontractkit/chainlink/v2/core/utils" "github.com/smartcontractkit/chainlink/v2/plugins" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zapcore" - "math/big" - "net/http" - "testing" - "time" ) type Node struct { diff --git a/core/deployment/memory/node_test.go b/core/deployment/memory/node_test.go index c8daaacf10..e479e53c5b 100644 --- a/core/deployment/memory/node_test.go +++ b/core/deployment/memory/node_test.go @@ -1,11 +1,13 @@ package memory import ( + "testing" + "github.com/hashicorp/consul/sdk/freeport" - "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" - "testing" + + "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" ) func TestNode(t *testing.T) { From 76174214de7fbb70714f5ba21599077bea4e8044 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 8 Aug 2024 09:21:26 -0400 Subject: [PATCH 08/42] fix go mod --- go.mod | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 79f65b3d90..f8a6031b77 100644 --- a/go.mod +++ b/go.mod @@ -14,17 +14,13 @@ require ( github.com/cometbft/cometbft v0.37.5 github.com/cosmos/cosmos-sdk v0.47.11 github.com/danielkov/gin-helmet v0.0.0-20171108135313-1387e224435e - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/deckarep/golang-set/v2 v2.6.0 github.com/dominikbraun/graph v0.23.0 github.com/esote/minmaxheap v1.0.0 github.com/ethereum/go-ethereum v1.13.8 github.com/fatih/color v1.16.0 github.com/fxamacker/cbor/v2 v2.5.0 - github.com/gagliardetto/binary v0.7.7 - github.com/gagliardetto/gofuzz v1.2.2 github.com/gagliardetto/solana-go v1.8.4 - github.com/gagliardetto/treeout v0.1.4 github.com/getsentry/sentry-go v0.23.0 github.com/gin-contrib/cors v1.5.0 github.com/gin-contrib/expvar v0.0.1 @@ -186,6 +182,7 @@ require ( github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect github.com/danieljoos/wincred v1.1.2 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/dfuse-io/logging v0.0.0-20210109005628-b97a57253f70 // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect @@ -197,6 +194,8 @@ require ( github.com/ethereum/c-kzg-4844 v0.4.0 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.2 // indirect + github.com/gagliardetto/binary v0.7.7 // indirect + github.com/gagliardetto/treeout v0.1.4 // indirect github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813 // indirect From 63f45ce198800972bc92f30ce72a6ff85be49dda Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 8 Aug 2024 10:00:46 -0400 Subject: [PATCH 09/42] Lint --- core/deployment/memory/node.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/deployment/memory/node.go b/core/deployment/memory/node.go index a28feb7313..679a2f45da 100644 --- a/core/deployment/memory/node.go +++ b/core/deployment/memory/node.go @@ -99,17 +99,16 @@ func NewNode( } // Build evm factory using clients + keystore. - mailMon := mailbox.NewMonitor("ccip", lggr.Named("mailbox")) + mailMon := mailbox.NewMonitor("node", lggr.Named("mailbox")) evmOpts := chainlink.EVMFactoryConfig{ ChainOpts: legacyevm.ChainOpts{ AppConfig: cfg, GenEthClient: func(i *big.Int) client.Client { - t.Log("genning eth client for chain id:", i.String()) - client, ok := clients[i.Uint64()] + ethClient, ok := clients[i.Uint64()] if !ok { t.Fatal("no backend for chainID", i) } - return client + return ethClient }, MailMon: mailMon, DS: db, @@ -141,6 +140,7 @@ func NewNode( MailMon: mailMon, LoopRegistry: plugins.NewLoopRegistry(lggr, cfg.Tracing()), }) + require.NoError(t, err) t.Cleanup(func() { require.NoError(t, db.Close()) }) From 66652244e0fbd9b4f60b6de732a60a082e3e9a79 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 8 Aug 2024 11:16:10 -0400 Subject: [PATCH 10/42] Move to integration-tests --- .../testutils}/heavyweight/orm.go | 0 .../deployment/address_book.go | 0 .../deployment/address_book_test.go | 0 .../deployment/ccip}/deploy.go | 2 +- .../deployment/ccip}/deploy_test.go | 3 +- .../ccip}/migrations/1_initial_deploy.go | 16 +++++----- .../ccip}/migrations/1_initial_deploy_test.go | 4 +-- .../deployment/ccip}/propose.go | 19 ++++++------ .../deployment/ccip}/state.go | 6 ++-- .../deployment/environment.go | 3 +- .../deployment/memory/chain.go | 14 +++++---- .../deployment/memory/job_client.go | 0 .../deployment/memory/node.go | 29 ++++++++++++++----- .../deployment/memory/node_test.go | 4 +-- .../deployment/migrations.go | 0 15 files changed, 57 insertions(+), 43 deletions(-) rename core/{internal/cltest => utils/testutils}/heavyweight/orm.go (100%) rename {core => integration-tests}/deployment/address_book.go (100%) rename {core => integration-tests}/deployment/address_book_test.go (100%) rename {core/capabilities/ccip/deployment => integration-tests/deployment/ccip}/deploy.go (98%) rename {core/capabilities/ccip/deployment => integration-tests/deployment/ccip}/deploy_test.go (93%) rename {core/capabilities/ccip/deployment => integration-tests/deployment/ccip}/migrations/1_initial_deploy.go (66%) rename {core/capabilities/ccip/deployment => integration-tests/deployment/ccip}/migrations/1_initial_deploy_test.go (89%) rename {core/capabilities/ccip/deployment => integration-tests/deployment/ccip}/propose.go (61%) rename {core/capabilities/ccip/deployment => integration-tests/deployment/ccip}/state.go (95%) rename {core => integration-tests}/deployment/environment.go (97%) rename {core => integration-tests}/deployment/memory/chain.go (79%) rename {core => integration-tests}/deployment/memory/job_client.go (100%) rename {core => integration-tests}/deployment/memory/node.go (93%) rename {core => integration-tests}/deployment/memory/node_test.go (79%) rename {core => integration-tests}/deployment/migrations.go (100%) diff --git a/core/internal/cltest/heavyweight/orm.go b/core/utils/testutils/heavyweight/orm.go similarity index 100% rename from core/internal/cltest/heavyweight/orm.go rename to core/utils/testutils/heavyweight/orm.go diff --git a/core/deployment/address_book.go b/integration-tests/deployment/address_book.go similarity index 100% rename from core/deployment/address_book.go rename to integration-tests/deployment/address_book.go diff --git a/core/deployment/address_book_test.go b/integration-tests/deployment/address_book_test.go similarity index 100% rename from core/deployment/address_book_test.go rename to integration-tests/deployment/address_book_test.go diff --git a/core/capabilities/ccip/deployment/deploy.go b/integration-tests/deployment/ccip/deploy.go similarity index 98% rename from core/capabilities/ccip/deployment/deploy.go rename to integration-tests/deployment/ccip/deploy.go index f228773c64..966ff0a122 100644 --- a/core/capabilities/ccip/deployment/deploy.go +++ b/integration-tests/deployment/ccip/deploy.go @@ -2,9 +2,9 @@ package deployment import ( "github.com/ethereum/go-ethereum/common" + "github.com/smartcontractkit/ccip/integration-tests/deployment" "github.com/smartcontractkit/chainlink-common/pkg/logger" - "github.com/smartcontractkit/chainlink/v2/core/deployment" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/arm_proxy_contract" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/mock_arm_contract" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" diff --git a/core/capabilities/ccip/deployment/deploy_test.go b/integration-tests/deployment/ccip/deploy_test.go similarity index 93% rename from core/capabilities/ccip/deployment/deploy_test.go rename to integration-tests/deployment/ccip/deploy_test.go index b621b3a745..9836aa911d 100644 --- a/core/capabilities/ccip/deployment/deploy_test.go +++ b/integration-tests/deployment/ccip/deploy_test.go @@ -3,11 +3,10 @@ package deployment import ( "testing" + "github.com/smartcontractkit/ccip/integration-tests/deployment" chainsel "github.com/smartcontractkit/chain-selectors" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - - "github.com/smartcontractkit/chainlink/v2/core/deployment" ) func TestDeployCCIPContracts(t *testing.T) { diff --git a/core/capabilities/ccip/deployment/migrations/1_initial_deploy.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy.go similarity index 66% rename from core/capabilities/ccip/deployment/migrations/1_initial_deploy.go rename to integration-tests/deployment/ccip/migrations/1_initial_deploy.go index ea525de153..4dadfc2650 100644 --- a/core/capabilities/ccip/deployment/migrations/1_initial_deploy.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy.go @@ -2,35 +2,35 @@ package migrations import ( "github.com/ethereum/go-ethereum/common" + deployment2 "github.com/smartcontractkit/ccip/integration-tests/deployment" ccipdeployment "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/deployment" - "github.com/smartcontractkit/chainlink/v2/core/deployment" ) // We expect the migration input to be unique per migration. // TODO: Maybe there's a generics approach here? -func Apply0001(env deployment.Environment, c ccipdeployment.DeployCCIPContractConfig) (deployment.MigrationOutput, error) { +func Apply0001(env deployment2.Environment, c ccipdeployment.DeployCCIPContractConfig) (deployment2.MigrationOutput, error) { ab, err := ccipdeployment.DeployCCIPContracts(env, c) if err != nil { // If we fail here, just throw away the addresses. // TODO: if expensive could consider partial recovery env.Logger.Errorw("Failed to deploy CCIP contracts", "err", err, "addresses", ab) - return deployment.MigrationOutput{}, err + return deployment2.MigrationOutput{}, err } state, err := ccipdeployment.GenerateOnchainState(env, ab) if err != nil { - return deployment.MigrationOutput{}, err + return deployment2.MigrationOutput{}, err } js, err := ccipdeployment.GenerateJobSpecs(common.Address{}) if err != nil { - return deployment.MigrationOutput{}, err + return deployment2.MigrationOutput{}, err } proposal, err := ccipdeployment.GenerateAcceptOwnershipProposal(env, env.AllChainSelectors(), state) if err != nil { - return deployment.MigrationOutput{}, err + return deployment2.MigrationOutput{}, err } - return deployment.MigrationOutput{ - Proposals: []deployment.Proposal{proposal}, + return deployment2.MigrationOutput{ + Proposals: []deployment2.Proposal{proposal}, AddressBook: ab, JobSpecs: map[string][]string{ "chain-layer": {js.String()}, diff --git a/core/capabilities/ccip/deployment/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go similarity index 89% rename from core/capabilities/ccip/deployment/migrations/1_initial_deploy_test.go rename to integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index 2bbc385eac..716c0e5096 100644 --- a/core/capabilities/ccip/deployment/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -4,10 +4,10 @@ import ( "context" "testing" + "github.com/smartcontractkit/ccip/integration-tests/deployment" "github.com/stretchr/testify/require" - ccipdeployment "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/deployment" - "github.com/smartcontractkit/chainlink/v2/core/deployment" + ccipdeployment "github.com/smartcontractkit/chainlink/integration-tests/deployment/ccip" ) func Test0001_InitialDeploy(t *testing.T) { diff --git a/core/capabilities/ccip/deployment/propose.go b/integration-tests/deployment/ccip/propose.go similarity index 61% rename from core/capabilities/ccip/deployment/propose.go rename to integration-tests/deployment/ccip/propose.go index 3b5ffad31c..fd50b99a5b 100644 --- a/core/capabilities/ccip/deployment/propose.go +++ b/integration-tests/deployment/ccip/propose.go @@ -5,29 +5,28 @@ import ( "time" "github.com/ethereum/go-ethereum/common" + deployment2 "github.com/smartcontractkit/ccip/integration-tests/deployment" chainsel "github.com/smartcontractkit/chain-selectors" - - "github.com/smartcontractkit/chainlink/v2/core/deployment" ) func GenerateAcceptOwnershipProposal( - e deployment.Environment, + e deployment2.Environment, chains []uint64, state CCIPOnChainState, -) (deployment.Proposal, error) { +) (deployment2.Proposal, error) { // TODO: Just onramp as an example - var ops []deployment.ManyChainMultiSigOp + var ops []deployment2.ManyChainMultiSigOp for _, sel := range chains { e.Chains[sel].DeployerKey.NoSend = true txData, err := state.EvmOnRampsV160[sel].AcceptOwnership(e.Chains[sel].DeployerKey) if err != nil { - return deployment.Proposal{}, err + return deployment2.Proposal{}, err } evmID, err := chainsel.ChainIdFromSelector(sel) if err != nil { - return deployment.Proposal{}, err + return deployment2.Proposal{}, err } - ops = append(ops, deployment.ManyChainMultiSigOp{ + ops = append(ops, deployment2.ManyChainMultiSigOp{ ChainId: big.NewInt(int64(evmID)), MultiSig: common.Address{}, Nonce: big.NewInt(0), @@ -37,10 +36,10 @@ func GenerateAcceptOwnershipProposal( }) } // TODO: Real valid until. - return deployment.Proposal{ValidUntil: uint32(time.Now().Unix()), Ops: ops}, nil + return deployment2.Proposal{ValidUntil: uint32(time.Now().Unix()), Ops: ops}, nil } -func ApplyProposal(env deployment.Environment, p deployment.Proposal, state CCIPOnChainState) error { +func ApplyProposal(env deployment2.Environment, p deployment2.Proposal, state CCIPOnChainState) error { // TODO return nil } diff --git a/core/capabilities/ccip/deployment/state.go b/integration-tests/deployment/ccip/state.go similarity index 95% rename from core/capabilities/ccip/deployment/state.go rename to integration-tests/deployment/ccip/state.go index 3ee149dbc4..3ca66f7150 100644 --- a/core/capabilities/ccip/deployment/state.go +++ b/integration-tests/deployment/ccip/state.go @@ -5,9 +5,9 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/pkg/errors" + deployment2 "github.com/smartcontractkit/ccip/integration-tests/deployment" chainsel "github.com/smartcontractkit/chain-selectors" - "github.com/smartcontractkit/chainlink/v2/core/deployment" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/arm_proxy_contract" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_offramp" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_onramp" @@ -72,7 +72,7 @@ func (s CCIPOnChainState) Snapshot(chains []uint64) (CCIPSnapShot, error) { return snapshot, nil } -func SnapshotState(e deployment.Environment, ab deployment.AddressBook) (CCIPSnapShot, error) { +func SnapshotState(e deployment2.Environment, ab deployment2.AddressBook) (CCIPSnapShot, error) { state, err := GenerateOnchainState(e, ab) if err != nil { return CCIPSnapShot{}, err @@ -80,7 +80,7 @@ func SnapshotState(e deployment.Environment, ab deployment.AddressBook) (CCIPSna return state.Snapshot(e.AllChainSelectors()) } -func GenerateOnchainState(e deployment.Environment, ab deployment.AddressBook) (CCIPOnChainState, error) { +func GenerateOnchainState(e deployment2.Environment, ab deployment2.AddressBook) (CCIPOnChainState, error) { state := CCIPOnChainState{ EvmOnRampsV160: make(map[uint64]*evm_2_evm_multi_onramp.EVM2EVMMultiOnRamp), EvmOffRampsV160: make(map[uint64]*evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp), diff --git a/core/deployment/environment.go b/integration-tests/deployment/environment.go similarity index 97% rename from core/deployment/environment.go rename to integration-tests/deployment/environment.go index 4cd63ada6f..8abc84b912 100644 --- a/core/deployment/environment.go +++ b/integration-tests/deployment/environment.go @@ -11,8 +11,9 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" + "github.com/smartcontractkit/ccip/integration-tests/deployment/memory" + "github.com/smartcontractkit/chainlink-common/pkg/logger" - "github.com/smartcontractkit/chainlink/v2/core/deployment/memory" ) const ( diff --git a/core/deployment/memory/chain.go b/integration-tests/deployment/memory/chain.go similarity index 79% rename from core/deployment/memory/chain.go rename to integration-tests/deployment/memory/chain.go index 8701009962..174e70931d 100644 --- a/core/deployment/memory/chain.go +++ b/integration-tests/deployment/memory/chain.go @@ -9,11 +9,10 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" gethtypes "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/params" chainsel "github.com/smartcontractkit/chain-selectors" "github.com/stretchr/testify/require" - - "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" ) type EVMChain struct { @@ -22,9 +21,9 @@ type EVMChain struct { } func fundAddress(t *testing.T, from *bind.TransactOpts, to common.Address, amount *big.Int, backend *backends.SimulatedBackend) { - nonce, err := backend.PendingNonceAt(testutils.Context(t), from.From) + nonce, err := backend.PendingNonceAt(Context(t), from.From) require.NoError(t, err) - gp, err := backend.SuggestGasPrice(testutils.Context(t)) + gp, err := backend.SuggestGasPrice(Context(t)) require.NoError(t, err) rawTx := gethtypes.NewTx(&gethtypes.LegacyTx{ Nonce: nonce, @@ -35,7 +34,7 @@ func fundAddress(t *testing.T, from *bind.TransactOpts, to common.Address, amoun }) signedTx, err := from.Signer(from.From, rawTx) require.NoError(t, err) - err = backend.SendTransaction(testutils.Context(t), signedTx) + err = backend.SendTransaction(Context(t), signedTx) require.NoError(t, err) backend.Commit() } @@ -44,7 +43,10 @@ func GenerateChains(t *testing.T, numChains int) map[uint64]EVMChain { chains := make(map[uint64]EVMChain) for i := 0; i < numChains; i++ { chainID := chainsel.TEST_90000001.EvmChainID + uint64(i) - owner := testutils.MustNewSimTransactor(t) + key, err := crypto.GenerateKey() + require.NoError(t, err) + owner, err := bind.NewKeyedTransactorWithChainID(key, big.NewInt(1337)) + require.NoError(t, err) backend := backends.NewSimulatedBackend(core.GenesisAlloc{ owner.From: {Balance: big.NewInt(0).Mul(big.NewInt(100), big.NewInt(params.Ether))}}, 10000000) chains[chainID] = EVMChain{ diff --git a/core/deployment/memory/job_client.go b/integration-tests/deployment/memory/job_client.go similarity index 100% rename from core/deployment/memory/job_client.go rename to integration-tests/deployment/memory/job_client.go diff --git a/core/deployment/memory/node.go b/integration-tests/deployment/memory/node.go similarity index 93% rename from core/deployment/memory/node.go rename to integration-tests/deployment/memory/node.go index 679a2f45da..ef429f3b6f 100644 --- a/core/deployment/memory/node.go +++ b/integration-tests/deployment/memory/node.go @@ -22,8 +22,6 @@ import ( evmutils "github.com/smartcontractkit/chainlink/v2/core/chains/evm/utils/big" "github.com/smartcontractkit/chainlink/v2/core/chains/legacyevm" configv2 "github.com/smartcontractkit/chainlink/v2/core/config/toml" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" - "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/logger/audit" "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" @@ -32,9 +30,26 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/keystore/keys/ocr2key" "github.com/smartcontractkit/chainlink/v2/core/services/keystore/keys/p2pkey" "github.com/smartcontractkit/chainlink/v2/core/utils" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" "github.com/smartcontractkit/chainlink/v2/plugins" ) +func Context(tb testing.TB) context.Context { + ctx := context.Background() + var cancel func() + switch t := tb.(type) { + case *testing.T: + if d, ok := t.Deadline(); ok { + ctx, cancel = context.WithDeadline(ctx, d) + } + } + if cancel == nil { + ctx, cancel = context.WithCancel(ctx) + } + tb.Cleanup(cancel) + return ctx +} + type Node struct { App chainlink.Application // Transmitter key/OCR keys for this node @@ -122,7 +137,7 @@ func NewNode( LoopRegistry: plugins.NewLoopRegistry(lggr.Named("LoopRegistry"), cfg.Tracing()), GRPCOpts: loop.GRPCOpts{}, } - initOps := []chainlink.CoreRelayerChainInitFunc{chainlink.InitEVM(testutils.Context(t), relayerFactory, evmOpts)} + initOps := []chainlink.CoreRelayerChainInitFunc{chainlink.InitEVM(context.Background(), relayerFactory, evmOpts)} rci, err := chainlink.NewCoreRelayerChainInteroperators(initOps...) require.NoError(t, err) @@ -160,7 +175,7 @@ type Keys struct { func CreateKeys(t *testing.T, app chainlink.Application, chains map[uint64]EVMChain) Keys { - ctx := testutils.Context(t) + ctx := Context(t) require.NoError(t, app.GetKeyStore().Unlock(ctx, "password")) _, err := app.GetKeyStore().P2P().Create(ctx) require.NoError(t, err) @@ -173,7 +188,7 @@ func CreateKeys(t *testing.T, transmitters := make(map[uint64]common.Address) for chainID, chain := range chains { cid := big.NewInt(int64(chainID)) - addrs, err2 := app.GetKeyStore().Eth().EnabledAddressesForChain(testutils.Context(t), cid) + addrs, err2 := app.GetKeyStore().Eth().EnabledAddressesForChain(Context(t), cid) require.NoError(t, err2) if len(addrs) == 1 { // just fund the address @@ -181,9 +196,9 @@ func CreateKeys(t *testing.T, transmitters[chainID] = addrs[0] } else { // create key and fund it - _, err3 := app.GetKeyStore().Eth().Create(testutils.Context(t), cid) + _, err3 := app.GetKeyStore().Eth().Create(Context(t), cid) require.NoError(t, err3, "failed to create key for chain", chainID) - sendingKeys, err3 := app.GetKeyStore().Eth().EnabledAddressesForChain(testutils.Context(t), cid) + sendingKeys, err3 := app.GetKeyStore().Eth().EnabledAddressesForChain(Context(t), cid) require.NoError(t, err3) require.Len(t, sendingKeys, 1) fundAddress(t, chain.DeployerKey, sendingKeys[0], assets.Ether(10).ToInt(), chain.Backend) diff --git a/core/deployment/memory/node_test.go b/integration-tests/deployment/memory/node_test.go similarity index 79% rename from core/deployment/memory/node_test.go rename to integration-tests/deployment/memory/node_test.go index e479e53c5b..438a6ab102 100644 --- a/core/deployment/memory/node_test.go +++ b/integration-tests/deployment/memory/node_test.go @@ -6,8 +6,6 @@ import ( "github.com/hashicorp/consul/sdk/freeport" "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" - - "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" ) func TestNode(t *testing.T) { @@ -15,7 +13,7 @@ func TestNode(t *testing.T) { ports := freeport.GetN(t, 1) node := NewNode(t, ports[0], chains, zapcore.DebugLevel) // We expect 3 transmitter keys - keys, err := node.App.GetKeyStore().Eth().GetAll(testutils.Context(t)) + keys, err := node.App.GetKeyStore().Eth().GetAll(Context(t)) require.NoError(t, err) require.Len(t, keys, 3) // We expect 3 chains supported diff --git a/core/deployment/migrations.go b/integration-tests/deployment/migrations.go similarity index 100% rename from core/deployment/migrations.go rename to integration-tests/deployment/migrations.go From 274121e10039f7359089ed0bc4f1e1d005faf913 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 8 Aug 2024 11:22:00 -0400 Subject: [PATCH 11/42] Pull heavyweight outside --- .../capabilities/ccip/ccip_integration_tests/ocr_node_helper.go | 2 +- core/chains/evm/logpoller/log_poller_test.go | 2 +- core/chains/evm/logpoller/orm_test.go | 2 +- core/chains/evm/txmgr/broadcaster_test.go | 2 +- core/cmd/shell_local_test.go | 2 +- core/internal/features/features_test.go | 2 +- core/internal/features/ocr2/features_ocr2_test.go | 2 +- core/services/fluxmonitorv2/flux_monitor_test.go | 2 +- core/services/fluxmonitorv2/integrations_test.go | 2 +- core/services/job/job_orm_test.go | 2 +- core/services/keeper/integration_test.go | 2 +- .../ocr2/plugins/ccip/testhelpers/integration/chainlink.go | 2 +- .../plugins/ccip/testhelpers/testhelpers_1_4_0/chainlink.go | 2 +- .../functions/integration_tests/v1/internal/testutils.go | 2 +- .../ocr2/plugins/liquiditymanager/internal/integration_test.go | 2 +- .../ocr3impls/multichain_config_tracker_test.go | 2 +- core/services/ocr2/plugins/mercury/helpers_test.go | 2 +- .../ocr2keeper/evmregistry/v21/logprovider/integration_test.go | 2 +- core/services/ocr2/plugins/ocr2keeper/integration_test.go | 2 +- core/services/pg/lease_lock_test.go | 2 +- core/services/pipeline/orm_test.go | 2 +- core/services/vrf/v1/integration_test.go | 2 +- core/services/vrf/v2/bhs_feeder_test.go | 2 +- core/services/vrf/v2/integration_helpers_test.go | 2 +- core/services/vrf/v2/integration_v2_plus_test.go | 2 +- core/services/vrf/v2/integration_v2_reverted_txns_test.go | 2 +- core/services/vrf/v2/integration_v2_test.go | 2 +- core/store/migrate/migrate_test.go | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/core/capabilities/ccip/ccip_integration_tests/ocr_node_helper.go b/core/capabilities/ccip/ccip_integration_tests/ocr_node_helper.go index ec35621bf8..9ac8ecb2fb 100644 --- a/core/capabilities/ccip/ccip_integration_tests/ocr_node_helper.go +++ b/core/capabilities/ccip/ccip_integration_tests/ocr_node_helper.go @@ -32,7 +32,6 @@ import ( evmutils "github.com/smartcontractkit/chainlink/v2/core/chains/evm/utils/big" "github.com/smartcontractkit/chainlink/v2/core/chains/legacyevm" configv2 "github.com/smartcontractkit/chainlink/v2/core/config/toml" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/logger/audit" @@ -41,6 +40,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/keystore/chaintype" "github.com/smartcontractkit/chainlink/v2/core/services/keystore/keys/ocr2key" "github.com/smartcontractkit/chainlink/v2/core/utils" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" "github.com/smartcontractkit/chainlink/v2/plugins" "github.com/stretchr/testify/require" diff --git a/core/chains/evm/logpoller/log_poller_test.go b/core/chains/evm/logpoller/log_poller_test.go index 860b588c77..548711c19b 100644 --- a/core/chains/evm/logpoller/log_poller_test.go +++ b/core/chains/evm/logpoller/log_poller_test.go @@ -36,10 +36,10 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/chains/evm/utils" ubig "github.com/smartcontractkit/chainlink/v2/core/chains/evm/utils/big" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/log_emitter" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/evmtest" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/pgtest" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) func logRuntime(t testing.TB, start time.Time) { diff --git a/core/chains/evm/logpoller/orm_test.go b/core/chains/evm/logpoller/orm_test.go index ce56c79922..ed3f58504a 100644 --- a/core/chains/evm/logpoller/orm_test.go +++ b/core/chains/evm/logpoller/orm_test.go @@ -27,8 +27,8 @@ import ( evmtypes "github.com/smartcontractkit/chainlink/v2/core/chains/evm/types" "github.com/smartcontractkit/chainlink/v2/core/chains/evm/utils" ubig "github.com/smartcontractkit/chainlink/v2/core/chains/evm/utils/big" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) type block struct { diff --git a/core/chains/evm/txmgr/broadcaster_test.go b/core/chains/evm/txmgr/broadcaster_test.go index 3559c329de..d3e2d3515e 100644 --- a/core/chains/evm/txmgr/broadcaster_test.go +++ b/core/chains/evm/txmgr/broadcaster_test.go @@ -42,11 +42,11 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/chains/evm/txmgr" evmtypes "github.com/smartcontractkit/chainlink/v2/core/chains/evm/types" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/configtest" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/evmtest" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/pgtest" "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) // NewEthBroadcaster creates a new txmgr.EthBroadcaster for use in testing. diff --git a/core/cmd/shell_local_test.go b/core/cmd/shell_local_test.go index 5fbbff4260..d1985c4287 100644 --- a/core/cmd/shell_local_test.go +++ b/core/cmd/shell_local_test.go @@ -17,7 +17,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/cmd" cmdMocks "github.com/smartcontractkit/chainlink/v2/core/cmd/mocks" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/mocks" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/configtest" @@ -32,6 +31,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/store/dialects" "github.com/smartcontractkit/chainlink/v2/core/store/models" "github.com/smartcontractkit/chainlink/v2/core/utils" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" "github.com/smartcontractkit/chainlink/v2/plugins" gethTypes "github.com/ethereum/go-ethereum/core/types" diff --git a/core/internal/features/features_test.go b/core/internal/features/features_test.go index 1135c5a4eb..1259597379 100644 --- a/core/internal/features/features_test.go +++ b/core/internal/features/features_test.go @@ -57,7 +57,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/multiwordconsumer_wrapper" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/operator_wrapper" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/configtest" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/evmtest" @@ -74,6 +73,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/static" "github.com/smartcontractkit/chainlink/v2/core/store/models" "github.com/smartcontractkit/chainlink/v2/core/utils" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/web" webauth "github.com/smartcontractkit/chainlink/v2/core/web/auth" ) diff --git a/core/internal/features/ocr2/features_ocr2_test.go b/core/internal/features/ocr2/features_ocr2_test.go index d0f157d8bd..9160310261 100644 --- a/core/internal/features/ocr2/features_ocr2_test.go +++ b/core/internal/features/ocr2/features_ocr2_test.go @@ -43,7 +43,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/authorized_forwarder" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/link_token_interface" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" @@ -54,6 +53,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/ocrbootstrap" "github.com/smartcontractkit/chainlink/v2/core/services/relay/evm" "github.com/smartcontractkit/chainlink/v2/core/store/models" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) type ocr2Node struct { diff --git a/core/services/fluxmonitorv2/flux_monitor_test.go b/core/services/fluxmonitorv2/flux_monitor_test.go index b3a5bcee6b..87ed4e3053 100644 --- a/core/services/fluxmonitorv2/flux_monitor_test.go +++ b/core/services/fluxmonitorv2/flux_monitor_test.go @@ -29,7 +29,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/chains/evm/txmgr" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/flux_aggregator_wrapper" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/mocks" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/pgtest" @@ -42,6 +41,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/keystore/keys/ethkey" "github.com/smartcontractkit/chainlink/v2/core/services/pipeline" pipelinemocks "github.com/smartcontractkit/chainlink/v2/core/services/pipeline/mocks" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) const oracleCount uint8 = 17 diff --git a/core/services/fluxmonitorv2/integrations_test.go b/core/services/fluxmonitorv2/integrations_test.go index 2dacac5428..908d9fb73d 100644 --- a/core/services/fluxmonitorv2/integrations_test.go +++ b/core/services/fluxmonitorv2/integrations_test.go @@ -35,7 +35,6 @@ import ( faw "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/flux_aggregator_wrapper" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/link_token_interface" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/evmtest" "github.com/smartcontractkit/chainlink/v2/core/logger" @@ -45,6 +44,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/pipeline" "github.com/smartcontractkit/chainlink/v2/core/store/models" "github.com/smartcontractkit/chainlink/v2/core/utils" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/web" ) diff --git a/core/services/job/job_orm_test.go b/core/services/job/job_orm_test.go index 348d29747d..c26cf828cc 100644 --- a/core/services/job/job_orm_test.go +++ b/core/services/job/job_orm_test.go @@ -28,7 +28,6 @@ import ( evmtypes "github.com/smartcontractkit/chainlink/v2/core/chains/evm/types" "github.com/smartcontractkit/chainlink/v2/core/chains/evm/utils/big" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/configtest" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/evmtest" @@ -50,6 +49,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/vrf/vrfcommon" "github.com/smartcontractkit/chainlink/v2/core/services/webhook" "github.com/smartcontractkit/chainlink/v2/core/testdata/testspecs" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) const mercuryOracleTOML = `name = 'LINK / ETH | 0x0000000000000000000000000000000000000000000000000000000000000001 | verifier_proxy 0x0000000000000000000000000000000000000001' diff --git a/core/services/keeper/integration_test.go b/core/services/keeper/integration_test.go index cbbe89b3f2..455f5bb506 100644 --- a/core/services/keeper/integration_test.go +++ b/core/services/keeper/integration_test.go @@ -30,12 +30,12 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/keeper_registry_wrapper1_3" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/mock_v3_aggregator_contract" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" "github.com/smartcontractkit/chainlink/v2/core/services/job" "github.com/smartcontractkit/chainlink/v2/core/services/keeper" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" webpresenters "github.com/smartcontractkit/chainlink/v2/core/web/presenters" ) diff --git a/core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go b/core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go index ad42078248..35401b0316 100644 --- a/core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go +++ b/core/services/ocr2/plugins/ccip/testhelpers/integration/chainlink.go @@ -47,7 +47,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/commit_store" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_offramp" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_onramp" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/logger/audit" @@ -72,6 +71,7 @@ import ( evmrelay "github.com/smartcontractkit/chainlink/v2/core/services/relay/evm" clutils "github.com/smartcontractkit/chainlink/v2/core/utils" "github.com/smartcontractkit/chainlink/v2/core/utils/crypto" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" "github.com/smartcontractkit/chainlink/v2/plugins" ) diff --git a/core/services/ocr2/plugins/ccip/testhelpers/testhelpers_1_4_0/chainlink.go b/core/services/ocr2/plugins/ccip/testhelpers/testhelpers_1_4_0/chainlink.go index f406ea0e94..5099a4b57e 100644 --- a/core/services/ocr2/plugins/ccip/testhelpers/testhelpers_1_4_0/chainlink.go +++ b/core/services/ocr2/plugins/ccip/testhelpers/testhelpers_1_4_0/chainlink.go @@ -47,7 +47,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/commit_store_1_2_0" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_offramp_1_2_0" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_onramp_1_2_0" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/logger/audit" @@ -72,6 +71,7 @@ import ( evmrelay "github.com/smartcontractkit/chainlink/v2/core/services/relay/evm" clutils "github.com/smartcontractkit/chainlink/v2/core/utils" "github.com/smartcontractkit/chainlink/v2/core/utils/crypto" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" "github.com/smartcontractkit/chainlink/v2/plugins" ) diff --git a/core/services/ocr2/plugins/functions/integration_tests/v1/internal/testutils.go b/core/services/ocr2/plugins/functions/integration_tests/v1/internal/testutils.go index 6d704b50f9..49a79463a5 100644 --- a/core/services/ocr2/plugins/functions/integration_tests/v1/internal/testutils.go +++ b/core/services/ocr2/plugins/functions/integration_tests/v1/internal/testutils.go @@ -39,7 +39,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/link_token_interface" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/mock_v3_aggregator_contract" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" "github.com/smartcontractkit/chainlink/v2/core/services/functions" @@ -50,6 +49,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/validate" "github.com/smartcontractkit/chainlink/v2/core/services/ocrbootstrap" "github.com/smartcontractkit/chainlink/v2/core/store/models" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) var nilOpts *bind.CallOpts diff --git a/core/services/ocr2/plugins/liquiditymanager/internal/integration_test.go b/core/services/ocr2/plugins/liquiditymanager/internal/integration_test.go index 5701d29375..e648781ad1 100644 --- a/core/services/ocr2/plugins/liquiditymanager/internal/integration_test.go +++ b/core/services/ocr2/plugins/liquiditymanager/internal/integration_test.go @@ -42,7 +42,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/weth9" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/liquiditymanager/generated/liquiditymanager" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/liquiditymanager/generated/mock_l1_bridge_adapter" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/logger/audit" @@ -54,6 +53,7 @@ import ( integrationtesthelpers "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/liquiditymanager/testhelpers/integration" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/validate" "github.com/smartcontractkit/chainlink/v2/core/services/ocrbootstrap" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/utils" "github.com/smartcontractkit/chainlink/v2/plugins" diff --git a/core/services/ocr2/plugins/liquiditymanager/ocr3impls/multichain_config_tracker_test.go b/core/services/ocr2/plugins/liquiditymanager/ocr3impls/multichain_config_tracker_test.go index 6b929398e8..13dd88d1f2 100644 --- a/core/services/ocr2/plugins/liquiditymanager/ocr3impls/multichain_config_tracker_test.go +++ b/core/services/ocr2/plugins/liquiditymanager/ocr3impls/multichain_config_tracker_test.go @@ -18,7 +18,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/chains/evm/headtracker" "github.com/smartcontractkit/chainlink/v2/core/chains/evm/logpoller" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/liquiditymanager/generated/no_op_ocr3" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/pgtest" "github.com/smartcontractkit/chainlink/v2/core/logger" @@ -27,6 +26,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/liquiditymanager/models" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/liquiditymanager/ocr3impls" "github.com/smartcontractkit/chainlink/v2/core/services/relay" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) func setupLogPoller[RI ocr3impls.MultichainMeta](t *testing.T, db *sqlx.DB, bs *keyringsAndSigners[RI]) (logpoller.LogPoller, testUniverse[RI]) { diff --git a/core/services/ocr2/plugins/mercury/helpers_test.go b/core/services/ocr2/plugins/mercury/helpers_test.go index 43d709453b..3637b806de 100644 --- a/core/services/ocr2/plugins/mercury/helpers_test.go +++ b/core/services/ocr2/plugins/mercury/helpers_test.go @@ -29,7 +29,6 @@ import ( commonconfig "github.com/smartcontractkit/chainlink-common/pkg/config" "github.com/smartcontractkit/chainlink/v2/core/chains/evm/utils" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/keystest" "github.com/smartcontractkit/chainlink/v2/core/logger" @@ -42,6 +41,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/ocrbootstrap" "github.com/smartcontractkit/chainlink/v2/core/services/relay/evm/mercury" "github.com/smartcontractkit/chainlink/v2/core/services/relay/evm/mercury/wsrpc/pb" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) var _ pb.MercuryServer = &mercuryServer{} diff --git a/core/services/ocr2/plugins/ocr2keeper/evmregistry/v21/logprovider/integration_test.go b/core/services/ocr2/plugins/ocr2keeper/evmregistry/v21/logprovider/integration_test.go index cdd800071d..475963c575 100644 --- a/core/services/ocr2/plugins/ocr2keeper/evmregistry/v21/logprovider/integration_test.go +++ b/core/services/ocr2/plugins/ocr2keeper/evmregistry/v21/logprovider/integration_test.go @@ -25,12 +25,12 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/chains/evm/logpoller" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/log_upkeep_counter_wrapper" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" evmregistry21 "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ocr2keeper/evmregistry/v21/core" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ocr2keeper/evmregistry/v21/logprovider" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) func TestIntegration_LogEventProvider(t *testing.T) { diff --git a/core/services/ocr2/plugins/ocr2keeper/integration_test.go b/core/services/ocr2/plugins/ocr2keeper/integration_test.go index 2ce9ff3d24..4796c43569 100644 --- a/core/services/ocr2/plugins/ocr2keeper/integration_test.go +++ b/core/services/ocr2/plugins/ocr2keeper/integration_test.go @@ -44,7 +44,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/link_token_interface" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/mock_v3_aggregator_contract" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" @@ -59,6 +58,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/ocrbootstrap" "github.com/smartcontractkit/chainlink/v2/core/services/relay/evm" "github.com/smartcontractkit/chainlink/v2/core/store/models" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) const ( diff --git a/core/services/pg/lease_lock_test.go b/core/services/pg/lease_lock_test.go index 1b4116b5bf..65bbe3b861 100644 --- a/core/services/pg/lease_lock_test.go +++ b/core/services/pg/lease_lock_test.go @@ -12,11 +12,11 @@ import ( "github.com/jmoiron/sqlx" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" "github.com/smartcontractkit/chainlink/v2/core/services/pg" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) func newLeaseLock(t *testing.T, db *sqlx.DB, cfg pg.LeaseLockConfig) pg.LeaseLock { diff --git a/core/services/pipeline/orm_test.go b/core/services/pipeline/orm_test.go index 877aa9e4aa..f3d529d87e 100644 --- a/core/services/pipeline/orm_test.go +++ b/core/services/pipeline/orm_test.go @@ -21,7 +21,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/bridges" "github.com/smartcontractkit/chainlink/v2/core/chains/evm/utils/big" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/configtest" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/pgtest" @@ -30,6 +29,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/job" "github.com/smartcontractkit/chainlink/v2/core/services/pipeline" "github.com/smartcontractkit/chainlink/v2/core/store/models" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) type testOnlyORM interface { diff --git a/core/services/vrf/v1/integration_test.go b/core/services/vrf/v1/integration_test.go index 74006639c6..d7f791ad29 100644 --- a/core/services/vrf/v1/integration_test.go +++ b/core/services/vrf/v1/integration_test.go @@ -20,7 +20,6 @@ import ( ubig "github.com/smartcontractkit/chainlink/v2/core/chains/evm/utils/big" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/solidity_vrf_coordinator_interface" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" "github.com/smartcontractkit/chainlink/v2/core/services/job" @@ -30,6 +29,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/vrf/vrfcommon" "github.com/smartcontractkit/chainlink/v2/core/services/vrf/vrftesthelpers" "github.com/smartcontractkit/chainlink/v2/core/testdata/testspecs" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) func TestIntegration_VRF_JPV2(t *testing.T) { diff --git a/core/services/vrf/v2/bhs_feeder_test.go b/core/services/vrf/v2/bhs_feeder_test.go index b39fd0dec7..d3e0008f18 100644 --- a/core/services/vrf/v2/bhs_feeder_test.go +++ b/core/services/vrf/v2/bhs_feeder_test.go @@ -12,10 +12,10 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/chains/evm/config/toml" "github.com/smartcontractkit/chainlink/v2/core/chains/evm/types" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" "github.com/smartcontractkit/chainlink/v2/core/services/vrf/vrftesthelpers" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) func TestStartHeartbeats(t *testing.T) { diff --git a/core/services/vrf/v2/integration_helpers_test.go b/core/services/vrf/v2/integration_helpers_test.go index d61779c571..2fccdb2b2e 100644 --- a/core/services/vrf/v2/integration_helpers_test.go +++ b/core/services/vrf/v2/integration_helpers_test.go @@ -30,7 +30,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/vrf_external_sub_owner_example" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/vrfv2_transparent_upgradeable_proxy" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/evmtest" "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" @@ -41,6 +40,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/vrf/vrftesthelpers" "github.com/smartcontractkit/chainlink/v2/core/testdata/testspecs" "github.com/smartcontractkit/chainlink/v2/core/utils" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) func testSingleConsumerHappyPath( diff --git a/core/services/vrf/v2/integration_v2_plus_test.go b/core/services/vrf/v2/integration_v2_plus_test.go index 53baaa0eda..3aa2302e55 100644 --- a/core/services/vrf/v2/integration_v2_plus_test.go +++ b/core/services/vrf/v2/integration_v2_plus_test.go @@ -40,7 +40,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/vrfv2plus_consumer_example" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/vrfv2plus_reverting_example" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/configtest" "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" @@ -51,6 +50,7 @@ import ( v22 "github.com/smartcontractkit/chainlink/v2/core/services/vrf/v2" "github.com/smartcontractkit/chainlink/v2/core/services/vrf/vrfcommon" "github.com/smartcontractkit/chainlink/v2/core/services/vrf/vrftesthelpers" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) type coordinatorV2PlusUniverse struct { diff --git a/core/services/vrf/v2/integration_v2_reverted_txns_test.go b/core/services/vrf/v2/integration_v2_reverted_txns_test.go index 25e3afcf75..6682fe9e88 100644 --- a/core/services/vrf/v2/integration_v2_reverted_txns_test.go +++ b/core/services/vrf/v2/integration_v2_reverted_txns_test.go @@ -27,7 +27,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/vrf_coordinator_v2" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/vrf_external_sub_owner_example" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/services/chainlink" "github.com/smartcontractkit/chainlink/v2/core/services/job" @@ -37,6 +36,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/vrf/vrfcommon" "github.com/smartcontractkit/chainlink/v2/core/testdata/testspecs" "github.com/smartcontractkit/chainlink/v2/core/utils" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) var ( diff --git a/core/services/vrf/v2/integration_v2_test.go b/core/services/vrf/v2/integration_v2_test.go index e9ae908565..becee19aaa 100644 --- a/core/services/vrf/v2/integration_v2_test.go +++ b/core/services/vrf/v2/integration_v2_test.go @@ -63,7 +63,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/vrfv2_wrapper" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/generated/vrfv2_wrapper_consumer_example" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/configtest" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/evmtest" @@ -83,6 +82,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/vrf/vrftesthelpers" "github.com/smartcontractkit/chainlink/v2/core/testdata/testspecs" "github.com/smartcontractkit/chainlink/v2/core/utils" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) var defaultMaxGasPrice = uint64(1e12) diff --git a/core/store/migrate/migrate_test.go b/core/store/migrate/migrate_test.go index 9a8bf96573..4138e0d266 100644 --- a/core/store/migrate/migrate_test.go +++ b/core/store/migrate/migrate_test.go @@ -19,7 +19,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/chains/evm/logpoller" ubig "github.com/smartcontractkit/chainlink/v2/core/chains/evm/utils/big" "github.com/smartcontractkit/chainlink/v2/core/config/env" - "github.com/smartcontractkit/chainlink/v2/core/internal/cltest/heavyweight" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/configtest" "github.com/smartcontractkit/chainlink/v2/core/logger" @@ -28,6 +27,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/pipeline" "github.com/smartcontractkit/chainlink/v2/core/store/migrate" "github.com/smartcontractkit/chainlink/v2/core/store/models" + "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" ) type OffchainReporting2OracleSpec100 struct { From f831c7a763e14d5de8a265de568d547bc6bd7a4b Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 8 Aug 2024 11:24:38 -0400 Subject: [PATCH 12/42] Another import --- .../deployment/ccip/migrations/1_initial_deploy.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy.go index 4dadfc2650..a68f3da4e8 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy.go @@ -4,7 +4,7 @@ import ( "github.com/ethereum/go-ethereum/common" deployment2 "github.com/smartcontractkit/ccip/integration-tests/deployment" - ccipdeployment "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/deployment" + ccipdeployment "github.com/smartcontractkit/chainlink/integration-tests/deployment/ccip" ) // We expect the migration input to be unique per migration. From 40990fb61fe1f87c29f0d42412fa723ef37604d0 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 8 Aug 2024 11:33:58 -0400 Subject: [PATCH 13/42] Go mod tidy --- integration-tests/go.mod | 3 ++- integration-tests/go.sum | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/integration-tests/go.mod b/integration-tests/go.mod index b521a60bea..057d8ba660 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -18,6 +18,7 @@ require ( github.com/go-resty/resty/v2 v2.11.0 github.com/google/go-cmp v0.6.0 github.com/google/uuid v1.6.0 + github.com/hashicorp/consul/sdk v0.16.0 github.com/jmoiron/sqlx v1.4.0 github.com/lib/pq v1.10.9 github.com/manifoldco/promptui v0.9.0 @@ -57,6 +58,7 @@ require ( gopkg.in/guregu/null.v4 v4.0.0 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 + gotest.tools/v3 v3.5.1 k8s.io/apimachinery v0.28.2 ) @@ -258,7 +260,6 @@ require ( github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect github.com/hashicorp/consul/api v1.25.1 // indirect - github.com/hashicorp/consul/sdk v0.16.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-envparse v0.1.0 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 2d783f2a41..98b8212599 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -2171,7 +2171,6 @@ gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 3c961edc22551a6cec3b4e25f7c7a8f7a090cc05 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 8 Aug 2024 11:53:49 -0400 Subject: [PATCH 14/42] Mod tidy --- go.mod | 1 - go.sum | 1 + integration-tests/.golangci.yml | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index f8a6031b77..efc4f413d3 100644 --- a/go.mod +++ b/go.mod @@ -116,7 +116,6 @@ require ( google.golang.org/protobuf v1.34.2 gopkg.in/guregu/null.v4 v4.0.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 - gotest.tools/v3 v3.5.1 k8s.io/utils v0.0.0-20230711102312-30195339c3c7 ) diff --git a/go.sum b/go.sum index 21a87dcd58..1c4f247f0e 100644 --- a/go.sum +++ b/go.sum @@ -1674,6 +1674,7 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/integration-tests/.golangci.yml b/integration-tests/.golangci.yml index 897c72d1ec..8969110d98 100644 --- a/integration-tests/.golangci.yml +++ b/integration-tests/.golangci.yml @@ -46,7 +46,7 @@ linters-settings: - name: errorf - name: empty-block - name: superfluous-else - - name: unused-parameter + #- name: unused-parameter - name: unreachable-code - name: redefines-builtin-id - name: waitgroup-by-value From 6373a5d755a05e9e2d787386d3db49e3f47d2b8f Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 8 Aug 2024 13:35:34 -0400 Subject: [PATCH 15/42] Fix import paths --- .../deployment/address_book_test.go | 1 - integration-tests/deployment/ccip/deploy.go | 4 +++- .../deployment/ccip/deploy_test.go | 3 ++- .../ccip/migrations/1_initial_deploy.go | 22 ++++++++++--------- .../ccip/migrations/1_initial_deploy_test.go | 3 ++- integration-tests/deployment/ccip/propose.go | 3 ++- integration-tests/deployment/ccip/state.go | 3 ++- integration-tests/deployment/environment.go | 2 +- integration-tests/docker/cmd/main.go | 2 +- 9 files changed, 25 insertions(+), 18 deletions(-) diff --git a/integration-tests/deployment/address_book_test.go b/integration-tests/deployment/address_book_test.go index 3e9b8e6791..1d5e350567 100644 --- a/integration-tests/deployment/address_book_test.go +++ b/integration-tests/deployment/address_book_test.go @@ -37,5 +37,4 @@ func TestAddressBook(t *testing.T) { }, }) - // TODO: Further testing of merge etc. } diff --git a/integration-tests/deployment/ccip/deploy.go b/integration-tests/deployment/ccip/deploy.go index 966ff0a122..1ee6f8e281 100644 --- a/integration-tests/deployment/ccip/deploy.go +++ b/integration-tests/deployment/ccip/deploy.go @@ -2,7 +2,8 @@ package deployment import ( "github.com/ethereum/go-ethereum/common" - "github.com/smartcontractkit/ccip/integration-tests/deployment" + + "github.com/smartcontractkit/chainlink/integration-tests/deployment" "github.com/smartcontractkit/chainlink-common/pkg/logger" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/arm_proxy_contract" @@ -62,6 +63,7 @@ func GenerateJobSpecs(capReg common.Address) (CCIPSpec, error) { } type DeployCCIPContractConfig struct { + // Existing addresses which we want to skip deployment Weth9s map[uint64]common.Address // TODO: More params as needed } diff --git a/integration-tests/deployment/ccip/deploy_test.go b/integration-tests/deployment/ccip/deploy_test.go index 9836aa911d..36522bb082 100644 --- a/integration-tests/deployment/ccip/deploy_test.go +++ b/integration-tests/deployment/ccip/deploy_test.go @@ -3,10 +3,11 @@ package deployment import ( "testing" - "github.com/smartcontractkit/ccip/integration-tests/deployment" chainsel "github.com/smartcontractkit/chain-selectors" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + "github.com/smartcontractkit/chainlink/integration-tests/deployment" ) func TestDeployCCIPContracts(t *testing.T) { diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy.go index a68f3da4e8..d2fc25db05 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy.go @@ -2,35 +2,37 @@ package migrations import ( "github.com/ethereum/go-ethereum/common" - deployment2 "github.com/smartcontractkit/ccip/integration-tests/deployment" + + "github.com/smartcontractkit/chainlink/integration-tests/deployment" ccipdeployment "github.com/smartcontractkit/chainlink/integration-tests/deployment/ccip" ) // We expect the migration input to be unique per migration. // TODO: Maybe there's a generics approach here? -func Apply0001(env deployment2.Environment, c ccipdeployment.DeployCCIPContractConfig) (deployment2.MigrationOutput, error) { +// Note if the migration is a deployment and it fails we have 2 options: +// - Just throw away the addresses, fix issue and try again (potentially expensive on mainnet) +// - Roll forward with another migration completing the deployment +func Apply0001(env deployment.Environment, c ccipdeployment.DeployCCIPContractConfig) (deployment.MigrationOutput, error) { ab, err := ccipdeployment.DeployCCIPContracts(env, c) if err != nil { - // If we fail here, just throw away the addresses. - // TODO: if expensive could consider partial recovery env.Logger.Errorw("Failed to deploy CCIP contracts", "err", err, "addresses", ab) - return deployment2.MigrationOutput{}, err + return deployment.MigrationOutput{}, err } state, err := ccipdeployment.GenerateOnchainState(env, ab) if err != nil { - return deployment2.MigrationOutput{}, err + return deployment.MigrationOutput{}, err } js, err := ccipdeployment.GenerateJobSpecs(common.Address{}) if err != nil { - return deployment2.MigrationOutput{}, err + return deployment.MigrationOutput{}, err } proposal, err := ccipdeployment.GenerateAcceptOwnershipProposal(env, env.AllChainSelectors(), state) if err != nil { - return deployment2.MigrationOutput{}, err + return deployment.MigrationOutput{}, err } - return deployment2.MigrationOutput{ - Proposals: []deployment2.Proposal{proposal}, + return deployment.MigrationOutput{ + Proposals: []deployment.Proposal{proposal}, AddressBook: ab, JobSpecs: map[string][]string{ "chain-layer": {js.String()}, diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index 716c0e5096..35eceb2cef 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -4,9 +4,10 @@ import ( "context" "testing" - "github.com/smartcontractkit/ccip/integration-tests/deployment" "github.com/stretchr/testify/require" + "github.com/smartcontractkit/chainlink/integration-tests/deployment" + ccipdeployment "github.com/smartcontractkit/chainlink/integration-tests/deployment/ccip" ) diff --git a/integration-tests/deployment/ccip/propose.go b/integration-tests/deployment/ccip/propose.go index fd50b99a5b..bf350a75d9 100644 --- a/integration-tests/deployment/ccip/propose.go +++ b/integration-tests/deployment/ccip/propose.go @@ -5,8 +5,9 @@ import ( "time" "github.com/ethereum/go-ethereum/common" - deployment2 "github.com/smartcontractkit/ccip/integration-tests/deployment" chainsel "github.com/smartcontractkit/chain-selectors" + + deployment2 "github.com/smartcontractkit/chainlink/integration-tests/deployment" ) func GenerateAcceptOwnershipProposal( diff --git a/integration-tests/deployment/ccip/state.go b/integration-tests/deployment/ccip/state.go index 3ca66f7150..dab65fe37a 100644 --- a/integration-tests/deployment/ccip/state.go +++ b/integration-tests/deployment/ccip/state.go @@ -5,9 +5,10 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/pkg/errors" - deployment2 "github.com/smartcontractkit/ccip/integration-tests/deployment" chainsel "github.com/smartcontractkit/chain-selectors" + deployment2 "github.com/smartcontractkit/chainlink/integration-tests/deployment" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/arm_proxy_contract" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_offramp" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_onramp" diff --git a/integration-tests/deployment/environment.go b/integration-tests/deployment/environment.go index 8abc84b912..19f24b7611 100644 --- a/integration-tests/deployment/environment.go +++ b/integration-tests/deployment/environment.go @@ -11,7 +11,7 @@ import ( "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" - "github.com/smartcontractkit/ccip/integration-tests/deployment/memory" + "github.com/smartcontractkit/chainlink/integration-tests/deployment/memory" "github.com/smartcontractkit/chainlink-common/pkg/logger" ) diff --git a/integration-tests/docker/cmd/main.go b/integration-tests/docker/cmd/main.go index 2d61904f3e..e10a82d5cc 100644 --- a/integration-tests/docker/cmd/main.go +++ b/integration-tests/docker/cmd/main.go @@ -10,7 +10,7 @@ import ( "github.com/spf13/cobra" "github.com/testcontainers/testcontainers-go" - "github.com/smartcontractkit/ccip/integration-tests/docker/cmd/internal" + "github.com/smartcontractkit/chainlink/integration-tests/docker/cmd/internal" ) var rootCmd = &cobra.Command{ From 86249061ba319524a0e47d71a6ef09ec98d31a22 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 8 Aug 2024 13:50:24 -0400 Subject: [PATCH 16/42] Leave docker alone --- integration-tests/docker/cmd/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/docker/cmd/main.go b/integration-tests/docker/cmd/main.go index e10a82d5cc..2d61904f3e 100644 --- a/integration-tests/docker/cmd/main.go +++ b/integration-tests/docker/cmd/main.go @@ -10,7 +10,7 @@ import ( "github.com/spf13/cobra" "github.com/testcontainers/testcontainers-go" - "github.com/smartcontractkit/chainlink/integration-tests/docker/cmd/internal" + "github.com/smartcontractkit/ccip/integration-tests/docker/cmd/internal" ) var rootCmd = &cobra.Command{ From 51942e80cab0e2adcca9656247d7dab0b09d65e5 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Mon, 12 Aug 2024 19:22:58 -0400 Subject: [PATCH 17/42] Build job specs against JD interface --- integration-tests/deployment/address_book.go | 6 + integration-tests/deployment/ccip/deploy.go | 336 ++- .../deployment/ccip/deploy_test.go | 34 +- .../ccip/migrations/1_initial_deploy.go | 17 +- .../ccip/migrations/1_initial_deploy_test.go | 115 +- integration-tests/deployment/ccip/propose.go | 47 +- integration-tests/deployment/ccip/state.go | 119 +- integration-tests/deployment/environment.go | 62 +- .../deployment/jd/job/v1/job.pb.go | 1767 ++++++++++++ .../deployment/jd/job/v1/job_grpc.pb.go | 345 +++ .../deployment/jd/node/v1/node.pb.go | 2399 +++++++++++++++++ .../deployment/jd/node/v1/node_grpc.pb.go | 343 +++ .../deployment/jd/shared/ptypes/label.pb.go | 311 +++ .../deployment/memory/environment.go | 111 + .../deployment/memory/job_client.go | 127 +- integration-tests/deployment/memory/node.go | 26 +- .../deployment/memory/node_test.go | 2 +- integration-tests/deployment/migrations.go | 17 +- integration-tests/go.mod | 5 +- integration-tests/go.sum | 2 + 20 files changed, 5982 insertions(+), 209 deletions(-) create mode 100644 integration-tests/deployment/jd/job/v1/job.pb.go create mode 100644 integration-tests/deployment/jd/job/v1/job_grpc.pb.go create mode 100644 integration-tests/deployment/jd/node/v1/node.pb.go create mode 100644 integration-tests/deployment/jd/node/v1/node_grpc.pb.go create mode 100644 integration-tests/deployment/jd/shared/ptypes/label.pb.go create mode 100644 integration-tests/deployment/memory/environment.go diff --git a/integration-tests/deployment/address_book.go b/integration-tests/deployment/address_book.go index f18d634a5f..5850ef88e7 100644 --- a/integration-tests/deployment/address_book.go +++ b/integration-tests/deployment/address_book.go @@ -5,6 +5,7 @@ import "fmt" type AddressBook interface { Save(chainSelector uint64, address string, typeAndVersion string) error Addresses() (map[uint64]map[string]string, error) + AddressesForChain(chain uint64) (map[string]string, error) // Allows for merging address books (e.g. new deployments with existing ones) Merge(other AddressBook) error } @@ -29,6 +30,11 @@ func (m *AddressBookMap) Addresses() (map[uint64]map[string]string, error) { return m.AddressesByChain, nil } +func (m *AddressBookMap) AddressesForChain(chain uint64) (map[string]string, error) { + // TODO error + return m.AddressesByChain[chain], nil +} + // Attention this will mutate existing book func (m *AddressBookMap) Merge(ab AddressBook) error { addresses, err := ab.Addresses() diff --git a/integration-tests/deployment/ccip/deploy.go b/integration-tests/deployment/ccip/deploy.go index 1ee6f8e281..ebe59ff16d 100644 --- a/integration-tests/deployment/ccip/deploy.go +++ b/integration-tests/deployment/ccip/deploy.go @@ -1,36 +1,61 @@ -package deployment +package ccipdeployment import ( + "context" + "fmt" + "math/big" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" - "github.com/smartcontractkit/chainlink/integration-tests/deployment" + nodev1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/node/v1" + + owner_helpers "github.com/smartcontractkit/ccip-owner-contracts/gethwrappers" "github.com/smartcontractkit/chainlink-common/pkg/logger" + "github.com/smartcontractkit/chainlink/integration-tests/deployment" + "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/validate" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/arm_proxy_contract" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_offramp" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_onramp" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/mock_arm_contract" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/nonce_manager" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/price_registry" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/token_admin_registry" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/weth9" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/keystone/generated/capabilities_registry" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/shared/generated/burn_mint_erc677" + "github.com/smartcontractkit/chainlink/v2/core/services/relay" ) var ( - ARMProxy_1_1_0 = "ARMProxy 1.0.0" - MockARM_1_0_0 = "MockARM 1.0.0" - LinkToken_1_0_0 = "LinkToken 1.0.0" - TokenAdminRegistry_1_0_0 = "TokenAdminRegistry 1.0.0" - WETH9_1_0_0 = "WETH9 1.0.0" - Router_1_0_0 = "Router 1.0.0" + // 1.0 + ARMProxy_1_1_0 = "ARMProxy 1.0.0" + MockARM_1_0_0 = "MockARM 1.0.0" + LinkToken_1_0_0 = "LinkToken 1.0.0" + WETH9_1_0_0 = "WETH9 1.0.0" + MCMS_1_0_0 = "ManyChainMultiSig 1.0.0" + RBAC_Timelock_1_0_0 = "RBACTimelock 1.0.0" + + // 1.2 + Router_1_2_0 = "Router 1.2.0" + // 1.5 + TokenAdminRegistry_1_5_0 = "TokenAdminRegistry 1.5.0-dev" + // 1.6 CapabilitiesRegistry_1_0_0 = "CapabilitiesRegistry 1.0.0" EVM2EVMMultiOnRamp_1_6_0 = "EVM2EVMMultiOnRamp 1.6.0-dev" EVM2EVMMultiOffRamp_1_6_0 = "EVM2EVMMultiOffRamp 1.6.0-dev" - PriceRegistry_1_0_0 = "PriceRegistry 1.0.0" - NonceManager_1_0_0 = "NonceManager 1.0.0" + NonceManager_1_6_0 = "NonceManager 1.6.0-dev" + PriceRegistry_1_6_0 = "PriceRegistry 1.6.0-dev" + + CapabilityVersion = "1.0.0" ) // TODO: pull up to general deployment pkg func deployContract( lggr logger.Logger, - deploy func() (common.Address, string, common.Hash, error), + deploy func() (common.Address, string, *types.Transaction, error), confirm func(common.Hash) error, save func(address common.Address, tv string) error, ) (common.Address, error) { @@ -39,7 +64,7 @@ func deployContract( lggr.Errorw("Failed to deploy contract", "err", err) return common.Address{}, err } - err = confirm(tx) + err = confirm(tx.Hash()) if err != nil { lggr.Errorw("Failed to confirm deployment", "err", err) return common.Address{}, err @@ -58,14 +83,92 @@ func (s CCIPSpec) String() string { return "" } -func GenerateJobSpecs(capReg common.Address) (CCIPSpec, error) { - return CCIPSpec{}, nil +// In our case, the only address needed is the cap registry which is actually an env var. +// and will pre-exist for our deployment. So the job specs only depend on the environment operators. +func NewCCIPJobSpecs(nodeIds []string, oc deployment.OffchainClient) (map[string][]string, error) { + // Generate a set of brand new job specs for CCIP for a specific environment + // (including NOPs) and new addresses. + // We want to assign one CCIP capability job to each node. And node with + // an addr we'll list as bootstrapper. + // Find the bootstrap nodes + bootstrapMp := make(map[string]struct{}) + for _, node := range nodeIds { + // TODO: Filter should accept multiple nodes + nodeChainConfigs, err := oc.ListNodeChainConfigs(context.Background(), &nodev1.ListNodeChainConfigsRequest{Filter: &nodev1.ListNodeChainConfigsRequest_Filter{ + NodeId: node, + }}) + if err != nil { + return nil, err + } + for _, chainConfig := range nodeChainConfigs.ChainConfigs { + if chainConfig.Ocr2Config.IsBootstrap { + bootstrapMp[fmt.Sprintf("%s@%s", + // p2p_12D3... -> 12D3... + chainConfig.Ocr2Config.P2PKeyBundle.PeerId[4:], chainConfig.Ocr2Config.Multiaddr)] = struct{}{} + } + } + } + var bootstraps []string + for b := range bootstrapMp { + bootstraps = append(bootstraps, b) + } + nodesToJobSpecs := make(map[string][]string) + for _, node := range nodeIds { + // TODO: Filter should accept multiple. + nodeChainConfigs, err := oc.ListNodeChainConfigs(context.Background(), &nodev1.ListNodeChainConfigsRequest{Filter: &nodev1.ListNodeChainConfigsRequest_Filter{ + NodeId: node, + }}) + if err != nil { + return nil, err + } + spec, err := validate.NewCCIPSpecToml(validate.SpecArgs{ + P2PV2Bootstrappers: bootstraps, + CapabilityVersion: CapabilityVersion, + CapabilityLabelledName: "CCIP", + OCRKeyBundleIDs: map[string]string{ + // TODO: Validate that that all EVM chains are using the same keybundle. + relay.NetworkEVM: nodeChainConfigs.ChainConfigs[0].Ocr2Config.OcrKeyBundle.BundleId, + }, + // TODO: validate that all EVM chains are using the same keybundle + P2PKeyID: nodeChainConfigs.ChainConfigs[0].Ocr2Config.P2PKeyBundle.PeerId, + RelayConfigs: nil, + PluginConfig: map[string]any{}, + }) + if err != nil { + return nil, err + } + nodesToJobSpecs[node] = append(nodesToJobSpecs[node], spec) + } + return nodesToJobSpecs, nil } type DeployCCIPContractConfig struct { - // Existing addresses which we want to skip deployment - Weth9s map[uint64]common.Address - // TODO: More params as needed + // Existing contracts which we want to skip deployment + // Leave empty if we want to deploy everything + // TODO: Add skips to deploy function. + CCIPOnChainState +} + +func DeployCapReg(lggr logger.Logger, chains map[uint64]deployment.Chain, chainSel uint64) (deployment.AddressBook, error) { + ab := deployment.NewMemoryAddressBook() + chain := chains[chainSel] + saveToChain := func(addr common.Address, tv string) error { + return ab.Save(chain.Selector, addr.String(), tv) + } + capRegAddr, err := deployContract(lggr, + func() (common.Address, string, *types.Transaction, error) { + cr, tx, _, err2 := capabilities_registry.DeployCapabilitiesRegistry( + chain.DeployerKey, + chain.Client, + ) + return cr, CapabilitiesRegistry_1_0_0, tx, err2 + }, chain.Confirm, saveToChain) + if err != nil { + lggr.Errorw("Failed to deploy capreg", "err", err) + return ab, err + } + lggr.Infow("deployed capreg", "addr", capRegAddr) + return ab, nil } // TODO: Likely we'll want to further parameterize the deployment @@ -74,19 +177,20 @@ type DeployCCIPContractConfig struct { // Deployment produces an address book of everything it deployed. func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) (deployment.AddressBook, error) { ab := deployment.NewMemoryAddressBook() - for _, chain := range e.Chains { + + for sel, chain := range e.Chains { saveToChain := func(addr common.Address, tv string) error { return ab.Save(chain.Selector, addr.String(), tv) } // TODO: Still waiting for RMNRemote/RMNHome contracts etc. mockARM, err := deployContract(e.Logger, - func() (common.Address, string, common.Hash, error) { + func() (common.Address, string, *types.Transaction, error) { mockARM, tx, _, err2 := mock_arm_contract.DeployMockARMContract( chain.DeployerKey, chain.Client, ) - return mockARM, MockARM_1_0_0, tx.Hash(), err2 + return mockARM, MockARM_1_0_0, tx, err2 }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy mockARM", "err", err) @@ -94,14 +198,48 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( } e.Logger.Infow("deployed mockARM", "addr", mockARM) + mcmAddr, err := deployContract(e.Logger, + func() (common.Address, string, *types.Transaction, error) { + mcm, tx, _, err2 := owner_helpers.DeployManyChainMultiSig( + chain.DeployerKey, + chain.Client, + ) + return mcm, MCMS_1_0_0, tx, err2 + }, chain.Confirm, saveToChain) + if err != nil { + e.Logger.Errorw("Failed to deploy mcm", "err", err) + return ab, err + } + e.Logger.Infow("deployed mcm", "addr", mcmAddr) + + _, err = deployContract(e.Logger, + func() (common.Address, string, *types.Transaction, error) { + timelock, tx, _, err2 := owner_helpers.DeployRBACTimelock( + chain.DeployerKey, + chain.Client, + big.NewInt(0), // minDelay + mcmAddr, + []common.Address{mcmAddr}, // proposers + []common.Address{chain.DeployerKey.From}, //executors + []common.Address{mcmAddr}, // cancellers + []common.Address{mcmAddr}, // bypassers + ) + return timelock, RBAC_Timelock_1_0_0, tx, err2 + }, chain.Confirm, saveToChain) + if err != nil { + e.Logger.Errorw("Failed to deploy timelock", "err", err) + return ab, err + } + e.Logger.Infow("deployed timelock", "addr", mcmAddr) + armProxy, err := deployContract(e.Logger, - func() (common.Address, string, common.Hash, error) { + func() (common.Address, string, *types.Transaction, error) { armProxy, tx, _, err2 := arm_proxy_contract.DeployARMProxyContract( chain.DeployerKey, chain.Client, mockARM, ) - return armProxy, ARMProxy_1_1_0, tx.Hash(), err2 + return armProxy, ARMProxy_1_1_0, tx, err2 }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy armProxy", "err", err) @@ -110,27 +248,44 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( e.Logger.Infow("deployed armProxy", "addr", armProxy) weth9, err := deployContract(e.Logger, - func() (common.Address, string, common.Hash, error) { + func() (common.Address, string, *types.Transaction, error) { weth9, tx, _, err2 := weth9.DeployWETH9( chain.DeployerKey, chain.Client, ) - return weth9, WETH9_1_0_0, tx.Hash(), err2 + return weth9, WETH9_1_0_0, tx, err2 }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy weth9", "err", err) return ab, err } + linkTokenAddr, err := deployContract(e.Logger, + func() (common.Address, string, *types.Transaction, error) { + linkToken, tx, _, err2 := burn_mint_erc677.DeployBurnMintERC677( + chain.DeployerKey, + chain.Client, + "Link Token", + "LINK", + uint8(18), + big.NewInt(0).Mul(big.NewInt(1e9), big.NewInt(1e18)), + ) + return linkToken, LinkToken_1_0_0, tx, err2 + }, chain.Confirm, saveToChain) + if err != nil { + e.Logger.Errorw("Failed to deploy linkToken", "err", err) + return ab, err + } + routerAddr, err := deployContract(e.Logger, - func() (common.Address, string, common.Hash, error) { + func() (common.Address, string, *types.Transaction, error) { router, tx, _, err2 := router.DeployRouter( chain.DeployerKey, chain.Client, weth9, armProxy, ) - return router, Router_1_0_0, tx.Hash(), err2 + return router, Router_1_2_0, tx, err2 }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy router", "err", err) @@ -139,17 +294,142 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( e.Logger.Infow("deployed router", "addr", routerAddr) tokenAdminRegistry, err := deployContract(e.Logger, - func() (common.Address, string, common.Hash, error) { + func() (common.Address, string, *types.Transaction, error) { tokenAdminRegistry, tx, _, err2 := token_admin_registry.DeployTokenAdminRegistry( chain.DeployerKey, chain.Client) - return tokenAdminRegistry, TokenAdminRegistry_1_0_0, tx.Hash(), err2 + return tokenAdminRegistry, TokenAdminRegistry_1_5_0, tx, err2 }, chain.Confirm, saveToChain) if err != nil { e.Logger.Errorw("Failed to deploy token admin registry", "err", err) return ab, err } e.Logger.Infow("deployed tokenAdminRegistry", "addr", tokenAdminRegistry) + + nonceManagerAddr, err := deployContract(e.Logger, + func() (common.Address, string, *types.Transaction, error) { + nonceManager, tx, _, err2 := nonce_manager.DeployNonceManager( + chain.DeployerKey, + chain.Client, + []common.Address{}, // Need to add onRamp after + ) + return nonceManager, NonceManager_1_6_0, tx, err2 + }, chain.Confirm, saveToChain) + if err != nil { + e.Logger.Errorw("Failed to deploy router", "err", err) + return ab, err + } + + priceRegistryAddr, err := deployContract(e.Logger, + func() (common.Address, string, *types.Transaction, error) { + pr, tx, _, err2 := price_registry.DeployPriceRegistry( + chain.DeployerKey, + chain.Client, + price_registry.PriceRegistryStaticConfig{ + MaxFeeJuelsPerMsg: big.NewInt(0).Mul(big.NewInt(2e2), big.NewInt(1e18)), + LinkToken: linkTokenAddr, + StalenessThreshold: uint32(86400), + }, + []common.Address{}, // ramps added after + []common.Address{weth9}, // fee tokens + []price_registry.PriceRegistryTokenPriceFeedUpdate{}, + []price_registry.PriceRegistryTokenTransferFeeConfigArgs{}, // TODO: tokens + []price_registry.PriceRegistryPremiumMultiplierWeiPerEthArgs{ + { + Token: weth9, + PremiumMultiplierWeiPerEth: 1e6, + }, + }, + []price_registry.PriceRegistryDestChainConfigArgs{}, + ) + return pr, PriceRegistry_1_6_0, tx, err2 + }, chain.Confirm, saveToChain) + if err != nil { + e.Logger.Errorw("Failed to deploy price registry", "err", err) + return ab, err + } + + onRampAddr, err := deployContract(e.Logger, + func() (common.Address, string, *types.Transaction, error) { + onRamp, tx, _, err2 := evm_2_evm_multi_onramp.DeployEVM2EVMMultiOnRamp( + chain.DeployerKey, + chain.Client, + evm_2_evm_multi_onramp.EVM2EVMMultiOnRampStaticConfig{ + ChainSelector: sel, + RmnProxy: routerAddr, + NonceManager: nonceManagerAddr, + TokenAdminRegistry: tokenAdminRegistry, + }, + evm_2_evm_multi_onramp.EVM2EVMMultiOnRampDynamicConfig{ + PriceRegistry: priceRegistryAddr, + FeeAggregator: common.HexToAddress("0x1"), // TODO real fee aggregator + }, + []evm_2_evm_multi_onramp.EVM2EVMMultiOnRampDestChainConfigArgs{}, + ) + return onRamp, EVM2EVMMultiOnRamp_1_6_0, tx, err2 + }, chain.Confirm, saveToChain) + if err != nil { + e.Logger.Errorw("Failed to deploy onramp", "err", err) + return ab, err + } + e.Logger.Infow("deployed onramp", "addr", tokenAdminRegistry) + + offRampAddr, err := deployContract(e.Logger, + func() (common.Address, string, *types.Transaction, error) { + offRamp, tx, _, err2 := evm_2_evm_multi_offramp.DeployEVM2EVMMultiOffRamp( + chain.DeployerKey, + chain.Client, + evm_2_evm_multi_offramp.EVM2EVMMultiOffRampStaticConfig{ + ChainSelector: sel, + RmnProxy: routerAddr, + NonceManager: nonceManagerAddr, + TokenAdminRegistry: tokenAdminRegistry, + }, + evm_2_evm_multi_offramp.EVM2EVMMultiOffRampDynamicConfig{ + PriceRegistry: priceRegistryAddr, + PermissionLessExecutionThresholdSeconds: uint32(86400), + MaxTokenTransferGas: uint32(200_000), + MaxPoolReleaseOrMintGas: uint32(200_000), + }, + []evm_2_evm_multi_offramp.EVM2EVMMultiOffRampSourceChainConfigArgs{}, + ) + return offRamp, EVM2EVMMultiOffRamp_1_6_0, tx, err2 + }, chain.Confirm, saveToChain) + if err != nil { + e.Logger.Errorw("Failed to deploy offramp", "err", err) + return ab, err + } + e.Logger.Infow("deployed offramp", "addr", offRampAddr) + + // Enable ramps on price registry/nonce manager + pr, err := price_registry.NewPriceRegistry(priceRegistryAddr, chain.Client) + if err != nil { + e.Logger.Errorw("Failed to create price registry", "err", err) + return ab, err + } + tx, err := pr.ApplyAuthorizedCallerUpdates(chain.DeployerKey, price_registry.AuthorizedCallersAuthorizedCallerArgs{ + AddedCallers: []common.Address{offRampAddr}, + }) + if err := chain.Confirm(tx.Hash()); err != nil { + e.Logger.Errorw("Failed to confirm price registry authorized caller update", "err", err) + return ab, err + } + nm, err := nonce_manager.NewNonceManager(nonceManagerAddr, chain.Client) + if err != nil { + e.Logger.Errorw("Failed to create nonce manager", "err", err) + return ab, err + } + tx, err = nm.ApplyAuthorizedCallerUpdates(chain.DeployerKey, nonce_manager.AuthorizedCallersAuthorizedCallerArgs{ + AddedCallers: []common.Address{offRampAddr, onRampAddr}, + }) + if err != nil { + e.Logger.Errorw("Failed to update nonce manager with ramps", "err", err) + return ab, err + } + if err := chain.Confirm(tx.Hash()); err != nil { + e.Logger.Errorw("Failed to confirm price registry authorized caller update", "err", err) + return ab, err + } } return ab, nil } diff --git a/integration-tests/deployment/ccip/deploy_test.go b/integration-tests/deployment/ccip/deploy_test.go index 36522bb082..a3e7ba1b24 100644 --- a/integration-tests/deployment/ccip/deploy_test.go +++ b/integration-tests/deployment/ccip/deploy_test.go @@ -1,17 +1,20 @@ -package deployment +package ccipdeployment import ( + "encoding/json" + "fmt" "testing" - chainsel "github.com/smartcontractkit/chain-selectors" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/smartcontractkit/chainlink/integration-tests/deployment" + "github.com/smartcontractkit/chainlink/integration-tests/deployment/memory" + + "github.com/smartcontractkit/chainlink/v2/core/logger" ) func TestDeployCCIPContracts(t *testing.T) { - e := deployment.NewMemoryEnvironment(t, deployment.MemoryEnvironmentConfig{ + lggr := logger.TestLogger(t) + e := memory.NewMemoryEnvironment(t, lggr, memory.MemoryEnvironmentConfig{ Chains: 1, Nodes: 1, }) @@ -24,11 +27,20 @@ func TestDeployCCIPContracts(t *testing.T) { require.NoError(t, err) // Assert expect every deployed address to be in the address book. - for name, chain := range snap.Chains { - addrs, err := ab.Addresses() - require.NoError(t, err) - evmChainID, _ := chainsel.ChainIdFromName(name) - sel, _ := chainsel.SelectorFromChainId(evmChainID) - assert.Contains(t, addrs[sel], chain.TokenAdminRegistry.String()) + b, err := json.MarshalIndent(snap, "", " ") + require.NoError(t, err) + fmt.Println(string(b)) +} + +func TestJobSpecGeneration(t *testing.T) { + lggr := logger.TestLogger(t) + e := memory.NewMemoryEnvironment(t, lggr, memory.MemoryEnvironmentConfig{ + Chains: 1, + Nodes: 1, + }) + js, err := NewCCIPJobSpecs(e.NodeIDs, e.Offchain) + require.NoError(t, err) + for node, jb := range js { + fmt.Println(node, jb) } } diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy.go index d2fc25db05..fef28d93a5 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy.go @@ -1,11 +1,9 @@ package migrations import ( - "github.com/ethereum/go-ethereum/common" - "github.com/smartcontractkit/chainlink/integration-tests/deployment" - ccipdeployment "github.com/smartcontractkit/chainlink/integration-tests/deployment/ccip" + "github.com/smartcontractkit/chainlink/integration-tests/deployment/ccip" ) // We expect the migration input to be unique per migration. @@ -19,23 +17,18 @@ func Apply0001(env deployment.Environment, c ccipdeployment.DeployCCIPContractCo env.Logger.Errorw("Failed to deploy CCIP contracts", "err", err, "addresses", ab) return deployment.MigrationOutput{}, err } - state, err := ccipdeployment.GenerateOnchainState(env, ab) - if err != nil { - return deployment.MigrationOutput{}, err - } - js, err := ccipdeployment.GenerateJobSpecs(common.Address{}) + js, err := ccipdeployment.NewCCIPJobSpecs(env.NodeIDs, env.Offchain) if err != nil { return deployment.MigrationOutput{}, err } - proposal, err := ccipdeployment.GenerateAcceptOwnershipProposal(env, env.AllChainSelectors(), state) + proposal, err := ccipdeployment.GenerateAcceptOwnershipProposal(env, env.AllChainSelectors(), ab) if err != nil { return deployment.MigrationOutput{}, err } return deployment.MigrationOutput{ Proposals: []deployment.Proposal{proposal}, AddressBook: ab, - JobSpecs: map[string][]string{ - "chain-layer": {js.String()}, - }, + // Mapping of which nodes get which jobs. + JobSpecs: js, }, nil } diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index 35eceb2cef..b500bb502c 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -2,52 +2,109 @@ package migrations import ( "context" + "fmt" "testing" + "github.com/ethereum/go-ethereum/common" + chainsel "github.com/smartcontractkit/chain-selectors" "github.com/stretchr/testify/require" - "github.com/smartcontractkit/chainlink/integration-tests/deployment" + jobv1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/job/v1" ccipdeployment "github.com/smartcontractkit/chainlink/integration-tests/deployment/ccip" + "github.com/smartcontractkit/chainlink/integration-tests/deployment/memory" + + "github.com/smartcontractkit/chainlink/v2/core/logger" ) func Test0001_InitialDeploy(t *testing.T) { - t.Skip() // WIP - e := deployment.NewMemoryEnvironment(t, deployment.MemoryEnvironmentConfig{ - Chains: 1, - Nodes: 1, + lggr := logger.TestLogger(t) + chains := memory.NewMemoryChains(t, 3) + t.Log(chains, lggr) + + homeChainSel := uint64(0) + homeChainEVM := uint64(0) + // First chain is home chain. + for chainSel := range chains { + homeChainEVM, _ = chainsel.ChainIdFromSelector(chainSel) + homeChainSel = chainSel + break + } + ab, err := ccipdeployment.DeployCapReg(lggr, chains, homeChainSel) + require.NoError(t, err) + fmt.Println(homeChainEVM, ab) + + addrs, err := ab.AddressesForChain(homeChainSel) + require.NoError(t, err) + require.Len(t, addrs, 1) + capReg := common.Address{} + for addr := range addrs { + capReg = common.HexToAddress(addr) + break + } + + e := memory.NewMemoryEnvironmentExistingChains(t, lggr, chains, memory.MemoryEnvironmentConfig{ + Chains: 3, + Nodes: 4, + Bootstraps: 1, + RegistryConfig: memory.RegistryConfig{ + EVMChainID: homeChainEVM, + Contract: capReg, + }, }) // Apply migration output, err := Apply0001(e, ccipdeployment.DeployCCIPContractConfig{}) require.NoError(t, err) - state, err := ccipdeployment.GenerateOnchainState(e, output.AddressBook) - require.NoError(t, err) + // Before we can add the jobs, we need to add the config to the cap registry + /* + ccipCapabilityID, err := homeChainUni.capabilityRegistry.GetHashedCapabilityId( + callCtx, CapabilityLabelledName, CapabilityVersion) + require.NoError(t, err, "failed to get hashed capability id for ccip") + require.NotEqual(t, [32]byte{}, ccipCapabilityID, "ccip capability id is empty") + + // Need to Add nodes and assign capabilities to them before creating DONS + homeChainUni.AddNodes(t, p2pIDs, [][32]byte{ccipCapabilityID}) + + for _, uni := range universes { + t.Logf("Adding chainconfig for chain %d", uni.chainID) + AddChainConfig(t, homeChainUni, getSelector(uni.chainID), p2pIDs, fChain) + } - // TODO: Validate jobs - // Apply jobs - for nodeIDs, jobs := range output.JobSpecs { + cfgs, err := homeChainUni.ccipConfig.GetAllChainConfigs(callCtx) + require.NoError(t, err) + require.Len(t, cfgs, numChains) + + // Create a DON for each chain + for _, uni := range universes { + // Add nodes and give them the capability + t.Log("Adding DON for universe: ", uni.chainID) + chainSelector := getSelector(uni.chainID) + homeChainUni.AddDON( + t, + ccipCapabilityID, + chainSelector, + uni, + fChain, + bootstrapP2PID, + p2pIDs, + oracles[uni.chainID], + ) + } + */ + + // Apply the jobs. + for nodeID, jobs := range output.JobSpecs { for _, job := range jobs { - _, err := e.Offchain.ProposeJob(context.Background(), nodeIDs, job) + _, err := e.Offchain.ProposeJob(context.Background(), + &jobv1.ProposeJobRequest{ + NodeId: nodeID, + Spec: job, + }) require.NoError(t, err) } } - // TODO: Inspect proposal - // Apply proposal - require.NoError(t, ccipdeployment.ApplyProposal(e, output.Proposals[0], state)) - - // TODO: Inspect onchain state - // TODO: Send traffic - - //snap, err := state.Snapshot(e.AllChainSelectors()) - //require.NoError(t, err) - // - //// Assert expect every deployed address to be in the address book. - //for name, chain := range snap.Chains { - // addrs, err := ab.Addresses() - // require.NoError(t, err) - // evmChainID, _ := chainsel.ChainIdFromName(name) - // sel, _ := chainsel.SelectorFromChainId(evmChainID) - // assert.Contains(t, addrs[sel], chain.TokenAdminRegistry.String()) - //} + // TODO: With the jobs, we should be able to send traffic through the new deployment. + + // TODO: Apply the proposal. } diff --git a/integration-tests/deployment/ccip/propose.go b/integration-tests/deployment/ccip/propose.go index bf350a75d9..6121d8fbf0 100644 --- a/integration-tests/deployment/ccip/propose.go +++ b/integration-tests/deployment/ccip/propose.go @@ -1,46 +1,63 @@ -package deployment +package ccipdeployment import ( "math/big" "time" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + owner_helpers "github.com/smartcontractkit/ccip-owner-contracts/gethwrappers" chainsel "github.com/smartcontractkit/chain-selectors" - deployment2 "github.com/smartcontractkit/chainlink/integration-tests/deployment" + "github.com/smartcontractkit/chainlink/integration-tests/deployment" ) +func SimTransactOpts() *bind.TransactOpts { + return &bind.TransactOpts{Signer: func(address common.Address, transaction *types.Transaction) (*types.Transaction, error) { + return transaction, nil + }, From: common.HexToAddress("0x0"), NoSend: true, GasLimit: 200_000} +} + func GenerateAcceptOwnershipProposal( - e deployment2.Environment, + e deployment.Environment, chains []uint64, - state CCIPOnChainState, -) (deployment2.Proposal, error) { + ab deployment.AddressBook, +) (deployment.Proposal, error) { + state, err := GenerateOnchainState(e, ab) + if err != nil { + return deployment.Proposal{}, err + } // TODO: Just onramp as an example - var ops []deployment2.ManyChainMultiSigOp + var ops []owner_helpers.ManyChainMultiSigOp for _, sel := range chains { - e.Chains[sel].DeployerKey.NoSend = true - txData, err := state.EvmOnRampsV160[sel].AcceptOwnership(e.Chains[sel].DeployerKey) + opCount, err := state.Mcms[sel].GetOpCount(nil) + if err != nil { + return deployment.Proposal{}, err + } + + txData, err := state.EvmOnRampsV160[sel].AcceptOwnership(SimTransactOpts()) if err != nil { - return deployment2.Proposal{}, err + return deployment.Proposal{}, err } evmID, err := chainsel.ChainIdFromSelector(sel) if err != nil { - return deployment2.Proposal{}, err + return deployment.Proposal{}, err } - ops = append(ops, deployment2.ManyChainMultiSigOp{ + ops = append(ops, owner_helpers.ManyChainMultiSigOp{ ChainId: big.NewInt(int64(evmID)), - MultiSig: common.Address{}, - Nonce: big.NewInt(0), + MultiSig: state.McmsAddrs[sel], + Nonce: opCount, To: state.EvmOnRampsV160[sel].Address(), Value: big.NewInt(0), Data: txData.Data(), }) } // TODO: Real valid until. - return deployment2.Proposal{ValidUntil: uint32(time.Now().Unix()), Ops: ops}, nil + return deployment.Proposal{ValidUntil: uint32(time.Now().Unix()), Ops: ops}, nil } -func ApplyProposal(env deployment2.Environment, p deployment2.Proposal, state CCIPOnChainState) error { +func ApplyProposal(env deployment.Environment, p deployment.Proposal, state CCIPOnChainState) error { // TODO return nil } diff --git a/integration-tests/deployment/ccip/state.go b/integration-tests/deployment/ccip/state.go index dab65fe37a..32d9013976 100644 --- a/integration-tests/deployment/ccip/state.go +++ b/integration-tests/deployment/ccip/state.go @@ -1,4 +1,4 @@ -package deployment +package ccipdeployment import ( "fmt" @@ -7,7 +7,11 @@ import ( "github.com/pkg/errors" chainsel "github.com/smartcontractkit/chain-selectors" - deployment2 "github.com/smartcontractkit/chainlink/integration-tests/deployment" + "github.com/smartcontractkit/chainlink/integration-tests/deployment" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/keystone/generated/capabilities_registry" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/shared/generated/burn_mint_erc677" + + owner_wrappers "github.com/smartcontractkit/ccip-owner-contracts/gethwrappers" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/arm_proxy_contract" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_offramp" @@ -18,7 +22,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/token_admin_registry" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/weth9" - "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/keystone/generated/capabilities_registry" ) // Onchain state always derivable from an address book. @@ -37,18 +40,39 @@ type CCIPOnChainState struct { Routers map[uint64]*router.Router Weth9s map[uint64]*weth9.WETH9 MockArms map[uint64]*mock_arm_contract.MockARMContract - - // Only lives on the home chain. - CapabilityRegistry *capabilities_registry.CapabilitiesRegistry + // TODO: May need to support older link too + LinkTokens map[uint64]*burn_mint_erc677.BurnMintERC677 + // Note we only expect one of these (on the home chain) + CapabilityRegistry map[uint64]*capabilities_registry.CapabilitiesRegistry + Mcms map[uint64]*owner_wrappers.ManyChainMultiSig + // TODO: remove once we have Address() on wrappers + McmsAddrs map[uint64]common.Address + Timelocks map[uint64]*owner_wrappers.RBACTimelock } type CCIPSnapShot struct { Chains map[string]Chain `json:"chains"` } +type Contract struct { + TypeAndVersion string `json:"typeAndVersion"` + Address common.Address `json:"address"` +} + +type TokenAdminRegistry struct { + Contract + Tokens []common.Address `json:"tokens"` +} + +type NonceManager struct { + Contract + AuthorizedCallers []common.Address `json:"authorizedCallers"` +} + type Chain struct { - TokenAdminRegistry common.Address `json:"tokenAdminRegistry"` - TokenAdminRegistryTokens []common.Address `json:"tokenAdminRegistryTokens"` + // TODO: this will have to be versioned for getting state during upgrades. + TokenAdminRegistry TokenAdminRegistry `json:"tokenAdminRegistry"` + NonceManager NonceManager `json:"nonceManager"` } func (s CCIPOnChainState) Snapshot(chains []uint64) (CCIPSnapShot, error) { @@ -57,23 +81,56 @@ func (s CCIPOnChainState) Snapshot(chains []uint64) (CCIPSnapShot, error) { } for _, chainSelector := range chains { // TODO: Need a utility for this - chainid, _ := chainsel.ChainIdFromSelector(chainSelector) - chainName, _ := chainsel.NameFromChainId(chainid) + chainid, err := chainsel.ChainIdFromSelector(chainSelector) + if err != nil { + return snapshot, err + } + chainName, err := chainsel.NameFromChainId(chainid) + if err != nil { + return snapshot, err + } var c Chain if ta, ok := s.TokenAdminRegistries[chainSelector]; ok { tokens, err := ta.GetAllConfiguredTokens(nil, 0, 10) if err != nil { return snapshot, err } - c.TokenAdminRegistry = ta.Address() - c.TokenAdminRegistryTokens = tokens + tv, err := ta.TypeAndVersion(nil) + if err != nil { + return snapshot, err + } + c.TokenAdminRegistry = TokenAdminRegistry{ + Contract: Contract{ + TypeAndVersion: tv, + Address: ta.Address(), + }, + Tokens: tokens, + } + } + if nm, ok := s.NonceManagers[chainSelector]; ok { + authorizedCallers, err := nm.GetAllAuthorizedCallers(nil) + if err != nil { + return snapshot, err + } + tv, err := nm.TypeAndVersion(nil) + if err != nil { + return snapshot, err + } + c.NonceManager = NonceManager{ + Contract: Contract{ + TypeAndVersion: tv, + Address: nm.Address(), + }, + // TODO: these can be resolved using an address book + AuthorizedCallers: authorizedCallers, + } } snapshot.Chains[chainName] = c } return snapshot, nil } -func SnapshotState(e deployment2.Environment, ab deployment2.AddressBook) (CCIPSnapShot, error) { +func SnapshotState(e deployment.Environment, ab deployment.AddressBook) (CCIPSnapShot, error) { state, err := GenerateOnchainState(e, ab) if err != nil { return CCIPSnapShot{}, err @@ -81,7 +138,7 @@ func SnapshotState(e deployment2.Environment, ab deployment2.AddressBook) (CCIPS return state.Snapshot(e.AllChainSelectors()) } -func GenerateOnchainState(e deployment2.Environment, ab deployment2.AddressBook) (CCIPOnChainState, error) { +func GenerateOnchainState(e deployment.Environment, ab deployment.AddressBook) (CCIPOnChainState, error) { state := CCIPOnChainState{ EvmOnRampsV160: make(map[uint64]*evm_2_evm_multi_onramp.EVM2EVMMultiOnRamp), EvmOffRampsV160: make(map[uint64]*evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp), @@ -91,7 +148,12 @@ func GenerateOnchainState(e deployment2.Environment, ab deployment2.AddressBook) TokenAdminRegistries: make(map[uint64]*token_admin_registry.TokenAdminRegistry), Routers: make(map[uint64]*router.Router), MockArms: make(map[uint64]*mock_arm_contract.MockARMContract), + LinkTokens: make(map[uint64]*burn_mint_erc677.BurnMintERC677), Weth9s: make(map[uint64]*weth9.WETH9), + Mcms: make(map[uint64]*owner_wrappers.ManyChainMultiSig), + McmsAddrs: make(map[uint64]common.Address), + Timelocks: make(map[uint64]*owner_wrappers.RBACTimelock), + CapabilityRegistry: make(map[uint64]*capabilities_registry.CapabilitiesRegistry), } // Get all the onchain state addresses, err := ab.Addresses() @@ -101,12 +163,25 @@ func GenerateOnchainState(e deployment2.Environment, ab deployment2.AddressBook) for chainSelector, addresses := range addresses { for address, tvStr := range addresses { switch tvStr { + case RBAC_Timelock_1_0_0: + tl, err := owner_wrappers.NewRBACTimelock(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.Timelocks[chainSelector] = tl + case MCMS_1_0_0: + mcms, err := owner_wrappers.NewManyChainMultiSig(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.Mcms[chainSelector] = mcms + state.McmsAddrs[chainSelector] = common.HexToAddress(address) case CapabilitiesRegistry_1_0_0: cr, err := capabilities_registry.NewCapabilitiesRegistry(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { return state, err } - state.CapabilityRegistry = cr + state.CapabilityRegistry[chainSelector] = cr case EVM2EVMMultiOnRamp_1_6_0: onRamp, err := evm_2_evm_multi_onramp.NewEVM2EVMMultiOnRamp(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { @@ -137,30 +212,36 @@ func GenerateOnchainState(e deployment2.Environment, ab deployment2.AddressBook) return state, err } state.Weth9s[chainSelector] = weth9 - case NonceManager_1_0_0: + case NonceManager_1_6_0: nm, err := nonce_manager.NewNonceManager(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { return state, err } state.NonceManagers[chainSelector] = nm - case TokenAdminRegistry_1_0_0: + case TokenAdminRegistry_1_5_0: tm, err := token_admin_registry.NewTokenAdminRegistry(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { return state, err } state.TokenAdminRegistries[chainSelector] = tm - case Router_1_0_0: + case Router_1_2_0: r, err := router.NewRouter(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { return state, err } state.Routers[chainSelector] = r - case PriceRegistry_1_0_0: + case PriceRegistry_1_6_0: pr, err := price_registry.NewPriceRegistry(common.HexToAddress(address), e.Chains[chainSelector].Client) if err != nil { return state, err } state.PriceRegistries[chainSelector] = pr + case LinkToken_1_0_0: + lt, err := burn_mint_erc677.NewBurnMintERC677(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.LinkTokens[chainSelector] = lt default: return state, fmt.Errorf("unknown contract %s", tvStr) } diff --git a/integration-tests/deployment/environment.go b/integration-tests/deployment/environment.go index 19f24b7611..67a1b6703a 100644 --- a/integration-tests/deployment/environment.go +++ b/integration-tests/deployment/environment.go @@ -1,25 +1,15 @@ package deployment import ( - "context" - "testing" - "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" - "github.com/hashicorp/consul/sdk/freeport" - chainsel "github.com/smartcontractkit/chain-selectors" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zapcore" - "github.com/smartcontractkit/chainlink/integration-tests/deployment/memory" + jobv1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/job/v1" + nodev1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/node/v1" "github.com/smartcontractkit/chainlink-common/pkg/logger" ) -const ( - Memory = "memory" -) - type OnchainClient interface { // For EVM specifically we can use existing geth interface // to abstract chain clients. @@ -28,8 +18,8 @@ type OnchainClient interface { type OffchainClient interface { // The job distributor grpc interface can be used to abstract offchain read/writes - ProposeJob(ctx context.Context, nodeId string, spec string) (int64, error) - GetJob(ctx context.Context, nodeId string, jobID int64) (string, error) + jobv1.JobServiceClient + nodev1.NodeServiceClient } type Chain struct { @@ -44,8 +34,8 @@ type Chain struct { type Environment struct { Name string Chains map[uint64]Chain - NodeIds []string Offchain OffchainClient + NodeIDs []string Logger logger.Logger } @@ -56,45 +46,3 @@ func (e Environment) AllChainSelectors() []uint64 { } return selectors } - -type MemoryEnvironmentConfig struct { - Chains int - Nodes int -} - -// To be used by tests and any kind of deployment logic. -func NewMemoryEnvironment(t *testing.T, config MemoryEnvironmentConfig) Environment { - mchains := memory.GenerateChains(t, config.Chains) - chains := make(map[uint64]Chain) - for cid, chain := range mchains { - sel, err := chainsel.SelectorFromChainId(cid) - require.NoError(t, err) - chains[sel] = Chain{ - Selector: sel, - Client: chain.Backend, - DeployerKey: chain.DeployerKey, - Confirm: func(tx common.Hash) error { - chain.Backend.Commit() - return nil - }, - } - } - - nodesByPeerID := make(map[string]memory.Node) - var keys []string - ports := freeport.GetN(t, config.Nodes) - for i := 0; i < config.Nodes; i++ { - node := memory.NewNode(t, ports[i], mchains, zapcore.DebugLevel) - nodesByPeerID[node.Keys.PeerID.String()] = *node - keys = append(keys, node.Keys.PeerID.String()) - } - lggr, err := logger.New() - require.NoError(t, err) - return Environment{ - Name: Memory, - Offchain: memory.NewMemoryJobClient(nodesByPeerID), - Chains: chains, - NodeIds: keys, - Logger: lggr, - } -} diff --git a/integration-tests/deployment/jd/job/v1/job.pb.go b/integration-tests/deployment/jd/job/v1/job.pb.go new file mode 100644 index 0000000000..deaf1ccf30 --- /dev/null +++ b/integration-tests/deployment/jd/job/v1/job.pb.go @@ -0,0 +1,1767 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.0 +// protoc v4.25.3 +// source: job/v1/job.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// ProposalStatus defines the possible states of a job proposal. +type ProposalStatus int32 + +const ( + ProposalStatus_PROPOSAL_STATUS_UNSPECIFIED ProposalStatus = 0 + ProposalStatus_PROPOSAL_STATUS_PROPOSED ProposalStatus = 1 // Proposal has been made but not yet decided upon. + ProposalStatus_PROPOSAL_STATUS_APPROVED ProposalStatus = 2 // Proposal has been accepted. + ProposalStatus_PROPOSAL_STATUS_REJECTED ProposalStatus = 3 // Proposal has been rejected. + ProposalStatus_PROPOSAL_STATUS_CANCELLED ProposalStatus = 4 // Proposal has been cancelled. + ProposalStatus_PROPOSAL_STATUS_PENDING ProposalStatus = 5 // Proposal is pending review. + ProposalStatus_PROPOSAL_STATUS_REVOKED ProposalStatus = 6 // Proposal has been revoked after being proposed. +) + +// Enum value maps for ProposalStatus. +var ( + ProposalStatus_name = map[int32]string{ + 0: "PROPOSAL_STATUS_UNSPECIFIED", + 1: "PROPOSAL_STATUS_PROPOSED", + 2: "PROPOSAL_STATUS_APPROVED", + 3: "PROPOSAL_STATUS_REJECTED", + 4: "PROPOSAL_STATUS_CANCELLED", + 5: "PROPOSAL_STATUS_PENDING", + 6: "PROPOSAL_STATUS_REVOKED", + } + ProposalStatus_value = map[string]int32{ + "PROPOSAL_STATUS_UNSPECIFIED": 0, + "PROPOSAL_STATUS_PROPOSED": 1, + "PROPOSAL_STATUS_APPROVED": 2, + "PROPOSAL_STATUS_REJECTED": 3, + "PROPOSAL_STATUS_CANCELLED": 4, + "PROPOSAL_STATUS_PENDING": 5, + "PROPOSAL_STATUS_REVOKED": 6, + } +) + +func (x ProposalStatus) Enum() *ProposalStatus { + p := new(ProposalStatus) + *p = x + return p +} + +func (x ProposalStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ProposalStatus) Descriptor() protoreflect.EnumDescriptor { + return file_job_v1_job_proto_enumTypes[0].Descriptor() +} + +func (ProposalStatus) Type() protoreflect.EnumType { + return &file_job_v1_job_proto_enumTypes[0] +} + +func (x ProposalStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ProposalStatus.Descriptor instead. +func (ProposalStatus) EnumDescriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{0} +} + +// ProposalDeliveryStatus defines the delivery status of the proposal to the node. +type ProposalDeliveryStatus int32 + +const ( + ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_UNSPECIFIED ProposalDeliveryStatus = 0 + ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_DELIVERED ProposalDeliveryStatus = 1 // Delivered to the node. + ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_ACKNOWLEDGED ProposalDeliveryStatus = 2 // Acknowledged by the node. + ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_FAILED ProposalDeliveryStatus = 3 // Delivery failed. +) + +// Enum value maps for ProposalDeliveryStatus. +var ( + ProposalDeliveryStatus_name = map[int32]string{ + 0: "PROPOSAL_DELIVERY_STATUS_UNSPECIFIED", + 1: "PROPOSAL_DELIVERY_STATUS_DELIVERED", + 2: "PROPOSAL_DELIVERY_STATUS_ACKNOWLEDGED", + 3: "PROPOSAL_DELIVERY_STATUS_FAILED", + } + ProposalDeliveryStatus_value = map[string]int32{ + "PROPOSAL_DELIVERY_STATUS_UNSPECIFIED": 0, + "PROPOSAL_DELIVERY_STATUS_DELIVERED": 1, + "PROPOSAL_DELIVERY_STATUS_ACKNOWLEDGED": 2, + "PROPOSAL_DELIVERY_STATUS_FAILED": 3, + } +) + +func (x ProposalDeliveryStatus) Enum() *ProposalDeliveryStatus { + p := new(ProposalDeliveryStatus) + *p = x + return p +} + +func (x ProposalDeliveryStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ProposalDeliveryStatus) Descriptor() protoreflect.EnumDescriptor { + return file_job_v1_job_proto_enumTypes[1].Descriptor() +} + +func (ProposalDeliveryStatus) Type() protoreflect.EnumType { + return &file_job_v1_job_proto_enumTypes[1] +} + +func (x ProposalDeliveryStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ProposalDeliveryStatus.Descriptor instead. +func (ProposalDeliveryStatus) EnumDescriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{1} +} + +// Job represents the structured data of a job within the system. +type Job struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier for the job. + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` // Universally unique identifier for the job. + NodeId string `protobuf:"bytes,3,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` // ID of the node associated with this job. + ProposalIds []string `protobuf:"bytes,4,rep,name=proposal_ids,json=proposalIds,proto3" json:"proposal_ids,omitempty"` // List of proposal IDs associated with this job. + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Timestamp when the job was created. + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Timestamp when the job was last updated. + DeletedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` // Timestamp when the job was deleted, if applicable. +} + +func (x *Job) Reset() { + *x = Job{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Job) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Job) ProtoMessage() {} + +func (x *Job) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Job.ProtoReflect.Descriptor instead. +func (*Job) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{0} +} + +func (x *Job) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Job) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" +} + +func (x *Job) GetNodeId() string { + if x != nil { + return x.NodeId + } + return "" +} + +func (x *Job) GetProposalIds() []string { + if x != nil { + return x.ProposalIds + } + return nil +} + +func (x *Job) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Job) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Job) GetDeletedAt() *timestamppb.Timestamp { + if x != nil { + return x.DeletedAt + } + return nil +} + +// Proposal represents a job proposal. +type Proposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier for the proposal. + Version int64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` // Version number of the proposal. + Status ProposalStatus `protobuf:"varint,3,opt,name=status,proto3,enum=api.job.v1.ProposalStatus" json:"status,omitempty"` // Current status of the proposal. + DeliveryStatus ProposalDeliveryStatus `protobuf:"varint,4,opt,name=delivery_status,json=deliveryStatus,proto3,enum=api.job.v1.ProposalDeliveryStatus" json:"delivery_status,omitempty"` // Delivery status of the proposal. + Spec string `protobuf:"bytes,5,opt,name=spec,proto3" json:"spec,omitempty"` // Specification of the job proposed. + JobId string `protobuf:"bytes,6,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` // ID of the job associated with this proposal. + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Timestamp when the proposal was created. + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Timestamp when the proposal was last updated. + AckedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=acked_at,json=ackedAt,proto3,oneof" json:"acked_at,omitempty"` // Timestamp when the proposal was acknowledged. + ResponseReceivedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=response_received_at,json=responseReceivedAt,proto3,oneof" json:"response_received_at,omitempty"` // Timestamp when a response was received. +} + +func (x *Proposal) Reset() { + *x = Proposal{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Proposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Proposal) ProtoMessage() {} + +func (x *Proposal) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Proposal.ProtoReflect.Descriptor instead. +func (*Proposal) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{1} +} + +func (x *Proposal) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Proposal) GetVersion() int64 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *Proposal) GetStatus() ProposalStatus { + if x != nil { + return x.Status + } + return ProposalStatus_PROPOSAL_STATUS_UNSPECIFIED +} + +func (x *Proposal) GetDeliveryStatus() ProposalDeliveryStatus { + if x != nil { + return x.DeliveryStatus + } + return ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_UNSPECIFIED +} + +func (x *Proposal) GetSpec() string { + if x != nil { + return x.Spec + } + return "" +} + +func (x *Proposal) GetJobId() string { + if x != nil { + return x.JobId + } + return "" +} + +func (x *Proposal) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Proposal) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Proposal) GetAckedAt() *timestamppb.Timestamp { + if x != nil { + return x.AckedAt + } + return nil +} + +func (x *Proposal) GetResponseReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.ResponseReceivedAt + } + return nil +} + +// GetJobRequest specifies the criteria for retrieving a job. +type GetJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to IdOneof: + // + // *GetJobRequest_Id + // *GetJobRequest_Uuid + IdOneof isGetJobRequest_IdOneof `protobuf_oneof:"id_oneof"` +} + +func (x *GetJobRequest) Reset() { + *x = GetJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetJobRequest) ProtoMessage() {} + +func (x *GetJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetJobRequest.ProtoReflect.Descriptor instead. +func (*GetJobRequest) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{2} +} + +func (m *GetJobRequest) GetIdOneof() isGetJobRequest_IdOneof { + if m != nil { + return m.IdOneof + } + return nil +} + +func (x *GetJobRequest) GetId() string { + if x, ok := x.GetIdOneof().(*GetJobRequest_Id); ok { + return x.Id + } + return "" +} + +func (x *GetJobRequest) GetUuid() string { + if x, ok := x.GetIdOneof().(*GetJobRequest_Uuid); ok { + return x.Uuid + } + return "" +} + +type isGetJobRequest_IdOneof interface { + isGetJobRequest_IdOneof() +} + +type GetJobRequest_Id struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3,oneof"` // Unique identifier of the job. +} + +type GetJobRequest_Uuid struct { + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3,oneof"` // Universally unique identifier of the job. +} + +func (*GetJobRequest_Id) isGetJobRequest_IdOneof() {} + +func (*GetJobRequest_Uuid) isGetJobRequest_IdOneof() {} + +// GetJobResponse contains the job details. +type GetJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Job *Job `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` // Details of the retrieved job. +} + +func (x *GetJobResponse) Reset() { + *x = GetJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetJobResponse) ProtoMessage() {} + +func (x *GetJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetJobResponse.ProtoReflect.Descriptor instead. +func (*GetJobResponse) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{3} +} + +func (x *GetJobResponse) GetJob() *Job { + if x != nil { + return x.Job + } + return nil +} + +// GetProposalRequest specifies the criteria for retrieving a proposal. +type GetProposalRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier of the proposal to retrieve. +} + +func (x *GetProposalRequest) Reset() { + *x = GetProposalRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetProposalRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetProposalRequest) ProtoMessage() {} + +func (x *GetProposalRequest) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetProposalRequest.ProtoReflect.Descriptor instead. +func (*GetProposalRequest) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{4} +} + +func (x *GetProposalRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// GetProposalResponse contains the proposal details. +type GetProposalResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Proposal *Proposal `protobuf:"bytes,1,opt,name=proposal,proto3" json:"proposal,omitempty"` // Details of the retrieved proposal. +} + +func (x *GetProposalResponse) Reset() { + *x = GetProposalResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetProposalResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetProposalResponse) ProtoMessage() {} + +func (x *GetProposalResponse) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetProposalResponse.ProtoReflect.Descriptor instead. +func (*GetProposalResponse) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{5} +} + +func (x *GetProposalResponse) GetProposal() *Proposal { + if x != nil { + return x.Proposal + } + return nil +} + +// ListJobsRequest specifies filters for listing jobs. +type ListJobsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Filter *ListJobsRequest_Filter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` // Filters applied to the job listing. +} + +func (x *ListJobsRequest) Reset() { + *x = ListJobsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListJobsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListJobsRequest) ProtoMessage() {} + +func (x *ListJobsRequest) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListJobsRequest.ProtoReflect.Descriptor instead. +func (*ListJobsRequest) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{6} +} + +func (x *ListJobsRequest) GetFilter() *ListJobsRequest_Filter { + if x != nil { + return x.Filter + } + return nil +} + +// ListJobsResponse contains a list of jobs that match the filters. +type ListJobsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Jobs []*Job `protobuf:"bytes,1,rep,name=jobs,proto3" json:"jobs,omitempty"` // List of jobs. +} + +func (x *ListJobsResponse) Reset() { + *x = ListJobsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListJobsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListJobsResponse) ProtoMessage() {} + +func (x *ListJobsResponse) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListJobsResponse.ProtoReflect.Descriptor instead. +func (*ListJobsResponse) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{7} +} + +func (x *ListJobsResponse) GetJobs() []*Job { + if x != nil { + return x.Jobs + } + return nil +} + +// ListProposalsRequest specifies filters for listing proposals. +type ListProposalsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Filter *ListProposalsRequest_Filter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` // Filters applied to the proposal listing. +} + +func (x *ListProposalsRequest) Reset() { + *x = ListProposalsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListProposalsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListProposalsRequest) ProtoMessage() {} + +func (x *ListProposalsRequest) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListProposalsRequest.ProtoReflect.Descriptor instead. +func (*ListProposalsRequest) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{8} +} + +func (x *ListProposalsRequest) GetFilter() *ListProposalsRequest_Filter { + if x != nil { + return x.Filter + } + return nil +} + +// ListProposalsResponse contains a list of proposals that match the filters. +type ListProposalsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Proposals []*Proposal `protobuf:"bytes,1,rep,name=proposals,proto3" json:"proposals,omitempty"` // List of proposals. +} + +func (x *ListProposalsResponse) Reset() { + *x = ListProposalsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListProposalsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListProposalsResponse) ProtoMessage() {} + +func (x *ListProposalsResponse) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListProposalsResponse.ProtoReflect.Descriptor instead. +func (*ListProposalsResponse) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{9} +} + +func (x *ListProposalsResponse) GetProposals() []*Proposal { + if x != nil { + return x.Proposals + } + return nil +} + +// ProposeJobRequest contains the information needed to submit a new job proposal. +type ProposeJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` // ID of the node to which the job is proposed. + Spec string `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` // Specification of the job being proposed. +} + +func (x *ProposeJobRequest) Reset() { + *x = ProposeJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProposeJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProposeJobRequest) ProtoMessage() {} + +func (x *ProposeJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProposeJobRequest.ProtoReflect.Descriptor instead. +func (*ProposeJobRequest) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{10} +} + +func (x *ProposeJobRequest) GetNodeId() string { + if x != nil { + return x.NodeId + } + return "" +} + +func (x *ProposeJobRequest) GetSpec() string { + if x != nil { + return x.Spec + } + return "" +} + +// ProposeJobResponse returns the newly created proposal. +type ProposeJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Proposal *Proposal `protobuf:"bytes,1,opt,name=proposal,proto3" json:"proposal,omitempty"` // Details of the newly created proposal. +} + +func (x *ProposeJobResponse) Reset() { + *x = ProposeJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProposeJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProposeJobResponse) ProtoMessage() {} + +func (x *ProposeJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProposeJobResponse.ProtoReflect.Descriptor instead. +func (*ProposeJobResponse) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{11} +} + +func (x *ProposeJobResponse) GetProposal() *Proposal { + if x != nil { + return x.Proposal + } + return nil +} + +// RevokeJobRequest specifies the criteria for revoking a job proposal. +type RevokeJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to IdOneof: + // + // *RevokeJobRequest_Id + // *RevokeJobRequest_Uuid + IdOneof isRevokeJobRequest_IdOneof `protobuf_oneof:"id_oneof"` +} + +func (x *RevokeJobRequest) Reset() { + *x = RevokeJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RevokeJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RevokeJobRequest) ProtoMessage() {} + +func (x *RevokeJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RevokeJobRequest.ProtoReflect.Descriptor instead. +func (*RevokeJobRequest) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{12} +} + +func (m *RevokeJobRequest) GetIdOneof() isRevokeJobRequest_IdOneof { + if m != nil { + return m.IdOneof + } + return nil +} + +func (x *RevokeJobRequest) GetId() string { + if x, ok := x.GetIdOneof().(*RevokeJobRequest_Id); ok { + return x.Id + } + return "" +} + +func (x *RevokeJobRequest) GetUuid() string { + if x, ok := x.GetIdOneof().(*RevokeJobRequest_Uuid); ok { + return x.Uuid + } + return "" +} + +type isRevokeJobRequest_IdOneof interface { + isRevokeJobRequest_IdOneof() +} + +type RevokeJobRequest_Id struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3,oneof"` // Unique identifier of the proposal to revoke. +} + +type RevokeJobRequest_Uuid struct { + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3,oneof"` // Universally unique identifier of the proposal to revoke. +} + +func (*RevokeJobRequest_Id) isRevokeJobRequest_IdOneof() {} + +func (*RevokeJobRequest_Uuid) isRevokeJobRequest_IdOneof() {} + +// RevokeJobResponse returns the revoked proposal. +type RevokeJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Proposal *Proposal `protobuf:"bytes,1,opt,name=proposal,proto3" json:"proposal,omitempty"` // Details of the revoked proposal. +} + +func (x *RevokeJobResponse) Reset() { + *x = RevokeJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RevokeJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RevokeJobResponse) ProtoMessage() {} + +func (x *RevokeJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RevokeJobResponse.ProtoReflect.Descriptor instead. +func (*RevokeJobResponse) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{13} +} + +func (x *RevokeJobResponse) GetProposal() *Proposal { + if x != nil { + return x.Proposal + } + return nil +} + +// DeleteJobRequest specifies the criteria for deleting a job. +type DeleteJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to IdOneof: + // + // *DeleteJobRequest_Id + // *DeleteJobRequest_Uuid + IdOneof isDeleteJobRequest_IdOneof `protobuf_oneof:"id_oneof"` +} + +func (x *DeleteJobRequest) Reset() { + *x = DeleteJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteJobRequest) ProtoMessage() {} + +func (x *DeleteJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteJobRequest.ProtoReflect.Descriptor instead. +func (*DeleteJobRequest) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{14} +} + +func (m *DeleteJobRequest) GetIdOneof() isDeleteJobRequest_IdOneof { + if m != nil { + return m.IdOneof + } + return nil +} + +func (x *DeleteJobRequest) GetId() string { + if x, ok := x.GetIdOneof().(*DeleteJobRequest_Id); ok { + return x.Id + } + return "" +} + +func (x *DeleteJobRequest) GetUuid() string { + if x, ok := x.GetIdOneof().(*DeleteJobRequest_Uuid); ok { + return x.Uuid + } + return "" +} + +type isDeleteJobRequest_IdOneof interface { + isDeleteJobRequest_IdOneof() +} + +type DeleteJobRequest_Id struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3,oneof"` // Unique identifier of the job to delete. +} + +type DeleteJobRequest_Uuid struct { + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3,oneof"` // Universally unique identifier of the job to delete. +} + +func (*DeleteJobRequest_Id) isDeleteJobRequest_IdOneof() {} + +func (*DeleteJobRequest_Uuid) isDeleteJobRequest_IdOneof() {} + +// DeleteJobResponse returns details of the deleted job. +type DeleteJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Job *Job `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` // Details of the deleted job. +} + +func (x *DeleteJobResponse) Reset() { + *x = DeleteJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteJobResponse) ProtoMessage() {} + +func (x *DeleteJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteJobResponse.ProtoReflect.Descriptor instead. +func (*DeleteJobResponse) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{15} +} + +func (x *DeleteJobResponse) GetJob() *Job { + if x != nil { + return x.Job + } + return nil +} + +type ListJobsRequest_Filter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` // Filter by job IDs. + NodeIds []string `protobuf:"bytes,2,rep,name=node_ids,json=nodeIds,proto3" json:"node_ids,omitempty"` // Filter by node IDs. +} + +func (x *ListJobsRequest_Filter) Reset() { + *x = ListJobsRequest_Filter{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListJobsRequest_Filter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListJobsRequest_Filter) ProtoMessage() {} + +func (x *ListJobsRequest_Filter) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListJobsRequest_Filter.ProtoReflect.Descriptor instead. +func (*ListJobsRequest_Filter) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{6, 0} +} + +func (x *ListJobsRequest_Filter) GetIds() []string { + if x != nil { + return x.Ids + } + return nil +} + +func (x *ListJobsRequest_Filter) GetNodeIds() []string { + if x != nil { + return x.NodeIds + } + return nil +} + +type ListProposalsRequest_Filter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` // Filter by proposal IDs. + JobIds []string `protobuf:"bytes,2,rep,name=job_ids,json=jobIds,proto3" json:"job_ids,omitempty"` // Filter by job IDs. +} + +func (x *ListProposalsRequest_Filter) Reset() { + *x = ListProposalsRequest_Filter{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListProposalsRequest_Filter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListProposalsRequest_Filter) ProtoMessage() {} + +func (x *ListProposalsRequest_Filter) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListProposalsRequest_Filter.ProtoReflect.Descriptor instead. +func (*ListProposalsRequest_Filter) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{8, 0} +} + +func (x *ListProposalsRequest_Filter) GetIds() []string { + if x != nil { + return x.Ids + } + return nil +} + +func (x *ListProposalsRequest_Filter) GetJobIds() []string { + if x != nil { + return x.JobIds + } + return nil +} + +var File_job_v1_job_proto protoreflect.FileDescriptor + +var file_job_v1_job_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x6a, 0x6f, 0x62, 0x2f, 0x76, 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0a, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x1f, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x96, 0x02, 0x0a, 0x03, 0x4a, 0x6f, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, + 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, + 0x64, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x8b, 0x04, 0x0a, 0x08, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x4b, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x73, 0x70, 0x65, 0x63, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x3a, 0x0a, 0x08, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, + 0x00, 0x52, 0x07, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, + 0x14, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x43, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x75, 0x75, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x42, + 0x0a, 0x0a, 0x08, 0x69, 0x64, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x33, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, + 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, + 0x22, 0x24, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x47, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, + 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, + 0x84, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, + 0x35, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6e, + 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, + 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x22, 0x37, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, + 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x6a, 0x6f, + 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, + 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x22, + 0x8c, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, + 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x33, 0x0a, 0x06, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x73, 0x22, 0x4b, + 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x22, 0x40, 0x0a, 0x11, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x70, 0x65, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x46, 0x0a, + 0x12, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x46, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, + 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, + 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x69, 0x64, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x45, 0x0a, + 0x11, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x46, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, + 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x75, 0x75, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x42, 0x0a, 0x0a, 0x08, 0x69, 0x64, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x36, 0x0a, 0x11, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x21, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, + 0x03, 0x6a, 0x6f, 0x62, 0x2a, 0xe4, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x50, 0x4f, + 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, + 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x50, + 0x4f, 0x53, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, + 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, + 0x45, 0x44, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, + 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, + 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x1b, + 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x52, 0x45, 0x56, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0x06, 0x2a, 0xba, 0x01, 0x0a, 0x16, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, + 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x26, 0x0a, 0x22, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x4c, + 0x49, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x4c, + 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x52, 0x4f, 0x50, + 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x43, 0x4b, 0x4e, 0x4f, 0x57, 0x4c, 0x45, 0x44, 0x47, 0x45, + 0x44, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, + 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, + 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x32, 0xa9, 0x04, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4a, 0x6f, + 0x62, 0x12, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x0b, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x08, + 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, + 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, + 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, + 0x0a, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1d, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, + 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4a, + 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x09, + 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, + 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x42, 0x08, 0x5a, 0x06, 0x6a, 0x6f, 0x62, 0x2f, 0x76, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_job_v1_job_proto_rawDescOnce sync.Once + file_job_v1_job_proto_rawDescData = file_job_v1_job_proto_rawDesc +) + +func file_job_v1_job_proto_rawDescGZIP() []byte { + file_job_v1_job_proto_rawDescOnce.Do(func() { + file_job_v1_job_proto_rawDescData = protoimpl.X.CompressGZIP(file_job_v1_job_proto_rawDescData) + }) + return file_job_v1_job_proto_rawDescData +} + +var file_job_v1_job_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_job_v1_job_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_job_v1_job_proto_goTypes = []interface{}{ + (ProposalStatus)(0), // 0: api.job.v1.ProposalStatus + (ProposalDeliveryStatus)(0), // 1: api.job.v1.ProposalDeliveryStatus + (*Job)(nil), // 2: api.job.v1.Job + (*Proposal)(nil), // 3: api.job.v1.Proposal + (*GetJobRequest)(nil), // 4: api.job.v1.GetJobRequest + (*GetJobResponse)(nil), // 5: api.job.v1.GetJobResponse + (*GetProposalRequest)(nil), // 6: api.job.v1.GetProposalRequest + (*GetProposalResponse)(nil), // 7: api.job.v1.GetProposalResponse + (*ListJobsRequest)(nil), // 8: api.job.v1.ListJobsRequest + (*ListJobsResponse)(nil), // 9: api.job.v1.ListJobsResponse + (*ListProposalsRequest)(nil), // 10: api.job.v1.ListProposalsRequest + (*ListProposalsResponse)(nil), // 11: api.job.v1.ListProposalsResponse + (*ProposeJobRequest)(nil), // 12: api.job.v1.ProposeJobRequest + (*ProposeJobResponse)(nil), // 13: api.job.v1.ProposeJobResponse + (*RevokeJobRequest)(nil), // 14: api.job.v1.RevokeJobRequest + (*RevokeJobResponse)(nil), // 15: api.job.v1.RevokeJobResponse + (*DeleteJobRequest)(nil), // 16: api.job.v1.DeleteJobRequest + (*DeleteJobResponse)(nil), // 17: api.job.v1.DeleteJobResponse + (*ListJobsRequest_Filter)(nil), // 18: api.job.v1.ListJobsRequest.Filter + (*ListProposalsRequest_Filter)(nil), // 19: api.job.v1.ListProposalsRequest.Filter + (*timestamppb.Timestamp)(nil), // 20: google.protobuf.Timestamp +} +var file_job_v1_job_proto_depIdxs = []int32{ + 20, // 0: api.job.v1.Job.created_at:type_name -> google.protobuf.Timestamp + 20, // 1: api.job.v1.Job.updated_at:type_name -> google.protobuf.Timestamp + 20, // 2: api.job.v1.Job.deleted_at:type_name -> google.protobuf.Timestamp + 0, // 3: api.job.v1.Proposal.status:type_name -> api.job.v1.ProposalStatus + 1, // 4: api.job.v1.Proposal.delivery_status:type_name -> api.job.v1.ProposalDeliveryStatus + 20, // 5: api.job.v1.Proposal.created_at:type_name -> google.protobuf.Timestamp + 20, // 6: api.job.v1.Proposal.updated_at:type_name -> google.protobuf.Timestamp + 20, // 7: api.job.v1.Proposal.acked_at:type_name -> google.protobuf.Timestamp + 20, // 8: api.job.v1.Proposal.response_received_at:type_name -> google.protobuf.Timestamp + 2, // 9: api.job.v1.GetJobResponse.job:type_name -> api.job.v1.Job + 3, // 10: api.job.v1.GetProposalResponse.proposal:type_name -> api.job.v1.Proposal + 18, // 11: api.job.v1.ListJobsRequest.filter:type_name -> api.job.v1.ListJobsRequest.Filter + 2, // 12: api.job.v1.ListJobsResponse.jobs:type_name -> api.job.v1.Job + 19, // 13: api.job.v1.ListProposalsRequest.filter:type_name -> api.job.v1.ListProposalsRequest.Filter + 3, // 14: api.job.v1.ListProposalsResponse.proposals:type_name -> api.job.v1.Proposal + 3, // 15: api.job.v1.ProposeJobResponse.proposal:type_name -> api.job.v1.Proposal + 3, // 16: api.job.v1.RevokeJobResponse.proposal:type_name -> api.job.v1.Proposal + 2, // 17: api.job.v1.DeleteJobResponse.job:type_name -> api.job.v1.Job + 4, // 18: api.job.v1.JobService.GetJob:input_type -> api.job.v1.GetJobRequest + 6, // 19: api.job.v1.JobService.GetProposal:input_type -> api.job.v1.GetProposalRequest + 8, // 20: api.job.v1.JobService.ListJobs:input_type -> api.job.v1.ListJobsRequest + 10, // 21: api.job.v1.JobService.ListProposals:input_type -> api.job.v1.ListProposalsRequest + 12, // 22: api.job.v1.JobService.ProposeJob:input_type -> api.job.v1.ProposeJobRequest + 14, // 23: api.job.v1.JobService.RevokeJob:input_type -> api.job.v1.RevokeJobRequest + 16, // 24: api.job.v1.JobService.DeleteJob:input_type -> api.job.v1.DeleteJobRequest + 5, // 25: api.job.v1.JobService.GetJob:output_type -> api.job.v1.GetJobResponse + 7, // 26: api.job.v1.JobService.GetProposal:output_type -> api.job.v1.GetProposalResponse + 9, // 27: api.job.v1.JobService.ListJobs:output_type -> api.job.v1.ListJobsResponse + 11, // 28: api.job.v1.JobService.ListProposals:output_type -> api.job.v1.ListProposalsResponse + 13, // 29: api.job.v1.JobService.ProposeJob:output_type -> api.job.v1.ProposeJobResponse + 15, // 30: api.job.v1.JobService.RevokeJob:output_type -> api.job.v1.RevokeJobResponse + 17, // 31: api.job.v1.JobService.DeleteJob:output_type -> api.job.v1.DeleteJobResponse + 25, // [25:32] is the sub-list for method output_type + 18, // [18:25] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name +} + +func init() { file_job_v1_job_proto_init() } +func file_job_v1_job_proto_init() { + if File_job_v1_job_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_job_v1_job_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Job); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Proposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetProposalRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetProposalResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListJobsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListJobsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListProposalsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListProposalsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProposeJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProposeJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RevokeJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RevokeJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListJobsRequest_Filter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListProposalsRequest_Filter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_job_v1_job_proto_msgTypes[1].OneofWrappers = []interface{}{} + file_job_v1_job_proto_msgTypes[2].OneofWrappers = []interface{}{ + (*GetJobRequest_Id)(nil), + (*GetJobRequest_Uuid)(nil), + } + file_job_v1_job_proto_msgTypes[12].OneofWrappers = []interface{}{ + (*RevokeJobRequest_Id)(nil), + (*RevokeJobRequest_Uuid)(nil), + } + file_job_v1_job_proto_msgTypes[14].OneofWrappers = []interface{}{ + (*DeleteJobRequest_Id)(nil), + (*DeleteJobRequest_Uuid)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_job_v1_job_proto_rawDesc, + NumEnums: 2, + NumMessages: 18, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_job_v1_job_proto_goTypes, + DependencyIndexes: file_job_v1_job_proto_depIdxs, + EnumInfos: file_job_v1_job_proto_enumTypes, + MessageInfos: file_job_v1_job_proto_msgTypes, + }.Build() + File_job_v1_job_proto = out.File + file_job_v1_job_proto_rawDesc = nil + file_job_v1_job_proto_goTypes = nil + file_job_v1_job_proto_depIdxs = nil +} diff --git a/integration-tests/deployment/jd/job/v1/job_grpc.pb.go b/integration-tests/deployment/jd/job/v1/job_grpc.pb.go new file mode 100644 index 0000000000..9b9207c020 --- /dev/null +++ b/integration-tests/deployment/jd/job/v1/job_grpc.pb.go @@ -0,0 +1,345 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.25.3 +// source: job/v1/job.proto + +package v1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + JobService_GetJob_FullMethodName = "/api.job.v1.JobService/GetJob" + JobService_GetProposal_FullMethodName = "/api.job.v1.JobService/GetProposal" + JobService_ListJobs_FullMethodName = "/api.job.v1.JobService/ListJobs" + JobService_ListProposals_FullMethodName = "/api.job.v1.JobService/ListProposals" + JobService_ProposeJob_FullMethodName = "/api.job.v1.JobService/ProposeJob" + JobService_RevokeJob_FullMethodName = "/api.job.v1.JobService/RevokeJob" + JobService_DeleteJob_FullMethodName = "/api.job.v1.JobService/DeleteJob" +) + +// JobServiceClient is the client API for JobService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type JobServiceClient interface { + // GetJob retrieves the details of a specific job by its ID or UUID. + GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*GetJobResponse, error) + // GetProposal retrieves the details of a specific proposal by its ID. + GetProposal(ctx context.Context, in *GetProposalRequest, opts ...grpc.CallOption) (*GetProposalResponse, error) + // ListJobs returns a list of jobs, optionally filtered by IDs or node IDs. + ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) + // ListProposals returns a list of proposals, optionally filtered by proposal or job IDs. + ListProposals(ctx context.Context, in *ListProposalsRequest, opts ...grpc.CallOption) (*ListProposalsResponse, error) + // ProposeJob submits a new job proposal to a node. + ProposeJob(ctx context.Context, in *ProposeJobRequest, opts ...grpc.CallOption) (*ProposeJobResponse, error) + // RevokeJob revokes an existing job proposal. + RevokeJob(ctx context.Context, in *RevokeJobRequest, opts ...grpc.CallOption) (*RevokeJobResponse, error) + // DeleteJob deletes a job from the system. + DeleteJob(ctx context.Context, in *DeleteJobRequest, opts ...grpc.CallOption) (*DeleteJobResponse, error) +} + +type jobServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewJobServiceClient(cc grpc.ClientConnInterface) JobServiceClient { + return &jobServiceClient{cc} +} + +func (c *jobServiceClient) GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*GetJobResponse, error) { + out := new(GetJobResponse) + err := c.cc.Invoke(ctx, JobService_GetJob_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *jobServiceClient) GetProposal(ctx context.Context, in *GetProposalRequest, opts ...grpc.CallOption) (*GetProposalResponse, error) { + out := new(GetProposalResponse) + err := c.cc.Invoke(ctx, JobService_GetProposal_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *jobServiceClient) ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) { + out := new(ListJobsResponse) + err := c.cc.Invoke(ctx, JobService_ListJobs_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *jobServiceClient) ListProposals(ctx context.Context, in *ListProposalsRequest, opts ...grpc.CallOption) (*ListProposalsResponse, error) { + out := new(ListProposalsResponse) + err := c.cc.Invoke(ctx, JobService_ListProposals_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *jobServiceClient) ProposeJob(ctx context.Context, in *ProposeJobRequest, opts ...grpc.CallOption) (*ProposeJobResponse, error) { + out := new(ProposeJobResponse) + err := c.cc.Invoke(ctx, JobService_ProposeJob_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *jobServiceClient) RevokeJob(ctx context.Context, in *RevokeJobRequest, opts ...grpc.CallOption) (*RevokeJobResponse, error) { + out := new(RevokeJobResponse) + err := c.cc.Invoke(ctx, JobService_RevokeJob_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *jobServiceClient) DeleteJob(ctx context.Context, in *DeleteJobRequest, opts ...grpc.CallOption) (*DeleteJobResponse, error) { + out := new(DeleteJobResponse) + err := c.cc.Invoke(ctx, JobService_DeleteJob_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// JobServiceServer is the server API for JobService service. +// All implementations must embed UnimplementedJobServiceServer +// for forward compatibility +type JobServiceServer interface { + // GetJob retrieves the details of a specific job by its ID or UUID. + GetJob(context.Context, *GetJobRequest) (*GetJobResponse, error) + // GetProposal retrieves the details of a specific proposal by its ID. + GetProposal(context.Context, *GetProposalRequest) (*GetProposalResponse, error) + // ListJobs returns a list of jobs, optionally filtered by IDs or node IDs. + ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error) + // ListProposals returns a list of proposals, optionally filtered by proposal or job IDs. + ListProposals(context.Context, *ListProposalsRequest) (*ListProposalsResponse, error) + // ProposeJob submits a new job proposal to a node. + ProposeJob(context.Context, *ProposeJobRequest) (*ProposeJobResponse, error) + // RevokeJob revokes an existing job proposal. + RevokeJob(context.Context, *RevokeJobRequest) (*RevokeJobResponse, error) + // DeleteJob deletes a job from the system. + DeleteJob(context.Context, *DeleteJobRequest) (*DeleteJobResponse, error) + mustEmbedUnimplementedJobServiceServer() +} + +// UnimplementedJobServiceServer must be embedded to have forward compatible implementations. +type UnimplementedJobServiceServer struct { +} + +func (UnimplementedJobServiceServer) GetJob(context.Context, *GetJobRequest) (*GetJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetJob not implemented") +} +func (UnimplementedJobServiceServer) GetProposal(context.Context, *GetProposalRequest) (*GetProposalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetProposal not implemented") +} +func (UnimplementedJobServiceServer) ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListJobs not implemented") +} +func (UnimplementedJobServiceServer) ListProposals(context.Context, *ListProposalsRequest) (*ListProposalsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListProposals not implemented") +} +func (UnimplementedJobServiceServer) ProposeJob(context.Context, *ProposeJobRequest) (*ProposeJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ProposeJob not implemented") +} +func (UnimplementedJobServiceServer) RevokeJob(context.Context, *RevokeJobRequest) (*RevokeJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RevokeJob not implemented") +} +func (UnimplementedJobServiceServer) DeleteJob(context.Context, *DeleteJobRequest) (*DeleteJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteJob not implemented") +} +func (UnimplementedJobServiceServer) mustEmbedUnimplementedJobServiceServer() {} + +// UnsafeJobServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to JobServiceServer will +// result in compilation errors. +type UnsafeJobServiceServer interface { + mustEmbedUnimplementedJobServiceServer() +} + +func RegisterJobServiceServer(s grpc.ServiceRegistrar, srv JobServiceServer) { + s.RegisterService(&JobService_ServiceDesc, srv) +} + +func _JobService_GetJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JobServiceServer).GetJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: JobService_GetJob_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JobServiceServer).GetJob(ctx, req.(*GetJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _JobService_GetProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetProposalRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JobServiceServer).GetProposal(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: JobService_GetProposal_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JobServiceServer).GetProposal(ctx, req.(*GetProposalRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _JobService_ListJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListJobsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JobServiceServer).ListJobs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: JobService_ListJobs_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JobServiceServer).ListJobs(ctx, req.(*ListJobsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _JobService_ListProposals_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListProposalsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JobServiceServer).ListProposals(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: JobService_ListProposals_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JobServiceServer).ListProposals(ctx, req.(*ListProposalsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _JobService_ProposeJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ProposeJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JobServiceServer).ProposeJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: JobService_ProposeJob_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JobServiceServer).ProposeJob(ctx, req.(*ProposeJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _JobService_RevokeJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RevokeJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JobServiceServer).RevokeJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: JobService_RevokeJob_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JobServiceServer).RevokeJob(ctx, req.(*RevokeJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _JobService_DeleteJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JobServiceServer).DeleteJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: JobService_DeleteJob_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JobServiceServer).DeleteJob(ctx, req.(*DeleteJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// JobService_ServiceDesc is the grpc.ServiceDesc for JobService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var JobService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "api.job.v1.JobService", + HandlerType: (*JobServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetJob", + Handler: _JobService_GetJob_Handler, + }, + { + MethodName: "GetProposal", + Handler: _JobService_GetProposal_Handler, + }, + { + MethodName: "ListJobs", + Handler: _JobService_ListJobs_Handler, + }, + { + MethodName: "ListProposals", + Handler: _JobService_ListProposals_Handler, + }, + { + MethodName: "ProposeJob", + Handler: _JobService_ProposeJob_Handler, + }, + { + MethodName: "RevokeJob", + Handler: _JobService_RevokeJob_Handler, + }, + { + MethodName: "DeleteJob", + Handler: _JobService_DeleteJob_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "job/v1/job.proto", +} diff --git a/integration-tests/deployment/jd/node/v1/node.pb.go b/integration-tests/deployment/jd/node/v1/node.pb.go new file mode 100644 index 0000000000..017163b8fc --- /dev/null +++ b/integration-tests/deployment/jd/node/v1/node.pb.go @@ -0,0 +1,2399 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.0 +// protoc v4.25.3 +// source: node/v1/node.proto + +package v1 + +import ( + ptypes "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/shared/ptypes" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ChainType int32 + +const ( + ChainType_CHAIN_TYPE_UNSPECIFIED ChainType = 0 + ChainType_CHAIN_TYPE_EVM ChainType = 1 + ChainType_CHAIN_TYPE_SOLANA ChainType = 2 +) + +// Enum value maps for ChainType. +var ( + ChainType_name = map[int32]string{ + 0: "CHAIN_TYPE_UNSPECIFIED", + 1: "CHAIN_TYPE_EVM", + 2: "CHAIN_TYPE_SOLANA", + } + ChainType_value = map[string]int32{ + "CHAIN_TYPE_UNSPECIFIED": 0, + "CHAIN_TYPE_EVM": 1, + "CHAIN_TYPE_SOLANA": 2, + } +) + +func (x ChainType) Enum() *ChainType { + p := new(ChainType) + *p = x + return p +} + +func (x ChainType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ChainType) Descriptor() protoreflect.EnumDescriptor { + return file_node_v1_node_proto_enumTypes[0].Descriptor() +} + +func (ChainType) Type() protoreflect.EnumType { + return &file_node_v1_node_proto_enumTypes[0] +} + +func (x ChainType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ChainType.Descriptor instead. +func (ChainType) EnumDescriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{0} +} + +// ArchiveState represents the archived state of the node. +type ArchiveState int32 + +const ( + ArchiveState_ARCHIVE_STATE_UNSPECIFIED ArchiveState = 0 + ArchiveState_ARCHIVE_STATE_ARCHIVED ArchiveState = 1 + ArchiveState_ARCHIVE_STATE_ACTIVE ArchiveState = 2 +) + +// Enum value maps for ArchiveState. +var ( + ArchiveState_name = map[int32]string{ + 0: "ARCHIVE_STATE_UNSPECIFIED", + 1: "ARCHIVE_STATE_ARCHIVED", + 2: "ARCHIVE_STATE_ACTIVE", + } + ArchiveState_value = map[string]int32{ + "ARCHIVE_STATE_UNSPECIFIED": 0, + "ARCHIVE_STATE_ARCHIVED": 1, + "ARCHIVE_STATE_ACTIVE": 2, + } +) + +func (x ArchiveState) Enum() *ArchiveState { + p := new(ArchiveState) + *p = x + return p +} + +func (x ArchiveState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ArchiveState) Descriptor() protoreflect.EnumDescriptor { + return file_node_v1_node_proto_enumTypes[1].Descriptor() +} + +func (ArchiveState) Type() protoreflect.EnumType { + return &file_node_v1_node_proto_enumTypes[1] +} + +func (x ArchiveState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ArchiveState.Descriptor instead. +func (ArchiveState) EnumDescriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{1} +} + +// Node represents a node within the Job Distributor system. +type Node struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier for the node. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Human-readable name for the node. + PublicKey string `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // Public key used for secure communications. + IsEnabled bool `protobuf:"varint,4,opt,name=is_enabled,json=isEnabled,proto3" json:"is_enabled,omitempty"` // Indicates if the node is currently enabled. + IsConnected bool `protobuf:"varint,5,opt,name=is_connected,json=isConnected,proto3" json:"is_connected,omitempty"` // Indicates if the node is currently connected to the network. + Labels []*ptypes.Label `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty"` // Set of labels associated with the node. + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Timestamp when the node was created. + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Timestamp when the node was last updated. + ArchivedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=archived_at,json=archivedAt,proto3" json:"archived_at,omitempty"` // Timestamp when the node was archived. +} + +func (x *Node) Reset() { + *x = Node{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Node) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Node) ProtoMessage() {} + +func (x *Node) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Node.ProtoReflect.Descriptor instead. +func (*Node) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{0} +} + +func (x *Node) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Node) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Node) GetPublicKey() string { + if x != nil { + return x.PublicKey + } + return "" +} + +func (x *Node) GetIsEnabled() bool { + if x != nil { + return x.IsEnabled + } + return false +} + +func (x *Node) GetIsConnected() bool { + if x != nil { + return x.IsConnected + } + return false +} + +func (x *Node) GetLabels() []*ptypes.Label { + if x != nil { + return x.Labels + } + return nil +} + +func (x *Node) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Node) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Node) GetArchivedAt() *timestamppb.Timestamp { + if x != nil { + return x.ArchivedAt + } + return nil +} + +type Chain struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type ChainType `protobuf:"varint,2,opt,name=type,proto3,enum=api.node.v1.ChainType" json:"type,omitempty"` +} + +func (x *Chain) Reset() { + *x = Chain{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Chain) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Chain) ProtoMessage() {} + +func (x *Chain) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Chain.ProtoReflect.Descriptor instead. +func (*Chain) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{1} +} + +func (x *Chain) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Chain) GetType() ChainType { + if x != nil { + return x.Type + } + return ChainType_CHAIN_TYPE_UNSPECIFIED +} + +type OCR1Config struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + IsBootstrap bool `protobuf:"varint,2,opt,name=is_bootstrap,json=isBootstrap,proto3" json:"is_bootstrap,omitempty"` + P2PKeyBundle *OCR1Config_P2PKeyBundle `protobuf:"bytes,3,opt,name=p2p_key_bundle,json=p2pKeyBundle,proto3" json:"p2p_key_bundle,omitempty"` + OcrKeyBundle *OCR1Config_OCRKeyBundle `protobuf:"bytes,4,opt,name=ocr_key_bundle,json=ocrKeyBundle,proto3" json:"ocr_key_bundle,omitempty"` + Multiaddr string `protobuf:"bytes,5,opt,name=multiaddr,proto3" json:"multiaddr,omitempty"` +} + +func (x *OCR1Config) Reset() { + *x = OCR1Config{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OCR1Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR1Config) ProtoMessage() {} + +func (x *OCR1Config) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR1Config.ProtoReflect.Descriptor instead. +func (*OCR1Config) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{2} +} + +func (x *OCR1Config) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *OCR1Config) GetIsBootstrap() bool { + if x != nil { + return x.IsBootstrap + } + return false +} + +func (x *OCR1Config) GetP2PKeyBundle() *OCR1Config_P2PKeyBundle { + if x != nil { + return x.P2PKeyBundle + } + return nil +} + +func (x *OCR1Config) GetOcrKeyBundle() *OCR1Config_OCRKeyBundle { + if x != nil { + return x.OcrKeyBundle + } + return nil +} + +func (x *OCR1Config) GetMultiaddr() string { + if x != nil { + return x.Multiaddr + } + return "" +} + +type OCR2Config struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + IsBootstrap bool `protobuf:"varint,2,opt,name=is_bootstrap,json=isBootstrap,proto3" json:"is_bootstrap,omitempty"` + P2PKeyBundle *OCR2Config_P2PKeyBundle `protobuf:"bytes,3,opt,name=p2p_key_bundle,json=p2pKeyBundle,proto3" json:"p2p_key_bundle,omitempty"` + OcrKeyBundle *OCR2Config_OCRKeyBundle `protobuf:"bytes,4,opt,name=ocr_key_bundle,json=ocrKeyBundle,proto3" json:"ocr_key_bundle,omitempty"` + Multiaddr string `protobuf:"bytes,5,opt,name=multiaddr,proto3" json:"multiaddr,omitempty"` + Plugins *OCR2Config_Plugins `protobuf:"bytes,6,opt,name=plugins,proto3" json:"plugins,omitempty"` + ForwarderAddress string `protobuf:"bytes,7,opt,name=forwarder_address,json=forwarderAddress,proto3" json:"forwarder_address,omitempty"` +} + +func (x *OCR2Config) Reset() { + *x = OCR2Config{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OCR2Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR2Config) ProtoMessage() {} + +func (x *OCR2Config) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR2Config.ProtoReflect.Descriptor instead. +func (*OCR2Config) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{3} +} + +func (x *OCR2Config) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *OCR2Config) GetIsBootstrap() bool { + if x != nil { + return x.IsBootstrap + } + return false +} + +func (x *OCR2Config) GetP2PKeyBundle() *OCR2Config_P2PKeyBundle { + if x != nil { + return x.P2PKeyBundle + } + return nil +} + +func (x *OCR2Config) GetOcrKeyBundle() *OCR2Config_OCRKeyBundle { + if x != nil { + return x.OcrKeyBundle + } + return nil +} + +func (x *OCR2Config) GetMultiaddr() string { + if x != nil { + return x.Multiaddr + } + return "" +} + +func (x *OCR2Config) GetPlugins() *OCR2Config_Plugins { + if x != nil { + return x.Plugins + } + return nil +} + +func (x *OCR2Config) GetForwarderAddress() string { + if x != nil { + return x.ForwarderAddress + } + return "" +} + +type ChainConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Chain *Chain `protobuf:"bytes,1,opt,name=chain,proto3" json:"chain,omitempty"` + AccountAddress string `protobuf:"bytes,2,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` + AdminAddress string `protobuf:"bytes,3,opt,name=admin_address,json=adminAddress,proto3" json:"admin_address,omitempty"` + Ocr1Config *OCR1Config `protobuf:"bytes,4,opt,name=ocr1_config,json=ocr1Config,proto3" json:"ocr1_config,omitempty"` + Ocr2Config *OCR2Config `protobuf:"bytes,5,opt,name=ocr2_config,json=ocr2Config,proto3" json:"ocr2_config,omitempty"` +} + +func (x *ChainConfig) Reset() { + *x = ChainConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChainConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChainConfig) ProtoMessage() {} + +func (x *ChainConfig) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChainConfig.ProtoReflect.Descriptor instead. +func (*ChainConfig) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{4} +} + +func (x *ChainConfig) GetChain() *Chain { + if x != nil { + return x.Chain + } + return nil +} + +func (x *ChainConfig) GetAccountAddress() string { + if x != nil { + return x.AccountAddress + } + return "" +} + +func (x *ChainConfig) GetAdminAddress() string { + if x != nil { + return x.AdminAddress + } + return "" +} + +func (x *ChainConfig) GetOcr1Config() *OCR1Config { + if x != nil { + return x.Ocr1Config + } + return nil +} + +func (x *ChainConfig) GetOcr2Config() *OCR2Config { + if x != nil { + return x.Ocr2Config + } + return nil +} + +// CreateNodeRequest contains the information needed to create a new node. +type CreateNodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Desired name for the node. + PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // Public key for the node. + Labels []*ptypes.Label `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"` // Labels to associate with the node. +} + +func (x *CreateNodeRequest) Reset() { + *x = CreateNodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateNodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateNodeRequest) ProtoMessage() {} + +func (x *CreateNodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateNodeRequest.ProtoReflect.Descriptor instead. +func (*CreateNodeRequest) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{5} +} + +func (x *CreateNodeRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CreateNodeRequest) GetPublicKey() string { + if x != nil { + return x.PublicKey + } + return "" +} + +func (x *CreateNodeRequest) GetLabels() []*ptypes.Label { + if x != nil { + return x.Labels + } + return nil +} + +// CreateNodeResponse returns the newly created node. +type CreateNodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Details of the newly created node. +} + +func (x *CreateNodeResponse) Reset() { + *x = CreateNodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateNodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateNodeResponse) ProtoMessage() {} + +func (x *CreateNodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateNodeResponse.ProtoReflect.Descriptor instead. +func (*CreateNodeResponse) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{6} +} + +func (x *CreateNodeResponse) GetNode() *Node { + if x != nil { + return x.Node + } + return nil +} + +// GetNodeRequest is the request to retrieve a single node by its ID. +type GetNodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier of the node to retrieve. +} + +func (x *GetNodeRequest) Reset() { + *x = GetNodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetNodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetNodeRequest) ProtoMessage() {} + +func (x *GetNodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetNodeRequest.ProtoReflect.Descriptor instead. +func (*GetNodeRequest) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{7} +} + +func (x *GetNodeRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// GetNodeResponse is the response containing the requested node. +type GetNodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Details of the retrieved node. +} + +func (x *GetNodeResponse) Reset() { + *x = GetNodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetNodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetNodeResponse) ProtoMessage() {} + +func (x *GetNodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetNodeResponse.ProtoReflect.Descriptor instead. +func (*GetNodeResponse) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{8} +} + +func (x *GetNodeResponse) GetNode() *Node { + if x != nil { + return x.Node + } + return nil +} + +// * +// ListNodesRequest is the request object for the ListNodes method. +// +// Provide a filter to return a subset of data. Nodes can be filtered by: +// - ids - A list of node ids. +// - archived - The archived state of the node. +// - selectors - A list of selectors to filter nodes by their labels. +// +// If no filter is provided, all nodes are returned. +type ListNodesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Filter *ListNodesRequest_Filter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListNodesRequest) Reset() { + *x = ListNodesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNodesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNodesRequest) ProtoMessage() {} + +func (x *ListNodesRequest) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNodesRequest.ProtoReflect.Descriptor instead. +func (*ListNodesRequest) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{9} +} + +func (x *ListNodesRequest) GetFilter() *ListNodesRequest_Filter { + if x != nil { + return x.Filter + } + return nil +} + +// * +// ListNodesResponse is the response object for the ListNodes method. +// +// It returns a list of nodes that match the filter criteria. +type ListNodesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Nodes []*Node `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` // List of nodes. +} + +func (x *ListNodesResponse) Reset() { + *x = ListNodesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNodesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNodesResponse) ProtoMessage() {} + +func (x *ListNodesResponse) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNodesResponse.ProtoReflect.Descriptor instead. +func (*ListNodesResponse) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{10} +} + +func (x *ListNodesResponse) GetNodes() []*Node { + if x != nil { + return x.Nodes + } + return nil +} + +// UpdateNodeRequest contains the information necessary to update a node. +type UpdateNodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier of the node to update. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // New name for the node, if changing. + PublicKey string `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // New public key for the node, if changing. + Labels []*ptypes.Label `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty"` // New set of labels for the node, if changing. +} + +func (x *UpdateNodeRequest) Reset() { + *x = UpdateNodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateNodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateNodeRequest) ProtoMessage() {} + +func (x *UpdateNodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateNodeRequest.ProtoReflect.Descriptor instead. +func (*UpdateNodeRequest) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{11} +} + +func (x *UpdateNodeRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *UpdateNodeRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *UpdateNodeRequest) GetPublicKey() string { + if x != nil { + return x.PublicKey + } + return "" +} + +func (x *UpdateNodeRequest) GetLabels() []*ptypes.Label { + if x != nil { + return x.Labels + } + return nil +} + +// UpdateNodeResponse returns the updated node. +type UpdateNodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Updated node details. +} + +func (x *UpdateNodeResponse) Reset() { + *x = UpdateNodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateNodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateNodeResponse) ProtoMessage() {} + +func (x *UpdateNodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateNodeResponse.ProtoReflect.Descriptor instead. +func (*UpdateNodeResponse) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{12} +} + +func (x *UpdateNodeResponse) GetNode() *Node { + if x != nil { + return x.Node + } + return nil +} + +// ArchiveNodeRequest is used to mark a node as archived. +type ArchiveNodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier of the node to archive. +} + +func (x *ArchiveNodeRequest) Reset() { + *x = ArchiveNodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArchiveNodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArchiveNodeRequest) ProtoMessage() {} + +func (x *ArchiveNodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArchiveNodeRequest.ProtoReflect.Descriptor instead. +func (*ArchiveNodeRequest) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{13} +} + +func (x *ArchiveNodeRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// ArchiveNodeResponse returns the archived node. +type ArchiveNodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Archived node details. +} + +func (x *ArchiveNodeResponse) Reset() { + *x = ArchiveNodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArchiveNodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArchiveNodeResponse) ProtoMessage() {} + +func (x *ArchiveNodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArchiveNodeResponse.ProtoReflect.Descriptor instead. +func (*ArchiveNodeResponse) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{14} +} + +func (x *ArchiveNodeResponse) GetNode() *Node { + if x != nil { + return x.Node + } + return nil +} + +// UnarchiveNodeRequest is used to reactivate an archived node. +type UnarchiveNodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier of the node to unarchive. +} + +func (x *UnarchiveNodeRequest) Reset() { + *x = UnarchiveNodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnarchiveNodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnarchiveNodeRequest) ProtoMessage() {} + +func (x *UnarchiveNodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnarchiveNodeRequest.ProtoReflect.Descriptor instead. +func (*UnarchiveNodeRequest) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{15} +} + +func (x *UnarchiveNodeRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// UnarchiveNodeResponse returns the unarchived node. +type UnarchiveNodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Unarchived node details. +} + +func (x *UnarchiveNodeResponse) Reset() { + *x = UnarchiveNodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnarchiveNodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnarchiveNodeResponse) ProtoMessage() {} + +func (x *UnarchiveNodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnarchiveNodeResponse.ProtoReflect.Descriptor instead. +func (*UnarchiveNodeResponse) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{16} +} + +func (x *UnarchiveNodeResponse) GetNode() *Node { + if x != nil { + return x.Node + } + return nil +} + +type ListNodeChainConfigsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Filter *ListNodeChainConfigsRequest_Filter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListNodeChainConfigsRequest) Reset() { + *x = ListNodeChainConfigsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNodeChainConfigsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNodeChainConfigsRequest) ProtoMessage() {} + +func (x *ListNodeChainConfigsRequest) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNodeChainConfigsRequest.ProtoReflect.Descriptor instead. +func (*ListNodeChainConfigsRequest) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{17} +} + +func (x *ListNodeChainConfigsRequest) GetFilter() *ListNodeChainConfigsRequest_Filter { + if x != nil { + return x.Filter + } + return nil +} + +type ListNodeChainConfigsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChainConfigs []*ChainConfig `protobuf:"bytes,1,rep,name=chain_configs,json=chainConfigs,proto3" json:"chain_configs,omitempty"` +} + +func (x *ListNodeChainConfigsResponse) Reset() { + *x = ListNodeChainConfigsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNodeChainConfigsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNodeChainConfigsResponse) ProtoMessage() {} + +func (x *ListNodeChainConfigsResponse) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNodeChainConfigsResponse.ProtoReflect.Descriptor instead. +func (*ListNodeChainConfigsResponse) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{18} +} + +func (x *ListNodeChainConfigsResponse) GetChainConfigs() []*ChainConfig { + if x != nil { + return x.ChainConfigs + } + return nil +} + +type OCR1Config_P2PKeyBundle struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PeerId string `protobuf:"bytes,1,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` + PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` +} + +func (x *OCR1Config_P2PKeyBundle) Reset() { + *x = OCR1Config_P2PKeyBundle{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OCR1Config_P2PKeyBundle) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR1Config_P2PKeyBundle) ProtoMessage() {} + +func (x *OCR1Config_P2PKeyBundle) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR1Config_P2PKeyBundle.ProtoReflect.Descriptor instead. +func (*OCR1Config_P2PKeyBundle) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *OCR1Config_P2PKeyBundle) GetPeerId() string { + if x != nil { + return x.PeerId + } + return "" +} + +func (x *OCR1Config_P2PKeyBundle) GetPublicKey() string { + if x != nil { + return x.PublicKey + } + return "" +} + +type OCR1Config_OCRKeyBundle struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BundleId string `protobuf:"bytes,1,opt,name=bundle_id,json=bundleId,proto3" json:"bundle_id,omitempty"` + ConfigPublicKey string `protobuf:"bytes,2,opt,name=config_public_key,json=configPublicKey,proto3" json:"config_public_key,omitempty"` + OffchainPublicKey string `protobuf:"bytes,3,opt,name=offchain_public_key,json=offchainPublicKey,proto3" json:"offchain_public_key,omitempty"` + OnchainSigningAddress string `protobuf:"bytes,4,opt,name=onchain_signing_address,json=onchainSigningAddress,proto3" json:"onchain_signing_address,omitempty"` +} + +func (x *OCR1Config_OCRKeyBundle) Reset() { + *x = OCR1Config_OCRKeyBundle{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OCR1Config_OCRKeyBundle) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR1Config_OCRKeyBundle) ProtoMessage() {} + +func (x *OCR1Config_OCRKeyBundle) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR1Config_OCRKeyBundle.ProtoReflect.Descriptor instead. +func (*OCR1Config_OCRKeyBundle) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{2, 1} +} + +func (x *OCR1Config_OCRKeyBundle) GetBundleId() string { + if x != nil { + return x.BundleId + } + return "" +} + +func (x *OCR1Config_OCRKeyBundle) GetConfigPublicKey() string { + if x != nil { + return x.ConfigPublicKey + } + return "" +} + +func (x *OCR1Config_OCRKeyBundle) GetOffchainPublicKey() string { + if x != nil { + return x.OffchainPublicKey + } + return "" +} + +func (x *OCR1Config_OCRKeyBundle) GetOnchainSigningAddress() string { + if x != nil { + return x.OnchainSigningAddress + } + return "" +} + +type OCR2Config_P2PKeyBundle struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PeerId string `protobuf:"bytes,1,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` + PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` +} + +func (x *OCR2Config_P2PKeyBundle) Reset() { + *x = OCR2Config_P2PKeyBundle{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OCR2Config_P2PKeyBundle) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR2Config_P2PKeyBundle) ProtoMessage() {} + +func (x *OCR2Config_P2PKeyBundle) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR2Config_P2PKeyBundle.ProtoReflect.Descriptor instead. +func (*OCR2Config_P2PKeyBundle) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{3, 0} +} + +func (x *OCR2Config_P2PKeyBundle) GetPeerId() string { + if x != nil { + return x.PeerId + } + return "" +} + +func (x *OCR2Config_P2PKeyBundle) GetPublicKey() string { + if x != nil { + return x.PublicKey + } + return "" +} + +type OCR2Config_OCRKeyBundle struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BundleId string `protobuf:"bytes,1,opt,name=bundle_id,json=bundleId,proto3" json:"bundle_id,omitempty"` + ConfigPublicKey string `protobuf:"bytes,2,opt,name=config_public_key,json=configPublicKey,proto3" json:"config_public_key,omitempty"` + OffchainPublicKey string `protobuf:"bytes,3,opt,name=offchain_public_key,json=offchainPublicKey,proto3" json:"offchain_public_key,omitempty"` + OnchainSigningAddress string `protobuf:"bytes,4,opt,name=onchain_signing_address,json=onchainSigningAddress,proto3" json:"onchain_signing_address,omitempty"` +} + +func (x *OCR2Config_OCRKeyBundle) Reset() { + *x = OCR2Config_OCRKeyBundle{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OCR2Config_OCRKeyBundle) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR2Config_OCRKeyBundle) ProtoMessage() {} + +func (x *OCR2Config_OCRKeyBundle) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR2Config_OCRKeyBundle.ProtoReflect.Descriptor instead. +func (*OCR2Config_OCRKeyBundle) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{3, 1} +} + +func (x *OCR2Config_OCRKeyBundle) GetBundleId() string { + if x != nil { + return x.BundleId + } + return "" +} + +func (x *OCR2Config_OCRKeyBundle) GetConfigPublicKey() string { + if x != nil { + return x.ConfigPublicKey + } + return "" +} + +func (x *OCR2Config_OCRKeyBundle) GetOffchainPublicKey() string { + if x != nil { + return x.OffchainPublicKey + } + return "" +} + +func (x *OCR2Config_OCRKeyBundle) GetOnchainSigningAddress() string { + if x != nil { + return x.OnchainSigningAddress + } + return "" +} + +type OCR2Config_Plugins struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Commit bool `protobuf:"varint,1,opt,name=commit,proto3" json:"commit,omitempty"` + Execute bool `protobuf:"varint,2,opt,name=execute,proto3" json:"execute,omitempty"` + Median bool `protobuf:"varint,3,opt,name=median,proto3" json:"median,omitempty"` + Mercury bool `protobuf:"varint,4,opt,name=mercury,proto3" json:"mercury,omitempty"` + Rebalancer bool `protobuf:"varint,5,opt,name=rebalancer,proto3" json:"rebalancer,omitempty"` +} + +func (x *OCR2Config_Plugins) Reset() { + *x = OCR2Config_Plugins{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OCR2Config_Plugins) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR2Config_Plugins) ProtoMessage() {} + +func (x *OCR2Config_Plugins) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR2Config_Plugins.ProtoReflect.Descriptor instead. +func (*OCR2Config_Plugins) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{3, 2} +} + +func (x *OCR2Config_Plugins) GetCommit() bool { + if x != nil { + return x.Commit + } + return false +} + +func (x *OCR2Config_Plugins) GetExecute() bool { + if x != nil { + return x.Execute + } + return false +} + +func (x *OCR2Config_Plugins) GetMedian() bool { + if x != nil { + return x.Median + } + return false +} + +func (x *OCR2Config_Plugins) GetMercury() bool { + if x != nil { + return x.Mercury + } + return false +} + +func (x *OCR2Config_Plugins) GetRebalancer() bool { + if x != nil { + return x.Rebalancer + } + return false +} + +type ListNodesRequest_Filter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` + Archived ArchiveState `protobuf:"varint,2,opt,name=archived,proto3,enum=api.node.v1.ArchiveState" json:"archived,omitempty"` + Selectors []*ptypes.Selector `protobuf:"bytes,3,rep,name=selectors,proto3" json:"selectors,omitempty"` +} + +func (x *ListNodesRequest_Filter) Reset() { + *x = ListNodesRequest_Filter{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNodesRequest_Filter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNodesRequest_Filter) ProtoMessage() {} + +func (x *ListNodesRequest_Filter) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNodesRequest_Filter.ProtoReflect.Descriptor instead. +func (*ListNodesRequest_Filter) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{9, 0} +} + +func (x *ListNodesRequest_Filter) GetIds() []string { + if x != nil { + return x.Ids + } + return nil +} + +func (x *ListNodesRequest_Filter) GetArchived() ArchiveState { + if x != nil { + return x.Archived + } + return ArchiveState_ARCHIVE_STATE_UNSPECIFIED +} + +func (x *ListNodesRequest_Filter) GetSelectors() []*ptypes.Selector { + if x != nil { + return x.Selectors + } + return nil +} + +type ListNodeChainConfigsRequest_Filter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` +} + +func (x *ListNodeChainConfigsRequest_Filter) Reset() { + *x = ListNodeChainConfigsRequest_Filter{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNodeChainConfigsRequest_Filter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNodeChainConfigsRequest_Filter) ProtoMessage() {} + +func (x *ListNodeChainConfigsRequest_Filter) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNodeChainConfigsRequest_Filter.ProtoReflect.Descriptor instead. +func (*ListNodeChainConfigsRequest_Filter) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{17, 0} +} + +func (x *ListNodeChainConfigsRequest_Filter) GetNodeId() string { + if x != nil { + return x.NodeId + } + return "" +} + +var File_node_v1_node_proto protoreflect.FileDescriptor + +var file_node_v1_node_proto_rawDesc = []byte{ + 0x0a, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, + 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x19, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe8, 0x02, + 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, + 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, + 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, + 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x22, 0x43, 0x0a, 0x05, 0x43, 0x68, 0x61, 0x69, + 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x89, 0x04, + 0x0a, 0x0a, 0x4f, 0x43, 0x52, 0x31, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x6f, + 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, + 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x12, 0x4a, 0x0a, 0x0e, 0x70, 0x32, 0x70, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x4f, 0x43, 0x52, 0x31, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x32, 0x50, 0x4b, 0x65, + 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x0c, 0x70, 0x32, 0x70, 0x4b, 0x65, 0x79, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x6f, 0x63, 0x72, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x31, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x43, 0x52, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x52, 0x0c, 0x6f, 0x63, 0x72, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64, 0x64, 0x72, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64, 0x64, 0x72, 0x1a, + 0x46, 0x0a, 0x0c, 0x50, 0x32, 0x50, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, + 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x1a, 0xbf, 0x01, 0x0a, 0x0c, 0x4f, 0x43, 0x52, 0x4b, + 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, + 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, + 0x6f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, + 0x79, 0x12, 0x36, 0x0a, 0x17, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x69, 0x67, + 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x15, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x69, + 0x6e, 0x67, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x81, 0x06, 0x0a, 0x0a, 0x4f, 0x43, + 0x52, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, + 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x42, 0x6f, 0x6f, 0x74, + 0x73, 0x74, 0x72, 0x61, 0x70, 0x12, 0x4a, 0x0a, 0x0e, 0x70, 0x32, 0x70, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x32, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x32, 0x50, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x52, 0x0c, 0x70, 0x32, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x6f, 0x63, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x32, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x4f, 0x43, 0x52, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, + 0x0c, 0x6f, 0x63, 0x72, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64, 0x64, 0x72, 0x12, 0x39, 0x0a, 0x07, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x32, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x07, 0x70, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x1a, 0x46, 0x0a, 0x0c, 0x50, 0x32, 0x50, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x1a, 0xbf, 0x01, 0x0a, 0x0c, + 0x4f, 0x43, 0x52, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, + 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x17, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, + 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x53, + 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x8d, 0x01, + 0x0a, 0x07, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, + 0x65, 0x64, 0x69, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x65, 0x64, + 0x69, 0x61, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x72, 0x63, 0x75, 0x72, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x65, 0x72, 0x63, 0x75, 0x72, 0x79, 0x12, 0x1e, 0x0a, + 0x0a, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x22, 0xf9, 0x01, + 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x28, 0x0a, + 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, + 0x52, 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x6f, 0x63, 0x72, 0x31, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x31, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6f, 0x63, 0x72, 0x31, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x38, 0x0a, 0x0b, 0x6f, 0x63, 0x72, 0x32, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6f, + 0x63, 0x72, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x70, 0x0a, 0x11, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, + 0x79, 0x12, 0x28, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x3b, 0x0a, 0x12, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x20, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x38, 0x0a, 0x0f, 0x47, 0x65, + 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, + 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, + 0x6e, 0x6f, 0x64, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x84, 0x01, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x03, 0x69, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x09, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x52, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x3c, + 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x80, 0x01, 0x0a, + 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, + 0x3b, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x24, 0x0a, 0x12, + 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x3c, 0x0a, 0x13, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, + 0x22, 0x26, 0x0a, 0x14, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x15, 0x55, 0x6e, 0x61, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, + 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x43, + 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x1a, 0x21, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x6e, + 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, + 0x64, 0x65, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x73, 0x2a, 0x52, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, + 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x56, 0x4d, 0x10, 0x01, + 0x12, 0x15, 0x0a, 0x11, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, + 0x4f, 0x4c, 0x41, 0x4e, 0x41, 0x10, 0x02, 0x2a, 0x63, 0x0a, 0x0c, 0x41, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x52, 0x43, 0x48, 0x49, + 0x56, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, + 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, + 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x32, 0xe2, 0x04, 0x0a, + 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x52, 0x0a, 0x0b, + 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, + 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x4f, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1e, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x46, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x09, 0x4c, 0x69, 0x73, + 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4e, + 0x6f, 0x64, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, + 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x4f, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1e, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x42, 0x09, 0x5a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_node_v1_node_proto_rawDescOnce sync.Once + file_node_v1_node_proto_rawDescData = file_node_v1_node_proto_rawDesc +) + +func file_node_v1_node_proto_rawDescGZIP() []byte { + file_node_v1_node_proto_rawDescOnce.Do(func() { + file_node_v1_node_proto_rawDescData = protoimpl.X.CompressGZIP(file_node_v1_node_proto_rawDescData) + }) + return file_node_v1_node_proto_rawDescData +} + +var file_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 26) +var file_node_v1_node_proto_goTypes = []interface{}{ + (ChainType)(0), // 0: api.node.v1.ChainType + (ArchiveState)(0), // 1: api.node.v1.ArchiveState + (*Node)(nil), // 2: api.node.v1.Node + (*Chain)(nil), // 3: api.node.v1.Chain + (*OCR1Config)(nil), // 4: api.node.v1.OCR1Config + (*OCR2Config)(nil), // 5: api.node.v1.OCR2Config + (*ChainConfig)(nil), // 6: api.node.v1.ChainConfig + (*CreateNodeRequest)(nil), // 7: api.node.v1.CreateNodeRequest + (*CreateNodeResponse)(nil), // 8: api.node.v1.CreateNodeResponse + (*GetNodeRequest)(nil), // 9: api.node.v1.GetNodeRequest + (*GetNodeResponse)(nil), // 10: api.node.v1.GetNodeResponse + (*ListNodesRequest)(nil), // 11: api.node.v1.ListNodesRequest + (*ListNodesResponse)(nil), // 12: api.node.v1.ListNodesResponse + (*UpdateNodeRequest)(nil), // 13: api.node.v1.UpdateNodeRequest + (*UpdateNodeResponse)(nil), // 14: api.node.v1.UpdateNodeResponse + (*ArchiveNodeRequest)(nil), // 15: api.node.v1.ArchiveNodeRequest + (*ArchiveNodeResponse)(nil), // 16: api.node.v1.ArchiveNodeResponse + (*UnarchiveNodeRequest)(nil), // 17: api.node.v1.UnarchiveNodeRequest + (*UnarchiveNodeResponse)(nil), // 18: api.node.v1.UnarchiveNodeResponse + (*ListNodeChainConfigsRequest)(nil), // 19: api.node.v1.ListNodeChainConfigsRequest + (*ListNodeChainConfigsResponse)(nil), // 20: api.node.v1.ListNodeChainConfigsResponse + (*OCR1Config_P2PKeyBundle)(nil), // 21: api.node.v1.OCR1Config.P2PKeyBundle + (*OCR1Config_OCRKeyBundle)(nil), // 22: api.node.v1.OCR1Config.OCRKeyBundle + (*OCR2Config_P2PKeyBundle)(nil), // 23: api.node.v1.OCR2Config.P2PKeyBundle + (*OCR2Config_OCRKeyBundle)(nil), // 24: api.node.v1.OCR2Config.OCRKeyBundle + (*OCR2Config_Plugins)(nil), // 25: api.node.v1.OCR2Config.Plugins + (*ListNodesRequest_Filter)(nil), // 26: api.node.v1.ListNodesRequest.Filter + (*ListNodeChainConfigsRequest_Filter)(nil), // 27: api.node.v1.ListNodeChainConfigsRequest.Filter + (*ptypes.Label)(nil), // 28: api.label.Label + (*timestamppb.Timestamp)(nil), // 29: google.protobuf.Timestamp + (*ptypes.Selector)(nil), // 30: api.label.Selector +} +var file_node_v1_node_proto_depIdxs = []int32{ + 28, // 0: api.node.v1.Node.labels:type_name -> api.label.Label + 29, // 1: api.node.v1.Node.created_at:type_name -> google.protobuf.Timestamp + 29, // 2: api.node.v1.Node.updated_at:type_name -> google.protobuf.Timestamp + 29, // 3: api.node.v1.Node.archived_at:type_name -> google.protobuf.Timestamp + 0, // 4: api.node.v1.Chain.type:type_name -> api.node.v1.ChainType + 21, // 5: api.node.v1.OCR1Config.p2p_key_bundle:type_name -> api.node.v1.OCR1Config.P2PKeyBundle + 22, // 6: api.node.v1.OCR1Config.ocr_key_bundle:type_name -> api.node.v1.OCR1Config.OCRKeyBundle + 23, // 7: api.node.v1.OCR2Config.p2p_key_bundle:type_name -> api.node.v1.OCR2Config.P2PKeyBundle + 24, // 8: api.node.v1.OCR2Config.ocr_key_bundle:type_name -> api.node.v1.OCR2Config.OCRKeyBundle + 25, // 9: api.node.v1.OCR2Config.plugins:type_name -> api.node.v1.OCR2Config.Plugins + 3, // 10: api.node.v1.ChainConfig.chain:type_name -> api.node.v1.Chain + 4, // 11: api.node.v1.ChainConfig.ocr1_config:type_name -> api.node.v1.OCR1Config + 5, // 12: api.node.v1.ChainConfig.ocr2_config:type_name -> api.node.v1.OCR2Config + 28, // 13: api.node.v1.CreateNodeRequest.labels:type_name -> api.label.Label + 2, // 14: api.node.v1.CreateNodeResponse.node:type_name -> api.node.v1.Node + 2, // 15: api.node.v1.GetNodeResponse.node:type_name -> api.node.v1.Node + 26, // 16: api.node.v1.ListNodesRequest.filter:type_name -> api.node.v1.ListNodesRequest.Filter + 2, // 17: api.node.v1.ListNodesResponse.nodes:type_name -> api.node.v1.Node + 28, // 18: api.node.v1.UpdateNodeRequest.labels:type_name -> api.label.Label + 2, // 19: api.node.v1.UpdateNodeResponse.node:type_name -> api.node.v1.Node + 2, // 20: api.node.v1.ArchiveNodeResponse.node:type_name -> api.node.v1.Node + 2, // 21: api.node.v1.UnarchiveNodeResponse.node:type_name -> api.node.v1.Node + 27, // 22: api.node.v1.ListNodeChainConfigsRequest.filter:type_name -> api.node.v1.ListNodeChainConfigsRequest.Filter + 6, // 23: api.node.v1.ListNodeChainConfigsResponse.chain_configs:type_name -> api.node.v1.ChainConfig + 1, // 24: api.node.v1.ListNodesRequest.Filter.archived:type_name -> api.node.v1.ArchiveState + 30, // 25: api.node.v1.ListNodesRequest.Filter.selectors:type_name -> api.label.Selector + 15, // 26: api.node.v1.NodeService.ArchiveNode:input_type -> api.node.v1.ArchiveNodeRequest + 7, // 27: api.node.v1.NodeService.CreateNode:input_type -> api.node.v1.CreateNodeRequest + 9, // 28: api.node.v1.NodeService.GetNode:input_type -> api.node.v1.GetNodeRequest + 11, // 29: api.node.v1.NodeService.ListNodes:input_type -> api.node.v1.ListNodesRequest + 19, // 30: api.node.v1.NodeService.ListNodeChainConfigs:input_type -> api.node.v1.ListNodeChainConfigsRequest + 17, // 31: api.node.v1.NodeService.UnarchiveNode:input_type -> api.node.v1.UnarchiveNodeRequest + 13, // 32: api.node.v1.NodeService.UpdateNode:input_type -> api.node.v1.UpdateNodeRequest + 16, // 33: api.node.v1.NodeService.ArchiveNode:output_type -> api.node.v1.ArchiveNodeResponse + 8, // 34: api.node.v1.NodeService.CreateNode:output_type -> api.node.v1.CreateNodeResponse + 10, // 35: api.node.v1.NodeService.GetNode:output_type -> api.node.v1.GetNodeResponse + 12, // 36: api.node.v1.NodeService.ListNodes:output_type -> api.node.v1.ListNodesResponse + 20, // 37: api.node.v1.NodeService.ListNodeChainConfigs:output_type -> api.node.v1.ListNodeChainConfigsResponse + 18, // 38: api.node.v1.NodeService.UnarchiveNode:output_type -> api.node.v1.UnarchiveNodeResponse + 14, // 39: api.node.v1.NodeService.UpdateNode:output_type -> api.node.v1.UpdateNodeResponse + 33, // [33:40] is the sub-list for method output_type + 26, // [26:33] is the sub-list for method input_type + 26, // [26:26] is the sub-list for extension type_name + 26, // [26:26] is the sub-list for extension extendee + 0, // [0:26] is the sub-list for field type_name +} + +func init() { file_node_v1_node_proto_init() } +func file_node_v1_node_proto_init() { + if File_node_v1_node_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_node_v1_node_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Node); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Chain); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OCR1Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OCR2Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChainConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateNodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetNodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNodesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNodesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateNodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArchiveNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArchiveNodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnarchiveNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnarchiveNodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNodeChainConfigsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNodeChainConfigsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OCR1Config_P2PKeyBundle); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OCR1Config_OCRKeyBundle); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OCR2Config_P2PKeyBundle); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OCR2Config_OCRKeyBundle); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OCR2Config_Plugins); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNodesRequest_Filter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNodeChainConfigsRequest_Filter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_node_v1_node_proto_rawDesc, + NumEnums: 2, + NumMessages: 26, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_node_v1_node_proto_goTypes, + DependencyIndexes: file_node_v1_node_proto_depIdxs, + EnumInfos: file_node_v1_node_proto_enumTypes, + MessageInfos: file_node_v1_node_proto_msgTypes, + }.Build() + File_node_v1_node_proto = out.File + file_node_v1_node_proto_rawDesc = nil + file_node_v1_node_proto_goTypes = nil + file_node_v1_node_proto_depIdxs = nil +} diff --git a/integration-tests/deployment/jd/node/v1/node_grpc.pb.go b/integration-tests/deployment/jd/node/v1/node_grpc.pb.go new file mode 100644 index 0000000000..c209ba718a --- /dev/null +++ b/integration-tests/deployment/jd/node/v1/node_grpc.pb.go @@ -0,0 +1,343 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.25.3 +// source: node/v1/node.proto + +package v1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + NodeService_ArchiveNode_FullMethodName = "/api.node.v1.NodeService/ArchiveNode" + NodeService_CreateNode_FullMethodName = "/api.node.v1.NodeService/CreateNode" + NodeService_GetNode_FullMethodName = "/api.node.v1.NodeService/GetNode" + NodeService_ListNodes_FullMethodName = "/api.node.v1.NodeService/ListNodes" + NodeService_ListNodeChainConfigs_FullMethodName = "/api.node.v1.NodeService/ListNodeChainConfigs" + NodeService_UnarchiveNode_FullMethodName = "/api.node.v1.NodeService/UnarchiveNode" + NodeService_UpdateNode_FullMethodName = "/api.node.v1.NodeService/UpdateNode" +) + +// NodeServiceClient is the client API for NodeService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type NodeServiceClient interface { + // ArchiveNode marks a node as archived, disabling any active operations on it. + ArchiveNode(ctx context.Context, in *ArchiveNodeRequest, opts ...grpc.CallOption) (*ArchiveNodeResponse, error) + // CreateNode adds a new node to the system with specified details. + CreateNode(ctx context.Context, in *CreateNodeRequest, opts ...grpc.CallOption) (*CreateNodeResponse, error) + // GetNode retrieves the details of a node by its unique identifier. + GetNode(ctx context.Context, in *GetNodeRequest, opts ...grpc.CallOption) (*GetNodeResponse, error) + // ListNodes returns a list of nodes, optionally filtered by the provided criteria. + ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error) + ListNodeChainConfigs(ctx context.Context, in *ListNodeChainConfigsRequest, opts ...grpc.CallOption) (*ListNodeChainConfigsResponse, error) + // UnarchiveNode reactivates an archived node, allowing operations to resume. + UnarchiveNode(ctx context.Context, in *UnarchiveNodeRequest, opts ...grpc.CallOption) (*UnarchiveNodeResponse, error) + // UpdateNode updates the details of an existing node. + UpdateNode(ctx context.Context, in *UpdateNodeRequest, opts ...grpc.CallOption) (*UpdateNodeResponse, error) +} + +type nodeServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewNodeServiceClient(cc grpc.ClientConnInterface) NodeServiceClient { + return &nodeServiceClient{cc} +} + +func (c *nodeServiceClient) ArchiveNode(ctx context.Context, in *ArchiveNodeRequest, opts ...grpc.CallOption) (*ArchiveNodeResponse, error) { + out := new(ArchiveNodeResponse) + err := c.cc.Invoke(ctx, NodeService_ArchiveNode_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) CreateNode(ctx context.Context, in *CreateNodeRequest, opts ...grpc.CallOption) (*CreateNodeResponse, error) { + out := new(CreateNodeResponse) + err := c.cc.Invoke(ctx, NodeService_CreateNode_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) GetNode(ctx context.Context, in *GetNodeRequest, opts ...grpc.CallOption) (*GetNodeResponse, error) { + out := new(GetNodeResponse) + err := c.cc.Invoke(ctx, NodeService_GetNode_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error) { + out := new(ListNodesResponse) + err := c.cc.Invoke(ctx, NodeService_ListNodes_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) ListNodeChainConfigs(ctx context.Context, in *ListNodeChainConfigsRequest, opts ...grpc.CallOption) (*ListNodeChainConfigsResponse, error) { + out := new(ListNodeChainConfigsResponse) + err := c.cc.Invoke(ctx, NodeService_ListNodeChainConfigs_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) UnarchiveNode(ctx context.Context, in *UnarchiveNodeRequest, opts ...grpc.CallOption) (*UnarchiveNodeResponse, error) { + out := new(UnarchiveNodeResponse) + err := c.cc.Invoke(ctx, NodeService_UnarchiveNode_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) UpdateNode(ctx context.Context, in *UpdateNodeRequest, opts ...grpc.CallOption) (*UpdateNodeResponse, error) { + out := new(UpdateNodeResponse) + err := c.cc.Invoke(ctx, NodeService_UpdateNode_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// NodeServiceServer is the server API for NodeService service. +// All implementations must embed UnimplementedNodeServiceServer +// for forward compatibility +type NodeServiceServer interface { + // ArchiveNode marks a node as archived, disabling any active operations on it. + ArchiveNode(context.Context, *ArchiveNodeRequest) (*ArchiveNodeResponse, error) + // CreateNode adds a new node to the system with specified details. + CreateNode(context.Context, *CreateNodeRequest) (*CreateNodeResponse, error) + // GetNode retrieves the details of a node by its unique identifier. + GetNode(context.Context, *GetNodeRequest) (*GetNodeResponse, error) + // ListNodes returns a list of nodes, optionally filtered by the provided criteria. + ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) + ListNodeChainConfigs(context.Context, *ListNodeChainConfigsRequest) (*ListNodeChainConfigsResponse, error) + // UnarchiveNode reactivates an archived node, allowing operations to resume. + UnarchiveNode(context.Context, *UnarchiveNodeRequest) (*UnarchiveNodeResponse, error) + // UpdateNode updates the details of an existing node. + UpdateNode(context.Context, *UpdateNodeRequest) (*UpdateNodeResponse, error) + mustEmbedUnimplementedNodeServiceServer() +} + +// UnimplementedNodeServiceServer must be embedded to have forward compatible implementations. +type UnimplementedNodeServiceServer struct { +} + +func (UnimplementedNodeServiceServer) ArchiveNode(context.Context, *ArchiveNodeRequest) (*ArchiveNodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ArchiveNode not implemented") +} +func (UnimplementedNodeServiceServer) CreateNode(context.Context, *CreateNodeRequest) (*CreateNodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateNode not implemented") +} +func (UnimplementedNodeServiceServer) GetNode(context.Context, *GetNodeRequest) (*GetNodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetNode not implemented") +} +func (UnimplementedNodeServiceServer) ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListNodes not implemented") +} +func (UnimplementedNodeServiceServer) ListNodeChainConfigs(context.Context, *ListNodeChainConfigsRequest) (*ListNodeChainConfigsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListNodeChainConfigs not implemented") +} +func (UnimplementedNodeServiceServer) UnarchiveNode(context.Context, *UnarchiveNodeRequest) (*UnarchiveNodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnarchiveNode not implemented") +} +func (UnimplementedNodeServiceServer) UpdateNode(context.Context, *UpdateNodeRequest) (*UpdateNodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateNode not implemented") +} +func (UnimplementedNodeServiceServer) mustEmbedUnimplementedNodeServiceServer() {} + +// UnsafeNodeServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to NodeServiceServer will +// result in compilation errors. +type UnsafeNodeServiceServer interface { + mustEmbedUnimplementedNodeServiceServer() +} + +func RegisterNodeServiceServer(s grpc.ServiceRegistrar, srv NodeServiceServer) { + s.RegisterService(&NodeService_ServiceDesc, srv) +} + +func _NodeService_ArchiveNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ArchiveNodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).ArchiveNode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_ArchiveNode_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).ArchiveNode(ctx, req.(*ArchiveNodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_CreateNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateNodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).CreateNode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_CreateNode_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).CreateNode(ctx, req.(*CreateNodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_GetNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetNodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).GetNode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_GetNode_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).GetNode(ctx, req.(*GetNodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_ListNodes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListNodesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).ListNodes(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_ListNodes_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).ListNodes(ctx, req.(*ListNodesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_ListNodeChainConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListNodeChainConfigsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).ListNodeChainConfigs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_ListNodeChainConfigs_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).ListNodeChainConfigs(ctx, req.(*ListNodeChainConfigsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_UnarchiveNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UnarchiveNodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).UnarchiveNode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_UnarchiveNode_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).UnarchiveNode(ctx, req.(*UnarchiveNodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_UpdateNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateNodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).UpdateNode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_UpdateNode_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).UpdateNode(ctx, req.(*UpdateNodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// NodeService_ServiceDesc is the grpc.ServiceDesc for NodeService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var NodeService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "api.node.v1.NodeService", + HandlerType: (*NodeServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ArchiveNode", + Handler: _NodeService_ArchiveNode_Handler, + }, + { + MethodName: "CreateNode", + Handler: _NodeService_CreateNode_Handler, + }, + { + MethodName: "GetNode", + Handler: _NodeService_GetNode_Handler, + }, + { + MethodName: "ListNodes", + Handler: _NodeService_ListNodes_Handler, + }, + { + MethodName: "ListNodeChainConfigs", + Handler: _NodeService_ListNodeChainConfigs_Handler, + }, + { + MethodName: "UnarchiveNode", + Handler: _NodeService_UnarchiveNode_Handler, + }, + { + MethodName: "UpdateNode", + Handler: _NodeService_UpdateNode_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "node/v1/node.proto", +} diff --git a/integration-tests/deployment/jd/shared/ptypes/label.pb.go b/integration-tests/deployment/jd/shared/ptypes/label.pb.go new file mode 100644 index 0000000000..e8195bd6c3 --- /dev/null +++ b/integration-tests/deployment/jd/shared/ptypes/label.pb.go @@ -0,0 +1,311 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.0 +// protoc v4.25.3 +// source: shared/ptypes/label.proto + +package ptypes + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// SelectorOp defines the operation to be used in a selector +type SelectorOp int32 + +const ( + SelectorOp_EQ SelectorOp = 0 + SelectorOp_NOT_EQ SelectorOp = 1 + SelectorOp_IN SelectorOp = 2 + SelectorOp_NOT_IN SelectorOp = 3 + SelectorOp_EXIST SelectorOp = 4 + SelectorOp_NOT_EXIST SelectorOp = 5 +) + +// Enum value maps for SelectorOp. +var ( + SelectorOp_name = map[int32]string{ + 0: "EQ", + 1: "NOT_EQ", + 2: "IN", + 3: "NOT_IN", + 4: "EXIST", + 5: "NOT_EXIST", + } + SelectorOp_value = map[string]int32{ + "EQ": 0, + "NOT_EQ": 1, + "IN": 2, + "NOT_IN": 3, + "EXIST": 4, + "NOT_EXIST": 5, + } +) + +func (x SelectorOp) Enum() *SelectorOp { + p := new(SelectorOp) + *p = x + return p +} + +func (x SelectorOp) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SelectorOp) Descriptor() protoreflect.EnumDescriptor { + return file_shared_ptypes_label_proto_enumTypes[0].Descriptor() +} + +func (SelectorOp) Type() protoreflect.EnumType { + return &file_shared_ptypes_label_proto_enumTypes[0] +} + +func (x SelectorOp) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SelectorOp.Descriptor instead. +func (SelectorOp) EnumDescriptor() ([]byte, []int) { + return file_shared_ptypes_label_proto_rawDescGZIP(), []int{0} +} + +// Label defines a label as a key value pair +type Label struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` +} + +func (x *Label) Reset() { + *x = Label{} + if protoimpl.UnsafeEnabled { + mi := &file_shared_ptypes_label_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Label) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Label) ProtoMessage() {} + +func (x *Label) ProtoReflect() protoreflect.Message { + mi := &file_shared_ptypes_label_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Label.ProtoReflect.Descriptor instead. +func (*Label) Descriptor() ([]byte, []int) { + return file_shared_ptypes_label_proto_rawDescGZIP(), []int{0} +} + +func (x *Label) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *Label) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value + } + return "" +} + +// Selector defines a selector as a key value pair with an operation +type Selector struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Op SelectorOp `protobuf:"varint,2,opt,name=op,proto3,enum=api.label.SelectorOp" json:"op,omitempty"` + Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` +} + +func (x *Selector) Reset() { + *x = Selector{} + if protoimpl.UnsafeEnabled { + mi := &file_shared_ptypes_label_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Selector) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Selector) ProtoMessage() {} + +func (x *Selector) ProtoReflect() protoreflect.Message { + mi := &file_shared_ptypes_label_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Selector.ProtoReflect.Descriptor instead. +func (*Selector) Descriptor() ([]byte, []int) { + return file_shared_ptypes_label_proto_rawDescGZIP(), []int{1} +} + +func (x *Selector) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *Selector) GetOp() SelectorOp { + if x != nil { + return x.Op + } + return SelectorOp_EQ +} + +func (x *Selector) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value + } + return "" +} + +var File_shared_ptypes_label_proto protoreflect.FileDescriptor + +var file_shared_ptypes_label_proto_rawDesc = []byte{ + 0x0a, 0x19, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x69, + 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x3e, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x68, 0x0a, 0x08, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x2a, 0x4e, 0x0a, 0x0a, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4f, 0x70, 0x12, 0x06, + 0x0a, 0x02, 0x45, 0x51, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x51, + 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, + 0x54, 0x5f, 0x49, 0x4e, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, + 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x05, + 0x42, 0x47, 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6d, 0x61, 0x72, 0x74, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6b, 0x69, 0x74, 0x2f, + 0x6a, 0x6f, 0x62, 0x2d, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_shared_ptypes_label_proto_rawDescOnce sync.Once + file_shared_ptypes_label_proto_rawDescData = file_shared_ptypes_label_proto_rawDesc +) + +func file_shared_ptypes_label_proto_rawDescGZIP() []byte { + file_shared_ptypes_label_proto_rawDescOnce.Do(func() { + file_shared_ptypes_label_proto_rawDescData = protoimpl.X.CompressGZIP(file_shared_ptypes_label_proto_rawDescData) + }) + return file_shared_ptypes_label_proto_rawDescData +} + +var file_shared_ptypes_label_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_shared_ptypes_label_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_shared_ptypes_label_proto_goTypes = []interface{}{ + (SelectorOp)(0), // 0: api.label.SelectorOp + (*Label)(nil), // 1: api.label.Label + (*Selector)(nil), // 2: api.label.Selector +} +var file_shared_ptypes_label_proto_depIdxs = []int32{ + 0, // 0: api.label.Selector.op:type_name -> api.label.SelectorOp + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_shared_ptypes_label_proto_init() } +func file_shared_ptypes_label_proto_init() { + if File_shared_ptypes_label_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_shared_ptypes_label_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Label); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_shared_ptypes_label_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Selector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_shared_ptypes_label_proto_msgTypes[0].OneofWrappers = []interface{}{} + file_shared_ptypes_label_proto_msgTypes[1].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_shared_ptypes_label_proto_rawDesc, + NumEnums: 1, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_shared_ptypes_label_proto_goTypes, + DependencyIndexes: file_shared_ptypes_label_proto_depIdxs, + EnumInfos: file_shared_ptypes_label_proto_enumTypes, + MessageInfos: file_shared_ptypes_label_proto_msgTypes, + }.Build() + File_shared_ptypes_label_proto = out.File + file_shared_ptypes_label_proto_rawDesc = nil + file_shared_ptypes_label_proto_goTypes = nil + file_shared_ptypes_label_proto_depIdxs = nil +} diff --git a/integration-tests/deployment/memory/environment.go b/integration-tests/deployment/memory/environment.go new file mode 100644 index 0000000000..ec80c991cd --- /dev/null +++ b/integration-tests/deployment/memory/environment.go @@ -0,0 +1,111 @@ +package memory + +import ( + "testing" + + "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" + "github.com/ethereum/go-ethereum/common" + "github.com/hashicorp/consul/sdk/freeport" + chainsel "github.com/smartcontractkit/chain-selectors" + "github.com/stretchr/testify/require" + "go.uber.org/zap/zapcore" + + "github.com/smartcontractkit/chainlink/integration-tests/deployment" + + "github.com/smartcontractkit/chainlink-common/pkg/logger" +) + +const ( + Memory = "memory" +) + +type MemoryEnvironmentConfig struct { + Chains int + Nodes int + Bootstraps int + RegistryConfig RegistryConfig +} + +// Needed for environment variables on the node which point to prexisitng addresses. +// i.e. CapReg. +func NewMemoryChains(t *testing.T, numChains int) map[uint64]deployment.Chain { + mchains := GenerateChains(t, numChains) + chains := make(map[uint64]deployment.Chain) + for cid, chain := range mchains { + sel, err := chainsel.SelectorFromChainId(cid) + require.NoError(t, err) + chains[sel] = deployment.Chain{ + Selector: sel, + Client: chain.Backend, + DeployerKey: chain.DeployerKey, + Confirm: func(tx common.Hash) error { + chain.Backend.Commit() + return nil + }, + } + } + return chains +} + +func NewNodes(t *testing.T, chains map[uint64]deployment.Chain, numNodes, numBootstraps int, registryConfig RegistryConfig) map[string]Node { + mchains := make(map[uint64]EVMChain) + for _, chain := range chains { + evmChainID, err := chainsel.ChainIdFromSelector(chain.Selector) + if err != nil { + t.Fatal(err) + } + mchains[evmChainID] = EVMChain{ + Backend: chain.Client.(*backends.SimulatedBackend), + DeployerKey: chain.DeployerKey, + } + } + nodesByPeerID := make(map[string]Node) + var nodeIDs []string + ports := freeport.GetN(t, numNodes) + var existingNumBootstraps int + for i := 0; i < numNodes; i++ { + bootstrap := false + if existingNumBootstraps < numBootstraps { + bootstrap = true + existingNumBootstraps++ + } + node := NewNode(t, ports[i], mchains, zapcore.DebugLevel, bootstrap, registryConfig) + nodesByPeerID[node.Keys.PeerID.String()] = *node + // Note in real env, this ID is allocated by JD. + nodeIDs = append(nodeIDs, node.Keys.PeerID.String()) + } + return nodesByPeerID +} + +func NewMemoryEnvironmentExistingChains(t *testing.T, lggr logger.Logger, + chains map[uint64]deployment.Chain, config MemoryEnvironmentConfig) deployment.Environment { + nodes := NewNodes(t, chains, config.Nodes, config.Bootstraps, config.RegistryConfig) + var nodeIDs []string + for id := range nodes { + nodeIDs = append(nodeIDs, id) + } + return deployment.Environment{ + Name: Memory, + Offchain: NewMemoryJobClient(nodes), + NodeIDs: nodeIDs, + Chains: chains, + Logger: lggr, + } +} + +// To be used by tests and any kind of deployment logic. +func NewMemoryEnvironment(t *testing.T, lggr logger.Logger, config MemoryEnvironmentConfig) deployment.Environment { + chains := NewMemoryChains(t, config.Chains) + nodes := NewNodes(t, chains, config.Nodes, config.Bootstraps, config.RegistryConfig) + var nodeIDs []string + for id := range nodes { + nodeIDs = append(nodeIDs, id) + } + return deployment.Environment{ + Name: Memory, + Offchain: NewMemoryJobClient(nodes), + NodeIDs: nodeIDs, + Chains: chains, + Logger: lggr, + } +} diff --git a/integration-tests/deployment/memory/job_client.go b/integration-tests/deployment/memory/job_client.go index 5422d2b2d2..b6053707ad 100644 --- a/integration-tests/deployment/memory/job_client.go +++ b/integration-tests/deployment/memory/job_client.go @@ -3,35 +3,126 @@ package memory import ( "context" - "github.com/google/uuid" + "google.golang.org/grpc" - "github.com/smartcontractkit/chainlink/v2/core/services/feeds" + jobv1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/job/v1" + nodev1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/node/v1" + + "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/validate" ) type JobClient struct { Nodes map[string]Node } -func NewMemoryJobClient(nodesByPeerID map[string]Node) *JobClient { - return &JobClient{nodesByPeerID} +func (j JobClient) ArchiveNode(ctx context.Context, in *nodev1.ArchiveNodeRequest, opts ...grpc.CallOption) (*nodev1.ArchiveNodeResponse, error) { + //TODO implement me + panic("implement me") +} + +func (j JobClient) CreateNode(ctx context.Context, in *nodev1.CreateNodeRequest, opts ...grpc.CallOption) (*nodev1.CreateNodeResponse, error) { + //TODO implement me + panic("implement me") +} + +func (j JobClient) GetNode(ctx context.Context, in *nodev1.GetNodeRequest, opts ...grpc.CallOption) (*nodev1.GetNodeResponse, error) { + //TODO implement me + panic("implement me") +} + +func (j JobClient) ListNodes(ctx context.Context, in *nodev1.ListNodesRequest, opts ...grpc.CallOption) (*nodev1.ListNodesResponse, error) { + //TODO implement me + panic("implement me") +} + +func (j JobClient) ListNodeChainConfigs(ctx context.Context, in *nodev1.ListNodeChainConfigsRequest, opts ...grpc.CallOption) (*nodev1.ListNodeChainConfigsResponse, error) { + n := j.Nodes[in.Filter.NodeId] + // TODO: I think we can pull it from the feeds manager. + return &nodev1.ListNodeChainConfigsResponse{ + ChainConfigs: []*nodev1.ChainConfig{ + { + Ocr2Config: &nodev1.OCR2Config{ + P2PKeyBundle: &nodev1.OCR2Config_P2PKeyBundle{ + PeerId: n.Keys.PeerID.String(), + PublicKey: "", + }, + OcrKeyBundle: &nodev1.OCR2Config_OCRKeyBundle{ + BundleId: n.Keys.OCRKeyBundle.ID(), + }, + IsBootstrap: n.IsBoostrap, + Multiaddr: n.Addr.String(), + }, + }, + }, + }, nil +} + +func (j JobClient) UnarchiveNode(ctx context.Context, in *nodev1.UnarchiveNodeRequest, opts ...grpc.CallOption) (*nodev1.UnarchiveNodeResponse, error) { + //TODO implement me + panic("implement me") +} + +func (j JobClient) UpdateNode(ctx context.Context, in *nodev1.UpdateNodeRequest, opts ...grpc.CallOption) (*nodev1.UpdateNodeResponse, error) { + //TODO implement me + panic("implement me") } -// TODO: Use interface once ready. -func (m JobClient) ProposeJob(ctx context.Context, nodeId string, spec string) (int64, error) { - jobProposalID, err := m.Nodes[nodeId].App.GetFeedsService().ProposeJob(ctx, &feeds.ProposeJobArgs{ - FeedsManagerID: 0, - RemoteUUID: uuid.New(), - Multiaddrs: nil, - Version: 0, - Spec: spec, - }) - return jobProposalID, err +func (j JobClient) GetJob(ctx context.Context, in *jobv1.GetJobRequest, opts ...grpc.CallOption) (*jobv1.GetJobResponse, error) { + //TODO implement me + panic("implement me") } -func (m JobClient) GetJob(ctx context.Context, nodeId string, jobID int64) (string, error) { - jobProposal, err := m.Nodes[nodeId].App.GetFeedsService().GetSpec(ctx, jobID) +func (j JobClient) GetProposal(ctx context.Context, in *jobv1.GetProposalRequest, opts ...grpc.CallOption) (*jobv1.GetProposalResponse, error) { + //TODO implement me + panic("implement me") +} + +func (j JobClient) ListJobs(ctx context.Context, in *jobv1.ListJobsRequest, opts ...grpc.CallOption) (*jobv1.ListJobsResponse, error) { + //TODO implement me + panic("implement me") +} + +func (j JobClient) ListProposals(ctx context.Context, in *jobv1.ListProposalsRequest, opts ...grpc.CallOption) (*jobv1.ListProposalsResponse, error) { + //TODO implement me + panic("implement me") +} + +func (j JobClient) ProposeJob(ctx context.Context, in *jobv1.ProposeJobRequest, opts ...grpc.CallOption) (*jobv1.ProposeJobResponse, error) { + n := j.Nodes[in.NodeId] + // TODO: Use FMS + jb, err := validate.ValidatedCCIPSpec(in.Spec) + if err != nil { + return nil, err + } + err = n.App.AddJobV2(ctx, &jb) if err != nil { - return "", err + return nil, err } - return jobProposal.Definition, nil + return &jobv1.ProposeJobResponse{Proposal: &jobv1.Proposal{ + Id: "", + Version: 0, + // Auto approve for now + Status: jobv1.ProposalStatus_PROPOSAL_STATUS_APPROVED, + DeliveryStatus: jobv1.ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_DELIVERED, + Spec: in.Spec, + JobId: jb.ExternalJobID.String(), + CreatedAt: nil, + UpdatedAt: nil, + AckedAt: nil, + ResponseReceivedAt: nil, + }}, nil +} + +func (j JobClient) RevokeJob(ctx context.Context, in *jobv1.RevokeJobRequest, opts ...grpc.CallOption) (*jobv1.RevokeJobResponse, error) { + //TODO implement me + panic("implement me") +} + +func (j JobClient) DeleteJob(ctx context.Context, in *jobv1.DeleteJobRequest, opts ...grpc.CallOption) (*jobv1.DeleteJobResponse, error) { + //TODO implement me + panic("implement me") +} + +func NewMemoryJobClient(nodesByPeerID map[string]Node) *JobClient { + return &JobClient{nodesByPeerID} } diff --git a/integration-tests/deployment/memory/node.go b/integration-tests/deployment/memory/node.go index ef429f3b6f..449bf19557 100644 --- a/integration-tests/deployment/memory/node.go +++ b/integration-tests/deployment/memory/node.go @@ -4,7 +4,9 @@ import ( "context" "fmt" "math/big" + "net" "net/http" + "strconv" "testing" "time" @@ -29,6 +31,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/services/keystore/chaintype" "github.com/smartcontractkit/chainlink/v2/core/services/keystore/keys/ocr2key" "github.com/smartcontractkit/chainlink/v2/core/services/keystore/keys/p2pkey" + "github.com/smartcontractkit/chainlink/v2/core/services/relay" "github.com/smartcontractkit/chainlink/v2/core/utils" "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" "github.com/smartcontractkit/chainlink/v2/plugins" @@ -53,7 +56,14 @@ func Context(tb testing.TB) context.Context { type Node struct { App chainlink.Application // Transmitter key/OCR keys for this node - Keys Keys + Keys Keys + Addr net.TCPAddr + IsBoostrap bool +} + +type RegistryConfig struct { + EVMChainID uint64 + Contract common.Address } // Creates a CL node which is: @@ -65,6 +75,8 @@ func NewNode( port int, // Port for the P2P V2 listener. chains map[uint64]EVMChain, logLevel zapcore.Level, + bootstrap bool, + registryConfig RegistryConfig, ) *Node { // Do not want to load fixtures as they contain a dummy chainID. // Create database and initial configuration. @@ -79,6 +91,12 @@ func NewNode( c.P2P.V2.DeltaReconcile = config.MustNewDuration(5 * time.Second) c.P2P.V2.ListenAddresses = &[]string{fmt.Sprintf("127.0.0.1:%d", port)} + // Enable Capabilities, This is a pre-requisite for registrySyncer to work. + c.Capabilities.ExternalRegistry.NetworkID = ptr(relay.NetworkEVM) + c.Capabilities.ExternalRegistry.ChainID = ptr(strconv.FormatUint(uint64(registryConfig.EVMChainID), 10)) + fmt.Println("REG COFN", registryConfig.Contract.String()) + c.Capabilities.ExternalRegistry.Address = ptr(registryConfig.Contract.String()) + // OCR configs c.OCR.Enabled = ptr(false) c.OCR.DefaultTransactionQueueDepth = ptr(uint32(200)) @@ -162,8 +180,10 @@ func NewNode( keys := CreateKeys(t, app, chains) return &Node{ - App: app, - Keys: keys, + App: app, + Keys: keys, + Addr: net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: port}, + IsBoostrap: bootstrap, } } diff --git a/integration-tests/deployment/memory/node_test.go b/integration-tests/deployment/memory/node_test.go index 438a6ab102..d64c7717fc 100644 --- a/integration-tests/deployment/memory/node_test.go +++ b/integration-tests/deployment/memory/node_test.go @@ -11,7 +11,7 @@ import ( func TestNode(t *testing.T) { chains := GenerateChains(t, 3) ports := freeport.GetN(t, 1) - node := NewNode(t, ports[0], chains, zapcore.DebugLevel) + node := NewNode(t, ports[0], chains, zapcore.DebugLevel, false, RegistryConfig{}) // We expect 3 transmitter keys keys, err := node.App.GetKeyStore().Eth().GetAll(Context(t)) require.NoError(t, err) diff --git a/integration-tests/deployment/migrations.go b/integration-tests/deployment/migrations.go index ceb12e7d9d..5defd56075 100644 --- a/integration-tests/deployment/migrations.go +++ b/integration-tests/deployment/migrations.go @@ -1,21 +1,10 @@ package deployment import ( - "math/big" - - "github.com/ethereum/go-ethereum/common" + owner_wrappers "github.com/smartcontractkit/ccip-owner-contracts/gethwrappers" ) -// TODO: To move to ccip-owner-contracts -type ManyChainMultiSigOp struct { - ChainId *big.Int - MultiSig common.Address - Nonce *big.Int - To common.Address - Value *big.Int - Data []byte -} - +// TODO: Move to real MCM structs once available. type Proposal struct { // keccak256(abi.encode(root, validUntil)) is what is signed by MCMS // signers. @@ -23,7 +12,7 @@ type Proposal struct { // Leaves are the items in the proposal. // Uses these to generate the root as well as display whats in the root. // These Ops may be destined for distinct chains. - Ops []ManyChainMultiSigOp + Ops []owner_wrappers.ManyChainMultiSigOp } func (p Proposal) String() string { diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 057d8ba660..886fdc4bd5 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -32,6 +32,7 @@ require ( github.com/segmentio/ksuid v1.0.4 github.com/shopspring/decimal v1.4.0 github.com/slack-go/slack v0.12.2 + github.com/smartcontractkit/ccip-owner-contracts v0.0.0-20240808195812-ae0378684685 github.com/smartcontractkit/chain-selectors v1.0.21 github.com/smartcontractkit/chainlink-automation v1.0.4 github.com/smartcontractkit/chainlink-common v0.2.1-0.20240717132349-ee5af9b79834 @@ -55,6 +56,8 @@ require ( golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 golang.org/x/sync v0.7.0 golang.org/x/text v0.16.0 + google.golang.org/grpc v1.65.0 + google.golang.org/protobuf v1.34.2 gopkg.in/guregu/null.v4 v4.0.0 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 @@ -465,8 +468,6 @@ require ( google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240711142825-46eb208f015d // indirect - google.golang.org/grpc v1.65.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 98b8212599..b1278ba3e3 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1388,6 +1388,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/slack-go/slack v0.12.2 h1:x3OppyMyGIbbiyFhsBmpf9pwkUzMhthJMRNmNlA4LaQ= github.com/slack-go/slack v0.12.2/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw= +github.com/smartcontractkit/ccip-owner-contracts v0.0.0-20240808195812-ae0378684685 h1:jakAsdhDxV4cMgRAcSvHraXjyePi8umG5SEUTGFvuy8= +github.com/smartcontractkit/ccip-owner-contracts v0.0.0-20240808195812-ae0378684685/go.mod h1:p7L/xNEQpHDdZtgFA6/FavuZHqvV3kYhQysxBywmq1k= github.com/smartcontractkit/chain-selectors v1.0.21 h1:KCR9SA7PhOexaBzFieHoLv1WonwhVOPtOStpqTmLC4E= github.com/smartcontractkit/chain-selectors v1.0.21/go.mod h1:d4Hi+E1zqjy9HqMkjBE5q1vcG9VGgxf5VxiRHfzi2kE= github.com/smartcontractkit/chainlink-automation v1.0.4 h1:iyW181JjKHLNMnDleI8umfIfVVlwC7+n5izbLSFgjw8= From ba612fdec37c90d3f2b9f23d340a022a0c849efa Mon Sep 17 00:00:00 2001 From: connorwstein Date: Mon, 12 Aug 2024 22:45:26 -0400 Subject: [PATCH 18/42] Generics --- integration-tests/deployment/ccip/deploy.go | 406 +++++++++--------- integration-tests/deployment/ccip/jobs.go | 72 ++++ .../ccip/migrations/1_initial_deploy_test.go | 39 +- integration-tests/deployment/ccip/state.go | 8 + 4 files changed, 292 insertions(+), 233 deletions(-) create mode 100644 integration-tests/deployment/ccip/jobs.go diff --git a/integration-tests/deployment/ccip/deploy.go b/integration-tests/deployment/ccip/deploy.go index ebe59ff16d..17a005efe0 100644 --- a/integration-tests/deployment/ccip/deploy.go +++ b/integration-tests/deployment/ccip/deploy.go @@ -1,20 +1,17 @@ package ccipdeployment import ( - "context" - "fmt" "math/big" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" - nodev1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/node/v1" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/ccip_config" owner_helpers "github.com/smartcontractkit/ccip-owner-contracts/gethwrappers" "github.com/smartcontractkit/chainlink-common/pkg/logger" "github.com/smartcontractkit/chainlink/integration-tests/deployment" - "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/validate" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/arm_proxy_contract" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_offramp" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_onramp" @@ -26,7 +23,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/weth9" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/keystone/generated/capabilities_registry" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/shared/generated/burn_mint_erc677" - "github.com/smartcontractkit/chainlink/v2/core/services/relay" ) var ( @@ -44,105 +40,71 @@ var ( TokenAdminRegistry_1_5_0 = "TokenAdminRegistry 1.5.0-dev" // 1.6 CapabilitiesRegistry_1_0_0 = "CapabilitiesRegistry 1.0.0" + CCIPConfig_1_6_0 = "CCIPConfig 1.6.0-dev" EVM2EVMMultiOnRamp_1_6_0 = "EVM2EVMMultiOnRamp 1.6.0-dev" EVM2EVMMultiOffRamp_1_6_0 = "EVM2EVMMultiOffRamp 1.6.0-dev" NonceManager_1_6_0 = "NonceManager 1.6.0-dev" PriceRegistry_1_6_0 = "PriceRegistry 1.6.0-dev" - CapabilityVersion = "1.0.0" + CapabilityLabelledName = "ccip" + CapabilityVersion = "v1.0.0" ) +type Contracts interface { + *capabilities_registry.CapabilitiesRegistry | + *arm_proxy_contract.ARMProxyContract | + *ccip_config.CCIPConfig | + *nonce_manager.NonceManager | + *price_registry.PriceRegistry | + *router.Router | + *token_admin_registry.TokenAdminRegistry | + *weth9.WETH9 | + *mock_arm_contract.MockARMContract | + *owner_helpers.ManyChainMultiSig | + *owner_helpers.RBACTimelock | + *evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp | + *evm_2_evm_multi_onramp.EVM2EVMMultiOnRamp | + *burn_mint_erc677.BurnMintERC677 +} + +type ContractDeploy[C Contracts] struct { + // We just return keep all the deploy return values + // since some will be empty if there's an error. + // and we want to avoid repeating that + Address common.Address + Contract C + Tx *types.Transaction + TvStr string + Err error +} + // TODO: pull up to general deployment pkg -func deployContract( +func deployContract[C Contracts]( lggr logger.Logger, - deploy func() (common.Address, string, *types.Transaction, error), - confirm func(common.Hash) error, - save func(address common.Address, tv string) error, -) (common.Address, error) { - contractAddr, tvStr, tx, err := deploy() - if err != nil { - lggr.Errorw("Failed to deploy contract", "err", err) - return common.Address{}, err + chain deployment.Chain, + addressBook deployment.AddressBook, + deploy func(chain deployment.Chain) ContractDeploy[C], +) (*ContractDeploy[C], error) { + contractDeploy := deploy(chain) + if contractDeploy.Err != nil { + lggr.Errorw("Failed to deploy contract", "err", contractDeploy.Err) + return nil, contractDeploy.Err } - err = confirm(tx.Hash()) + err := chain.Confirm(contractDeploy.Tx.Hash()) if err != nil { lggr.Errorw("Failed to confirm deployment", "err", err) - return common.Address{}, err + return nil, err } - err = save(contractAddr, tvStr) + err = addressBook.Save(chain.Selector, contractDeploy.Address.String(), contractDeploy.TvStr) if err != nil { lggr.Errorw("Failed to save contract address", "err", err) - return common.Address{}, err - } - return contractAddr, nil -} - -type CCIPSpec struct{} - -func (s CCIPSpec) String() string { - return "" -} - -// In our case, the only address needed is the cap registry which is actually an env var. -// and will pre-exist for our deployment. So the job specs only depend on the environment operators. -func NewCCIPJobSpecs(nodeIds []string, oc deployment.OffchainClient) (map[string][]string, error) { - // Generate a set of brand new job specs for CCIP for a specific environment - // (including NOPs) and new addresses. - // We want to assign one CCIP capability job to each node. And node with - // an addr we'll list as bootstrapper. - // Find the bootstrap nodes - bootstrapMp := make(map[string]struct{}) - for _, node := range nodeIds { - // TODO: Filter should accept multiple nodes - nodeChainConfigs, err := oc.ListNodeChainConfigs(context.Background(), &nodev1.ListNodeChainConfigsRequest{Filter: &nodev1.ListNodeChainConfigsRequest_Filter{ - NodeId: node, - }}) - if err != nil { - return nil, err - } - for _, chainConfig := range nodeChainConfigs.ChainConfigs { - if chainConfig.Ocr2Config.IsBootstrap { - bootstrapMp[fmt.Sprintf("%s@%s", - // p2p_12D3... -> 12D3... - chainConfig.Ocr2Config.P2PKeyBundle.PeerId[4:], chainConfig.Ocr2Config.Multiaddr)] = struct{}{} - } - } - } - var bootstraps []string - for b := range bootstrapMp { - bootstraps = append(bootstraps, b) - } - nodesToJobSpecs := make(map[string][]string) - for _, node := range nodeIds { - // TODO: Filter should accept multiple. - nodeChainConfigs, err := oc.ListNodeChainConfigs(context.Background(), &nodev1.ListNodeChainConfigsRequest{Filter: &nodev1.ListNodeChainConfigsRequest_Filter{ - NodeId: node, - }}) - if err != nil { - return nil, err - } - spec, err := validate.NewCCIPSpecToml(validate.SpecArgs{ - P2PV2Bootstrappers: bootstraps, - CapabilityVersion: CapabilityVersion, - CapabilityLabelledName: "CCIP", - OCRKeyBundleIDs: map[string]string{ - // TODO: Validate that that all EVM chains are using the same keybundle. - relay.NetworkEVM: nodeChainConfigs.ChainConfigs[0].Ocr2Config.OcrKeyBundle.BundleId, - }, - // TODO: validate that all EVM chains are using the same keybundle - P2PKeyID: nodeChainConfigs.ChainConfigs[0].Ocr2Config.P2PKeyBundle.PeerId, - RelayConfigs: nil, - PluginConfig: map[string]any{}, - }) - if err != nil { - return nil, err - } - nodesToJobSpecs[node] = append(nodesToJobSpecs[node], spec) + return nil, err } - return nodesToJobSpecs, nil + return &contractDeploy, nil } type DeployCCIPContractConfig struct { + HomeChainSel uint64 // Existing contracts which we want to skip deployment // Leave empty if we want to deploy everything // TODO: Add skips to deploy function. @@ -152,22 +114,63 @@ type DeployCCIPContractConfig struct { func DeployCapReg(lggr logger.Logger, chains map[uint64]deployment.Chain, chainSel uint64) (deployment.AddressBook, error) { ab := deployment.NewMemoryAddressBook() chain := chains[chainSel] - saveToChain := func(addr common.Address, tv string) error { - return ab.Save(chain.Selector, addr.String(), tv) - } - capRegAddr, err := deployContract(lggr, - func() (common.Address, string, *types.Transaction, error) { - cr, tx, _, err2 := capabilities_registry.DeployCapabilitiesRegistry( + capReg, err := deployContract(lggr, chain, ab, + func(chain deployment.Chain) ContractDeploy[*capabilities_registry.CapabilitiesRegistry] { + crAddr, tx, cr, err2 := capabilities_registry.DeployCapabilitiesRegistry( chain.DeployerKey, chain.Client, ) - return cr, CapabilitiesRegistry_1_0_0, tx, err2 - }, chain.Confirm, saveToChain) + return ContractDeploy[*capabilities_registry.CapabilitiesRegistry]{ + Address: crAddr, Contract: cr, TvStr: CapabilitiesRegistry_1_0_0, Tx: tx, Err: err2, + } + }) if err != nil { lggr.Errorw("Failed to deploy capreg", "err", err) return ab, err } - lggr.Infow("deployed capreg", "addr", capRegAddr) + lggr.Infow("deployed capreg", "addr", capReg.Address) + ccipConfig, err := deployContract( + lggr, chain, ab, + func(chain deployment.Chain) ContractDeploy[*ccip_config.CCIPConfig] { + ccAddr, tx, cc, err2 := ccip_config.DeployCCIPConfig( + chain.DeployerKey, + chain.Client, + capReg.Address, + ) + return ContractDeploy[*ccip_config.CCIPConfig]{ + Address: ccAddr, TvStr: CCIPConfig_1_6_0, Tx: tx, Err: err2, Contract: cc, + } + }) + if err != nil { + lggr.Errorw("Failed to deploy ccip config", "err", err) + return ab, err + } + lggr.Infow("deployed ccip config", "addr", ccipConfig.Address) + + _, err = capReg.Contract.AddCapabilities(chain.DeployerKey, []capabilities_registry.CapabilitiesRegistryCapability{ + { + LabelledName: CapabilityLabelledName, + Version: CapabilityVersion, + CapabilityType: 2, // consensus. not used (?) + ResponseType: 0, // report. not used (?) + ConfigurationContract: ccipConfig.Address, + }, + }) + if err != nil { + lggr.Errorw("Failed to add capabilities", "err", err) + return ab, err + } + // TODO: Just one for testing. + _, err = capReg.Contract.AddNodeOperators(chain.DeployerKey, []capabilities_registry.CapabilitiesRegistryNodeOperator{ + { + Admin: chain.DeployerKey.From, + Name: "NodeOperator", + }, + }) + if err != nil { + lggr.Errorw("Failed to add node operators", "err", err) + return ab, err + } return ab, nil } @@ -177,92 +180,101 @@ func DeployCapReg(lggr logger.Logger, chains map[uint64]deployment.Chain, chainS // Deployment produces an address book of everything it deployed. func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) (deployment.AddressBook, error) { ab := deployment.NewMemoryAddressBook() - for sel, chain := range e.Chains { - saveToChain := func(addr common.Address, tv string) error { - return ab.Save(chain.Selector, addr.String(), tv) + if c.HomeChainSel == sel { } // TODO: Still waiting for RMNRemote/RMNHome contracts etc. - mockARM, err := deployContract(e.Logger, - func() (common.Address, string, *types.Transaction, error) { - mockARM, tx, _, err2 := mock_arm_contract.DeployMockARMContract( + mockARM, err := deployContract(e.Logger, chain, ab, + func(chain deployment.Chain) ContractDeploy[*mock_arm_contract.MockARMContract] { + mockARMAddr, tx, mockARM, err2 := mock_arm_contract.DeployMockARMContract( chain.DeployerKey, chain.Client, ) - return mockARM, MockARM_1_0_0, tx, err2 - }, chain.Confirm, saveToChain) + return ContractDeploy[*mock_arm_contract.MockARMContract]{ + mockARMAddr, mockARM, tx, MockARM_1_0_0, err2, + } + }) if err != nil { e.Logger.Errorw("Failed to deploy mockARM", "err", err) return ab, err } e.Logger.Infow("deployed mockARM", "addr", mockARM) - mcmAddr, err := deployContract(e.Logger, - func() (common.Address, string, *types.Transaction, error) { - mcm, tx, _, err2 := owner_helpers.DeployManyChainMultiSig( + mcm, err := deployContract(e.Logger, chain, ab, + func(chain deployment.Chain) ContractDeploy[*owner_helpers.ManyChainMultiSig] { + mcmAddr, tx, mcm, err2 := owner_helpers.DeployManyChainMultiSig( chain.DeployerKey, chain.Client, ) - return mcm, MCMS_1_0_0, tx, err2 - }, chain.Confirm, saveToChain) + return ContractDeploy[*owner_helpers.ManyChainMultiSig]{ + mcmAddr, mcm, tx, MCMS_1_0_0, err2, + } + }) if err != nil { e.Logger.Errorw("Failed to deploy mcm", "err", err) return ab, err } - e.Logger.Infow("deployed mcm", "addr", mcmAddr) + // TODO: Address soon + e.Logger.Infow("deployed mcm", "addr", mcm.Address) - _, err = deployContract(e.Logger, - func() (common.Address, string, *types.Transaction, error) { - timelock, tx, _, err2 := owner_helpers.DeployRBACTimelock( + _, err = deployContract(e.Logger, chain, ab, + func(chain deployment.Chain) ContractDeploy[*owner_helpers.RBACTimelock] { + timelock, tx, cc, err2 := owner_helpers.DeployRBACTimelock( chain.DeployerKey, chain.Client, big.NewInt(0), // minDelay - mcmAddr, - []common.Address{mcmAddr}, // proposers + mcm.Address, + []common.Address{mcm.Address}, // proposers []common.Address{chain.DeployerKey.From}, //executors - []common.Address{mcmAddr}, // cancellers - []common.Address{mcmAddr}, // bypassers + []common.Address{mcm.Address}, // cancellers + []common.Address{mcm.Address}, // bypassers ) - return timelock, RBAC_Timelock_1_0_0, tx, err2 - }, chain.Confirm, saveToChain) + return ContractDeploy[*owner_helpers.RBACTimelock]{ + timelock, cc, tx, RBAC_Timelock_1_0_0, err2, + } + }) if err != nil { e.Logger.Errorw("Failed to deploy timelock", "err", err) return ab, err } - e.Logger.Infow("deployed timelock", "addr", mcmAddr) + e.Logger.Infow("deployed timelock", "addr", mcm.Address) - armProxy, err := deployContract(e.Logger, - func() (common.Address, string, *types.Transaction, error) { - armProxy, tx, _, err2 := arm_proxy_contract.DeployARMProxyContract( + armProxy, err := deployContract(e.Logger, chain, ab, + func(chain deployment.Chain) ContractDeploy[*arm_proxy_contract.ARMProxyContract] { + armProxyAddr, tx, armProxy, err2 := arm_proxy_contract.DeployARMProxyContract( chain.DeployerKey, chain.Client, - mockARM, + mockARM.Address, ) - return armProxy, ARMProxy_1_1_0, tx, err2 - }, chain.Confirm, saveToChain) + return ContractDeploy[*arm_proxy_contract.ARMProxyContract]{ + armProxyAddr, armProxy, tx, ARMProxy_1_1_0, err2, + } + }) if err != nil { e.Logger.Errorw("Failed to deploy armProxy", "err", err) return ab, err } - e.Logger.Infow("deployed armProxy", "addr", armProxy) + e.Logger.Infow("deployed armProxy", "addr", armProxy.Address) - weth9, err := deployContract(e.Logger, - func() (common.Address, string, *types.Transaction, error) { - weth9, tx, _, err2 := weth9.DeployWETH9( + weth9, err := deployContract(e.Logger, chain, ab, + func(chain deployment.Chain) ContractDeploy[*weth9.WETH9] { + weth9Addr, tx, weth9c, err2 := weth9.DeployWETH9( chain.DeployerKey, chain.Client, ) - return weth9, WETH9_1_0_0, tx, err2 - }, chain.Confirm, saveToChain) + return ContractDeploy[*weth9.WETH9]{ + weth9Addr, weth9c, tx, WETH9_1_0_0, err2, + } + }) if err != nil { e.Logger.Errorw("Failed to deploy weth9", "err", err) return ab, err } - linkTokenAddr, err := deployContract(e.Logger, - func() (common.Address, string, *types.Transaction, error) { - linkToken, tx, _, err2 := burn_mint_erc677.DeployBurnMintERC677( + linkToken, err := deployContract(e.Logger, chain, ab, + func(chain deployment.Chain) ContractDeploy[*burn_mint_erc677.BurnMintERC677] { + linkTokenAddr, tx, linkToken, err2 := burn_mint_erc677.DeployBurnMintERC677( chain.DeployerKey, chain.Client, "Link Token", @@ -270,157 +282,161 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( uint8(18), big.NewInt(0).Mul(big.NewInt(1e9), big.NewInt(1e18)), ) - return linkToken, LinkToken_1_0_0, tx, err2 - }, chain.Confirm, saveToChain) + return ContractDeploy[*burn_mint_erc677.BurnMintERC677]{ + linkTokenAddr, linkToken, tx, LinkToken_1_0_0, err2, + } + }) if err != nil { e.Logger.Errorw("Failed to deploy linkToken", "err", err) return ab, err } - routerAddr, err := deployContract(e.Logger, - func() (common.Address, string, *types.Transaction, error) { - router, tx, _, err2 := router.DeployRouter( + routerContract, err := deployContract(e.Logger, chain, ab, + func(chain deployment.Chain) ContractDeploy[*router.Router] { + routerAddr, tx, routerC, err2 := router.DeployRouter( chain.DeployerKey, chain.Client, - weth9, - armProxy, + weth9.Address, + armProxy.Address, ) - return router, Router_1_2_0, tx, err2 - }, chain.Confirm, saveToChain) + return ContractDeploy[*router.Router]{ + routerAddr, routerC, tx, Router_1_2_0, err2, + } + }) if err != nil { e.Logger.Errorw("Failed to deploy router", "err", err) return ab, err } - e.Logger.Infow("deployed router", "addr", routerAddr) + e.Logger.Infow("deployed router", "addr", routerContract) - tokenAdminRegistry, err := deployContract(e.Logger, - func() (common.Address, string, *types.Transaction, error) { - tokenAdminRegistry, tx, _, err2 := token_admin_registry.DeployTokenAdminRegistry( + tokenAdminRegistry, err := deployContract(e.Logger, chain, ab, + func(chain deployment.Chain) ContractDeploy[*token_admin_registry.TokenAdminRegistry] { + tokenAdminRegistryAddr, tx, tokenAdminRegistry, err2 := token_admin_registry.DeployTokenAdminRegistry( chain.DeployerKey, chain.Client) - return tokenAdminRegistry, TokenAdminRegistry_1_5_0, tx, err2 - }, chain.Confirm, saveToChain) + return ContractDeploy[*token_admin_registry.TokenAdminRegistry]{ + tokenAdminRegistryAddr, tokenAdminRegistry, tx, TokenAdminRegistry_1_5_0, err2, + } + }) if err != nil { e.Logger.Errorw("Failed to deploy token admin registry", "err", err) return ab, err } e.Logger.Infow("deployed tokenAdminRegistry", "addr", tokenAdminRegistry) - nonceManagerAddr, err := deployContract(e.Logger, - func() (common.Address, string, *types.Transaction, error) { - nonceManager, tx, _, err2 := nonce_manager.DeployNonceManager( + nonceManager, err := deployContract(e.Logger, chain, ab, + func(chain deployment.Chain) ContractDeploy[*nonce_manager.NonceManager] { + nonceManagerAddr, tx, nonceManager, err2 := nonce_manager.DeployNonceManager( chain.DeployerKey, chain.Client, []common.Address{}, // Need to add onRamp after ) - return nonceManager, NonceManager_1_6_0, tx, err2 - }, chain.Confirm, saveToChain) + return ContractDeploy[*nonce_manager.NonceManager]{ + nonceManagerAddr, nonceManager, tx, NonceManager_1_6_0, err2, + } + }) if err != nil { e.Logger.Errorw("Failed to deploy router", "err", err) return ab, err } - priceRegistryAddr, err := deployContract(e.Logger, - func() (common.Address, string, *types.Transaction, error) { - pr, tx, _, err2 := price_registry.DeployPriceRegistry( + priceRegistry, err := deployContract(e.Logger, chain, ab, + func(chain deployment.Chain) ContractDeploy[*price_registry.PriceRegistry] { + prAddr, tx, pr, err2 := price_registry.DeployPriceRegistry( chain.DeployerKey, chain.Client, price_registry.PriceRegistryStaticConfig{ MaxFeeJuelsPerMsg: big.NewInt(0).Mul(big.NewInt(2e2), big.NewInt(1e18)), - LinkToken: linkTokenAddr, + LinkToken: linkToken.Address, StalenessThreshold: uint32(86400), }, - []common.Address{}, // ramps added after - []common.Address{weth9}, // fee tokens + []common.Address{}, // ramps added after + []common.Address{weth9.Address}, // fee tokens []price_registry.PriceRegistryTokenPriceFeedUpdate{}, []price_registry.PriceRegistryTokenTransferFeeConfigArgs{}, // TODO: tokens []price_registry.PriceRegistryPremiumMultiplierWeiPerEthArgs{ { - Token: weth9, + Token: weth9.Address, PremiumMultiplierWeiPerEth: 1e6, }, }, []price_registry.PriceRegistryDestChainConfigArgs{}, ) - return pr, PriceRegistry_1_6_0, tx, err2 - }, chain.Confirm, saveToChain) + return ContractDeploy[*price_registry.PriceRegistry]{ + prAddr, pr, tx, PriceRegistry_1_6_0, err2, + } + }) if err != nil { e.Logger.Errorw("Failed to deploy price registry", "err", err) return ab, err } - onRampAddr, err := deployContract(e.Logger, - func() (common.Address, string, *types.Transaction, error) { - onRamp, tx, _, err2 := evm_2_evm_multi_onramp.DeployEVM2EVMMultiOnRamp( + onRamp, err := deployContract(e.Logger, chain, ab, + func(chain deployment.Chain) ContractDeploy[*evm_2_evm_multi_onramp.EVM2EVMMultiOnRamp] { + onRampAddr, tx, onRamp, err2 := evm_2_evm_multi_onramp.DeployEVM2EVMMultiOnRamp( chain.DeployerKey, chain.Client, evm_2_evm_multi_onramp.EVM2EVMMultiOnRampStaticConfig{ ChainSelector: sel, - RmnProxy: routerAddr, - NonceManager: nonceManagerAddr, - TokenAdminRegistry: tokenAdminRegistry, + RmnProxy: routerContract.Address, + NonceManager: nonceManager.Address, + TokenAdminRegistry: tokenAdminRegistry.Address, }, evm_2_evm_multi_onramp.EVM2EVMMultiOnRampDynamicConfig{ - PriceRegistry: priceRegistryAddr, + PriceRegistry: priceRegistry.Address, FeeAggregator: common.HexToAddress("0x1"), // TODO real fee aggregator }, []evm_2_evm_multi_onramp.EVM2EVMMultiOnRampDestChainConfigArgs{}, ) - return onRamp, EVM2EVMMultiOnRamp_1_6_0, tx, err2 - }, chain.Confirm, saveToChain) + return ContractDeploy[*evm_2_evm_multi_onramp.EVM2EVMMultiOnRamp]{ + onRampAddr, onRamp, tx, EVM2EVMMultiOnRamp_1_6_0, err2, + } + }) if err != nil { e.Logger.Errorw("Failed to deploy onramp", "err", err) return ab, err } - e.Logger.Infow("deployed onramp", "addr", tokenAdminRegistry) + e.Logger.Infow("deployed onramp", "addr", onRamp.Address) - offRampAddr, err := deployContract(e.Logger, - func() (common.Address, string, *types.Transaction, error) { + offRamp, err := deployContract(e.Logger, chain, ab, + func(chain deployment.Chain) ContractDeploy[*evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp] { offRamp, tx, _, err2 := evm_2_evm_multi_offramp.DeployEVM2EVMMultiOffRamp( chain.DeployerKey, chain.Client, evm_2_evm_multi_offramp.EVM2EVMMultiOffRampStaticConfig{ ChainSelector: sel, - RmnProxy: routerAddr, - NonceManager: nonceManagerAddr, - TokenAdminRegistry: tokenAdminRegistry, + RmnProxy: routerContract.Address, + NonceManager: nonceManager.Address, + TokenAdminRegistry: tokenAdminRegistry.Address, }, evm_2_evm_multi_offramp.EVM2EVMMultiOffRampDynamicConfig{ - PriceRegistry: priceRegistryAddr, + PriceRegistry: priceRegistry.Address, PermissionLessExecutionThresholdSeconds: uint32(86400), MaxTokenTransferGas: uint32(200_000), MaxPoolReleaseOrMintGas: uint32(200_000), }, []evm_2_evm_multi_offramp.EVM2EVMMultiOffRampSourceChainConfigArgs{}, ) - return offRamp, EVM2EVMMultiOffRamp_1_6_0, tx, err2 - }, chain.Confirm, saveToChain) + return ContractDeploy[*evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp]{ + offRamp, nil, tx, EVM2EVMMultiOffRamp_1_6_0, err2, + } + }) if err != nil { e.Logger.Errorw("Failed to deploy offramp", "err", err) return ab, err } - e.Logger.Infow("deployed offramp", "addr", offRampAddr) + e.Logger.Infow("deployed offramp", "addr", offRamp) // Enable ramps on price registry/nonce manager - pr, err := price_registry.NewPriceRegistry(priceRegistryAddr, chain.Client) - if err != nil { - e.Logger.Errorw("Failed to create price registry", "err", err) - return ab, err - } - tx, err := pr.ApplyAuthorizedCallerUpdates(chain.DeployerKey, price_registry.AuthorizedCallersAuthorizedCallerArgs{ - AddedCallers: []common.Address{offRampAddr}, + tx, err := priceRegistry.Contract.ApplyAuthorizedCallerUpdates(chain.DeployerKey, price_registry.AuthorizedCallersAuthorizedCallerArgs{ + AddedCallers: []common.Address{offRamp.Address}, }) if err := chain.Confirm(tx.Hash()); err != nil { e.Logger.Errorw("Failed to confirm price registry authorized caller update", "err", err) return ab, err } - nm, err := nonce_manager.NewNonceManager(nonceManagerAddr, chain.Client) - if err != nil { - e.Logger.Errorw("Failed to create nonce manager", "err", err) - return ab, err - } - tx, err = nm.ApplyAuthorizedCallerUpdates(chain.DeployerKey, nonce_manager.AuthorizedCallersAuthorizedCallerArgs{ - AddedCallers: []common.Address{offRampAddr, onRampAddr}, + tx, err = nonceManager.Contract.ApplyAuthorizedCallerUpdates(chain.DeployerKey, nonce_manager.AuthorizedCallersAuthorizedCallerArgs{ + AddedCallers: []common.Address{offRamp.Address, onRamp.Address}, }) if err != nil { e.Logger.Errorw("Failed to update nonce manager with ramps", "err", err) diff --git a/integration-tests/deployment/ccip/jobs.go b/integration-tests/deployment/ccip/jobs.go new file mode 100644 index 0000000000..0ba8649cf8 --- /dev/null +++ b/integration-tests/deployment/ccip/jobs.go @@ -0,0 +1,72 @@ +package ccipdeployment + +import ( + "context" + "fmt" + + nodev1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/node/v1" + + "github.com/smartcontractkit/chainlink/integration-tests/deployment" + + "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/validate" + "github.com/smartcontractkit/chainlink/v2/core/services/relay" +) + +// In our case, the only address needed is the cap registry which is actually an env var. +// and will pre-exist for our deployment. So the job specs only depend on the environment operators. +func NewCCIPJobSpecs(nodeIds []string, oc deployment.OffchainClient) (map[string][]string, error) { + // Generate a set of brand new job specs for CCIP for a specific environment + // (including NOPs) and new addresses. + // We want to assign one CCIP capability job to each node. And node with + // an addr we'll list as bootstrapper. + // Find the bootstrap nodes + bootstrapMp := make(map[string]struct{}) + for _, node := range nodeIds { + // TODO: Filter should accept multiple nodes + nodeChainConfigs, err := oc.ListNodeChainConfigs(context.Background(), &nodev1.ListNodeChainConfigsRequest{Filter: &nodev1.ListNodeChainConfigsRequest_Filter{ + NodeId: node, + }}) + if err != nil { + return nil, err + } + for _, chainConfig := range nodeChainConfigs.ChainConfigs { + if chainConfig.Ocr2Config.IsBootstrap { + bootstrapMp[fmt.Sprintf("%s@%s", + // p2p_12D3... -> 12D3... + chainConfig.Ocr2Config.P2PKeyBundle.PeerId[4:], chainConfig.Ocr2Config.Multiaddr)] = struct{}{} + } + } + } + var bootstraps []string + for b := range bootstrapMp { + bootstraps = append(bootstraps, b) + } + nodesToJobSpecs := make(map[string][]string) + for _, node := range nodeIds { + // TODO: Filter should accept multiple. + nodeChainConfigs, err := oc.ListNodeChainConfigs(context.Background(), &nodev1.ListNodeChainConfigsRequest{Filter: &nodev1.ListNodeChainConfigsRequest_Filter{ + NodeId: node, + }}) + if err != nil { + return nil, err + } + spec, err := validate.NewCCIPSpecToml(validate.SpecArgs{ + P2PV2Bootstrappers: bootstraps, + CapabilityVersion: CapabilityVersion, + CapabilityLabelledName: "CCIP", + OCRKeyBundleIDs: map[string]string{ + // TODO: Validate that that all EVM chains are using the same keybundle. + relay.NetworkEVM: nodeChainConfigs.ChainConfigs[0].Ocr2Config.OcrKeyBundle.BundleId, + }, + // TODO: validate that all EVM chains are using the same keybundle + P2PKeyID: nodeChainConfigs.ChainConfigs[0].Ocr2Config.P2PKeyBundle.PeerId, + RelayConfigs: nil, + PluginConfig: map[string]any{}, + }) + if err != nil { + return nil, err + } + nodesToJobSpecs[node] = append(nodesToJobSpecs[node], spec) + } + return nodesToJobSpecs, nil +} diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index b500bb502c..19c9a88bb0 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -36,7 +36,7 @@ func Test0001_InitialDeploy(t *testing.T) { addrs, err := ab.AddressesForChain(homeChainSel) require.NoError(t, err) - require.Len(t, addrs, 1) + require.Len(t, addrs, 2) capReg := common.Address{} for addr := range addrs { capReg = common.HexToAddress(addr) @@ -56,43 +56,6 @@ func Test0001_InitialDeploy(t *testing.T) { output, err := Apply0001(e, ccipdeployment.DeployCCIPContractConfig{}) require.NoError(t, err) - // Before we can add the jobs, we need to add the config to the cap registry - /* - ccipCapabilityID, err := homeChainUni.capabilityRegistry.GetHashedCapabilityId( - callCtx, CapabilityLabelledName, CapabilityVersion) - require.NoError(t, err, "failed to get hashed capability id for ccip") - require.NotEqual(t, [32]byte{}, ccipCapabilityID, "ccip capability id is empty") - - // Need to Add nodes and assign capabilities to them before creating DONS - homeChainUni.AddNodes(t, p2pIDs, [][32]byte{ccipCapabilityID}) - - for _, uni := range universes { - t.Logf("Adding chainconfig for chain %d", uni.chainID) - AddChainConfig(t, homeChainUni, getSelector(uni.chainID), p2pIDs, fChain) - } - - cfgs, err := homeChainUni.ccipConfig.GetAllChainConfigs(callCtx) - require.NoError(t, err) - require.Len(t, cfgs, numChains) - - // Create a DON for each chain - for _, uni := range universes { - // Add nodes and give them the capability - t.Log("Adding DON for universe: ", uni.chainID) - chainSelector := getSelector(uni.chainID) - homeChainUni.AddDON( - t, - ccipCapabilityID, - chainSelector, - uni, - fChain, - bootstrapP2PID, - p2pIDs, - oracles[uni.chainID], - ) - } - */ - // Apply the jobs. for nodeID, jobs := range output.JobSpecs { for _, job := range jobs { diff --git a/integration-tests/deployment/ccip/state.go b/integration-tests/deployment/ccip/state.go index 32d9013976..5899df171a 100644 --- a/integration-tests/deployment/ccip/state.go +++ b/integration-tests/deployment/ccip/state.go @@ -8,6 +8,7 @@ import ( chainsel "github.com/smartcontractkit/chain-selectors" "github.com/smartcontractkit/chainlink/integration-tests/deployment" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/ccip_config" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/keystone/generated/capabilities_registry" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/shared/generated/burn_mint_erc677" @@ -44,6 +45,7 @@ type CCIPOnChainState struct { LinkTokens map[uint64]*burn_mint_erc677.BurnMintERC677 // Note we only expect one of these (on the home chain) CapabilityRegistry map[uint64]*capabilities_registry.CapabilitiesRegistry + CCIPConfig map[uint64]*ccip_config.CCIPConfig Mcms map[uint64]*owner_wrappers.ManyChainMultiSig // TODO: remove once we have Address() on wrappers McmsAddrs map[uint64]common.Address @@ -242,6 +244,12 @@ func GenerateOnchainState(e deployment.Environment, ab deployment.AddressBook) ( return state, err } state.LinkTokens[chainSelector] = lt + case CCIPConfig_1_6_0: + cc, err := ccip_config.NewCCIPConfig(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.CCIPConfig[chainSelector] = cc default: return state, fmt.Errorf("unknown contract %s", tvStr) } From c9f4ccefa55bc4c839d325fc1af8f1daaff7d704 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Tue, 13 Aug 2024 10:24:40 -0400 Subject: [PATCH 19/42] CCIP cap jobs running --- integration-tests/deployment/ccip/deploy.go | 66 --- .../deployment/ccip/deploy_home_chain.go | 402 ++++++++++++++++++ integration-tests/deployment/ccip/jobs.go | 2 +- integration-tests/deployment/memory/node.go | 1 - 4 files changed, 403 insertions(+), 68 deletions(-) create mode 100644 integration-tests/deployment/ccip/deploy_home_chain.go diff --git a/integration-tests/deployment/ccip/deploy.go b/integration-tests/deployment/ccip/deploy.go index 17a005efe0..8f058dbe2c 100644 --- a/integration-tests/deployment/ccip/deploy.go +++ b/integration-tests/deployment/ccip/deploy.go @@ -45,9 +45,6 @@ var ( EVM2EVMMultiOffRamp_1_6_0 = "EVM2EVMMultiOffRamp 1.6.0-dev" NonceManager_1_6_0 = "NonceManager 1.6.0-dev" PriceRegistry_1_6_0 = "PriceRegistry 1.6.0-dev" - - CapabilityLabelledName = "ccip" - CapabilityVersion = "v1.0.0" ) type Contracts interface { @@ -111,69 +108,6 @@ type DeployCCIPContractConfig struct { CCIPOnChainState } -func DeployCapReg(lggr logger.Logger, chains map[uint64]deployment.Chain, chainSel uint64) (deployment.AddressBook, error) { - ab := deployment.NewMemoryAddressBook() - chain := chains[chainSel] - capReg, err := deployContract(lggr, chain, ab, - func(chain deployment.Chain) ContractDeploy[*capabilities_registry.CapabilitiesRegistry] { - crAddr, tx, cr, err2 := capabilities_registry.DeployCapabilitiesRegistry( - chain.DeployerKey, - chain.Client, - ) - return ContractDeploy[*capabilities_registry.CapabilitiesRegistry]{ - Address: crAddr, Contract: cr, TvStr: CapabilitiesRegistry_1_0_0, Tx: tx, Err: err2, - } - }) - if err != nil { - lggr.Errorw("Failed to deploy capreg", "err", err) - return ab, err - } - lggr.Infow("deployed capreg", "addr", capReg.Address) - ccipConfig, err := deployContract( - lggr, chain, ab, - func(chain deployment.Chain) ContractDeploy[*ccip_config.CCIPConfig] { - ccAddr, tx, cc, err2 := ccip_config.DeployCCIPConfig( - chain.DeployerKey, - chain.Client, - capReg.Address, - ) - return ContractDeploy[*ccip_config.CCIPConfig]{ - Address: ccAddr, TvStr: CCIPConfig_1_6_0, Tx: tx, Err: err2, Contract: cc, - } - }) - if err != nil { - lggr.Errorw("Failed to deploy ccip config", "err", err) - return ab, err - } - lggr.Infow("deployed ccip config", "addr", ccipConfig.Address) - - _, err = capReg.Contract.AddCapabilities(chain.DeployerKey, []capabilities_registry.CapabilitiesRegistryCapability{ - { - LabelledName: CapabilityLabelledName, - Version: CapabilityVersion, - CapabilityType: 2, // consensus. not used (?) - ResponseType: 0, // report. not used (?) - ConfigurationContract: ccipConfig.Address, - }, - }) - if err != nil { - lggr.Errorw("Failed to add capabilities", "err", err) - return ab, err - } - // TODO: Just one for testing. - _, err = capReg.Contract.AddNodeOperators(chain.DeployerKey, []capabilities_registry.CapabilitiesRegistryNodeOperator{ - { - Admin: chain.DeployerKey.From, - Name: "NodeOperator", - }, - }) - if err != nil { - lggr.Errorw("Failed to add node operators", "err", err) - return ab, err - } - return ab, nil -} - // TODO: Likely we'll want to further parameterize the deployment // For example a list of contracts to skip deploying if they already exist. // Or mock vs real RMN. diff --git a/integration-tests/deployment/ccip/deploy_home_chain.go b/integration-tests/deployment/ccip/deploy_home_chain.go new file mode 100644 index 0000000000..484191223a --- /dev/null +++ b/integration-tests/deployment/ccip/deploy_home_chain.go @@ -0,0 +1,402 @@ +package ccipdeployment + +import ( + "bytes" + "context" + "errors" + "sort" + "time" + + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + confighelper2 "github.com/smartcontractkit/libocr/offchainreporting2plus/confighelper" + "github.com/smartcontractkit/libocr/offchainreporting2plus/ocr3confighelper" + + "github.com/smartcontractkit/chainlink/integration-tests/deployment" + + "github.com/smartcontractkit/chainlink-ccip/chainconfig" + "github.com/smartcontractkit/chainlink-ccip/pluginconfig" + commonconfig "github.com/smartcontractkit/chainlink-common/pkg/config" + "github.com/smartcontractkit/chainlink-common/pkg/types/ccipocr3" + "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ccip_integration_tests/integrationhelpers" + cctypes "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/types" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/ccip_config" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_offramp" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/ocr3_config_encoder" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/keystone/generated/capabilities_registry" + "github.com/smartcontractkit/chainlink/v2/core/logger" +) + +const ( + NodeOperatorID = 1 + CapabilityLabelledName = "ccip" + CapabilityVersion = "v1.0.0" + + FirstBlockAge = 8 * time.Hour + RemoteGasPriceBatchWriteFrequency = 30 * time.Minute + BatchGasLimit = 6_500_000 + RelativeBoostPerWaitHour = 1.5 + InflightCacheExpiry = 10 * time.Minute + RootSnoozeTime = 30 * time.Minute + BatchingStrategyID = 0 + DeltaProgress = 30 * time.Second + DeltaResend = 10 * time.Second + DeltaInitial = 20 * time.Second + DeltaRound = 2 * time.Second + DeltaGrace = 2 * time.Second + DeltaCertifiedCommitRequest = 10 * time.Second + DeltaStage = 10 * time.Second + Rmax = 3 + MaxDurationQuery = 50 * time.Millisecond + MaxDurationObservation = 5 * time.Second + MaxDurationShouldAcceptAttestedReport = 10 * time.Second + MaxDurationShouldTransmitAcceptedReport = 10 * time.Second +) + +func DeployCapReg(lggr logger.Logger, chains map[uint64]deployment.Chain, chainSel uint64) (deployment.AddressBook, error) { + ab := deployment.NewMemoryAddressBook() + chain := chains[chainSel] + capReg, err := deployContract(lggr, chain, ab, + func(chain deployment.Chain) ContractDeploy[*capabilities_registry.CapabilitiesRegistry] { + crAddr, tx, cr, err2 := capabilities_registry.DeployCapabilitiesRegistry( + chain.DeployerKey, + chain.Client, + ) + return ContractDeploy[*capabilities_registry.CapabilitiesRegistry]{ + Address: crAddr, Contract: cr, TvStr: CapabilitiesRegistry_1_0_0, Tx: tx, Err: err2, + } + }) + if err != nil { + lggr.Errorw("Failed to deploy capreg", "err", err) + return ab, err + } + lggr.Infow("deployed capreg", "addr", capReg.Address) + ccipConfig, err := deployContract( + lggr, chain, ab, + func(chain deployment.Chain) ContractDeploy[*ccip_config.CCIPConfig] { + ccAddr, tx, cc, err2 := ccip_config.DeployCCIPConfig( + chain.DeployerKey, + chain.Client, + capReg.Address, + ) + return ContractDeploy[*ccip_config.CCIPConfig]{ + Address: ccAddr, TvStr: CCIPConfig_1_6_0, Tx: tx, Err: err2, Contract: cc, + } + }) + if err != nil { + lggr.Errorw("Failed to deploy ccip config", "err", err) + return ab, err + } + lggr.Infow("deployed ccip config", "addr", ccipConfig.Address) + + tx, err := capReg.Contract.AddCapabilities(chain.DeployerKey, []capabilities_registry.CapabilitiesRegistryCapability{ + { + LabelledName: CapabilityLabelledName, + Version: CapabilityVersion, + CapabilityType: 2, // consensus. not used (?) + ResponseType: 0, // report. not used (?) + ConfigurationContract: ccipConfig.Address, + }, + }) + if err != nil { + lggr.Errorw("Failed to add capabilities", "err", err) + return ab, err + } + if err := chain.Confirm(tx.Hash()); err != nil { + return ab, err + } + // TODO: Just one for testing. + tx, err = capReg.Contract.AddNodeOperators(chain.DeployerKey, []capabilities_registry.CapabilitiesRegistryNodeOperator{ + { + Admin: chain.DeployerKey.From, + Name: "NodeOperator", + }, + }) + if err != nil { + lggr.Errorw("Failed to add node operators", "err", err) + return ab, err + } + if err := chain.Confirm(tx.Hash()); err != nil { + return ab, err + } + return ab, nil +} + +func sortP2PIDS(p2pIDs [][32]byte) { + sort.Slice(p2pIDs, func(i, j int) bool { + return bytes.Compare(p2pIDs[i][:], p2pIDs[j][:]) < 0 + }) +} + +func AddNodes( + capReg *capabilities_registry.CapabilitiesRegistry, + chain deployment.Chain, + p2pIDs [][32]byte, + capabilityIDs [][32]byte, +) error { + // Need to sort, otherwise _checkIsValidUniqueSubset onChain will fail + sortP2PIDS(p2pIDs) + var nodeParams []capabilities_registry.CapabilitiesRegistryNodeParams + for _, p2pID := range p2pIDs { + nodeParam := capabilities_registry.CapabilitiesRegistryNodeParams{ + NodeOperatorId: NodeOperatorID, + Signer: p2pID, // Not used in tests + P2pId: p2pID, + HashedCapabilityIds: capabilityIDs, + } + nodeParams = append(nodeParams, nodeParam) + } + tx, err := capReg.AddNodes(chain.DeployerKey, nodeParams) + if err != nil { + return err + } + if err := chain.Confirm(tx.Hash()); err != nil { + return err + } + return nil +} + +func AddChainConfig( + lggr logger.Logger, + h deployment.Chain, + ccipConfig *ccip_config.CCIPConfig, + chainSelector uint64, + p2pIDs [][32]byte, + f uint8, +) (ccip_config.CCIPConfigTypesChainConfigInfo, error) { + // Need to sort, otherwise _checkIsValidUniqueSubset onChain will fail + sortP2PIDS(p2pIDs) + // First Add ChainConfig that includes all p2pIDs as readers + encodedExtraChainConfig, err := chainconfig.EncodeChainConfig(chainconfig.ChainConfig{ + GasPriceDeviationPPB: ccipocr3.NewBigIntFromInt64(1000), + DAGasPriceDeviationPPB: ccipocr3.NewBigIntFromInt64(0), + FinalityDepth: 10, + OptimisticConfirmations: 1, + }) + if err != nil { + return ccip_config.CCIPConfigTypesChainConfigInfo{}, err + } + chainConfig := integrationhelpers.SetupConfigInfo(chainSelector, p2pIDs, f, encodedExtraChainConfig) + inputConfig := []ccip_config.CCIPConfigTypesChainConfigInfo{ + chainConfig, + } + tx, err := ccipConfig.ApplyChainConfigUpdates(h.DeployerKey, nil, inputConfig) + if err != nil { + return ccip_config.CCIPConfigTypesChainConfigInfo{}, err + } + if err := h.Confirm(tx.Hash()); err != nil { + return ccip_config.CCIPConfigTypesChainConfigInfo{}, err + } + return chainConfig, nil +} + +func AddDON( + lggr logger.Logger, + capReg *capabilities_registry.CapabilitiesRegistry, + ccipCapabilityID [32]byte, + chainSelector uint64, + ccipConfig *ccip_config.CCIPConfig, + dest deployment.Chain, + offRamp *evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp, + home deployment.Chain, + f uint8, + bootstrapP2PID [32]byte, + p2pIDs [][32]byte, + oracles []confighelper2.OracleIdentityExtra, +) error { + // Get OCR3 Config from helper + var schedule []int + for range oracles { + schedule = append(schedule, 1) + } + + tabi, err := ocr3_config_encoder.IOCR3ConfigEncoderMetaData.GetAbi() + if err != nil { + return err + } + + // Add DON on capability registry contract + var ocr3Configs []ocr3_config_encoder.CCIPConfigTypesOCR3Config + for _, pluginType := range []cctypes.PluginType{cctypes.PluginTypeCCIPCommit, cctypes.PluginTypeCCIPExec} { + var encodedOffchainConfig []byte + var err2 error + if pluginType == cctypes.PluginTypeCCIPCommit { + encodedOffchainConfig, err2 = pluginconfig.EncodeCommitOffchainConfig(pluginconfig.CommitOffchainConfig{ + RemoteGasPriceBatchWriteFrequency: *commonconfig.MustNewDuration(RemoteGasPriceBatchWriteFrequency), + // TODO: implement token price writes + // TokenPriceBatchWriteFrequency: *commonconfig.MustNewDuration(tokenPriceBatchWriteFrequency), + }) + if err2 != nil { + return err2 + } + } else { + encodedOffchainConfig, err2 = pluginconfig.EncodeExecuteOffchainConfig(pluginconfig.ExecuteOffchainConfig{ + BatchGasLimit: BatchGasLimit, + RelativeBoostPerWaitHour: RelativeBoostPerWaitHour, + MessageVisibilityInterval: *commonconfig.MustNewDuration(FirstBlockAge), + InflightCacheExpiry: *commonconfig.MustNewDuration(InflightCacheExpiry), + RootSnoozeTime: *commonconfig.MustNewDuration(RootSnoozeTime), + BatchingStrategyID: BatchingStrategyID, + }) + if err2 != nil { + return err2 + } + } + signers, transmitters, configF, _, offchainConfigVersion, offchainConfig, err2 := ocr3confighelper.ContractSetConfigArgsForTests( + DeltaProgress, + DeltaResend, + DeltaInitial, + DeltaRound, + DeltaGrace, + DeltaCertifiedCommitRequest, + DeltaStage, + Rmax, + schedule, + oracles, + encodedOffchainConfig, + MaxDurationQuery, + MaxDurationObservation, + MaxDurationShouldAcceptAttestedReport, + MaxDurationShouldTransmitAcceptedReport, + int(f), + []byte{}, // empty OnChainConfig + ) + if err != nil { + return err + } + + signersBytes := make([][]byte, len(signers)) + for i, signer := range signers { + signersBytes[i] = signer + } + + transmittersBytes := make([][]byte, len(transmitters)) + for i, transmitter := range transmitters { + parsed, err2 := common.ParseHexOrString(string(transmitter)) + if err != nil { + return err2 + } + transmittersBytes[i] = parsed + } + + ocr3Configs = append(ocr3Configs, ocr3_config_encoder.CCIPConfigTypesOCR3Config{ + PluginType: uint8(pluginType), + ChainSelector: chainSelector, + F: configF, + OffchainConfigVersion: offchainConfigVersion, + OfframpAddress: offRamp.Address().Bytes(), + BootstrapP2PIds: [][32]byte{bootstrapP2PID}, + P2pIds: p2pIDs, + Signers: signersBytes, + Transmitters: transmittersBytes, + OffchainConfig: offchainConfig, + }) + } + + encodedCall, err := tabi.Pack("exposeOCR3Config", ocr3Configs) + if err != nil { + return err + } + + // Trim first four bytes to remove function selector. + encodedConfigs := encodedCall[4:] + + // commit so that we have an empty block to filter events from + // TODO: required? + //h.backend.Commit() + + tx, err := capReg.AddDON(home.DeployerKey, p2pIDs, []capabilities_registry.CapabilitiesRegistryCapabilityConfiguration{ + { + CapabilityId: ccipCapabilityID, + Config: encodedConfigs, + }, + }, false, false, f) + if err := home.Confirm(tx.Hash()); err != nil { + return err + } + + latestBlock, err := home.Client.HeaderByNumber(context.Background(), nil) + if err != nil { + return err + } + endBlock := latestBlock.Number.Uint64() + iter, err := capReg.FilterConfigSet(&bind.FilterOpts{ + Start: endBlock - 1, + End: &endBlock, + }) + if err != nil { + return err + } + var donID uint32 + for iter.Next() { + donID = iter.Event.DonId + break + } + if donID == 0 { + return errors.New("failed to get donID") + } + + var signerAddresses []common.Address + for _, oracle := range oracles { + signerAddresses = append(signerAddresses, common.BytesToAddress(oracle.OnchainPublicKey)) + } + + var transmitterAddresses []common.Address + for _, oracle := range oracles { + transmitterAddresses = append(transmitterAddresses, common.HexToAddress(string(oracle.TransmitAccount))) + } + + // get the config digest from the ccip config contract and set config on the offramp. + var offrampOCR3Configs []evm_2_evm_multi_offramp.MultiOCR3BaseOCRConfigArgs + for _, pluginType := range []cctypes.PluginType{cctypes.PluginTypeCCIPCommit, cctypes.PluginTypeCCIPExec} { + ocrConfig, err2 := ccipConfig.GetOCRConfig(&bind.CallOpts{ + Context: context.Background(), + }, donID, uint8(pluginType)) + if err2 != nil { + return err2 + } + if len(ocrConfig) != 1 { + return errors.New("expected exactly one OCR3 config") + } + + offrampOCR3Configs = append(offrampOCR3Configs, evm_2_evm_multi_offramp.MultiOCR3BaseOCRConfigArgs{ + ConfigDigest: ocrConfig[0].ConfigDigest, + OcrPluginType: uint8(pluginType), + F: f, + IsSignatureVerificationEnabled: pluginType == cctypes.PluginTypeCCIPCommit, + Signers: signerAddresses, + Transmitters: transmitterAddresses, + }) + } + + //uni.backend.Commit() + + tx, err = offRamp.SetOCR3Configs(dest.DeployerKey, offrampOCR3Configs) + if err != nil { + return err + } + if err := home.Confirm(tx.Hash()); err != nil { + return err + } + + for _, pluginType := range []cctypes.PluginType{cctypes.PluginTypeCCIPCommit, cctypes.PluginTypeCCIPExec} { + _, err = offRamp.LatestConfigDetails(&bind.CallOpts{ + Context: context.Background(), + }, uint8(pluginType)) + if err != nil { + return err + } + // TODO: assertions + //require.Equalf(t, offrampOCR3Configs[pluginType].ConfigDigest, ocrConfig.ConfigInfo.ConfigDigest, "%s OCR3 config digest mismatch", pluginType.String()) + //require.Equalf(t, offrampOCR3Configs[pluginType].F, ocrConfig.ConfigInfo.F, "%s OCR3 config F mismatch", pluginType.String()) + //require.Equalf(t, offrampOCR3Configs[pluginType].IsSignatureVerificationEnabled, ocrConfig.ConfigInfo.IsSignatureVerificationEnabled, "%s OCR3 config signature verification mismatch", pluginType.String()) + //if pluginType == cctypes.PluginTypeCCIPCommit { + // // only commit will set signers, exec doesn't need them. + // require.Equalf(t, offrampOCR3Configs[pluginType].Signers, ocrConfig.Signers, "%s OCR3 config signers mismatch", pluginType.String()) + //} + //require.Equalf(t, offrampOCR3Configs[pluginType].Transmitters, ocrConfig.Transmitters, "%s OCR3 config transmitters mismatch", pluginType.String()) + } + + lggr.Infof("set ocr3 config on the offramp, signers: %+v, transmitters: %+v", signerAddresses, transmitterAddresses) + return nil +} diff --git a/integration-tests/deployment/ccip/jobs.go b/integration-tests/deployment/ccip/jobs.go index 0ba8649cf8..4901c276dd 100644 --- a/integration-tests/deployment/ccip/jobs.go +++ b/integration-tests/deployment/ccip/jobs.go @@ -53,7 +53,7 @@ func NewCCIPJobSpecs(nodeIds []string, oc deployment.OffchainClient) (map[string spec, err := validate.NewCCIPSpecToml(validate.SpecArgs{ P2PV2Bootstrappers: bootstraps, CapabilityVersion: CapabilityVersion, - CapabilityLabelledName: "CCIP", + CapabilityLabelledName: CapabilityLabelledName, OCRKeyBundleIDs: map[string]string{ // TODO: Validate that that all EVM chains are using the same keybundle. relay.NetworkEVM: nodeChainConfigs.ChainConfigs[0].Ocr2Config.OcrKeyBundle.BundleId, diff --git a/integration-tests/deployment/memory/node.go b/integration-tests/deployment/memory/node.go index 449bf19557..cb6f62d94b 100644 --- a/integration-tests/deployment/memory/node.go +++ b/integration-tests/deployment/memory/node.go @@ -94,7 +94,6 @@ func NewNode( // Enable Capabilities, This is a pre-requisite for registrySyncer to work. c.Capabilities.ExternalRegistry.NetworkID = ptr(relay.NetworkEVM) c.Capabilities.ExternalRegistry.ChainID = ptr(strconv.FormatUint(uint64(registryConfig.EVMChainID), 10)) - fmt.Println("REG COFN", registryConfig.Contract.String()) c.Capabilities.ExternalRegistry.Address = ptr(registryConfig.Contract.String()) // OCR configs From c2cd1533bccaba03021a37fe73cb0a2334cbb2ad Mon Sep 17 00:00:00 2001 From: connorwstein Date: Tue, 13 Aug 2024 16:40:40 -0400 Subject: [PATCH 20/42] Rm --- .../deployment/jd/job/v1/job.pb.go | 1767 ------------ .../deployment/jd/job/v1/job_grpc.pb.go | 345 --- .../deployment/jd/node/v1/node.pb.go | 2399 ----------------- .../deployment/jd/node/v1/node_grpc.pb.go | 343 --- .../deployment/jd/shared/ptypes/label.pb.go | 311 --- 5 files changed, 5165 deletions(-) delete mode 100644 integration-tests/deployment/jd/job/v1/job.pb.go delete mode 100644 integration-tests/deployment/jd/job/v1/job_grpc.pb.go delete mode 100644 integration-tests/deployment/jd/node/v1/node.pb.go delete mode 100644 integration-tests/deployment/jd/node/v1/node_grpc.pb.go delete mode 100644 integration-tests/deployment/jd/shared/ptypes/label.pb.go diff --git a/integration-tests/deployment/jd/job/v1/job.pb.go b/integration-tests/deployment/jd/job/v1/job.pb.go deleted file mode 100644 index deaf1ccf30..0000000000 --- a/integration-tests/deployment/jd/job/v1/job.pb.go +++ /dev/null @@ -1,1767 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.29.0 -// protoc v4.25.3 -// source: job/v1/job.proto - -package v1 - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// ProposalStatus defines the possible states of a job proposal. -type ProposalStatus int32 - -const ( - ProposalStatus_PROPOSAL_STATUS_UNSPECIFIED ProposalStatus = 0 - ProposalStatus_PROPOSAL_STATUS_PROPOSED ProposalStatus = 1 // Proposal has been made but not yet decided upon. - ProposalStatus_PROPOSAL_STATUS_APPROVED ProposalStatus = 2 // Proposal has been accepted. - ProposalStatus_PROPOSAL_STATUS_REJECTED ProposalStatus = 3 // Proposal has been rejected. - ProposalStatus_PROPOSAL_STATUS_CANCELLED ProposalStatus = 4 // Proposal has been cancelled. - ProposalStatus_PROPOSAL_STATUS_PENDING ProposalStatus = 5 // Proposal is pending review. - ProposalStatus_PROPOSAL_STATUS_REVOKED ProposalStatus = 6 // Proposal has been revoked after being proposed. -) - -// Enum value maps for ProposalStatus. -var ( - ProposalStatus_name = map[int32]string{ - 0: "PROPOSAL_STATUS_UNSPECIFIED", - 1: "PROPOSAL_STATUS_PROPOSED", - 2: "PROPOSAL_STATUS_APPROVED", - 3: "PROPOSAL_STATUS_REJECTED", - 4: "PROPOSAL_STATUS_CANCELLED", - 5: "PROPOSAL_STATUS_PENDING", - 6: "PROPOSAL_STATUS_REVOKED", - } - ProposalStatus_value = map[string]int32{ - "PROPOSAL_STATUS_UNSPECIFIED": 0, - "PROPOSAL_STATUS_PROPOSED": 1, - "PROPOSAL_STATUS_APPROVED": 2, - "PROPOSAL_STATUS_REJECTED": 3, - "PROPOSAL_STATUS_CANCELLED": 4, - "PROPOSAL_STATUS_PENDING": 5, - "PROPOSAL_STATUS_REVOKED": 6, - } -) - -func (x ProposalStatus) Enum() *ProposalStatus { - p := new(ProposalStatus) - *p = x - return p -} - -func (x ProposalStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ProposalStatus) Descriptor() protoreflect.EnumDescriptor { - return file_job_v1_job_proto_enumTypes[0].Descriptor() -} - -func (ProposalStatus) Type() protoreflect.EnumType { - return &file_job_v1_job_proto_enumTypes[0] -} - -func (x ProposalStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ProposalStatus.Descriptor instead. -func (ProposalStatus) EnumDescriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{0} -} - -// ProposalDeliveryStatus defines the delivery status of the proposal to the node. -type ProposalDeliveryStatus int32 - -const ( - ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_UNSPECIFIED ProposalDeliveryStatus = 0 - ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_DELIVERED ProposalDeliveryStatus = 1 // Delivered to the node. - ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_ACKNOWLEDGED ProposalDeliveryStatus = 2 // Acknowledged by the node. - ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_FAILED ProposalDeliveryStatus = 3 // Delivery failed. -) - -// Enum value maps for ProposalDeliveryStatus. -var ( - ProposalDeliveryStatus_name = map[int32]string{ - 0: "PROPOSAL_DELIVERY_STATUS_UNSPECIFIED", - 1: "PROPOSAL_DELIVERY_STATUS_DELIVERED", - 2: "PROPOSAL_DELIVERY_STATUS_ACKNOWLEDGED", - 3: "PROPOSAL_DELIVERY_STATUS_FAILED", - } - ProposalDeliveryStatus_value = map[string]int32{ - "PROPOSAL_DELIVERY_STATUS_UNSPECIFIED": 0, - "PROPOSAL_DELIVERY_STATUS_DELIVERED": 1, - "PROPOSAL_DELIVERY_STATUS_ACKNOWLEDGED": 2, - "PROPOSAL_DELIVERY_STATUS_FAILED": 3, - } -) - -func (x ProposalDeliveryStatus) Enum() *ProposalDeliveryStatus { - p := new(ProposalDeliveryStatus) - *p = x - return p -} - -func (x ProposalDeliveryStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ProposalDeliveryStatus) Descriptor() protoreflect.EnumDescriptor { - return file_job_v1_job_proto_enumTypes[1].Descriptor() -} - -func (ProposalDeliveryStatus) Type() protoreflect.EnumType { - return &file_job_v1_job_proto_enumTypes[1] -} - -func (x ProposalDeliveryStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ProposalDeliveryStatus.Descriptor instead. -func (ProposalDeliveryStatus) EnumDescriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{1} -} - -// Job represents the structured data of a job within the system. -type Job struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier for the job. - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` // Universally unique identifier for the job. - NodeId string `protobuf:"bytes,3,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` // ID of the node associated with this job. - ProposalIds []string `protobuf:"bytes,4,rep,name=proposal_ids,json=proposalIds,proto3" json:"proposal_ids,omitempty"` // List of proposal IDs associated with this job. - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Timestamp when the job was created. - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Timestamp when the job was last updated. - DeletedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` // Timestamp when the job was deleted, if applicable. -} - -func (x *Job) Reset() { - *x = Job{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Job) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Job) ProtoMessage() {} - -func (x *Job) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Job.ProtoReflect.Descriptor instead. -func (*Job) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{0} -} - -func (x *Job) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Job) GetUuid() string { - if x != nil { - return x.Uuid - } - return "" -} - -func (x *Job) GetNodeId() string { - if x != nil { - return x.NodeId - } - return "" -} - -func (x *Job) GetProposalIds() []string { - if x != nil { - return x.ProposalIds - } - return nil -} - -func (x *Job) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *Job) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *Job) GetDeletedAt() *timestamppb.Timestamp { - if x != nil { - return x.DeletedAt - } - return nil -} - -// Proposal represents a job proposal. -type Proposal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier for the proposal. - Version int64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` // Version number of the proposal. - Status ProposalStatus `protobuf:"varint,3,opt,name=status,proto3,enum=api.job.v1.ProposalStatus" json:"status,omitempty"` // Current status of the proposal. - DeliveryStatus ProposalDeliveryStatus `protobuf:"varint,4,opt,name=delivery_status,json=deliveryStatus,proto3,enum=api.job.v1.ProposalDeliveryStatus" json:"delivery_status,omitempty"` // Delivery status of the proposal. - Spec string `protobuf:"bytes,5,opt,name=spec,proto3" json:"spec,omitempty"` // Specification of the job proposed. - JobId string `protobuf:"bytes,6,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` // ID of the job associated with this proposal. - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Timestamp when the proposal was created. - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Timestamp when the proposal was last updated. - AckedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=acked_at,json=ackedAt,proto3,oneof" json:"acked_at,omitempty"` // Timestamp when the proposal was acknowledged. - ResponseReceivedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=response_received_at,json=responseReceivedAt,proto3,oneof" json:"response_received_at,omitempty"` // Timestamp when a response was received. -} - -func (x *Proposal) Reset() { - *x = Proposal{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Proposal) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Proposal) ProtoMessage() {} - -func (x *Proposal) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Proposal.ProtoReflect.Descriptor instead. -func (*Proposal) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{1} -} - -func (x *Proposal) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Proposal) GetVersion() int64 { - if x != nil { - return x.Version - } - return 0 -} - -func (x *Proposal) GetStatus() ProposalStatus { - if x != nil { - return x.Status - } - return ProposalStatus_PROPOSAL_STATUS_UNSPECIFIED -} - -func (x *Proposal) GetDeliveryStatus() ProposalDeliveryStatus { - if x != nil { - return x.DeliveryStatus - } - return ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_UNSPECIFIED -} - -func (x *Proposal) GetSpec() string { - if x != nil { - return x.Spec - } - return "" -} - -func (x *Proposal) GetJobId() string { - if x != nil { - return x.JobId - } - return "" -} - -func (x *Proposal) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *Proposal) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *Proposal) GetAckedAt() *timestamppb.Timestamp { - if x != nil { - return x.AckedAt - } - return nil -} - -func (x *Proposal) GetResponseReceivedAt() *timestamppb.Timestamp { - if x != nil { - return x.ResponseReceivedAt - } - return nil -} - -// GetJobRequest specifies the criteria for retrieving a job. -type GetJobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to IdOneof: - // - // *GetJobRequest_Id - // *GetJobRequest_Uuid - IdOneof isGetJobRequest_IdOneof `protobuf_oneof:"id_oneof"` -} - -func (x *GetJobRequest) Reset() { - *x = GetJobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetJobRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetJobRequest) ProtoMessage() {} - -func (x *GetJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetJobRequest.ProtoReflect.Descriptor instead. -func (*GetJobRequest) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{2} -} - -func (m *GetJobRequest) GetIdOneof() isGetJobRequest_IdOneof { - if m != nil { - return m.IdOneof - } - return nil -} - -func (x *GetJobRequest) GetId() string { - if x, ok := x.GetIdOneof().(*GetJobRequest_Id); ok { - return x.Id - } - return "" -} - -func (x *GetJobRequest) GetUuid() string { - if x, ok := x.GetIdOneof().(*GetJobRequest_Uuid); ok { - return x.Uuid - } - return "" -} - -type isGetJobRequest_IdOneof interface { - isGetJobRequest_IdOneof() -} - -type GetJobRequest_Id struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3,oneof"` // Unique identifier of the job. -} - -type GetJobRequest_Uuid struct { - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3,oneof"` // Universally unique identifier of the job. -} - -func (*GetJobRequest_Id) isGetJobRequest_IdOneof() {} - -func (*GetJobRequest_Uuid) isGetJobRequest_IdOneof() {} - -// GetJobResponse contains the job details. -type GetJobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Job *Job `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` // Details of the retrieved job. -} - -func (x *GetJobResponse) Reset() { - *x = GetJobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetJobResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetJobResponse) ProtoMessage() {} - -func (x *GetJobResponse) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetJobResponse.ProtoReflect.Descriptor instead. -func (*GetJobResponse) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{3} -} - -func (x *GetJobResponse) GetJob() *Job { - if x != nil { - return x.Job - } - return nil -} - -// GetProposalRequest specifies the criteria for retrieving a proposal. -type GetProposalRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier of the proposal to retrieve. -} - -func (x *GetProposalRequest) Reset() { - *x = GetProposalRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetProposalRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetProposalRequest) ProtoMessage() {} - -func (x *GetProposalRequest) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetProposalRequest.ProtoReflect.Descriptor instead. -func (*GetProposalRequest) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{4} -} - -func (x *GetProposalRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -// GetProposalResponse contains the proposal details. -type GetProposalResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Proposal *Proposal `protobuf:"bytes,1,opt,name=proposal,proto3" json:"proposal,omitempty"` // Details of the retrieved proposal. -} - -func (x *GetProposalResponse) Reset() { - *x = GetProposalResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetProposalResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetProposalResponse) ProtoMessage() {} - -func (x *GetProposalResponse) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetProposalResponse.ProtoReflect.Descriptor instead. -func (*GetProposalResponse) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{5} -} - -func (x *GetProposalResponse) GetProposal() *Proposal { - if x != nil { - return x.Proposal - } - return nil -} - -// ListJobsRequest specifies filters for listing jobs. -type ListJobsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Filter *ListJobsRequest_Filter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` // Filters applied to the job listing. -} - -func (x *ListJobsRequest) Reset() { - *x = ListJobsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListJobsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListJobsRequest) ProtoMessage() {} - -func (x *ListJobsRequest) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListJobsRequest.ProtoReflect.Descriptor instead. -func (*ListJobsRequest) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{6} -} - -func (x *ListJobsRequest) GetFilter() *ListJobsRequest_Filter { - if x != nil { - return x.Filter - } - return nil -} - -// ListJobsResponse contains a list of jobs that match the filters. -type ListJobsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Jobs []*Job `protobuf:"bytes,1,rep,name=jobs,proto3" json:"jobs,omitempty"` // List of jobs. -} - -func (x *ListJobsResponse) Reset() { - *x = ListJobsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListJobsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListJobsResponse) ProtoMessage() {} - -func (x *ListJobsResponse) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListJobsResponse.ProtoReflect.Descriptor instead. -func (*ListJobsResponse) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{7} -} - -func (x *ListJobsResponse) GetJobs() []*Job { - if x != nil { - return x.Jobs - } - return nil -} - -// ListProposalsRequest specifies filters for listing proposals. -type ListProposalsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Filter *ListProposalsRequest_Filter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` // Filters applied to the proposal listing. -} - -func (x *ListProposalsRequest) Reset() { - *x = ListProposalsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListProposalsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListProposalsRequest) ProtoMessage() {} - -func (x *ListProposalsRequest) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListProposalsRequest.ProtoReflect.Descriptor instead. -func (*ListProposalsRequest) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{8} -} - -func (x *ListProposalsRequest) GetFilter() *ListProposalsRequest_Filter { - if x != nil { - return x.Filter - } - return nil -} - -// ListProposalsResponse contains a list of proposals that match the filters. -type ListProposalsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Proposals []*Proposal `protobuf:"bytes,1,rep,name=proposals,proto3" json:"proposals,omitempty"` // List of proposals. -} - -func (x *ListProposalsResponse) Reset() { - *x = ListProposalsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListProposalsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListProposalsResponse) ProtoMessage() {} - -func (x *ListProposalsResponse) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListProposalsResponse.ProtoReflect.Descriptor instead. -func (*ListProposalsResponse) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{9} -} - -func (x *ListProposalsResponse) GetProposals() []*Proposal { - if x != nil { - return x.Proposals - } - return nil -} - -// ProposeJobRequest contains the information needed to submit a new job proposal. -type ProposeJobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` // ID of the node to which the job is proposed. - Spec string `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` // Specification of the job being proposed. -} - -func (x *ProposeJobRequest) Reset() { - *x = ProposeJobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ProposeJobRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProposeJobRequest) ProtoMessage() {} - -func (x *ProposeJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ProposeJobRequest.ProtoReflect.Descriptor instead. -func (*ProposeJobRequest) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{10} -} - -func (x *ProposeJobRequest) GetNodeId() string { - if x != nil { - return x.NodeId - } - return "" -} - -func (x *ProposeJobRequest) GetSpec() string { - if x != nil { - return x.Spec - } - return "" -} - -// ProposeJobResponse returns the newly created proposal. -type ProposeJobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Proposal *Proposal `protobuf:"bytes,1,opt,name=proposal,proto3" json:"proposal,omitempty"` // Details of the newly created proposal. -} - -func (x *ProposeJobResponse) Reset() { - *x = ProposeJobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ProposeJobResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProposeJobResponse) ProtoMessage() {} - -func (x *ProposeJobResponse) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ProposeJobResponse.ProtoReflect.Descriptor instead. -func (*ProposeJobResponse) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{11} -} - -func (x *ProposeJobResponse) GetProposal() *Proposal { - if x != nil { - return x.Proposal - } - return nil -} - -// RevokeJobRequest specifies the criteria for revoking a job proposal. -type RevokeJobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to IdOneof: - // - // *RevokeJobRequest_Id - // *RevokeJobRequest_Uuid - IdOneof isRevokeJobRequest_IdOneof `protobuf_oneof:"id_oneof"` -} - -func (x *RevokeJobRequest) Reset() { - *x = RevokeJobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RevokeJobRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RevokeJobRequest) ProtoMessage() {} - -func (x *RevokeJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RevokeJobRequest.ProtoReflect.Descriptor instead. -func (*RevokeJobRequest) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{12} -} - -func (m *RevokeJobRequest) GetIdOneof() isRevokeJobRequest_IdOneof { - if m != nil { - return m.IdOneof - } - return nil -} - -func (x *RevokeJobRequest) GetId() string { - if x, ok := x.GetIdOneof().(*RevokeJobRequest_Id); ok { - return x.Id - } - return "" -} - -func (x *RevokeJobRequest) GetUuid() string { - if x, ok := x.GetIdOneof().(*RevokeJobRequest_Uuid); ok { - return x.Uuid - } - return "" -} - -type isRevokeJobRequest_IdOneof interface { - isRevokeJobRequest_IdOneof() -} - -type RevokeJobRequest_Id struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3,oneof"` // Unique identifier of the proposal to revoke. -} - -type RevokeJobRequest_Uuid struct { - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3,oneof"` // Universally unique identifier of the proposal to revoke. -} - -func (*RevokeJobRequest_Id) isRevokeJobRequest_IdOneof() {} - -func (*RevokeJobRequest_Uuid) isRevokeJobRequest_IdOneof() {} - -// RevokeJobResponse returns the revoked proposal. -type RevokeJobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Proposal *Proposal `protobuf:"bytes,1,opt,name=proposal,proto3" json:"proposal,omitempty"` // Details of the revoked proposal. -} - -func (x *RevokeJobResponse) Reset() { - *x = RevokeJobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RevokeJobResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RevokeJobResponse) ProtoMessage() {} - -func (x *RevokeJobResponse) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RevokeJobResponse.ProtoReflect.Descriptor instead. -func (*RevokeJobResponse) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{13} -} - -func (x *RevokeJobResponse) GetProposal() *Proposal { - if x != nil { - return x.Proposal - } - return nil -} - -// DeleteJobRequest specifies the criteria for deleting a job. -type DeleteJobRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to IdOneof: - // - // *DeleteJobRequest_Id - // *DeleteJobRequest_Uuid - IdOneof isDeleteJobRequest_IdOneof `protobuf_oneof:"id_oneof"` -} - -func (x *DeleteJobRequest) Reset() { - *x = DeleteJobRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeleteJobRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteJobRequest) ProtoMessage() {} - -func (x *DeleteJobRequest) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteJobRequest.ProtoReflect.Descriptor instead. -func (*DeleteJobRequest) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{14} -} - -func (m *DeleteJobRequest) GetIdOneof() isDeleteJobRequest_IdOneof { - if m != nil { - return m.IdOneof - } - return nil -} - -func (x *DeleteJobRequest) GetId() string { - if x, ok := x.GetIdOneof().(*DeleteJobRequest_Id); ok { - return x.Id - } - return "" -} - -func (x *DeleteJobRequest) GetUuid() string { - if x, ok := x.GetIdOneof().(*DeleteJobRequest_Uuid); ok { - return x.Uuid - } - return "" -} - -type isDeleteJobRequest_IdOneof interface { - isDeleteJobRequest_IdOneof() -} - -type DeleteJobRequest_Id struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3,oneof"` // Unique identifier of the job to delete. -} - -type DeleteJobRequest_Uuid struct { - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3,oneof"` // Universally unique identifier of the job to delete. -} - -func (*DeleteJobRequest_Id) isDeleteJobRequest_IdOneof() {} - -func (*DeleteJobRequest_Uuid) isDeleteJobRequest_IdOneof() {} - -// DeleteJobResponse returns details of the deleted job. -type DeleteJobResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Job *Job `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` // Details of the deleted job. -} - -func (x *DeleteJobResponse) Reset() { - *x = DeleteJobResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeleteJobResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteJobResponse) ProtoMessage() {} - -func (x *DeleteJobResponse) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteJobResponse.ProtoReflect.Descriptor instead. -func (*DeleteJobResponse) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{15} -} - -func (x *DeleteJobResponse) GetJob() *Job { - if x != nil { - return x.Job - } - return nil -} - -type ListJobsRequest_Filter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` // Filter by job IDs. - NodeIds []string `protobuf:"bytes,2,rep,name=node_ids,json=nodeIds,proto3" json:"node_ids,omitempty"` // Filter by node IDs. -} - -func (x *ListJobsRequest_Filter) Reset() { - *x = ListJobsRequest_Filter{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListJobsRequest_Filter) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListJobsRequest_Filter) ProtoMessage() {} - -func (x *ListJobsRequest_Filter) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListJobsRequest_Filter.ProtoReflect.Descriptor instead. -func (*ListJobsRequest_Filter) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{6, 0} -} - -func (x *ListJobsRequest_Filter) GetIds() []string { - if x != nil { - return x.Ids - } - return nil -} - -func (x *ListJobsRequest_Filter) GetNodeIds() []string { - if x != nil { - return x.NodeIds - } - return nil -} - -type ListProposalsRequest_Filter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` // Filter by proposal IDs. - JobIds []string `protobuf:"bytes,2,rep,name=job_ids,json=jobIds,proto3" json:"job_ids,omitempty"` // Filter by job IDs. -} - -func (x *ListProposalsRequest_Filter) Reset() { - *x = ListProposalsRequest_Filter{} - if protoimpl.UnsafeEnabled { - mi := &file_job_v1_job_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListProposalsRequest_Filter) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListProposalsRequest_Filter) ProtoMessage() {} - -func (x *ListProposalsRequest_Filter) ProtoReflect() protoreflect.Message { - mi := &file_job_v1_job_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListProposalsRequest_Filter.ProtoReflect.Descriptor instead. -func (*ListProposalsRequest_Filter) Descriptor() ([]byte, []int) { - return file_job_v1_job_proto_rawDescGZIP(), []int{8, 0} -} - -func (x *ListProposalsRequest_Filter) GetIds() []string { - if x != nil { - return x.Ids - } - return nil -} - -func (x *ListProposalsRequest_Filter) GetJobIds() []string { - if x != nil { - return x.JobIds - } - return nil -} - -var File_job_v1_job_proto protoreflect.FileDescriptor - -var file_job_v1_job_proto_rawDesc = []byte{ - 0x0a, 0x10, 0x6a, 0x6f, 0x62, 0x2f, 0x76, 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x0a, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x1f, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0x96, 0x02, 0x0a, 0x03, 0x4a, 0x6f, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, - 0x64, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, - 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x8b, 0x04, 0x0a, 0x08, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x4b, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x73, 0x70, 0x65, 0x63, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x3a, 0x0a, 0x08, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, - 0x00, 0x52, 0x07, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, - 0x14, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, - 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, 0x17, 0x0a, - 0x15, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x43, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x75, 0x75, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x42, - 0x0a, 0x0a, 0x08, 0x69, 0x64, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x33, 0x0a, 0x0e, 0x47, - 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, - 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, - 0x22, 0x24, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x47, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, - 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, - 0x84, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, - 0x35, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, - 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x22, 0x37, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, - 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x6a, 0x6f, - 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, - 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x22, - 0x8c, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, - 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x33, 0x0a, 0x06, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x73, 0x22, 0x4b, - 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x22, 0x40, 0x0a, 0x11, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x70, 0x65, - 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x46, 0x0a, - 0x12, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x46, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, - 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x75, - 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, - 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x69, 0x64, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x45, 0x0a, - 0x11, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x46, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x75, 0x75, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, - 0x42, 0x0a, 0x0a, 0x08, 0x69, 0x64, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x36, 0x0a, 0x11, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x21, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, - 0x03, 0x6a, 0x6f, 0x62, 0x2a, 0xe4, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x50, 0x4f, - 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, - 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x50, - 0x4f, 0x53, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, - 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, - 0x45, 0x44, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, - 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, - 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x1b, - 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x52, 0x45, 0x56, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0x06, 0x2a, 0xba, 0x01, 0x0a, 0x16, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, - 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x26, 0x0a, 0x22, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x4c, - 0x49, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x4c, - 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x52, 0x4f, 0x50, - 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x43, 0x4b, 0x4e, 0x4f, 0x57, 0x4c, 0x45, 0x44, 0x47, 0x45, - 0x44, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, - 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x32, 0xa9, 0x04, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4a, 0x6f, - 0x62, 0x12, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x0b, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x08, - 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, - 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, - 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, - 0x0a, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1d, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, - 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4a, - 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x09, - 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, 0x6f, 0x62, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, - 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x42, 0x08, 0x5a, 0x06, 0x6a, 0x6f, 0x62, 0x2f, 0x76, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_job_v1_job_proto_rawDescOnce sync.Once - file_job_v1_job_proto_rawDescData = file_job_v1_job_proto_rawDesc -) - -func file_job_v1_job_proto_rawDescGZIP() []byte { - file_job_v1_job_proto_rawDescOnce.Do(func() { - file_job_v1_job_proto_rawDescData = protoimpl.X.CompressGZIP(file_job_v1_job_proto_rawDescData) - }) - return file_job_v1_job_proto_rawDescData -} - -var file_job_v1_job_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_job_v1_job_proto_msgTypes = make([]protoimpl.MessageInfo, 18) -var file_job_v1_job_proto_goTypes = []interface{}{ - (ProposalStatus)(0), // 0: api.job.v1.ProposalStatus - (ProposalDeliveryStatus)(0), // 1: api.job.v1.ProposalDeliveryStatus - (*Job)(nil), // 2: api.job.v1.Job - (*Proposal)(nil), // 3: api.job.v1.Proposal - (*GetJobRequest)(nil), // 4: api.job.v1.GetJobRequest - (*GetJobResponse)(nil), // 5: api.job.v1.GetJobResponse - (*GetProposalRequest)(nil), // 6: api.job.v1.GetProposalRequest - (*GetProposalResponse)(nil), // 7: api.job.v1.GetProposalResponse - (*ListJobsRequest)(nil), // 8: api.job.v1.ListJobsRequest - (*ListJobsResponse)(nil), // 9: api.job.v1.ListJobsResponse - (*ListProposalsRequest)(nil), // 10: api.job.v1.ListProposalsRequest - (*ListProposalsResponse)(nil), // 11: api.job.v1.ListProposalsResponse - (*ProposeJobRequest)(nil), // 12: api.job.v1.ProposeJobRequest - (*ProposeJobResponse)(nil), // 13: api.job.v1.ProposeJobResponse - (*RevokeJobRequest)(nil), // 14: api.job.v1.RevokeJobRequest - (*RevokeJobResponse)(nil), // 15: api.job.v1.RevokeJobResponse - (*DeleteJobRequest)(nil), // 16: api.job.v1.DeleteJobRequest - (*DeleteJobResponse)(nil), // 17: api.job.v1.DeleteJobResponse - (*ListJobsRequest_Filter)(nil), // 18: api.job.v1.ListJobsRequest.Filter - (*ListProposalsRequest_Filter)(nil), // 19: api.job.v1.ListProposalsRequest.Filter - (*timestamppb.Timestamp)(nil), // 20: google.protobuf.Timestamp -} -var file_job_v1_job_proto_depIdxs = []int32{ - 20, // 0: api.job.v1.Job.created_at:type_name -> google.protobuf.Timestamp - 20, // 1: api.job.v1.Job.updated_at:type_name -> google.protobuf.Timestamp - 20, // 2: api.job.v1.Job.deleted_at:type_name -> google.protobuf.Timestamp - 0, // 3: api.job.v1.Proposal.status:type_name -> api.job.v1.ProposalStatus - 1, // 4: api.job.v1.Proposal.delivery_status:type_name -> api.job.v1.ProposalDeliveryStatus - 20, // 5: api.job.v1.Proposal.created_at:type_name -> google.protobuf.Timestamp - 20, // 6: api.job.v1.Proposal.updated_at:type_name -> google.protobuf.Timestamp - 20, // 7: api.job.v1.Proposal.acked_at:type_name -> google.protobuf.Timestamp - 20, // 8: api.job.v1.Proposal.response_received_at:type_name -> google.protobuf.Timestamp - 2, // 9: api.job.v1.GetJobResponse.job:type_name -> api.job.v1.Job - 3, // 10: api.job.v1.GetProposalResponse.proposal:type_name -> api.job.v1.Proposal - 18, // 11: api.job.v1.ListJobsRequest.filter:type_name -> api.job.v1.ListJobsRequest.Filter - 2, // 12: api.job.v1.ListJobsResponse.jobs:type_name -> api.job.v1.Job - 19, // 13: api.job.v1.ListProposalsRequest.filter:type_name -> api.job.v1.ListProposalsRequest.Filter - 3, // 14: api.job.v1.ListProposalsResponse.proposals:type_name -> api.job.v1.Proposal - 3, // 15: api.job.v1.ProposeJobResponse.proposal:type_name -> api.job.v1.Proposal - 3, // 16: api.job.v1.RevokeJobResponse.proposal:type_name -> api.job.v1.Proposal - 2, // 17: api.job.v1.DeleteJobResponse.job:type_name -> api.job.v1.Job - 4, // 18: api.job.v1.JobService.GetJob:input_type -> api.job.v1.GetJobRequest - 6, // 19: api.job.v1.JobService.GetProposal:input_type -> api.job.v1.GetProposalRequest - 8, // 20: api.job.v1.JobService.ListJobs:input_type -> api.job.v1.ListJobsRequest - 10, // 21: api.job.v1.JobService.ListProposals:input_type -> api.job.v1.ListProposalsRequest - 12, // 22: api.job.v1.JobService.ProposeJob:input_type -> api.job.v1.ProposeJobRequest - 14, // 23: api.job.v1.JobService.RevokeJob:input_type -> api.job.v1.RevokeJobRequest - 16, // 24: api.job.v1.JobService.DeleteJob:input_type -> api.job.v1.DeleteJobRequest - 5, // 25: api.job.v1.JobService.GetJob:output_type -> api.job.v1.GetJobResponse - 7, // 26: api.job.v1.JobService.GetProposal:output_type -> api.job.v1.GetProposalResponse - 9, // 27: api.job.v1.JobService.ListJobs:output_type -> api.job.v1.ListJobsResponse - 11, // 28: api.job.v1.JobService.ListProposals:output_type -> api.job.v1.ListProposalsResponse - 13, // 29: api.job.v1.JobService.ProposeJob:output_type -> api.job.v1.ProposeJobResponse - 15, // 30: api.job.v1.JobService.RevokeJob:output_type -> api.job.v1.RevokeJobResponse - 17, // 31: api.job.v1.JobService.DeleteJob:output_type -> api.job.v1.DeleteJobResponse - 25, // [25:32] is the sub-list for method output_type - 18, // [18:25] is the sub-list for method input_type - 18, // [18:18] is the sub-list for extension type_name - 18, // [18:18] is the sub-list for extension extendee - 0, // [0:18] is the sub-list for field type_name -} - -func init() { file_job_v1_job_proto_init() } -func file_job_v1_job_proto_init() { - if File_job_v1_job_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_job_v1_job_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Job); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Proposal); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetJobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetJobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetProposalRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetProposalResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListJobsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListJobsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListProposalsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListProposalsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProposeJobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProposeJobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokeJobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokeJobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteJobRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteJobResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListJobsRequest_Filter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_job_v1_job_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListProposalsRequest_Filter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_job_v1_job_proto_msgTypes[1].OneofWrappers = []interface{}{} - file_job_v1_job_proto_msgTypes[2].OneofWrappers = []interface{}{ - (*GetJobRequest_Id)(nil), - (*GetJobRequest_Uuid)(nil), - } - file_job_v1_job_proto_msgTypes[12].OneofWrappers = []interface{}{ - (*RevokeJobRequest_Id)(nil), - (*RevokeJobRequest_Uuid)(nil), - } - file_job_v1_job_proto_msgTypes[14].OneofWrappers = []interface{}{ - (*DeleteJobRequest_Id)(nil), - (*DeleteJobRequest_Uuid)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_job_v1_job_proto_rawDesc, - NumEnums: 2, - NumMessages: 18, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_job_v1_job_proto_goTypes, - DependencyIndexes: file_job_v1_job_proto_depIdxs, - EnumInfos: file_job_v1_job_proto_enumTypes, - MessageInfos: file_job_v1_job_proto_msgTypes, - }.Build() - File_job_v1_job_proto = out.File - file_job_v1_job_proto_rawDesc = nil - file_job_v1_job_proto_goTypes = nil - file_job_v1_job_proto_depIdxs = nil -} diff --git a/integration-tests/deployment/jd/job/v1/job_grpc.pb.go b/integration-tests/deployment/jd/job/v1/job_grpc.pb.go deleted file mode 100644 index 9b9207c020..0000000000 --- a/integration-tests/deployment/jd/job/v1/job_grpc.pb.go +++ /dev/null @@ -1,345 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.25.3 -// source: job/v1/job.proto - -package v1 - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - JobService_GetJob_FullMethodName = "/api.job.v1.JobService/GetJob" - JobService_GetProposal_FullMethodName = "/api.job.v1.JobService/GetProposal" - JobService_ListJobs_FullMethodName = "/api.job.v1.JobService/ListJobs" - JobService_ListProposals_FullMethodName = "/api.job.v1.JobService/ListProposals" - JobService_ProposeJob_FullMethodName = "/api.job.v1.JobService/ProposeJob" - JobService_RevokeJob_FullMethodName = "/api.job.v1.JobService/RevokeJob" - JobService_DeleteJob_FullMethodName = "/api.job.v1.JobService/DeleteJob" -) - -// JobServiceClient is the client API for JobService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type JobServiceClient interface { - // GetJob retrieves the details of a specific job by its ID or UUID. - GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*GetJobResponse, error) - // GetProposal retrieves the details of a specific proposal by its ID. - GetProposal(ctx context.Context, in *GetProposalRequest, opts ...grpc.CallOption) (*GetProposalResponse, error) - // ListJobs returns a list of jobs, optionally filtered by IDs or node IDs. - ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) - // ListProposals returns a list of proposals, optionally filtered by proposal or job IDs. - ListProposals(ctx context.Context, in *ListProposalsRequest, opts ...grpc.CallOption) (*ListProposalsResponse, error) - // ProposeJob submits a new job proposal to a node. - ProposeJob(ctx context.Context, in *ProposeJobRequest, opts ...grpc.CallOption) (*ProposeJobResponse, error) - // RevokeJob revokes an existing job proposal. - RevokeJob(ctx context.Context, in *RevokeJobRequest, opts ...grpc.CallOption) (*RevokeJobResponse, error) - // DeleteJob deletes a job from the system. - DeleteJob(ctx context.Context, in *DeleteJobRequest, opts ...grpc.CallOption) (*DeleteJobResponse, error) -} - -type jobServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewJobServiceClient(cc grpc.ClientConnInterface) JobServiceClient { - return &jobServiceClient{cc} -} - -func (c *jobServiceClient) GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*GetJobResponse, error) { - out := new(GetJobResponse) - err := c.cc.Invoke(ctx, JobService_GetJob_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobServiceClient) GetProposal(ctx context.Context, in *GetProposalRequest, opts ...grpc.CallOption) (*GetProposalResponse, error) { - out := new(GetProposalResponse) - err := c.cc.Invoke(ctx, JobService_GetProposal_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobServiceClient) ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) { - out := new(ListJobsResponse) - err := c.cc.Invoke(ctx, JobService_ListJobs_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobServiceClient) ListProposals(ctx context.Context, in *ListProposalsRequest, opts ...grpc.CallOption) (*ListProposalsResponse, error) { - out := new(ListProposalsResponse) - err := c.cc.Invoke(ctx, JobService_ListProposals_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobServiceClient) ProposeJob(ctx context.Context, in *ProposeJobRequest, opts ...grpc.CallOption) (*ProposeJobResponse, error) { - out := new(ProposeJobResponse) - err := c.cc.Invoke(ctx, JobService_ProposeJob_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobServiceClient) RevokeJob(ctx context.Context, in *RevokeJobRequest, opts ...grpc.CallOption) (*RevokeJobResponse, error) { - out := new(RevokeJobResponse) - err := c.cc.Invoke(ctx, JobService_RevokeJob_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *jobServiceClient) DeleteJob(ctx context.Context, in *DeleteJobRequest, opts ...grpc.CallOption) (*DeleteJobResponse, error) { - out := new(DeleteJobResponse) - err := c.cc.Invoke(ctx, JobService_DeleteJob_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// JobServiceServer is the server API for JobService service. -// All implementations must embed UnimplementedJobServiceServer -// for forward compatibility -type JobServiceServer interface { - // GetJob retrieves the details of a specific job by its ID or UUID. - GetJob(context.Context, *GetJobRequest) (*GetJobResponse, error) - // GetProposal retrieves the details of a specific proposal by its ID. - GetProposal(context.Context, *GetProposalRequest) (*GetProposalResponse, error) - // ListJobs returns a list of jobs, optionally filtered by IDs or node IDs. - ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error) - // ListProposals returns a list of proposals, optionally filtered by proposal or job IDs. - ListProposals(context.Context, *ListProposalsRequest) (*ListProposalsResponse, error) - // ProposeJob submits a new job proposal to a node. - ProposeJob(context.Context, *ProposeJobRequest) (*ProposeJobResponse, error) - // RevokeJob revokes an existing job proposal. - RevokeJob(context.Context, *RevokeJobRequest) (*RevokeJobResponse, error) - // DeleteJob deletes a job from the system. - DeleteJob(context.Context, *DeleteJobRequest) (*DeleteJobResponse, error) - mustEmbedUnimplementedJobServiceServer() -} - -// UnimplementedJobServiceServer must be embedded to have forward compatible implementations. -type UnimplementedJobServiceServer struct { -} - -func (UnimplementedJobServiceServer) GetJob(context.Context, *GetJobRequest) (*GetJobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetJob not implemented") -} -func (UnimplementedJobServiceServer) GetProposal(context.Context, *GetProposalRequest) (*GetProposalResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetProposal not implemented") -} -func (UnimplementedJobServiceServer) ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListJobs not implemented") -} -func (UnimplementedJobServiceServer) ListProposals(context.Context, *ListProposalsRequest) (*ListProposalsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListProposals not implemented") -} -func (UnimplementedJobServiceServer) ProposeJob(context.Context, *ProposeJobRequest) (*ProposeJobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ProposeJob not implemented") -} -func (UnimplementedJobServiceServer) RevokeJob(context.Context, *RevokeJobRequest) (*RevokeJobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RevokeJob not implemented") -} -func (UnimplementedJobServiceServer) DeleteJob(context.Context, *DeleteJobRequest) (*DeleteJobResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteJob not implemented") -} -func (UnimplementedJobServiceServer) mustEmbedUnimplementedJobServiceServer() {} - -// UnsafeJobServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to JobServiceServer will -// result in compilation errors. -type UnsafeJobServiceServer interface { - mustEmbedUnimplementedJobServiceServer() -} - -func RegisterJobServiceServer(s grpc.ServiceRegistrar, srv JobServiceServer) { - s.RegisterService(&JobService_ServiceDesc, srv) -} - -func _JobService_GetJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).GetJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: JobService_GetJob_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).GetJob(ctx, req.(*GetJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobService_GetProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetProposalRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).GetProposal(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: JobService_GetProposal_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).GetProposal(ctx, req.(*GetProposalRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobService_ListJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListJobsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).ListJobs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: JobService_ListJobs_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).ListJobs(ctx, req.(*ListJobsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobService_ListProposals_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListProposalsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).ListProposals(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: JobService_ListProposals_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).ListProposals(ctx, req.(*ListProposalsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobService_ProposeJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ProposeJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).ProposeJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: JobService_ProposeJob_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).ProposeJob(ctx, req.(*ProposeJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobService_RevokeJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RevokeJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).RevokeJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: JobService_RevokeJob_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).RevokeJob(ctx, req.(*RevokeJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _JobService_DeleteJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteJobRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(JobServiceServer).DeleteJob(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: JobService_DeleteJob_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(JobServiceServer).DeleteJob(ctx, req.(*DeleteJobRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// JobService_ServiceDesc is the grpc.ServiceDesc for JobService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var JobService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "api.job.v1.JobService", - HandlerType: (*JobServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetJob", - Handler: _JobService_GetJob_Handler, - }, - { - MethodName: "GetProposal", - Handler: _JobService_GetProposal_Handler, - }, - { - MethodName: "ListJobs", - Handler: _JobService_ListJobs_Handler, - }, - { - MethodName: "ListProposals", - Handler: _JobService_ListProposals_Handler, - }, - { - MethodName: "ProposeJob", - Handler: _JobService_ProposeJob_Handler, - }, - { - MethodName: "RevokeJob", - Handler: _JobService_RevokeJob_Handler, - }, - { - MethodName: "DeleteJob", - Handler: _JobService_DeleteJob_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "job/v1/job.proto", -} diff --git a/integration-tests/deployment/jd/node/v1/node.pb.go b/integration-tests/deployment/jd/node/v1/node.pb.go deleted file mode 100644 index 017163b8fc..0000000000 --- a/integration-tests/deployment/jd/node/v1/node.pb.go +++ /dev/null @@ -1,2399 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.29.0 -// protoc v4.25.3 -// source: node/v1/node.proto - -package v1 - -import ( - ptypes "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/shared/ptypes" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type ChainType int32 - -const ( - ChainType_CHAIN_TYPE_UNSPECIFIED ChainType = 0 - ChainType_CHAIN_TYPE_EVM ChainType = 1 - ChainType_CHAIN_TYPE_SOLANA ChainType = 2 -) - -// Enum value maps for ChainType. -var ( - ChainType_name = map[int32]string{ - 0: "CHAIN_TYPE_UNSPECIFIED", - 1: "CHAIN_TYPE_EVM", - 2: "CHAIN_TYPE_SOLANA", - } - ChainType_value = map[string]int32{ - "CHAIN_TYPE_UNSPECIFIED": 0, - "CHAIN_TYPE_EVM": 1, - "CHAIN_TYPE_SOLANA": 2, - } -) - -func (x ChainType) Enum() *ChainType { - p := new(ChainType) - *p = x - return p -} - -func (x ChainType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ChainType) Descriptor() protoreflect.EnumDescriptor { - return file_node_v1_node_proto_enumTypes[0].Descriptor() -} - -func (ChainType) Type() protoreflect.EnumType { - return &file_node_v1_node_proto_enumTypes[0] -} - -func (x ChainType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ChainType.Descriptor instead. -func (ChainType) EnumDescriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{0} -} - -// ArchiveState represents the archived state of the node. -type ArchiveState int32 - -const ( - ArchiveState_ARCHIVE_STATE_UNSPECIFIED ArchiveState = 0 - ArchiveState_ARCHIVE_STATE_ARCHIVED ArchiveState = 1 - ArchiveState_ARCHIVE_STATE_ACTIVE ArchiveState = 2 -) - -// Enum value maps for ArchiveState. -var ( - ArchiveState_name = map[int32]string{ - 0: "ARCHIVE_STATE_UNSPECIFIED", - 1: "ARCHIVE_STATE_ARCHIVED", - 2: "ARCHIVE_STATE_ACTIVE", - } - ArchiveState_value = map[string]int32{ - "ARCHIVE_STATE_UNSPECIFIED": 0, - "ARCHIVE_STATE_ARCHIVED": 1, - "ARCHIVE_STATE_ACTIVE": 2, - } -) - -func (x ArchiveState) Enum() *ArchiveState { - p := new(ArchiveState) - *p = x - return p -} - -func (x ArchiveState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ArchiveState) Descriptor() protoreflect.EnumDescriptor { - return file_node_v1_node_proto_enumTypes[1].Descriptor() -} - -func (ArchiveState) Type() protoreflect.EnumType { - return &file_node_v1_node_proto_enumTypes[1] -} - -func (x ArchiveState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ArchiveState.Descriptor instead. -func (ArchiveState) EnumDescriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{1} -} - -// Node represents a node within the Job Distributor system. -type Node struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier for the node. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Human-readable name for the node. - PublicKey string `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // Public key used for secure communications. - IsEnabled bool `protobuf:"varint,4,opt,name=is_enabled,json=isEnabled,proto3" json:"is_enabled,omitempty"` // Indicates if the node is currently enabled. - IsConnected bool `protobuf:"varint,5,opt,name=is_connected,json=isConnected,proto3" json:"is_connected,omitempty"` // Indicates if the node is currently connected to the network. - Labels []*ptypes.Label `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty"` // Set of labels associated with the node. - CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Timestamp when the node was created. - UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Timestamp when the node was last updated. - ArchivedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=archived_at,json=archivedAt,proto3" json:"archived_at,omitempty"` // Timestamp when the node was archived. -} - -func (x *Node) Reset() { - *x = Node{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Node) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Node) ProtoMessage() {} - -func (x *Node) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Node.ProtoReflect.Descriptor instead. -func (*Node) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{0} -} - -func (x *Node) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Node) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Node) GetPublicKey() string { - if x != nil { - return x.PublicKey - } - return "" -} - -func (x *Node) GetIsEnabled() bool { - if x != nil { - return x.IsEnabled - } - return false -} - -func (x *Node) GetIsConnected() bool { - if x != nil { - return x.IsConnected - } - return false -} - -func (x *Node) GetLabels() []*ptypes.Label { - if x != nil { - return x.Labels - } - return nil -} - -func (x *Node) GetCreatedAt() *timestamppb.Timestamp { - if x != nil { - return x.CreatedAt - } - return nil -} - -func (x *Node) GetUpdatedAt() *timestamppb.Timestamp { - if x != nil { - return x.UpdatedAt - } - return nil -} - -func (x *Node) GetArchivedAt() *timestamppb.Timestamp { - if x != nil { - return x.ArchivedAt - } - return nil -} - -type Chain struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Type ChainType `protobuf:"varint,2,opt,name=type,proto3,enum=api.node.v1.ChainType" json:"type,omitempty"` -} - -func (x *Chain) Reset() { - *x = Chain{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Chain) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Chain) ProtoMessage() {} - -func (x *Chain) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Chain.ProtoReflect.Descriptor instead. -func (*Chain) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{1} -} - -func (x *Chain) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Chain) GetType() ChainType { - if x != nil { - return x.Type - } - return ChainType_CHAIN_TYPE_UNSPECIFIED -} - -type OCR1Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - IsBootstrap bool `protobuf:"varint,2,opt,name=is_bootstrap,json=isBootstrap,proto3" json:"is_bootstrap,omitempty"` - P2PKeyBundle *OCR1Config_P2PKeyBundle `protobuf:"bytes,3,opt,name=p2p_key_bundle,json=p2pKeyBundle,proto3" json:"p2p_key_bundle,omitempty"` - OcrKeyBundle *OCR1Config_OCRKeyBundle `protobuf:"bytes,4,opt,name=ocr_key_bundle,json=ocrKeyBundle,proto3" json:"ocr_key_bundle,omitempty"` - Multiaddr string `protobuf:"bytes,5,opt,name=multiaddr,proto3" json:"multiaddr,omitempty"` -} - -func (x *OCR1Config) Reset() { - *x = OCR1Config{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OCR1Config) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OCR1Config) ProtoMessage() {} - -func (x *OCR1Config) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OCR1Config.ProtoReflect.Descriptor instead. -func (*OCR1Config) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{2} -} - -func (x *OCR1Config) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *OCR1Config) GetIsBootstrap() bool { - if x != nil { - return x.IsBootstrap - } - return false -} - -func (x *OCR1Config) GetP2PKeyBundle() *OCR1Config_P2PKeyBundle { - if x != nil { - return x.P2PKeyBundle - } - return nil -} - -func (x *OCR1Config) GetOcrKeyBundle() *OCR1Config_OCRKeyBundle { - if x != nil { - return x.OcrKeyBundle - } - return nil -} - -func (x *OCR1Config) GetMultiaddr() string { - if x != nil { - return x.Multiaddr - } - return "" -} - -type OCR2Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - IsBootstrap bool `protobuf:"varint,2,opt,name=is_bootstrap,json=isBootstrap,proto3" json:"is_bootstrap,omitempty"` - P2PKeyBundle *OCR2Config_P2PKeyBundle `protobuf:"bytes,3,opt,name=p2p_key_bundle,json=p2pKeyBundle,proto3" json:"p2p_key_bundle,omitempty"` - OcrKeyBundle *OCR2Config_OCRKeyBundle `protobuf:"bytes,4,opt,name=ocr_key_bundle,json=ocrKeyBundle,proto3" json:"ocr_key_bundle,omitempty"` - Multiaddr string `protobuf:"bytes,5,opt,name=multiaddr,proto3" json:"multiaddr,omitempty"` - Plugins *OCR2Config_Plugins `protobuf:"bytes,6,opt,name=plugins,proto3" json:"plugins,omitempty"` - ForwarderAddress string `protobuf:"bytes,7,opt,name=forwarder_address,json=forwarderAddress,proto3" json:"forwarder_address,omitempty"` -} - -func (x *OCR2Config) Reset() { - *x = OCR2Config{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OCR2Config) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OCR2Config) ProtoMessage() {} - -func (x *OCR2Config) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OCR2Config.ProtoReflect.Descriptor instead. -func (*OCR2Config) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{3} -} - -func (x *OCR2Config) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *OCR2Config) GetIsBootstrap() bool { - if x != nil { - return x.IsBootstrap - } - return false -} - -func (x *OCR2Config) GetP2PKeyBundle() *OCR2Config_P2PKeyBundle { - if x != nil { - return x.P2PKeyBundle - } - return nil -} - -func (x *OCR2Config) GetOcrKeyBundle() *OCR2Config_OCRKeyBundle { - if x != nil { - return x.OcrKeyBundle - } - return nil -} - -func (x *OCR2Config) GetMultiaddr() string { - if x != nil { - return x.Multiaddr - } - return "" -} - -func (x *OCR2Config) GetPlugins() *OCR2Config_Plugins { - if x != nil { - return x.Plugins - } - return nil -} - -func (x *OCR2Config) GetForwarderAddress() string { - if x != nil { - return x.ForwarderAddress - } - return "" -} - -type ChainConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Chain *Chain `protobuf:"bytes,1,opt,name=chain,proto3" json:"chain,omitempty"` - AccountAddress string `protobuf:"bytes,2,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` - AdminAddress string `protobuf:"bytes,3,opt,name=admin_address,json=adminAddress,proto3" json:"admin_address,omitempty"` - Ocr1Config *OCR1Config `protobuf:"bytes,4,opt,name=ocr1_config,json=ocr1Config,proto3" json:"ocr1_config,omitempty"` - Ocr2Config *OCR2Config `protobuf:"bytes,5,opt,name=ocr2_config,json=ocr2Config,proto3" json:"ocr2_config,omitempty"` -} - -func (x *ChainConfig) Reset() { - *x = ChainConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ChainConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ChainConfig) ProtoMessage() {} - -func (x *ChainConfig) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ChainConfig.ProtoReflect.Descriptor instead. -func (*ChainConfig) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{4} -} - -func (x *ChainConfig) GetChain() *Chain { - if x != nil { - return x.Chain - } - return nil -} - -func (x *ChainConfig) GetAccountAddress() string { - if x != nil { - return x.AccountAddress - } - return "" -} - -func (x *ChainConfig) GetAdminAddress() string { - if x != nil { - return x.AdminAddress - } - return "" -} - -func (x *ChainConfig) GetOcr1Config() *OCR1Config { - if x != nil { - return x.Ocr1Config - } - return nil -} - -func (x *ChainConfig) GetOcr2Config() *OCR2Config { - if x != nil { - return x.Ocr2Config - } - return nil -} - -// CreateNodeRequest contains the information needed to create a new node. -type CreateNodeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Desired name for the node. - PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // Public key for the node. - Labels []*ptypes.Label `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty"` // Labels to associate with the node. -} - -func (x *CreateNodeRequest) Reset() { - *x = CreateNodeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CreateNodeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateNodeRequest) ProtoMessage() {} - -func (x *CreateNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateNodeRequest.ProtoReflect.Descriptor instead. -func (*CreateNodeRequest) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{5} -} - -func (x *CreateNodeRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *CreateNodeRequest) GetPublicKey() string { - if x != nil { - return x.PublicKey - } - return "" -} - -func (x *CreateNodeRequest) GetLabels() []*ptypes.Label { - if x != nil { - return x.Labels - } - return nil -} - -// CreateNodeResponse returns the newly created node. -type CreateNodeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Details of the newly created node. -} - -func (x *CreateNodeResponse) Reset() { - *x = CreateNodeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CreateNodeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateNodeResponse) ProtoMessage() {} - -func (x *CreateNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CreateNodeResponse.ProtoReflect.Descriptor instead. -func (*CreateNodeResponse) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{6} -} - -func (x *CreateNodeResponse) GetNode() *Node { - if x != nil { - return x.Node - } - return nil -} - -// GetNodeRequest is the request to retrieve a single node by its ID. -type GetNodeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier of the node to retrieve. -} - -func (x *GetNodeRequest) Reset() { - *x = GetNodeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetNodeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetNodeRequest) ProtoMessage() {} - -func (x *GetNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetNodeRequest.ProtoReflect.Descriptor instead. -func (*GetNodeRequest) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{7} -} - -func (x *GetNodeRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -// GetNodeResponse is the response containing the requested node. -type GetNodeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Details of the retrieved node. -} - -func (x *GetNodeResponse) Reset() { - *x = GetNodeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetNodeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetNodeResponse) ProtoMessage() {} - -func (x *GetNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetNodeResponse.ProtoReflect.Descriptor instead. -func (*GetNodeResponse) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{8} -} - -func (x *GetNodeResponse) GetNode() *Node { - if x != nil { - return x.Node - } - return nil -} - -// * -// ListNodesRequest is the request object for the ListNodes method. -// -// Provide a filter to return a subset of data. Nodes can be filtered by: -// - ids - A list of node ids. -// - archived - The archived state of the node. -// - selectors - A list of selectors to filter nodes by their labels. -// -// If no filter is provided, all nodes are returned. -type ListNodesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Filter *ListNodesRequest_Filter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` -} - -func (x *ListNodesRequest) Reset() { - *x = ListNodesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListNodesRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListNodesRequest) ProtoMessage() {} - -func (x *ListNodesRequest) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListNodesRequest.ProtoReflect.Descriptor instead. -func (*ListNodesRequest) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{9} -} - -func (x *ListNodesRequest) GetFilter() *ListNodesRequest_Filter { - if x != nil { - return x.Filter - } - return nil -} - -// * -// ListNodesResponse is the response object for the ListNodes method. -// -// It returns a list of nodes that match the filter criteria. -type ListNodesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Nodes []*Node `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` // List of nodes. -} - -func (x *ListNodesResponse) Reset() { - *x = ListNodesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListNodesResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListNodesResponse) ProtoMessage() {} - -func (x *ListNodesResponse) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListNodesResponse.ProtoReflect.Descriptor instead. -func (*ListNodesResponse) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{10} -} - -func (x *ListNodesResponse) GetNodes() []*Node { - if x != nil { - return x.Nodes - } - return nil -} - -// UpdateNodeRequest contains the information necessary to update a node. -type UpdateNodeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier of the node to update. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // New name for the node, if changing. - PublicKey string `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // New public key for the node, if changing. - Labels []*ptypes.Label `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty"` // New set of labels for the node, if changing. -} - -func (x *UpdateNodeRequest) Reset() { - *x = UpdateNodeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpdateNodeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateNodeRequest) ProtoMessage() {} - -func (x *UpdateNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateNodeRequest.ProtoReflect.Descriptor instead. -func (*UpdateNodeRequest) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{11} -} - -func (x *UpdateNodeRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *UpdateNodeRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *UpdateNodeRequest) GetPublicKey() string { - if x != nil { - return x.PublicKey - } - return "" -} - -func (x *UpdateNodeRequest) GetLabels() []*ptypes.Label { - if x != nil { - return x.Labels - } - return nil -} - -// UpdateNodeResponse returns the updated node. -type UpdateNodeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Updated node details. -} - -func (x *UpdateNodeResponse) Reset() { - *x = UpdateNodeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UpdateNodeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateNodeResponse) ProtoMessage() {} - -func (x *UpdateNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateNodeResponse.ProtoReflect.Descriptor instead. -func (*UpdateNodeResponse) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{12} -} - -func (x *UpdateNodeResponse) GetNode() *Node { - if x != nil { - return x.Node - } - return nil -} - -// ArchiveNodeRequest is used to mark a node as archived. -type ArchiveNodeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier of the node to archive. -} - -func (x *ArchiveNodeRequest) Reset() { - *x = ArchiveNodeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ArchiveNodeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ArchiveNodeRequest) ProtoMessage() {} - -func (x *ArchiveNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ArchiveNodeRequest.ProtoReflect.Descriptor instead. -func (*ArchiveNodeRequest) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{13} -} - -func (x *ArchiveNodeRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -// ArchiveNodeResponse returns the archived node. -type ArchiveNodeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Archived node details. -} - -func (x *ArchiveNodeResponse) Reset() { - *x = ArchiveNodeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ArchiveNodeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ArchiveNodeResponse) ProtoMessage() {} - -func (x *ArchiveNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ArchiveNodeResponse.ProtoReflect.Descriptor instead. -func (*ArchiveNodeResponse) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{14} -} - -func (x *ArchiveNodeResponse) GetNode() *Node { - if x != nil { - return x.Node - } - return nil -} - -// UnarchiveNodeRequest is used to reactivate an archived node. -type UnarchiveNodeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier of the node to unarchive. -} - -func (x *UnarchiveNodeRequest) Reset() { - *x = UnarchiveNodeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UnarchiveNodeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UnarchiveNodeRequest) ProtoMessage() {} - -func (x *UnarchiveNodeRequest) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UnarchiveNodeRequest.ProtoReflect.Descriptor instead. -func (*UnarchiveNodeRequest) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{15} -} - -func (x *UnarchiveNodeRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -// UnarchiveNodeResponse returns the unarchived node. -type UnarchiveNodeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Unarchived node details. -} - -func (x *UnarchiveNodeResponse) Reset() { - *x = UnarchiveNodeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UnarchiveNodeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UnarchiveNodeResponse) ProtoMessage() {} - -func (x *UnarchiveNodeResponse) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UnarchiveNodeResponse.ProtoReflect.Descriptor instead. -func (*UnarchiveNodeResponse) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{16} -} - -func (x *UnarchiveNodeResponse) GetNode() *Node { - if x != nil { - return x.Node - } - return nil -} - -type ListNodeChainConfigsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Filter *ListNodeChainConfigsRequest_Filter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` -} - -func (x *ListNodeChainConfigsRequest) Reset() { - *x = ListNodeChainConfigsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListNodeChainConfigsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListNodeChainConfigsRequest) ProtoMessage() {} - -func (x *ListNodeChainConfigsRequest) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListNodeChainConfigsRequest.ProtoReflect.Descriptor instead. -func (*ListNodeChainConfigsRequest) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{17} -} - -func (x *ListNodeChainConfigsRequest) GetFilter() *ListNodeChainConfigsRequest_Filter { - if x != nil { - return x.Filter - } - return nil -} - -type ListNodeChainConfigsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ChainConfigs []*ChainConfig `protobuf:"bytes,1,rep,name=chain_configs,json=chainConfigs,proto3" json:"chain_configs,omitempty"` -} - -func (x *ListNodeChainConfigsResponse) Reset() { - *x = ListNodeChainConfigsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListNodeChainConfigsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListNodeChainConfigsResponse) ProtoMessage() {} - -func (x *ListNodeChainConfigsResponse) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListNodeChainConfigsResponse.ProtoReflect.Descriptor instead. -func (*ListNodeChainConfigsResponse) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{18} -} - -func (x *ListNodeChainConfigsResponse) GetChainConfigs() []*ChainConfig { - if x != nil { - return x.ChainConfigs - } - return nil -} - -type OCR1Config_P2PKeyBundle struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PeerId string `protobuf:"bytes,1,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` - PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` -} - -func (x *OCR1Config_P2PKeyBundle) Reset() { - *x = OCR1Config_P2PKeyBundle{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OCR1Config_P2PKeyBundle) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OCR1Config_P2PKeyBundle) ProtoMessage() {} - -func (x *OCR1Config_P2PKeyBundle) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OCR1Config_P2PKeyBundle.ProtoReflect.Descriptor instead. -func (*OCR1Config_P2PKeyBundle) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{2, 0} -} - -func (x *OCR1Config_P2PKeyBundle) GetPeerId() string { - if x != nil { - return x.PeerId - } - return "" -} - -func (x *OCR1Config_P2PKeyBundle) GetPublicKey() string { - if x != nil { - return x.PublicKey - } - return "" -} - -type OCR1Config_OCRKeyBundle struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BundleId string `protobuf:"bytes,1,opt,name=bundle_id,json=bundleId,proto3" json:"bundle_id,omitempty"` - ConfigPublicKey string `protobuf:"bytes,2,opt,name=config_public_key,json=configPublicKey,proto3" json:"config_public_key,omitempty"` - OffchainPublicKey string `protobuf:"bytes,3,opt,name=offchain_public_key,json=offchainPublicKey,proto3" json:"offchain_public_key,omitempty"` - OnchainSigningAddress string `protobuf:"bytes,4,opt,name=onchain_signing_address,json=onchainSigningAddress,proto3" json:"onchain_signing_address,omitempty"` -} - -func (x *OCR1Config_OCRKeyBundle) Reset() { - *x = OCR1Config_OCRKeyBundle{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OCR1Config_OCRKeyBundle) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OCR1Config_OCRKeyBundle) ProtoMessage() {} - -func (x *OCR1Config_OCRKeyBundle) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OCR1Config_OCRKeyBundle.ProtoReflect.Descriptor instead. -func (*OCR1Config_OCRKeyBundle) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{2, 1} -} - -func (x *OCR1Config_OCRKeyBundle) GetBundleId() string { - if x != nil { - return x.BundleId - } - return "" -} - -func (x *OCR1Config_OCRKeyBundle) GetConfigPublicKey() string { - if x != nil { - return x.ConfigPublicKey - } - return "" -} - -func (x *OCR1Config_OCRKeyBundle) GetOffchainPublicKey() string { - if x != nil { - return x.OffchainPublicKey - } - return "" -} - -func (x *OCR1Config_OCRKeyBundle) GetOnchainSigningAddress() string { - if x != nil { - return x.OnchainSigningAddress - } - return "" -} - -type OCR2Config_P2PKeyBundle struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PeerId string `protobuf:"bytes,1,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` - PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` -} - -func (x *OCR2Config_P2PKeyBundle) Reset() { - *x = OCR2Config_P2PKeyBundle{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OCR2Config_P2PKeyBundle) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OCR2Config_P2PKeyBundle) ProtoMessage() {} - -func (x *OCR2Config_P2PKeyBundle) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OCR2Config_P2PKeyBundle.ProtoReflect.Descriptor instead. -func (*OCR2Config_P2PKeyBundle) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{3, 0} -} - -func (x *OCR2Config_P2PKeyBundle) GetPeerId() string { - if x != nil { - return x.PeerId - } - return "" -} - -func (x *OCR2Config_P2PKeyBundle) GetPublicKey() string { - if x != nil { - return x.PublicKey - } - return "" -} - -type OCR2Config_OCRKeyBundle struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BundleId string `protobuf:"bytes,1,opt,name=bundle_id,json=bundleId,proto3" json:"bundle_id,omitempty"` - ConfigPublicKey string `protobuf:"bytes,2,opt,name=config_public_key,json=configPublicKey,proto3" json:"config_public_key,omitempty"` - OffchainPublicKey string `protobuf:"bytes,3,opt,name=offchain_public_key,json=offchainPublicKey,proto3" json:"offchain_public_key,omitempty"` - OnchainSigningAddress string `protobuf:"bytes,4,opt,name=onchain_signing_address,json=onchainSigningAddress,proto3" json:"onchain_signing_address,omitempty"` -} - -func (x *OCR2Config_OCRKeyBundle) Reset() { - *x = OCR2Config_OCRKeyBundle{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OCR2Config_OCRKeyBundle) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OCR2Config_OCRKeyBundle) ProtoMessage() {} - -func (x *OCR2Config_OCRKeyBundle) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OCR2Config_OCRKeyBundle.ProtoReflect.Descriptor instead. -func (*OCR2Config_OCRKeyBundle) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{3, 1} -} - -func (x *OCR2Config_OCRKeyBundle) GetBundleId() string { - if x != nil { - return x.BundleId - } - return "" -} - -func (x *OCR2Config_OCRKeyBundle) GetConfigPublicKey() string { - if x != nil { - return x.ConfigPublicKey - } - return "" -} - -func (x *OCR2Config_OCRKeyBundle) GetOffchainPublicKey() string { - if x != nil { - return x.OffchainPublicKey - } - return "" -} - -func (x *OCR2Config_OCRKeyBundle) GetOnchainSigningAddress() string { - if x != nil { - return x.OnchainSigningAddress - } - return "" -} - -type OCR2Config_Plugins struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Commit bool `protobuf:"varint,1,opt,name=commit,proto3" json:"commit,omitempty"` - Execute bool `protobuf:"varint,2,opt,name=execute,proto3" json:"execute,omitempty"` - Median bool `protobuf:"varint,3,opt,name=median,proto3" json:"median,omitempty"` - Mercury bool `protobuf:"varint,4,opt,name=mercury,proto3" json:"mercury,omitempty"` - Rebalancer bool `protobuf:"varint,5,opt,name=rebalancer,proto3" json:"rebalancer,omitempty"` -} - -func (x *OCR2Config_Plugins) Reset() { - *x = OCR2Config_Plugins{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OCR2Config_Plugins) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OCR2Config_Plugins) ProtoMessage() {} - -func (x *OCR2Config_Plugins) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use OCR2Config_Plugins.ProtoReflect.Descriptor instead. -func (*OCR2Config_Plugins) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{3, 2} -} - -func (x *OCR2Config_Plugins) GetCommit() bool { - if x != nil { - return x.Commit - } - return false -} - -func (x *OCR2Config_Plugins) GetExecute() bool { - if x != nil { - return x.Execute - } - return false -} - -func (x *OCR2Config_Plugins) GetMedian() bool { - if x != nil { - return x.Median - } - return false -} - -func (x *OCR2Config_Plugins) GetMercury() bool { - if x != nil { - return x.Mercury - } - return false -} - -func (x *OCR2Config_Plugins) GetRebalancer() bool { - if x != nil { - return x.Rebalancer - } - return false -} - -type ListNodesRequest_Filter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` - Archived ArchiveState `protobuf:"varint,2,opt,name=archived,proto3,enum=api.node.v1.ArchiveState" json:"archived,omitempty"` - Selectors []*ptypes.Selector `protobuf:"bytes,3,rep,name=selectors,proto3" json:"selectors,omitempty"` -} - -func (x *ListNodesRequest_Filter) Reset() { - *x = ListNodesRequest_Filter{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListNodesRequest_Filter) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListNodesRequest_Filter) ProtoMessage() {} - -func (x *ListNodesRequest_Filter) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListNodesRequest_Filter.ProtoReflect.Descriptor instead. -func (*ListNodesRequest_Filter) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{9, 0} -} - -func (x *ListNodesRequest_Filter) GetIds() []string { - if x != nil { - return x.Ids - } - return nil -} - -func (x *ListNodesRequest_Filter) GetArchived() ArchiveState { - if x != nil { - return x.Archived - } - return ArchiveState_ARCHIVE_STATE_UNSPECIFIED -} - -func (x *ListNodesRequest_Filter) GetSelectors() []*ptypes.Selector { - if x != nil { - return x.Selectors - } - return nil -} - -type ListNodeChainConfigsRequest_Filter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` -} - -func (x *ListNodeChainConfigsRequest_Filter) Reset() { - *x = ListNodeChainConfigsRequest_Filter{} - if protoimpl.UnsafeEnabled { - mi := &file_node_v1_node_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ListNodeChainConfigsRequest_Filter) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListNodeChainConfigsRequest_Filter) ProtoMessage() {} - -func (x *ListNodeChainConfigsRequest_Filter) ProtoReflect() protoreflect.Message { - mi := &file_node_v1_node_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ListNodeChainConfigsRequest_Filter.ProtoReflect.Descriptor instead. -func (*ListNodeChainConfigsRequest_Filter) Descriptor() ([]byte, []int) { - return file_node_v1_node_proto_rawDescGZIP(), []int{17, 0} -} - -func (x *ListNodeChainConfigsRequest_Filter) GetNodeId() string { - if x != nil { - return x.NodeId - } - return "" -} - -var File_node_v1_node_proto protoreflect.FileDescriptor - -var file_node_v1_node_proto_rawDesc = []byte{ - 0x0a, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, - 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x19, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe8, 0x02, - 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, - 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, - 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x61, - 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x22, 0x43, 0x0a, 0x05, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, - 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x89, 0x04, - 0x0a, 0x0a, 0x4f, 0x43, 0x52, 0x31, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x6f, - 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, - 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x12, 0x4a, 0x0a, 0x0e, 0x70, 0x32, 0x70, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4f, 0x43, 0x52, 0x31, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x32, 0x50, 0x4b, 0x65, - 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x0c, 0x70, 0x32, 0x70, 0x4b, 0x65, 0x79, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x6f, 0x63, 0x72, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x31, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x43, 0x52, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x52, 0x0c, 0x6f, 0x63, 0x72, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64, 0x64, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64, 0x64, 0x72, 0x1a, - 0x46, 0x0a, 0x0c, 0x50, 0x32, 0x50, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, - 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x1a, 0xbf, 0x01, 0x0a, 0x0c, 0x4f, 0x43, 0x52, 0x4b, - 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, - 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, - 0x6f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, - 0x79, 0x12, 0x36, 0x0a, 0x17, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x69, 0x67, - 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x15, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x69, - 0x6e, 0x67, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x81, 0x06, 0x0a, 0x0a, 0x4f, 0x43, - 0x52, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, - 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x42, 0x6f, 0x6f, 0x74, - 0x73, 0x74, 0x72, 0x61, 0x70, 0x12, 0x4a, 0x0a, 0x0e, 0x70, 0x32, 0x70, 0x5f, 0x6b, 0x65, 0x79, - 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x32, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x32, 0x50, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x52, 0x0c, 0x70, 0x32, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x12, 0x4a, 0x0a, 0x0e, 0x6f, 0x63, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x32, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x4f, 0x43, 0x52, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, - 0x0c, 0x6f, 0x63, 0x72, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64, 0x64, 0x72, 0x12, 0x39, 0x0a, 0x07, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x32, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x07, 0x70, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x1a, 0x46, 0x0a, 0x0c, 0x50, 0x32, 0x50, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x1a, 0xbf, 0x01, 0x0a, 0x0c, - 0x4f, 0x43, 0x52, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x50, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x17, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, - 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x53, - 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x8d, 0x01, - 0x0a, 0x07, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x65, 0x64, - 0x69, 0x61, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x72, 0x63, 0x75, 0x72, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x65, 0x72, 0x63, 0x75, 0x72, 0x79, 0x12, 0x1e, 0x0a, - 0x0a, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0a, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x22, 0xf9, 0x01, - 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x28, 0x0a, - 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x52, 0x05, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x6f, 0x63, 0x72, 0x31, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x31, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6f, 0x63, 0x72, 0x31, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x38, 0x0a, 0x0b, 0x6f, 0x63, 0x72, 0x32, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6f, - 0x63, 0x72, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x70, 0x0a, 0x11, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, - 0x79, 0x12, 0x28, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x3b, 0x0a, 0x12, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x20, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x38, 0x0a, 0x0f, 0x47, 0x65, - 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, - 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x84, 0x01, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x03, 0x69, 0x64, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x09, 0x73, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x52, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x3c, - 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x80, 0x01, 0x0a, - 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, - 0x3b, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x24, 0x0a, 0x12, - 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x22, 0x3c, 0x0a, 0x13, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x22, 0x26, 0x0a, 0x14, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x15, 0x55, 0x6e, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, - 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x43, - 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x1a, 0x21, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, - 0x64, 0x65, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x73, 0x2a, 0x52, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, - 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x56, 0x4d, 0x10, 0x01, - 0x12, 0x15, 0x0a, 0x11, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, - 0x4f, 0x4c, 0x41, 0x4e, 0x41, 0x10, 0x02, 0x2a, 0x63, 0x0a, 0x0c, 0x41, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x52, 0x43, 0x48, 0x49, - 0x56, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, - 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, - 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x32, 0xe2, 0x04, 0x0a, - 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x52, 0x0a, 0x0b, - 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x4f, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1e, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x46, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x09, 0x4c, 0x69, 0x73, - 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4e, - 0x6f, 0x64, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, - 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, - 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4e, - 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, - 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x4f, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1e, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x42, 0x09, 0x5a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_node_v1_node_proto_rawDescOnce sync.Once - file_node_v1_node_proto_rawDescData = file_node_v1_node_proto_rawDesc -) - -func file_node_v1_node_proto_rawDescGZIP() []byte { - file_node_v1_node_proto_rawDescOnce.Do(func() { - file_node_v1_node_proto_rawDescData = protoimpl.X.CompressGZIP(file_node_v1_node_proto_rawDescData) - }) - return file_node_v1_node_proto_rawDescData -} - -var file_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 26) -var file_node_v1_node_proto_goTypes = []interface{}{ - (ChainType)(0), // 0: api.node.v1.ChainType - (ArchiveState)(0), // 1: api.node.v1.ArchiveState - (*Node)(nil), // 2: api.node.v1.Node - (*Chain)(nil), // 3: api.node.v1.Chain - (*OCR1Config)(nil), // 4: api.node.v1.OCR1Config - (*OCR2Config)(nil), // 5: api.node.v1.OCR2Config - (*ChainConfig)(nil), // 6: api.node.v1.ChainConfig - (*CreateNodeRequest)(nil), // 7: api.node.v1.CreateNodeRequest - (*CreateNodeResponse)(nil), // 8: api.node.v1.CreateNodeResponse - (*GetNodeRequest)(nil), // 9: api.node.v1.GetNodeRequest - (*GetNodeResponse)(nil), // 10: api.node.v1.GetNodeResponse - (*ListNodesRequest)(nil), // 11: api.node.v1.ListNodesRequest - (*ListNodesResponse)(nil), // 12: api.node.v1.ListNodesResponse - (*UpdateNodeRequest)(nil), // 13: api.node.v1.UpdateNodeRequest - (*UpdateNodeResponse)(nil), // 14: api.node.v1.UpdateNodeResponse - (*ArchiveNodeRequest)(nil), // 15: api.node.v1.ArchiveNodeRequest - (*ArchiveNodeResponse)(nil), // 16: api.node.v1.ArchiveNodeResponse - (*UnarchiveNodeRequest)(nil), // 17: api.node.v1.UnarchiveNodeRequest - (*UnarchiveNodeResponse)(nil), // 18: api.node.v1.UnarchiveNodeResponse - (*ListNodeChainConfigsRequest)(nil), // 19: api.node.v1.ListNodeChainConfigsRequest - (*ListNodeChainConfigsResponse)(nil), // 20: api.node.v1.ListNodeChainConfigsResponse - (*OCR1Config_P2PKeyBundle)(nil), // 21: api.node.v1.OCR1Config.P2PKeyBundle - (*OCR1Config_OCRKeyBundle)(nil), // 22: api.node.v1.OCR1Config.OCRKeyBundle - (*OCR2Config_P2PKeyBundle)(nil), // 23: api.node.v1.OCR2Config.P2PKeyBundle - (*OCR2Config_OCRKeyBundle)(nil), // 24: api.node.v1.OCR2Config.OCRKeyBundle - (*OCR2Config_Plugins)(nil), // 25: api.node.v1.OCR2Config.Plugins - (*ListNodesRequest_Filter)(nil), // 26: api.node.v1.ListNodesRequest.Filter - (*ListNodeChainConfigsRequest_Filter)(nil), // 27: api.node.v1.ListNodeChainConfigsRequest.Filter - (*ptypes.Label)(nil), // 28: api.label.Label - (*timestamppb.Timestamp)(nil), // 29: google.protobuf.Timestamp - (*ptypes.Selector)(nil), // 30: api.label.Selector -} -var file_node_v1_node_proto_depIdxs = []int32{ - 28, // 0: api.node.v1.Node.labels:type_name -> api.label.Label - 29, // 1: api.node.v1.Node.created_at:type_name -> google.protobuf.Timestamp - 29, // 2: api.node.v1.Node.updated_at:type_name -> google.protobuf.Timestamp - 29, // 3: api.node.v1.Node.archived_at:type_name -> google.protobuf.Timestamp - 0, // 4: api.node.v1.Chain.type:type_name -> api.node.v1.ChainType - 21, // 5: api.node.v1.OCR1Config.p2p_key_bundle:type_name -> api.node.v1.OCR1Config.P2PKeyBundle - 22, // 6: api.node.v1.OCR1Config.ocr_key_bundle:type_name -> api.node.v1.OCR1Config.OCRKeyBundle - 23, // 7: api.node.v1.OCR2Config.p2p_key_bundle:type_name -> api.node.v1.OCR2Config.P2PKeyBundle - 24, // 8: api.node.v1.OCR2Config.ocr_key_bundle:type_name -> api.node.v1.OCR2Config.OCRKeyBundle - 25, // 9: api.node.v1.OCR2Config.plugins:type_name -> api.node.v1.OCR2Config.Plugins - 3, // 10: api.node.v1.ChainConfig.chain:type_name -> api.node.v1.Chain - 4, // 11: api.node.v1.ChainConfig.ocr1_config:type_name -> api.node.v1.OCR1Config - 5, // 12: api.node.v1.ChainConfig.ocr2_config:type_name -> api.node.v1.OCR2Config - 28, // 13: api.node.v1.CreateNodeRequest.labels:type_name -> api.label.Label - 2, // 14: api.node.v1.CreateNodeResponse.node:type_name -> api.node.v1.Node - 2, // 15: api.node.v1.GetNodeResponse.node:type_name -> api.node.v1.Node - 26, // 16: api.node.v1.ListNodesRequest.filter:type_name -> api.node.v1.ListNodesRequest.Filter - 2, // 17: api.node.v1.ListNodesResponse.nodes:type_name -> api.node.v1.Node - 28, // 18: api.node.v1.UpdateNodeRequest.labels:type_name -> api.label.Label - 2, // 19: api.node.v1.UpdateNodeResponse.node:type_name -> api.node.v1.Node - 2, // 20: api.node.v1.ArchiveNodeResponse.node:type_name -> api.node.v1.Node - 2, // 21: api.node.v1.UnarchiveNodeResponse.node:type_name -> api.node.v1.Node - 27, // 22: api.node.v1.ListNodeChainConfigsRequest.filter:type_name -> api.node.v1.ListNodeChainConfigsRequest.Filter - 6, // 23: api.node.v1.ListNodeChainConfigsResponse.chain_configs:type_name -> api.node.v1.ChainConfig - 1, // 24: api.node.v1.ListNodesRequest.Filter.archived:type_name -> api.node.v1.ArchiveState - 30, // 25: api.node.v1.ListNodesRequest.Filter.selectors:type_name -> api.label.Selector - 15, // 26: api.node.v1.NodeService.ArchiveNode:input_type -> api.node.v1.ArchiveNodeRequest - 7, // 27: api.node.v1.NodeService.CreateNode:input_type -> api.node.v1.CreateNodeRequest - 9, // 28: api.node.v1.NodeService.GetNode:input_type -> api.node.v1.GetNodeRequest - 11, // 29: api.node.v1.NodeService.ListNodes:input_type -> api.node.v1.ListNodesRequest - 19, // 30: api.node.v1.NodeService.ListNodeChainConfigs:input_type -> api.node.v1.ListNodeChainConfigsRequest - 17, // 31: api.node.v1.NodeService.UnarchiveNode:input_type -> api.node.v1.UnarchiveNodeRequest - 13, // 32: api.node.v1.NodeService.UpdateNode:input_type -> api.node.v1.UpdateNodeRequest - 16, // 33: api.node.v1.NodeService.ArchiveNode:output_type -> api.node.v1.ArchiveNodeResponse - 8, // 34: api.node.v1.NodeService.CreateNode:output_type -> api.node.v1.CreateNodeResponse - 10, // 35: api.node.v1.NodeService.GetNode:output_type -> api.node.v1.GetNodeResponse - 12, // 36: api.node.v1.NodeService.ListNodes:output_type -> api.node.v1.ListNodesResponse - 20, // 37: api.node.v1.NodeService.ListNodeChainConfigs:output_type -> api.node.v1.ListNodeChainConfigsResponse - 18, // 38: api.node.v1.NodeService.UnarchiveNode:output_type -> api.node.v1.UnarchiveNodeResponse - 14, // 39: api.node.v1.NodeService.UpdateNode:output_type -> api.node.v1.UpdateNodeResponse - 33, // [33:40] is the sub-list for method output_type - 26, // [26:33] is the sub-list for method input_type - 26, // [26:26] is the sub-list for extension type_name - 26, // [26:26] is the sub-list for extension extendee - 0, // [0:26] is the sub-list for field type_name -} - -func init() { file_node_v1_node_proto_init() } -func file_node_v1_node_proto_init() { - if File_node_v1_node_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_node_v1_node_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Node); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Chain); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OCR1Config); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OCR2Config); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChainConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateNodeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateNodeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetNodeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetNodeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNodesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNodesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateNodeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateNodeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArchiveNodeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ArchiveNodeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnarchiveNodeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnarchiveNodeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNodeChainConfigsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNodeChainConfigsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OCR1Config_P2PKeyBundle); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OCR1Config_OCRKeyBundle); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OCR2Config_P2PKeyBundle); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OCR2Config_OCRKeyBundle); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OCR2Config_Plugins); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNodesRequest_Filter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_node_v1_node_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListNodeChainConfigsRequest_Filter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_node_v1_node_proto_rawDesc, - NumEnums: 2, - NumMessages: 26, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_node_v1_node_proto_goTypes, - DependencyIndexes: file_node_v1_node_proto_depIdxs, - EnumInfos: file_node_v1_node_proto_enumTypes, - MessageInfos: file_node_v1_node_proto_msgTypes, - }.Build() - File_node_v1_node_proto = out.File - file_node_v1_node_proto_rawDesc = nil - file_node_v1_node_proto_goTypes = nil - file_node_v1_node_proto_depIdxs = nil -} diff --git a/integration-tests/deployment/jd/node/v1/node_grpc.pb.go b/integration-tests/deployment/jd/node/v1/node_grpc.pb.go deleted file mode 100644 index c209ba718a..0000000000 --- a/integration-tests/deployment/jd/node/v1/node_grpc.pb.go +++ /dev/null @@ -1,343 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.25.3 -// source: node/v1/node.proto - -package v1 - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - NodeService_ArchiveNode_FullMethodName = "/api.node.v1.NodeService/ArchiveNode" - NodeService_CreateNode_FullMethodName = "/api.node.v1.NodeService/CreateNode" - NodeService_GetNode_FullMethodName = "/api.node.v1.NodeService/GetNode" - NodeService_ListNodes_FullMethodName = "/api.node.v1.NodeService/ListNodes" - NodeService_ListNodeChainConfigs_FullMethodName = "/api.node.v1.NodeService/ListNodeChainConfigs" - NodeService_UnarchiveNode_FullMethodName = "/api.node.v1.NodeService/UnarchiveNode" - NodeService_UpdateNode_FullMethodName = "/api.node.v1.NodeService/UpdateNode" -) - -// NodeServiceClient is the client API for NodeService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type NodeServiceClient interface { - // ArchiveNode marks a node as archived, disabling any active operations on it. - ArchiveNode(ctx context.Context, in *ArchiveNodeRequest, opts ...grpc.CallOption) (*ArchiveNodeResponse, error) - // CreateNode adds a new node to the system with specified details. - CreateNode(ctx context.Context, in *CreateNodeRequest, opts ...grpc.CallOption) (*CreateNodeResponse, error) - // GetNode retrieves the details of a node by its unique identifier. - GetNode(ctx context.Context, in *GetNodeRequest, opts ...grpc.CallOption) (*GetNodeResponse, error) - // ListNodes returns a list of nodes, optionally filtered by the provided criteria. - ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error) - ListNodeChainConfigs(ctx context.Context, in *ListNodeChainConfigsRequest, opts ...grpc.CallOption) (*ListNodeChainConfigsResponse, error) - // UnarchiveNode reactivates an archived node, allowing operations to resume. - UnarchiveNode(ctx context.Context, in *UnarchiveNodeRequest, opts ...grpc.CallOption) (*UnarchiveNodeResponse, error) - // UpdateNode updates the details of an existing node. - UpdateNode(ctx context.Context, in *UpdateNodeRequest, opts ...grpc.CallOption) (*UpdateNodeResponse, error) -} - -type nodeServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewNodeServiceClient(cc grpc.ClientConnInterface) NodeServiceClient { - return &nodeServiceClient{cc} -} - -func (c *nodeServiceClient) ArchiveNode(ctx context.Context, in *ArchiveNodeRequest, opts ...grpc.CallOption) (*ArchiveNodeResponse, error) { - out := new(ArchiveNodeResponse) - err := c.cc.Invoke(ctx, NodeService_ArchiveNode_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *nodeServiceClient) CreateNode(ctx context.Context, in *CreateNodeRequest, opts ...grpc.CallOption) (*CreateNodeResponse, error) { - out := new(CreateNodeResponse) - err := c.cc.Invoke(ctx, NodeService_CreateNode_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *nodeServiceClient) GetNode(ctx context.Context, in *GetNodeRequest, opts ...grpc.CallOption) (*GetNodeResponse, error) { - out := new(GetNodeResponse) - err := c.cc.Invoke(ctx, NodeService_GetNode_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *nodeServiceClient) ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error) { - out := new(ListNodesResponse) - err := c.cc.Invoke(ctx, NodeService_ListNodes_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *nodeServiceClient) ListNodeChainConfigs(ctx context.Context, in *ListNodeChainConfigsRequest, opts ...grpc.CallOption) (*ListNodeChainConfigsResponse, error) { - out := new(ListNodeChainConfigsResponse) - err := c.cc.Invoke(ctx, NodeService_ListNodeChainConfigs_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *nodeServiceClient) UnarchiveNode(ctx context.Context, in *UnarchiveNodeRequest, opts ...grpc.CallOption) (*UnarchiveNodeResponse, error) { - out := new(UnarchiveNodeResponse) - err := c.cc.Invoke(ctx, NodeService_UnarchiveNode_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *nodeServiceClient) UpdateNode(ctx context.Context, in *UpdateNodeRequest, opts ...grpc.CallOption) (*UpdateNodeResponse, error) { - out := new(UpdateNodeResponse) - err := c.cc.Invoke(ctx, NodeService_UpdateNode_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// NodeServiceServer is the server API for NodeService service. -// All implementations must embed UnimplementedNodeServiceServer -// for forward compatibility -type NodeServiceServer interface { - // ArchiveNode marks a node as archived, disabling any active operations on it. - ArchiveNode(context.Context, *ArchiveNodeRequest) (*ArchiveNodeResponse, error) - // CreateNode adds a new node to the system with specified details. - CreateNode(context.Context, *CreateNodeRequest) (*CreateNodeResponse, error) - // GetNode retrieves the details of a node by its unique identifier. - GetNode(context.Context, *GetNodeRequest) (*GetNodeResponse, error) - // ListNodes returns a list of nodes, optionally filtered by the provided criteria. - ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) - ListNodeChainConfigs(context.Context, *ListNodeChainConfigsRequest) (*ListNodeChainConfigsResponse, error) - // UnarchiveNode reactivates an archived node, allowing operations to resume. - UnarchiveNode(context.Context, *UnarchiveNodeRequest) (*UnarchiveNodeResponse, error) - // UpdateNode updates the details of an existing node. - UpdateNode(context.Context, *UpdateNodeRequest) (*UpdateNodeResponse, error) - mustEmbedUnimplementedNodeServiceServer() -} - -// UnimplementedNodeServiceServer must be embedded to have forward compatible implementations. -type UnimplementedNodeServiceServer struct { -} - -func (UnimplementedNodeServiceServer) ArchiveNode(context.Context, *ArchiveNodeRequest) (*ArchiveNodeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ArchiveNode not implemented") -} -func (UnimplementedNodeServiceServer) CreateNode(context.Context, *CreateNodeRequest) (*CreateNodeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method CreateNode not implemented") -} -func (UnimplementedNodeServiceServer) GetNode(context.Context, *GetNodeRequest) (*GetNodeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetNode not implemented") -} -func (UnimplementedNodeServiceServer) ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListNodes not implemented") -} -func (UnimplementedNodeServiceServer) ListNodeChainConfigs(context.Context, *ListNodeChainConfigsRequest) (*ListNodeChainConfigsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ListNodeChainConfigs not implemented") -} -func (UnimplementedNodeServiceServer) UnarchiveNode(context.Context, *UnarchiveNodeRequest) (*UnarchiveNodeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UnarchiveNode not implemented") -} -func (UnimplementedNodeServiceServer) UpdateNode(context.Context, *UpdateNodeRequest) (*UpdateNodeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateNode not implemented") -} -func (UnimplementedNodeServiceServer) mustEmbedUnimplementedNodeServiceServer() {} - -// UnsafeNodeServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to NodeServiceServer will -// result in compilation errors. -type UnsafeNodeServiceServer interface { - mustEmbedUnimplementedNodeServiceServer() -} - -func RegisterNodeServiceServer(s grpc.ServiceRegistrar, srv NodeServiceServer) { - s.RegisterService(&NodeService_ServiceDesc, srv) -} - -func _NodeService_ArchiveNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ArchiveNodeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NodeServiceServer).ArchiveNode(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: NodeService_ArchiveNode_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).ArchiveNode(ctx, req.(*ArchiveNodeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _NodeService_CreateNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateNodeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NodeServiceServer).CreateNode(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: NodeService_CreateNode_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).CreateNode(ctx, req.(*CreateNodeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _NodeService_GetNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetNodeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NodeServiceServer).GetNode(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: NodeService_GetNode_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).GetNode(ctx, req.(*GetNodeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _NodeService_ListNodes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListNodesRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NodeServiceServer).ListNodes(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: NodeService_ListNodes_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).ListNodes(ctx, req.(*ListNodesRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _NodeService_ListNodeChainConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListNodeChainConfigsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NodeServiceServer).ListNodeChainConfigs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: NodeService_ListNodeChainConfigs_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).ListNodeChainConfigs(ctx, req.(*ListNodeChainConfigsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _NodeService_UnarchiveNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UnarchiveNodeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NodeServiceServer).UnarchiveNode(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: NodeService_UnarchiveNode_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).UnarchiveNode(ctx, req.(*UnarchiveNodeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _NodeService_UpdateNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateNodeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(NodeServiceServer).UpdateNode(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: NodeService_UpdateNode_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).UpdateNode(ctx, req.(*UpdateNodeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// NodeService_ServiceDesc is the grpc.ServiceDesc for NodeService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var NodeService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "api.node.v1.NodeService", - HandlerType: (*NodeServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "ArchiveNode", - Handler: _NodeService_ArchiveNode_Handler, - }, - { - MethodName: "CreateNode", - Handler: _NodeService_CreateNode_Handler, - }, - { - MethodName: "GetNode", - Handler: _NodeService_GetNode_Handler, - }, - { - MethodName: "ListNodes", - Handler: _NodeService_ListNodes_Handler, - }, - { - MethodName: "ListNodeChainConfigs", - Handler: _NodeService_ListNodeChainConfigs_Handler, - }, - { - MethodName: "UnarchiveNode", - Handler: _NodeService_UnarchiveNode_Handler, - }, - { - MethodName: "UpdateNode", - Handler: _NodeService_UpdateNode_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "node/v1/node.proto", -} diff --git a/integration-tests/deployment/jd/shared/ptypes/label.pb.go b/integration-tests/deployment/jd/shared/ptypes/label.pb.go deleted file mode 100644 index e8195bd6c3..0000000000 --- a/integration-tests/deployment/jd/shared/ptypes/label.pb.go +++ /dev/null @@ -1,311 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.29.0 -// protoc v4.25.3 -// source: shared/ptypes/label.proto - -package ptypes - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// SelectorOp defines the operation to be used in a selector -type SelectorOp int32 - -const ( - SelectorOp_EQ SelectorOp = 0 - SelectorOp_NOT_EQ SelectorOp = 1 - SelectorOp_IN SelectorOp = 2 - SelectorOp_NOT_IN SelectorOp = 3 - SelectorOp_EXIST SelectorOp = 4 - SelectorOp_NOT_EXIST SelectorOp = 5 -) - -// Enum value maps for SelectorOp. -var ( - SelectorOp_name = map[int32]string{ - 0: "EQ", - 1: "NOT_EQ", - 2: "IN", - 3: "NOT_IN", - 4: "EXIST", - 5: "NOT_EXIST", - } - SelectorOp_value = map[string]int32{ - "EQ": 0, - "NOT_EQ": 1, - "IN": 2, - "NOT_IN": 3, - "EXIST": 4, - "NOT_EXIST": 5, - } -) - -func (x SelectorOp) Enum() *SelectorOp { - p := new(SelectorOp) - *p = x - return p -} - -func (x SelectorOp) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SelectorOp) Descriptor() protoreflect.EnumDescriptor { - return file_shared_ptypes_label_proto_enumTypes[0].Descriptor() -} - -func (SelectorOp) Type() protoreflect.EnumType { - return &file_shared_ptypes_label_proto_enumTypes[0] -} - -func (x SelectorOp) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SelectorOp.Descriptor instead. -func (SelectorOp) EnumDescriptor() ([]byte, []int) { - return file_shared_ptypes_label_proto_rawDescGZIP(), []int{0} -} - -// Label defines a label as a key value pair -type Label struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` -} - -func (x *Label) Reset() { - *x = Label{} - if protoimpl.UnsafeEnabled { - mi := &file_shared_ptypes_label_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Label) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Label) ProtoMessage() {} - -func (x *Label) ProtoReflect() protoreflect.Message { - mi := &file_shared_ptypes_label_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Label.ProtoReflect.Descriptor instead. -func (*Label) Descriptor() ([]byte, []int) { - return file_shared_ptypes_label_proto_rawDescGZIP(), []int{0} -} - -func (x *Label) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *Label) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value - } - return "" -} - -// Selector defines a selector as a key value pair with an operation -type Selector struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Op SelectorOp `protobuf:"varint,2,opt,name=op,proto3,enum=api.label.SelectorOp" json:"op,omitempty"` - Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` -} - -func (x *Selector) Reset() { - *x = Selector{} - if protoimpl.UnsafeEnabled { - mi := &file_shared_ptypes_label_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Selector) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Selector) ProtoMessage() {} - -func (x *Selector) ProtoReflect() protoreflect.Message { - mi := &file_shared_ptypes_label_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Selector.ProtoReflect.Descriptor instead. -func (*Selector) Descriptor() ([]byte, []int) { - return file_shared_ptypes_label_proto_rawDescGZIP(), []int{1} -} - -func (x *Selector) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *Selector) GetOp() SelectorOp { - if x != nil { - return x.Op - } - return SelectorOp_EQ -} - -func (x *Selector) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value - } - return "" -} - -var File_shared_ptypes_label_proto protoreflect.FileDescriptor - -var file_shared_ptypes_label_proto_rawDesc = []byte{ - 0x0a, 0x19, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x69, - 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x3e, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x68, 0x0a, 0x08, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x19, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x2a, 0x4e, 0x0a, 0x0a, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4f, 0x70, 0x12, 0x06, - 0x0a, 0x02, 0x45, 0x51, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x51, - 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, - 0x54, 0x5f, 0x49, 0x4e, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, - 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x05, - 0x42, 0x47, 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, - 0x6d, 0x61, 0x72, 0x74, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6b, 0x69, 0x74, 0x2f, - 0x6a, 0x6f, 0x62, 0x2d, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, -} - -var ( - file_shared_ptypes_label_proto_rawDescOnce sync.Once - file_shared_ptypes_label_proto_rawDescData = file_shared_ptypes_label_proto_rawDesc -) - -func file_shared_ptypes_label_proto_rawDescGZIP() []byte { - file_shared_ptypes_label_proto_rawDescOnce.Do(func() { - file_shared_ptypes_label_proto_rawDescData = protoimpl.X.CompressGZIP(file_shared_ptypes_label_proto_rawDescData) - }) - return file_shared_ptypes_label_proto_rawDescData -} - -var file_shared_ptypes_label_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_shared_ptypes_label_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_shared_ptypes_label_proto_goTypes = []interface{}{ - (SelectorOp)(0), // 0: api.label.SelectorOp - (*Label)(nil), // 1: api.label.Label - (*Selector)(nil), // 2: api.label.Selector -} -var file_shared_ptypes_label_proto_depIdxs = []int32{ - 0, // 0: api.label.Selector.op:type_name -> api.label.SelectorOp - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name -} - -func init() { file_shared_ptypes_label_proto_init() } -func file_shared_ptypes_label_proto_init() { - if File_shared_ptypes_label_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_shared_ptypes_label_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Label); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_shared_ptypes_label_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Selector); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_shared_ptypes_label_proto_msgTypes[0].OneofWrappers = []interface{}{} - file_shared_ptypes_label_proto_msgTypes[1].OneofWrappers = []interface{}{} - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_shared_ptypes_label_proto_rawDesc, - NumEnums: 1, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_shared_ptypes_label_proto_goTypes, - DependencyIndexes: file_shared_ptypes_label_proto_depIdxs, - EnumInfos: file_shared_ptypes_label_proto_enumTypes, - MessageInfos: file_shared_ptypes_label_proto_msgTypes, - }.Build() - File_shared_ptypes_label_proto = out.File - file_shared_ptypes_label_proto_rawDesc = nil - file_shared_ptypes_label_proto_goTypes = nil - file_shared_ptypes_label_proto_depIdxs = nil -} From dfb157e732e18aa38dd075a4b6017fe61451b52a Mon Sep 17 00:00:00 2001 From: connorwstein Date: Wed, 14 Aug 2024 12:14:52 -0400 Subject: [PATCH 21/42] Deployment test working --- integration-tests/deployment/ccip/deploy.go | 63 +- .../deployment/ccip/deploy_home_chain.go | 53 +- integration-tests/deployment/ccip/jobs.go | 112 +- .../ccip/migrations/1_initial_deploy_test.go | 8 +- integration-tests/deployment/ccip/state.go | 1 + .../deployment/jd/job/v1/job.pb.go | 1767 +++++++++++++++++ .../deployment/jd/job/v1/job_grpc.pb.go | 345 ++++ .../deployment/jd/node/v1/node.pb.go | 1650 +++++++++++++++ .../deployment/jd/node/v1/node_grpc.pb.go | 187 ++ .../deployment/jd/node/v1/shared.pb.go | 239 +++ .../deployment/jd/shared/ptypes/label.pb.go | 311 +++ .../deployment/memory/environment.go | 7 +- .../deployment/memory/job_client.go | 70 +- integration-tests/deployment/memory/node.go | 20 +- integration-tests/go.mod | 57 +- integration-tests/go.sum | 152 +- integration-tests/load/go.mod | 52 +- integration-tests/load/go.sum | 134 +- 18 files changed, 4945 insertions(+), 283 deletions(-) create mode 100644 integration-tests/deployment/jd/job/v1/job.pb.go create mode 100644 integration-tests/deployment/jd/job/v1/job_grpc.pb.go create mode 100644 integration-tests/deployment/jd/node/v1/node.pb.go create mode 100644 integration-tests/deployment/jd/node/v1/node_grpc.pb.go create mode 100644 integration-tests/deployment/jd/node/v1/shared.pb.go create mode 100644 integration-tests/deployment/jd/shared/ptypes/label.pb.go diff --git a/integration-tests/deployment/ccip/deploy.go b/integration-tests/deployment/ccip/deploy.go index 8f058dbe2c..0b1191eb42 100644 --- a/integration-tests/deployment/ccip/deploy.go +++ b/integration-tests/deployment/ccip/deploy.go @@ -3,13 +3,13 @@ package ccipdeployment import ( "math/big" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + owner_helpers "github.com/smartcontractkit/ccip-owner-contracts/gethwrappers" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/ccip_config" - owner_helpers "github.com/smartcontractkit/ccip-owner-contracts/gethwrappers" - "github.com/smartcontractkit/chainlink-common/pkg/logger" "github.com/smartcontractkit/chainlink/integration-tests/deployment" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/arm_proxy_contract" @@ -114,10 +114,28 @@ type DeployCCIPContractConfig struct { // Deployment produces an address book of everything it deployed. func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) (deployment.AddressBook, error) { ab := deployment.NewMemoryAddressBook() - for sel, chain := range e.Chains { - if c.HomeChainSel == sel { - } + nodes, err := NodeInfo(e.NodeIDs, e.Offchain) + if err != nil { + e.Logger.Errorw("Failed to get node info", "err", err) + return ab, err + } + cap, err := c.CapabilityRegistry[c.HomeChainSel].GetHashedCapabilityId( + &bind.CallOpts{}, CapabilityLabelledName, CapabilityVersion) + if err != nil { + e.Logger.Errorw("Failed to get hashed capability id", "err", err) + return ab, err + } + // Signal to CR that our nodes support CCIP capability. + if err := AddNodes( + c.CapabilityRegistry[c.HomeChainSel], + e.Chains[c.HomeChainSel], + nodes.PeerIDs(c.HomeChainSel), // Doesn't actually matter which sel here + [][32]byte{cap}, + ); err != nil { + return ab, err + } + for sel, chain := range e.Chains { // TODO: Still waiting for RMNRemote/RMNHome contracts etc. mockARM, err := deployContract(e.Logger, chain, ab, func(chain deployment.Chain) ContractDeploy[*mock_arm_contract.MockARMContract] { @@ -334,7 +352,7 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( offRamp, err := deployContract(e.Logger, chain, ab, func(chain deployment.Chain) ContractDeploy[*evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp] { - offRamp, tx, _, err2 := evm_2_evm_multi_offramp.DeployEVM2EVMMultiOffRamp( + offRampAddr, tx, offRamp, err2 := evm_2_evm_multi_offramp.DeployEVM2EVMMultiOffRamp( chain.DeployerKey, chain.Client, evm_2_evm_multi_offramp.EVM2EVMMultiOffRampStaticConfig{ @@ -352,7 +370,7 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( []evm_2_evm_multi_offramp.EVM2EVMMultiOffRampSourceChainConfigArgs{}, ) return ContractDeploy[*evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp]{ - offRamp, nil, tx, EVM2EVMMultiOffRamp_1_6_0, err2, + offRampAddr, offRamp, tx, EVM2EVMMultiOffRamp_1_6_0, err2, } }) if err != nil { @@ -380,6 +398,37 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( e.Logger.Errorw("Failed to confirm price registry authorized caller update", "err", err) return ab, err } + + // Add chain config for each chain. + _, err = AddChainConfig(e.Logger, + e.Chains[c.HomeChainSel], + c.CCIPOnChainState.CCIPConfig[c.HomeChainSel], + chain.Selector, + nodes.PeerIDs(chain.Selector), + uint8(len(nodes)/3)) + if err != nil { + return ab, err + } + + // For each chain, we create a DON on the home chain. + if err := AddDON(e.Logger, + cap, + c.CapabilityRegistry[c.HomeChainSel], + c.CCIPConfig[c.HomeChainSel], + offRamp.Contract, + chain, + e.Chains[c.HomeChainSel], + uint8(len(nodes)/3), + nodes.BootstrapPeerIDs(chain.Selector)[0], + nodes.PeerIDs(chain.Selector), + nodes, + ); err != nil { + e.Logger.Errorw("Failed to add DON", "err", err) + return ab, err + } } + + // Next steps: add initial configuration to cap registry and to offramps. + return ab, nil } diff --git a/integration-tests/deployment/ccip/deploy_home_chain.go b/integration-tests/deployment/ccip/deploy_home_chain.go index 484191223a..a1fd42580a 100644 --- a/integration-tests/deployment/ccip/deploy_home_chain.go +++ b/integration-tests/deployment/ccip/deploy_home_chain.go @@ -4,27 +4,27 @@ import ( "bytes" "context" "errors" + "fmt" "sort" "time" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/rpc" confighelper2 "github.com/smartcontractkit/libocr/offchainreporting2plus/confighelper" "github.com/smartcontractkit/libocr/offchainreporting2plus/ocr3confighelper" - "github.com/smartcontractkit/chainlink/integration-tests/deployment" - "github.com/smartcontractkit/chainlink-ccip/chainconfig" "github.com/smartcontractkit/chainlink-ccip/pluginconfig" commonconfig "github.com/smartcontractkit/chainlink-common/pkg/config" + "github.com/smartcontractkit/chainlink-common/pkg/logger" "github.com/smartcontractkit/chainlink-common/pkg/types/ccipocr3" - "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ccip_integration_tests/integrationhelpers" + "github.com/smartcontractkit/chainlink/integration-tests/deployment" cctypes "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/types" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/ccip_config" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_offramp" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/ocr3_config_encoder" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/keystone/generated/capabilities_registry" - "github.com/smartcontractkit/chainlink/v2/core/logger" ) const ( @@ -156,6 +156,17 @@ func AddNodes( return nil } +func SetupConfigInfo(chainSelector uint64, readers [][32]byte, fChain uint8, cfg []byte) ccip_config.CCIPConfigTypesChainConfigInfo { + return ccip_config.CCIPConfigTypesChainConfigInfo{ + ChainSelector: chainSelector, + ChainConfig: ccip_config.CCIPConfigTypesChainConfig{ + Readers: readers, + FChain: fChain, + Config: cfg, + }, + } +} + func AddChainConfig( lggr logger.Logger, h deployment.Chain, @@ -176,7 +187,7 @@ func AddChainConfig( if err != nil { return ccip_config.CCIPConfigTypesChainConfigInfo{}, err } - chainConfig := integrationhelpers.SetupConfigInfo(chainSelector, p2pIDs, f, encodedExtraChainConfig) + chainConfig := SetupConfigInfo(chainSelector, p2pIDs, f, encodedExtraChainConfig) inputConfig := []ccip_config.CCIPConfigTypesChainConfigInfo{ chainConfig, } @@ -192,22 +203,32 @@ func AddChainConfig( func AddDON( lggr logger.Logger, - capReg *capabilities_registry.CapabilitiesRegistry, ccipCapabilityID [32]byte, - chainSelector uint64, + capReg *capabilities_registry.CapabilitiesRegistry, ccipConfig *ccip_config.CCIPConfig, - dest deployment.Chain, offRamp *evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp, + dest deployment.Chain, home deployment.Chain, f uint8, bootstrapP2PID [32]byte, p2pIDs [][32]byte, - oracles []confighelper2.OracleIdentityExtra, + nodes []Node, ) error { + sortP2PIDS(p2pIDs) // Get OCR3 Config from helper var schedule []int - for range oracles { + var oracles []confighelper2.OracleIdentityExtra + for _, node := range nodes { schedule = append(schedule, 1) + cfg := node.selToOCRConfig[dest.Selector] + oracles = append(oracles, confighelper2.OracleIdentityExtra{ + OracleIdentity: confighelper2.OracleIdentity{ + OnchainPublicKey: cfg.OnchainPublicKey, + TransmitAccount: cfg.TransmitAccount, + OffchainPublicKey: cfg.OffchainPublicKey, + PeerID: cfg.PeerID.String(), + }, ConfigEncryptionPublicKey: cfg.ConfigEncryptionPublicKey, + }) } tabi, err := ocr3_config_encoder.IOCR3ConfigEncoderMetaData.GetAbi() @@ -281,7 +302,7 @@ func AddDON( ocr3Configs = append(ocr3Configs, ocr3_config_encoder.CCIPConfigTypesOCR3Config{ PluginType: uint8(pluginType), - ChainSelector: chainSelector, + ChainSelector: dest.Selector, F: configF, OffchainConfigVersion: offchainConfigVersion, OfframpAddress: offRamp.Address().Bytes(), @@ -311,6 +332,9 @@ func AddDON( Config: encodedConfigs, }, }, false, false, f) + if err != nil { + return fmt.Errorf("%s", err.(rpc.DataError).ErrorData().(string)) + } if err := home.Confirm(tx.Hash()); err != nil { return err } @@ -373,7 +397,7 @@ func AddDON( tx, err = offRamp.SetOCR3Configs(dest.DeployerKey, offrampOCR3Configs) if err != nil { - return err + return fmt.Errorf("%s", err.(rpc.DataError).ErrorData().(string)) } if err := home.Confirm(tx.Hash()); err != nil { return err @@ -384,7 +408,8 @@ func AddDON( Context: context.Background(), }, uint8(pluginType)) if err != nil { - return err + //return err + return fmt.Errorf("%s", err.(rpc.DataError).ErrorData().(string)) } // TODO: assertions //require.Equalf(t, offrampOCR3Configs[pluginType].ConfigDigest, ocrConfig.ConfigInfo.ConfigDigest, "%s OCR3 config digest mismatch", pluginType.String()) @@ -394,7 +419,7 @@ func AddDON( // // only commit will set signers, exec doesn't need them. // require.Equalf(t, offrampOCR3Configs[pluginType].Signers, ocrConfig.Signers, "%s OCR3 config signers mismatch", pluginType.String()) //} - //require.Equalf(t, offrampOCR3Configs[pluginType].Transmitters, ocrConfig.Transmitters, "%s OCR3 config transmitters mismatch", pluginType.String()) + //require.Equalf(t, offrampOCR3Configs[pluginType].TransmittersByEVMChainID, ocrConfig.TransmittersByEVMChainID, "%s OCR3 config transmitters mismatch", pluginType.String()) } lggr.Infof("set ocr3 config on the offramp, signers: %+v, transmitters: %+v", signerAddresses, transmitterAddresses) diff --git a/integration-tests/deployment/ccip/jobs.go b/integration-tests/deployment/ccip/jobs.go index 4901c276dd..e89f987d2c 100644 --- a/integration-tests/deployment/ccip/jobs.go +++ b/integration-tests/deployment/ccip/jobs.go @@ -3,15 +3,125 @@ package ccipdeployment import ( "context" "fmt" + "strconv" - nodev1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/node/v1" + "github.com/ethereum/go-ethereum/common" + chainsel "github.com/smartcontractkit/chain-selectors" + ocrtypes "github.com/smartcontractkit/libocr/offchainreporting2/types" + "github.com/smartcontractkit/libocr/offchainreporting2plus/types" "github.com/smartcontractkit/chainlink/integration-tests/deployment" + nodev1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/node/v1" + "github.com/smartcontractkit/chainlink/v2/core/services/keystore/keys/p2pkey" "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/validate" "github.com/smartcontractkit/chainlink/v2/core/services/relay" ) +type OCRConfig struct { + OffchainPublicKey ocrtypes.OffchainPublicKey + // For EVM-chains, this an *address*. + OnchainPublicKey ocrtypes.OnchainPublicKey + PeerID p2pkey.PeerID + TransmitAccount ocrtypes.Account + ConfigEncryptionPublicKey types.ConfigEncryptionPublicKey + IsBootstrap bool + MultiAddr string // TODO: type +} + +type Nodes []Node + +func (n Nodes) PeerIDs(chainSel uint64) [][32]byte { + var peerIDs [][32]byte + for _, node := range n { + cfg := node.selToOCRConfig[chainSel] + // NOTE: Assume same peerID for all chains. + // Might make sense to change proto as peerID is 1-1 with node? + peerIDs = append(peerIDs, cfg.PeerID) + } + return peerIDs +} + +func (n Nodes) BootstrapPeerIDs(chainSel uint64) [][32]byte { + var peerIDs [][32]byte + for _, node := range n { + cfg := node.selToOCRConfig[chainSel] + if !cfg.IsBootstrap { + continue + } + peerIDs = append(peerIDs, cfg.PeerID) + } + return peerIDs +} + +// OffchainPublicKey types.OffchainPublicKey +// // For EVM-chains, this an *address*. +// OnchainPublicKey types.OnchainPublicKey +// PeerID string +// TransmitAccount types.Account +type Node struct { + selToOCRConfig map[uint64]OCRConfig +} + +func MustPeerIDFromString(s string) p2pkey.PeerID { + p := p2pkey.PeerID{} + if err := p.UnmarshalString(s); err != nil { + panic(err) + } + return p +} + +// Gathers all the node info through JD required to be able to set +// OCR config for example. +func NodeInfo(nodeIDs []string, oc deployment.OffchainClient) (Nodes, error) { + var nodes []Node + for _, node := range nodeIDs { + // TODO: Filter should accept multiple nodes + nodeChainConfigs, err := oc.ListNodeChainConfigs(context.Background(), &nodev1.ListNodeChainConfigsRequest{Filter: &nodev1.ListNodeChainConfigsRequest_Filter{ + NodeId: node, + }}) + if err != nil { + return nil, err + } + selToOCRConfig := make(map[uint64]OCRConfig) + for _, chainConfig := range nodeChainConfigs.ChainConfigs { + if chainConfig.Chain.Type == nodev1.ChainType_CHAIN_TYPE_SOLANA { + // Note supported for CCIP yet. + continue + } + evmChainID, err := strconv.Atoi(chainConfig.Chain.Id) + if err != nil { + return nil, err + } + sel, err := chainsel.SelectorFromChainId(uint64(evmChainID)) + if err != nil { + return nil, err + } + b := common.Hex2Bytes(chainConfig.Ocr2Config.OcrKeyBundle.OffchainPublicKey) + var opk ocrtypes.OffchainPublicKey + copy(opk[:], b) + + b = common.Hex2Bytes(chainConfig.Ocr2Config.OcrKeyBundle.ConfigPublicKey) + var cpk types.ConfigEncryptionPublicKey + copy(cpk[:], b) + + selToOCRConfig[sel] = OCRConfig{ + OffchainPublicKey: opk, + OnchainPublicKey: common.HexToAddress(chainConfig.Ocr2Config.OcrKeyBundle.OnchainSigningAddress).Bytes(), + PeerID: MustPeerIDFromString(chainConfig.Ocr2Config.P2PKeyBundle.PeerId), + TransmitAccount: ocrtypes.Account(chainConfig.AccountAddress), + ConfigEncryptionPublicKey: cpk, + IsBootstrap: chainConfig.Ocr2Config.IsBootstrap, + MultiAddr: chainConfig.Ocr2Config.Multiaddr, + } + } + nodes = append(nodes, Node{ + selToOCRConfig: selToOCRConfig, + }) + } + return nodes, nil +} + // In our case, the only address needed is the cap registry which is actually an env var. // and will pre-exist for our deployment. So the job specs only depend on the environment operators. func NewCCIPJobSpecs(nodeIds []string, oc deployment.OffchainClient) (map[string][]string, error) { diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index 19c9a88bb0..eb895df8cd 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -52,8 +52,14 @@ func Test0001_InitialDeploy(t *testing.T) { Contract: capReg, }, }) + state, err := ccipdeployment.GenerateOnchainState(e, ab) + require.NoError(t, err) // Apply migration - output, err := Apply0001(e, ccipdeployment.DeployCCIPContractConfig{}) + output, err := Apply0001(e, ccipdeployment.DeployCCIPContractConfig{ + HomeChainSel: homeChainSel, + // Capreg/config already exist. + CCIPOnChainState: state, + }) require.NoError(t, err) // Apply the jobs. diff --git a/integration-tests/deployment/ccip/state.go b/integration-tests/deployment/ccip/state.go index 5899df171a..286163c3d0 100644 --- a/integration-tests/deployment/ccip/state.go +++ b/integration-tests/deployment/ccip/state.go @@ -156,6 +156,7 @@ func GenerateOnchainState(e deployment.Environment, ab deployment.AddressBook) ( McmsAddrs: make(map[uint64]common.Address), Timelocks: make(map[uint64]*owner_wrappers.RBACTimelock), CapabilityRegistry: make(map[uint64]*capabilities_registry.CapabilitiesRegistry), + CCIPConfig: make(map[uint64]*ccip_config.CCIPConfig), } // Get all the onchain state addresses, err := ab.Addresses() diff --git a/integration-tests/deployment/jd/job/v1/job.pb.go b/integration-tests/deployment/jd/job/v1/job.pb.go new file mode 100644 index 0000000000..deaf1ccf30 --- /dev/null +++ b/integration-tests/deployment/jd/job/v1/job.pb.go @@ -0,0 +1,1767 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.0 +// protoc v4.25.3 +// source: job/v1/job.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// ProposalStatus defines the possible states of a job proposal. +type ProposalStatus int32 + +const ( + ProposalStatus_PROPOSAL_STATUS_UNSPECIFIED ProposalStatus = 0 + ProposalStatus_PROPOSAL_STATUS_PROPOSED ProposalStatus = 1 // Proposal has been made but not yet decided upon. + ProposalStatus_PROPOSAL_STATUS_APPROVED ProposalStatus = 2 // Proposal has been accepted. + ProposalStatus_PROPOSAL_STATUS_REJECTED ProposalStatus = 3 // Proposal has been rejected. + ProposalStatus_PROPOSAL_STATUS_CANCELLED ProposalStatus = 4 // Proposal has been cancelled. + ProposalStatus_PROPOSAL_STATUS_PENDING ProposalStatus = 5 // Proposal is pending review. + ProposalStatus_PROPOSAL_STATUS_REVOKED ProposalStatus = 6 // Proposal has been revoked after being proposed. +) + +// Enum value maps for ProposalStatus. +var ( + ProposalStatus_name = map[int32]string{ + 0: "PROPOSAL_STATUS_UNSPECIFIED", + 1: "PROPOSAL_STATUS_PROPOSED", + 2: "PROPOSAL_STATUS_APPROVED", + 3: "PROPOSAL_STATUS_REJECTED", + 4: "PROPOSAL_STATUS_CANCELLED", + 5: "PROPOSAL_STATUS_PENDING", + 6: "PROPOSAL_STATUS_REVOKED", + } + ProposalStatus_value = map[string]int32{ + "PROPOSAL_STATUS_UNSPECIFIED": 0, + "PROPOSAL_STATUS_PROPOSED": 1, + "PROPOSAL_STATUS_APPROVED": 2, + "PROPOSAL_STATUS_REJECTED": 3, + "PROPOSAL_STATUS_CANCELLED": 4, + "PROPOSAL_STATUS_PENDING": 5, + "PROPOSAL_STATUS_REVOKED": 6, + } +) + +func (x ProposalStatus) Enum() *ProposalStatus { + p := new(ProposalStatus) + *p = x + return p +} + +func (x ProposalStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ProposalStatus) Descriptor() protoreflect.EnumDescriptor { + return file_job_v1_job_proto_enumTypes[0].Descriptor() +} + +func (ProposalStatus) Type() protoreflect.EnumType { + return &file_job_v1_job_proto_enumTypes[0] +} + +func (x ProposalStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ProposalStatus.Descriptor instead. +func (ProposalStatus) EnumDescriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{0} +} + +// ProposalDeliveryStatus defines the delivery status of the proposal to the node. +type ProposalDeliveryStatus int32 + +const ( + ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_UNSPECIFIED ProposalDeliveryStatus = 0 + ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_DELIVERED ProposalDeliveryStatus = 1 // Delivered to the node. + ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_ACKNOWLEDGED ProposalDeliveryStatus = 2 // Acknowledged by the node. + ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_FAILED ProposalDeliveryStatus = 3 // Delivery failed. +) + +// Enum value maps for ProposalDeliveryStatus. +var ( + ProposalDeliveryStatus_name = map[int32]string{ + 0: "PROPOSAL_DELIVERY_STATUS_UNSPECIFIED", + 1: "PROPOSAL_DELIVERY_STATUS_DELIVERED", + 2: "PROPOSAL_DELIVERY_STATUS_ACKNOWLEDGED", + 3: "PROPOSAL_DELIVERY_STATUS_FAILED", + } + ProposalDeliveryStatus_value = map[string]int32{ + "PROPOSAL_DELIVERY_STATUS_UNSPECIFIED": 0, + "PROPOSAL_DELIVERY_STATUS_DELIVERED": 1, + "PROPOSAL_DELIVERY_STATUS_ACKNOWLEDGED": 2, + "PROPOSAL_DELIVERY_STATUS_FAILED": 3, + } +) + +func (x ProposalDeliveryStatus) Enum() *ProposalDeliveryStatus { + p := new(ProposalDeliveryStatus) + *p = x + return p +} + +func (x ProposalDeliveryStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ProposalDeliveryStatus) Descriptor() protoreflect.EnumDescriptor { + return file_job_v1_job_proto_enumTypes[1].Descriptor() +} + +func (ProposalDeliveryStatus) Type() protoreflect.EnumType { + return &file_job_v1_job_proto_enumTypes[1] +} + +func (x ProposalDeliveryStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ProposalDeliveryStatus.Descriptor instead. +func (ProposalDeliveryStatus) EnumDescriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{1} +} + +// Job represents the structured data of a job within the system. +type Job struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier for the job. + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` // Universally unique identifier for the job. + NodeId string `protobuf:"bytes,3,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` // ID of the node associated with this job. + ProposalIds []string `protobuf:"bytes,4,rep,name=proposal_ids,json=proposalIds,proto3" json:"proposal_ids,omitempty"` // List of proposal IDs associated with this job. + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Timestamp when the job was created. + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Timestamp when the job was last updated. + DeletedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"` // Timestamp when the job was deleted, if applicable. +} + +func (x *Job) Reset() { + *x = Job{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Job) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Job) ProtoMessage() {} + +func (x *Job) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Job.ProtoReflect.Descriptor instead. +func (*Job) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{0} +} + +func (x *Job) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Job) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" +} + +func (x *Job) GetNodeId() string { + if x != nil { + return x.NodeId + } + return "" +} + +func (x *Job) GetProposalIds() []string { + if x != nil { + return x.ProposalIds + } + return nil +} + +func (x *Job) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Job) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Job) GetDeletedAt() *timestamppb.Timestamp { + if x != nil { + return x.DeletedAt + } + return nil +} + +// Proposal represents a job proposal. +type Proposal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier for the proposal. + Version int64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` // Version number of the proposal. + Status ProposalStatus `protobuf:"varint,3,opt,name=status,proto3,enum=api.job.v1.ProposalStatus" json:"status,omitempty"` // Current status of the proposal. + DeliveryStatus ProposalDeliveryStatus `protobuf:"varint,4,opt,name=delivery_status,json=deliveryStatus,proto3,enum=api.job.v1.ProposalDeliveryStatus" json:"delivery_status,omitempty"` // Delivery status of the proposal. + Spec string `protobuf:"bytes,5,opt,name=spec,proto3" json:"spec,omitempty"` // Specification of the job proposed. + JobId string `protobuf:"bytes,6,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"` // ID of the job associated with this proposal. + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Timestamp when the proposal was created. + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Timestamp when the proposal was last updated. + AckedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=acked_at,json=ackedAt,proto3,oneof" json:"acked_at,omitempty"` // Timestamp when the proposal was acknowledged. + ResponseReceivedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=response_received_at,json=responseReceivedAt,proto3,oneof" json:"response_received_at,omitempty"` // Timestamp when a response was received. +} + +func (x *Proposal) Reset() { + *x = Proposal{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Proposal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Proposal) ProtoMessage() {} + +func (x *Proposal) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Proposal.ProtoReflect.Descriptor instead. +func (*Proposal) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{1} +} + +func (x *Proposal) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Proposal) GetVersion() int64 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *Proposal) GetStatus() ProposalStatus { + if x != nil { + return x.Status + } + return ProposalStatus_PROPOSAL_STATUS_UNSPECIFIED +} + +func (x *Proposal) GetDeliveryStatus() ProposalDeliveryStatus { + if x != nil { + return x.DeliveryStatus + } + return ProposalDeliveryStatus_PROPOSAL_DELIVERY_STATUS_UNSPECIFIED +} + +func (x *Proposal) GetSpec() string { + if x != nil { + return x.Spec + } + return "" +} + +func (x *Proposal) GetJobId() string { + if x != nil { + return x.JobId + } + return "" +} + +func (x *Proposal) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Proposal) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Proposal) GetAckedAt() *timestamppb.Timestamp { + if x != nil { + return x.AckedAt + } + return nil +} + +func (x *Proposal) GetResponseReceivedAt() *timestamppb.Timestamp { + if x != nil { + return x.ResponseReceivedAt + } + return nil +} + +// GetJobRequest specifies the criteria for retrieving a job. +type GetJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to IdOneof: + // + // *GetJobRequest_Id + // *GetJobRequest_Uuid + IdOneof isGetJobRequest_IdOneof `protobuf_oneof:"id_oneof"` +} + +func (x *GetJobRequest) Reset() { + *x = GetJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetJobRequest) ProtoMessage() {} + +func (x *GetJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetJobRequest.ProtoReflect.Descriptor instead. +func (*GetJobRequest) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{2} +} + +func (m *GetJobRequest) GetIdOneof() isGetJobRequest_IdOneof { + if m != nil { + return m.IdOneof + } + return nil +} + +func (x *GetJobRequest) GetId() string { + if x, ok := x.GetIdOneof().(*GetJobRequest_Id); ok { + return x.Id + } + return "" +} + +func (x *GetJobRequest) GetUuid() string { + if x, ok := x.GetIdOneof().(*GetJobRequest_Uuid); ok { + return x.Uuid + } + return "" +} + +type isGetJobRequest_IdOneof interface { + isGetJobRequest_IdOneof() +} + +type GetJobRequest_Id struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3,oneof"` // Unique identifier of the job. +} + +type GetJobRequest_Uuid struct { + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3,oneof"` // Universally unique identifier of the job. +} + +func (*GetJobRequest_Id) isGetJobRequest_IdOneof() {} + +func (*GetJobRequest_Uuid) isGetJobRequest_IdOneof() {} + +// GetJobResponse contains the job details. +type GetJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Job *Job `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` // Details of the retrieved job. +} + +func (x *GetJobResponse) Reset() { + *x = GetJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetJobResponse) ProtoMessage() {} + +func (x *GetJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetJobResponse.ProtoReflect.Descriptor instead. +func (*GetJobResponse) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{3} +} + +func (x *GetJobResponse) GetJob() *Job { + if x != nil { + return x.Job + } + return nil +} + +// GetProposalRequest specifies the criteria for retrieving a proposal. +type GetProposalRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier of the proposal to retrieve. +} + +func (x *GetProposalRequest) Reset() { + *x = GetProposalRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetProposalRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetProposalRequest) ProtoMessage() {} + +func (x *GetProposalRequest) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetProposalRequest.ProtoReflect.Descriptor instead. +func (*GetProposalRequest) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{4} +} + +func (x *GetProposalRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// GetProposalResponse contains the proposal details. +type GetProposalResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Proposal *Proposal `protobuf:"bytes,1,opt,name=proposal,proto3" json:"proposal,omitempty"` // Details of the retrieved proposal. +} + +func (x *GetProposalResponse) Reset() { + *x = GetProposalResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetProposalResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetProposalResponse) ProtoMessage() {} + +func (x *GetProposalResponse) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetProposalResponse.ProtoReflect.Descriptor instead. +func (*GetProposalResponse) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{5} +} + +func (x *GetProposalResponse) GetProposal() *Proposal { + if x != nil { + return x.Proposal + } + return nil +} + +// ListJobsRequest specifies filters for listing jobs. +type ListJobsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Filter *ListJobsRequest_Filter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` // Filters applied to the job listing. +} + +func (x *ListJobsRequest) Reset() { + *x = ListJobsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListJobsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListJobsRequest) ProtoMessage() {} + +func (x *ListJobsRequest) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListJobsRequest.ProtoReflect.Descriptor instead. +func (*ListJobsRequest) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{6} +} + +func (x *ListJobsRequest) GetFilter() *ListJobsRequest_Filter { + if x != nil { + return x.Filter + } + return nil +} + +// ListJobsResponse contains a list of jobs that match the filters. +type ListJobsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Jobs []*Job `protobuf:"bytes,1,rep,name=jobs,proto3" json:"jobs,omitempty"` // List of jobs. +} + +func (x *ListJobsResponse) Reset() { + *x = ListJobsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListJobsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListJobsResponse) ProtoMessage() {} + +func (x *ListJobsResponse) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListJobsResponse.ProtoReflect.Descriptor instead. +func (*ListJobsResponse) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{7} +} + +func (x *ListJobsResponse) GetJobs() []*Job { + if x != nil { + return x.Jobs + } + return nil +} + +// ListProposalsRequest specifies filters for listing proposals. +type ListProposalsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Filter *ListProposalsRequest_Filter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` // Filters applied to the proposal listing. +} + +func (x *ListProposalsRequest) Reset() { + *x = ListProposalsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListProposalsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListProposalsRequest) ProtoMessage() {} + +func (x *ListProposalsRequest) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListProposalsRequest.ProtoReflect.Descriptor instead. +func (*ListProposalsRequest) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{8} +} + +func (x *ListProposalsRequest) GetFilter() *ListProposalsRequest_Filter { + if x != nil { + return x.Filter + } + return nil +} + +// ListProposalsResponse contains a list of proposals that match the filters. +type ListProposalsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Proposals []*Proposal `protobuf:"bytes,1,rep,name=proposals,proto3" json:"proposals,omitempty"` // List of proposals. +} + +func (x *ListProposalsResponse) Reset() { + *x = ListProposalsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListProposalsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListProposalsResponse) ProtoMessage() {} + +func (x *ListProposalsResponse) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListProposalsResponse.ProtoReflect.Descriptor instead. +func (*ListProposalsResponse) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{9} +} + +func (x *ListProposalsResponse) GetProposals() []*Proposal { + if x != nil { + return x.Proposals + } + return nil +} + +// ProposeJobRequest contains the information needed to submit a new job proposal. +type ProposeJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` // ID of the node to which the job is proposed. + Spec string `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"` // Specification of the job being proposed. +} + +func (x *ProposeJobRequest) Reset() { + *x = ProposeJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProposeJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProposeJobRequest) ProtoMessage() {} + +func (x *ProposeJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProposeJobRequest.ProtoReflect.Descriptor instead. +func (*ProposeJobRequest) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{10} +} + +func (x *ProposeJobRequest) GetNodeId() string { + if x != nil { + return x.NodeId + } + return "" +} + +func (x *ProposeJobRequest) GetSpec() string { + if x != nil { + return x.Spec + } + return "" +} + +// ProposeJobResponse returns the newly created proposal. +type ProposeJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Proposal *Proposal `protobuf:"bytes,1,opt,name=proposal,proto3" json:"proposal,omitempty"` // Details of the newly created proposal. +} + +func (x *ProposeJobResponse) Reset() { + *x = ProposeJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProposeJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProposeJobResponse) ProtoMessage() {} + +func (x *ProposeJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProposeJobResponse.ProtoReflect.Descriptor instead. +func (*ProposeJobResponse) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{11} +} + +func (x *ProposeJobResponse) GetProposal() *Proposal { + if x != nil { + return x.Proposal + } + return nil +} + +// RevokeJobRequest specifies the criteria for revoking a job proposal. +type RevokeJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to IdOneof: + // + // *RevokeJobRequest_Id + // *RevokeJobRequest_Uuid + IdOneof isRevokeJobRequest_IdOneof `protobuf_oneof:"id_oneof"` +} + +func (x *RevokeJobRequest) Reset() { + *x = RevokeJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RevokeJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RevokeJobRequest) ProtoMessage() {} + +func (x *RevokeJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RevokeJobRequest.ProtoReflect.Descriptor instead. +func (*RevokeJobRequest) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{12} +} + +func (m *RevokeJobRequest) GetIdOneof() isRevokeJobRequest_IdOneof { + if m != nil { + return m.IdOneof + } + return nil +} + +func (x *RevokeJobRequest) GetId() string { + if x, ok := x.GetIdOneof().(*RevokeJobRequest_Id); ok { + return x.Id + } + return "" +} + +func (x *RevokeJobRequest) GetUuid() string { + if x, ok := x.GetIdOneof().(*RevokeJobRequest_Uuid); ok { + return x.Uuid + } + return "" +} + +type isRevokeJobRequest_IdOneof interface { + isRevokeJobRequest_IdOneof() +} + +type RevokeJobRequest_Id struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3,oneof"` // Unique identifier of the proposal to revoke. +} + +type RevokeJobRequest_Uuid struct { + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3,oneof"` // Universally unique identifier of the proposal to revoke. +} + +func (*RevokeJobRequest_Id) isRevokeJobRequest_IdOneof() {} + +func (*RevokeJobRequest_Uuid) isRevokeJobRequest_IdOneof() {} + +// RevokeJobResponse returns the revoked proposal. +type RevokeJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Proposal *Proposal `protobuf:"bytes,1,opt,name=proposal,proto3" json:"proposal,omitempty"` // Details of the revoked proposal. +} + +func (x *RevokeJobResponse) Reset() { + *x = RevokeJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RevokeJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RevokeJobResponse) ProtoMessage() {} + +func (x *RevokeJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RevokeJobResponse.ProtoReflect.Descriptor instead. +func (*RevokeJobResponse) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{13} +} + +func (x *RevokeJobResponse) GetProposal() *Proposal { + if x != nil { + return x.Proposal + } + return nil +} + +// DeleteJobRequest specifies the criteria for deleting a job. +type DeleteJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to IdOneof: + // + // *DeleteJobRequest_Id + // *DeleteJobRequest_Uuid + IdOneof isDeleteJobRequest_IdOneof `protobuf_oneof:"id_oneof"` +} + +func (x *DeleteJobRequest) Reset() { + *x = DeleteJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteJobRequest) ProtoMessage() {} + +func (x *DeleteJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteJobRequest.ProtoReflect.Descriptor instead. +func (*DeleteJobRequest) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{14} +} + +func (m *DeleteJobRequest) GetIdOneof() isDeleteJobRequest_IdOneof { + if m != nil { + return m.IdOneof + } + return nil +} + +func (x *DeleteJobRequest) GetId() string { + if x, ok := x.GetIdOneof().(*DeleteJobRequest_Id); ok { + return x.Id + } + return "" +} + +func (x *DeleteJobRequest) GetUuid() string { + if x, ok := x.GetIdOneof().(*DeleteJobRequest_Uuid); ok { + return x.Uuid + } + return "" +} + +type isDeleteJobRequest_IdOneof interface { + isDeleteJobRequest_IdOneof() +} + +type DeleteJobRequest_Id struct { + Id string `protobuf:"bytes,1,opt,name=id,proto3,oneof"` // Unique identifier of the job to delete. +} + +type DeleteJobRequest_Uuid struct { + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3,oneof"` // Universally unique identifier of the job to delete. +} + +func (*DeleteJobRequest_Id) isDeleteJobRequest_IdOneof() {} + +func (*DeleteJobRequest_Uuid) isDeleteJobRequest_IdOneof() {} + +// DeleteJobResponse returns details of the deleted job. +type DeleteJobResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Job *Job `protobuf:"bytes,1,opt,name=job,proto3" json:"job,omitempty"` // Details of the deleted job. +} + +func (x *DeleteJobResponse) Reset() { + *x = DeleteJobResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteJobResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteJobResponse) ProtoMessage() {} + +func (x *DeleteJobResponse) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteJobResponse.ProtoReflect.Descriptor instead. +func (*DeleteJobResponse) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{15} +} + +func (x *DeleteJobResponse) GetJob() *Job { + if x != nil { + return x.Job + } + return nil +} + +type ListJobsRequest_Filter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` // Filter by job IDs. + NodeIds []string `protobuf:"bytes,2,rep,name=node_ids,json=nodeIds,proto3" json:"node_ids,omitempty"` // Filter by node IDs. +} + +func (x *ListJobsRequest_Filter) Reset() { + *x = ListJobsRequest_Filter{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListJobsRequest_Filter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListJobsRequest_Filter) ProtoMessage() {} + +func (x *ListJobsRequest_Filter) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListJobsRequest_Filter.ProtoReflect.Descriptor instead. +func (*ListJobsRequest_Filter) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{6, 0} +} + +func (x *ListJobsRequest_Filter) GetIds() []string { + if x != nil { + return x.Ids + } + return nil +} + +func (x *ListJobsRequest_Filter) GetNodeIds() []string { + if x != nil { + return x.NodeIds + } + return nil +} + +type ListProposalsRequest_Filter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` // Filter by proposal IDs. + JobIds []string `protobuf:"bytes,2,rep,name=job_ids,json=jobIds,proto3" json:"job_ids,omitempty"` // Filter by job IDs. +} + +func (x *ListProposalsRequest_Filter) Reset() { + *x = ListProposalsRequest_Filter{} + if protoimpl.UnsafeEnabled { + mi := &file_job_v1_job_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListProposalsRequest_Filter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListProposalsRequest_Filter) ProtoMessage() {} + +func (x *ListProposalsRequest_Filter) ProtoReflect() protoreflect.Message { + mi := &file_job_v1_job_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListProposalsRequest_Filter.ProtoReflect.Descriptor instead. +func (*ListProposalsRequest_Filter) Descriptor() ([]byte, []int) { + return file_job_v1_job_proto_rawDescGZIP(), []int{8, 0} +} + +func (x *ListProposalsRequest_Filter) GetIds() []string { + if x != nil { + return x.Ids + } + return nil +} + +func (x *ListProposalsRequest_Filter) GetJobIds() []string { + if x != nil { + return x.JobIds + } + return nil +} + +var File_job_v1_job_proto protoreflect.FileDescriptor + +var file_job_v1_job_proto_rawDesc = []byte{ + 0x0a, 0x10, 0x6a, 0x6f, 0x62, 0x2f, 0x76, 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0a, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x1a, 0x1f, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x96, 0x02, 0x0a, 0x03, 0x4a, 0x6f, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, + 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, + 0x64, 0x65, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x8b, 0x04, 0x0a, 0x08, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x4b, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x73, 0x70, 0x65, 0x63, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x3a, 0x0a, 0x08, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, + 0x00, 0x52, 0x07, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, + 0x14, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x43, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x75, 0x75, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x42, + 0x0a, 0x0a, 0x08, 0x69, 0x64, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x33, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, + 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, + 0x22, 0x24, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x47, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, + 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, + 0x84, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, + 0x35, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6e, + 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6e, + 0x6f, 0x64, 0x65, 0x49, 0x64, 0x73, 0x22, 0x37, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, + 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x6a, 0x6f, + 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, + 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x22, + 0x8c, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, + 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x33, 0x0a, 0x06, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x73, 0x22, 0x4b, + 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x22, 0x40, 0x0a, 0x11, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x70, 0x65, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x46, 0x0a, + 0x12, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x46, 0x0a, 0x10, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, + 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, + 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x69, 0x64, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x45, 0x0a, + 0x11, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x46, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, + 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x04, 0x75, 0x75, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x42, 0x0a, 0x0a, 0x08, 0x69, 0x64, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x36, 0x0a, 0x11, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x21, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, + 0x03, 0x6a, 0x6f, 0x62, 0x2a, 0xe4, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x50, 0x4f, + 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, + 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x50, + 0x4f, 0x53, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, + 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, + 0x45, 0x44, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, + 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, + 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x1b, + 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x52, 0x45, 0x56, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0x06, 0x2a, 0xba, 0x01, 0x0a, 0x16, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, + 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x26, 0x0a, 0x22, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x4c, + 0x49, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x4c, + 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x52, 0x4f, 0x50, + 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x43, 0x4b, 0x4e, 0x4f, 0x57, 0x4c, 0x45, 0x44, 0x47, 0x45, + 0x44, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, + 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, + 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x32, 0xa9, 0x04, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4a, 0x6f, + 0x62, 0x12, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x0b, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x08, + 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, + 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x56, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x20, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, + 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, + 0x0a, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1d, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, + 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x4a, + 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x09, + 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, + 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6a, 0x6f, 0x62, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x42, 0x08, 0x5a, 0x06, 0x6a, 0x6f, 0x62, 0x2f, 0x76, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_job_v1_job_proto_rawDescOnce sync.Once + file_job_v1_job_proto_rawDescData = file_job_v1_job_proto_rawDesc +) + +func file_job_v1_job_proto_rawDescGZIP() []byte { + file_job_v1_job_proto_rawDescOnce.Do(func() { + file_job_v1_job_proto_rawDescData = protoimpl.X.CompressGZIP(file_job_v1_job_proto_rawDescData) + }) + return file_job_v1_job_proto_rawDescData +} + +var file_job_v1_job_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_job_v1_job_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_job_v1_job_proto_goTypes = []interface{}{ + (ProposalStatus)(0), // 0: api.job.v1.ProposalStatus + (ProposalDeliveryStatus)(0), // 1: api.job.v1.ProposalDeliveryStatus + (*Job)(nil), // 2: api.job.v1.Job + (*Proposal)(nil), // 3: api.job.v1.Proposal + (*GetJobRequest)(nil), // 4: api.job.v1.GetJobRequest + (*GetJobResponse)(nil), // 5: api.job.v1.GetJobResponse + (*GetProposalRequest)(nil), // 6: api.job.v1.GetProposalRequest + (*GetProposalResponse)(nil), // 7: api.job.v1.GetProposalResponse + (*ListJobsRequest)(nil), // 8: api.job.v1.ListJobsRequest + (*ListJobsResponse)(nil), // 9: api.job.v1.ListJobsResponse + (*ListProposalsRequest)(nil), // 10: api.job.v1.ListProposalsRequest + (*ListProposalsResponse)(nil), // 11: api.job.v1.ListProposalsResponse + (*ProposeJobRequest)(nil), // 12: api.job.v1.ProposeJobRequest + (*ProposeJobResponse)(nil), // 13: api.job.v1.ProposeJobResponse + (*RevokeJobRequest)(nil), // 14: api.job.v1.RevokeJobRequest + (*RevokeJobResponse)(nil), // 15: api.job.v1.RevokeJobResponse + (*DeleteJobRequest)(nil), // 16: api.job.v1.DeleteJobRequest + (*DeleteJobResponse)(nil), // 17: api.job.v1.DeleteJobResponse + (*ListJobsRequest_Filter)(nil), // 18: api.job.v1.ListJobsRequest.Filter + (*ListProposalsRequest_Filter)(nil), // 19: api.job.v1.ListProposalsRequest.Filter + (*timestamppb.Timestamp)(nil), // 20: google.protobuf.Timestamp +} +var file_job_v1_job_proto_depIdxs = []int32{ + 20, // 0: api.job.v1.Job.created_at:type_name -> google.protobuf.Timestamp + 20, // 1: api.job.v1.Job.updated_at:type_name -> google.protobuf.Timestamp + 20, // 2: api.job.v1.Job.deleted_at:type_name -> google.protobuf.Timestamp + 0, // 3: api.job.v1.Proposal.status:type_name -> api.job.v1.ProposalStatus + 1, // 4: api.job.v1.Proposal.delivery_status:type_name -> api.job.v1.ProposalDeliveryStatus + 20, // 5: api.job.v1.Proposal.created_at:type_name -> google.protobuf.Timestamp + 20, // 6: api.job.v1.Proposal.updated_at:type_name -> google.protobuf.Timestamp + 20, // 7: api.job.v1.Proposal.acked_at:type_name -> google.protobuf.Timestamp + 20, // 8: api.job.v1.Proposal.response_received_at:type_name -> google.protobuf.Timestamp + 2, // 9: api.job.v1.GetJobResponse.job:type_name -> api.job.v1.Job + 3, // 10: api.job.v1.GetProposalResponse.proposal:type_name -> api.job.v1.Proposal + 18, // 11: api.job.v1.ListJobsRequest.filter:type_name -> api.job.v1.ListJobsRequest.Filter + 2, // 12: api.job.v1.ListJobsResponse.jobs:type_name -> api.job.v1.Job + 19, // 13: api.job.v1.ListProposalsRequest.filter:type_name -> api.job.v1.ListProposalsRequest.Filter + 3, // 14: api.job.v1.ListProposalsResponse.proposals:type_name -> api.job.v1.Proposal + 3, // 15: api.job.v1.ProposeJobResponse.proposal:type_name -> api.job.v1.Proposal + 3, // 16: api.job.v1.RevokeJobResponse.proposal:type_name -> api.job.v1.Proposal + 2, // 17: api.job.v1.DeleteJobResponse.job:type_name -> api.job.v1.Job + 4, // 18: api.job.v1.JobService.GetJob:input_type -> api.job.v1.GetJobRequest + 6, // 19: api.job.v1.JobService.GetProposal:input_type -> api.job.v1.GetProposalRequest + 8, // 20: api.job.v1.JobService.ListJobs:input_type -> api.job.v1.ListJobsRequest + 10, // 21: api.job.v1.JobService.ListProposals:input_type -> api.job.v1.ListProposalsRequest + 12, // 22: api.job.v1.JobService.ProposeJob:input_type -> api.job.v1.ProposeJobRequest + 14, // 23: api.job.v1.JobService.RevokeJob:input_type -> api.job.v1.RevokeJobRequest + 16, // 24: api.job.v1.JobService.DeleteJob:input_type -> api.job.v1.DeleteJobRequest + 5, // 25: api.job.v1.JobService.GetJob:output_type -> api.job.v1.GetJobResponse + 7, // 26: api.job.v1.JobService.GetProposal:output_type -> api.job.v1.GetProposalResponse + 9, // 27: api.job.v1.JobService.ListJobs:output_type -> api.job.v1.ListJobsResponse + 11, // 28: api.job.v1.JobService.ListProposals:output_type -> api.job.v1.ListProposalsResponse + 13, // 29: api.job.v1.JobService.ProposeJob:output_type -> api.job.v1.ProposeJobResponse + 15, // 30: api.job.v1.JobService.RevokeJob:output_type -> api.job.v1.RevokeJobResponse + 17, // 31: api.job.v1.JobService.DeleteJob:output_type -> api.job.v1.DeleteJobResponse + 25, // [25:32] is the sub-list for method output_type + 18, // [18:25] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name +} + +func init() { file_job_v1_job_proto_init() } +func file_job_v1_job_proto_init() { + if File_job_v1_job_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_job_v1_job_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Job); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Proposal); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetProposalRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetProposalResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListJobsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListJobsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListProposalsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListProposalsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProposeJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProposeJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RevokeJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RevokeJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteJobResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListJobsRequest_Filter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_job_v1_job_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListProposalsRequest_Filter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_job_v1_job_proto_msgTypes[1].OneofWrappers = []interface{}{} + file_job_v1_job_proto_msgTypes[2].OneofWrappers = []interface{}{ + (*GetJobRequest_Id)(nil), + (*GetJobRequest_Uuid)(nil), + } + file_job_v1_job_proto_msgTypes[12].OneofWrappers = []interface{}{ + (*RevokeJobRequest_Id)(nil), + (*RevokeJobRequest_Uuid)(nil), + } + file_job_v1_job_proto_msgTypes[14].OneofWrappers = []interface{}{ + (*DeleteJobRequest_Id)(nil), + (*DeleteJobRequest_Uuid)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_job_v1_job_proto_rawDesc, + NumEnums: 2, + NumMessages: 18, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_job_v1_job_proto_goTypes, + DependencyIndexes: file_job_v1_job_proto_depIdxs, + EnumInfos: file_job_v1_job_proto_enumTypes, + MessageInfos: file_job_v1_job_proto_msgTypes, + }.Build() + File_job_v1_job_proto = out.File + file_job_v1_job_proto_rawDesc = nil + file_job_v1_job_proto_goTypes = nil + file_job_v1_job_proto_depIdxs = nil +} diff --git a/integration-tests/deployment/jd/job/v1/job_grpc.pb.go b/integration-tests/deployment/jd/job/v1/job_grpc.pb.go new file mode 100644 index 0000000000..9b9207c020 --- /dev/null +++ b/integration-tests/deployment/jd/job/v1/job_grpc.pb.go @@ -0,0 +1,345 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.25.3 +// source: job/v1/job.proto + +package v1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + JobService_GetJob_FullMethodName = "/api.job.v1.JobService/GetJob" + JobService_GetProposal_FullMethodName = "/api.job.v1.JobService/GetProposal" + JobService_ListJobs_FullMethodName = "/api.job.v1.JobService/ListJobs" + JobService_ListProposals_FullMethodName = "/api.job.v1.JobService/ListProposals" + JobService_ProposeJob_FullMethodName = "/api.job.v1.JobService/ProposeJob" + JobService_RevokeJob_FullMethodName = "/api.job.v1.JobService/RevokeJob" + JobService_DeleteJob_FullMethodName = "/api.job.v1.JobService/DeleteJob" +) + +// JobServiceClient is the client API for JobService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type JobServiceClient interface { + // GetJob retrieves the details of a specific job by its ID or UUID. + GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*GetJobResponse, error) + // GetProposal retrieves the details of a specific proposal by its ID. + GetProposal(ctx context.Context, in *GetProposalRequest, opts ...grpc.CallOption) (*GetProposalResponse, error) + // ListJobs returns a list of jobs, optionally filtered by IDs or node IDs. + ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) + // ListProposals returns a list of proposals, optionally filtered by proposal or job IDs. + ListProposals(ctx context.Context, in *ListProposalsRequest, opts ...grpc.CallOption) (*ListProposalsResponse, error) + // ProposeJob submits a new job proposal to a node. + ProposeJob(ctx context.Context, in *ProposeJobRequest, opts ...grpc.CallOption) (*ProposeJobResponse, error) + // RevokeJob revokes an existing job proposal. + RevokeJob(ctx context.Context, in *RevokeJobRequest, opts ...grpc.CallOption) (*RevokeJobResponse, error) + // DeleteJob deletes a job from the system. + DeleteJob(ctx context.Context, in *DeleteJobRequest, opts ...grpc.CallOption) (*DeleteJobResponse, error) +} + +type jobServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewJobServiceClient(cc grpc.ClientConnInterface) JobServiceClient { + return &jobServiceClient{cc} +} + +func (c *jobServiceClient) GetJob(ctx context.Context, in *GetJobRequest, opts ...grpc.CallOption) (*GetJobResponse, error) { + out := new(GetJobResponse) + err := c.cc.Invoke(ctx, JobService_GetJob_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *jobServiceClient) GetProposal(ctx context.Context, in *GetProposalRequest, opts ...grpc.CallOption) (*GetProposalResponse, error) { + out := new(GetProposalResponse) + err := c.cc.Invoke(ctx, JobService_GetProposal_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *jobServiceClient) ListJobs(ctx context.Context, in *ListJobsRequest, opts ...grpc.CallOption) (*ListJobsResponse, error) { + out := new(ListJobsResponse) + err := c.cc.Invoke(ctx, JobService_ListJobs_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *jobServiceClient) ListProposals(ctx context.Context, in *ListProposalsRequest, opts ...grpc.CallOption) (*ListProposalsResponse, error) { + out := new(ListProposalsResponse) + err := c.cc.Invoke(ctx, JobService_ListProposals_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *jobServiceClient) ProposeJob(ctx context.Context, in *ProposeJobRequest, opts ...grpc.CallOption) (*ProposeJobResponse, error) { + out := new(ProposeJobResponse) + err := c.cc.Invoke(ctx, JobService_ProposeJob_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *jobServiceClient) RevokeJob(ctx context.Context, in *RevokeJobRequest, opts ...grpc.CallOption) (*RevokeJobResponse, error) { + out := new(RevokeJobResponse) + err := c.cc.Invoke(ctx, JobService_RevokeJob_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *jobServiceClient) DeleteJob(ctx context.Context, in *DeleteJobRequest, opts ...grpc.CallOption) (*DeleteJobResponse, error) { + out := new(DeleteJobResponse) + err := c.cc.Invoke(ctx, JobService_DeleteJob_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// JobServiceServer is the server API for JobService service. +// All implementations must embed UnimplementedJobServiceServer +// for forward compatibility +type JobServiceServer interface { + // GetJob retrieves the details of a specific job by its ID or UUID. + GetJob(context.Context, *GetJobRequest) (*GetJobResponse, error) + // GetProposal retrieves the details of a specific proposal by its ID. + GetProposal(context.Context, *GetProposalRequest) (*GetProposalResponse, error) + // ListJobs returns a list of jobs, optionally filtered by IDs or node IDs. + ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error) + // ListProposals returns a list of proposals, optionally filtered by proposal or job IDs. + ListProposals(context.Context, *ListProposalsRequest) (*ListProposalsResponse, error) + // ProposeJob submits a new job proposal to a node. + ProposeJob(context.Context, *ProposeJobRequest) (*ProposeJobResponse, error) + // RevokeJob revokes an existing job proposal. + RevokeJob(context.Context, *RevokeJobRequest) (*RevokeJobResponse, error) + // DeleteJob deletes a job from the system. + DeleteJob(context.Context, *DeleteJobRequest) (*DeleteJobResponse, error) + mustEmbedUnimplementedJobServiceServer() +} + +// UnimplementedJobServiceServer must be embedded to have forward compatible implementations. +type UnimplementedJobServiceServer struct { +} + +func (UnimplementedJobServiceServer) GetJob(context.Context, *GetJobRequest) (*GetJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetJob not implemented") +} +func (UnimplementedJobServiceServer) GetProposal(context.Context, *GetProposalRequest) (*GetProposalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetProposal not implemented") +} +func (UnimplementedJobServiceServer) ListJobs(context.Context, *ListJobsRequest) (*ListJobsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListJobs not implemented") +} +func (UnimplementedJobServiceServer) ListProposals(context.Context, *ListProposalsRequest) (*ListProposalsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListProposals not implemented") +} +func (UnimplementedJobServiceServer) ProposeJob(context.Context, *ProposeJobRequest) (*ProposeJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ProposeJob not implemented") +} +func (UnimplementedJobServiceServer) RevokeJob(context.Context, *RevokeJobRequest) (*RevokeJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RevokeJob not implemented") +} +func (UnimplementedJobServiceServer) DeleteJob(context.Context, *DeleteJobRequest) (*DeleteJobResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteJob not implemented") +} +func (UnimplementedJobServiceServer) mustEmbedUnimplementedJobServiceServer() {} + +// UnsafeJobServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to JobServiceServer will +// result in compilation errors. +type UnsafeJobServiceServer interface { + mustEmbedUnimplementedJobServiceServer() +} + +func RegisterJobServiceServer(s grpc.ServiceRegistrar, srv JobServiceServer) { + s.RegisterService(&JobService_ServiceDesc, srv) +} + +func _JobService_GetJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JobServiceServer).GetJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: JobService_GetJob_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JobServiceServer).GetJob(ctx, req.(*GetJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _JobService_GetProposal_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetProposalRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JobServiceServer).GetProposal(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: JobService_GetProposal_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JobServiceServer).GetProposal(ctx, req.(*GetProposalRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _JobService_ListJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListJobsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JobServiceServer).ListJobs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: JobService_ListJobs_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JobServiceServer).ListJobs(ctx, req.(*ListJobsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _JobService_ListProposals_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListProposalsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JobServiceServer).ListProposals(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: JobService_ListProposals_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JobServiceServer).ListProposals(ctx, req.(*ListProposalsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _JobService_ProposeJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ProposeJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JobServiceServer).ProposeJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: JobService_ProposeJob_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JobServiceServer).ProposeJob(ctx, req.(*ProposeJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _JobService_RevokeJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RevokeJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JobServiceServer).RevokeJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: JobService_RevokeJob_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JobServiceServer).RevokeJob(ctx, req.(*RevokeJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _JobService_DeleteJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(JobServiceServer).DeleteJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: JobService_DeleteJob_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(JobServiceServer).DeleteJob(ctx, req.(*DeleteJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// JobService_ServiceDesc is the grpc.ServiceDesc for JobService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var JobService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "api.job.v1.JobService", + HandlerType: (*JobServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetJob", + Handler: _JobService_GetJob_Handler, + }, + { + MethodName: "GetProposal", + Handler: _JobService_GetProposal_Handler, + }, + { + MethodName: "ListJobs", + Handler: _JobService_ListJobs_Handler, + }, + { + MethodName: "ListProposals", + Handler: _JobService_ListProposals_Handler, + }, + { + MethodName: "ProposeJob", + Handler: _JobService_ProposeJob_Handler, + }, + { + MethodName: "RevokeJob", + Handler: _JobService_RevokeJob_Handler, + }, + { + MethodName: "DeleteJob", + Handler: _JobService_DeleteJob_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "job/v1/job.proto", +} diff --git a/integration-tests/deployment/jd/node/v1/node.pb.go b/integration-tests/deployment/jd/node/v1/node.pb.go new file mode 100644 index 0000000000..84b9cdda03 --- /dev/null +++ b/integration-tests/deployment/jd/node/v1/node.pb.go @@ -0,0 +1,1650 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.0 +// protoc v4.25.3 +// source: node/v1/node.proto + +package v1 + +import ( + ptypes "github.com/smartcontractkit/job-distributor/pkg/api/gen/shared/ptypes" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ChainType int32 + +const ( + ChainType_CHAIN_TYPE_UNSPECIFIED ChainType = 0 + ChainType_CHAIN_TYPE_EVM ChainType = 1 + ChainType_CHAIN_TYPE_SOLANA ChainType = 2 +) + +// Enum value maps for ChainType. +var ( + ChainType_name = map[int32]string{ + 0: "CHAIN_TYPE_UNSPECIFIED", + 1: "CHAIN_TYPE_EVM", + 2: "CHAIN_TYPE_SOLANA", + } + ChainType_value = map[string]int32{ + "CHAIN_TYPE_UNSPECIFIED": 0, + "CHAIN_TYPE_EVM": 1, + "CHAIN_TYPE_SOLANA": 2, + } +) + +func (x ChainType) Enum() *ChainType { + p := new(ChainType) + *p = x + return p +} + +func (x ChainType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ChainType) Descriptor() protoreflect.EnumDescriptor { + return file_node_v1_node_proto_enumTypes[0].Descriptor() +} + +func (ChainType) Type() protoreflect.EnumType { + return &file_node_v1_node_proto_enumTypes[0] +} + +func (x ChainType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ChainType.Descriptor instead. +func (ChainType) EnumDescriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{0} +} + +// ArchiveState represents the archived state of the node. +type ArchiveState int32 + +const ( + ArchiveState_ARCHIVE_STATE_UNSPECIFIED ArchiveState = 0 + ArchiveState_ARCHIVE_STATE_ARCHIVED ArchiveState = 1 + ArchiveState_ARCHIVE_STATE_ACTIVE ArchiveState = 2 +) + +// Enum value maps for ArchiveState. +var ( + ArchiveState_name = map[int32]string{ + 0: "ARCHIVE_STATE_UNSPECIFIED", + 1: "ARCHIVE_STATE_ARCHIVED", + 2: "ARCHIVE_STATE_ACTIVE", + } + ArchiveState_value = map[string]int32{ + "ARCHIVE_STATE_UNSPECIFIED": 0, + "ARCHIVE_STATE_ARCHIVED": 1, + "ARCHIVE_STATE_ACTIVE": 2, + } +) + +func (x ArchiveState) Enum() *ArchiveState { + p := new(ArchiveState) + *p = x + return p +} + +func (x ArchiveState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ArchiveState) Descriptor() protoreflect.EnumDescriptor { + return file_node_v1_node_proto_enumTypes[1].Descriptor() +} + +func (ArchiveState) Type() protoreflect.EnumType { + return &file_node_v1_node_proto_enumTypes[1] +} + +func (x ArchiveState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ArchiveState.Descriptor instead. +func (ArchiveState) EnumDescriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{1} +} + +type Chain struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type ChainType `protobuf:"varint,2,opt,name=type,proto3,enum=api.node.v1.ChainType" json:"type,omitempty"` +} + +func (x *Chain) Reset() { + *x = Chain{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Chain) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Chain) ProtoMessage() {} + +func (x *Chain) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Chain.ProtoReflect.Descriptor instead. +func (*Chain) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{0} +} + +func (x *Chain) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Chain) GetType() ChainType { + if x != nil { + return x.Type + } + return ChainType_CHAIN_TYPE_UNSPECIFIED +} + +type OCR1Config struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + IsBootstrap bool `protobuf:"varint,2,opt,name=is_bootstrap,json=isBootstrap,proto3" json:"is_bootstrap,omitempty"` + P2PKeyBundle *OCR1Config_P2PKeyBundle `protobuf:"bytes,3,opt,name=p2p_key_bundle,json=p2pKeyBundle,proto3" json:"p2p_key_bundle,omitempty"` + OcrKeyBundle *OCR1Config_OCRKeyBundle `protobuf:"bytes,4,opt,name=ocr_key_bundle,json=ocrKeyBundle,proto3" json:"ocr_key_bundle,omitempty"` + Multiaddr string `protobuf:"bytes,5,opt,name=multiaddr,proto3" json:"multiaddr,omitempty"` +} + +func (x *OCR1Config) Reset() { + *x = OCR1Config{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OCR1Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR1Config) ProtoMessage() {} + +func (x *OCR1Config) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR1Config.ProtoReflect.Descriptor instead. +func (*OCR1Config) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{1} +} + +func (x *OCR1Config) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *OCR1Config) GetIsBootstrap() bool { + if x != nil { + return x.IsBootstrap + } + return false +} + +func (x *OCR1Config) GetP2PKeyBundle() *OCR1Config_P2PKeyBundle { + if x != nil { + return x.P2PKeyBundle + } + return nil +} + +func (x *OCR1Config) GetOcrKeyBundle() *OCR1Config_OCRKeyBundle { + if x != nil { + return x.OcrKeyBundle + } + return nil +} + +func (x *OCR1Config) GetMultiaddr() string { + if x != nil { + return x.Multiaddr + } + return "" +} + +type OCR2Config struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + IsBootstrap bool `protobuf:"varint,2,opt,name=is_bootstrap,json=isBootstrap,proto3" json:"is_bootstrap,omitempty"` + P2PKeyBundle *OCR2Config_P2PKeyBundle `protobuf:"bytes,3,opt,name=p2p_key_bundle,json=p2pKeyBundle,proto3" json:"p2p_key_bundle,omitempty"` + OcrKeyBundle *OCR2Config_OCRKeyBundle `protobuf:"bytes,4,opt,name=ocr_key_bundle,json=ocrKeyBundle,proto3" json:"ocr_key_bundle,omitempty"` + Multiaddr string `protobuf:"bytes,5,opt,name=multiaddr,proto3" json:"multiaddr,omitempty"` + Plugins *OCR2Config_Plugins `protobuf:"bytes,6,opt,name=plugins,proto3" json:"plugins,omitempty"` + ForwarderAddress string `protobuf:"bytes,7,opt,name=forwarder_address,json=forwarderAddress,proto3" json:"forwarder_address,omitempty"` +} + +func (x *OCR2Config) Reset() { + *x = OCR2Config{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OCR2Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR2Config) ProtoMessage() {} + +func (x *OCR2Config) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR2Config.ProtoReflect.Descriptor instead. +func (*OCR2Config) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{2} +} + +func (x *OCR2Config) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + +func (x *OCR2Config) GetIsBootstrap() bool { + if x != nil { + return x.IsBootstrap + } + return false +} + +func (x *OCR2Config) GetP2PKeyBundle() *OCR2Config_P2PKeyBundle { + if x != nil { + return x.P2PKeyBundle + } + return nil +} + +func (x *OCR2Config) GetOcrKeyBundle() *OCR2Config_OCRKeyBundle { + if x != nil { + return x.OcrKeyBundle + } + return nil +} + +func (x *OCR2Config) GetMultiaddr() string { + if x != nil { + return x.Multiaddr + } + return "" +} + +func (x *OCR2Config) GetPlugins() *OCR2Config_Plugins { + if x != nil { + return x.Plugins + } + return nil +} + +func (x *OCR2Config) GetForwarderAddress() string { + if x != nil { + return x.ForwarderAddress + } + return "" +} + +type ChainConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Chain *Chain `protobuf:"bytes,1,opt,name=chain,proto3" json:"chain,omitempty"` + AccountAddress string `protobuf:"bytes,2,opt,name=account_address,json=accountAddress,proto3" json:"account_address,omitempty"` + AdminAddress string `protobuf:"bytes,3,opt,name=admin_address,json=adminAddress,proto3" json:"admin_address,omitempty"` + Ocr1Config *OCR1Config `protobuf:"bytes,4,opt,name=ocr1_config,json=ocr1Config,proto3" json:"ocr1_config,omitempty"` + Ocr2Config *OCR2Config `protobuf:"bytes,5,opt,name=ocr2_config,json=ocr2Config,proto3" json:"ocr2_config,omitempty"` +} + +func (x *ChainConfig) Reset() { + *x = ChainConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChainConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChainConfig) ProtoMessage() {} + +func (x *ChainConfig) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChainConfig.ProtoReflect.Descriptor instead. +func (*ChainConfig) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{3} +} + +func (x *ChainConfig) GetChain() *Chain { + if x != nil { + return x.Chain + } + return nil +} + +func (x *ChainConfig) GetAccountAddress() string { + if x != nil { + return x.AccountAddress + } + return "" +} + +func (x *ChainConfig) GetAdminAddress() string { + if x != nil { + return x.AdminAddress + } + return "" +} + +func (x *ChainConfig) GetOcr1Config() *OCR1Config { + if x != nil { + return x.Ocr1Config + } + return nil +} + +func (x *ChainConfig) GetOcr2Config() *OCR2Config { + if x != nil { + return x.Ocr2Config + } + return nil +} + +// GetNodeRequest is the request to retrieve a single node by its ID. +type GetNodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier of the node to retrieve. +} + +func (x *GetNodeRequest) Reset() { + *x = GetNodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetNodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetNodeRequest) ProtoMessage() {} + +func (x *GetNodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetNodeRequest.ProtoReflect.Descriptor instead. +func (*GetNodeRequest) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{4} +} + +func (x *GetNodeRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +// GetNodeResponse is the response containing the requested node. +type GetNodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Node *Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Details of the retrieved node. +} + +func (x *GetNodeResponse) Reset() { + *x = GetNodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetNodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetNodeResponse) ProtoMessage() {} + +func (x *GetNodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetNodeResponse.ProtoReflect.Descriptor instead. +func (*GetNodeResponse) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{5} +} + +func (x *GetNodeResponse) GetNode() *Node { + if x != nil { + return x.Node + } + return nil +} + +// * +// ListNodesRequest is the request object for the ListNodes method. +// +// Provide a filter to return a subset of data. Nodes can be filtered by: +// - ids - A list of node ids. +// - archived - The archived state of the node. +// - selectors - A list of selectors to filter nodes by their labels. +// +// If no filter is provided, all nodes are returned. +type ListNodesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Filter *ListNodesRequest_Filter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListNodesRequest) Reset() { + *x = ListNodesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNodesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNodesRequest) ProtoMessage() {} + +func (x *ListNodesRequest) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNodesRequest.ProtoReflect.Descriptor instead. +func (*ListNodesRequest) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{6} +} + +func (x *ListNodesRequest) GetFilter() *ListNodesRequest_Filter { + if x != nil { + return x.Filter + } + return nil +} + +// * +// ListNodesResponse is the response object for the ListNodes method. +// +// It returns a list of nodes that match the filter criteria. +type ListNodesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Nodes []*Node `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` // List of nodes. +} + +func (x *ListNodesResponse) Reset() { + *x = ListNodesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNodesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNodesResponse) ProtoMessage() {} + +func (x *ListNodesResponse) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNodesResponse.ProtoReflect.Descriptor instead. +func (*ListNodesResponse) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{7} +} + +func (x *ListNodesResponse) GetNodes() []*Node { + if x != nil { + return x.Nodes + } + return nil +} + +type ListNodeChainConfigsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Filter *ListNodeChainConfigsRequest_Filter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListNodeChainConfigsRequest) Reset() { + *x = ListNodeChainConfigsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNodeChainConfigsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNodeChainConfigsRequest) ProtoMessage() {} + +func (x *ListNodeChainConfigsRequest) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNodeChainConfigsRequest.ProtoReflect.Descriptor instead. +func (*ListNodeChainConfigsRequest) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{8} +} + +func (x *ListNodeChainConfigsRequest) GetFilter() *ListNodeChainConfigsRequest_Filter { + if x != nil { + return x.Filter + } + return nil +} + +type ListNodeChainConfigsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChainConfigs []*ChainConfig `protobuf:"bytes,1,rep,name=chain_configs,json=chainConfigs,proto3" json:"chain_configs,omitempty"` +} + +func (x *ListNodeChainConfigsResponse) Reset() { + *x = ListNodeChainConfigsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNodeChainConfigsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNodeChainConfigsResponse) ProtoMessage() {} + +func (x *ListNodeChainConfigsResponse) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNodeChainConfigsResponse.ProtoReflect.Descriptor instead. +func (*ListNodeChainConfigsResponse) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{9} +} + +func (x *ListNodeChainConfigsResponse) GetChainConfigs() []*ChainConfig { + if x != nil { + return x.ChainConfigs + } + return nil +} + +type OCR1Config_P2PKeyBundle struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PeerId string `protobuf:"bytes,1,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` + PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` +} + +func (x *OCR1Config_P2PKeyBundle) Reset() { + *x = OCR1Config_P2PKeyBundle{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OCR1Config_P2PKeyBundle) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR1Config_P2PKeyBundle) ProtoMessage() {} + +func (x *OCR1Config_P2PKeyBundle) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR1Config_P2PKeyBundle.ProtoReflect.Descriptor instead. +func (*OCR1Config_P2PKeyBundle) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *OCR1Config_P2PKeyBundle) GetPeerId() string { + if x != nil { + return x.PeerId + } + return "" +} + +func (x *OCR1Config_P2PKeyBundle) GetPublicKey() string { + if x != nil { + return x.PublicKey + } + return "" +} + +type OCR1Config_OCRKeyBundle struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BundleId string `protobuf:"bytes,1,opt,name=bundle_id,json=bundleId,proto3" json:"bundle_id,omitempty"` + ConfigPublicKey string `protobuf:"bytes,2,opt,name=config_public_key,json=configPublicKey,proto3" json:"config_public_key,omitempty"` + OffchainPublicKey string `protobuf:"bytes,3,opt,name=offchain_public_key,json=offchainPublicKey,proto3" json:"offchain_public_key,omitempty"` + OnchainSigningAddress string `protobuf:"bytes,4,opt,name=onchain_signing_address,json=onchainSigningAddress,proto3" json:"onchain_signing_address,omitempty"` +} + +func (x *OCR1Config_OCRKeyBundle) Reset() { + *x = OCR1Config_OCRKeyBundle{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OCR1Config_OCRKeyBundle) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR1Config_OCRKeyBundle) ProtoMessage() {} + +func (x *OCR1Config_OCRKeyBundle) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR1Config_OCRKeyBundle.ProtoReflect.Descriptor instead. +func (*OCR1Config_OCRKeyBundle) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{1, 1} +} + +func (x *OCR1Config_OCRKeyBundle) GetBundleId() string { + if x != nil { + return x.BundleId + } + return "" +} + +func (x *OCR1Config_OCRKeyBundle) GetConfigPublicKey() string { + if x != nil { + return x.ConfigPublicKey + } + return "" +} + +func (x *OCR1Config_OCRKeyBundle) GetOffchainPublicKey() string { + if x != nil { + return x.OffchainPublicKey + } + return "" +} + +func (x *OCR1Config_OCRKeyBundle) GetOnchainSigningAddress() string { + if x != nil { + return x.OnchainSigningAddress + } + return "" +} + +type OCR2Config_P2PKeyBundle struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PeerId string `protobuf:"bytes,1,opt,name=peer_id,json=peerId,proto3" json:"peer_id,omitempty"` + PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` +} + +func (x *OCR2Config_P2PKeyBundle) Reset() { + *x = OCR2Config_P2PKeyBundle{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OCR2Config_P2PKeyBundle) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR2Config_P2PKeyBundle) ProtoMessage() {} + +func (x *OCR2Config_P2PKeyBundle) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR2Config_P2PKeyBundle.ProtoReflect.Descriptor instead. +func (*OCR2Config_P2PKeyBundle) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *OCR2Config_P2PKeyBundle) GetPeerId() string { + if x != nil { + return x.PeerId + } + return "" +} + +func (x *OCR2Config_P2PKeyBundle) GetPublicKey() string { + if x != nil { + return x.PublicKey + } + return "" +} + +type OCR2Config_OCRKeyBundle struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BundleId string `protobuf:"bytes,1,opt,name=bundle_id,json=bundleId,proto3" json:"bundle_id,omitempty"` + ConfigPublicKey string `protobuf:"bytes,2,opt,name=config_public_key,json=configPublicKey,proto3" json:"config_public_key,omitempty"` + OffchainPublicKey string `protobuf:"bytes,3,opt,name=offchain_public_key,json=offchainPublicKey,proto3" json:"offchain_public_key,omitempty"` + OnchainSigningAddress string `protobuf:"bytes,4,opt,name=onchain_signing_address,json=onchainSigningAddress,proto3" json:"onchain_signing_address,omitempty"` +} + +func (x *OCR2Config_OCRKeyBundle) Reset() { + *x = OCR2Config_OCRKeyBundle{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OCR2Config_OCRKeyBundle) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR2Config_OCRKeyBundle) ProtoMessage() {} + +func (x *OCR2Config_OCRKeyBundle) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR2Config_OCRKeyBundle.ProtoReflect.Descriptor instead. +func (*OCR2Config_OCRKeyBundle) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{2, 1} +} + +func (x *OCR2Config_OCRKeyBundle) GetBundleId() string { + if x != nil { + return x.BundleId + } + return "" +} + +func (x *OCR2Config_OCRKeyBundle) GetConfigPublicKey() string { + if x != nil { + return x.ConfigPublicKey + } + return "" +} + +func (x *OCR2Config_OCRKeyBundle) GetOffchainPublicKey() string { + if x != nil { + return x.OffchainPublicKey + } + return "" +} + +func (x *OCR2Config_OCRKeyBundle) GetOnchainSigningAddress() string { + if x != nil { + return x.OnchainSigningAddress + } + return "" +} + +type OCR2Config_Plugins struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Commit bool `protobuf:"varint,1,opt,name=commit,proto3" json:"commit,omitempty"` + Execute bool `protobuf:"varint,2,opt,name=execute,proto3" json:"execute,omitempty"` + Median bool `protobuf:"varint,3,opt,name=median,proto3" json:"median,omitempty"` + Mercury bool `protobuf:"varint,4,opt,name=mercury,proto3" json:"mercury,omitempty"` + Rebalancer bool `protobuf:"varint,5,opt,name=rebalancer,proto3" json:"rebalancer,omitempty"` +} + +func (x *OCR2Config_Plugins) Reset() { + *x = OCR2Config_Plugins{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OCR2Config_Plugins) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR2Config_Plugins) ProtoMessage() {} + +func (x *OCR2Config_Plugins) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR2Config_Plugins.ProtoReflect.Descriptor instead. +func (*OCR2Config_Plugins) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{2, 2} +} + +func (x *OCR2Config_Plugins) GetCommit() bool { + if x != nil { + return x.Commit + } + return false +} + +func (x *OCR2Config_Plugins) GetExecute() bool { + if x != nil { + return x.Execute + } + return false +} + +func (x *OCR2Config_Plugins) GetMedian() bool { + if x != nil { + return x.Median + } + return false +} + +func (x *OCR2Config_Plugins) GetMercury() bool { + if x != nil { + return x.Mercury + } + return false +} + +func (x *OCR2Config_Plugins) GetRebalancer() bool { + if x != nil { + return x.Rebalancer + } + return false +} + +type ListNodesRequest_Filter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ids []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"` + Archived ArchiveState `protobuf:"varint,2,opt,name=archived,proto3,enum=api.node.v1.ArchiveState" json:"archived,omitempty"` + Selectors []*ptypes.Selector `protobuf:"bytes,3,rep,name=selectors,proto3" json:"selectors,omitempty"` +} + +func (x *ListNodesRequest_Filter) Reset() { + *x = ListNodesRequest_Filter{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNodesRequest_Filter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNodesRequest_Filter) ProtoMessage() {} + +func (x *ListNodesRequest_Filter) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNodesRequest_Filter.ProtoReflect.Descriptor instead. +func (*ListNodesRequest_Filter) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{6, 0} +} + +func (x *ListNodesRequest_Filter) GetIds() []string { + if x != nil { + return x.Ids + } + return nil +} + +func (x *ListNodesRequest_Filter) GetArchived() ArchiveState { + if x != nil { + return x.Archived + } + return ArchiveState_ARCHIVE_STATE_UNSPECIFIED +} + +func (x *ListNodesRequest_Filter) GetSelectors() []*ptypes.Selector { + if x != nil { + return x.Selectors + } + return nil +} + +type ListNodeChainConfigsRequest_Filter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` +} + +func (x *ListNodeChainConfigsRequest_Filter) Reset() { + *x = ListNodeChainConfigsRequest_Filter{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_node_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNodeChainConfigsRequest_Filter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNodeChainConfigsRequest_Filter) ProtoMessage() {} + +func (x *ListNodeChainConfigsRequest_Filter) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_node_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNodeChainConfigsRequest_Filter.ProtoReflect.Descriptor instead. +func (*ListNodeChainConfigsRequest_Filter) Descriptor() ([]byte, []int) { + return file_node_v1_node_proto_rawDescGZIP(), []int{8, 0} +} + +func (x *ListNodeChainConfigsRequest_Filter) GetNodeId() string { + if x != nil { + return x.NodeId + } + return "" +} + +var File_node_v1_node_proto protoreflect.FileDescriptor + +var file_node_v1_node_proto_rawDesc = []byte{ + 0x0a, 0x12, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, + 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, + 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x43, 0x0a, 0x05, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x89, 0x04, 0x0a, 0x0a, 0x4f, 0x43, 0x52, + 0x31, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x42, 0x6f, 0x6f, 0x74, 0x73, + 0x74, 0x72, 0x61, 0x70, 0x12, 0x4a, 0x0a, 0x0e, 0x70, 0x32, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x5f, + 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x31, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x32, 0x50, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x52, 0x0c, 0x70, 0x32, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x12, 0x4a, 0x0a, 0x0e, 0x6f, 0x63, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x31, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x4f, 0x43, 0x52, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x0c, + 0x6f, 0x63, 0x72, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x61, 0x64, 0x64, 0x72, 0x1a, 0x46, 0x0a, 0x0c, 0x50, 0x32, + 0x50, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x65, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x65, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, + 0x65, 0x79, 0x1a, 0xbf, 0x01, 0x0a, 0x0c, 0x4f, 0x43, 0x52, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, + 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x13, + 0x6f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x66, 0x66, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x17, + 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, + 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x22, 0x81, 0x06, 0x0a, 0x0a, 0x4f, 0x43, 0x52, 0x32, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, + 0x0c, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, + 0x12, 0x4a, 0x0a, 0x0e, 0x70, 0x32, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x50, 0x32, 0x50, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x0c, + 0x70, 0x32, 0x70, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x4a, 0x0a, 0x0e, + 0x6f, 0x63, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4f, 0x43, + 0x52, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x0c, 0x6f, 0x63, 0x72, 0x4b, + 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x61, 0x64, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x61, 0x64, 0x64, 0x72, 0x12, 0x39, 0x0a, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x66, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x46, + 0x0a, 0x0c, 0x50, 0x32, 0x50, 0x4b, 0x65, 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x17, + 0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x1a, 0xbf, 0x01, 0x0a, 0x0c, 0x4f, 0x43, 0x52, 0x4b, 0x65, + 0x79, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, + 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, + 0x66, 0x66, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, + 0x12, 0x36, 0x0a, 0x17, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x69, 0x67, 0x6e, + 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x15, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, + 0x67, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x8d, 0x01, 0x0a, 0x07, 0x50, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x6d, 0x65, 0x72, 0x63, 0x75, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x6d, 0x65, 0x72, 0x63, 0x75, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, + 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x22, 0xf9, 0x01, 0x0a, 0x0b, 0x43, 0x68, 0x61, + 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x28, 0x0a, 0x05, 0x63, 0x68, 0x61, 0x69, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x05, 0x63, 0x68, 0x61, + 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x38, 0x0a, 0x0b, 0x6f, 0x63, 0x72, 0x31, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, 0x52, 0x31, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, + 0x6f, 0x63, 0x72, 0x31, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, 0x0b, 0x6f, 0x63, + 0x72, 0x32, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x43, + 0x52, 0x32, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x6f, 0x63, 0x72, 0x32, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x22, 0x20, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x38, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x6e, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, + 0x22, 0xd7, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x1a, 0x84, 0x01, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x10, + 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, 0x73, + 0x12, 0x35, 0x0a, 0x08, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, + 0x09, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x3c, 0x0a, 0x11, 0x4c, 0x69, + 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x27, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, + 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x43, + 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x1a, 0x21, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x6e, + 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, + 0x64, 0x65, 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x73, 0x2a, 0x52, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, + 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x56, 0x4d, 0x10, 0x01, + 0x12, 0x15, 0x0a, 0x11, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, + 0x4f, 0x4c, 0x41, 0x4e, 0x41, 0x10, 0x02, 0x2a, 0x63, 0x0a, 0x0c, 0x41, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x52, 0x43, 0x48, 0x49, + 0x56, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, + 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, + 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x32, 0x92, 0x02, 0x0a, + 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x07, + 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, + 0x73, 0x12, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x28, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, + 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x42, 0x09, 0x5a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_node_v1_node_proto_rawDescOnce sync.Once + file_node_v1_node_proto_rawDescData = file_node_v1_node_proto_rawDesc +) + +func file_node_v1_node_proto_rawDescGZIP() []byte { + file_node_v1_node_proto_rawDescOnce.Do(func() { + file_node_v1_node_proto_rawDescData = protoimpl.X.CompressGZIP(file_node_v1_node_proto_rawDescData) + }) + return file_node_v1_node_proto_rawDescData +} + +var file_node_v1_node_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_node_v1_node_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_node_v1_node_proto_goTypes = []interface{}{ + (ChainType)(0), // 0: api.node.v1.ChainType + (ArchiveState)(0), // 1: api.node.v1.ArchiveState + (*Chain)(nil), // 2: api.node.v1.Chain + (*OCR1Config)(nil), // 3: api.node.v1.OCR1Config + (*OCR2Config)(nil), // 4: api.node.v1.OCR2Config + (*ChainConfig)(nil), // 5: api.node.v1.ChainConfig + (*GetNodeRequest)(nil), // 6: api.node.v1.GetNodeRequest + (*GetNodeResponse)(nil), // 7: api.node.v1.GetNodeResponse + (*ListNodesRequest)(nil), // 8: api.node.v1.ListNodesRequest + (*ListNodesResponse)(nil), // 9: api.node.v1.ListNodesResponse + (*ListNodeChainConfigsRequest)(nil), // 10: api.node.v1.ListNodeChainConfigsRequest + (*ListNodeChainConfigsResponse)(nil), // 11: api.node.v1.ListNodeChainConfigsResponse + (*OCR1Config_P2PKeyBundle)(nil), // 12: api.node.v1.OCR1Config.P2PKeyBundle + (*OCR1Config_OCRKeyBundle)(nil), // 13: api.node.v1.OCR1Config.OCRKeyBundle + (*OCR2Config_P2PKeyBundle)(nil), // 14: api.node.v1.OCR2Config.P2PKeyBundle + (*OCR2Config_OCRKeyBundle)(nil), // 15: api.node.v1.OCR2Config.OCRKeyBundle + (*OCR2Config_Plugins)(nil), // 16: api.node.v1.OCR2Config.Plugins + (*ListNodesRequest_Filter)(nil), // 17: api.node.v1.ListNodesRequest.Filter + (*ListNodeChainConfigsRequest_Filter)(nil), // 18: api.node.v1.ListNodeChainConfigsRequest.Filter + (*Node)(nil), // 19: api.node.v1.Node + (*ptypes.Selector)(nil), // 20: api.label.Selector +} +var file_node_v1_node_proto_depIdxs = []int32{ + 0, // 0: api.node.v1.Chain.type:type_name -> api.node.v1.ChainType + 12, // 1: api.node.v1.OCR1Config.p2p_key_bundle:type_name -> api.node.v1.OCR1Config.P2PKeyBundle + 13, // 2: api.node.v1.OCR1Config.ocr_key_bundle:type_name -> api.node.v1.OCR1Config.OCRKeyBundle + 14, // 3: api.node.v1.OCR2Config.p2p_key_bundle:type_name -> api.node.v1.OCR2Config.P2PKeyBundle + 15, // 4: api.node.v1.OCR2Config.ocr_key_bundle:type_name -> api.node.v1.OCR2Config.OCRKeyBundle + 16, // 5: api.node.v1.OCR2Config.plugins:type_name -> api.node.v1.OCR2Config.Plugins + 2, // 6: api.node.v1.ChainConfig.chain:type_name -> api.node.v1.Chain + 3, // 7: api.node.v1.ChainConfig.ocr1_config:type_name -> api.node.v1.OCR1Config + 4, // 8: api.node.v1.ChainConfig.ocr2_config:type_name -> api.node.v1.OCR2Config + 19, // 9: api.node.v1.GetNodeResponse.node:type_name -> api.node.v1.Node + 17, // 10: api.node.v1.ListNodesRequest.filter:type_name -> api.node.v1.ListNodesRequest.Filter + 19, // 11: api.node.v1.ListNodesResponse.nodes:type_name -> api.node.v1.Node + 18, // 12: api.node.v1.ListNodeChainConfigsRequest.filter:type_name -> api.node.v1.ListNodeChainConfigsRequest.Filter + 5, // 13: api.node.v1.ListNodeChainConfigsResponse.chain_configs:type_name -> api.node.v1.ChainConfig + 1, // 14: api.node.v1.ListNodesRequest.Filter.archived:type_name -> api.node.v1.ArchiveState + 20, // 15: api.node.v1.ListNodesRequest.Filter.selectors:type_name -> api.label.Selector + 6, // 16: api.node.v1.NodeService.GetNode:input_type -> api.node.v1.GetNodeRequest + 8, // 17: api.node.v1.NodeService.ListNodes:input_type -> api.node.v1.ListNodesRequest + 10, // 18: api.node.v1.NodeService.ListNodeChainConfigs:input_type -> api.node.v1.ListNodeChainConfigsRequest + 7, // 19: api.node.v1.NodeService.GetNode:output_type -> api.node.v1.GetNodeResponse + 9, // 20: api.node.v1.NodeService.ListNodes:output_type -> api.node.v1.ListNodesResponse + 11, // 21: api.node.v1.NodeService.ListNodeChainConfigs:output_type -> api.node.v1.ListNodeChainConfigsResponse + 19, // [19:22] is the sub-list for method output_type + 16, // [16:19] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name +} + +func init() { file_node_v1_node_proto_init() } +func file_node_v1_node_proto_init() { + if File_node_v1_node_proto != nil { + return + } + file_node_v1_shared_proto_init() + if !protoimpl.UnsafeEnabled { + file_node_v1_node_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Chain); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OCR1Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OCR2Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChainConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetNodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNodesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNodesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNodeChainConfigsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNodeChainConfigsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OCR1Config_P2PKeyBundle); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OCR1Config_OCRKeyBundle); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OCR2Config_P2PKeyBundle); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OCR2Config_OCRKeyBundle); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OCR2Config_Plugins); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNodesRequest_Filter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_node_v1_node_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNodeChainConfigsRequest_Filter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_node_v1_node_proto_rawDesc, + NumEnums: 2, + NumMessages: 17, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_node_v1_node_proto_goTypes, + DependencyIndexes: file_node_v1_node_proto_depIdxs, + EnumInfos: file_node_v1_node_proto_enumTypes, + MessageInfos: file_node_v1_node_proto_msgTypes, + }.Build() + File_node_v1_node_proto = out.File + file_node_v1_node_proto_rawDesc = nil + file_node_v1_node_proto_goTypes = nil + file_node_v1_node_proto_depIdxs = nil +} diff --git a/integration-tests/deployment/jd/node/v1/node_grpc.pb.go b/integration-tests/deployment/jd/node/v1/node_grpc.pb.go new file mode 100644 index 0000000000..5fc0c505ee --- /dev/null +++ b/integration-tests/deployment/jd/node/v1/node_grpc.pb.go @@ -0,0 +1,187 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v4.25.3 +// source: node/v1/node.proto + +package v1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + NodeService_GetNode_FullMethodName = "/api.node.v1.NodeService/GetNode" + NodeService_ListNodes_FullMethodName = "/api.node.v1.NodeService/ListNodes" + NodeService_ListNodeChainConfigs_FullMethodName = "/api.node.v1.NodeService/ListNodeChainConfigs" +) + +// NodeServiceClient is the client API for NodeService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type NodeServiceClient interface { + // GetNode retrieves the details of a node by its unique identifier. + GetNode(ctx context.Context, in *GetNodeRequest, opts ...grpc.CallOption) (*GetNodeResponse, error) + // ListNodes returns a list of nodes, optionally filtered by the provided criteria. + ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error) + ListNodeChainConfigs(ctx context.Context, in *ListNodeChainConfigsRequest, opts ...grpc.CallOption) (*ListNodeChainConfigsResponse, error) +} + +type nodeServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewNodeServiceClient(cc grpc.ClientConnInterface) NodeServiceClient { + return &nodeServiceClient{cc} +} + +func (c *nodeServiceClient) GetNode(ctx context.Context, in *GetNodeRequest, opts ...grpc.CallOption) (*GetNodeResponse, error) { + out := new(GetNodeResponse) + err := c.cc.Invoke(ctx, NodeService_GetNode_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error) { + out := new(ListNodesResponse) + err := c.cc.Invoke(ctx, NodeService_ListNodes_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) ListNodeChainConfigs(ctx context.Context, in *ListNodeChainConfigsRequest, opts ...grpc.CallOption) (*ListNodeChainConfigsResponse, error) { + out := new(ListNodeChainConfigsResponse) + err := c.cc.Invoke(ctx, NodeService_ListNodeChainConfigs_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// NodeServiceServer is the server API for NodeService service. +// All implementations must embed UnimplementedNodeServiceServer +// for forward compatibility +type NodeServiceServer interface { + // GetNode retrieves the details of a node by its unique identifier. + GetNode(context.Context, *GetNodeRequest) (*GetNodeResponse, error) + // ListNodes returns a list of nodes, optionally filtered by the provided criteria. + ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) + ListNodeChainConfigs(context.Context, *ListNodeChainConfigsRequest) (*ListNodeChainConfigsResponse, error) + mustEmbedUnimplementedNodeServiceServer() +} + +// UnimplementedNodeServiceServer must be embedded to have forward compatible implementations. +type UnimplementedNodeServiceServer struct { +} + +func (UnimplementedNodeServiceServer) GetNode(context.Context, *GetNodeRequest) (*GetNodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetNode not implemented") +} +func (UnimplementedNodeServiceServer) ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListNodes not implemented") +} +func (UnimplementedNodeServiceServer) ListNodeChainConfigs(context.Context, *ListNodeChainConfigsRequest) (*ListNodeChainConfigsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListNodeChainConfigs not implemented") +} +func (UnimplementedNodeServiceServer) mustEmbedUnimplementedNodeServiceServer() {} + +// UnsafeNodeServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to NodeServiceServer will +// result in compilation errors. +type UnsafeNodeServiceServer interface { + mustEmbedUnimplementedNodeServiceServer() +} + +func RegisterNodeServiceServer(s grpc.ServiceRegistrar, srv NodeServiceServer) { + s.RegisterService(&NodeService_ServiceDesc, srv) +} + +func _NodeService_GetNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetNodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).GetNode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_GetNode_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).GetNode(ctx, req.(*GetNodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_ListNodes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListNodesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).ListNodes(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_ListNodes_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).ListNodes(ctx, req.(*ListNodesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_ListNodeChainConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListNodeChainConfigsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).ListNodeChainConfigs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_ListNodeChainConfigs_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).ListNodeChainConfigs(ctx, req.(*ListNodeChainConfigsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// NodeService_ServiceDesc is the grpc.ServiceDesc for NodeService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var NodeService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "api.node.v1.NodeService", + HandlerType: (*NodeServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetNode", + Handler: _NodeService_GetNode_Handler, + }, + { + MethodName: "ListNodes", + Handler: _NodeService_ListNodes_Handler, + }, + { + MethodName: "ListNodeChainConfigs", + Handler: _NodeService_ListNodeChainConfigs_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "node/v1/node.proto", +} diff --git a/integration-tests/deployment/jd/node/v1/shared.pb.go b/integration-tests/deployment/jd/node/v1/shared.pb.go new file mode 100644 index 0000000000..58c47e947e --- /dev/null +++ b/integration-tests/deployment/jd/node/v1/shared.pb.go @@ -0,0 +1,239 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.0 +// protoc v4.25.3 +// source: node/v1/shared.proto + +package v1 + +import ( + ptypes "github.com/smartcontractkit/job-distributor/pkg/api/gen/shared/ptypes" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Node represents a node within the Job Distributor system. +type Node struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Unique identifier for the node. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Human-readable name for the node. + PublicKey string `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // Public key used for secure communications. + IsEnabled bool `protobuf:"varint,4,opt,name=is_enabled,json=isEnabled,proto3" json:"is_enabled,omitempty"` // Indicates if the node is currently enabled. + IsConnected bool `protobuf:"varint,5,opt,name=is_connected,json=isConnected,proto3" json:"is_connected,omitempty"` // Indicates if the node is currently connected to the network. + Labels []*ptypes.Label `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty"` // Set of labels associated with the node. + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Timestamp when the node was created. + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // Timestamp when the node was last updated. + ArchivedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=archived_at,json=archivedAt,proto3" json:"archived_at,omitempty"` // Timestamp when the node was archived. +} + +func (x *Node) Reset() { + *x = Node{} + if protoimpl.UnsafeEnabled { + mi := &file_node_v1_shared_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Node) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Node) ProtoMessage() {} + +func (x *Node) ProtoReflect() protoreflect.Message { + mi := &file_node_v1_shared_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Node.ProtoReflect.Descriptor instead. +func (*Node) Descriptor() ([]byte, []int) { + return file_node_v1_shared_proto_rawDescGZIP(), []int{0} +} + +func (x *Node) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Node) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Node) GetPublicKey() string { + if x != nil { + return x.PublicKey + } + return "" +} + +func (x *Node) GetIsEnabled() bool { + if x != nil { + return x.IsEnabled + } + return false +} + +func (x *Node) GetIsConnected() bool { + if x != nil { + return x.IsConnected + } + return false +} + +func (x *Node) GetLabels() []*ptypes.Label { + if x != nil { + return x.Labels + } + return nil +} + +func (x *Node) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *Node) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *Node) GetArchivedAt() *timestamppb.Timestamp { + if x != nil { + return x.ArchivedAt + } + return nil +} + +var File_node_v1_shared_proto protoreflect.FileDescriptor + +var file_node_v1_shared_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x61, 0x70, 0x69, 0x2e, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2f, 0x70, 0x74, 0x79, + 0x70, 0x65, 0x73, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xe8, 0x02, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x69, + 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x69, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, + 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x28, 0x0a, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, + 0x0b, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x42, 0x09, 0x5a, 0x07, 0x6e, 0x6f, + 0x64, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_node_v1_shared_proto_rawDescOnce sync.Once + file_node_v1_shared_proto_rawDescData = file_node_v1_shared_proto_rawDesc +) + +func file_node_v1_shared_proto_rawDescGZIP() []byte { + file_node_v1_shared_proto_rawDescOnce.Do(func() { + file_node_v1_shared_proto_rawDescData = protoimpl.X.CompressGZIP(file_node_v1_shared_proto_rawDescData) + }) + return file_node_v1_shared_proto_rawDescData +} + +var file_node_v1_shared_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_node_v1_shared_proto_goTypes = []interface{}{ + (*Node)(nil), // 0: api.node.v1.Node + (*ptypes.Label)(nil), // 1: api.label.Label + (*timestamppb.Timestamp)(nil), // 2: google.protobuf.Timestamp +} +var file_node_v1_shared_proto_depIdxs = []int32{ + 1, // 0: api.node.v1.Node.labels:type_name -> api.label.Label + 2, // 1: api.node.v1.Node.created_at:type_name -> google.protobuf.Timestamp + 2, // 2: api.node.v1.Node.updated_at:type_name -> google.protobuf.Timestamp + 2, // 3: api.node.v1.Node.archived_at:type_name -> google.protobuf.Timestamp + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_node_v1_shared_proto_init() } +func file_node_v1_shared_proto_init() { + if File_node_v1_shared_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_node_v1_shared_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Node); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_node_v1_shared_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_node_v1_shared_proto_goTypes, + DependencyIndexes: file_node_v1_shared_proto_depIdxs, + MessageInfos: file_node_v1_shared_proto_msgTypes, + }.Build() + File_node_v1_shared_proto = out.File + file_node_v1_shared_proto_rawDesc = nil + file_node_v1_shared_proto_goTypes = nil + file_node_v1_shared_proto_depIdxs = nil +} diff --git a/integration-tests/deployment/jd/shared/ptypes/label.pb.go b/integration-tests/deployment/jd/shared/ptypes/label.pb.go new file mode 100644 index 0000000000..e8195bd6c3 --- /dev/null +++ b/integration-tests/deployment/jd/shared/ptypes/label.pb.go @@ -0,0 +1,311 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.29.0 +// protoc v4.25.3 +// source: shared/ptypes/label.proto + +package ptypes + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// SelectorOp defines the operation to be used in a selector +type SelectorOp int32 + +const ( + SelectorOp_EQ SelectorOp = 0 + SelectorOp_NOT_EQ SelectorOp = 1 + SelectorOp_IN SelectorOp = 2 + SelectorOp_NOT_IN SelectorOp = 3 + SelectorOp_EXIST SelectorOp = 4 + SelectorOp_NOT_EXIST SelectorOp = 5 +) + +// Enum value maps for SelectorOp. +var ( + SelectorOp_name = map[int32]string{ + 0: "EQ", + 1: "NOT_EQ", + 2: "IN", + 3: "NOT_IN", + 4: "EXIST", + 5: "NOT_EXIST", + } + SelectorOp_value = map[string]int32{ + "EQ": 0, + "NOT_EQ": 1, + "IN": 2, + "NOT_IN": 3, + "EXIST": 4, + "NOT_EXIST": 5, + } +) + +func (x SelectorOp) Enum() *SelectorOp { + p := new(SelectorOp) + *p = x + return p +} + +func (x SelectorOp) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SelectorOp) Descriptor() protoreflect.EnumDescriptor { + return file_shared_ptypes_label_proto_enumTypes[0].Descriptor() +} + +func (SelectorOp) Type() protoreflect.EnumType { + return &file_shared_ptypes_label_proto_enumTypes[0] +} + +func (x SelectorOp) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SelectorOp.Descriptor instead. +func (SelectorOp) EnumDescriptor() ([]byte, []int) { + return file_shared_ptypes_label_proto_rawDescGZIP(), []int{0} +} + +// Label defines a label as a key value pair +type Label struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value *string `protobuf:"bytes,2,opt,name=value,proto3,oneof" json:"value,omitempty"` +} + +func (x *Label) Reset() { + *x = Label{} + if protoimpl.UnsafeEnabled { + mi := &file_shared_ptypes_label_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Label) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Label) ProtoMessage() {} + +func (x *Label) ProtoReflect() protoreflect.Message { + mi := &file_shared_ptypes_label_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Label.ProtoReflect.Descriptor instead. +func (*Label) Descriptor() ([]byte, []int) { + return file_shared_ptypes_label_proto_rawDescGZIP(), []int{0} +} + +func (x *Label) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *Label) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value + } + return "" +} + +// Selector defines a selector as a key value pair with an operation +type Selector struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Op SelectorOp `protobuf:"varint,2,opt,name=op,proto3,enum=api.label.SelectorOp" json:"op,omitempty"` + Value *string `protobuf:"bytes,3,opt,name=value,proto3,oneof" json:"value,omitempty"` +} + +func (x *Selector) Reset() { + *x = Selector{} + if protoimpl.UnsafeEnabled { + mi := &file_shared_ptypes_label_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Selector) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Selector) ProtoMessage() {} + +func (x *Selector) ProtoReflect() protoreflect.Message { + mi := &file_shared_ptypes_label_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Selector.ProtoReflect.Descriptor instead. +func (*Selector) Descriptor() ([]byte, []int) { + return file_shared_ptypes_label_proto_rawDescGZIP(), []int{1} +} + +func (x *Selector) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *Selector) GetOp() SelectorOp { + if x != nil { + return x.Op + } + return SelectorOp_EQ +} + +func (x *Selector) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value + } + return "" +} + +var File_shared_ptypes_label_proto protoreflect.FileDescriptor + +var file_shared_ptypes_label_proto_rawDesc = []byte{ + 0x0a, 0x19, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x61, 0x70, 0x69, + 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x3e, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x68, 0x0a, 0x08, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x19, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x2a, 0x4e, 0x0a, 0x0a, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4f, 0x70, 0x12, 0x06, + 0x0a, 0x02, 0x45, 0x51, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x51, + 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, + 0x54, 0x5f, 0x49, 0x4e, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, + 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x05, + 0x42, 0x47, 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, + 0x6d, 0x61, 0x72, 0x74, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6b, 0x69, 0x74, 0x2f, + 0x6a, 0x6f, 0x62, 0x2d, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x6f, 0x72, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x2f, 0x70, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_shared_ptypes_label_proto_rawDescOnce sync.Once + file_shared_ptypes_label_proto_rawDescData = file_shared_ptypes_label_proto_rawDesc +) + +func file_shared_ptypes_label_proto_rawDescGZIP() []byte { + file_shared_ptypes_label_proto_rawDescOnce.Do(func() { + file_shared_ptypes_label_proto_rawDescData = protoimpl.X.CompressGZIP(file_shared_ptypes_label_proto_rawDescData) + }) + return file_shared_ptypes_label_proto_rawDescData +} + +var file_shared_ptypes_label_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_shared_ptypes_label_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_shared_ptypes_label_proto_goTypes = []interface{}{ + (SelectorOp)(0), // 0: api.label.SelectorOp + (*Label)(nil), // 1: api.label.Label + (*Selector)(nil), // 2: api.label.Selector +} +var file_shared_ptypes_label_proto_depIdxs = []int32{ + 0, // 0: api.label.Selector.op:type_name -> api.label.SelectorOp + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_shared_ptypes_label_proto_init() } +func file_shared_ptypes_label_proto_init() { + if File_shared_ptypes_label_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_shared_ptypes_label_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Label); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_shared_ptypes_label_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Selector); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_shared_ptypes_label_proto_msgTypes[0].OneofWrappers = []interface{}{} + file_shared_ptypes_label_proto_msgTypes[1].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_shared_ptypes_label_proto_rawDesc, + NumEnums: 1, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_shared_ptypes_label_proto_goTypes, + DependencyIndexes: file_shared_ptypes_label_proto_depIdxs, + EnumInfos: file_shared_ptypes_label_proto_enumTypes, + MessageInfos: file_shared_ptypes_label_proto_msgTypes, + }.Build() + File_shared_ptypes_label_proto = out.File + file_shared_ptypes_label_proto_rawDesc = nil + file_shared_ptypes_label_proto_goTypes = nil + file_shared_ptypes_label_proto_depIdxs = nil +} diff --git a/integration-tests/deployment/memory/environment.go b/integration-tests/deployment/memory/environment.go index ec80c991cd..31bc8e4cd4 100644 --- a/integration-tests/deployment/memory/environment.go +++ b/integration-tests/deployment/memory/environment.go @@ -87,9 +87,10 @@ func NewMemoryEnvironmentExistingChains(t *testing.T, lggr logger.Logger, return deployment.Environment{ Name: Memory, Offchain: NewMemoryJobClient(nodes), - NodeIDs: nodeIDs, - Chains: chains, - Logger: lggr, + // Note these have the p2p_ prefix. + NodeIDs: nodeIDs, + Chains: chains, + Logger: lggr, } } diff --git a/integration-tests/deployment/memory/job_client.go b/integration-tests/deployment/memory/job_client.go index b6053707ad..a9e837eab2 100644 --- a/integration-tests/deployment/memory/job_client.go +++ b/integration-tests/deployment/memory/job_client.go @@ -2,12 +2,13 @@ package memory import ( "context" + "strconv" + "github.com/ethereum/go-ethereum/common" "google.golang.org/grpc" jobv1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/job/v1" nodev1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/node/v1" - "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/validate" ) @@ -15,16 +16,6 @@ type JobClient struct { Nodes map[string]Node } -func (j JobClient) ArchiveNode(ctx context.Context, in *nodev1.ArchiveNodeRequest, opts ...grpc.CallOption) (*nodev1.ArchiveNodeResponse, error) { - //TODO implement me - panic("implement me") -} - -func (j JobClient) CreateNode(ctx context.Context, in *nodev1.CreateNodeRequest, opts ...grpc.CallOption) (*nodev1.CreateNodeResponse, error) { - //TODO implement me - panic("implement me") -} - func (j JobClient) GetNode(ctx context.Context, in *nodev1.GetNodeRequest, opts ...grpc.CallOption) (*nodev1.GetNodeResponse, error) { //TODO implement me panic("implement me") @@ -37,34 +28,41 @@ func (j JobClient) ListNodes(ctx context.Context, in *nodev1.ListNodesRequest, o func (j JobClient) ListNodeChainConfigs(ctx context.Context, in *nodev1.ListNodeChainConfigsRequest, opts ...grpc.CallOption) (*nodev1.ListNodeChainConfigsResponse, error) { n := j.Nodes[in.Filter.NodeId] - // TODO: I think we can pull it from the feeds manager. - return &nodev1.ListNodeChainConfigsResponse{ - ChainConfigs: []*nodev1.ChainConfig{ - { - Ocr2Config: &nodev1.OCR2Config{ - P2PKeyBundle: &nodev1.OCR2Config_P2PKeyBundle{ - PeerId: n.Keys.PeerID.String(), - PublicKey: "", - }, - OcrKeyBundle: &nodev1.OCR2Config_OCRKeyBundle{ - BundleId: n.Keys.OCRKeyBundle.ID(), - }, - IsBootstrap: n.IsBoostrap, - Multiaddr: n.Addr.String(), + offpk := n.Keys.OCRKeyBundle.OffchainPublicKey() + cpk := n.Keys.OCRKeyBundle.ConfigEncryptionPublicKey() + var chainConfigs []*nodev1.ChainConfig + for evmChainID, transmitter := range n.Keys.TransmittersByEVMChainID { + chainConfigs = append(chainConfigs, &nodev1.ChainConfig{ + Chain: &nodev1.Chain{ + Id: strconv.Itoa(int(evmChainID)), + Type: nodev1.ChainType_CHAIN_TYPE_EVM, + }, + AccountAddress: transmitter.String(), + AdminAddress: "", + Ocr1Config: nil, + Ocr2Config: &nodev1.OCR2Config{ + Enabled: true, + IsBootstrap: n.IsBoostrap, + P2PKeyBundle: &nodev1.OCR2Config_P2PKeyBundle{ + PeerId: n.Keys.PeerID.String(), + }, + OcrKeyBundle: &nodev1.OCR2Config_OCRKeyBundle{ + BundleId: n.Keys.OCRKeyBundle.ID(), + ConfigPublicKey: common.Bytes2Hex(cpk[:]), + OffchainPublicKey: common.Bytes2Hex(offpk[:]), + OnchainSigningAddress: n.Keys.OCRKeyBundle.OnChainPublicKey(), }, + Multiaddr: n.Addr.String(), + Plugins: nil, + ForwarderAddress: "", }, - }, - }, nil -} - -func (j JobClient) UnarchiveNode(ctx context.Context, in *nodev1.UnarchiveNodeRequest, opts ...grpc.CallOption) (*nodev1.UnarchiveNodeResponse, error) { - //TODO implement me - panic("implement me") -} + }) + } -func (j JobClient) UpdateNode(ctx context.Context, in *nodev1.UpdateNodeRequest, opts ...grpc.CallOption) (*nodev1.UpdateNodeResponse, error) { - //TODO implement me - panic("implement me") + // TODO: I think we can pull it from the feeds manager. + return &nodev1.ListNodeChainConfigsResponse{ + ChainConfigs: chainConfigs, + }, nil } func (j JobClient) GetJob(ctx context.Context, in *jobv1.GetJobRequest, opts ...grpc.CallOption) (*jobv1.GetJobResponse, error) { diff --git a/integration-tests/deployment/memory/node.go b/integration-tests/deployment/memory/node.go index cb6f62d94b..9b6616d8da 100644 --- a/integration-tests/deployment/memory/node.go +++ b/integration-tests/deployment/memory/node.go @@ -92,9 +92,11 @@ func NewNode( c.P2P.V2.ListenAddresses = &[]string{fmt.Sprintf("127.0.0.1:%d", port)} // Enable Capabilities, This is a pre-requisite for registrySyncer to work. - c.Capabilities.ExternalRegistry.NetworkID = ptr(relay.NetworkEVM) - c.Capabilities.ExternalRegistry.ChainID = ptr(strconv.FormatUint(uint64(registryConfig.EVMChainID), 10)) - c.Capabilities.ExternalRegistry.Address = ptr(registryConfig.Contract.String()) + if registryConfig.Contract != common.HexToAddress("0x0") { + c.Capabilities.ExternalRegistry.NetworkID = ptr(relay.NetworkEVM) + c.Capabilities.ExternalRegistry.ChainID = ptr(strconv.FormatUint(uint64(registryConfig.EVMChainID), 10)) + c.Capabilities.ExternalRegistry.Address = ptr(registryConfig.Contract.String()) + } // OCR configs c.OCR.Enabled = ptr(false) @@ -187,9 +189,9 @@ func NewNode( } type Keys struct { - PeerID p2pkey.PeerID - Transmitters map[uint64]common.Address - OCRKeyBundle ocr2key.KeyBundle + PeerID p2pkey.PeerID + TransmittersByEVMChainID map[uint64]common.Address + OCRKeyBundle ocr2key.KeyBundle } func CreateKeys(t *testing.T, @@ -229,9 +231,9 @@ func CreateKeys(t *testing.T, keybundle, err := app.GetKeyStore().OCR2().Create(ctx, chaintype.EVM) require.NoError(t, err) return Keys{ - PeerID: peerID, - Transmitters: transmitters, - OCRKeyBundle: keybundle, + PeerID: peerID, + TransmittersByEVMChainID: transmitters, + OCRKeyBundle: keybundle, } } diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 59961a96cf..cc89a1212d 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -35,27 +35,29 @@ require ( github.com/smartcontractkit/ccip-owner-contracts v0.0.0-20240808195812-ae0378684685 github.com/smartcontractkit/chain-selectors v1.0.21 github.com/smartcontractkit/chainlink-automation v1.0.4 + github.com/smartcontractkit/chainlink-ccip v0.0.0-20240812165928-f1cc95338422 github.com/smartcontractkit/chainlink-common v0.2.1-0.20240717132349-ee5af9b79834 github.com/smartcontractkit/chainlink-testing-framework v1.33.0 github.com/smartcontractkit/chainlink-testing-framework/grafana v0.0.0-20240405215812-5a72bc9af239 github.com/smartcontractkit/chainlink/integration-tests v0.0.0-00010101000000-000000000000 github.com/smartcontractkit/chainlink/v2 v2.0.0-00010101000000-000000000000 github.com/smartcontractkit/havoc/k8schaos v0.0.0-20240409145249-e78d20847e37 + github.com/smartcontractkit/job-distributor v0.1.0 github.com/smartcontractkit/libocr v0.0.0-20240717100443-f6226e09bee7 github.com/smartcontractkit/seth v1.0.12 github.com/smartcontractkit/wasp v0.4.5 - github.com/spf13/cobra v1.8.0 + github.com/spf13/cobra v1.8.1 github.com/stretchr/testify v1.9.0 github.com/test-go/testify v1.1.4 - github.com/testcontainers/testcontainers-go v0.28.0 + github.com/testcontainers/testcontainers-go v0.32.0 github.com/umbracle/ethgo v0.1.3 go.uber.org/atomic v1.11.0 go.uber.org/multierr v1.11.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.25.0 + golang.org/x/crypto v0.26.0 golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 - golang.org/x/sync v0.7.0 - golang.org/x/text v0.16.0 + golang.org/x/sync v0.8.0 + golang.org/x/text v0.17.0 google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.2 gopkg.in/guregu/null.v4 v4.0.0 @@ -93,8 +95,8 @@ require ( github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/sprig/v3 v3.2.3 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/Microsoft/hcsshim v0.11.4 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/Microsoft/hcsshim v0.11.5 // indirect github.com/NethermindEth/juno v0.3.1 // indirect github.com/NethermindEth/starknet.go v0.7.1-0.20240401080518-34a506f3cfdb // indirect github.com/VictoriaMetrics/fastcache v1.12.1 // indirect @@ -137,7 +139,8 @@ require ( github.com/confio/ics23/go v0.9.0 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect - github.com/containerd/containerd v1.7.12 // indirect + github.com/containerd/containerd v1.7.18 // indirect + github.com/containerd/errdefs v0.1.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect @@ -163,9 +166,9 @@ require ( github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect - github.com/distribution/reference v0.5.0 // indirect + github.com/distribution/reference v0.6.0 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker v25.0.2+incompatible // indirect + github.com/docker/docker v27.0.3+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dominikbraun/graph v0.23.0 // indirect @@ -184,7 +187,7 @@ require ( github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/fvbommel/sortorder v1.1.0 // indirect - github.com/gabriel-vasile/mimetype v1.4.2 // indirect + github.com/gabriel-vasile/mimetype v1.4.3 // indirect github.com/gagliardetto/binary v0.7.7 // indirect github.com/gagliardetto/solana-go v1.8.4 // indirect github.com/gagliardetto/treeout v0.1.4 // indirect @@ -203,7 +206,7 @@ require ( github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-openapi/analysis v0.21.4 // indirect github.com/go-openapi/errors v0.20.4 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect @@ -215,7 +218,7 @@ require ( github.com/go-openapi/validate v0.22.1 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.15.5 // indirect + github.com/go-playground/validator/v10 v10.22.0 // indirect github.com/go-redis/redis/v8 v8.11.5 // indirect github.com/go-webauthn/webauthn v0.9.4 // indirect github.com/go-webauthn/x v0.1.5 // indirect @@ -262,7 +265,7 @@ require ( github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect - github.com/hashicorp/consul/api v1.25.1 // indirect + github.com/hashicorp/consul/api v1.28.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-envparse v0.1.0 // indirect @@ -307,13 +310,13 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/julienschmidt/httprouter v1.3.0 // indirect github.com/kelseyhightower/envconfig v1.4.0 // indirect - github.com/klauspost/compress v1.17.3 // indirect + github.com/klauspost/compress v1.17.7 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a // indirect - github.com/leodido/go-urn v1.2.4 // indirect + github.com/leodido/go-urn v1.4.0 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect github.com/linxGnu/grocksdb v1.7.16 // indirect @@ -334,6 +337,7 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect + github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/spdystream v0.4.0 // indirect github.com/moby/sys/sequential v0.5.0 // indirect @@ -353,7 +357,7 @@ require ( github.com/oklog/ulid v1.3.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0-rc5 // indirect + github.com/opencontainers/image-spec v1.1.0 // indirect github.com/opentracing-contrib/go-grpc v0.0.0-20210225150812-73cb765af46e // indirect github.com/opentracing-contrib/go-stdlib v1.0.0 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect @@ -388,7 +392,6 @@ require ( github.com/shirou/gopsutil/v3 v3.24.3 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/smartcontractkit/chainlink-ccip v0.0.0-20240812165928-f1cc95338422 // indirect github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240710121324-3ed288aa9b45 // indirect github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240718160222-2dc0c8136bfa // indirect github.com/smartcontractkit/chainlink-feeds v0.0.0-20240710170203-5b41615da827 // indirect @@ -396,14 +399,14 @@ require ( github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240709043547-03612098f799 // indirect github.com/smartcontractkit/tdh2/go/ocr2/decryptionplugin v0.0.0-20230906073235-9e478e5e19f1 // indirect github.com/smartcontractkit/tdh2/go/tdh2 v0.0.0-20230906073235-9e478e5e19f1 // indirect - github.com/smartcontractkit/wsrpc v0.7.3 // indirect + github.com/smartcontractkit/wsrpc v0.8.1 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/sony/gobreaker v0.5.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.18.2 // indirect + github.com/spf13/viper v1.19.0 // indirect github.com/status-im/keycard-go v0.2.0 // indirect github.com/streamingfast/logging v0.0.0-20220405224725-2755dab2ce75 // indirect github.com/stretchr/objx v0.5.2 // indirect @@ -435,14 +438,14 @@ require ( go.dedis.ch/fixbuf v1.0.3 // indirect go.dedis.ch/kyber/v3 v3.1.0 // indirect go.etcd.io/bbolt v1.3.8 // indirect - go.etcd.io/etcd/api/v3 v3.5.10 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect - go.etcd.io/etcd/client/v3 v3.5.10 // indirect + go.etcd.io/etcd/api/v3 v3.5.12 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.12 // indirect + go.etcd.io/etcd/client/v3 v3.5.12 // indirect go.mongodb.org/mongo-driver v1.15.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/collector/pdata v1.0.0-rcv0016 // indirect go.opentelemetry.io/collector/semconv v0.87.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect go.opentelemetry.io/otel v1.28.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect @@ -459,8 +462,8 @@ require ( golang.org/x/mod v0.19.0 // indirect golang.org/x/net v0.27.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/term v0.22.0 // indirect + golang.org/x/sys v0.23.0 // indirect + golang.org/x/term v0.23.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.23.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect @@ -480,7 +483,7 @@ require ( k8s.io/kube-openapi v0.0.0-20240709000822-3c01b740850f // indirect k8s.io/kubectl v0.28.2 // indirect k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 // indirect - nhooyr.io/websocket v1.8.7 // indirect + nhooyr.io/websocket v1.8.10 // indirect pgregory.net/rapid v1.1.0 // indirect rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/controller-runtime v0.16.2 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index db13878e67..cc864dedf0 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -135,10 +135,10 @@ github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0 github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= -github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/Microsoft/hcsshim v0.11.5 h1:haEcLNpj9Ka1gd3B3tAEs9CpE0c+1IhoL59w/exYU38= +github.com/Microsoft/hcsshim v0.11.5/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU= github.com/NethermindEth/juno v0.3.1 h1:AW72LiAm9gqUeCVJWvepnZcTnpU4Vkl0KzPMxS+42FA= github.com/NethermindEth/juno v0.3.1/go.mod h1:SGbTpgGaCsxhFsKOid7Ylnz//WZ8swtILk+NbHGsk/Q= github.com/NethermindEth/starknet.go v0.7.1-0.20240401080518-34a506f3cfdb h1:Mv8SscePPyw2ju4igIJAjFgcq5zCQfjgbz53DwYu5mc= @@ -317,10 +317,12 @@ github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/Yj github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/containerd/containerd v1.7.12 h1:+KQsnv4VnzyxWcfO9mlxxELaoztsDEjOuCMPAuPqgU0= -github.com/containerd/containerd v1.7.12/go.mod h1:/5OMpE1p0ylxtEUGY8kuCYkDRzJm9NO1TFMWjUpdevk= +github.com/containerd/containerd v1.7.18 h1:jqjZTQNfXGoEaZdW1WwPU0RqSn1Bm2Ay/KJPUuO8nao= +github.com/containerd/containerd v1.7.18/go.mod h1:IYEk9/IO6wAPUz2bCMVUbsfXjzw5UNP5fLz4PsUygQ4= github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM= github.com/containerd/continuity v0.4.2/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= +github.com/containerd/errdefs v0.1.0 h1:m0wCRBiu1WJT/Fr+iOoQHMQS/eP5myQ8lCv4Dz5ZURM= +github.com/containerd/errdefs v0.1.0/go.mod h1:YgWiiHtLmSeBrvpw+UfPijzbLaB77mEG1WwJTDETIV0= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= @@ -364,8 +366,8 @@ github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHf github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= @@ -411,14 +413,14 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/r github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/digitalocean/godo v1.99.0 h1:gUHO7n9bDaZFWvbzOum4bXE0/09ZuYA9yA8idQHX57E= github.com/digitalocean/godo v1.99.0/go.mod h1:SsS2oXo2rznfM/nORlZ/6JaUJZFhmKTib1YhopUc8NA= -github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= -github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= +github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v25.0.2+incompatible h1:/OaKeauroa10K4Nqavw4zlhcDq/WBcPMc5DbjOGgozY= -github.com/docker/docker v25.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.0.3+incompatible h1:aBGI9TeQ4MPlhquTQKq9XbK79rKFVwXNUAYz9aXyEBE= +github.com/docker/docker v27.0.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -481,8 +483,8 @@ github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQ github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/fxamacker/cbor/v2 v2.6.0 h1:sU6J2usfADwWlYDAFhZBQ6TnLFBHxgesMrQfQgk1tWA= github.com/fxamacker/cbor/v2 v2.6.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= -github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= -github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= +github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= github.com/gagliardetto/binary v0.7.7 h1:QZpT38+sgoPg+TIQjH94sLbl/vX+nlIRA37pEyOsjfY= github.com/gagliardetto/binary v0.7.7/go.mod h1:mUuay5LL8wFVnIlecHakSZMvcdqfs+CsotR5n77kyjM= github.com/gagliardetto/gofuzz v1.2.2 h1:XL/8qDMzcgvR4+CyRQW9UGdwPRPMHVJfqQ/uMvSUuQw= @@ -510,7 +512,6 @@ github.com/gin-contrib/size v0.0.0-20230212012657-e14a14094dc4 h1:Z9J0PVIt1PuibO github.com/gin-contrib/size v0.0.0-20230212012657-e14a14094dc4/go.mod h1:CEPcgZiz8998l9E8fDm16h8UfHRL7b+5oG0j/0koeVw= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= github.com/go-asn1-ber/asn1-ber v1.5.5 h1:MNHlNMBDgEKD4TcKr36vQN68BA00aDfjIt3/bD50WnA= @@ -540,8 +541,9 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc= github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo= @@ -577,18 +579,14 @@ github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+Gr github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU= github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.15.5 h1:LEBecTWb/1j5TNY1YYG2RcOUN3R7NLylN+x8TTueE24= -github.com/go-playground/validator/v10 v10.15.5/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/go-playground/validator/v10 v10.22.0 h1:k6HsTZ0sTnROkhS//R0O+55JgM8C4Bx7ia+JlgcnOao= +github.com/go-playground/validator/v10 v10.22.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= github.com/go-resty/resty/v2 v2.11.0 h1:i7jMfNOJYMp69lq7qozJP+bjgzfAzeOhuGlyDrqxT/8= @@ -632,15 +630,6 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= -github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= -github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/gobwas/ws v1.2.1 h1:F2aeBZrm2NDsc7vbovKrWSogd4wvfAxg0FQ89/iqOTk= -github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= @@ -757,7 +746,6 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3 github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -765,8 +753,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= -github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= +github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/gophercloud/gophercloud v1.5.0 h1:cDN6XFCLKiiqvYpjQLq9AiM7RDRbIC9450WpPH+yvXo= github.com/gophercloud/gophercloud v1.5.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -781,7 +769,6 @@ github.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kX github.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo= github.com/gorilla/sessions v1.2.2 h1:lqzMYz6bOfvn2WriPUjNByzeXIlVzURcPmgMczkmTjY= github.com/gorilla/sessions v1.2.2/go.mod h1:ePLdVu+jbEgHH+KWw8I1z2wqd0BAdAQh/8LRvBeoNcQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= @@ -833,8 +820,8 @@ github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/b github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.25.1 h1:CqrdhYzc8XZuPnhIYZWH45toM0LB9ZeYr/gvpLVI3PE= -github.com/hashicorp/consul/api v1.25.1/go.mod h1:iiLVwR/htV7mas/sy0O+XSuEnrdBUUydemjxcUrAt4g= +github.com/hashicorp/consul/api v1.28.2 h1:mXfkRHrpHN4YY3RqL09nXU1eHKLNiuAN4kHvDQ16k/8= +github.com/hashicorp/consul/api v1.28.2/go.mod h1:KyzqzgMEya+IZPcD65YFoOVAgPpbfERu4I/tzG6/ueE= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.16.0 h1:SE9m0W6DEfgIVCJX7xU+iv/hUl4m/nxqMTnCdMxDpJ8= github.com/hashicorp/consul/sdk v0.16.0/go.mod h1:7pxqqhqoaPqnBnzXD1StKed62LqJeClzVsUEy85Zr0A= @@ -1013,7 +1000,6 @@ github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFF github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= @@ -1027,12 +1013,12 @@ github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dv github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.17.3 h1:qkRjuerhUU1EmXLYGkSH6EZL+vPSxIrYjLNAK4slzwA= github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= @@ -1055,9 +1041,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a h1:dHCfT5W7gghzPtfsW488uPmEOm85wewI+ypUwibyTdU= github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= -github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -1163,6 +1148,8 @@ github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8= @@ -1176,7 +1163,6 @@ github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= @@ -1230,8 +1216,8 @@ github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= -github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/opencontainers/runc v1.1.5 h1:L44KXEpKmfWDcS02aeGm8QNTFXTo2D+8MYGDIJ/GDEs= github.com/opencontainers/runc v1.1.5/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= github.com/opentracing-contrib/go-grpc v0.0.0-20210225150812-73cb765af46e h1:4cPxUYdgaGzZIT5/j0IfqOrrXmq6bG8AwvwisMXpdrg= @@ -1267,8 +1253,8 @@ github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= -github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= -github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= +github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= @@ -1418,6 +1404,8 @@ github.com/smartcontractkit/grpc-proxy v0.0.0-20230731113816-f1be6620749f h1:hgJ github.com/smartcontractkit/grpc-proxy v0.0.0-20230731113816-f1be6620749f/go.mod h1:MvMXoufZAtqExNexqi4cjrNYE9MefKddKylxjS+//n0= github.com/smartcontractkit/havoc/k8schaos v0.0.0-20240409145249-e78d20847e37 h1:ZEhn2Yo1jY4hqy8nasDL4k4pNtopT3rS3Ap1GDb7ODc= github.com/smartcontractkit/havoc/k8schaos v0.0.0-20240409145249-e78d20847e37/go.mod h1:/kFr0D7SI/vueXl1N03uzOun4nViGPFRyA5X6eL3jXw= +github.com/smartcontractkit/job-distributor v0.1.0 h1:KMl6OizBlDi1t9ni6Iq8JNFoKWaTMsl7YRky9r2yWp8= +github.com/smartcontractkit/job-distributor v0.1.0/go.mod h1:XSm3ixwgoentJTkx7YEVRfzfDMTkS1sM/SUDPdzjxyY= github.com/smartcontractkit/libocr v0.0.0-20240717100443-f6226e09bee7 h1:e38V5FYE7DA1JfKXeD5Buo/7lczALuVXlJ8YNTAUxcw= github.com/smartcontractkit/libocr v0.0.0-20240717100443-f6226e09bee7/go.mod h1:fb1ZDVXACvu4frX3APHZaEBp0xi1DIm34DcA0CwTsZM= github.com/smartcontractkit/seth v1.0.12 h1:iVdgMx42XWanPPnBaM5StR4c1XsTr/0/B/kKRZL5BsY= @@ -1428,8 +1416,8 @@ github.com/smartcontractkit/tdh2/go/tdh2 v0.0.0-20230906073235-9e478e5e19f1 h1:D github.com/smartcontractkit/tdh2/go/tdh2 v0.0.0-20230906073235-9e478e5e19f1/go.mod h1:G5Sd/yzHWf26rQ+X0nG9E0buKPqRGPMJAfk2gwCzOOw= github.com/smartcontractkit/wasp v0.4.5 h1:pgiXwBci2m15eo33AzspzhpNG/gxg+8QGxl+I5LpfsQ= github.com/smartcontractkit/wasp v0.4.5/go.mod h1:eVhBVLbVv0qORUlN7aR5C4aTN/lTYO3KnN1erO4ROOI= -github.com/smartcontractkit/wsrpc v0.7.3 h1:CKYZfawZShZGfvsQep1F9oBansnFk9ByZPCdTMpLphw= -github.com/smartcontractkit/wsrpc v0.7.3/go.mod h1:sj7QX2NQibhkhxTfs3KOhAj/5xwgqMipTvJVSssT9i0= +github.com/smartcontractkit/wsrpc v0.8.1 h1:kk0SXLqWrWaZ3J6c7n8D0NZ2uTMBBBpG5dZZXZX8UGE= +github.com/smartcontractkit/wsrpc v0.8.1/go.mod h1:yfg8v8fPLXkb6Mcnx6Pm/snP6jJ0r5Kf762Yd1a/KpA= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= @@ -1452,8 +1440,8 @@ github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cA github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -1461,8 +1449,8 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/streamingfast/logging v0.0.0-20220405224725-2755dab2ce75 h1:ZqpS7rAhhKD7S7DnrpEdrnW1/gZcv82ytpMviovkli4= @@ -1484,7 +1472,6 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= @@ -1502,8 +1489,8 @@ github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 h1:3SNcvBmEPE1YlB github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0= github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmNQzk2ghU= -github.com/testcontainers/testcontainers-go v0.28.0 h1:1HLm9qm+J5VikzFDYhOd+Zw12NtOl+8drH2E8nTY1r8= -github.com/testcontainers/testcontainers-go v0.28.0/go.mod h1:COlDpUXbwW3owtpMkEB1zo9gwb1CoKVKlyrVPejF4AU= +github.com/testcontainers/testcontainers-go v0.32.0 h1:ug1aK08L3gCHdhknlTTwWjPHPS+/alvLJU/DRxTD/ME= +github.com/testcontainers/testcontainers-go v0.32.0/go.mod h1:CRHrzHLQhlXUsa5gXjTOfqIEJcrK5+xMDmBr/WMI88E= github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a h1:YuO+afVc3eqrjiCUizNCxI53bl/BnPiVwXqLzqYTqgU= github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a/go.mod h1:/sfW47zCZp9FrtGcWyo1VjbgDaodxX9ovZvgLb/MxaA= github.com/thlib/go-timezone-local v0.0.0-20210907160436-ef149e42d28e h1:BuzhfgfWQbX0dWzYzT1zsORLnHRv3bcRcsaUk0VmXA8= @@ -1532,9 +1519,7 @@ github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaO github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= @@ -1601,12 +1586,12 @@ go.dedis.ch/protobuf v1.0.11/go.mod h1:97QR256dnkimeNdfmURz0wAMNVbd1VmLXhG1CrTYr go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= -go.etcd.io/etcd/api/v3 v3.5.10 h1:szRajuUUbLyppkhs9K6BRtjY37l66XQQmw7oZRANE4k= -go.etcd.io/etcd/api/v3 v3.5.10/go.mod h1:TidfmT4Uycad3NM/o25fG3J07odo4GBB9hoxaodFCtI= -go.etcd.io/etcd/client/pkg/v3 v3.5.10 h1:kfYIdQftBnbAq8pUWFXfpuuxFSKzlmM5cSn76JByiT0= -go.etcd.io/etcd/client/pkg/v3 v3.5.10/go.mod h1:DYivfIviIuQ8+/lCq4vcxuseg2P2XbHygkKwFo9fc8U= -go.etcd.io/etcd/client/v3 v3.5.10 h1:W9TXNZ+oB3MCd/8UjxHTWK5J9Nquw9fQBLJd5ne5/Ao= -go.etcd.io/etcd/client/v3 v3.5.10/go.mod h1:RVeBnDz2PUEZqTpgqwAtUd8nAPf5kjyFyND7P1VkOKc= +go.etcd.io/etcd/api/v3 v3.5.12 h1:W4sw5ZoU2Juc9gBWuLk5U6fHfNVyY1WC5g9uiXZio/c= +go.etcd.io/etcd/api/v3 v3.5.12/go.mod h1:Ot+o0SWSyT6uHhA56al1oCED0JImsRiU9Dc26+C2a+4= +go.etcd.io/etcd/client/pkg/v3 v3.5.12 h1:EYDL6pWwyOsylrQyLp2w+HkQ46ATiOvoEdMarindU2A= +go.etcd.io/etcd/client/pkg/v3 v3.5.12/go.mod h1:seTzl2d9APP8R5Y2hFL3NVlD6qC/dOT+3kvrqPyTas4= +go.etcd.io/etcd/client/v3 v3.5.12 h1:v5lCPXn1pf1Uu3M4laUE2hp/geOTc5uPcYYsNe1lDxg= +go.etcd.io/etcd/client/v3 v3.5.12/go.mod h1:tSbBCakoWmmddL+BKVAJHa9km+O/E+bumDe9mSbPiqw= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= @@ -1628,8 +1613,8 @@ go.opentelemetry.io/collector/semconv v0.87.0 h1:BsG1jdLLRCBRlvUujk4QA86af7r/ZXn go.opentelemetry.io/collector/semconv v0.87.0/go.mod h1:j/8THcqVxFna1FpvA2zYIsUperEtOaRaqoLYIN4doWw= go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin v0.49.0 h1:1f31+6grJmV3X4lxcEvUy13i5/kfDw1nJZwhd8mA4tg= go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin v0.49.0/go.mod h1:1P/02zM3OwkX9uki+Wmxw3a5GVb6KUXRsa7m7bOC9Fg= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 h1:vS1Ao/R55RNV4O7TA2Qopok8yN+X0LIP6RVWLFkprck= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0/go.mod h1:BMsdeOxN04K0L5FNUBfjFdvwWGNe/rkmSwH4Aelu/X0= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= @@ -1644,8 +1629,8 @@ go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6b go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= -go.opentelemetry.io/otel/sdk/metric v1.21.0 h1:smhI5oD714d6jHE6Tie36fPx4WDFIg+Y6RfAY4ICcR0= -go.opentelemetry.io/otel/sdk/metric v1.21.0/go.mod h1:FJ8RAsoPGv/wYMgBdUJXOm+6pzFY3YdljnXtv1SBE8Q= +go.opentelemetry.io/otel/sdk/metric v1.28.0 h1:OkuaKgKrgAbYrrY0t92c+cC+2F6hsFNnCQArXCKlg08= +go.opentelemetry.io/otel/sdk/metric v1.28.0/go.mod h1:cWPjykihLAPvXKi4iZc1dpER3Jdq2Z0YLse3moQUCpg= go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= @@ -1678,7 +1663,6 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go4.org/netipx v0.0.0-20230125063823-8449b0a6169f h1:ketMxHg+vWm3yccyYiq+uK8D3fRmna2Fcj+awpQp84s= @@ -1713,8 +1697,8 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1833,8 +1817,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1922,8 +1906,8 @@ golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1935,8 +1919,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1950,8 +1934,8 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2049,8 +2033,8 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= -google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= +google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= +google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2203,8 +2187,8 @@ k8s.io/kubectl v0.28.2 h1:fOWOtU6S0smdNjG1PB9WFbqEIMlkzU5ahyHkc7ESHgM= k8s.io/kubectl v0.28.2/go.mod h1:6EQWTPySF1fn7yKoQZHYf9TPwIl2AygHEcJoxFekr64= k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak= k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= -nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +nhooyr.io/websocket v1.8.10 h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q= +nhooyr.io/websocket v1.8.10/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index 7345baa146..ae59a947bd 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -35,8 +35,10 @@ require ( cosmossdk.io/depinject v1.0.0-alpha.4 // indirect cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/math v1.3.0 // indirect + github.com/containerd/errdefs v0.1.0 // indirect github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/moby/docker-image-spec v1.3.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect @@ -69,8 +71,8 @@ require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.2.1 // indirect github.com/Masterminds/sprig/v3 v3.2.3 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/Microsoft/hcsshim v0.11.4 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/Microsoft/hcsshim v0.11.5 // indirect github.com/NethermindEth/juno v0.3.1 // indirect github.com/NethermindEth/starknet.go v0.7.1-0.20240401080518-34a506f3cfdb // indirect github.com/VictoriaMetrics/fastcache v1.12.1 // indirect @@ -114,7 +116,7 @@ require ( github.com/confio/ics23/go v0.9.0 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect - github.com/containerd/containerd v1.7.12 // indirect + github.com/containerd/containerd v1.7.18 // indirect github.com/containerd/continuity v0.4.3 // indirect github.com/containerd/log v0.1.0 // indirect github.com/coreos/go-semver v0.3.1 // indirect @@ -141,9 +143,9 @@ require ( github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect - github.com/distribution/reference v0.5.0 // indirect + github.com/distribution/reference v0.6.0 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker v25.0.2+incompatible // indirect + github.com/docker/docker v27.0.3+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dominikbraun/graph v0.23.0 // indirect @@ -163,7 +165,7 @@ require ( github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/fvbommel/sortorder v1.1.0 // indirect github.com/fxamacker/cbor/v2 v2.6.0 // indirect - github.com/gabriel-vasile/mimetype v1.4.2 // indirect + github.com/gabriel-vasile/mimetype v1.4.3 // indirect github.com/gagliardetto/binary v0.7.7 // indirect github.com/gagliardetto/solana-go v1.8.4 // indirect github.com/gagliardetto/treeout v0.1.4 // indirect @@ -182,7 +184,7 @@ require ( github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-openapi/analysis v0.21.4 // indirect github.com/go-openapi/errors v0.20.4 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect @@ -194,7 +196,7 @@ require ( github.com/go-openapi/validate v0.22.1 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.15.5 // indirect + github.com/go-playground/validator/v10 v10.22.0 // indirect github.com/go-redis/redis/v8 v8.11.5 // indirect github.com/go-webauthn/webauthn v0.9.4 // indirect github.com/go-webauthn/x v0.1.5 // indirect @@ -242,7 +244,7 @@ require ( github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect - github.com/hashicorp/consul/api v1.25.1 // indirect + github.com/hashicorp/consul/api v1.28.2 // indirect github.com/hashicorp/consul/sdk v0.16.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -288,13 +290,13 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/julienschmidt/httprouter v1.3.0 // indirect github.com/kelseyhightower/envconfig v1.4.0 // indirect - github.com/klauspost/compress v1.17.3 // indirect + github.com/klauspost/compress v1.17.7 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a // indirect - github.com/leodido/go-urn v1.2.4 // indirect + github.com/leodido/go-urn v1.4.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect @@ -335,7 +337,7 @@ require ( github.com/oklog/ulid v1.3.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0-rc5 // indirect + github.com/opencontainers/image-spec v1.1.0 // indirect github.com/opencontainers/runc v1.1.10 // indirect github.com/opentracing-contrib/go-grpc v0.0.0-20210225150812-73cb765af46e // indirect github.com/opentracing-contrib/go-stdlib v1.0.0 // indirect @@ -380,7 +382,7 @@ require ( github.com/smartcontractkit/chainlink-testing-framework/grafana v0.0.0-20240405215812-5a72bc9af239 // indirect github.com/smartcontractkit/havoc/k8schaos v0.0.0-20240409145249-e78d20847e37 // indirect github.com/smartcontractkit/tdh2/go/ocr2/decryptionplugin v0.0.0-20230906073235-9e478e5e19f1 // indirect - github.com/smartcontractkit/wsrpc v0.7.3 // indirect + github.com/smartcontractkit/wsrpc v0.8.1 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/sony/gobreaker v0.5.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect @@ -388,7 +390,7 @@ require ( github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.18.2 // indirect + github.com/spf13/viper v1.19.0 // indirect github.com/status-im/keycard-go v0.2.0 // indirect github.com/streamingfast/logging v0.0.0-20220405224725-2755dab2ce75 // indirect github.com/stretchr/objx v0.5.2 // indirect @@ -398,7 +400,7 @@ require ( github.com/tendermint/go-amino v0.16.0 // indirect github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 // indirect github.com/test-go/testify v1.1.4 // indirect - github.com/testcontainers/testcontainers-go v0.28.0 // indirect + github.com/testcontainers/testcontainers-go v0.32.0 // indirect github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a // indirect github.com/tidwall/btree v1.6.0 // indirect github.com/tidwall/gjson v1.17.0 // indirect @@ -423,14 +425,14 @@ require ( go.dedis.ch/fixbuf v1.0.3 // indirect go.dedis.ch/kyber/v3 v3.1.0 // indirect go.etcd.io/bbolt v1.3.8 // indirect - go.etcd.io/etcd/api/v3 v3.5.10 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect - go.etcd.io/etcd/client/v3 v3.5.10 // indirect + go.etcd.io/etcd/api/v3 v3.5.12 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.12 // indirect + go.etcd.io/etcd/client/v3 v3.5.12 // indirect go.mongodb.org/mongo-driver v1.15.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/collector/pdata v1.0.0-rcv0016 // indirect go.opentelemetry.io/collector/semconv v0.87.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect go.opentelemetry.io/otel v1.28.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect @@ -446,15 +448,15 @@ require ( go.uber.org/zap v1.27.0 // indirect go4.org/netipx v0.0.0-20230125063823-8449b0a6169f // indirect golang.org/x/arch v0.7.0 // indirect - golang.org/x/crypto v0.25.0 // indirect + golang.org/x/crypto v0.26.0 // indirect golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect golang.org/x/mod v0.19.0 // indirect golang.org/x/net v0.27.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/term v0.22.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.23.0 // indirect + golang.org/x/term v0.23.0 // indirect + golang.org/x/text v0.17.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.23.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect @@ -479,7 +481,7 @@ require ( k8s.io/kube-openapi v0.0.0-20240709000822-3c01b740850f // indirect k8s.io/kubectl v0.28.2 // indirect k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 // indirect - nhooyr.io/websocket v1.8.7 // indirect + nhooyr.io/websocket v1.8.10 // indirect pgregory.net/rapid v1.1.0 // indirect rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/controller-runtime v0.18.4 // indirect diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index 78db125a98..47b827f08a 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -135,10 +135,10 @@ github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0 github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= -github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/Microsoft/hcsshim v0.11.5 h1:haEcLNpj9Ka1gd3B3tAEs9CpE0c+1IhoL59w/exYU38= +github.com/Microsoft/hcsshim v0.11.5/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU= github.com/NethermindEth/juno v0.3.1 h1:AW72LiAm9gqUeCVJWvepnZcTnpU4Vkl0KzPMxS+42FA= github.com/NethermindEth/juno v0.3.1/go.mod h1:SGbTpgGaCsxhFsKOid7Ylnz//WZ8swtILk+NbHGsk/Q= github.com/NethermindEth/starknet.go v0.7.1-0.20240401080518-34a506f3cfdb h1:Mv8SscePPyw2ju4igIJAjFgcq5zCQfjgbz53DwYu5mc= @@ -307,10 +307,12 @@ github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/Yj github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/containerd/containerd v1.7.12 h1:+KQsnv4VnzyxWcfO9mlxxELaoztsDEjOuCMPAuPqgU0= -github.com/containerd/containerd v1.7.12/go.mod h1:/5OMpE1p0ylxtEUGY8kuCYkDRzJm9NO1TFMWjUpdevk= +github.com/containerd/containerd v1.7.18 h1:jqjZTQNfXGoEaZdW1WwPU0RqSn1Bm2Ay/KJPUuO8nao= +github.com/containerd/containerd v1.7.18/go.mod h1:IYEk9/IO6wAPUz2bCMVUbsfXjzw5UNP5fLz4PsUygQ4= github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= +github.com/containerd/errdefs v0.1.0 h1:m0wCRBiu1WJT/Fr+iOoQHMQS/eP5myQ8lCv4Dz5ZURM= +github.com/containerd/errdefs v0.1.0/go.mod h1:YgWiiHtLmSeBrvpw+UfPijzbLaB77mEG1WwJTDETIV0= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= @@ -401,14 +403,14 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/r github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/digitalocean/godo v1.99.0 h1:gUHO7n9bDaZFWvbzOum4bXE0/09ZuYA9yA8idQHX57E= github.com/digitalocean/godo v1.99.0/go.mod h1:SsS2oXo2rznfM/nORlZ/6JaUJZFhmKTib1YhopUc8NA= -github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= -github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= +github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v25.0.2+incompatible h1:/OaKeauroa10K4Nqavw4zlhcDq/WBcPMc5DbjOGgozY= -github.com/docker/docker v25.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.0.3+incompatible h1:aBGI9TeQ4MPlhquTQKq9XbK79rKFVwXNUAYz9aXyEBE= +github.com/docker/docker v27.0.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -471,8 +473,8 @@ github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQ github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/fxamacker/cbor/v2 v2.6.0 h1:sU6J2usfADwWlYDAFhZBQ6TnLFBHxgesMrQfQgk1tWA= github.com/fxamacker/cbor/v2 v2.6.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= -github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= -github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= +github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= github.com/gagliardetto/binary v0.7.7 h1:QZpT38+sgoPg+TIQjH94sLbl/vX+nlIRA37pEyOsjfY= github.com/gagliardetto/binary v0.7.7/go.mod h1:mUuay5LL8wFVnIlecHakSZMvcdqfs+CsotR5n77kyjM= github.com/gagliardetto/gofuzz v1.2.2 h1:XL/8qDMzcgvR4+CyRQW9UGdwPRPMHVJfqQ/uMvSUuQw= @@ -500,7 +502,6 @@ github.com/gin-contrib/size v0.0.0-20230212012657-e14a14094dc4 h1:Z9J0PVIt1PuibO github.com/gin-contrib/size v0.0.0-20230212012657-e14a14094dc4/go.mod h1:CEPcgZiz8998l9E8fDm16h8UfHRL7b+5oG0j/0koeVw= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= github.com/go-asn1-ber/asn1-ber v1.5.5 h1:MNHlNMBDgEKD4TcKr36vQN68BA00aDfjIt3/bD50WnA= @@ -530,8 +531,9 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc= github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo= @@ -567,18 +569,14 @@ github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+Gr github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU= github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.15.5 h1:LEBecTWb/1j5TNY1YYG2RcOUN3R7NLylN+x8TTueE24= -github.com/go-playground/validator/v10 v10.15.5/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/go-playground/validator/v10 v10.22.0 h1:k6HsTZ0sTnROkhS//R0O+55JgM8C4Bx7ia+JlgcnOao= +github.com/go-playground/validator/v10 v10.22.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= github.com/go-resty/resty/v2 v2.11.0 h1:i7jMfNOJYMp69lq7qozJP+bjgzfAzeOhuGlyDrqxT/8= @@ -622,15 +620,6 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= -github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= -github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/gobwas/ws v1.2.1 h1:F2aeBZrm2NDsc7vbovKrWSogd4wvfAxg0FQ89/iqOTk= -github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= @@ -747,7 +736,6 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3 github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -755,8 +743,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= -github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= +github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/gophercloud/gophercloud v1.5.0 h1:cDN6XFCLKiiqvYpjQLq9AiM7RDRbIC9450WpPH+yvXo= github.com/gophercloud/gophercloud v1.5.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -771,7 +759,6 @@ github.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kX github.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo= github.com/gorilla/sessions v1.2.2 h1:lqzMYz6bOfvn2WriPUjNByzeXIlVzURcPmgMczkmTjY= github.com/gorilla/sessions v1.2.2/go.mod h1:ePLdVu+jbEgHH+KWw8I1z2wqd0BAdAQh/8LRvBeoNcQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= @@ -823,8 +810,8 @@ github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/b github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.25.1 h1:CqrdhYzc8XZuPnhIYZWH45toM0LB9ZeYr/gvpLVI3PE= -github.com/hashicorp/consul/api v1.25.1/go.mod h1:iiLVwR/htV7mas/sy0O+XSuEnrdBUUydemjxcUrAt4g= +github.com/hashicorp/consul/api v1.28.2 h1:mXfkRHrpHN4YY3RqL09nXU1eHKLNiuAN4kHvDQ16k/8= +github.com/hashicorp/consul/api v1.28.2/go.mod h1:KyzqzgMEya+IZPcD65YFoOVAgPpbfERu4I/tzG6/ueE= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.16.0 h1:SE9m0W6DEfgIVCJX7xU+iv/hUl4m/nxqMTnCdMxDpJ8= github.com/hashicorp/consul/sdk v0.16.0/go.mod h1:7pxqqhqoaPqnBnzXD1StKed62LqJeClzVsUEy85Zr0A= @@ -1001,7 +988,6 @@ github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFF github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= @@ -1015,12 +1001,12 @@ github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dv github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.17.3 h1:qkRjuerhUU1EmXLYGkSH6EZL+vPSxIrYjLNAK4slzwA= github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= @@ -1043,9 +1029,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a h1:dHCfT5W7gghzPtfsW488uPmEOm85wewI+ypUwibyTdU= github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= -github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -1149,6 +1134,8 @@ github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8= @@ -1162,7 +1149,6 @@ github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= @@ -1212,8 +1198,8 @@ github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= -github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/opencontainers/runc v1.1.10 h1:EaL5WeO9lv9wmS6SASjszOeQdSctvpbu0DdBQBizE40= github.com/opencontainers/runc v1.1.10/go.mod h1:+/R6+KmDlh+hOO8NkjmgkG9Qzvypzk0yXxAPYYR65+M= github.com/opentracing-contrib/go-grpc v0.0.0-20210225150812-73cb765af46e h1:4cPxUYdgaGzZIT5/j0IfqOrrXmq6bG8AwvwisMXpdrg= @@ -1408,8 +1394,8 @@ github.com/smartcontractkit/tdh2/go/tdh2 v0.0.0-20230906073235-9e478e5e19f1 h1:D github.com/smartcontractkit/tdh2/go/tdh2 v0.0.0-20230906073235-9e478e5e19f1/go.mod h1:G5Sd/yzHWf26rQ+X0nG9E0buKPqRGPMJAfk2gwCzOOw= github.com/smartcontractkit/wasp v0.4.7 h1:7mKJfwzFbuE8xVLUYtLt7Bjw8q/bmVZRW6Ks8kc1LVM= github.com/smartcontractkit/wasp v0.4.7/go.mod h1:jeabvyXikb2aNoLQwcZGqaz17efrR8NJhpq4seAmdgs= -github.com/smartcontractkit/wsrpc v0.7.3 h1:CKYZfawZShZGfvsQep1F9oBansnFk9ByZPCdTMpLphw= -github.com/smartcontractkit/wsrpc v0.7.3/go.mod h1:sj7QX2NQibhkhxTfs3KOhAj/5xwgqMipTvJVSssT9i0= +github.com/smartcontractkit/wsrpc v0.8.1 h1:kk0SXLqWrWaZ3J6c7n8D0NZ2uTMBBBpG5dZZXZX8UGE= +github.com/smartcontractkit/wsrpc v0.8.1/go.mod h1:yfg8v8fPLXkb6Mcnx6Pm/snP6jJ0r5Kf762Yd1a/KpA= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= @@ -1441,8 +1427,8 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/streamingfast/logging v0.0.0-20220405224725-2755dab2ce75 h1:ZqpS7rAhhKD7S7DnrpEdrnW1/gZcv82ytpMviovkli4= @@ -1464,7 +1450,6 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= @@ -1482,8 +1467,8 @@ github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 h1:3SNcvBmEPE1YlB github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0= github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmNQzk2ghU= -github.com/testcontainers/testcontainers-go v0.28.0 h1:1HLm9qm+J5VikzFDYhOd+Zw12NtOl+8drH2E8nTY1r8= -github.com/testcontainers/testcontainers-go v0.28.0/go.mod h1:COlDpUXbwW3owtpMkEB1zo9gwb1CoKVKlyrVPejF4AU= +github.com/testcontainers/testcontainers-go v0.32.0 h1:ug1aK08L3gCHdhknlTTwWjPHPS+/alvLJU/DRxTD/ME= +github.com/testcontainers/testcontainers-go v0.32.0/go.mod h1:CRHrzHLQhlXUsa5gXjTOfqIEJcrK5+xMDmBr/WMI88E= github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a h1:YuO+afVc3eqrjiCUizNCxI53bl/BnPiVwXqLzqYTqgU= github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a/go.mod h1:/sfW47zCZp9FrtGcWyo1VjbgDaodxX9ovZvgLb/MxaA= github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg= @@ -1510,9 +1495,7 @@ github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaO github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= @@ -1581,12 +1564,12 @@ go.dedis.ch/protobuf v1.0.11/go.mod h1:97QR256dnkimeNdfmURz0wAMNVbd1VmLXhG1CrTYr go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= -go.etcd.io/etcd/api/v3 v3.5.10 h1:szRajuUUbLyppkhs9K6BRtjY37l66XQQmw7oZRANE4k= -go.etcd.io/etcd/api/v3 v3.5.10/go.mod h1:TidfmT4Uycad3NM/o25fG3J07odo4GBB9hoxaodFCtI= -go.etcd.io/etcd/client/pkg/v3 v3.5.10 h1:kfYIdQftBnbAq8pUWFXfpuuxFSKzlmM5cSn76JByiT0= -go.etcd.io/etcd/client/pkg/v3 v3.5.10/go.mod h1:DYivfIviIuQ8+/lCq4vcxuseg2P2XbHygkKwFo9fc8U= -go.etcd.io/etcd/client/v3 v3.5.10 h1:W9TXNZ+oB3MCd/8UjxHTWK5J9Nquw9fQBLJd5ne5/Ao= -go.etcd.io/etcd/client/v3 v3.5.10/go.mod h1:RVeBnDz2PUEZqTpgqwAtUd8nAPf5kjyFyND7P1VkOKc= +go.etcd.io/etcd/api/v3 v3.5.12 h1:W4sw5ZoU2Juc9gBWuLk5U6fHfNVyY1WC5g9uiXZio/c= +go.etcd.io/etcd/api/v3 v3.5.12/go.mod h1:Ot+o0SWSyT6uHhA56al1oCED0JImsRiU9Dc26+C2a+4= +go.etcd.io/etcd/client/pkg/v3 v3.5.12 h1:EYDL6pWwyOsylrQyLp2w+HkQ46ATiOvoEdMarindU2A= +go.etcd.io/etcd/client/pkg/v3 v3.5.12/go.mod h1:seTzl2d9APP8R5Y2hFL3NVlD6qC/dOT+3kvrqPyTas4= +go.etcd.io/etcd/client/v3 v3.5.12 h1:v5lCPXn1pf1Uu3M4laUE2hp/geOTc5uPcYYsNe1lDxg= +go.etcd.io/etcd/client/v3 v3.5.12/go.mod h1:tSbBCakoWmmddL+BKVAJHa9km+O/E+bumDe9mSbPiqw= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= @@ -1608,8 +1591,8 @@ go.opentelemetry.io/collector/semconv v0.87.0 h1:BsG1jdLLRCBRlvUujk4QA86af7r/ZXn go.opentelemetry.io/collector/semconv v0.87.0/go.mod h1:j/8THcqVxFna1FpvA2zYIsUperEtOaRaqoLYIN4doWw= go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin v0.49.0 h1:1f31+6grJmV3X4lxcEvUy13i5/kfDw1nJZwhd8mA4tg= go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin v0.49.0/go.mod h1:1P/02zM3OwkX9uki+Wmxw3a5GVb6KUXRsa7m7bOC9Fg= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 h1:vS1Ao/R55RNV4O7TA2Qopok8yN+X0LIP6RVWLFkprck= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0/go.mod h1:BMsdeOxN04K0L5FNUBfjFdvwWGNe/rkmSwH4Aelu/X0= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= @@ -1658,7 +1641,6 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go4.org/netipx v0.0.0-20230125063823-8449b0a6169f h1:ketMxHg+vWm3yccyYiq+uK8D3fRmna2Fcj+awpQp84s= @@ -1693,8 +1675,8 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1813,8 +1795,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1900,8 +1882,8 @@ golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1913,8 +1895,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1928,8 +1910,8 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2027,8 +2009,8 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= -google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= +google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= +google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2182,8 +2164,8 @@ k8s.io/kubectl v0.28.2 h1:fOWOtU6S0smdNjG1PB9WFbqEIMlkzU5ahyHkc7ESHgM= k8s.io/kubectl v0.28.2/go.mod h1:6EQWTPySF1fn7yKoQZHYf9TPwIl2AygHEcJoxFekr64= k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak= k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= -nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +nhooyr.io/websocket v1.8.10 h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q= +nhooyr.io/websocket v1.8.10/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= From 7803134f44d9da95e9f1e40e7f41e0cc42a3f8f4 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Wed, 14 Aug 2024 18:42:31 -0400 Subject: [PATCH 22/42] So close, getFee still reverting with no reason --- integration-tests/deployment/ccip/deploy.go | 153 ++++++++++++++++-- .../deployment/ccip/deploy_home_chain.go | 10 +- .../ccip/migrations/1_initial_deploy_test.go | 80 +++++++-- integration-tests/deployment/ccip/state.go | 11 ++ .../deployment/memory/environment.go | 24 ++- 5 files changed, 243 insertions(+), 35 deletions(-) diff --git a/integration-tests/deployment/ccip/deploy.go b/integration-tests/deployment/ccip/deploy.go index 0b1191eb42..74997d23cb 100644 --- a/integration-tests/deployment/ccip/deploy.go +++ b/integration-tests/deployment/ccip/deploy.go @@ -1,14 +1,18 @@ package ccipdeployment import ( + "encoding/hex" + "fmt" "math/big" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/rpc" owner_helpers "github.com/smartcontractkit/ccip-owner-contracts/gethwrappers" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/ccip_config" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/maybe_revert_message_receiver" "github.com/smartcontractkit/chainlink-common/pkg/logger" "github.com/smartcontractkit/chainlink/integration-tests/deployment" @@ -33,6 +37,7 @@ var ( WETH9_1_0_0 = "WETH9 1.0.0" MCMS_1_0_0 = "ManyChainMultiSig 1.0.0" RBAC_Timelock_1_0_0 = "RBACTimelock 1.0.0" + CCIPReceiver_1_0_0 = "CCIPReceiver 1.0.0" // 1.2 Router_1_2_0 = "Router 1.2.0" @@ -61,7 +66,8 @@ type Contracts interface { *owner_helpers.RBACTimelock | *evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp | *evm_2_evm_multi_onramp.EVM2EVMMultiOnRamp | - *burn_mint_erc677.BurnMintERC677 + *burn_mint_erc677.BurnMintERC677 | + *maybe_revert_message_receiver.MaybeRevertMessageReceiver } type ContractDeploy[C Contracts] struct { @@ -136,6 +142,23 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( } for sel, chain := range e.Chains { + ccipReceiver, err := deployContract(e.Logger, chain, ab, + func(chain deployment.Chain) ContractDeploy[*maybe_revert_message_receiver.MaybeRevertMessageReceiver] { + receiverAddr, tx, receiver, err2 := maybe_revert_message_receiver.DeployMaybeRevertMessageReceiver( + chain.DeployerKey, + chain.Client, + false, + ) + return ContractDeploy[*maybe_revert_message_receiver.MaybeRevertMessageReceiver]{ + receiverAddr, receiver, tx, CCIPReceiver_1_0_0, err2, + } + }) + if err != nil { + e.Logger.Errorw("Failed to deploy receiver", "err", err) + return ab, err + } + e.Logger.Infow("deployed receiver", "addr", ccipReceiver.Address) + // TODO: Still waiting for RMNRemote/RMNHome contracts etc. mockARM, err := deployContract(e.Logger, chain, ab, func(chain deployment.Chain) ContractDeploy[*mock_arm_contract.MockARMContract] { @@ -381,23 +404,28 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( // Enable ramps on price registry/nonce manager tx, err := priceRegistry.Contract.ApplyAuthorizedCallerUpdates(chain.DeployerKey, price_registry.AuthorizedCallersAuthorizedCallerArgs{ - AddedCallers: []common.Address{offRamp.Address}, + // TODO: We enable the deployer initially to set prices + AddedCallers: []common.Address{offRamp.Address, chain.DeployerKey.From}, }) - if err := chain.Confirm(tx.Hash()); err != nil { + if err := ConfirmIfNoError(chain, tx, err); err != nil { e.Logger.Errorw("Failed to confirm price registry authorized caller update", "err", err) return ab, err } + + // Always enable weth9 and linkToken as fee tokens. + tx, err = priceRegistry.Contract.ApplyFeeTokensUpdates(chain.DeployerKey, []common.Address{weth9.Address, linkToken.Address}, []common.Address{}) + if err := ConfirmIfNoError(chain, tx, err); err != nil { + e.Logger.Errorw("Failed to confirm price registry fee tokens update", "err", err) + return ab, err + } + tx, err = nonceManager.Contract.ApplyAuthorizedCallerUpdates(chain.DeployerKey, nonce_manager.AuthorizedCallersAuthorizedCallerArgs{ AddedCallers: []common.Address{offRamp.Address, onRamp.Address}, }) - if err != nil { + if err := ConfirmIfNoError(chain, tx, err); err != nil { e.Logger.Errorw("Failed to update nonce manager with ramps", "err", err) return ab, err } - if err := chain.Confirm(tx.Hash()); err != nil { - e.Logger.Errorw("Failed to confirm price registry authorized caller update", "err", err) - return ab, err - } // Add chain config for each chain. _, err = AddChainConfig(e.Logger, @@ -428,7 +456,112 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( } } - // Next steps: add initial configuration to cap registry and to offramps. - return ab, nil } + +func ConfirmIfNoError(chain deployment.Chain, tx *types.Transaction, err error) error { + if err != nil { + fmt.Println("Error", err.(rpc.DataError).ErrorData()) + return err + } + return chain.Confirm(tx.Hash()) +} + +func AddLane(e deployment.Environment, state CCIPOnChainState, from, to uint64) error { + // TODO: Batch + tx, err := state.Routers[from].ApplyRampUpdates(e.Chains[from].DeployerKey, []router.RouterOnRamp{ + { + DestChainSelector: to, + OnRamp: state.EvmOnRampsV160[from].Address(), + }, + }, []router.RouterOffRamp{}, []router.RouterOffRamp{}) + if err := ConfirmIfNoError(e.Chains[from], tx, err); err != nil { + return err + } + tx, err = state.EvmOnRampsV160[from].ApplyDestChainConfigUpdates(e.Chains[from].DeployerKey, + []evm_2_evm_multi_onramp.EVM2EVMMultiOnRampDestChainConfigArgs{ + { + DestChainSelector: to, + Router: state.Routers[from].Address(), + }, + }) + if err := ConfirmIfNoError(e.Chains[from], tx, err); err != nil { + return err + } + + _, err = state.PriceRegistries[from].UpdatePrices( + e.Chains[from].DeployerKey, price_registry.InternalPriceUpdates{ + GasPriceUpdates: []price_registry.InternalGasPriceUpdate{ + { + DestChainSelector: to, + UsdPerUnitGas: big.NewInt(2e12), + }, + }}) + if err := ConfirmIfNoError(e.Chains[from], tx, err); err != nil { + return err + } + + // Enable dest in price registy + tx, err = state.PriceRegistries[from].ApplyDestChainConfigUpdates(e.Chains[from].DeployerKey, + []price_registry.PriceRegistryDestChainConfigArgs{ + { + DestChainSelector: to, + DestChainConfig: defaultPriceRegistryDestChainConfig(), + }, + }) + if err := ConfirmIfNoError(e.Chains[from], tx, err); err != nil { + return err + } + + tx, err = state.EvmOffRampsV160[to].ApplySourceChainConfigUpdates(e.Chains[to].DeployerKey, + []evm_2_evm_multi_offramp.EVM2EVMMultiOffRampSourceChainConfigArgs{ + { + Router: state.Routers[to].Address(), + SourceChainSelector: from, + IsEnabled: true, + OnRamp: common.LeftPadBytes(state.EvmOnRampsV160[from].Address().Bytes(), 32), + }, + }) + if err := ConfirmIfNoError(e.Chains[to], tx, err); err != nil { + return err + } + tx, err = state.Routers[to].ApplyRampUpdates(e.Chains[to].DeployerKey, []router.RouterOnRamp{}, []router.RouterOffRamp{}, []router.RouterOffRamp{ + { + SourceChainSelector: from, + OffRamp: state.EvmOffRampsV160[to].Address(), + }, + }) + if err := ConfirmIfNoError(e.Chains[to], tx, err); err != nil { + return err + } + return nil +} + +func defaultPriceRegistryDestChainConfig() price_registry.PriceRegistryDestChainConfig { + // https://github.com/smartcontractkit/ccip/blob/c4856b64bd766f1ddbaf5d13b42d3c4b12efde3a/contracts/src/v0.8/ccip/libraries/Internal.sol#L337-L337 + /* + ```Solidity + // bytes4(keccak256("CCIP ChainFamilySelector EVM")) + bytes4 public constant CHAIN_FAMILY_SELECTOR_EVM = 0x2812d52c; + ``` + */ + evmFamilySelector, _ := hex.DecodeString("2812d52c") + return price_registry.PriceRegistryDestChainConfig{ + IsEnabled: true, + MaxNumberOfTokensPerMsg: 10, + MaxDataBytes: 256, + MaxPerMsgGasLimit: 3_000_000, + DestGasOverhead: 50_000, + DefaultTokenFeeUSDCents: 1, + DestGasPerPayloadByte: 10, + DestDataAvailabilityOverheadGas: 0, + DestGasPerDataAvailabilityByte: 100, + DestDataAvailabilityMultiplierBps: 1, + DefaultTokenDestGasOverhead: 125_000, + DefaultTokenDestBytesOverhead: 32, + DefaultTxGasLimit: 200_000, + GasMultiplierWeiPerEth: 1, + NetworkFeeUSDCents: 1, + ChainFamilySelector: [4]byte(evmFamilySelector), + } +} diff --git a/integration-tests/deployment/ccip/deploy_home_chain.go b/integration-tests/deployment/ccip/deploy_home_chain.go index a1fd42580a..51e995c4ec 100644 --- a/integration-tests/deployment/ccip/deploy_home_chain.go +++ b/integration-tests/deployment/ccip/deploy_home_chain.go @@ -332,10 +332,7 @@ func AddDON( Config: encodedConfigs, }, }, false, false, f) - if err != nil { - return fmt.Errorf("%s", err.(rpc.DataError).ErrorData().(string)) - } - if err := home.Confirm(tx.Hash()); err != nil { + if err := ConfirmIfNoError(home, tx, err); err != nil { return err } @@ -396,10 +393,7 @@ func AddDON( //uni.backend.Commit() tx, err = offRamp.SetOCR3Configs(dest.DeployerKey, offrampOCR3Configs) - if err != nil { - return fmt.Errorf("%s", err.(rpc.DataError).ErrorData().(string)) - } - if err := home.Confirm(tx.Hash()); err != nil { + if err := ConfirmIfNoError(dest, tx, err); err != nil { return err } diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index eb895df8cd..f18a3763ec 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -2,14 +2,16 @@ package migrations import ( "context" - "fmt" + "math/big" "testing" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" chainsel "github.com/smartcontractkit/chain-selectors" "github.com/stretchr/testify/require" jobv1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/job/v1" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" ccipdeployment "github.com/smartcontractkit/chainlink/integration-tests/deployment/ccip" "github.com/smartcontractkit/chainlink/integration-tests/deployment/memory" @@ -20,8 +22,6 @@ import ( func Test0001_InitialDeploy(t *testing.T) { lggr := logger.TestLogger(t) chains := memory.NewMemoryChains(t, 3) - t.Log(chains, lggr) - homeChainSel := uint64(0) homeChainEVM := uint64(0) // First chain is home chain. @@ -32,7 +32,6 @@ func Test0001_InitialDeploy(t *testing.T) { } ab, err := ccipdeployment.DeployCapReg(lggr, chains, homeChainSel) require.NoError(t, err) - fmt.Println(homeChainEVM, ab) addrs, err := ab.AddressesForChain(homeChainSel) require.NoError(t, err) @@ -42,16 +41,12 @@ func Test0001_InitialDeploy(t *testing.T) { capReg = common.HexToAddress(addr) break } - - e := memory.NewMemoryEnvironmentExistingChains(t, lggr, chains, memory.MemoryEnvironmentConfig{ - Chains: 3, - Nodes: 4, - Bootstraps: 1, - RegistryConfig: memory.RegistryConfig{ - EVMChainID: homeChainEVM, - Contract: capReg, - }, + nodes := memory.NewNodes(t, chains, 4, 1, memory.RegistryConfig{ + EVMChainID: homeChainEVM, + Contract: capReg, }) + + e := memory.NewMemoryEnvironmentFromChainsNodes(t, lggr, chains, nodes) state, err := ccipdeployment.GenerateOnchainState(e, ab) require.NoError(t, err) // Apply migration @@ -61,10 +56,23 @@ func Test0001_InitialDeploy(t *testing.T) { CCIPOnChainState: state, }) require.NoError(t, err) + // Get new state after migration. + state, err = ccipdeployment.GenerateOnchainState(e, output.AddressBook) + require.NoError(t, err) + // Replay the log poller on all the chains so that the logs are in the db. + // otherwise the plugins won't pick them up. + for _, node := range nodes { + for sel := range chains { + chainID, _ := chainsel.ChainIdFromSelector(sel) + t.Logf("Replaying logs for chain %d from block %d", chainID, 1) + require.NoError(t, node.App.ReplayFromBlock(big.NewInt(int64(chainID)), 1, false), "failed to replay logs") + } + } // Apply the jobs. for nodeID, jobs := range output.JobSpecs { for _, job := range jobs { + // Note these auto-accept _, err := e.Offchain.ProposeJob(context.Background(), &jobv1.ProposeJobRequest{ NodeId: nodeID, @@ -73,7 +81,51 @@ func Test0001_InitialDeploy(t *testing.T) { require.NoError(t, err) } } - // TODO: With the jobs, we should be able to send traffic through the new deployment. + // Replay the log poller on all the chains so that the logs are in the db. + // otherwise the plugins won't pick them up. + for _, node := range nodes { + for sel := range chains { + chainID, _ := chainsel.ChainIdFromSelector(sel) + t.Logf("Replaying logs for chain %d from block %d", chainID, 1) + require.NoError(t, node.App.ReplayFromBlock(big.NewInt(int64(chainID)), 1, false), "failed to replay logs") + } + } + // Send a request from every router + for sel, chain := range e.Chains { + dest := homeChainSel + if sel == homeChainSel { + continue + } + require.NoError(t, ccipdeployment.AddLane(e, state, sel, dest)) + msg := router.ClientEVM2AnyMessage{ + Receiver: common.LeftPadBytes(state.Receivers[dest].Address().Bytes(), 32), + Data: []byte("hello"), + TokenAmounts: nil, // TODO: no tokens for now + //FeeToken: common.HexToAddress("0x0"), + FeeToken: state.Weth9s[sel].Address(), + ExtraArgs: nil, // TODO: no extra args for now, falls back to default + } + fee, err := state.Routers[sel].GetFee( + &bind.CallOpts{Context: context.Background()}, dest, msg) + require.NoError(t, err) + require.NoError(t, err, "%T", err) + tx, err := state.Weth9s[sel].Deposit(&bind.TransactOpts{ + From: e.Chains[sel].DeployerKey.From, + Signer: e.Chains[sel].DeployerKey.Signer, + Value: fee, + }) + require.NoError(t, err) + require.NoError(t, chain.Confirm(tx.Hash())) + tx, err = state.Weth9s[sel].Approve(e.Chains[sel].DeployerKey, + state.Routers[sel].Address(), fee) + require.NoError(t, err) + require.NoError(t, chain.Confirm(tx.Hash())) + t.Logf("Sending CCIP request from chain selector %d to chain selector %d", + sel, dest) + _, err = state.Routers[sel].CcipSend(e.Chains[sel].DeployerKey, homeChainSel, msg) + require.NoError(t, err) + break + } // TODO: Apply the proposal. } diff --git a/integration-tests/deployment/ccip/state.go b/integration-tests/deployment/ccip/state.go index 286163c3d0..219e7d442e 100644 --- a/integration-tests/deployment/ccip/state.go +++ b/integration-tests/deployment/ccip/state.go @@ -9,6 +9,7 @@ import ( "github.com/smartcontractkit/chainlink/integration-tests/deployment" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/ccip_config" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/maybe_revert_message_receiver" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/keystone/generated/capabilities_registry" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/shared/generated/burn_mint_erc677" @@ -50,6 +51,9 @@ type CCIPOnChainState struct { // TODO: remove once we have Address() on wrappers McmsAddrs map[uint64]common.Address Timelocks map[uint64]*owner_wrappers.RBACTimelock + + // Test contracts + Receivers map[uint64]*maybe_revert_message_receiver.MaybeRevertMessageReceiver } type CCIPSnapShot struct { @@ -157,6 +161,7 @@ func GenerateOnchainState(e deployment.Environment, ab deployment.AddressBook) ( Timelocks: make(map[uint64]*owner_wrappers.RBACTimelock), CapabilityRegistry: make(map[uint64]*capabilities_registry.CapabilitiesRegistry), CCIPConfig: make(map[uint64]*ccip_config.CCIPConfig), + Receivers: make(map[uint64]*maybe_revert_message_receiver.MaybeRevertMessageReceiver), } // Get all the onchain state addresses, err := ab.Addresses() @@ -251,6 +256,12 @@ func GenerateOnchainState(e deployment.Environment, ab deployment.AddressBook) ( return state, err } state.CCIPConfig[chainSelector] = cc + case CCIPReceiver_1_0_0: + mr, err := maybe_revert_message_receiver.NewMaybeRevertMessageReceiver(common.HexToAddress(address), e.Chains[chainSelector].Client) + if err != nil { + return state, err + } + state.Receivers[chainSelector] = mr default: return state, fmt.Errorf("unknown contract %s", tvStr) } diff --git a/integration-tests/deployment/memory/environment.go b/integration-tests/deployment/memory/environment.go index 31bc8e4cd4..e933f646c1 100644 --- a/integration-tests/deployment/memory/environment.go +++ b/integration-tests/deployment/memory/environment.go @@ -77,9 +77,10 @@ func NewNodes(t *testing.T, chains map[uint64]deployment.Chain, numNodes, numBoo return nodesByPeerID } -func NewMemoryEnvironmentExistingChains(t *testing.T, lggr logger.Logger, - chains map[uint64]deployment.Chain, config MemoryEnvironmentConfig) deployment.Environment { - nodes := NewNodes(t, chains, config.Nodes, config.Bootstraps, config.RegistryConfig) +func NewMemoryEnvironmentFromChainsNodes(t *testing.T, + lggr logger.Logger, + chains map[uint64]deployment.Chain, + nodes map[string]Node) deployment.Environment { var nodeIDs []string for id := range nodes { nodeIDs = append(nodeIDs, id) @@ -94,6 +95,23 @@ func NewMemoryEnvironmentExistingChains(t *testing.T, lggr logger.Logger, } } +//func NewMemoryEnvironmentExistingChains(t *testing.T, lggr logger.Logger, +// chains map[uint64]deployment.Chain, config MemoryEnvironmentConfig) deployment.Environment { +// nodes := NewNodes(t, chains, config.Nodes, config.Bootstraps, config.RegistryConfig) +// var nodeIDs []string +// for id := range nodes { +// nodeIDs = append(nodeIDs, id) +// } +// return deployment.Environment{ +// Name: Memory, +// Offchain: NewMemoryJobClient(nodes), +// // Note these have the p2p_ prefix. +// NodeIDs: nodeIDs, +// Chains: chains, +// Logger: lggr, +// } +//} + // To be used by tests and any kind of deployment logic. func NewMemoryEnvironment(t *testing.T, lggr logger.Logger, config MemoryEnvironmentConfig) deployment.Environment { chains := NewMemoryChains(t, config.Chains) From c76615ba66c3fef85f51b1056acc6eb30476e3f3 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Wed, 14 Aug 2024 19:09:03 -0400 Subject: [PATCH 23/42] Include weth price, still failing on getFee --- integration-tests/deployment/ccip/deploy.go | 6 ++++++ .../ccip/migrations/1_initial_deploy_test.go | 3 ++- integration-tests/deployment/memory/environment.go | 14 +++++++++++++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/integration-tests/deployment/ccip/deploy.go b/integration-tests/deployment/ccip/deploy.go index 74997d23cb..1259ff2f0f 100644 --- a/integration-tests/deployment/ccip/deploy.go +++ b/integration-tests/deployment/ccip/deploy.go @@ -491,6 +491,12 @@ func AddLane(e deployment.Environment, state CCIPOnChainState, from, to uint64) _, err = state.PriceRegistries[from].UpdatePrices( e.Chains[from].DeployerKey, price_registry.InternalPriceUpdates{ + TokenPriceUpdates: []price_registry.InternalTokenPriceUpdate{ + { + SourceToken: state.Weth9s[from].Address(), + UsdPerToken: big.NewInt(1), + }, + }, GasPriceUpdates: []price_registry.InternalGasPriceUpdate{ { DestChainSelector: to, diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index f18a3763ec..a48eecc0e1 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -123,8 +123,9 @@ func Test0001_InitialDeploy(t *testing.T) { t.Logf("Sending CCIP request from chain selector %d to chain selector %d", sel, dest) - _, err = state.Routers[sel].CcipSend(e.Chains[sel].DeployerKey, homeChainSel, msg) + tx, err = state.Routers[sel].CcipSend(e.Chains[sel].DeployerKey, homeChainSel, msg) require.NoError(t, err) + require.NoError(t, chain.Confirm(tx.Hash())) break } // TODO: Apply the proposal. diff --git a/integration-tests/deployment/memory/environment.go b/integration-tests/deployment/memory/environment.go index e933f646c1..b8270c99f7 100644 --- a/integration-tests/deployment/memory/environment.go +++ b/integration-tests/deployment/memory/environment.go @@ -1,6 +1,7 @@ package memory import ( + "fmt" "testing" "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" @@ -39,7 +40,18 @@ func NewMemoryChains(t *testing.T, numChains int) map[uint64]deployment.Chain { Client: chain.Backend, DeployerKey: chain.DeployerKey, Confirm: func(tx common.Hash) error { - chain.Backend.Commit() + for { + chain.Backend.Commit() + receipt, err := chain.Backend.TransactionReceipt(nil, tx) + if err != nil { + fmt.Println("failed to get receipt", err) + continue + } + if receipt.Status == 0 { + fmt.Printf("Status (reverted) %d for txhash %s\n", receipt.Status, tx.String()) + } + return nil + } return nil }, } From 692abed57f56ba2e687d8a18bba97477e51bd1d1 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Wed, 14 Aug 2024 19:38:28 -0400 Subject: [PATCH 24/42] Still reverting --- integration-tests/deployment/ccip/deploy.go | 45 +++++++++++++------ .../ccip/migrations/1_initial_deploy_test.go | 3 +- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/integration-tests/deployment/ccip/deploy.go b/integration-tests/deployment/ccip/deploy.go index 1259ff2f0f..01dffe8960 100644 --- a/integration-tests/deployment/ccip/deploy.go +++ b/integration-tests/deployment/ccip/deploy.go @@ -323,16 +323,20 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( price_registry.PriceRegistryStaticConfig{ MaxFeeJuelsPerMsg: big.NewInt(0).Mul(big.NewInt(2e2), big.NewInt(1e18)), LinkToken: linkToken.Address, - StalenessThreshold: uint32(86400), + StalenessThreshold: uint32(24 * 60 * 60), }, - []common.Address{}, // ramps added after - []common.Address{weth9.Address}, // fee tokens + []common.Address{}, // ramps added after + []common.Address{weth9.Address, linkToken.Address}, // fee tokens []price_registry.PriceRegistryTokenPriceFeedUpdate{}, []price_registry.PriceRegistryTokenTransferFeeConfigArgs{}, // TODO: tokens []price_registry.PriceRegistryPremiumMultiplierWeiPerEthArgs{ { + PremiumMultiplierWeiPerEth: 9e17, // 0.9 ETH + Token: linkToken.Address, + }, + { + PremiumMultiplierWeiPerEth: 1e18, Token: weth9.Address, - PremiumMultiplierWeiPerEth: 1e6, }, }, []price_registry.PriceRegistryDestChainConfigArgs{}, @@ -412,13 +416,6 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( return ab, err } - // Always enable weth9 and linkToken as fee tokens. - tx, err = priceRegistry.Contract.ApplyFeeTokensUpdates(chain.DeployerKey, []common.Address{weth9.Address, linkToken.Address}, []common.Address{}) - if err := ConfirmIfNoError(chain, tx, err); err != nil { - e.Logger.Errorw("Failed to confirm price registry fee tokens update", "err", err) - return ab, err - } - tx, err = nonceManager.Contract.ApplyAuthorizedCallerUpdates(chain.DeployerKey, nonce_manager.AuthorizedCallersAuthorizedCallerArgs{ AddedCallers: []common.Address{offRamp.Address, onRamp.Address}, }) @@ -459,13 +456,31 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( return ab, nil } +func MaybeDataErr(err error) string { + d, ok := err.(rpc.DataError) + if ok { + return d.ErrorData().(string) + } + return "" +} + func ConfirmIfNoError(chain deployment.Chain, tx *types.Transaction, err error) error { if err != nil { - fmt.Println("Error", err.(rpc.DataError).ErrorData()) + d, ok := err.(rpc.DataError) + if ok { + fmt.Println("Got Data Error", d.ErrorData()) + } return err } return chain.Confirm(tx.Hash()) } +func uBigInt(i uint64) *big.Int { + return new(big.Int).SetUint64(i) +} + +func e18Mult(amount uint64) *big.Int { + return new(big.Int).Mul(uBigInt(amount), uBigInt(1e18)) +} func AddLane(e deployment.Environment, state CCIPOnChainState, from, to uint64) error { // TODO: Batch @@ -492,9 +507,13 @@ func AddLane(e deployment.Environment, state CCIPOnChainState, from, to uint64) _, err = state.PriceRegistries[from].UpdatePrices( e.Chains[from].DeployerKey, price_registry.InternalPriceUpdates{ TokenPriceUpdates: []price_registry.InternalTokenPriceUpdate{ + { + SourceToken: state.LinkTokens[from].Address(), + UsdPerToken: e18Mult(20), + }, { SourceToken: state.Weth9s[from].Address(), - UsdPerToken: big.NewInt(1), + UsdPerToken: e18Mult(4000), }, }, GasPriceUpdates: []price_registry.InternalGasPriceUpdate{ diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index a48eecc0e1..31caaaeecc 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -107,8 +107,7 @@ func Test0001_InitialDeploy(t *testing.T) { } fee, err := state.Routers[sel].GetFee( &bind.CallOpts{Context: context.Background()}, dest, msg) - require.NoError(t, err) - require.NoError(t, err, "%T", err) + require.NoError(t, err, ccipdeployment.MaybeDataErr(err)) tx, err := state.Weth9s[sel].Deposit(&bind.TransactOpts{ From: e.Chains[sel].DeployerKey.From, Signer: e.Chains[sel].DeployerKey.Signer, From dfe105bb108f66ecdd63f85a061c9800e1b020d7 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 15 Aug 2024 14:00:28 -0400 Subject: [PATCH 25/42] Commit reports! --- integration-tests/deployment/ccip/commit | 361 ++++++++++++++++++ integration-tests/deployment/ccip/deploy.go | 4 +- .../deployment/ccip/deploy_home_chain.go | 12 +- integration-tests/deployment/ccip/error | 172 +++++++++ .../ccip/migrations/1_initial_deploy_test.go | 146 ++++++- 5 files changed, 665 insertions(+), 30 deletions(-) create mode 100644 integration-tests/deployment/ccip/commit create mode 100644 integration-tests/deployment/ccip/error diff --git a/integration-tests/deployment/ccip/commit b/integration-tests/deployment/ccip/commit new file mode 100644 index 0000000000..47d243c6a1 --- /dev/null +++ b/integration-tests/deployment/ccip/commit @@ -0,0 +1,361 @@ +{"Time":"2024-08-15T13:38:08.792412-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.792-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.79243-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.792-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.793542-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.792-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.793809-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.792-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.793964-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.792-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} +{"Time":"2024-08-15T13:38:08.794196-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.792-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.794497-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.793-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.794505-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.793-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.794568-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.793-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.794577-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.793-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.794712-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.793-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.794723-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.793-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} +{"Time":"2024-08-15T13:38:08.796433-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.795-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/managed_ocr3_oracle.go:161\tManagedOCR3Oracle: error during NewEndpoint\t{\"version\": \"unset@unset\", \"peerIDs\": [\"12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2\", \"12D3KooWHmm26BVPGRPyPNSo6x2ej5K7THDzi6T1mL9MtD3XCRvt\", \"12D3KooWAYB8Z2m3QNKQre9ELWXtojtE9T5YqapZUd2kW5kvS9w8\", \"12D3KooWJ9F1bZC7mj5vb2a4ivcDov3mQVtaLi3xHsebPfVwgksS\"], \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"v2bootstrappers\": [\"12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2@127.0.0.1:20501\"], \"error\": \"asked to add group with digest we already have (digest: 000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409)\"}\n"} +{"Time":"2024-08-15T13:38:08.799056-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.795-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0."} +{"Time":"2024-08-15T13:38:08.801378-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.796-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.801384-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.796-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.80149-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.796-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.801499-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.796-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.801621-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.796-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.801629-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.796-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} +{"Time":"2024-08-15T13:38:08.804911-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.798-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAccount:0x7c91e01b21a21F51Ee6fB2A935EE17a140A83861} {OffchainPublicKey:[175 87 104 79 88 88 68 27"} +{"Time":"2024-08-15T13:38:08.805476-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.798-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"config\": {\"ConfigDigest\":\"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0x7c91e01b21a21F51Ee6fB2A935EE17a140A83861\",\"0xFcd50645379b6959DD9CacCdae19f79507c4f341\",\"0x013eCe49A33529DfF532D1623C4D9696c4d9CA57\",\"0xc23808Fe7134a2d04b871c0a5ae4999123830ac1\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfT"} +{"Time":"2024-08-15T13:38:08.807814-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.801-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1, \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAcc"} +{"Time":"2024-08-15T13:38:08.809307-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.802-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}}\n"} +{"Time":"2024-08-15T13:38:08.809317-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.803-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"config\": {\"ConfigDigest\":\"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0x275CcC34Cf98d5939BB20a4696B94cd057140367\",\"0x2d4c45aD58b3d177c0de811aFD033aAAAfC54419\",\"0xFf56Dd72Ffd72B9D2983e43316e8615Abc2d17Ef\",\"0xC8a753F6261549710d58dd22AbACA511969633D4\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfT"} +{"Time":"2024-08-15T13:38:08.81007-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.803-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2}\n"} +{"Time":"2024-08-15T13:38:08.810214-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.804-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\"}\n"} +{"Time":"2024-08-15T13:38:08.810344-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.804-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"repatt\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.810428-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.804-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2}\n"} +{"Time":"2024-08-15T13:38:08.810524-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.804-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"pacemaker\"}\n"} +{"Time":"2024-08-15T13:38:08.810646-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.804-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"proto\": \"outgen\", \"epoch\": 1}\n"} +{"Time":"2024-08-15T13:38:08.810747-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.804-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 1, \"l\": 1, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:38:08.811026-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.805-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}, \"oid\": 1}\n"} +{"Time":"2024-08-15T13:38:08.81136-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.807-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.811444-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.807-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:38:08.811524-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.807-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1, \"proto\": \"pacemaker\"}\n"} +{"Time":"2024-08-15T13:38:08.811534-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.807-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1, \"proto\": \"repatt\"}\n"} +{"Time":"2024-08-15T13:38:08.811539-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.807-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:38:08.811616-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.807-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"epoch\": 1, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:38:08.811623-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.807-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 1, \"l\": 2, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"oid\": 1}\n"} +{"Time":"2024-08-15T13:38:08.816087-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.816-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.816101-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.816-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.816128-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.816-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.81625-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.816-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.816259-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.816-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.816306-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.816-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.820612-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.818-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"config\": {\"ConfigDigest\":\"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0x275CcC34Cf98d5939BB20a4696B94cd057140367\",\"0x2d4c45aD58b3d177c0de811aFD033aAAAfC54419\",\"0xFf56Dd72Ffd72B9D2983e43316e8615Abc2d17Ef\",\"0xC8a753F6261549710d58dd22AbACA511969633D4\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfT"} +{"Time":"2024-08-15T13:38:08.821678-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.818-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"oid\": 3, \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAccount:0x275CcC34Cf98d5939BB20a4696B94cd057140367} {OffchainPublicKey:[175 87 104 79 8"} +{"Time":"2024-08-15T13:38:08.830387-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.822-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}}\n"} +{"Time":"2024-08-15T13:38:08.831887-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.822-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.831946-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.822-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.831955-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.822-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.832012-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.822-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.832019-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.822-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} +{"Time":"2024-08-15T13:38:08.83211-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.822-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.834072-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.823-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/managed_ocr3_oracle.go:161\tManagedOCR3Oracle: error during NewEndpoint\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"error\": \"asked to add group with digest we already have (digest: 000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143)\", \"peerIDs\": [\"12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2\", \"12D3KooWHmm26BVPGRPyPNSo6x2ej5K7THDzi6T1mL9MtD3XCRvt\", \"12D3KooWAYB8Z2m3QNKQre9ELWXtojtE9T5YqapZUd2kW5kvS9w8\", \"12D3KooWJ9F1bZC7mj5vb2a4ivcDov3mQVtaLi3xHsebPfVwgksS\"], \"v2bootstrappers\": [\"12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2@127.0.0.1:20501\"]}\n"} +{"Time":"2024-08-15T13:38:08.834989-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.824-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0x7c91e01b21a21F51Ee6fB2A935EE17a140A83861\",\"0xFcd50645379b6959DD9CacCdae19f79507c4f341\",\"0x013eCe49A33529DfF532D1623C4D9696c4d9CA57\",\"0xc23808Fe7134a2d04b871c0a5ae4999123830ac1\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfThKi7ogiP4O3cVkdB67AgWZFpWIN8ggIg/xIHjdNjqnT0icpJScN/8bB8MjUTG88GkvT7tgyrCxeKAjQxMkQz"} +{"Time":"2024-08-15T13:38:08.838606-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.823-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3}\n"} +{"Time":"2024-08-15T13:38:08.83866-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.824-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3}\n"} +{"Time":"2024-08-15T13:38:08.838826-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.824-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"proto\": \"pacemaker\"}\n"} +{"Time":"2024-08-15T13:38:08.839059-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.824-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:38:08.839088-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.824-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"proto\": \"repatt\"}\n"} +{"Time":"2024-08-15T13:38:08.842553-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.824-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"epoch\": 1, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3}\n"} +{"Time":"2024-08-15T13:38:08.842643-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.825-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"e\": 1, \"l\": 2}\n"} +{"Time":"2024-08-15T13:38:08.8471-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.831-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.847138-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.831-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.847158-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.831-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.848337-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.831-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} +{"Time":"2024-08-15T13:38:08.848388-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.831-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} +{"Time":"2024-08-15T13:38:08.848501-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.831-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.848904-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.831-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAccount:0x7c91e01b21a21F51Ee6fB2A935EE17a140A83861} {OffchainPublicKey:[175 87 104 79 88 88 68 27"} +{"Time":"2024-08-15T13:38:08.849121-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.832-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0x7c91e01b21a21F51Ee6fB2A935EE17a140A83861\",\"0xFcd50645379b6959DD9CacCdae19f79507c4f341\",\"0x013eCe49A33529DfF532D1623C4D9696c4d9CA57\",\"0xc23808Fe7134a2d04b871c0a5ae4999123830ac1\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfThKi7ogiP4O3cVkdB67AgWZFpWIN8ggIg/xIHjdNjqnT0icpJScN/8bB8MjUTG88GkvT7tgyrCxeKAjQxMkQz"} +{"Time":"2024-08-15T13:38:08.850224-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.833-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:38:08.850304-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.834-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:38:08.850319-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.834-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\"}\n"} +{"Time":"2024-08-15T13:38:08.85033-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.834-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:38:08.850354-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.834-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"repatt\"}\n"} +{"Time":"2024-08-15T13:38:08.850366-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.834-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"pacemaker\"}\n"} +{"Time":"2024-08-15T13:38:08.850451-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.834-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"epoch\": 1}\n"} +{"Time":"2024-08-15T13:38:08.850473-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.834-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 1, \"l\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:38:08.850539-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.838-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.850597-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.838-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.850611-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.838-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.850622-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.838-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.850718-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.838-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} +{"Time":"2024-08-15T13:38:08.850733-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.838-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.851376-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.839-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAcc"} +{"Time":"2024-08-15T13:38:08.851708-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.840-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"config\": {\"ConfigDigest\":\"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0xe0F4a70361306085d2a61785B308e95d5ad06955\",\"0x9946f887FA1da1c548A08f4aD95b0e440088F0aE\",\"0x4333763Dc844117F00C12174F88495eC03B5F189\",\"0xd3152E7f39637c9117662972d31899F3a213A0Cd\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfT"} +{"Time":"2024-08-15T13:38:08.85407-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"oid\": 2, \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.854106-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.854118-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.854155-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.854166-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.854237-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.854363-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.854691-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAcc"} +{"Time":"2024-08-15T13:38:08.855024-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2}\n"} +{"Time":"2024-08-15T13:38:08.855046-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.855205-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"pacemaker\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.855512-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:38:08.855522-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"repatt\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.857235-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.842-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"config\": {\"ConfigDigest\":\"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0x7c91e01b21a21F51Ee6fB2A935EE17a140A83861\",\"0xFcd50645379b6959DD9CacCdae19f79507c4f341\",\"0x013eCe49A33529DfF532D1623C4D9696c4d9CA57\",\"0xc23808Fe7134a2d04b871c0a5ae4999123830ac1\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfT"} +{"Time":"2024-08-15T13:38:08.861282-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.842-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"epoch\": 1}\n"} +{"Time":"2024-08-15T13:38:08.861373-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.842-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}}\n"} +{"Time":"2024-08-15T13:38:08.861555-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.845-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"oid\": 2, \"proto\": \"outgen\", \"e\": 1, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.862368-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.848-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3}\n"} +{"Time":"2024-08-15T13:38:08.862426-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.848-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"transmission\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.863094-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.848-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"pacemaker\"}\n"} +{"Time":"2024-08-15T13:38:08.8631-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.848-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"repatt\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.863105-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.848-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:08.863196-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.848-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"outgen\", \"epoch\": 1}\n"} +{"Time":"2024-08-15T13:38:08.863204-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.848-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 1, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"oid\": 3, \"e\": 1}\n"} +{"Time":"2024-08-15T13:38:08.86446-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.856-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.864701-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.856-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.86471-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.856-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.864777-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.856-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} +{"Time":"2024-08-15T13:38:08.864785-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.856-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.864847-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.856-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.865203-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.857-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/managed_ocr3_oracle.go:161\tManagedOCR3Oracle: error during NewEndpoint\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"peerIDs\": [\"12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2\", \"12D3KooWHmm26BVPGRPyPNSo6x2ej5K7THDzi6T1mL9MtD3XCRvt\", \"12D3KooWAYB8Z2m3QNKQre9ELWXtojtE9T5YqapZUd2kW5kvS9w8\", \"12D3KooWJ9F1bZC7mj5vb2a4ivcDov3mQVtaLi3xHsebPfVwgksS\"], \"v2bootstrappers\": [\"12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2@127.0.0.1:20501\"], \"error\": \"asked to add group with digest we already have (digest: 000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b)\"}\n"} +{"Time":"2024-08-15T13:38:08.867125-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.858-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0."} +{"Time":"2024-08-15T13:38:08.871647-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.858-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.871772-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.858-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.871976-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.858-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.872079-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.858-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} +{"Time":"2024-08-15T13:38:08.872224-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.858-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.872464-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.858-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.872758-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.859-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAcc"} +{"Time":"2024-08-15T13:38:08.873572-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.859-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0xe0F4a70361306085d2a61785B308e95d5ad06955\",\"0x9946f887FA1da1c548A08f4aD95b0e440088F0aE\",\"0x4333763Dc844117F00C12174F88495eC03B5F189\",\"0xd3152E7f39637c9117662972d31899F3a213A0Cd\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfThKi7ogiP4O3cVkdB67AgWZFpWIN8ggIg/xIHjdNjqnT0icpJScN/8bB8MjUTG88GkvT7tgyrCxeKAjQxMkQz"} +{"Time":"2024-08-15T13:38:08.874246-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.860-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}}\n"} +{"Time":"2024-08-15T13:38:08.874251-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:38:08.874337-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:38:08.874426-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:38:08.874506-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"proto\": \"repatt\"}\n"} +{"Time":"2024-08-15T13:38:08.874596-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"pacemaker\"}\n"} +{"Time":"2024-08-15T13:38:08.874678-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"epoch\": 1}\n"} +{"Time":"2024-08-15T13:38:08.874753-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 1, \"l\": 1}\n"} +{"Time":"2024-08-15T13:38:08.874832-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.865-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.874837-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.865-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.8749-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.865-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.874907-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.865-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.875016-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.865-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.875023-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.865-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.87559-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.865-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAccount:0x275CcC34Cf98d5939BB20a4696B94cd057140367} {OffchainPublicKey:[175 87 104 79 88 88 68 27 124 250 180 253 12 226 247 243 9 164 124 78 102 76 9 185 87 98 0 151 200 9 6 14] OnchainPublicKey:[88 74 8 95 131 52 180 5 185 118 26 57 49 151 252 133 143 154 26 249] PeerID:12D3KooWHmm26BVPGRPyPNSo6x2ej5K7THDzi6T1mL9MtD3XCRvt TransmitAccount:0x2d4c45aD"} +{"Time":"2024-08-15T13:38:08.87625-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.866-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"config\": {\"ConfigDigest\":\"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0x275CcC34Cf98d5939BB20a4696B94cd057140367\",\"0x2d4c45aD58b3d177c0de811aFD033aAAAfC54419\",\"0xFf56Dd72Ffd72B9D2983e43316e8615Abc2d17Ef\",\"0xC8a753F6261549710d58dd22AbACA511969633D4\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfT"} +{"Time":"2024-08-15T13:38:08.877512-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 2}\n"} +{"Time":"2024-08-15T13:38:08.877611-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.877619-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 2, \"proto\": \"transmission\"}\n"} +{"Time":"2024-08-15T13:38:08.877626-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.877687-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:38:08.877694-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.877784-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} +{"Time":"2024-08-15T13:38:08.877791-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"proto\": \"repatt\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 2}\n"} +{"Time":"2024-08-15T13:38:08.877852-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.877859-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.877935-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 2, \"proto\": \"pacemaker\"}\n"} +{"Time":"2024-08-15T13:38:08.878303-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"oid\": 2}\n"} +{"Time":"2024-08-15T13:38:08.878374-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"epoch\": 1, \"oid\": 2}\n"} +{"Time":"2024-08-15T13:38:08.878504-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.868-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 1, \"l\": 2, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:08.8787-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.868-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAccount:0xe0F4a70361306085d2a61785B308e95d5ad06955} {OffchainPublicKey:[175 87 104 79 88 88 68 27"} +{"Time":"2024-08-15T13:38:08.8794-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.868-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"config\": {\"ConfigDigest\":\"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0xe0F4a70361306085d2a61785B308e95d5ad06955\",\"0x9946f887FA1da1c548A08f4aD95b0e440088F0aE\",\"0x4333763Dc844117F00C12174F88495eC03B5F189\",\"0xd3152E7f39637c9117662972d31899F3a213A0Cd\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfT"} +{"Time":"2024-08-15T13:38:08.879931-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.868-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}}\n"} +{"Time":"2024-08-15T13:38:08.880682-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.873-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"oid\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.880689-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.873-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"transmission\"}\n"} +{"Time":"2024-08-15T13:38:08.880781-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.873-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"proto\": \"pacemaker\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3}\n"} +{"Time":"2024-08-15T13:38:08.880846-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.873-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"proto\": \"repatt\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3}\n"} +{"Time":"2024-08-15T13:38:08.880936-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"outgen\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:08.880984-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"epoch\": 1}\n"} +{"Time":"2024-08-15T13:38:08.881075-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 1}\n"} +{"Time":"2024-08-15T13:38:16.975306-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.973-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"l\": 1, \"contributors\": \"AQMC\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 1}\n"} +{"Time":"2024-08-15T13:38:16.975729-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.973-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 1, \"l\": 2, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"contributors\": \"AQID\"}\n"} +{"Time":"2024-08-15T13:38:16.975887-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.974-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"l\": 1, \"contributors\": \"AQMC\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 1}\n"} +{"Time":"2024-08-15T13:38:16.976532-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.974-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"round\": 1, \"seqNr\": 1, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"e\": 1, \"l\": 2}\n"} +{"Time":"2024-08-15T13:38:16.977439-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"seqNr\": 1, \"round\": 1, \"oid\": 1, \"proto\": \"outgen\", \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 909606746561742123\", \"e\": 1, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:16.978449-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 1, \"l\": 2, \"seqNr\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"round\": 1}\n"} +{"Time":"2024-08-15T13:38:16.97943-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"seqNr\": 1, \"round\": 1, \"l\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"e\": 1}\n"} +{"Time":"2024-08-15T13:38:16.980283-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 1, \"seqNr\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 909606746561742123\", \"round\": 1, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2}\n"} +{"Time":"2024-08-15T13:38:16.981136-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"e\": 1, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"seqNr\": 1, \"round\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 909606746561742123\", \"oid\": 3, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:38:16.982146-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"oid\": 3, \"e\": 1, \"l\": 2, \"seqNr\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"round\": 1, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:16.982908-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"seqNr\": 1, \"round\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 1, \"l\": 1}\n"} +{"Time":"2024-08-15T13:38:16.983761-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"oid\": 2, \"e\": 1, \"l\": 1, \"round\": 1, \"seqNr\": 1, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\"}\n"} +{"Time":"2024-08-15T13:38:38.829271-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.829-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 3, \"e\": 1, \"l\": 2, \"epoch\": 2, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:38.829337-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.829-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"e\": 2, \"l\": 1, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3}\n"} +{"Time":"2024-08-15T13:38:38.829366-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.829-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 1, \"l\": 2, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"epoch\": 2}\n"} +{"Time":"2024-08-15T13:38:38.829399-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.829-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"e\": 2, \"l\": 1, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"oid\": 2}\n"} +{"Time":"2024-08-15T13:38:38.829734-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.829-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 1, \"l\": 2, \"epoch\": 2}\n"} +{"Time":"2024-08-15T13:38:38.829784-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.829-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 2, \"l\": 1, \"oid\": 1, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:38:38.830211-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.830-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"e\": 2, \"l\": 1, \"oid\": 1, \"contributors\": \"AgMB\", \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:38.837477-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.837-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 1, \"l\": 1}\n"} +{"Time":"2024-08-15T13:38:38.837562-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.837-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 2, \"l\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:38:38.837691-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.837-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 1, \"l\": 1, \"epoch\": 2}\n"} +{"Time":"2024-08-15T13:38:38.837739-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.837-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 2, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 1, \"l\": 1}\n"} +{"Time":"2024-08-15T13:38:38.837796-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.837-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"oid\": 2, \"e\": 2, \"l\": 2, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:38:38.837874-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.837-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 2, \"l\": 2, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:38:38.838242-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.838-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"contributors\": \"AQID\", \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 2, \"l\": 2}\n"} +{"Time":"2024-08-15T13:38:38.867835-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 1, \"l\": 1, \"epoch\": 2}\n"} +{"Time":"2024-08-15T13:38:38.867861-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"epoch\": 2, \"e\": 1, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:38.867883-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 2, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"e\": 2}\n"} +{"Time":"2024-08-15T13:38:38.867892-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 2, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 2, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:38:38.868083-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.868-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 1, \"l\": 1, \"epoch\": 2}\n"} +{"Time":"2024-08-15T13:38:38.868131-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.868-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 2, \"l\": 2, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2}\n"} +{"Time":"2024-08-15T13:38:38.868475-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.868-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"contributors\": \"AQMC\", \"e\": 2, \"l\": 2, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2}\n"} +{"Time":"2024-08-15T13:38:42.85283-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:42.852-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"seqNr\": 1, \"index\": 0}\n"} +{"Time":"2024-08-15T13:38:42.855664-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:42.855-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 1, \"index\": 0}\n"} +{"Time":"2024-08-15T13:38:44.863197-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:44.863-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"seqNr\": 2, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"proto\": \"transmission\"}\n"} +{"Time":"2024-08-15T13:38:44.863505-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:44.863-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 2, \"index\": 0, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:44.886998-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:44.886-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"transmission\", \"seqNr\": 2, \"index\": 0}\n"} +{"Time":"2024-08-15T13:38:46.866642-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"e\": 2, \"epoch\": 3, \"l\": 1, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3}\n"} +{"Time":"2024-08-15T13:38:46.866709-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}, \"e\": 3, \"l\": 0}\n"} +{"Time":"2024-08-15T13:38:46.866924-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 2, \"l\": 2, \"epoch\": 3}\n"} +{"Time":"2024-08-15T13:38:46.866942-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 2, \"l\": 1, \"epoch\": 3}\n"} +{"Time":"2024-08-15T13:38:46.866954-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"e\": 2, \"l\": 1, \"epoch\": 3}\n"} +{"Time":"2024-08-15T13:38:46.867052-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"epoch\": 3, \"e\": 2, \"l\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:38:46.867068-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 3, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}, \"e\": 3}\n"} +{"Time":"2024-08-15T13:38:46.867318-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 3, \"l\": 0, \"oid\": 1, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:38:46.867332-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 3, \"l\": 0, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:46.867449-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 3, \"e\": 2, \"l\": 2, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"epoch\": 3}\n"} +{"Time":"2024-08-15T13:38:46.867574-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 3, \"l\": 3, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:38:46.867594-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 3, \"l\": 3, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3}\n"} +{"Time":"2024-08-15T13:38:46.868212-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.868-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"l\": 3, \"contributors\": \"AwIB\", \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 3}\n"} +{"Time":"2024-08-15T13:38:46.871518-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.871-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 3, \"index\": 0}\n"} +{"Time":"2024-08-15T13:38:46.872912-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.872-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"seqNr\": 3, \"index\": 0, \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:46.889965-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.889-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 2, \"epoch\": 3, \"l\": 2}\n"} +{"Time":"2024-08-15T13:38:46.890025-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.889-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 3, \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:38:46.890202-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.890-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 2, \"l\": 2, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"epoch\": 3}\n"} +{"Time":"2024-08-15T13:38:46.890219-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.890-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"epoch\": 3, \"e\": 2, \"l\": 2, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:38:46.89025-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.890-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 3, \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:38:46.890305-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.890-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 3, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}, \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:38:46.891196-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.891-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"contributors\": \"AgED\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 3}\n"} +{"Time":"2024-08-15T13:38:50.88228-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:50.882-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 4, \"index\": 0}\n"} +{"Time":"2024-08-15T13:38:50.902274-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:50.902-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 4, \"index\": 0}\n"} +{"Time":"2024-08-15T13:38:52.855356-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:52.855-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"seqNr\": 1, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:38:52.885613-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:52.885-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"seqNr\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"transmission\", \"index\": 0}\n"} +{"Time":"2024-08-15T13:38:52.908161-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:52.908-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"seqNr\": 5, \"index\": 0}\n"} +{"Time":"2024-08-15T13:38:54.862511-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.862-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 2, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:54.887049-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.887-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"seqNr\": 2, \"index\": 0, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3}\n"} +{"Time":"2024-08-15T13:38:54.893256-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.893-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"l\": 3, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 3, \"epoch\": 4}\n"} +{"Time":"2024-08-15T13:38:54.893293-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.893-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 4, \"l\": 2, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:38:54.89375-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.893-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 3, \"l\": 3, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"epoch\": 4}\n"} +{"Time":"2024-08-15T13:38:54.893763-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.893-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 3, \"l\": 3, \"proto\": \"outgen\", \"epoch\": 4}\n"} +{"Time":"2024-08-15T13:38:54.893784-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.893-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 4, \"l\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:38:54.893811-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.893-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 4, \"l\": 2}\n"} +{"Time":"2024-08-15T13:38:54.894452-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.894-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"oid\": 2, \"e\": 4, \"contributors\": \"AgED\", \"l\": 2, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:38:54.909876-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.909-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 3, \"l\": 3, \"epoch\": 4, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:38:54.909908-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.909-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 4, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:38:54.910091-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.910-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 3, \"l\": 3, \"epoch\": 4}\n"} +{"Time":"2024-08-15T13:38:54.910128-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.910-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 3, \"l\": 3, \"epoch\": 4}\n"} +{"Time":"2024-08-15T13:38:54.910204-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.910-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 4, \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}, \"l\": 1}\n"} +{"Time":"2024-08-15T13:38:54.910215-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.910-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 4, \"l\": 1, \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:38:54.910809-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.910-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"contributors\": \"AwEC\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 4, \"l\": 1}\n"} +{"Time":"2024-08-15T13:38:54.912807-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.912-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"transmission\", \"index\": 0, \"seqNr\": 6}\n"} +{"Time":"2024-08-15T13:38:56.873093-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:56.873-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 3, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:38:56.873504-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:56.873-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 3, \"index\": 0}\n"} +{"Time":"2024-08-15T13:38:56.894485-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:56.894-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"transmission\", \"index\": 0, \"seqNr\": 3}\n"} +{"Time":"2024-08-15T13:38:58.902813-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:58.902-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 3, \"seqNr\": 7, \"index\": 0, \"proto\": \"transmission\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:39:00.906971-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:00.906-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 4, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:00.912448-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:00.912-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"index\": 0, \"seqNr\": 8, \"proto\": \"transmission\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:39:00.929257-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:00.929-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"seqNr\": 8}\n"} +{"Time":"2024-08-15T13:39:02.853417-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.853-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"seqNr\": 1, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 2, \"proto\": \"transmission\"}\n"} +{"Time":"2024-08-15T13:39:02.853811-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.853-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"seqNr\": 1, \"index\": 0, \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:39:02.882123-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.882-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"seqNr\": 1, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:02.890444-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.890-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 5, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:02.914213-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.914-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 5, \"proto\": \"outgen\", \"e\": 4, \"l\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:39:02.914231-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.914-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"e\": 4, \"epoch\": 5, \"l\": 2, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2}\n"} +{"Time":"2024-08-15T13:39:02.914261-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.914-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 3, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}, \"e\": 5}\n"} +{"Time":"2024-08-15T13:39:02.914285-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.914-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}, \"l\": 3, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 5}\n"} +{"Time":"2024-08-15T13:39:02.914421-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.914-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 3, \"e\": 4, \"l\": 2, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"epoch\": 5}\n"} +{"Time":"2024-08-15T13:39:02.914447-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.914-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 3, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 5, \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:39:02.915125-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.915-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"contributors\": \"AQID\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 5, \"l\": 3}\n"} +{"Time":"2024-08-15T13:39:02.9169-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.916-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"transmission\", \"index\": 0, \"seqNr\": 9}\n"} +{"Time":"2024-08-15T13:39:02.930677-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.930-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"epoch\": 5, \"e\": 4, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:39:02.930714-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.930-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}, \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 5}\n"} +{"Time":"2024-08-15T13:39:02.930943-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.930-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 4, \"l\": 1, \"epoch\": 5}\n"} +{"Time":"2024-08-15T13:39:02.931038-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.930-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 4, \"epoch\": 5}\n"} +{"Time":"2024-08-15T13:39:02.931056-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.931-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 3, \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 5}\n"} +{"Time":"2024-08-15T13:39:02.931082-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.930-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}, \"e\": 5, \"l\": 3}\n"} +{"Time":"2024-08-15T13:39:02.931685-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.931-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"contributors\": \"AQMC\", \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 5}\n"} +{"Time":"2024-08-15T13:39:02.93366-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.933-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"seqNr\": 9, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3}\n"} +{"Time":"2024-08-15T13:39:04.863644-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:04.863-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"seqNr\": 2, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1, \"proto\": \"transmission\"}\n"} +{"Time":"2024-08-15T13:39:04.864258-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:04.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 2, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:04.888498-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:04.888-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"seqNr\": 2, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:04.896203-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:04.896-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 6, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:04.914492-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:04.914-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 6}\n"} +{"Time":"2024-08-15T13:39:06.874323-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 3, \"epoch\": 4, \"e\": 3, \"l\": 0, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:39:06.874365-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 4, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 3, \"l\": 0, \"oid\": 1, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:39:06.874401-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 3, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"e\": 4}\n"} +{"Time":"2024-08-15T13:39:06.874512-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 4, \"l\": 3, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}, \"oid\": 1, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:39:06.874813-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"l\": 0, \"epoch\": 4, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"e\": 3}\n"} +{"Time":"2024-08-15T13:39:06.874831-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 4, \"l\": 3, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:39:06.875721-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.875-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1, \"seqNr\": 3, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:06.875828-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.875-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"contributors\": \"AwEC\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"e\": 4, \"l\": 3}\n"} +{"Time":"2024-08-15T13:39:06.895283-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.895-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"seqNr\": 3, \"index\": 0, \"proto\": \"transmission\"}\n"} +{"Time":"2024-08-15T13:39:06.944819-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.944-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"seqNr\": 10, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:08.904603-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:08.904-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"seqNr\": 7, \"index\": 0, \"proto\": \"transmission\", \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:39:08.918907-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:08.918-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"seqNr\": 7, \"index\": 0, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"transmission\"}\n"} +{"Time":"2024-08-15T13:39:08.930767-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:08.930-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 11, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:10.883603-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.883-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 4, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:10.890226-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.889-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"seqNr\": 4, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:10.902255-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.902-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"transmission\", \"seqNr\": 4, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:10.913771-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.913-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"oid\": 2, \"seqNr\": 8, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:10.933484-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.933-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 6, \"proto\": \"outgen\", \"e\": 5, \"l\": 3, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:39:10.933532-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.933-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 0, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":12,\"CommittedElsePrepared\":true}, \"e\": 6}\n"} +{"Time":"2024-08-15T13:39:10.933713-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.933-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"l\": 3, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 5, \"epoch\": 6}\n"} +{"Time":"2024-08-15T13:39:10.933741-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.933-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"epoch\": 6, \"e\": 5, \"l\": 3}\n"} +{"Time":"2024-08-15T13:39:10.93376-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.933-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"highestCertifiedTimestamp\": {\"SeqNr\":12,\"CommittedElsePrepared\":true}, \"e\": 6, \"l\": 0, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:39:10.933834-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.933-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"highestCertifiedTimestamp\": {\"SeqNr\":12,\"CommittedElsePrepared\":true}, \"e\": 6, \"l\": 0, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:39:10.949377-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.949-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 6, \"oid\": 1, \"proto\": \"outgen\", \"e\": 5, \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:39:10.949435-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.949-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":12,\"CommittedElsePrepared\":true}, \"oid\": 1, \"proto\": \"outgen\", \"e\": 6, \"l\": 0, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:39:10.94955-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.949-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 6, \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 5}\n"} +{"Time":"2024-08-15T13:39:10.949564-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.949-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 5, \"epoch\": 6, \"l\": 3}\n"} +{"Time":"2024-08-15T13:39:10.949589-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.949-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 6, \"l\": 0, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":12,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:39:10.949601-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.949-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 0, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 6, \"highestCertifiedTimestamp\": {\"SeqNr\":12,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:39:10.951806-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.951-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 12, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:12.860192-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:12.860-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 1, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:12.880152-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:12.880-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 1, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:12.891938-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:12.891-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"transmission\", \"index\": 0, \"seqNr\": 5}\n"} +{"Time":"2024-08-15T13:39:12.897267-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:12.896-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 5, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:39:12.908704-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:12.908-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 5, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:14.866745-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"seqNr\": 2, \"index\": 0, \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:39:14.89977-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.899-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 6, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:14.900157-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.900-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 5, \"proto\": \"outgen\", \"e\": 4, \"l\": 3, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:39:14.900205-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.900-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"epoch\": 5, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 4, \"l\": 3, \"oid\": 1}\n"} +{"Time":"2024-08-15T13:39:14.900217-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.900-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}, \"e\": 5, \"l\": 2, \"oid\": 2}\n"} +{"Time":"2024-08-15T13:39:14.900228-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.900-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"e\": 4, \"l\": 3, \"proto\": \"outgen\", \"epoch\": 5}\n"} +{"Time":"2024-08-15T13:39:14.900406-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.900-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 5, \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}, \"l\": 2, \"oid\": 1, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:39:14.900428-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.900-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"e\": 5, \"l\": 2, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:39:14.901305-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.901-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 5, \"l\": 2, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"contributors\": \"AgED\"}\n"} +{"Time":"2024-08-15T13:39:14.913885-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.913-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"transmission\", \"seqNr\": 6, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:16.872956-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:16.872-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"seqNr\": 3, \"index\": 0, \"proto\": \"transmission\"}\n"} +{"Time":"2024-08-15T13:39:16.89373-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:16.893-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"seqNr\": 3, \"oid\": 3, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} +{"Time":"2024-08-15T13:39:16.93198-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:16.931-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"oid\": 1, \"index\": 0, \"seqNr\": 10}\n"} +{"Time":"2024-08-15T13:39:18.905361-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:18.905-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"index\": 0, \"seqNr\": 7, \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:39:18.910478-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:18.910-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1, \"proto\": \"transmission\", \"seqNr\": 7}\n"} +{"Time":"2024-08-15T13:39:18.918456-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:18.918-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"seqNr\": 7, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:18.931119-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:18.931-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"index\": 0, \"seqNr\": 11}\n"} +{"Time":"2024-08-15T13:39:18.94776-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:18.947-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"seqNr\": 11}\n"} +{"Time":"2024-08-15T13:39:20.888304-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:20.888-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 4, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:20.892188-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:20.892-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"seqNr\": 4, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:20.912881-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:20.912-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 8}\n"} +{"Time":"2024-08-15T13:39:20.919302-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:20.919-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1, \"seqNr\": 8, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:20.928226-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:20.928-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"seqNr\": 8, \"index\": 0, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1}\n"} +{"Time":"2024-08-15T13:39:20.936794-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:20.936-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 12}\n"} +{"Time":"2024-08-15T13:39:22.895715-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.895-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 5, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:22.89901-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.898-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 3, \"seqNr\": 5, \"index\": 0, \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:39:22.913542-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.913-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"index\": 0, \"seqNr\": 5}\n"} +{"Time":"2024-08-15T13:39:22.918872-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.918-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"oid\": 2, \"seqNr\": 9, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:22.921046-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.921-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 6, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 5, \"l\": 2, \"oid\": 1, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:39:22.921129-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.921-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 6, \"l\": 1, \"oid\": 1, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:39:22.921246-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.921-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"e\": 5, \"l\": 2, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"epoch\": 6, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:39:22.921314-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.921-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 1, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"e\": 6, \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:39:22.921333-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.921-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"epoch\": 6, \"e\": 5, \"l\": 2}\n"} +{"Time":"2024-08-15T13:39:22.921405-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.921-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 1, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"e\": 6, \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}}\n"} +{"Time":"2024-08-15T13:39:22.922105-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.922-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 6, \"l\": 1, \"oid\": 1, \"contributors\": \"AwEC\"}\n"} +{"Time":"2024-08-15T13:39:22.923686-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.923-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 9, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} +{"Time":"2024-08-15T13:39:22.932835-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.932-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 9, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:24.898191-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:24.898-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"seqNr\": 6, \"index\": 0, \"oid\": 3, \"proto\": \"transmission\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:39:24.903139-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:24.903-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 6, \"index\": 0}\n"} +{"Time":"2024-08-15T13:39:26.925193-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:26.925-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_follower.go:749\terror persisting cert to database, cannot safely continue current round\t{\"version\": \"unset@unset\", \"seqNr\": 10, \"error\": \"WriteProtocolState failed for job 1: sql: database is closed\", \"errorVerbose\": \"sql: database is closed\\nWriteProtocolState failed for job 1\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteProtocolState\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:376\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/shim.(*SerializingOCR3Database).WriteCert\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/shim/ocr3_database.go:91\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/ocr3/protocol.(*outcomeGenerationState[...]).persistCert\\n\\t/Users/"} +{"Time":"2024-08-15T13:39:26.925893-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:26.925-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:208\tContractTransmitter.Transmit error\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"transmission\", \"error\": \"failed to submit transaction thru chainwriter: Failed to search for transaction with IdempotencyKey: sql: database is closed; failed to create tx\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} +{"Time":"2024-08-15T13:39:26.926151-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:26.925-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_follower.go:749\terror persisting cert to database, cannot safely continue current round\t{\"version\": \"unset@unset\", \"seqNr\": 10, \"error\": \"WriteProtocolState failed for job 1: sql: database is closed\", \"errorVerbose\": \"sql: database is closed\\nWriteProtocolState failed for job 1\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteProtocolState\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:376\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/shim.(*SerializingOCR3Database).WriteCert\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/shim/ocr3_database.go:91\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/ocr3/protocol.(*outcomeGenerationState[...]).persistCert\\n\\t/Users/"} +{"Time":"2024-08-15T13:39:26.926766-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:26.925-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_follower.go:749\terror persisting cert to database, cannot safely continue current round\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"seqNr\": 10, \"error\": \"WriteProtocolState failed for job 1: sql: database is closed\", \"errorVerbose\": \"sql: database is closed\\nWriteProtocolState failed for job 1\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteProtocolState\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:376\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/shim.(*SerializingOCR3Database).WriteCert\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/shim/ocr3_database.go:91\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/ocr3/protocol.(*outcomeGenerationState"} +{"Time":"2024-08-15T13:39:26.940926-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:26.940-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:208\tContractTransmitter.Transmit error\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"error\": \"failed to submit transaction thru chainwriter: Failed to search for transaction with IdempotencyKey: sql: database is closed; failed to create tx\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2}\n"} diff --git a/integration-tests/deployment/ccip/deploy.go b/integration-tests/deployment/ccip/deploy.go index 01dffe8960..7491fe19ff 100644 --- a/integration-tests/deployment/ccip/deploy.go +++ b/integration-tests/deployment/ccip/deploy.go @@ -357,7 +357,7 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( chain.Client, evm_2_evm_multi_onramp.EVM2EVMMultiOnRampStaticConfig{ ChainSelector: sel, - RmnProxy: routerContract.Address, + RmnProxy: armProxy.Address, NonceManager: nonceManager.Address, TokenAdminRegistry: tokenAdminRegistry.Address, }, @@ -384,7 +384,7 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( chain.Client, evm_2_evm_multi_offramp.EVM2EVMMultiOffRampStaticConfig{ ChainSelector: sel, - RmnProxy: routerContract.Address, + RmnProxy: armProxy.Address, NonceManager: nonceManager.Address, TokenAdminRegistry: tokenAdminRegistry.Address, }, diff --git a/integration-tests/deployment/ccip/deploy_home_chain.go b/integration-tests/deployment/ccip/deploy_home_chain.go index 51e995c4ec..3f194ecbf2 100644 --- a/integration-tests/deployment/ccip/deploy_home_chain.go +++ b/integration-tests/deployment/ccip/deploy_home_chain.go @@ -98,13 +98,10 @@ func DeployCapReg(lggr logger.Logger, chains map[uint64]deployment.Chain, chainS ConfigurationContract: ccipConfig.Address, }, }) - if err != nil { + if err := ConfirmIfNoError(chain, tx, err); err != nil { lggr.Errorw("Failed to add capabilities", "err", err) return ab, err } - if err := chain.Confirm(tx.Hash()); err != nil { - return ab, err - } // TODO: Just one for testing. tx, err = capReg.Contract.AddNodeOperators(chain.DeployerKey, []capabilities_registry.CapabilitiesRegistryNodeOperator{ { @@ -112,13 +109,10 @@ func DeployCapReg(lggr logger.Logger, chains map[uint64]deployment.Chain, chainS Name: "NodeOperator", }, }) - if err != nil { + if err := ConfirmIfNoError(chain, tx, err); err != nil { lggr.Errorw("Failed to add node operators", "err", err) return ab, err } - if err := chain.Confirm(tx.Hash()); err != nil { - return ab, err - } return ab, nil } @@ -226,7 +220,7 @@ func AddDON( OnchainPublicKey: cfg.OnchainPublicKey, TransmitAccount: cfg.TransmitAccount, OffchainPublicKey: cfg.OffchainPublicKey, - PeerID: cfg.PeerID.String(), + PeerID: cfg.PeerID.String()[4:], }, ConfigEncryptionPublicKey: cfg.ConfigEncryptionPublicKey, }) } diff --git a/integration-tests/deployment/ccip/error b/integration-tests/deployment/ccip/error new file mode 100644 index 0000000000..8ca854fb09 --- /dev/null +++ b/integration-tests/deployment/ccip/error @@ -0,0 +1,172 @@ +{"Time":"2024-08-15T13:56:57.353652-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:56:57.353-0400\tERROR\tchainlink/application.go:643\t[Feeds Service] Failed to start CSA key does not exist\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:56:57.382839-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:56:57.382-0400\tERROR\tchainlink/application.go:643\t[Feeds Service] Failed to start CSA key does not exist\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:56:57.40511-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:56:57.404-0400\tERROR\tchainlink/application.go:643\t[Feeds Service] Failed to start CSA key does not exist\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:56:57.425009-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:56:57.424-0400\tERROR\tchainlink/application.go:643\t[Feeds Service] Failed to start CSA key does not exist\t{\"version\": \"unset@unset\"}\n"} +{"Time":"2024-08-15T13:57:09.73461-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.734-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"config\": {\"ConfigDigest\":\"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x81EB0885acfb6c877082d1FB2666782e4e88a4e7\",\"0x786D555c915a16e36667dBa5025eE8955Edc9350\",\"0xb8a921465e756E6E52AE2b38e1617383a311A8C9\",\"0xF5dE25DBcA3275a267178C50713D624F35793807\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiT"} +{"Time":"2024-08-15T13:57:09.736459-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDs0AUw2fHmbLZ9Lf8wNahuTbcXXt5ffHWOF6or5a7kPhIgkP03ogUvUFrKp70aYoMs62j8KvbQdNTWM2vwofo2Vw0aEE9bZfEqWn+yq2sMTo95/tIaEBeGssoM2BQ0RlrhAToJ9FoaECVs+QgfGYQTm4eyQr553FYaEGbYcutqh5CPBA4xJL1Jos/AAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: ins"} +{"Time":"2024-08-15T13:57:09.739701-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.736-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-"} +{"Time":"2024-08-15T13:57:09.744934-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.744-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\", \"config\": {\"ConfigDigest\":\"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x24Dd7Ff1c5a698790A366cF9f2586e08Ef99cb9A\",\"0xa80c22A5841Ea87dA7ab6855C303a4222BfCedc4\",\"0xC6673b0121ade80A5eCa7144DD7ee7C5De841C45\",\"0xa8a724cD59843bF59140ee70251c825964195431\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiT"} +{"Time":"2024-08-15T13:57:09.744981-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDm9rsJLb0MlTtjY27FeEpxsw9mgSkQzwYhctsWEQAJRRIg27nTcMJqAWDPE6okMNqGXx62GHOHfHjVDVzysWXXGGcaEF/LqVoevonWTMv8zKvb6DMaEINHqHdVHs+McrdkjA+13XAaEDiXa89FTIF0asMNiFJhVhwaEIwX2A6LXcbR/XPaxPee73fAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: ins"} +{"Time":"2024-08-15T13:57:09.74598-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.744-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/managed_ocr3_oracle.go:161\tManagedOCR3Oracle: error during NewEndpoint\t{\"version\": \"unset@unset\", \"configDigest\": \"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\", \"error\": \"asked to add group with digest we already have (digest: 000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423)\", \"peerIDs\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi\", \"12D3KooWMyJ6a1YHr7iEkjopQmhJPF5GgARyqZpbyqVyoJ1GLWbv\", \"12D3KooWPbS3FEaJDBGJH4MKV4c5sjkiKfea6W1DeHmvPmCKVx9P\", \"12D3KooWN1JVKX7MFq3x5WVpct7MqBxPVYqZw2UJjNKiicsZ1EHt\"], \"v2bootstrappers\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi@127.0.0.1:19001\"]}\n"} +{"Time":"2024-08-15T13:57:09.746469-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.744-0400\tERROR\tCCIPBootstrap.evm.90000002.ChainSelector(5548718428018410741).0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/managed_bootstrapper.go:41\tManagedBootstrapper: error during NewBootstrapper\t{\"version\": \"unset@unset\", \"configDigest\": \"000a7c0eb39d9b0ce932acf8daa7271f0931528f2fafdb06dcf7096119085b4a\", \"error\": \"asked to add group with digest we already have (digest: 000a7c0eb39d9b0ce932acf8daa7271f0931528f2fafdb06dcf7096119085b4a)\", \"peerIDs\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi\", \"12D3KooWMyJ6a1YHr7iEkjopQmhJPF5GgARyqZpbyqVyoJ1GLWbv\", \"12D3KooWPbS3FEaJDBGJH4MKV4c5sjkiKfea6W1DeHmvPmCKVx9P\", \"12D3KooWN1JVKX7MFq3x5WVpct7MqBxPVYqZw2UJjNKiicsZ1EHt\"], \"v2bootstrappers\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi@127.0.0.1:19001\"]}\n"} +{"Time":"2024-08-15T13:57:09.74755-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.745-0400\tERROR\tCCIPBootstrap.evm.90000002.ChainSelector(5548718428018410741).0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\", \"config\": {\"ConfigDigest\":\"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x24Dd7Ff1c5a698790A366cF9f2586e08Ef99cb9A\",\"0xa80c22A5841Ea87dA7ab6855C303a4222BfCedc4\",\"0xC6673b0121ade80A5eCa7144DD7ee7C5De841C45\",\"0xa8a724cD59843bF59140ee70251c825964195431\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjP"} +{"Time":"2024-08-15T13:57:09.747581-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"WMPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDm9rsJLb0MlTtjY27FeEpxsw9mgSkQzwYhctsWEQAJRRIg27nTcMJqAWDPE6okMNqGXx62GHOHfHjVDVzysWXXGGcaEF/LqVoevonWTMv8zKvb6DMaEINHqHdVHs+McrdkjA+13XAaEDiXa89FTIF0asMNiFJhVhwaEIwX2A6LXcbR/XPaxPee73fAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)"} +{"Time":"2024-08-15T13:57:09.747619-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/inter"} +{"Time":"2024-08-15T13:57:09.748098-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.745-0400\tERROR\tCCIPBootstrap.evm.90000002.ChainSelector(5548718428018410741).0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com"} +{"Time":"2024-08-15T13:57:09.748454-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.746-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-"} +{"Time":"2024-08-15T13:57:09.752892-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.751-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0f7d8c310fd055ef1e5159467e94252a39f2a94f6e3997d8a57bf52227c8\", \"config\": {\"ConfigDigest\":\"000a0f7d8c310fd055ef1e5159467e94252a39f2a94f6e3997d8a57bf52227c8\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x81EB0885acfb6c877082d1FB2666782e4e88a4e7\",\"0x786D555c915a16e36667dBa5025eE8955Edc9350\",\"0xb8a921465e756E6E52AE2b38e1617383a311A8C9\",\"0xF5dE25DBcA3275a267178C50713D624F35793807\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTME"} +{"Time":"2024-08-15T13:57:09.752963-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"id92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKrAXsiYmF0Y2hHYXNMaW1pdCI6NjUwMDAwMCwicmVsYXRpdmVCb29zdFBlcldhaXRIb3VyIjoxLjUsImluZmxpZ2h0Q2FjaGVFeHBpcnkiOiIxMG0wcyIsInJvb3RTbm9vemVUaW1lIjoiMzBtMHMiLCJtZXNzYWdlVmlzaWJpbGl0eUludGVydmFsIjoiOGgwbTBzIiwiYmF0Y2hpbmdTdHJhdGVneUlEIjowfZgCgOHrF6ACgOSX0BKoAoDIr6AlsAKAyK+gJboCjAEKIJhpDKdlg16s12HOgEGYS+8a2Ge/qE7Opf7qLLwQFowfEiC2/OeU61BzVy+0gSd5IaS1FR31O0LcG3H/5snPnnGPwxoQiIohkVlweFc1ZG0IKAgvIRoQvi9XAQIJnwnoC+3zrh32KBoQxlIccpZVVeW3t4tISZCQQRoQkAezVzwz5SFcc+Na9cMxOcACgJDfwErIAoDIr6Al\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fke"} +{"Time":"2024-08-15T13:57:09.753012-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"y\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/smartcontractkit/libocr/offchain"} +{"Time":"2024-08-15T13:57:09.754201-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.751-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"config\": {\"ConfigDigest\":\"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x81EB0885acfb6c877082d1FB2666782e4e88a4e7\",\"0x786D555c915a16e36667dBa5025eE8955Edc9350\",\"0xb8a921465e756E6E52AE2b38e1617383a311A8C9\",\"0xF5dE25DBcA3275a267178C50713D624F35793807\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiT"} +{"Time":"2024-08-15T13:57:09.754228-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDs0AUw2fHmbLZ9Lf8wNahuTbcXXt5ffHWOF6or5a7kPhIgkP03ogUvUFrKp70aYoMs62j8KvbQdNTWM2vwofo2Vw0aEE9bZfEqWn+yq2sMTo95/tIaEBeGssoM2BQ0RlrhAToJ9FoaECVs+QgfGYQTm4eyQr553FYaEGbYcutqh5CPBA4xJL1Jos/AAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: ins"} +{"Time":"2024-08-15T13:57:09.755289-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.752-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0f7d8c310fd055ef1e5159467e94252a39f2a94f6e3997d8a57bf52227c8\", \"config\": {\"ConfigDigest\":\"000a0f7d8c310fd055ef1e5159467e94252a39f2a94f6e3997d8a57bf52227c8\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x81EB0885acfb6c877082d1FB2666782e4e88a4e7\",\"0x786D555c915a16e36667dBa5025eE8955Edc9350\",\"0xb8a921465e756E6E52AE2b38e1617383a311A8C9\",\"0xF5dE25DBcA3275a267178C50713D624F35793807\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTME"} +{"Time":"2024-08-15T13:57:09.755327-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"id92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKrAXsiYmF0Y2hHYXNMaW1pdCI6NjUwMDAwMCwicmVsYXRpdmVCb29zdFBlcldhaXRIb3VyIjoxLjUsImluZmxpZ2h0Q2FjaGVFeHBpcnkiOiIxMG0wcyIsInJvb3RTbm9vemVUaW1lIjoiMzBtMHMiLCJtZXNzYWdlVmlzaWJpbGl0eUludGVydmFsIjoiOGgwbTBzIiwiYmF0Y2hpbmdTdHJhdGVneUlEIjowfZgCgOHrF6ACgOSX0BKoAoDIr6AlsAKAyK+gJboCjAEKIJhpDKdlg16s12HOgEGYS+8a2Ge/qE7Opf7qLLwQFowfEiC2/OeU61BzVy+0gSd5IaS1FR31O0LcG3H/5snPnnGPwxoQiIohkVlweFc1ZG0IKAgvIRoQvi9XAQIJnwnoC+3zrh32KBoQxlIccpZVVeW3t4tISZCQQRoQkAezVzwz5SFcc+Na9cMxOcACgJDfwErIAoDIr6Al\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fke"} +{"Time":"2024-08-15T13:57:09.755368-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"y\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/smartcontractkit/libocr/offchain"} +{"Time":"2024-08-15T13:57:09.756046-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.752-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x81EB0885acfb6c877082d1FB2666782e4e88a4e7\",\"0x786D555c915a16e36667dBa5025eE8955Edc9350\",\"0xb8a921465e756E6E52AE2b38e1617383a311A8C9\",\"0xF5dE25DBcA3275a267178C50713D624F35793807\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQz"} +{"Time":"2024-08-15T13:57:09.756087-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"S29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDs0AUw2fHmbLZ9Lf8wNahuTbcXXt5ffHWOF6or5a7kPhIgkP03ogUvUFrKp70aYoMs62j8KvbQdNTWM2vwofo2Vw0aEE9bZfEqWn+yq2sMTo95/tIaEBeGssoM2BQ0RlrhAToJ9FoaECVs+QgfGYQTm4eyQr553FYaEGbYcutqh5CPBA4xJL1Jos/AAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"o"} +{"Time":"2024-08-15T13:57:09.762708-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.761-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS2"} +{"Time":"2024-08-15T13:57:09.762762-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"9vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKrAXsiYmF0Y2hHYXNMaW1pdCI6NjUwMDAwMCwicmVsYXRpdmVCb29zdFBlcldhaXRIb3VyIjoxLjUsImluZmxpZ2h0Q2FjaGVFeHBpcnkiOiIxMG0wcyIsInJvb3RTbm9vemVUaW1lIjoiMzBtMHMiLCJtZXNzYWdlVmlzaWJpbGl0eUludGVydmFsIjoiOGgwbTBzIiwiYmF0Y2hpbmdTdHJhdGVneUlEIjowfZgCgOHrF6ACgOSX0BKoAoDIr6AlsAKAyK+gJboCjAEKIOGWujS2WwL+2gnflderhlfOvdt+IayJjoNnHqD96OYxEiDXn45afgck4gITXKEgNqgxCICVkQ3/eUkQlxVYh+JS9RoQCfC2sMR8dYVb8KPgTGgUNhoQ57Jqv5HOLE3f5hnyK3aRjRoQgXqa2SmvEjNxiclbzn50pBoQKsTbaER0igq6atqdai8OdsACgJDfwErIAoDIr6Al\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_cont"} +{"Time":"2024-08-15T13:57:09.763667-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.762-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQz"} +{"Time":"2024-08-15T13:57:09.763709-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"S29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiCbsLRfjJpPSh5Awsl2hTJrIkY4uQWvH2BEdElZwDdADRIg9GyKEox8meA+QKX5lCdnKijCJ/B6YPV9KkUBI20LMF4aEND4xQNHyY7rVpHsgI3406QaEKoBPoPGImNT4MLEbA+VxyAaEC/nmA/YshTyLdIngv99n4AaELJiocn6B1DBwaw0b+ZPryjAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"o"} +{"Time":"2024-08-15T13:57:09.769244-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.768-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/managed_ocr3_oracle.go:161\tManagedOCR3Oracle: error during NewEndpoint\t{\"version\": \"unset@unset\", \"peerIDs\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi\", \"12D3KooWMyJ6a1YHr7iEkjopQmhJPF5GgARyqZpbyqVyoJ1GLWbv\", \"12D3KooWPbS3FEaJDBGJH4MKV4c5sjkiKfea6W1DeHmvPmCKVx9P\", \"12D3KooWN1JVKX7MFq3x5WVpct7MqBxPVYqZw2UJjNKiicsZ1EHt\"], \"v2bootstrappers\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi@127.0.0.1:19001\"], \"configDigest\": \"000a0f7d8c310fd055ef1e5159467e94252a39f2a94f6e3997d8a57bf52227c8\", \"error\": \"asked to add group with digest we already have (digest: 000a0f7d8c310fd055ef1e5159467e94252a39f2a94f6e3997d8a57bf52227c8)\"}\n"} +{"Time":"2024-08-15T13:57:09.769343-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.768-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/managed_ocr3_oracle.go:161\tManagedOCR3Oracle: error during NewEndpoint\t{\"version\": \"unset@unset\", \"v2bootstrappers\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi@127.0.0.1:19001\"], \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"error\": \"asked to add group with digest we already have (digest: 000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34)\", \"peerIDs\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi\", \"12D3KooWMyJ6a1YHr7iEkjopQmhJPF5GgARyqZpbyqVyoJ1GLWbv\", \"12D3KooWPbS3FEaJDBGJH4MKV4c5sjkiKfea6W1DeHmvPmCKVx9P\", \"12D3KooWN1JVKX7MFq3x5WVpct7MqBxPVYqZw2UJjNKiicsZ1EHt\"]}\n"} +{"Time":"2024-08-15T13:57:09.769502-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.768-0400\tERROR\tCCIPBootstrap.evm.90000003.ChainSelector(789068866484373046).0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/"} +{"Time":"2024-08-15T13:57:09.769874-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.768-0400\tERROR\tCCIPBootstrap.evm.90000003.ChainSelector(789068866484373046).0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"config\": {\"ConfigDigest\":\"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x81EB0885acfb6c877082d1FB2666782e4e88a4e7\",\"0x786D555c915a16e36667dBa5025eE8955Edc9350\",\"0xb8a921465e756E6E52AE2b38e1617383a311A8C9\",\"0xF5dE25DBcA3275a267178C50713D624F35793807\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPW"} +{"Time":"2024-08-15T13:57:09.769916-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDs0AUw2fHmbLZ9Lf8wNahuTbcXXt5ffHWOF6or5a7kPhIgkP03ogUvUFrKp70aYoMs62j8KvbQdNTWM2vwofo2Vw0aEE9bZfEqWn+yq2sMTo95/tIaEBeGssoM2BQ0RlrhAToJ9FoaECVs+QgfGYQTm4eyQr553FYaEGbYcutqh5CPBA4xJL1Jos/AAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\""} +{"Time":"2024-08-15T13:57:09.769971-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/intern"} +{"Time":"2024-08-15T13:57:09.770358-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.768-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"config\": {\"ConfigDigest\":\"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x81EB0885acfb6c877082d1FB2666782e4e88a4e7\",\"0x786D555c915a16e36667dBa5025eE8955Edc9350\",\"0xb8a921465e756E6E52AE2b38e1617383a311A8C9\",\"0xF5dE25DBcA3275a267178C50713D624F35793807\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiT"} +{"Time":"2024-08-15T13:57:09.770504-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDs0AUw2fHmbLZ9Lf8wNahuTbcXXt5ffHWOF6or5a7kPhIgkP03ogUvUFrKp70aYoMs62j8KvbQdNTWM2vwofo2Vw0aEE9bZfEqWn+yq2sMTo95/tIaEBeGssoM2BQ0RlrhAToJ9FoaECVs+QgfGYQTm4eyQr553FYaEGbYcutqh5CPBA4xJL1Jos/AAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: ins"} +{"Time":"2024-08-15T13:57:09.773689-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.768-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-"} +{"Time":"2024-08-15T13:57:09.777366-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.776-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS2"} +{"Time":"2024-08-15T13:57:09.777431-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"9vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKrAXsiYmF0Y2hHYXNMaW1pdCI6NjUwMDAwMCwicmVsYXRpdmVCb29zdFBlcldhaXRIb3VyIjoxLjUsImluZmxpZ2h0Q2FjaGVFeHBpcnkiOiIxMG0wcyIsInJvb3RTbm9vemVUaW1lIjoiMzBtMHMiLCJtZXNzYWdlVmlzaWJpbGl0eUludGVydmFsIjoiOGgwbTBzIiwiYmF0Y2hpbmdTdHJhdGVneUlEIjowfZgCgOHrF6ACgOSX0BKoAoDIr6AlsAKAyK+gJboCjAEKIOGWujS2WwL+2gnflderhlfOvdt+IayJjoNnHqD96OYxEiDXn45afgck4gITXKEgNqgxCICVkQ3/eUkQlxVYh+JS9RoQCfC2sMR8dYVb8KPgTGgUNhoQ57Jqv5HOLE3f5hnyK3aRjRoQgXqa2SmvEjNxiclbzn50pBoQKsTbaER0igq6atqdai8OdsACgJDfwErIAoDIr6Al\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_cont"} +{"Time":"2024-08-15T13:57:09.778068-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.776-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"config\": {\"ConfigDigest\":\"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiT"} +{"Time":"2024-08-15T13:57:09.778132-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiCbsLRfjJpPSh5Awsl2hTJrIkY4uQWvH2BEdElZwDdADRIg9GyKEox8meA+QKX5lCdnKijCJ/B6YPV9KkUBI20LMF4aEND4xQNHyY7rVpHsgI3406QaEKoBPoPGImNT4MLEbA+VxyAaEC/nmA/YshTyLdIngv99n4AaELJiocn6B1DBwaw0b+ZPryjAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: ins"} +{"Time":"2024-08-15T13:57:09.78008-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.779-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"config\": {\"ConfigDigest\":\"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiT"} +{"Time":"2024-08-15T13:57:09.780117-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiCbsLRfjJpPSh5Awsl2hTJrIkY4uQWvH2BEdElZwDdADRIg9GyKEox8meA+QKX5lCdnKijCJ/B6YPV9KkUBI20LMF4aEND4xQNHyY7rVpHsgI3406QaEKoBPoPGImNT4MLEbA+VxyAaEC/nmA/YshTyLdIngv99n4AaELJiocn6B1DBwaw0b+ZPryjAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: ins"} +{"Time":"2024-08-15T13:57:09.783268-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.783-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\", \"config\": {\"ConfigDigest\":\"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTME"} +{"Time":"2024-08-15T13:57:09.78329-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"id92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKrAXsiYmF0Y2hHYXNMaW1pdCI6NjUwMDAwMCwicmVsYXRpdmVCb29zdFBlcldhaXRIb3VyIjoxLjUsImluZmxpZ2h0Q2FjaGVFeHBpcnkiOiIxMG0wcyIsInJvb3RTbm9vemVUaW1lIjoiMzBtMHMiLCJtZXNzYWdlVmlzaWJpbGl0eUludGVydmFsIjoiOGgwbTBzIiwiYmF0Y2hpbmdTdHJhdGVneUlEIjowfZgCgOHrF6ACgOSX0BKoAoDIr6AlsAKAyK+gJboCjAEKIOGWujS2WwL+2gnflderhlfOvdt+IayJjoNnHqD96OYxEiDXn45afgck4gITXKEgNqgxCICVkQ3/eUkQlxVYh+JS9RoQCfC2sMR8dYVb8KPgTGgUNhoQ57Jqv5HOLE3f5hnyK3aRjRoQgXqa2SmvEjNxiclbzn50pBoQKsTbaER0igq6atqdai8OdsACgJDfwErIAoDIr6Al\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fke"} +{"Time":"2024-08-15T13:57:09.783308-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"y\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/smartcontractkit/libocr/offchain"} +{"Time":"2024-08-15T13:57:09.792631-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.791-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0."} +{"Time":"2024-08-15T13:57:09.79334-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.792-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-"} +{"Time":"2024-08-15T13:57:09.795893-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.794-0400\tERROR\tCCIPBootstrap.evm.90000001.ChainSelector(909606746561742123).0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/managed_bootstrapper.go:41\tManagedBootstrapper: error during NewBootstrapper\t{\"version\": \"unset@unset\", \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"error\": \"asked to add group with digest we already have (digest: 000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432)\", \"peerIDs\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi\", \"12D3KooWMyJ6a1YHr7iEkjopQmhJPF5GgARyqZpbyqVyoJ1GLWbv\", \"12D3KooWPbS3FEaJDBGJH4MKV4c5sjkiKfea6W1DeHmvPmCKVx9P\", \"12D3KooWN1JVKX7MFq3x5WVpct7MqBxPVYqZw2UJjNKiicsZ1EHt\"], \"v2bootstrappers\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi@127.0.0.1:19001\"]}\n"} +{"Time":"2024-08-15T13:57:09.796226-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.794-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/managed_ocr3_oracle.go:161\tManagedOCR3Oracle: error during NewEndpoint\t{\"version\": \"unset@unset\", \"peerIDs\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi\", \"12D3KooWMyJ6a1YHr7iEkjopQmhJPF5GgARyqZpbyqVyoJ1GLWbv\", \"12D3KooWPbS3FEaJDBGJH4MKV4c5sjkiKfea6W1DeHmvPmCKVx9P\", \"12D3KooWN1JVKX7MFq3x5WVpct7MqBxPVYqZw2UJjNKiicsZ1EHt\"], \"v2bootstrappers\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi@127.0.0.1:19001\"], \"configDigest\": \"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\", \"error\": \"asked to add group with digest we already have (digest: 000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7)\"}\n"} +{"Time":"2024-08-15T13:57:09.796307-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.795-0400\tERROR\tCCIPBootstrap.evm.90000001.ChainSelector(909606746561742123).0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"config\": {\"ConfigDigest\":\"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPW"} +{"Time":"2024-08-15T13:57:09.79637-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiCbsLRfjJpPSh5Awsl2hTJrIkY4uQWvH2BEdElZwDdADRIg9GyKEox8meA+QKX5lCdnKijCJ/B6YPV9KkUBI20LMF4aEND4xQNHyY7rVpHsgI3406QaEKoBPoPGImNT4MLEbA+VxyAaEC/nmA/YshTyLdIngv99n4AaELJiocn6B1DBwaw0b+ZPryjAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\""} +{"Time":"2024-08-15T13:57:09.796419-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/intern"} +{"Time":"2024-08-15T13:57:09.796719-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.795-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQz"} +{"Time":"2024-08-15T13:57:09.796793-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"S29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiCbsLRfjJpPSh5Awsl2hTJrIkY4uQWvH2BEdElZwDdADRIg9GyKEox8meA+QKX5lCdnKijCJ/B6YPV9KkUBI20LMF4aEND4xQNHyY7rVpHsgI3406QaEKoBPoPGImNT4MLEbA+VxyAaEC/nmA/YshTyLdIngv99n4AaELJiocn6B1DBwaw0b+ZPryjAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"o"} +{"Time":"2024-08-15T13:57:09.797146-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.795-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\", \"config\": {\"ConfigDigest\":\"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTME"} +{"Time":"2024-08-15T13:57:09.797192-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"id92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKrAXsiYmF0Y2hHYXNMaW1pdCI6NjUwMDAwMCwicmVsYXRpdmVCb29zdFBlcldhaXRIb3VyIjoxLjUsImluZmxpZ2h0Q2FjaGVFeHBpcnkiOiIxMG0wcyIsInJvb3RTbm9vemVUaW1lIjoiMzBtMHMiLCJtZXNzYWdlVmlzaWJpbGl0eUludGVydmFsIjoiOGgwbTBzIiwiYmF0Y2hpbmdTdHJhdGVneUlEIjowfZgCgOHrF6ACgOSX0BKoAoDIr6AlsAKAyK+gJboCjAEKIOGWujS2WwL+2gnflderhlfOvdt+IayJjoNnHqD96OYxEiDXn45afgck4gITXKEgNqgxCICVkQ3/eUkQlxVYh+JS9RoQCfC2sMR8dYVb8KPgTGgUNhoQ57Jqv5HOLE3f5hnyK3aRjRoQgXqa2SmvEjNxiclbzn50pBoQKsTbaER0igq6atqdai8OdsACgJDfwErIAoDIr6Al\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fke"} +{"Time":"2024-08-15T13:57:09.797295-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"y\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/smartcontractkit/libocr/offchain"} +{"Time":"2024-08-15T13:57:09.797518-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.795-0400\tERROR\tCCIPBootstrap.evm.90000001.ChainSelector(909606746561742123).0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\", \"config\": {\"ConfigDigest\":\"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPW"} +{"Time":"2024-08-15T13:57:09.797622-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKrAXsiYmF0Y2hHYXNMaW1pdCI6NjUwMDAwMCwicmVsYXRpdmVCb29zdFBlcldhaXRIb3VyIjoxLjUsImluZmxpZ2h0Q2FjaGVFeHBpcnkiOiIxMG0wcyIsInJvb3RTbm9vemVUaW1lIjoiMzBtMHMiLCJtZXNzYWdlVmlzaWJpbGl0eUludGVydmFsIjoiOGgwbTBzIiwiYmF0Y2hpbmdTdHJhdGVneUlEIjowfZgCgOHrF6ACgOSX0BKoAoDIr6AlsAKAyK+gJboCjAEKIOGWujS2WwL+2gnflderhlfOvdt+IayJjoNnHqD96OYxEiDXn45afgck4gITXKEgNqgxCICVkQ3/eUkQlxVYh+JS9RoQCfC2sMR8dYVb8KPgTGgUNhoQ57Jqv5HOLE3f5hnyK3aRjRoQgXqa2SmvEjNxiclbzn50pBoQKsTbaER0igq6atqdai8OdsACgJDfwErIAoDIr6Al\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_c"} +{"Time":"2024-08-15T13:57:09.797637-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"ontract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/s"} +{"Time":"2024-08-15T13:57:09.806908-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.805-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-"} +{"Time":"2024-08-15T13:57:09.808042-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.806-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-"} +{"Time":"2024-08-15T13:57:09.8085-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.806-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\", \"config\": {\"ConfigDigest\":\"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x24Dd7Ff1c5a698790A366cF9f2586e08Ef99cb9A\",\"0xa80c22A5841Ea87dA7ab6855C303a4222BfCedc4\",\"0xC6673b0121ade80A5eCa7144DD7ee7C5De841C45\",\"0xa8a724cD59843bF59140ee70251c825964195431\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiT"} +{"Time":"2024-08-15T13:57:09.808554-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDm9rsJLb0MlTtjY27FeEpxsw9mgSkQzwYhctsWEQAJRRIg27nTcMJqAWDPE6okMNqGXx62GHOHfHjVDVzysWXXGGcaEF/LqVoevonWTMv8zKvb6DMaEINHqHdVHs+McrdkjA+13XAaEDiXa89FTIF0asMNiFJhVhwaEIwX2A6LXcbR/XPaxPee73fAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: ins"} +{"Time":"2024-08-15T13:57:09.808985-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.806-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0."} +{"Time":"2024-08-15T13:57:12.705331-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.700-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"oid\": 3, \"seqNr\": 1, \"round\": 1, \"proto\": \"outgen\", \"e\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"l\": 3, \"configDigest\": \"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\"}\n"} +{"Time":"2024-08-15T13:57:12.705654-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.700-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"l\": 3, \"seqNr\": 1, \"round\": 1, \"configDigest\": \"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\", \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 1}\n"} +{"Time":"2024-08-15T13:57:12.706227-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.704-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"e\": 1, \"l\": 3, \"seqNr\": 1, \"round\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"configDigest\": \"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\", \"oid\": 1, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:57:12.706549-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.704-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"oid\": 1, \"seqNr\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"round\": 1, \"proto\": \"outgen\", \"l\": 1, \"e\": 1}\n"} +{"Time":"2024-08-15T13:57:12.706902-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.704-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"oid\": 0, \"proto\": \"outgen\", \"e\": 1, \"l\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"round\": 1, \"seqNr\": 1}\n"} +{"Time":"2024-08-15T13:57:12.707213-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.704-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"round\": 1, \"proto\": \"outgen\", \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"e\": 1, \"l\": 1, \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"oid\": 3, \"seqNr\": 1}\n"} +{"Time":"2024-08-15T13:57:12.901104-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.895-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"oid\": 1, \"seqNr\": 1, \"round\": 1, \"proto\": \"outgen\", \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 909606746561742123\", \"e\": 1, \"l\": 1}\n"} +{"Time":"2024-08-15T13:57:12.901516-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.897-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"l\": 1, \"seqNr\": 1, \"round\": 1, \"oid\": 2, \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"proto\": \"outgen\", \"e\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 909606746561742123\"}\n"} +{"Time":"2024-08-15T13:57:12.901946-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.899-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"e\": 1, \"l\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"seqNr\": 1, \"round\": 1, \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"oid\": 2, \"proto\": \"outgen\"}\n"} +{"Time":"2024-08-15T13:57:12.902304-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.899-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"oid\": 3, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 909606746561742123\", \"round\": 1, \"seqNr\": 1, \"proto\": \"outgen\", \"e\": 1, \"l\": 1}\n"} +{"Time":"2024-08-15T13:57:19.733189-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.733-0400\tERROR\tCCIPCommitPlugin.evm.90000003.789068866484373046.0x214802b7148186dcef48f526ec156f4f6324abcf\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} +{"Time":"2024-08-15T13:57:19.733374-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.733-0400\tERROR\tCCIPExecPlugin.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} +{"Time":"2024-08-15T13:57:19.742915-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.742-0400\tERROR\tCCIPExecPlugin.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 909606746561742123\"}\n"} +{"Time":"2024-08-15T13:57:19.750022-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.749-0400\tERROR\tCCIPExecPlugin.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} +{"Time":"2024-08-15T13:57:19.750214-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.750-0400\tERROR\tCCIPCommitPlugin.evm.90000003.789068866484373046.0x214802b7148186dcef48f526ec156f4f6324abcf\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} +{"Time":"2024-08-15T13:57:19.750553-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.750-0400\tERROR\tCCIPCommitPlugin.evm.90000003.789068866484373046.0x214802b7148186dcef48f526ec156f4f6324abcf\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} +{"Time":"2024-08-15T13:57:19.750634-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.750-0400\tERROR\tCCIPExecPlugin.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} +{"Time":"2024-08-15T13:57:19.762691-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.762-0400\tERROR\tCCIPExecPlugin.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} +{"Time":"2024-08-15T13:57:19.762777-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.762-0400\tERROR\tCCIPCommitPlugin.evm.90000001.909606746561742123.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} +{"Time":"2024-08-15T13:57:19.776812-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.776-0400\tERROR\tCCIPExecPlugin.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} +{"Time":"2024-08-15T13:57:19.777051-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.777-0400\tERROR\tCCIPCommitPlugin.evm.90000001.909606746561742123.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} +{"Time":"2024-08-15T13:57:19.779926-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.779-0400\tERROR\tCCIPCommitPlugin.evm.90000001.909606746561742123.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 789068866484373046\"}\n"} +{"Time":"2024-08-15T13:57:19.780439-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.780-0400\tERROR\tCCIPExecPlugin.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 789068866484373046\"}\n"} +{"Time":"2024-08-15T13:57:19.791944-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.791-0400\tERROR\tCCIPCommitPlugin.evm.90000002.5548718428018410741.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 789068866484373046\"}\n"} +{"Time":"2024-08-15T13:57:19.792079-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.792-0400\tERROR\tCCIPExecPlugin.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 909606746561742123\"}\n"} +{"Time":"2024-08-15T13:57:19.794861-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.794-0400\tERROR\tCCIPCommitPlugin.evm.90000001.909606746561742123.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} +{"Time":"2024-08-15T13:57:19.806303-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.806-0400\tERROR\tCCIPExecPlugin.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 789068866484373046\"}\n"} +{"Time":"2024-08-15T13:57:19.806468-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.806-0400\tERROR\tCCIPCommitPlugin.evm.90000002.5548718428018410741.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 909606746561742123\"}\n"} +{"Time":"2024-08-15T13:57:19.806691-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.806-0400\tERROR\tCCIPCommitPlugin.evm.90000002.5548718428018410741.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 909606746561742123\"}\n"} +{"Time":"2024-08-15T13:57:19.806764-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.806-0400\tERROR\tCCIPExecPlugin.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 909606746561742123\"}\n"} +{"Time":"2024-08-15T13:57:44.393963-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:44.393-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 59, \"txID\": 1, \"sequence\": \"0\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x6ecd18117c0b49656707af8ef41d074f6f87f11cd303b6b0314e676aefc4a238\", \"txAttemptID\": 1, \"txID\": 1, \"err\": \"not found\", \"sequence\": \"0\"}\n"} +{"Time":"2024-08-15T13:57:46.365094-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:46.365-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 61, \"txID\": 1, \"sequence\": \"0\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xec7e4bae59f72549ae4d515ec23b23bbaee6d5260f5bad89e2a3b892b0693189\", \"txAttemptID\": 1, \"txID\": 1, \"err\": \"not found\", \"sequence\": \"0\"}\n"} +{"Time":"2024-08-15T13:57:48.423315-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:48.423-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 63, \"txID\": 1, \"sequence\": \"0\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x7e5958721ea417c568429915539fc5f6cea8f247c966aa8d952156475b1d3ea8\", \"txAttemptID\": 1, \"txID\": 1, \"err\": \"not found\", \"sequence\": \"0\"}\n"} +{"Time":"2024-08-15T13:57:52.422787-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:52.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 67, \"txID\": 2, \"sequence\": \"1\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x3eae65ceae5d71b003ceaf6813e67e3d95be4074e80e5a0d474180d282e370c2\", \"txAttemptID\": 2, \"txID\": 2, \"err\": \"not found\", \"sequence\": \"1\"}\n"} +{"Time":"2024-08-15T13:57:54.394415-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:54.394-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 69, \"txID\": 2, \"sequence\": \"1\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x9c5f3122b4b982f7f859afa901ee10abb1ae3379ba57ff5ed069c22448c7f0bd\", \"txAttemptID\": 2, \"txID\": 2, \"err\": \"not found\", \"sequence\": \"1\"}\n"} +{"Time":"2024-08-15T13:57:54.424275-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:54.424-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 69, \"txID\": 3, \"sequence\": \"2\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x9ca61f44a24800076fbd1f77f9dc4a6889258ab1ab3a19f82378be55322016b5\", \"txAttemptID\": 3, \"txID\": 3, \"err\": \"not found\", \"sequence\": \"2\"}\n"} +{"Time":"2024-08-15T13:57:56.366311-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:56.366-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 71, \"txID\": 2, \"sequence\": \"1\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x2b5cefb61cc573bde6b4be4fa4103bd5e83508da2b09a8c45bf584a354f4249c\", \"txAttemptID\": 2, \"txID\": 2, \"err\": \"not found\", \"sequence\": \"1\"}\n"} +{"Time":"2024-08-15T13:57:56.438478-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:56.438-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 71, \"txID\": 1, \"sequence\": \"0\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x8371976ddef6b4a272601ad8beb28c3a9b00b39fb4f2f73753b7c3772306d710\", \"txAttemptID\": 1, \"txID\": 1, \"err\": \"not found\", \"sequence\": \"0\"}\n"} +{"Time":"2024-08-15T13:57:58.36478-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:58.364-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 73, \"txID\": 3, \"sequence\": \"2\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xeaee2f6bc58ca1c12a35dcd3f5e67ec494bcde17d6c0c9ff432423e882db17e9\", \"txAttemptID\": 3, \"txID\": 3, \"err\": \"not found\", \"sequence\": \"2\"}\n"} +{"Time":"2024-08-15T13:58:00.393887-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:00.393-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 75, \"txID\": 3, \"sequence\": \"2\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x9b8b4f8108b5f2bbed4251ef01a436eed8f9d06bb017af2ad68cb6920f687fa5\", \"txAttemptID\": 3, \"txID\": 3, \"err\": \"not found\", \"sequence\": \"2\"}\n"} +{"Time":"2024-08-15T13:58:02.392359-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:02.392-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 77, \"txID\": 4, \"sequence\": \"3\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x1f368a7c2b35d1fe139a81d5ec85a28901efb4dddd7507f6d4c6b19f99019a67\", \"txAttemptID\": 4, \"txID\": 4, \"err\": \"not found\", \"sequence\": \"3\"}\n"} +{"Time":"2024-08-15T13:58:04.415641-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:04.415-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 71, \"txID\": 4, \"sequence\": \"0\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xa3204004ef4f485d809ce69b472031f172a9604641580b5c64a13cd2b56aaa04\", \"txAttemptID\": 4, \"txID\": 4, \"err\": \"not found\", \"sequence\": \"0\"}\n"} +{"Time":"2024-08-15T13:58:04.438494-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:04.438-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 79, \"txID\": 2, \"sequence\": \"1\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x11cc56fbf40474985fe15c22786a1a456f507b735f3c34be49371a948a65f172\", \"txAttemptID\": 2, \"txID\": 2, \"err\": \"not found\", \"sequence\": \"1\"}\n"} +{"Time":"2024-08-15T13:58:06.414502-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:06.414-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 73, \"txID\": 7, \"sequence\": \"1\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x52870c857f589a35b756c5ad45118a8c74e045882f0d1062db48104371f3644c\", \"txAttemptID\": 7, \"txID\": 7, \"err\": \"not found\", \"sequence\": \"1\"}\n"} +{"Time":"2024-08-15T13:58:06.4224-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:06.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 81, \"txID\": 6, \"sequence\": \"3\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x4a11c6511a858634f0fb44cf3d1831a95837afc047807692bde800e331e65136\", \"txAttemptID\": 6, \"txID\": 6, \"err\": \"not found\", \"sequence\": \"3\"}\n"} +{"Time":"2024-08-15T13:58:08.39348-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:08.393-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 75, \"txID\": 7, \"sequence\": \"0\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x6d4a0acf336d3f42ee288c76b974d981f667ab95bdae9350cae2c05c1b6b47fb\", \"txAttemptID\": 7, \"txID\": 7, \"err\": \"not found\", \"sequence\": \"0\"}\n"} +{"Time":"2024-08-15T13:58:08.437173-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:08.437-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 83, \"txID\": 5, \"sequence\": \"4\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xf6a1ecae209c1e9101a8ba11f3a65d529d404b3db794afdbf68e403c0d25c55f\", \"txAttemptID\": 5, \"txID\": 5, \"err\": \"not found\", \"sequence\": \"4\"}\n"} +{"Time":"2024-08-15T13:58:10.394477-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:10.394-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 85, \"txID\": 8, \"sequence\": \"5\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x9a45ffa6651229fb149b425e248e3e44226fd897bb30451aa37537054331a0e1\", \"txAttemptID\": 8, \"txID\": 8, \"err\": \"not found\", \"sequence\": \"5\"}\n"} +{"Time":"2024-08-15T13:58:10.422748-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:10.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 85, \"txID\": 9, \"sequence\": \"5\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x6bbf10764e1a9d7bc99800b0b0fd4aada69bcc76b3fe444287c4432c23a2d864\", \"txAttemptID\": 9, \"txID\": 9, \"err\": \"not found\", \"sequence\": \"5\"}\n"} +{"Time":"2024-08-15T13:58:12.394646-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:12.394-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 79, \"txID\": 9, \"sequence\": \"1\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x372a12537406b8348f017a47677bd8a416c25c40267aebedc7aeb3ca9bda92ac\", \"txAttemptID\": 9, \"txID\": 9, \"err\": \"not found\", \"sequence\": \"1\"}\n"} +{"Time":"2024-08-15T13:58:12.422896-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:12.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 87, \"txID\": 10, \"sequence\": \"6\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xf5e7fd6a42358ab98c6fe3b1205daaaa4feae35f7581fda6f7a91d86129eb946\", \"txAttemptID\": 10, \"txID\": 10, \"err\": \"not found\", \"sequence\": \"6\"}\n"} +{"Time":"2024-08-15T13:58:12.437427-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:12.437-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 87, \"txID\": 7, \"sequence\": \"6\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xdaf1e631b8bf84e6a7622e24c75f07e18569706001011fe7556df963641b4b6d\", \"txAttemptID\": 7, \"txID\": 7, \"err\": \"not found\", \"sequence\": \"6\"}\n"} +{"Time":"2024-08-15T13:58:14.364859-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:14.364-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 89, \"txID\": 5, \"sequence\": \"3\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x1c99d41e3d2e88d1bd84343248e80e8d78c055ec09a02545617cea7bc2bae6d0\", \"txAttemptID\": 5, \"txID\": 5, \"err\": \"not found\", \"sequence\": \"3\"}\n"} +{"Time":"2024-08-15T13:58:14.369999-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:14.369-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 81, \"txID\": 6, \"sequence\": \"0\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x5141228a279f997d74abffe084adf45b1cd0d7650344c95f9406b2be025d038d\", \"txAttemptID\": 6, \"txID\": 6, \"err\": \"not found\", \"sequence\": \"0\"}\n"} +{"Time":"2024-08-15T13:58:14.394627-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:14.394-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 81, \"txID\": 10, \"sequence\": \"2\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xb2ff74e6ede17b95b2c30abcea1c5ede66133f9c71f4d97724e0e233ae84c942\", \"txAttemptID\": 10, \"txID\": 10, \"err\": \"not found\", \"sequence\": \"2\"}\n"} +{"Time":"2024-08-15T13:58:14.422641-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:14.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 89, \"txID\": 12, \"sequence\": \"7\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x912c9ac1810351b6b5bcc1487c6e018fdfab01f55bd14360ed239b0a67fa3b68\", \"txAttemptID\": 12, \"txID\": 12, \"err\": \"not found\", \"sequence\": \"7\"}\n"} +{"Time":"2024-08-15T13:58:16.371716-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:16.371-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 83, \"txID\": 9, \"sequence\": \"1\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xe792eee00c790ee6c39cd5b007676436d4629b08271165309c57ccc85736bb06\", \"txAttemptID\": 9, \"txID\": 9, \"err\": \"not found\", \"sequence\": \"1\"}\n"} +{"Time":"2024-08-15T13:58:16.393024-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:16.392-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 91, \"txID\": 11, \"sequence\": \"6\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x0b8daef6498a246b48edafe616dd95349f16fbec763f011663b99b0f15c3ec18\", \"txAttemptID\": 11, \"txID\": 11, \"err\": \"not found\", \"sequence\": \"6\"}\n"} +{"Time":"2024-08-15T13:58:16.393578-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:16.393-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 83, \"txID\": 13, \"sequence\": \"3\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x5114c3fbe290f0dfa48b4cb9675eb48134d0e9b43819ba19d0323fc96394b40c\", \"txAttemptID\": 13, \"txID\": 13, \"err\": \"not found\", \"sequence\": \"3\"}\n"} +{"Time":"2024-08-15T13:58:16.422847-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:16.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 91, \"txID\": 13, \"sequence\": \"8\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x5fe640f2283e6605557cd972cbf289c64399d4567c9d25e1d6dd09e90d501ee7\", \"txAttemptID\": 13, \"txID\": 13, \"err\": \"not found\", \"sequence\": \"8\"}\n"} +{"Time":"2024-08-15T13:58:16.437155-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:16.437-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 91, \"txID\": 9, \"sequence\": \"8\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x37f3fddfa29c954d2ee29d5577341856c47c6b95208b77012fcc2ae4aaaae6e1\", \"txAttemptID\": 9, \"txID\": 9, \"err\": \"not found\", \"sequence\": \"8\"}\n"} +{"Time":"2024-08-15T13:58:18.394519-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:18.394-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 93, \"txID\": 14, \"sequence\": \"7\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x13748424c4b9b297e14bf4cff3ae3b7f44a384b3d6688e257831d5c520809be1\", \"txAttemptID\": 14, \"txID\": 14, \"err\": \"not found\", \"sequence\": \"7\"}\n"} +{"Time":"2024-08-15T13:58:18.414344-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:18.414-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 85, \"txID\": 14, \"sequence\": \"2\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x9758e76695787b6b62b13d0f6f257fa20ca4e3ea86c226e3acf77dc867c1a69e\", \"txAttemptID\": 14, \"txID\": 14, \"err\": \"not found\", \"sequence\": \"2\"}\n"} +{"Time":"2024-08-15T13:58:18.422772-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:18.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 93, \"txID\": 15, \"sequence\": \"9\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x1628cd98b7e92a14790384206a2719786c004178a87f08d4ac3afe9dc569e2bc\", \"txAttemptID\": 15, \"txID\": 15, \"err\": \"not found\", \"sequence\": \"9\"}\n"} +{"Time":"2024-08-15T13:58:20.415476-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:20.415-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 87, \"txID\": 16, \"sequence\": \"3\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xf66fd14076eed55fc404d8b2d865e98ffee2ea5675a834e280dc860f8743943f\", \"txAttemptID\": 16, \"txID\": 16, \"err\": \"not found\", \"sequence\": \"3\"}\n"} +{"Time":"2024-08-15T13:58:20.423341-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:20.423-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 95, \"txID\": 17, \"sequence\": \"10\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x8e0a4013f987961cc43949140915c299ee7945545c0303178abf0d510e70d480\", \"txAttemptID\": 17, \"txID\": 17, \"err\": \"not found\", \"sequence\": \"10\"}\n"} +{"Time":"2024-08-15T13:58:20.437203-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:20.437-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 95, \"txID\": 10, \"sequence\": \"9\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x7367b66e1999fb5b41e0bd0ef76481e09a1a0cc7c2666ad057a928a8f7dcd5cc\", \"txAttemptID\": 10, \"txID\": 10, \"err\": \"not found\", \"sequence\": \"9\"}\n"} +{"Time":"2024-08-15T13:58:22.366395-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:22.366-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 97, \"txID\": 11, \"sequence\": \"5\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x29436a5680d0bb922f71a730dc0924fff70319c7e7bf28f8639971fc32f741cd\", \"txAttemptID\": 11, \"txID\": 11, \"err\": \"not found\", \"sequence\": \"5\"}\n"} +{"Time":"2024-08-15T13:58:22.41462-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:22.414-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 89, \"txID\": 19, \"sequence\": \"4\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x71f5ae208152d94b05546226a05a8da879a5d77073cd18518d39abd36bbefb75\", \"txAttemptID\": 19, \"txID\": 19, \"err\": \"not found\", \"sequence\": \"4\"}\n"} +{"Time":"2024-08-15T13:58:22.422595-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:22.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 97, \"txID\": 20, \"sequence\": \"11\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xebf30ce7d9d2b6ce0d795cac8627337fe1235da8a5ab77584b7aaeee8cdb25de\", \"txAttemptID\": 20, \"txID\": 20, \"err\": \"not found\", \"sequence\": \"11\"}\n"} +{"Time":"2024-08-15T13:58:24.365094-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:24.365-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 99, \"txID\": 14, \"sequence\": \"7\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x67b2bbe5854b42026dbc91fdae33f83af24b5274083068c597411575d7936e1a\", \"txAttemptID\": 14, \"txID\": 14, \"err\": \"not found\", \"sequence\": \"7\"}\n"} +{"Time":"2024-08-15T13:58:24.393789-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:24.393-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 99, \"txID\": 17, \"sequence\": \"9\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xe39537c16cadf7922220f5f06f7701bb892342c92a6cd6b05894727463c58587\", \"txAttemptID\": 17, \"txID\": 17, \"err\": \"not found\", \"sequence\": \"9\"}\n"} +{"Time":"2024-08-15T13:58:24.394655-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:24.394-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 91, \"txID\": 16, \"sequence\": \"4\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x0ad65ff788186eb988e71c532952f17868989cb7a5f531337c6de1a0e3079c2a\", \"txAttemptID\": 16, \"txID\": 16, \"err\": \"not found\", \"sequence\": \"4\"}\n"} +{"Time":"2024-08-15T13:58:24.415754-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:24.415-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 91, \"txID\": 21, \"sequence\": \"5\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x9bc5b8620f7bbc8b066d5a5d46a31d694aae0b2493c7516c6ae13d649aca10b0\", \"txAttemptID\": 21, \"txID\": 21, \"err\": \"not found\", \"sequence\": \"5\"}\n"} +{"Time":"2024-08-15T13:58:26.366602-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:26.366-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 101, \"txID\": 15, \"sequence\": \"8\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x5ee9b75e74fa97b7e2e0da9d0da751457686a7273abc994c4df76faf0d874b02\", \"txAttemptID\": 15, \"txID\": 15, \"err\": \"not found\", \"sequence\": \"8\"}\n"} +{"Time":"2024-08-15T13:58:26.393347-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:26.393-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 101, \"txID\": 20, \"sequence\": \"11\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xe4dd246457d0b4939ec5a8c3f59ad0541b2bd07e6589caad8fa3cf36cc3854be\", \"txAttemptID\": 20, \"txID\": 20, \"err\": \"not found\", \"sequence\": \"11\"}\n"} +{"Time":"2024-08-15T13:58:26.41425-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:26.414-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 93, \"txID\": 22, \"sequence\": \"6\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x67bbc3a38e8e7a5d15b09bbb9b62080c1fc701bae4d3275a11790ad4e4a0d8dc\", \"txAttemptID\": 22, \"txID\": 22, \"err\": \"not found\", \"sequence\": \"6\"}\n"} +{"Time":"2024-08-15T13:58:28.365421-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:28.365-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 103, \"txID\": 16, \"sequence\": \"9\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x35253f90c4c1dec0bb6611279320fa4802b6e545ecb7a683b6b9ff028a2f9127\", \"txAttemptID\": 16, \"txID\": 16, \"err\": \"not found\", \"sequence\": \"9\"}\n"} +{"Time":"2024-08-15T13:58:28.393062-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:28.393-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 103, \"txID\": 22, \"sequence\": \"13\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x13629a92061ba873482ed971f52cfa3517453274f54828ea03039d40e335c57f\", \"txAttemptID\": 22, \"txID\": 22, \"err\": \"not found\", \"sequence\": \"13\"}\n"} +{"Time":"2024-08-15T13:58:28.41619-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:28.416-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 95, \"txID\": 24, \"sequence\": \"7\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x8a9ed246283a2f49a4e8a343af430ca893bd1b9417a46c9ff91f2da0ad150fb9\", \"txAttemptID\": 24, \"txID\": 24, \"err\": \"not found\", \"sequence\": \"7\"}\n"} +{"Time":"2024-08-15T13:58:28.423905-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:28.423-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 103, \"txID\": 25, \"sequence\": \"12\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xf0978667798c80ff9dd458346026e57fa63430f2deba7e955de54457e72f690d\", \"txAttemptID\": 25, \"txID\": 25, \"err\": \"not found\", \"sequence\": \"12\"}\n"} +{"Time":"2024-08-15T13:58:30.365815-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:30.365-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 105, \"txID\": 17, \"sequence\": \"10\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xb71b35a024677c00455f37b2e3b31cc084f421d01a7df6383d26b55ea0ce437d\", \"txAttemptID\": 17, \"txID\": 17, \"err\": \"not found\", \"sequence\": \"10\"}\n"} +{"Time":"2024-08-15T13:58:30.393453-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:30.393-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 105, \"txID\": 24, \"sequence\": \"14\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x57a22d93a1bd27d112640e5b8327c72e2dfc046ef12371676d81d2c21fbd3ee4\", \"txAttemptID\": 24, \"txID\": 24, \"err\": \"not found\", \"sequence\": \"14\"}\n"} +{"Time":"2024-08-15T13:58:30.394782-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:30.394-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 97, \"txID\": 23, \"sequence\": \"6\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x6d6f90d979123940081ceaed9803e5261e0e2ffa20e7785ce1cbe1d31dfb89cd\", \"txAttemptID\": 23, \"txID\": 23, \"err\": \"not found\", \"sequence\": \"6\"}\n"} +{"Time":"2024-08-15T13:58:32.363318-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:32.363-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 107, \"txID\": 21, \"sequence\": \"12\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x18ad243ff45b0afac0abc7a6fc75e2db9b1496021be10883596c96c72e2c17a6\", \"txAttemptID\": 21, \"txID\": 21, \"err\": \"not found\", \"sequence\": \"12\"}\n"} +{"Time":"2024-08-15T13:58:32.369419-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:32.369-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 99, \"txID\": 19, \"sequence\": \"2\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xc2e065fd50d5a48ceee4bb2a5fc8c7ca6b1ac754601671f7f86e00dc9644042d\", \"txAttemptID\": 19, \"txID\": 19, \"err\": \"not found\", \"sequence\": \"2\"}\n"} +{"Time":"2024-08-15T13:58:32.437219-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:32.437-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 107, \"txID\": 12, \"sequence\": \"11\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x781ca27f2d91182592a3d0d2e992b2c9daf9b0e8b52dc9165c37b96d7b50c421\", \"txAttemptID\": 12, \"txID\": 12, \"err\": \"not found\", \"sequence\": \"11\"}\n"} +{"Time":"2024-08-15T13:58:34.363879-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:34.363-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 109, \"txID\": 25, \"sequence\": \"14\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xbcdb09f16dac92cbd926109fd555756e3c4294b6e3ed7bf85b81a0486d8bc254\", \"txAttemptID\": 25, \"txID\": 25, \"err\": \"not found\", \"sequence\": \"14\"}\n"} +{"Time":"2024-08-15T13:58:34.369238-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:34.369-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 101, \"txID\": 24, \"sequence\": \"4\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xed6a8f48f3cf165b9c6ec28a12f1cccb548028c24a5f619f170c1f80756f6c25\", \"txAttemptID\": 24, \"txID\": 24, \"err\": \"not found\", \"sequence\": \"4\"}\n"} +{"Time":"2024-08-15T13:58:34.41566-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:34.415-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 101, \"txID\": 28, \"sequence\": \"8\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xf27049873f49a5106aac7e0020e9d48e2bb03741454c759de7ec0d183c5181e4\", \"txAttemptID\": 28, \"txID\": 28, \"err\": \"not found\", \"sequence\": \"8\"}\n"} +{"Time":"2024-08-15T13:58:34.422991-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:34.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 109, \"txID\": 27, \"sequence\": \"13\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x10c9c7f9446d3c5195773fa2009d5f3d5537c9fdd0d7b86eca54e1292aca84c2\", \"txAttemptID\": 27, \"txID\": 27, \"err\": \"not found\", \"sequence\": \"13\"}\n"} +{"Time":"2024-08-15T13:58:36.365195-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:36.365-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 111, \"txID\": 28, \"sequence\": \"15\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xdb5c45501a2f8cc63cb1adb35fdc75014c24a8ee2f2d00a4a315d3fa41fff1b0\", \"txAttemptID\": 28, \"txID\": 28, \"err\": \"not found\", \"sequence\": \"15\"}\n"} +{"Time":"2024-08-15T13:58:36.369984-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:36.369-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 103, \"txID\": 27, \"sequence\": \"5\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xe0f149dae46cc89b24aad3317d6c68e04896bdda2b2262de4a76875938eced1e\", \"txAttemptID\": 27, \"txID\": 27, \"err\": \"not found\", \"sequence\": \"5\"}\n"} +{"Time":"2024-08-15T13:58:36.437915-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:36.437-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 111, \"txID\": 13, \"sequence\": \"12\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x7bf3a752ab79d145977fb33d861bed4c395a8726fcbef7e0b9ea183a4f8f6d00\", \"txAttemptID\": 13, \"txID\": 13, \"err\": \"not found\", \"sequence\": \"12\"}\n"} +{"Time":"2024-08-15T13:58:38.367097-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:38.366-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 113, \"txID\": 30, \"sequence\": \"16\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xe41226e6f47e65a1cfa03dbd9544011d8604d0462df23d76e3a485b96e506357\", \"txAttemptID\": 30, \"txID\": 30, \"err\": \"not found\", \"sequence\": \"16\"}\n"} +{"Time":"2024-08-15T13:58:38.370659-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:38.370-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 105, \"txID\": 29, \"sequence\": \"6\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x5ce3c89136d0dab4bbae05681f9b4d79296b73c47d17f1c6c4ac6fb729598d44\", \"txAttemptID\": 29, \"txID\": 29, \"err\": \"not found\", \"sequence\": \"6\"}\n"} +{"Time":"2024-08-15T13:58:38.424116-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:38.424-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 113, \"txID\": 30, \"sequence\": \"15\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x04ce6cac372cc559bce79fd99b196e80c09a073b07e76cc45f5756fa8688c124\", \"txAttemptID\": 30, \"txID\": 30, \"err\": \"not found\", \"sequence\": \"15\"}\n"} +{"Time":"2024-08-15T13:58:40.365558-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:40.365-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 115, \"txID\": 35, \"sequence\": \"18\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x4552b9b5567d8ebbb7f73726577182dbad1c15cae8542a337c7365e49475c2b2\", \"txAttemptID\": 35, \"txID\": 35, \"err\": \"not found\", \"sequence\": \"18\"}\n"} +{"Time":"2024-08-15T13:58:40.369831-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:40.369-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 107, \"txID\": 34, \"sequence\": \"8\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xca04b2c16c01b2b7003799bb875438ca85d86f95dae22197d11b06c6fc51cd6d\", \"txAttemptID\": 34, \"txID\": 34, \"err\": \"not found\", \"sequence\": \"8\"}\n"} +{"Time":"2024-08-15T13:58:40.437373-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:40.437-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 115, \"txID\": 15, \"sequence\": \"14\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x56cd59e9d1f7798b9be98b9c3c913518185ebe65493935532d776a88d7e46e7c\", \"txAttemptID\": 15, \"txID\": 15, \"err\": \"not found\", \"sequence\": \"14\"}\n"} +{"Time":"2024-08-15T13:58:42.370846-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:42.370-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 109, \"txID\": 37, \"sequence\": \"9\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xb53288886b56c02daf1f0f3b0d9354bb5ff9de52718bfeca412e9a39f31f8730\", \"txAttemptID\": 37, \"txID\": 37, \"err\": \"not found\", \"sequence\": \"9\"}\n"} +{"Time":"2024-08-15T13:58:42.395906-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:42.395-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 117, \"txID\": 29, \"sequence\": \"15\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x5fba35af91e4ce2967cf3dba74ce88bc901c0904e225f585066ae0bc3a7807c0\", \"txAttemptID\": 29, \"txID\": 29, \"err\": \"not found\", \"sequence\": \"15\"}\n"} +{"Time":"2024-08-15T13:58:42.396324-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:42.396-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 109, \"txID\": 28, \"sequence\": \"7\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xc4f78ac37097c21b9dfcadbf9effe4bb2477e081dbe80ca1e79bb88cbf6b4d75\", \"txAttemptID\": 28, \"txID\": 28, \"err\": \"not found\", \"sequence\": \"7\"}\n"} +{"Time":"2024-08-15T13:58:42.424149-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:42.424-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 117, \"txID\": 31, \"sequence\": \"16\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x3467630dbb7755cb0565430ba2ff43daad5063f235ca4213a325f164c9707cb4\", \"txAttemptID\": 31, \"txID\": 31, \"err\": \"not found\", \"sequence\": \"16\"}\n"} diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index 31caaaeecc..f618c24fff 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -4,13 +4,19 @@ import ( "context" "math/big" "testing" + "time" "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" "github.com/ethereum/go-ethereum/common" chainsel "github.com/smartcontractkit/chain-selectors" "github.com/stretchr/testify/require" + "github.com/smartcontractkit/chainlink/integration-tests/deployment" + + "github.com/smartcontractkit/chainlink-common/pkg/types/ccipocr3" jobv1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/job/v1" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_offramp" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" ccipdeployment "github.com/smartcontractkit/chainlink/integration-tests/deployment/ccip" @@ -19,8 +25,26 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/logger" ) +// Context returns a context with the test's deadline, if available. +func Context(tb testing.TB) context.Context { + ctx := context.Background() + var cancel func() + switch t := tb.(type) { + case *testing.T: + if d, ok := t.Deadline(); ok { + ctx, cancel = context.WithDeadline(ctx, d) + } + } + if cancel == nil { + ctx, cancel = context.WithCancel(ctx) + } + tb.Cleanup(cancel) + return ctx +} + func Test0001_InitialDeploy(t *testing.T) { lggr := logger.TestLogger(t) + ctx := Context(t) chains := memory.NewMemoryChains(t, 3) homeChainSel := uint64(0) homeChainEVM := uint64(0) @@ -30,6 +54,7 @@ func Test0001_InitialDeploy(t *testing.T) { homeChainSel = chainSel break } + t.Log("home chain", homeChainEVM) ab, err := ccipdeployment.DeployCapReg(lggr, chains, homeChainSel) require.NoError(t, err) @@ -45,10 +70,23 @@ func Test0001_InitialDeploy(t *testing.T) { EVMChainID: homeChainEVM, Contract: capReg, }) + for _, node := range nodes { + require.NoError(t, node.App.Start(ctx)) + } e := memory.NewMemoryEnvironmentFromChainsNodes(t, lggr, chains, nodes) state, err := ccipdeployment.GenerateOnchainState(e, ab) require.NoError(t, err) + + capabilities, err := state.CapabilityRegistry[homeChainSel].GetCapabilities(nil) + require.NoError(t, err) + require.Len(t, capabilities, 1) + ccipCap, err := state.CapabilityRegistry[homeChainSel].GetHashedCapabilityId(nil, + ccipdeployment.CapabilityLabelledName, ccipdeployment.CapabilityVersion) + require.NoError(t, err) + _, err = state.CapabilityRegistry[homeChainSel].GetCapability(nil, ccipCap) + require.NoError(t, err) + // Apply migration output, err := Apply0001(e, ccipdeployment.DeployCCIPContractConfig{ HomeChainSel: homeChainSel, @@ -59,21 +97,15 @@ func Test0001_InitialDeploy(t *testing.T) { // Get new state after migration. state, err = ccipdeployment.GenerateOnchainState(e, output.AddressBook) require.NoError(t, err) - // Replay the log poller on all the chains so that the logs are in the db. - // otherwise the plugins won't pick them up. - for _, node := range nodes { - for sel := range chains { - chainID, _ := chainsel.ChainIdFromSelector(sel) - t.Logf("Replaying logs for chain %d from block %d", chainID, 1) - require.NoError(t, node.App.ReplayFromBlock(big.NewInt(int64(chainID)), 1, false), "failed to replay logs") - } - } + + // Ensure capreg logs are up to date. + ReplayAllLogs(nodes, chains) // Apply the jobs. for nodeID, jobs := range output.JobSpecs { for _, job := range jobs { // Note these auto-accept - _, err := e.Offchain.ProposeJob(context.Background(), + _, err := e.Offchain.ProposeJob(ctx, &jobv1.ProposeJobRequest{ NodeId: nodeID, Spec: job, @@ -81,22 +113,27 @@ func Test0001_InitialDeploy(t *testing.T) { require.NoError(t, err) } } - // Replay the log poller on all the chains so that the logs are in the db. - // otherwise the plugins won't pick them up. - for _, node := range nodes { - for sel := range chains { - chainID, _ := chainsel.ChainIdFromSelector(sel) - t.Logf("Replaying logs for chain %d from block %d", chainID, 1) - require.NoError(t, node.App.ReplayFromBlock(big.NewInt(int64(chainID)), 1, false), "failed to replay logs") + // Wait for plugins to register filters? + time.Sleep(30 * time.Second) + + // Ensure job related logs are up to date. + ReplayAllLogs(nodes, chains) + + // Send a request from every router + // Add all lanes + for source := range e.Chains { + for dest := range e.Chains { + if source != dest { + require.NoError(t, ccipdeployment.AddLane(e, state, source, dest)) + } } } - // Send a request from every router for sel, chain := range e.Chains { dest := homeChainSel if sel == homeChainSel { continue } - require.NoError(t, ccipdeployment.AddLane(e, state, sel, dest)) + //require.NoError(t, ccipdeployment.AddLane(e, state, sel, dest)) msg := router.ClientEVM2AnyMessage{ Receiver: common.LeftPadBytes(state.Receivers[dest].Address().Bytes(), 32), Data: []byte("hello"), @@ -125,7 +162,78 @@ func Test0001_InitialDeploy(t *testing.T) { tx, err = state.Routers[sel].CcipSend(e.Chains[sel].DeployerKey, homeChainSel, msg) require.NoError(t, err) require.NoError(t, chain.Confirm(tx.Hash())) + waitForCommitWithInterval(t, chain, e.Chains[homeChainSel], + state.EvmOffRampsV160[homeChainSel], + ccipocr3.SeqNumRange{1, 1}, + ) break } // TODO: Apply the proposal. } + +func ReplayAllLogs(nodes map[string]memory.Node, chains map[uint64]deployment.Chain) { + for _, node := range nodes { + for sel := range chains { + chainID, _ := chainsel.ChainIdFromSelector(sel) + node.App.ReplayFromBlock(big.NewInt(int64(chainID)), 1, false) + } + } +} + +func waitForCommitWithInterval( + t *testing.T, + src deployment.Chain, + dest deployment.Chain, + offRamp *evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp, + expectedSeqNumRange ccipocr3.SeqNumRange, +) { + sink := make(chan *evm_2_evm_multi_offramp.EVM2EVMMultiOffRampCommitReportAccepted) + subscription, err := offRamp.WatchCommitReportAccepted(&bind.WatchOpts{ + Context: context.Background(), + }, sink) + require.NoError(t, err) + ticker := time.NewTicker(1 * time.Second) + + for { + select { + case <-ticker.C: + src.Client.(*backends.SimulatedBackend).Commit() + dest.Client.(*backends.SimulatedBackend).Commit() + case <-time.After(time.Minute): + t.Logf("Waiting for commit report on chain selector %d from source selector %d expected seq nr range %s", + dest.Selector, src.Selector, expectedSeqNumRange.String()) + t.Error("Timed out waiting for commit report") + return + case subErr := <-subscription.Err(): + t.Fatalf("Subscription error: %+v", subErr) + case report := <-sink: + if len(report.Report.MerkleRoots) > 0 { + // Check the interval of sequence numbers and make sure it matches + // the expected range. + for _, mr := range report.Report.MerkleRoots { + if mr.SourceChainSelector == src.Selector && + uint64(expectedSeqNumRange.Start()) == mr.Interval.Min && + uint64(expectedSeqNumRange.End()) == mr.Interval.Max { + t.Logf("Received commit report on selector %d from source selector %d expected seq nr range %s", + dest.Selector, src.Selector, expectedSeqNumRange.String()) + return + } + } + } + } + } +} + +// CCIP relies on block timestamps, but SimulatedBackend uses by default clock starting from 1970-01-01 +// This trick is used to move the clock closer to the current time. We set first block to be X hours ago. +// Tests create plenty of transactions so this number can't be too low, every new block mined will tick the clock, +// if you mine more than "X hours" transactions, SimulatedBackend will panic because generated timestamps will be in the future. +func tweakChainTimestamp(t *testing.T, backend *backends.SimulatedBackend, tweak time.Duration) { + blockTime := time.Unix(int64(backend.Blockchain().CurrentHeader().Time), 0) + sinceBlockTime := time.Since(blockTime) + diff := sinceBlockTime - tweak + err := backend.AdjustTime(diff) + require.NoError(t, err, "unable to adjust time on simulated chain") + backend.Commit() + backend.Commit() +} From c67c7a3da1f23d728bea1ddbe1b050b3457cc63f Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 15 Aug 2024 14:00:53 -0400 Subject: [PATCH 26/42] Cleanup --- integration-tests/deployment/ccip/error | 172 ------------------ .../deployment/memory/environment.go | 2 +- integration-tests/deployment/memory/node.go | 2 +- 3 files changed, 2 insertions(+), 174 deletions(-) delete mode 100644 integration-tests/deployment/ccip/error diff --git a/integration-tests/deployment/ccip/error b/integration-tests/deployment/ccip/error deleted file mode 100644 index 8ca854fb09..0000000000 --- a/integration-tests/deployment/ccip/error +++ /dev/null @@ -1,172 +0,0 @@ -{"Time":"2024-08-15T13:56:57.353652-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:56:57.353-0400\tERROR\tchainlink/application.go:643\t[Feeds Service] Failed to start CSA key does not exist\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:56:57.382839-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:56:57.382-0400\tERROR\tchainlink/application.go:643\t[Feeds Service] Failed to start CSA key does not exist\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:56:57.40511-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:56:57.404-0400\tERROR\tchainlink/application.go:643\t[Feeds Service] Failed to start CSA key does not exist\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:56:57.425009-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:56:57.424-0400\tERROR\tchainlink/application.go:643\t[Feeds Service] Failed to start CSA key does not exist\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:57:09.73461-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.734-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"config\": {\"ConfigDigest\":\"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x81EB0885acfb6c877082d1FB2666782e4e88a4e7\",\"0x786D555c915a16e36667dBa5025eE8955Edc9350\",\"0xb8a921465e756E6E52AE2b38e1617383a311A8C9\",\"0xF5dE25DBcA3275a267178C50713D624F35793807\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiT"} -{"Time":"2024-08-15T13:57:09.736459-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDs0AUw2fHmbLZ9Lf8wNahuTbcXXt5ffHWOF6or5a7kPhIgkP03ogUvUFrKp70aYoMs62j8KvbQdNTWM2vwofo2Vw0aEE9bZfEqWn+yq2sMTo95/tIaEBeGssoM2BQ0RlrhAToJ9FoaECVs+QgfGYQTm4eyQr553FYaEGbYcutqh5CPBA4xJL1Jos/AAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: ins"} -{"Time":"2024-08-15T13:57:09.739701-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.736-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-"} -{"Time":"2024-08-15T13:57:09.744934-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.744-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\", \"config\": {\"ConfigDigest\":\"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x24Dd7Ff1c5a698790A366cF9f2586e08Ef99cb9A\",\"0xa80c22A5841Ea87dA7ab6855C303a4222BfCedc4\",\"0xC6673b0121ade80A5eCa7144DD7ee7C5De841C45\",\"0xa8a724cD59843bF59140ee70251c825964195431\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiT"} -{"Time":"2024-08-15T13:57:09.744981-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDm9rsJLb0MlTtjY27FeEpxsw9mgSkQzwYhctsWEQAJRRIg27nTcMJqAWDPE6okMNqGXx62GHOHfHjVDVzysWXXGGcaEF/LqVoevonWTMv8zKvb6DMaEINHqHdVHs+McrdkjA+13XAaEDiXa89FTIF0asMNiFJhVhwaEIwX2A6LXcbR/XPaxPee73fAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: ins"} -{"Time":"2024-08-15T13:57:09.74598-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.744-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/managed_ocr3_oracle.go:161\tManagedOCR3Oracle: error during NewEndpoint\t{\"version\": \"unset@unset\", \"configDigest\": \"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\", \"error\": \"asked to add group with digest we already have (digest: 000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423)\", \"peerIDs\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi\", \"12D3KooWMyJ6a1YHr7iEkjopQmhJPF5GgARyqZpbyqVyoJ1GLWbv\", \"12D3KooWPbS3FEaJDBGJH4MKV4c5sjkiKfea6W1DeHmvPmCKVx9P\", \"12D3KooWN1JVKX7MFq3x5WVpct7MqBxPVYqZw2UJjNKiicsZ1EHt\"], \"v2bootstrappers\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi@127.0.0.1:19001\"]}\n"} -{"Time":"2024-08-15T13:57:09.746469-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.744-0400\tERROR\tCCIPBootstrap.evm.90000002.ChainSelector(5548718428018410741).0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/managed_bootstrapper.go:41\tManagedBootstrapper: error during NewBootstrapper\t{\"version\": \"unset@unset\", \"configDigest\": \"000a7c0eb39d9b0ce932acf8daa7271f0931528f2fafdb06dcf7096119085b4a\", \"error\": \"asked to add group with digest we already have (digest: 000a7c0eb39d9b0ce932acf8daa7271f0931528f2fafdb06dcf7096119085b4a)\", \"peerIDs\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi\", \"12D3KooWMyJ6a1YHr7iEkjopQmhJPF5GgARyqZpbyqVyoJ1GLWbv\", \"12D3KooWPbS3FEaJDBGJH4MKV4c5sjkiKfea6W1DeHmvPmCKVx9P\", \"12D3KooWN1JVKX7MFq3x5WVpct7MqBxPVYqZw2UJjNKiicsZ1EHt\"], \"v2bootstrappers\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi@127.0.0.1:19001\"]}\n"} -{"Time":"2024-08-15T13:57:09.74755-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.745-0400\tERROR\tCCIPBootstrap.evm.90000002.ChainSelector(5548718428018410741).0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\", \"config\": {\"ConfigDigest\":\"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x24Dd7Ff1c5a698790A366cF9f2586e08Ef99cb9A\",\"0xa80c22A5841Ea87dA7ab6855C303a4222BfCedc4\",\"0xC6673b0121ade80A5eCa7144DD7ee7C5De841C45\",\"0xa8a724cD59843bF59140ee70251c825964195431\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjP"} -{"Time":"2024-08-15T13:57:09.747581-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"WMPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDm9rsJLb0MlTtjY27FeEpxsw9mgSkQzwYhctsWEQAJRRIg27nTcMJqAWDPE6okMNqGXx62GHOHfHjVDVzysWXXGGcaEF/LqVoevonWTMv8zKvb6DMaEINHqHdVHs+McrdkjA+13XAaEDiXa89FTIF0asMNiFJhVhwaEIwX2A6LXcbR/XPaxPee73fAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)"} -{"Time":"2024-08-15T13:57:09.747619-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/inter"} -{"Time":"2024-08-15T13:57:09.748098-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.745-0400\tERROR\tCCIPBootstrap.evm.90000002.ChainSelector(5548718428018410741).0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com"} -{"Time":"2024-08-15T13:57:09.748454-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.746-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-"} -{"Time":"2024-08-15T13:57:09.752892-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.751-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0f7d8c310fd055ef1e5159467e94252a39f2a94f6e3997d8a57bf52227c8\", \"config\": {\"ConfigDigest\":\"000a0f7d8c310fd055ef1e5159467e94252a39f2a94f6e3997d8a57bf52227c8\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x81EB0885acfb6c877082d1FB2666782e4e88a4e7\",\"0x786D555c915a16e36667dBa5025eE8955Edc9350\",\"0xb8a921465e756E6E52AE2b38e1617383a311A8C9\",\"0xF5dE25DBcA3275a267178C50713D624F35793807\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTME"} -{"Time":"2024-08-15T13:57:09.752963-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"id92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKrAXsiYmF0Y2hHYXNMaW1pdCI6NjUwMDAwMCwicmVsYXRpdmVCb29zdFBlcldhaXRIb3VyIjoxLjUsImluZmxpZ2h0Q2FjaGVFeHBpcnkiOiIxMG0wcyIsInJvb3RTbm9vemVUaW1lIjoiMzBtMHMiLCJtZXNzYWdlVmlzaWJpbGl0eUludGVydmFsIjoiOGgwbTBzIiwiYmF0Y2hpbmdTdHJhdGVneUlEIjowfZgCgOHrF6ACgOSX0BKoAoDIr6AlsAKAyK+gJboCjAEKIJhpDKdlg16s12HOgEGYS+8a2Ge/qE7Opf7qLLwQFowfEiC2/OeU61BzVy+0gSd5IaS1FR31O0LcG3H/5snPnnGPwxoQiIohkVlweFc1ZG0IKAgvIRoQvi9XAQIJnwnoC+3zrh32KBoQxlIccpZVVeW3t4tISZCQQRoQkAezVzwz5SFcc+Na9cMxOcACgJDfwErIAoDIr6Al\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fke"} -{"Time":"2024-08-15T13:57:09.753012-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"y\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/smartcontractkit/libocr/offchain"} -{"Time":"2024-08-15T13:57:09.754201-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.751-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"config\": {\"ConfigDigest\":\"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x81EB0885acfb6c877082d1FB2666782e4e88a4e7\",\"0x786D555c915a16e36667dBa5025eE8955Edc9350\",\"0xb8a921465e756E6E52AE2b38e1617383a311A8C9\",\"0xF5dE25DBcA3275a267178C50713D624F35793807\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiT"} -{"Time":"2024-08-15T13:57:09.754228-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDs0AUw2fHmbLZ9Lf8wNahuTbcXXt5ffHWOF6or5a7kPhIgkP03ogUvUFrKp70aYoMs62j8KvbQdNTWM2vwofo2Vw0aEE9bZfEqWn+yq2sMTo95/tIaEBeGssoM2BQ0RlrhAToJ9FoaECVs+QgfGYQTm4eyQr553FYaEGbYcutqh5CPBA4xJL1Jos/AAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: ins"} -{"Time":"2024-08-15T13:57:09.755289-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.752-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0f7d8c310fd055ef1e5159467e94252a39f2a94f6e3997d8a57bf52227c8\", \"config\": {\"ConfigDigest\":\"000a0f7d8c310fd055ef1e5159467e94252a39f2a94f6e3997d8a57bf52227c8\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x81EB0885acfb6c877082d1FB2666782e4e88a4e7\",\"0x786D555c915a16e36667dBa5025eE8955Edc9350\",\"0xb8a921465e756E6E52AE2b38e1617383a311A8C9\",\"0xF5dE25DBcA3275a267178C50713D624F35793807\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTME"} -{"Time":"2024-08-15T13:57:09.755327-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"id92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKrAXsiYmF0Y2hHYXNMaW1pdCI6NjUwMDAwMCwicmVsYXRpdmVCb29zdFBlcldhaXRIb3VyIjoxLjUsImluZmxpZ2h0Q2FjaGVFeHBpcnkiOiIxMG0wcyIsInJvb3RTbm9vemVUaW1lIjoiMzBtMHMiLCJtZXNzYWdlVmlzaWJpbGl0eUludGVydmFsIjoiOGgwbTBzIiwiYmF0Y2hpbmdTdHJhdGVneUlEIjowfZgCgOHrF6ACgOSX0BKoAoDIr6AlsAKAyK+gJboCjAEKIJhpDKdlg16s12HOgEGYS+8a2Ge/qE7Opf7qLLwQFowfEiC2/OeU61BzVy+0gSd5IaS1FR31O0LcG3H/5snPnnGPwxoQiIohkVlweFc1ZG0IKAgvIRoQvi9XAQIJnwnoC+3zrh32KBoQxlIccpZVVeW3t4tISZCQQRoQkAezVzwz5SFcc+Na9cMxOcACgJDfwErIAoDIr6Al\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fke"} -{"Time":"2024-08-15T13:57:09.755368-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"y\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/smartcontractkit/libocr/offchain"} -{"Time":"2024-08-15T13:57:09.756046-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.752-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x81EB0885acfb6c877082d1FB2666782e4e88a4e7\",\"0x786D555c915a16e36667dBa5025eE8955Edc9350\",\"0xb8a921465e756E6E52AE2b38e1617383a311A8C9\",\"0xF5dE25DBcA3275a267178C50713D624F35793807\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQz"} -{"Time":"2024-08-15T13:57:09.756087-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"S29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDs0AUw2fHmbLZ9Lf8wNahuTbcXXt5ffHWOF6or5a7kPhIgkP03ogUvUFrKp70aYoMs62j8KvbQdNTWM2vwofo2Vw0aEE9bZfEqWn+yq2sMTo95/tIaEBeGssoM2BQ0RlrhAToJ9FoaECVs+QgfGYQTm4eyQr553FYaEGbYcutqh5CPBA4xJL1Jos/AAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"o"} -{"Time":"2024-08-15T13:57:09.762708-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.761-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS2"} -{"Time":"2024-08-15T13:57:09.762762-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"9vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKrAXsiYmF0Y2hHYXNMaW1pdCI6NjUwMDAwMCwicmVsYXRpdmVCb29zdFBlcldhaXRIb3VyIjoxLjUsImluZmxpZ2h0Q2FjaGVFeHBpcnkiOiIxMG0wcyIsInJvb3RTbm9vemVUaW1lIjoiMzBtMHMiLCJtZXNzYWdlVmlzaWJpbGl0eUludGVydmFsIjoiOGgwbTBzIiwiYmF0Y2hpbmdTdHJhdGVneUlEIjowfZgCgOHrF6ACgOSX0BKoAoDIr6AlsAKAyK+gJboCjAEKIOGWujS2WwL+2gnflderhlfOvdt+IayJjoNnHqD96OYxEiDXn45afgck4gITXKEgNqgxCICVkQ3/eUkQlxVYh+JS9RoQCfC2sMR8dYVb8KPgTGgUNhoQ57Jqv5HOLE3f5hnyK3aRjRoQgXqa2SmvEjNxiclbzn50pBoQKsTbaER0igq6atqdai8OdsACgJDfwErIAoDIr6Al\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_cont"} -{"Time":"2024-08-15T13:57:09.763667-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.762-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQz"} -{"Time":"2024-08-15T13:57:09.763709-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"S29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiCbsLRfjJpPSh5Awsl2hTJrIkY4uQWvH2BEdElZwDdADRIg9GyKEox8meA+QKX5lCdnKijCJ/B6YPV9KkUBI20LMF4aEND4xQNHyY7rVpHsgI3406QaEKoBPoPGImNT4MLEbA+VxyAaEC/nmA/YshTyLdIngv99n4AaELJiocn6B1DBwaw0b+ZPryjAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"o"} -{"Time":"2024-08-15T13:57:09.769244-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.768-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/managed_ocr3_oracle.go:161\tManagedOCR3Oracle: error during NewEndpoint\t{\"version\": \"unset@unset\", \"peerIDs\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi\", \"12D3KooWMyJ6a1YHr7iEkjopQmhJPF5GgARyqZpbyqVyoJ1GLWbv\", \"12D3KooWPbS3FEaJDBGJH4MKV4c5sjkiKfea6W1DeHmvPmCKVx9P\", \"12D3KooWN1JVKX7MFq3x5WVpct7MqBxPVYqZw2UJjNKiicsZ1EHt\"], \"v2bootstrappers\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi@127.0.0.1:19001\"], \"configDigest\": \"000a0f7d8c310fd055ef1e5159467e94252a39f2a94f6e3997d8a57bf52227c8\", \"error\": \"asked to add group with digest we already have (digest: 000a0f7d8c310fd055ef1e5159467e94252a39f2a94f6e3997d8a57bf52227c8)\"}\n"} -{"Time":"2024-08-15T13:57:09.769343-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.768-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/managed_ocr3_oracle.go:161\tManagedOCR3Oracle: error during NewEndpoint\t{\"version\": \"unset@unset\", \"v2bootstrappers\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi@127.0.0.1:19001\"], \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"error\": \"asked to add group with digest we already have (digest: 000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34)\", \"peerIDs\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi\", \"12D3KooWMyJ6a1YHr7iEkjopQmhJPF5GgARyqZpbyqVyoJ1GLWbv\", \"12D3KooWPbS3FEaJDBGJH4MKV4c5sjkiKfea6W1DeHmvPmCKVx9P\", \"12D3KooWN1JVKX7MFq3x5WVpct7MqBxPVYqZw2UJjNKiicsZ1EHt\"]}\n"} -{"Time":"2024-08-15T13:57:09.769502-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.768-0400\tERROR\tCCIPBootstrap.evm.90000003.ChainSelector(789068866484373046).0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/"} -{"Time":"2024-08-15T13:57:09.769874-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.768-0400\tERROR\tCCIPBootstrap.evm.90000003.ChainSelector(789068866484373046).0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"config\": {\"ConfigDigest\":\"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x81EB0885acfb6c877082d1FB2666782e4e88a4e7\",\"0x786D555c915a16e36667dBa5025eE8955Edc9350\",\"0xb8a921465e756E6E52AE2b38e1617383a311A8C9\",\"0xF5dE25DBcA3275a267178C50713D624F35793807\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPW"} -{"Time":"2024-08-15T13:57:09.769916-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDs0AUw2fHmbLZ9Lf8wNahuTbcXXt5ffHWOF6or5a7kPhIgkP03ogUvUFrKp70aYoMs62j8KvbQdNTWM2vwofo2Vw0aEE9bZfEqWn+yq2sMTo95/tIaEBeGssoM2BQ0RlrhAToJ9FoaECVs+QgfGYQTm4eyQr553FYaEGbYcutqh5CPBA4xJL1Jos/AAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\""} -{"Time":"2024-08-15T13:57:09.769971-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/intern"} -{"Time":"2024-08-15T13:57:09.770358-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.768-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"config\": {\"ConfigDigest\":\"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x81EB0885acfb6c877082d1FB2666782e4e88a4e7\",\"0x786D555c915a16e36667dBa5025eE8955Edc9350\",\"0xb8a921465e756E6E52AE2b38e1617383a311A8C9\",\"0xF5dE25DBcA3275a267178C50713D624F35793807\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiT"} -{"Time":"2024-08-15T13:57:09.770504-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDs0AUw2fHmbLZ9Lf8wNahuTbcXXt5ffHWOF6or5a7kPhIgkP03ogUvUFrKp70aYoMs62j8KvbQdNTWM2vwofo2Vw0aEE9bZfEqWn+yq2sMTo95/tIaEBeGssoM2BQ0RlrhAToJ9FoaECVs+QgfGYQTm4eyQr553FYaEGbYcutqh5CPBA4xJL1Jos/AAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: ins"} -{"Time":"2024-08-15T13:57:09.773689-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.768-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-"} -{"Time":"2024-08-15T13:57:09.777366-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.776-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS2"} -{"Time":"2024-08-15T13:57:09.777431-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"9vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKrAXsiYmF0Y2hHYXNMaW1pdCI6NjUwMDAwMCwicmVsYXRpdmVCb29zdFBlcldhaXRIb3VyIjoxLjUsImluZmxpZ2h0Q2FjaGVFeHBpcnkiOiIxMG0wcyIsInJvb3RTbm9vemVUaW1lIjoiMzBtMHMiLCJtZXNzYWdlVmlzaWJpbGl0eUludGVydmFsIjoiOGgwbTBzIiwiYmF0Y2hpbmdTdHJhdGVneUlEIjowfZgCgOHrF6ACgOSX0BKoAoDIr6AlsAKAyK+gJboCjAEKIOGWujS2WwL+2gnflderhlfOvdt+IayJjoNnHqD96OYxEiDXn45afgck4gITXKEgNqgxCICVkQ3/eUkQlxVYh+JS9RoQCfC2sMR8dYVb8KPgTGgUNhoQ57Jqv5HOLE3f5hnyK3aRjRoQgXqa2SmvEjNxiclbzn50pBoQKsTbaER0igq6atqdai8OdsACgJDfwErIAoDIr6Al\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_cont"} -{"Time":"2024-08-15T13:57:09.778068-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.776-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"config\": {\"ConfigDigest\":\"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiT"} -{"Time":"2024-08-15T13:57:09.778132-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiCbsLRfjJpPSh5Awsl2hTJrIkY4uQWvH2BEdElZwDdADRIg9GyKEox8meA+QKX5lCdnKijCJ/B6YPV9KkUBI20LMF4aEND4xQNHyY7rVpHsgI3406QaEKoBPoPGImNT4MLEbA+VxyAaEC/nmA/YshTyLdIngv99n4AaELJiocn6B1DBwaw0b+ZPryjAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: ins"} -{"Time":"2024-08-15T13:57:09.78008-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.779-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"config\": {\"ConfigDigest\":\"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiT"} -{"Time":"2024-08-15T13:57:09.780117-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiCbsLRfjJpPSh5Awsl2hTJrIkY4uQWvH2BEdElZwDdADRIg9GyKEox8meA+QKX5lCdnKijCJ/B6YPV9KkUBI20LMF4aEND4xQNHyY7rVpHsgI3406QaEKoBPoPGImNT4MLEbA+VxyAaEC/nmA/YshTyLdIngv99n4AaELJiocn6B1DBwaw0b+ZPryjAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: ins"} -{"Time":"2024-08-15T13:57:09.783268-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.783-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\", \"config\": {\"ConfigDigest\":\"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTME"} -{"Time":"2024-08-15T13:57:09.78329-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"id92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKrAXsiYmF0Y2hHYXNMaW1pdCI6NjUwMDAwMCwicmVsYXRpdmVCb29zdFBlcldhaXRIb3VyIjoxLjUsImluZmxpZ2h0Q2FjaGVFeHBpcnkiOiIxMG0wcyIsInJvb3RTbm9vemVUaW1lIjoiMzBtMHMiLCJtZXNzYWdlVmlzaWJpbGl0eUludGVydmFsIjoiOGgwbTBzIiwiYmF0Y2hpbmdTdHJhdGVneUlEIjowfZgCgOHrF6ACgOSX0BKoAoDIr6AlsAKAyK+gJboCjAEKIOGWujS2WwL+2gnflderhlfOvdt+IayJjoNnHqD96OYxEiDXn45afgck4gITXKEgNqgxCICVkQ3/eUkQlxVYh+JS9RoQCfC2sMR8dYVb8KPgTGgUNhoQ57Jqv5HOLE3f5hnyK3aRjRoQgXqa2SmvEjNxiclbzn50pBoQKsTbaER0igq6atqdai8OdsACgJDfwErIAoDIr6Al\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fke"} -{"Time":"2024-08-15T13:57:09.783308-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"y\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/smartcontractkit/libocr/offchain"} -{"Time":"2024-08-15T13:57:09.792631-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.791-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0."} -{"Time":"2024-08-15T13:57:09.79334-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.792-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-"} -{"Time":"2024-08-15T13:57:09.795893-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.794-0400\tERROR\tCCIPBootstrap.evm.90000001.ChainSelector(909606746561742123).0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/managed_bootstrapper.go:41\tManagedBootstrapper: error during NewBootstrapper\t{\"version\": \"unset@unset\", \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"error\": \"asked to add group with digest we already have (digest: 000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432)\", \"peerIDs\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi\", \"12D3KooWMyJ6a1YHr7iEkjopQmhJPF5GgARyqZpbyqVyoJ1GLWbv\", \"12D3KooWPbS3FEaJDBGJH4MKV4c5sjkiKfea6W1DeHmvPmCKVx9P\", \"12D3KooWN1JVKX7MFq3x5WVpct7MqBxPVYqZw2UJjNKiicsZ1EHt\"], \"v2bootstrappers\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi@127.0.0.1:19001\"]}\n"} -{"Time":"2024-08-15T13:57:09.796226-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.794-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/managed_ocr3_oracle.go:161\tManagedOCR3Oracle: error during NewEndpoint\t{\"version\": \"unset@unset\", \"peerIDs\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi\", \"12D3KooWMyJ6a1YHr7iEkjopQmhJPF5GgARyqZpbyqVyoJ1GLWbv\", \"12D3KooWPbS3FEaJDBGJH4MKV4c5sjkiKfea6W1DeHmvPmCKVx9P\", \"12D3KooWN1JVKX7MFq3x5WVpct7MqBxPVYqZw2UJjNKiicsZ1EHt\"], \"v2bootstrappers\": [\"12D3KooWAgre5iDp7vu5mTYTT5hPdKMVLG3HdZQPEdAM7eQQSNzi@127.0.0.1:19001\"], \"configDigest\": \"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\", \"error\": \"asked to add group with digest we already have (digest: 000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7)\"}\n"} -{"Time":"2024-08-15T13:57:09.796307-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.795-0400\tERROR\tCCIPBootstrap.evm.90000001.ChainSelector(909606746561742123).0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"config\": {\"ConfigDigest\":\"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPW"} -{"Time":"2024-08-15T13:57:09.79637-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiCbsLRfjJpPSh5Awsl2hTJrIkY4uQWvH2BEdElZwDdADRIg9GyKEox8meA+QKX5lCdnKijCJ/B6YPV9KkUBI20LMF4aEND4xQNHyY7rVpHsgI3406QaEKoBPoPGImNT4MLEbA+VxyAaEC/nmA/YshTyLdIngv99n4AaELJiocn6B1DBwaw0b+ZPryjAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\""} -{"Time":"2024-08-15T13:57:09.796419-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/intern"} -{"Time":"2024-08-15T13:57:09.796719-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.795-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQz"} -{"Time":"2024-08-15T13:57:09.796793-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"S29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiCbsLRfjJpPSh5Awsl2hTJrIkY4uQWvH2BEdElZwDdADRIg9GyKEox8meA+QKX5lCdnKijCJ/B6YPV9KkUBI20LMF4aEND4xQNHyY7rVpHsgI3406QaEKoBPoPGImNT4MLEbA+VxyAaEC/nmA/YshTyLdIngv99n4AaELJiocn6B1DBwaw0b+ZPryjAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"o"} -{"Time":"2024-08-15T13:57:09.797146-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.795-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\", \"config\": {\"ConfigDigest\":\"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiTME"} -{"Time":"2024-08-15T13:57:09.797192-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"id92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKrAXsiYmF0Y2hHYXNMaW1pdCI6NjUwMDAwMCwicmVsYXRpdmVCb29zdFBlcldhaXRIb3VyIjoxLjUsImluZmxpZ2h0Q2FjaGVFeHBpcnkiOiIxMG0wcyIsInJvb3RTbm9vemVUaW1lIjoiMzBtMHMiLCJtZXNzYWdlVmlzaWJpbGl0eUludGVydmFsIjoiOGgwbTBzIiwiYmF0Y2hpbmdTdHJhdGVneUlEIjowfZgCgOHrF6ACgOSX0BKoAoDIr6AlsAKAyK+gJboCjAEKIOGWujS2WwL+2gnflderhlfOvdt+IayJjoNnHqD96OYxEiDXn45afgck4gITXKEgNqgxCICVkQ3/eUkQlxVYh+JS9RoQCfC2sMR8dYVb8KPgTGgUNhoQ57Jqv5HOLE3f5hnyK3aRjRoQgXqa2SmvEjNxiclbzn50pBoQKsTbaER0igq6atqdai8OdsACgJDfwErIAoDIr6Al\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fke"} -{"Time":"2024-08-15T13:57:09.797295-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"y\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/smartcontractkit/libocr/offchain"} -{"Time":"2024-08-15T13:57:09.797518-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.795-0400\tERROR\tCCIPBootstrap.evm.90000001.ChainSelector(909606746561742123).0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\", \"config\": {\"ConfigDigest\":\"000a482439d067922f960a14c3361c4bb322869692e5106c4f8c7e2c98ebd4f7\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x9f08d39711f57B7CA9C3Fa49779f38e4BF48e21a\",\"0x5ae2e1E841373851219d76152f58F205513E894B\",\"0x34F91Bac79f93d53914908B7Ff4000f34363A8Bd\",\"0x91a46db38c868Dd25b6554043C651180dDEB325D\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPW"} -{"Time":"2024-08-15T13:57:09.797622-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MPxaWIlXlEoICIKyV7tJqTJhbKMiTMEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKrAXsiYmF0Y2hHYXNMaW1pdCI6NjUwMDAwMCwicmVsYXRpdmVCb29zdFBlcldhaXRIb3VyIjoxLjUsImluZmxpZ2h0Q2FjaGVFeHBpcnkiOiIxMG0wcyIsInJvb3RTbm9vemVUaW1lIjoiMzBtMHMiLCJtZXNzYWdlVmlzaWJpbGl0eUludGVydmFsIjoiOGgwbTBzIiwiYmF0Y2hpbmdTdHJhdGVneUlEIjowfZgCgOHrF6ACgOSX0BKoAoDIr6AlsAKAyK+gJboCjAEKIOGWujS2WwL+2gnflderhlfOvdt+IayJjoNnHqD96OYxEiDXn45afgck4gITXKEgNqgxCICVkQ3/eUkQlxVYh+JS9RoQCfC2sMR8dYVb8KPgTGgUNhoQ57Jqv5HOLE3f5hnyK3aRjRoQgXqa2SmvEjNxiclbzn50pBoQKsTbaER0igq6atqdai8OdsACgJDfwErIAoDIr6Al\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_c"} -{"Time":"2024-08-15T13:57:09.797637-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"ontract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:149\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).run\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/managed/run_with_contract_config.go:77\\ngithub.com/s"} -{"Time":"2024-08-15T13:57:09.806908-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.805-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-"} -{"Time":"2024-08-15T13:57:09.808042-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.806-0400\tERROR\tCCIPCCIPExecOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-"} -{"Time":"2024-08-15T13:57:09.8085-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.806-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\", \"config\": {\"ConfigDigest\":\"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\",\"ConfigCount\":1,\"Signers\":[\"Bj9x+bi1k0pbLwkWzo/28TZ1Opo=\",\"/ENbZyj1EL4mnUT84tX8loDkpCY=\",\"aI4BVUSnN5eA/tB4EgNm0WGYIS0=\",\"RfEHqZpkOtMJiZdIgmkaxwamkZQ=\"],\"Transmitters\":[\"0x24Dd7Ff1c5a698790A366cF9f2586e08Ef99cb9A\",\"0xa80c22A5841Ea87dA7ab6855C303a4222BfCedc4\",\"0xC6673b0121ade80A5eCa7144DD7ee7C5De841C45\",\"0xa8a724cD59843bF59140ee70251c825964195431\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIgQxfuNzTC9GwdnWbaueR7W6ra1wNiGaD1MTfIK4E47ZWCAiCPA2a6HdxVs7EV4RUv8V+Q3u/45OINjPWMPxaWIlXlEoICIKyV7tJqTJhbKMiT"} -{"Time":"2024-08-15T13:57:09.808554-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":"MEid92X9z0ccMqUpGcjv0P1cVzFaggIgAGIJqj8bh5ZQG8X13+z9VDx7G8K397EKmMim1XWo43uKAjQxMkQzS29vV0FncmU1aURwN3Z1NW1UWVRUNWhQZEtNVkxHM0hkWlFQRWRBTTdlUVFTTnppigI0MTJEM0tvb1dNeUo2YTFZSHI3aUVram9wUW1oSlBGNUdnQVJ5cVpwYnlxVnlvSjFHTFdidooCNDEyRDNLb29XUGJTM0ZFYUpEQkdKSDRNS1Y0YzVzamtpS2ZlYTZXMURlSG12UG1DS1Z4OVCKAjQxMkQzS29vV04xSlZLWDdNRnEzeDVXVnBjdDdNcUJ4UFZZcVp3MlVKak5LaWljc1oxRUh0kgKCAXsicmVtb3RlR2FzUHJpY2VCYXRjaFdyaXRlRnJlcXVlbmN5IjoiMzBtMHMiLCJ0b2tlblByaWNlQmF0Y2hXcml0ZUZyZXF1ZW5jeSI6IjBzIiwicHJpY2VTb3VyY2VzIjpudWxsLCJ0b2tlblByaWNlQ2hhaW5TZWxlY3RvciI6MH2YAoDh6xegAoDkl9ASqAKAyK+gJbACgMivoCW6AowBCiDm9rsJLb0MlTtjY27FeEpxsw9mgSkQzwYhctsWEQAJRRIg27nTcMJqAWDPE6okMNqGXx62GHOHfHjVDVzysWXXGGcaEF/LqVoevonWTMv8zKvb6DMaEINHqHdVHs+McrdkjA+13XAaEDiXa89FTIF0asMNiFJhVhwaEIwX2A6LXcbR/XPaxPee73fAAoCQ38BKyAKAyK+gJQ==\"}, \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: ins"} -{"Time":"2024-08-15T13:57:09.808985-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:09.806-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0."} -{"Time":"2024-08-15T13:57:12.705331-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.700-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"oid\": 3, \"seqNr\": 1, \"round\": 1, \"proto\": \"outgen\", \"e\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"l\": 3, \"configDigest\": \"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\"}\n"} -{"Time":"2024-08-15T13:57:12.705654-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.700-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"l\": 3, \"seqNr\": 1, \"round\": 1, \"configDigest\": \"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\", \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 1}\n"} -{"Time":"2024-08-15T13:57:12.706227-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.704-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"e\": 1, \"l\": 3, \"seqNr\": 1, \"round\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"configDigest\": \"000aa477d2c2297b92c38046ca7d5c697d8e3c5c6e1c2e6a7e018b9484743423\", \"oid\": 1, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:57:12.706549-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.704-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"oid\": 1, \"seqNr\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"round\": 1, \"proto\": \"outgen\", \"l\": 1, \"e\": 1}\n"} -{"Time":"2024-08-15T13:57:12.706902-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.704-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"oid\": 0, \"proto\": \"outgen\", \"e\": 1, \"l\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"round\": 1, \"seqNr\": 1}\n"} -{"Time":"2024-08-15T13:57:12.707213-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.704-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"round\": 1, \"proto\": \"outgen\", \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"e\": 1, \"l\": 1, \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"oid\": 3, \"seqNr\": 1}\n"} -{"Time":"2024-08-15T13:57:12.901104-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.895-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"oid\": 1, \"seqNr\": 1, \"round\": 1, \"proto\": \"outgen\", \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 909606746561742123\", \"e\": 1, \"l\": 1}\n"} -{"Time":"2024-08-15T13:57:12.901516-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.897-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"l\": 1, \"seqNr\": 1, \"round\": 1, \"oid\": 2, \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"proto\": \"outgen\", \"e\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 909606746561742123\"}\n"} -{"Time":"2024-08-15T13:57:12.901946-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.899-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"e\": 1, \"l\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"seqNr\": 1, \"round\": 1, \"configDigest\": \"000ae11bc37460c10ebf7a41db5be01e81e8b23e375249a6f69b11aadc971432\", \"oid\": 2, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:57:12.902304-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:12.899-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"configDigest\": \"000a0ed106d64a80863694ff5627e2902bfd274d7f5819ced9644ed022d0ba34\", \"oid\": 3, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 909606746561742123\", \"round\": 1, \"seqNr\": 1, \"proto\": \"outgen\", \"e\": 1, \"l\": 1}\n"} -{"Time":"2024-08-15T13:57:19.733189-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.733-0400\tERROR\tCCIPCommitPlugin.evm.90000003.789068866484373046.0x214802b7148186dcef48f526ec156f4f6324abcf\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} -{"Time":"2024-08-15T13:57:19.733374-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.733-0400\tERROR\tCCIPExecPlugin.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} -{"Time":"2024-08-15T13:57:19.742915-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.742-0400\tERROR\tCCIPExecPlugin.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 909606746561742123\"}\n"} -{"Time":"2024-08-15T13:57:19.750022-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.749-0400\tERROR\tCCIPExecPlugin.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} -{"Time":"2024-08-15T13:57:19.750214-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.750-0400\tERROR\tCCIPCommitPlugin.evm.90000003.789068866484373046.0x214802b7148186dcef48f526ec156f4f6324abcf\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} -{"Time":"2024-08-15T13:57:19.750553-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.750-0400\tERROR\tCCIPCommitPlugin.evm.90000003.789068866484373046.0x214802b7148186dcef48f526ec156f4f6324abcf\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} -{"Time":"2024-08-15T13:57:19.750634-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.750-0400\tERROR\tCCIPExecPlugin.evm.90000003.0x214802b7148186dcef48f526ec156f4f6324abcf\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} -{"Time":"2024-08-15T13:57:19.762691-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.762-0400\tERROR\tCCIPExecPlugin.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} -{"Time":"2024-08-15T13:57:19.762777-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.762-0400\tERROR\tCCIPCommitPlugin.evm.90000001.909606746561742123.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} -{"Time":"2024-08-15T13:57:19.776812-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.776-0400\tERROR\tCCIPExecPlugin.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} -{"Time":"2024-08-15T13:57:19.777051-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.777-0400\tERROR\tCCIPCommitPlugin.evm.90000001.909606746561742123.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} -{"Time":"2024-08-15T13:57:19.779926-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.779-0400\tERROR\tCCIPCommitPlugin.evm.90000001.909606746561742123.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 789068866484373046\"}\n"} -{"Time":"2024-08-15T13:57:19.780439-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.780-0400\tERROR\tCCIPExecPlugin.evm.90000001.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 789068866484373046\"}\n"} -{"Time":"2024-08-15T13:57:19.791944-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.791-0400\tERROR\tCCIPCommitPlugin.evm.90000002.5548718428018410741.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 789068866484373046\"}\n"} -{"Time":"2024-08-15T13:57:19.792079-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.792-0400\tERROR\tCCIPExecPlugin.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 909606746561742123\"}\n"} -{"Time":"2024-08-15T13:57:19.794861-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.794-0400\tERROR\tCCIPCommitPlugin.evm.90000001.909606746561742123.0x1b7f8dc53cd47e5b6b8f563b9bbd83942f126879\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 5548718428018410741\"}\n"} -{"Time":"2024-08-15T13:57:19.806303-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.806-0400\tERROR\tCCIPExecPlugin.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 789068866484373046\"}\n"} -{"Time":"2024-08-15T13:57:19.806468-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.806-0400\tERROR\tCCIPCommitPlugin.evm.90000002.5548718428018410741.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 909606746561742123\"}\n"} -{"Time":"2024-08-15T13:57:19.806691-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.806-0400\tERROR\tCCIPCommitPlugin.evm.90000002.5548718428018410741.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 909606746561742123\"}\n"} -{"Time":"2024-08-15T13:57:19.806764-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:19.806-0400\tERROR\tCCIPExecPlugin.evm.90000002.0xc2bbd2e8e31ac7e82077e6a674477fdffb9350aa\tplugincommon/ccipreader.go:108\trunBackgroundReaderSync failed\t{\"version\": \"unset@unset\", \"err\": \"onRamp address not found for chain 909606746561742123\"}\n"} -{"Time":"2024-08-15T13:57:44.393963-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:44.393-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 59, \"txID\": 1, \"sequence\": \"0\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x6ecd18117c0b49656707af8ef41d074f6f87f11cd303b6b0314e676aefc4a238\", \"txAttemptID\": 1, \"txID\": 1, \"err\": \"not found\", \"sequence\": \"0\"}\n"} -{"Time":"2024-08-15T13:57:46.365094-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:46.365-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 61, \"txID\": 1, \"sequence\": \"0\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xec7e4bae59f72549ae4d515ec23b23bbaee6d5260f5bad89e2a3b892b0693189\", \"txAttemptID\": 1, \"txID\": 1, \"err\": \"not found\", \"sequence\": \"0\"}\n"} -{"Time":"2024-08-15T13:57:48.423315-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:48.423-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 63, \"txID\": 1, \"sequence\": \"0\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x7e5958721ea417c568429915539fc5f6cea8f247c966aa8d952156475b1d3ea8\", \"txAttemptID\": 1, \"txID\": 1, \"err\": \"not found\", \"sequence\": \"0\"}\n"} -{"Time":"2024-08-15T13:57:52.422787-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:52.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 67, \"txID\": 2, \"sequence\": \"1\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x3eae65ceae5d71b003ceaf6813e67e3d95be4074e80e5a0d474180d282e370c2\", \"txAttemptID\": 2, \"txID\": 2, \"err\": \"not found\", \"sequence\": \"1\"}\n"} -{"Time":"2024-08-15T13:57:54.394415-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:54.394-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 69, \"txID\": 2, \"sequence\": \"1\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x9c5f3122b4b982f7f859afa901ee10abb1ae3379ba57ff5ed069c22448c7f0bd\", \"txAttemptID\": 2, \"txID\": 2, \"err\": \"not found\", \"sequence\": \"1\"}\n"} -{"Time":"2024-08-15T13:57:54.424275-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:54.424-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 69, \"txID\": 3, \"sequence\": \"2\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x9ca61f44a24800076fbd1f77f9dc4a6889258ab1ab3a19f82378be55322016b5\", \"txAttemptID\": 3, \"txID\": 3, \"err\": \"not found\", \"sequence\": \"2\"}\n"} -{"Time":"2024-08-15T13:57:56.366311-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:56.366-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 71, \"txID\": 2, \"sequence\": \"1\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x2b5cefb61cc573bde6b4be4fa4103bd5e83508da2b09a8c45bf584a354f4249c\", \"txAttemptID\": 2, \"txID\": 2, \"err\": \"not found\", \"sequence\": \"1\"}\n"} -{"Time":"2024-08-15T13:57:56.438478-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:56.438-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 71, \"txID\": 1, \"sequence\": \"0\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x8371976ddef6b4a272601ad8beb28c3a9b00b39fb4f2f73753b7c3772306d710\", \"txAttemptID\": 1, \"txID\": 1, \"err\": \"not found\", \"sequence\": \"0\"}\n"} -{"Time":"2024-08-15T13:57:58.36478-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:57:58.364-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 73, \"txID\": 3, \"sequence\": \"2\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xeaee2f6bc58ca1c12a35dcd3f5e67ec494bcde17d6c0c9ff432423e882db17e9\", \"txAttemptID\": 3, \"txID\": 3, \"err\": \"not found\", \"sequence\": \"2\"}\n"} -{"Time":"2024-08-15T13:58:00.393887-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:00.393-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 75, \"txID\": 3, \"sequence\": \"2\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x9b8b4f8108b5f2bbed4251ef01a436eed8f9d06bb017af2ad68cb6920f687fa5\", \"txAttemptID\": 3, \"txID\": 3, \"err\": \"not found\", \"sequence\": \"2\"}\n"} -{"Time":"2024-08-15T13:58:02.392359-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:02.392-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 77, \"txID\": 4, \"sequence\": \"3\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x1f368a7c2b35d1fe139a81d5ec85a28901efb4dddd7507f6d4c6b19f99019a67\", \"txAttemptID\": 4, \"txID\": 4, \"err\": \"not found\", \"sequence\": \"3\"}\n"} -{"Time":"2024-08-15T13:58:04.415641-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:04.415-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 71, \"txID\": 4, \"sequence\": \"0\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xa3204004ef4f485d809ce69b472031f172a9604641580b5c64a13cd2b56aaa04\", \"txAttemptID\": 4, \"txID\": 4, \"err\": \"not found\", \"sequence\": \"0\"}\n"} -{"Time":"2024-08-15T13:58:04.438494-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:04.438-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 79, \"txID\": 2, \"sequence\": \"1\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x11cc56fbf40474985fe15c22786a1a456f507b735f3c34be49371a948a65f172\", \"txAttemptID\": 2, \"txID\": 2, \"err\": \"not found\", \"sequence\": \"1\"}\n"} -{"Time":"2024-08-15T13:58:06.414502-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:06.414-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 73, \"txID\": 7, \"sequence\": \"1\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x52870c857f589a35b756c5ad45118a8c74e045882f0d1062db48104371f3644c\", \"txAttemptID\": 7, \"txID\": 7, \"err\": \"not found\", \"sequence\": \"1\"}\n"} -{"Time":"2024-08-15T13:58:06.4224-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:06.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 81, \"txID\": 6, \"sequence\": \"3\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x4a11c6511a858634f0fb44cf3d1831a95837afc047807692bde800e331e65136\", \"txAttemptID\": 6, \"txID\": 6, \"err\": \"not found\", \"sequence\": \"3\"}\n"} -{"Time":"2024-08-15T13:58:08.39348-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:08.393-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 75, \"txID\": 7, \"sequence\": \"0\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x6d4a0acf336d3f42ee288c76b974d981f667ab95bdae9350cae2c05c1b6b47fb\", \"txAttemptID\": 7, \"txID\": 7, \"err\": \"not found\", \"sequence\": \"0\"}\n"} -{"Time":"2024-08-15T13:58:08.437173-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:08.437-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 83, \"txID\": 5, \"sequence\": \"4\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xf6a1ecae209c1e9101a8ba11f3a65d529d404b3db794afdbf68e403c0d25c55f\", \"txAttemptID\": 5, \"txID\": 5, \"err\": \"not found\", \"sequence\": \"4\"}\n"} -{"Time":"2024-08-15T13:58:10.394477-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:10.394-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 85, \"txID\": 8, \"sequence\": \"5\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x9a45ffa6651229fb149b425e248e3e44226fd897bb30451aa37537054331a0e1\", \"txAttemptID\": 8, \"txID\": 8, \"err\": \"not found\", \"sequence\": \"5\"}\n"} -{"Time":"2024-08-15T13:58:10.422748-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:10.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 85, \"txID\": 9, \"sequence\": \"5\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x6bbf10764e1a9d7bc99800b0b0fd4aada69bcc76b3fe444287c4432c23a2d864\", \"txAttemptID\": 9, \"txID\": 9, \"err\": \"not found\", \"sequence\": \"5\"}\n"} -{"Time":"2024-08-15T13:58:12.394646-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:12.394-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 79, \"txID\": 9, \"sequence\": \"1\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x372a12537406b8348f017a47677bd8a416c25c40267aebedc7aeb3ca9bda92ac\", \"txAttemptID\": 9, \"txID\": 9, \"err\": \"not found\", \"sequence\": \"1\"}\n"} -{"Time":"2024-08-15T13:58:12.422896-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:12.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 87, \"txID\": 10, \"sequence\": \"6\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xf5e7fd6a42358ab98c6fe3b1205daaaa4feae35f7581fda6f7a91d86129eb946\", \"txAttemptID\": 10, \"txID\": 10, \"err\": \"not found\", \"sequence\": \"6\"}\n"} -{"Time":"2024-08-15T13:58:12.437427-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:12.437-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 87, \"txID\": 7, \"sequence\": \"6\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xdaf1e631b8bf84e6a7622e24c75f07e18569706001011fe7556df963641b4b6d\", \"txAttemptID\": 7, \"txID\": 7, \"err\": \"not found\", \"sequence\": \"6\"}\n"} -{"Time":"2024-08-15T13:58:14.364859-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:14.364-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 89, \"txID\": 5, \"sequence\": \"3\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x1c99d41e3d2e88d1bd84343248e80e8d78c055ec09a02545617cea7bc2bae6d0\", \"txAttemptID\": 5, \"txID\": 5, \"err\": \"not found\", \"sequence\": \"3\"}\n"} -{"Time":"2024-08-15T13:58:14.369999-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:14.369-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 81, \"txID\": 6, \"sequence\": \"0\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x5141228a279f997d74abffe084adf45b1cd0d7650344c95f9406b2be025d038d\", \"txAttemptID\": 6, \"txID\": 6, \"err\": \"not found\", \"sequence\": \"0\"}\n"} -{"Time":"2024-08-15T13:58:14.394627-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:14.394-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 81, \"txID\": 10, \"sequence\": \"2\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xb2ff74e6ede17b95b2c30abcea1c5ede66133f9c71f4d97724e0e233ae84c942\", \"txAttemptID\": 10, \"txID\": 10, \"err\": \"not found\", \"sequence\": \"2\"}\n"} -{"Time":"2024-08-15T13:58:14.422641-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:14.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 89, \"txID\": 12, \"sequence\": \"7\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x912c9ac1810351b6b5bcc1487c6e018fdfab01f55bd14360ed239b0a67fa3b68\", \"txAttemptID\": 12, \"txID\": 12, \"err\": \"not found\", \"sequence\": \"7\"}\n"} -{"Time":"2024-08-15T13:58:16.371716-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:16.371-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 83, \"txID\": 9, \"sequence\": \"1\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xe792eee00c790ee6c39cd5b007676436d4629b08271165309c57ccc85736bb06\", \"txAttemptID\": 9, \"txID\": 9, \"err\": \"not found\", \"sequence\": \"1\"}\n"} -{"Time":"2024-08-15T13:58:16.393024-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:16.392-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 91, \"txID\": 11, \"sequence\": \"6\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x0b8daef6498a246b48edafe616dd95349f16fbec763f011663b99b0f15c3ec18\", \"txAttemptID\": 11, \"txID\": 11, \"err\": \"not found\", \"sequence\": \"6\"}\n"} -{"Time":"2024-08-15T13:58:16.393578-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:16.393-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 83, \"txID\": 13, \"sequence\": \"3\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x5114c3fbe290f0dfa48b4cb9675eb48134d0e9b43819ba19d0323fc96394b40c\", \"txAttemptID\": 13, \"txID\": 13, \"err\": \"not found\", \"sequence\": \"3\"}\n"} -{"Time":"2024-08-15T13:58:16.422847-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:16.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 91, \"txID\": 13, \"sequence\": \"8\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x5fe640f2283e6605557cd972cbf289c64399d4567c9d25e1d6dd09e90d501ee7\", \"txAttemptID\": 13, \"txID\": 13, \"err\": \"not found\", \"sequence\": \"8\"}\n"} -{"Time":"2024-08-15T13:58:16.437155-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:16.437-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 91, \"txID\": 9, \"sequence\": \"8\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x37f3fddfa29c954d2ee29d5577341856c47c6b95208b77012fcc2ae4aaaae6e1\", \"txAttemptID\": 9, \"txID\": 9, \"err\": \"not found\", \"sequence\": \"8\"}\n"} -{"Time":"2024-08-15T13:58:18.394519-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:18.394-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 93, \"txID\": 14, \"sequence\": \"7\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x13748424c4b9b297e14bf4cff3ae3b7f44a384b3d6688e257831d5c520809be1\", \"txAttemptID\": 14, \"txID\": 14, \"err\": \"not found\", \"sequence\": \"7\"}\n"} -{"Time":"2024-08-15T13:58:18.414344-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:18.414-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 85, \"txID\": 14, \"sequence\": \"2\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x9758e76695787b6b62b13d0f6f257fa20ca4e3ea86c226e3acf77dc867c1a69e\", \"txAttemptID\": 14, \"txID\": 14, \"err\": \"not found\", \"sequence\": \"2\"}\n"} -{"Time":"2024-08-15T13:58:18.422772-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:18.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 93, \"txID\": 15, \"sequence\": \"9\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x1628cd98b7e92a14790384206a2719786c004178a87f08d4ac3afe9dc569e2bc\", \"txAttemptID\": 15, \"txID\": 15, \"err\": \"not found\", \"sequence\": \"9\"}\n"} -{"Time":"2024-08-15T13:58:20.415476-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:20.415-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 87, \"txID\": 16, \"sequence\": \"3\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xf66fd14076eed55fc404d8b2d865e98ffee2ea5675a834e280dc860f8743943f\", \"txAttemptID\": 16, \"txID\": 16, \"err\": \"not found\", \"sequence\": \"3\"}\n"} -{"Time":"2024-08-15T13:58:20.423341-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:20.423-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 95, \"txID\": 17, \"sequence\": \"10\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x8e0a4013f987961cc43949140915c299ee7945545c0303178abf0d510e70d480\", \"txAttemptID\": 17, \"txID\": 17, \"err\": \"not found\", \"sequence\": \"10\"}\n"} -{"Time":"2024-08-15T13:58:20.437203-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:20.437-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 95, \"txID\": 10, \"sequence\": \"9\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x7367b66e1999fb5b41e0bd0ef76481e09a1a0cc7c2666ad057a928a8f7dcd5cc\", \"txAttemptID\": 10, \"txID\": 10, \"err\": \"not found\", \"sequence\": \"9\"}\n"} -{"Time":"2024-08-15T13:58:22.366395-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:22.366-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 97, \"txID\": 11, \"sequence\": \"5\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x29436a5680d0bb922f71a730dc0924fff70319c7e7bf28f8639971fc32f741cd\", \"txAttemptID\": 11, \"txID\": 11, \"err\": \"not found\", \"sequence\": \"5\"}\n"} -{"Time":"2024-08-15T13:58:22.41462-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:22.414-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 89, \"txID\": 19, \"sequence\": \"4\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x71f5ae208152d94b05546226a05a8da879a5d77073cd18518d39abd36bbefb75\", \"txAttemptID\": 19, \"txID\": 19, \"err\": \"not found\", \"sequence\": \"4\"}\n"} -{"Time":"2024-08-15T13:58:22.422595-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:22.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 97, \"txID\": 20, \"sequence\": \"11\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xebf30ce7d9d2b6ce0d795cac8627337fe1235da8a5ab77584b7aaeee8cdb25de\", \"txAttemptID\": 20, \"txID\": 20, \"err\": \"not found\", \"sequence\": \"11\"}\n"} -{"Time":"2024-08-15T13:58:24.365094-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:24.365-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 99, \"txID\": 14, \"sequence\": \"7\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x67b2bbe5854b42026dbc91fdae33f83af24b5274083068c597411575d7936e1a\", \"txAttemptID\": 14, \"txID\": 14, \"err\": \"not found\", \"sequence\": \"7\"}\n"} -{"Time":"2024-08-15T13:58:24.393789-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:24.393-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 99, \"txID\": 17, \"sequence\": \"9\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xe39537c16cadf7922220f5f06f7701bb892342c92a6cd6b05894727463c58587\", \"txAttemptID\": 17, \"txID\": 17, \"err\": \"not found\", \"sequence\": \"9\"}\n"} -{"Time":"2024-08-15T13:58:24.394655-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:24.394-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 91, \"txID\": 16, \"sequence\": \"4\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x0ad65ff788186eb988e71c532952f17868989cb7a5f531337c6de1a0e3079c2a\", \"txAttemptID\": 16, \"txID\": 16, \"err\": \"not found\", \"sequence\": \"4\"}\n"} -{"Time":"2024-08-15T13:58:24.415754-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:24.415-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 91, \"txID\": 21, \"sequence\": \"5\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x9bc5b8620f7bbc8b066d5a5d46a31d694aae0b2493c7516c6ae13d649aca10b0\", \"txAttemptID\": 21, \"txID\": 21, \"err\": \"not found\", \"sequence\": \"5\"}\n"} -{"Time":"2024-08-15T13:58:26.366602-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:26.366-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 101, \"txID\": 15, \"sequence\": \"8\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x5ee9b75e74fa97b7e2e0da9d0da751457686a7273abc994c4df76faf0d874b02\", \"txAttemptID\": 15, \"txID\": 15, \"err\": \"not found\", \"sequence\": \"8\"}\n"} -{"Time":"2024-08-15T13:58:26.393347-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:26.393-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 101, \"txID\": 20, \"sequence\": \"11\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xe4dd246457d0b4939ec5a8c3f59ad0541b2bd07e6589caad8fa3cf36cc3854be\", \"txAttemptID\": 20, \"txID\": 20, \"err\": \"not found\", \"sequence\": \"11\"}\n"} -{"Time":"2024-08-15T13:58:26.41425-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:26.414-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 93, \"txID\": 22, \"sequence\": \"6\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x67bbc3a38e8e7a5d15b09bbb9b62080c1fc701bae4d3275a11790ad4e4a0d8dc\", \"txAttemptID\": 22, \"txID\": 22, \"err\": \"not found\", \"sequence\": \"6\"}\n"} -{"Time":"2024-08-15T13:58:28.365421-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:28.365-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 103, \"txID\": 16, \"sequence\": \"9\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x35253f90c4c1dec0bb6611279320fa4802b6e545ecb7a683b6b9ff028a2f9127\", \"txAttemptID\": 16, \"txID\": 16, \"err\": \"not found\", \"sequence\": \"9\"}\n"} -{"Time":"2024-08-15T13:58:28.393062-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:28.393-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 103, \"txID\": 22, \"sequence\": \"13\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x13629a92061ba873482ed971f52cfa3517453274f54828ea03039d40e335c57f\", \"txAttemptID\": 22, \"txID\": 22, \"err\": \"not found\", \"sequence\": \"13\"}\n"} -{"Time":"2024-08-15T13:58:28.41619-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:28.416-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 95, \"txID\": 24, \"sequence\": \"7\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x8a9ed246283a2f49a4e8a343af430ca893bd1b9417a46c9ff91f2da0ad150fb9\", \"txAttemptID\": 24, \"txID\": 24, \"err\": \"not found\", \"sequence\": \"7\"}\n"} -{"Time":"2024-08-15T13:58:28.423905-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:28.423-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 103, \"txID\": 25, \"sequence\": \"12\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xf0978667798c80ff9dd458346026e57fa63430f2deba7e955de54457e72f690d\", \"txAttemptID\": 25, \"txID\": 25, \"err\": \"not found\", \"sequence\": \"12\"}\n"} -{"Time":"2024-08-15T13:58:30.365815-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:30.365-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 105, \"txID\": 17, \"sequence\": \"10\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xb71b35a024677c00455f37b2e3b31cc084f421d01a7df6383d26b55ea0ce437d\", \"txAttemptID\": 17, \"txID\": 17, \"err\": \"not found\", \"sequence\": \"10\"}\n"} -{"Time":"2024-08-15T13:58:30.393453-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:30.393-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 105, \"txID\": 24, \"sequence\": \"14\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x57a22d93a1bd27d112640e5b8327c72e2dfc046ef12371676d81d2c21fbd3ee4\", \"txAttemptID\": 24, \"txID\": 24, \"err\": \"not found\", \"sequence\": \"14\"}\n"} -{"Time":"2024-08-15T13:58:30.394782-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:30.394-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 97, \"txID\": 23, \"sequence\": \"6\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x6d6f90d979123940081ceaed9803e5261e0e2ffa20e7785ce1cbe1d31dfb89cd\", \"txAttemptID\": 23, \"txID\": 23, \"err\": \"not found\", \"sequence\": \"6\"}\n"} -{"Time":"2024-08-15T13:58:32.363318-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:32.363-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 107, \"txID\": 21, \"sequence\": \"12\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x18ad243ff45b0afac0abc7a6fc75e2db9b1496021be10883596c96c72e2c17a6\", \"txAttemptID\": 21, \"txID\": 21, \"err\": \"not found\", \"sequence\": \"12\"}\n"} -{"Time":"2024-08-15T13:58:32.369419-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:32.369-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 99, \"txID\": 19, \"sequence\": \"2\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xc2e065fd50d5a48ceee4bb2a5fc8c7ca6b1ac754601671f7f86e00dc9644042d\", \"txAttemptID\": 19, \"txID\": 19, \"err\": \"not found\", \"sequence\": \"2\"}\n"} -{"Time":"2024-08-15T13:58:32.437219-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:32.437-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 107, \"txID\": 12, \"sequence\": \"11\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x781ca27f2d91182592a3d0d2e992b2c9daf9b0e8b52dc9165c37b96d7b50c421\", \"txAttemptID\": 12, \"txID\": 12, \"err\": \"not found\", \"sequence\": \"11\"}\n"} -{"Time":"2024-08-15T13:58:34.363879-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:34.363-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 109, \"txID\": 25, \"sequence\": \"14\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xbcdb09f16dac92cbd926109fd555756e3c4294b6e3ed7bf85b81a0486d8bc254\", \"txAttemptID\": 25, \"txID\": 25, \"err\": \"not found\", \"sequence\": \"14\"}\n"} -{"Time":"2024-08-15T13:58:34.369238-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:34.369-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 101, \"txID\": 24, \"sequence\": \"4\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xed6a8f48f3cf165b9c6ec28a12f1cccb548028c24a5f619f170c1f80756f6c25\", \"txAttemptID\": 24, \"txID\": 24, \"err\": \"not found\", \"sequence\": \"4\"}\n"} -{"Time":"2024-08-15T13:58:34.41566-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:34.415-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 101, \"txID\": 28, \"sequence\": \"8\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xf27049873f49a5106aac7e0020e9d48e2bb03741454c759de7ec0d183c5181e4\", \"txAttemptID\": 28, \"txID\": 28, \"err\": \"not found\", \"sequence\": \"8\"}\n"} -{"Time":"2024-08-15T13:58:34.422991-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:34.422-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 109, \"txID\": 27, \"sequence\": \"13\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x10c9c7f9446d3c5195773fa2009d5f3d5537c9fdd0d7b86eca54e1292aca84c2\", \"txAttemptID\": 27, \"txID\": 27, \"err\": \"not found\", \"sequence\": \"13\"}\n"} -{"Time":"2024-08-15T13:58:36.365195-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:36.365-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 111, \"txID\": 28, \"sequence\": \"15\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xdb5c45501a2f8cc63cb1adb35fdc75014c24a8ee2f2d00a4a315d3fa41fff1b0\", \"txAttemptID\": 28, \"txID\": 28, \"err\": \"not found\", \"sequence\": \"15\"}\n"} -{"Time":"2024-08-15T13:58:36.369984-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:36.369-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 103, \"txID\": 27, \"sequence\": \"5\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xe0f149dae46cc89b24aad3317d6c68e04896bdda2b2262de4a76875938eced1e\", \"txAttemptID\": 27, \"txID\": 27, \"err\": \"not found\", \"sequence\": \"5\"}\n"} -{"Time":"2024-08-15T13:58:36.437915-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:36.437-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 111, \"txID\": 13, \"sequence\": \"12\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x7bf3a752ab79d145977fb33d861bed4c395a8726fcbef7e0b9ea183a4f8f6d00\", \"txAttemptID\": 13, \"txID\": 13, \"err\": \"not found\", \"sequence\": \"12\"}\n"} -{"Time":"2024-08-15T13:58:38.367097-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:38.366-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 113, \"txID\": 30, \"sequence\": \"16\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xe41226e6f47e65a1cfa03dbd9544011d8604d0462df23d76e3a485b96e506357\", \"txAttemptID\": 30, \"txID\": 30, \"err\": \"not found\", \"sequence\": \"16\"}\n"} -{"Time":"2024-08-15T13:58:38.370659-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:38.370-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 105, \"txID\": 29, \"sequence\": \"6\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x5ce3c89136d0dab4bbae05681f9b4d79296b73c47d17f1c6c4ac6fb729598d44\", \"txAttemptID\": 29, \"txID\": 29, \"err\": \"not found\", \"sequence\": \"6\"}\n"} -{"Time":"2024-08-15T13:58:38.424116-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:38.424-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 113, \"txID\": 30, \"sequence\": \"15\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x04ce6cac372cc559bce79fd99b196e80c09a073b07e76cc45f5756fa8688c124\", \"txAttemptID\": 30, \"txID\": 30, \"err\": \"not found\", \"sequence\": \"15\"}\n"} -{"Time":"2024-08-15T13:58:40.365558-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:40.365-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 115, \"txID\": 35, \"sequence\": \"18\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x4552b9b5567d8ebbb7f73726577182dbad1c15cae8542a337c7365e49475c2b2\", \"txAttemptID\": 35, \"txID\": 35, \"err\": \"not found\", \"sequence\": \"18\"}\n"} -{"Time":"2024-08-15T13:58:40.369831-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:40.369-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 107, \"txID\": 34, \"sequence\": \"8\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xca04b2c16c01b2b7003799bb875438ca85d86f95dae22197d11b06c6fc51cd6d\", \"txAttemptID\": 34, \"txID\": 34, \"err\": \"not found\", \"sequence\": \"8\"}\n"} -{"Time":"2024-08-15T13:58:40.437373-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:40.437-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 115, \"txID\": 15, \"sequence\": \"14\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x56cd59e9d1f7798b9be98b9c3c913518185ebe65493935532d776a88d7e46e7c\", \"txAttemptID\": 15, \"txID\": 15, \"err\": \"not found\", \"sequence\": \"14\"}\n"} -{"Time":"2024-08-15T13:58:42.370846-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:42.370-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 109, \"txID\": 37, \"sequence\": \"9\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xb53288886b56c02daf1f0f3b0d9354bb5ff9de52718bfeca412e9a39f31f8730\", \"txAttemptID\": 37, \"txID\": 37, \"err\": \"not found\", \"sequence\": \"9\"}\n"} -{"Time":"2024-08-15T13:58:42.395906-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:42.395-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 117, \"txID\": 29, \"sequence\": \"15\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x5fba35af91e4ce2967cf3dba74ce88bc901c0904e225f585066ae0bc3a7807c0\", \"txAttemptID\": 29, \"txID\": 29, \"err\": \"not found\", \"sequence\": \"15\"}\n"} -{"Time":"2024-08-15T13:58:42.396324-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:42.396-0400\tERROR\tEVM.90000002.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 109, \"txID\": 28, \"sequence\": \"7\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0xc4f78ac37097c21b9dfcadbf9effe4bb2477e081dbe80ca1e79bb88cbf6b4d75\", \"txAttemptID\": 28, \"txID\": 28, \"err\": \"not found\", \"sequence\": \"7\"}\n"} -{"Time":"2024-08-15T13:58:42.424149-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:58:42.424-0400\tERROR\tEVM.90000001.Txm.Confirmer.BatchFetchReceipts\ttxmgr/confirmer.go:631\tFetchReceipt failed\t{\"version\": \"unset@unset\", \"blockNum\": 117, \"txID\": 31, \"sequence\": \"16\", \"checker\": \"{}\", \"feeLimit\": 500000, \"txHash\": \"0x3467630dbb7755cb0565430ba2ff43daad5063f235ca4213a325f164c9707cb4\", \"txAttemptID\": 31, \"txID\": 31, \"err\": \"not found\", \"sequence\": \"16\"}\n"} diff --git a/integration-tests/deployment/memory/environment.go b/integration-tests/deployment/memory/environment.go index b8270c99f7..f6fd582b08 100644 --- a/integration-tests/deployment/memory/environment.go +++ b/integration-tests/deployment/memory/environment.go @@ -81,7 +81,7 @@ func NewNodes(t *testing.T, chains map[uint64]deployment.Chain, numNodes, numBoo bootstrap = true existingNumBootstraps++ } - node := NewNode(t, ports[i], mchains, zapcore.DebugLevel, bootstrap, registryConfig) + node := NewNode(t, ports[i], mchains, zapcore.InfoLevel, bootstrap, registryConfig) nodesByPeerID[node.Keys.PeerID.String()] = *node // Note in real env, this ID is allocated by JD. nodeIDs = append(nodeIDs, node.Keys.PeerID.String()) diff --git a/integration-tests/deployment/memory/node.go b/integration-tests/deployment/memory/node.go index 9b6616d8da..cc800f18bd 100644 --- a/integration-tests/deployment/memory/node.go +++ b/integration-tests/deployment/memory/node.go @@ -241,7 +241,7 @@ func createConfigV2Chain(chainID uint64) *v2toml.EVMConfig { chainIDBig := evmutils.NewI(int64(chainID)) chain := v2toml.Defaults(chainIDBig) chain.GasEstimator.LimitDefault = ptr(uint64(5e6)) - chain.LogPollInterval = config.MustNewDuration(100 * time.Millisecond) + chain.LogPollInterval = config.MustNewDuration(1000 * time.Millisecond) chain.Transactions.ForwardersEnabled = ptr(false) chain.FinalityDepth = ptr(uint32(2)) return &v2toml.EVMConfig{ From 2f5c8e0930c138578b8eed5a029fd68a20071171 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 15 Aug 2024 14:14:32 -0400 Subject: [PATCH 27/42] Go mod tidy --- integration-tests/deployment/jd/node/v1/node.pb.go | 2 +- integration-tests/deployment/jd/node/v1/shared.pb.go | 2 +- integration-tests/go.mod | 3 ++- integration-tests/go.sum | 2 -- integration-tests/load/go.sum | 8 ++++---- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/integration-tests/deployment/jd/node/v1/node.pb.go b/integration-tests/deployment/jd/node/v1/node.pb.go index 84b9cdda03..392025bbd0 100644 --- a/integration-tests/deployment/jd/node/v1/node.pb.go +++ b/integration-tests/deployment/jd/node/v1/node.pb.go @@ -7,7 +7,7 @@ package v1 import ( - ptypes "github.com/smartcontractkit/job-distributor/pkg/api/gen/shared/ptypes" + "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/shared/ptypes" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" _ "google.golang.org/protobuf/types/known/timestamppb" diff --git a/integration-tests/deployment/jd/node/v1/shared.pb.go b/integration-tests/deployment/jd/node/v1/shared.pb.go index 58c47e947e..4099dd6bd7 100644 --- a/integration-tests/deployment/jd/node/v1/shared.pb.go +++ b/integration-tests/deployment/jd/node/v1/shared.pb.go @@ -7,7 +7,7 @@ package v1 import ( - ptypes "github.com/smartcontractkit/job-distributor/pkg/api/gen/shared/ptypes" + "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/shared/ptypes" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 92920dd27e..f118503389 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -42,7 +42,6 @@ require ( github.com/smartcontractkit/chainlink/integration-tests v0.0.0-00010101000000-000000000000 github.com/smartcontractkit/chainlink/v2 v2.0.0-00010101000000-000000000000 github.com/smartcontractkit/havoc/k8schaos v0.0.0-20240409145249-e78d20847e37 - github.com/smartcontractkit/job-distributor v0.1.0 github.com/smartcontractkit/libocr v0.0.0-20240717100443-f6226e09bee7 github.com/smartcontractkit/seth v1.0.12 github.com/smartcontractkit/wasp v0.4.5 @@ -367,6 +366,7 @@ require ( github.com/pelletier/go-toml v1.9.5 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect + github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect @@ -452,6 +452,7 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 // indirect go.opentelemetry.io/otel/metric v1.28.0 // indirect go.opentelemetry.io/otel/sdk v1.28.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.28.0 // indirect go.opentelemetry.io/otel/trace v1.28.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 4a0a65dc46..9308e1c8aa 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1404,8 +1404,6 @@ github.com/smartcontractkit/grpc-proxy v0.0.0-20230731113816-f1be6620749f h1:hgJ github.com/smartcontractkit/grpc-proxy v0.0.0-20230731113816-f1be6620749f/go.mod h1:MvMXoufZAtqExNexqi4cjrNYE9MefKddKylxjS+//n0= github.com/smartcontractkit/havoc/k8schaos v0.0.0-20240409145249-e78d20847e37 h1:ZEhn2Yo1jY4hqy8nasDL4k4pNtopT3rS3Ap1GDb7ODc= github.com/smartcontractkit/havoc/k8schaos v0.0.0-20240409145249-e78d20847e37/go.mod h1:/kFr0D7SI/vueXl1N03uzOun4nViGPFRyA5X6eL3jXw= -github.com/smartcontractkit/job-distributor v0.1.0 h1:KMl6OizBlDi1t9ni6Iq8JNFoKWaTMsl7YRky9r2yWp8= -github.com/smartcontractkit/job-distributor v0.1.0/go.mod h1:XSm3ixwgoentJTkx7YEVRfzfDMTkS1sM/SUDPdzjxyY= github.com/smartcontractkit/libocr v0.0.0-20240717100443-f6226e09bee7 h1:e38V5FYE7DA1JfKXeD5Buo/7lczALuVXlJ8YNTAUxcw= github.com/smartcontractkit/libocr v0.0.0-20240717100443-f6226e09bee7/go.mod h1:fb1ZDVXACvu4frX3APHZaEBp0xi1DIm34DcA0CwTsZM= github.com/smartcontractkit/seth v1.0.12 h1:iVdgMx42XWanPPnBaM5StR4c1XsTr/0/B/kKRZL5BsY= diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index d0dc4086a4..d87173f4fc 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -1235,8 +1235,8 @@ github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= -github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= -github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= +github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= @@ -1607,8 +1607,8 @@ go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6b go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= -go.opentelemetry.io/otel/sdk/metric v1.21.0 h1:smhI5oD714d6jHE6Tie36fPx4WDFIg+Y6RfAY4ICcR0= -go.opentelemetry.io/otel/sdk/metric v1.21.0/go.mod h1:FJ8RAsoPGv/wYMgBdUJXOm+6pzFY3YdljnXtv1SBE8Q= +go.opentelemetry.io/otel/sdk/metric v1.28.0 h1:OkuaKgKrgAbYrrY0t92c+cC+2F6hsFNnCQArXCKlg08= +go.opentelemetry.io/otel/sdk/metric v1.28.0/go.mod h1:cWPjykihLAPvXKi4iZc1dpER3Jdq2Z0YLse3moQUCpg= go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= From aba629ba853943458732e288ee11bda3755fba24 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 15 Aug 2024 14:19:58 -0400 Subject: [PATCH 28/42] Mod after merge --- integration-tests/go.mod | 2 -- integration-tests/load/go.sum | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/integration-tests/go.mod b/integration-tests/go.mod index f118503389..98846cfad3 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -366,7 +366,6 @@ require ( github.com/pelletier/go-toml v1.9.5 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect - github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect @@ -452,7 +451,6 @@ require ( go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 // indirect go.opentelemetry.io/otel/metric v1.28.0 // indirect go.opentelemetry.io/otel/sdk v1.28.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.28.0 // indirect go.opentelemetry.io/otel/trace v1.28.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index d87173f4fc..d0dc4086a4 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -1235,8 +1235,8 @@ github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= -github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= -github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= +github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= @@ -1607,8 +1607,8 @@ go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6b go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= -go.opentelemetry.io/otel/sdk/metric v1.28.0 h1:OkuaKgKrgAbYrrY0t92c+cC+2F6hsFNnCQArXCKlg08= -go.opentelemetry.io/otel/sdk/metric v1.28.0/go.mod h1:cWPjykihLAPvXKi4iZc1dpER3Jdq2Z0YLse3moQUCpg= +go.opentelemetry.io/otel/sdk/metric v1.21.0 h1:smhI5oD714d6jHE6Tie36fPx4WDFIg+Y6RfAY4ICcR0= +go.opentelemetry.io/otel/sdk/metric v1.21.0/go.mod h1:FJ8RAsoPGv/wYMgBdUJXOm+6pzFY3YdljnXtv1SBE8Q= go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= From cd62a150cebb143a1a281e07927443039d6718c0 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 15 Aug 2024 14:28:55 -0400 Subject: [PATCH 29/42] Use custom timestamp --- .../ccip/migrations/1_initial_deploy_test.go | 17 +---------------- .../deployment/jd/node/v1/node.pb.go | 12 +++++++----- integration-tests/deployment/memory/chain.go | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index f618c24fff..5037557e2c 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -54,7 +54,6 @@ func Test0001_InitialDeploy(t *testing.T) { homeChainSel = chainSel break } - t.Log("home chain", homeChainEVM) ab, err := ccipdeployment.DeployCapReg(lggr, chains, homeChainSel) require.NoError(t, err) @@ -114,6 +113,7 @@ func Test0001_InitialDeploy(t *testing.T) { } } // Wait for plugins to register filters? + // TODO: Investigate how to avoid. time.Sleep(30 * time.Second) // Ensure job related logs are up to date. @@ -166,7 +166,6 @@ func Test0001_InitialDeploy(t *testing.T) { state.EvmOffRampsV160[homeChainSel], ccipocr3.SeqNumRange{1, 1}, ) - break } // TODO: Apply the proposal. } @@ -223,17 +222,3 @@ func waitForCommitWithInterval( } } } - -// CCIP relies on block timestamps, but SimulatedBackend uses by default clock starting from 1970-01-01 -// This trick is used to move the clock closer to the current time. We set first block to be X hours ago. -// Tests create plenty of transactions so this number can't be too low, every new block mined will tick the clock, -// if you mine more than "X hours" transactions, SimulatedBackend will panic because generated timestamps will be in the future. -func tweakChainTimestamp(t *testing.T, backend *backends.SimulatedBackend, tweak time.Duration) { - blockTime := time.Unix(int64(backend.Blockchain().CurrentHeader().Time), 0) - sinceBlockTime := time.Since(blockTime) - diff := sinceBlockTime - tweak - err := backend.AdjustTime(diff) - require.NoError(t, err, "unable to adjust time on simulated chain") - backend.Commit() - backend.Commit() -} diff --git a/integration-tests/deployment/jd/node/v1/node.pb.go b/integration-tests/deployment/jd/node/v1/node.pb.go index 392025bbd0..f5b22ba3ae 100644 --- a/integration-tests/deployment/jd/node/v1/node.pb.go +++ b/integration-tests/deployment/jd/node/v1/node.pb.go @@ -7,12 +7,14 @@ package v1 import ( - "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/shared/ptypes" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" + "reflect" + "sync" + + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoimpl" _ "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" + + "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/shared/ptypes" ) const ( diff --git a/integration-tests/deployment/memory/chain.go b/integration-tests/deployment/memory/chain.go index 174e70931d..e77423ec4c 100644 --- a/integration-tests/deployment/memory/chain.go +++ b/integration-tests/deployment/memory/chain.go @@ -3,6 +3,7 @@ package memory import ( "math/big" "testing" + "time" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" @@ -20,6 +21,20 @@ type EVMChain struct { DeployerKey *bind.TransactOpts } +// CCIP relies on block timestamps, but SimulatedBackend uses by default clock starting from 1970-01-01 +// This trick is used to move the clock closer to the current time. We set first block to be X hours ago. +// Tests create plenty of transactions so this number can't be too low, every new block mined will tick the clock, +// if you mine more than "X hours" transactions, SimulatedBackend will panic because generated timestamps will be in the future. +func tweakChainTimestamp(t *testing.T, backend *backends.SimulatedBackend, tweak time.Duration) { + blockTime := time.Unix(int64(backend.Blockchain().CurrentHeader().Time), 0) + sinceBlockTime := time.Since(blockTime) + diff := sinceBlockTime - tweak + err := backend.AdjustTime(diff) + require.NoError(t, err, "unable to adjust time on simulated chain") + backend.Commit() + backend.Commit() +} + func fundAddress(t *testing.T, from *bind.TransactOpts, to common.Address, amount *big.Int, backend *backends.SimulatedBackend) { nonce, err := backend.PendingNonceAt(Context(t), from.From) require.NoError(t, err) @@ -49,6 +64,7 @@ func GenerateChains(t *testing.T, numChains int) map[uint64]EVMChain { require.NoError(t, err) backend := backends.NewSimulatedBackend(core.GenesisAlloc{ owner.From: {Balance: big.NewInt(0).Mul(big.NewInt(100), big.NewInt(params.Ether))}}, 10000000) + tweakChainTimestamp(t, backend, time.Hour*24) chains[chainID] = EVMChain{ Backend: backend, DeployerKey: owner, From ac09fcfb32275651d06947a1b1a7bffa9fa9b225 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 15 Aug 2024 14:29:11 -0400 Subject: [PATCH 30/42] Sum --- integration-tests/go.sum | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 9308e1c8aa..c1a130b939 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1253,8 +1253,8 @@ github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= -github.com/pierrec/lz4/v4 v4.1.21 h1:yOVMLb6qSIDP67pl/5F7RepeKYu/VmTyEXvuMI5d9mQ= -github.com/pierrec/lz4/v4 v4.1.21/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= +github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= @@ -1627,8 +1627,8 @@ go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6b go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= -go.opentelemetry.io/otel/sdk/metric v1.28.0 h1:OkuaKgKrgAbYrrY0t92c+cC+2F6hsFNnCQArXCKlg08= -go.opentelemetry.io/otel/sdk/metric v1.28.0/go.mod h1:cWPjykihLAPvXKi4iZc1dpER3Jdq2Z0YLse3moQUCpg= +go.opentelemetry.io/otel/sdk/metric v1.21.0 h1:smhI5oD714d6jHE6Tie36fPx4WDFIg+Y6RfAY4ICcR0= +go.opentelemetry.io/otel/sdk/metric v1.21.0/go.mod h1:FJ8RAsoPGv/wYMgBdUJXOm+6pzFY3YdljnXtv1SBE8Q= go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= From fbafc09546e9d85e2f7ace19a841afade31f15c1 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 15 Aug 2024 14:51:00 -0400 Subject: [PATCH 31/42] Reverse mod diffs in load --- integration-tests/load/go.mod | 52 +++++++------ integration-tests/load/go.sum | 134 +++++++++++++++++++--------------- 2 files changed, 101 insertions(+), 85 deletions(-) diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index 07c07b93b2..a85ab009d6 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -35,10 +35,8 @@ require ( cosmossdk.io/depinject v1.0.0-alpha.4 // indirect cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/math v1.3.0 // indirect - github.com/containerd/errdefs v0.1.0 // indirect github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect - github.com/moby/docker-image-spec v1.3.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect @@ -71,8 +69,8 @@ require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.2.1 // indirect github.com/Masterminds/sprig/v3 v3.2.3 // indirect - github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/Microsoft/hcsshim v0.11.5 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/Microsoft/hcsshim v0.11.4 // indirect github.com/NethermindEth/juno v0.3.1 // indirect github.com/NethermindEth/starknet.go v0.7.1-0.20240401080518-34a506f3cfdb // indirect github.com/VictoriaMetrics/fastcache v1.12.1 // indirect @@ -116,7 +114,7 @@ require ( github.com/confio/ics23/go v0.9.0 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect - github.com/containerd/containerd v1.7.18 // indirect + github.com/containerd/containerd v1.7.12 // indirect github.com/containerd/continuity v0.4.3 // indirect github.com/containerd/log v0.1.0 // indirect github.com/coreos/go-semver v0.3.1 // indirect @@ -143,9 +141,9 @@ require ( github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect - github.com/distribution/reference v0.6.0 // indirect + github.com/distribution/reference v0.5.0 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker v27.0.3+incompatible // indirect + github.com/docker/docker v25.0.2+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dominikbraun/graph v0.23.0 // indirect @@ -165,7 +163,7 @@ require ( github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/fvbommel/sortorder v1.1.0 // indirect github.com/fxamacker/cbor/v2 v2.6.0 // indirect - github.com/gabriel-vasile/mimetype v1.4.3 // indirect + github.com/gabriel-vasile/mimetype v1.4.2 // indirect github.com/gagliardetto/binary v0.7.7 // indirect github.com/gagliardetto/solana-go v1.8.4 // indirect github.com/gagliardetto/treeout v0.1.4 // indirect @@ -184,7 +182,7 @@ require ( github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.3.0 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-openapi/analysis v0.21.4 // indirect github.com/go-openapi/errors v0.20.4 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect @@ -196,7 +194,7 @@ require ( github.com/go-openapi/validate v0.22.1 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.22.0 // indirect + github.com/go-playground/validator/v10 v10.15.5 // indirect github.com/go-redis/redis/v8 v8.11.5 // indirect github.com/go-webauthn/webauthn v0.9.4 // indirect github.com/go-webauthn/x v0.1.5 // indirect @@ -244,7 +242,7 @@ require ( github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect - github.com/hashicorp/consul/api v1.28.2 // indirect + github.com/hashicorp/consul/api v1.25.1 // indirect github.com/hashicorp/consul/sdk v0.16.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -290,13 +288,13 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/julienschmidt/httprouter v1.3.0 // indirect github.com/kelseyhightower/envconfig v1.4.0 // indirect - github.com/klauspost/compress v1.17.7 // indirect + github.com/klauspost/compress v1.17.3 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a // indirect - github.com/leodido/go-urn v1.4.0 // indirect + github.com/leodido/go-urn v1.2.4 // indirect github.com/lib/pq v1.10.9 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect @@ -337,7 +335,7 @@ require ( github.com/oklog/ulid v1.3.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0 // indirect + github.com/opencontainers/image-spec v1.1.0-rc5 // indirect github.com/opencontainers/runc v1.1.10 // indirect github.com/opentracing-contrib/go-grpc v0.0.0-20210225150812-73cb765af46e // indirect github.com/opentracing-contrib/go-stdlib v1.0.0 // indirect @@ -382,7 +380,7 @@ require ( github.com/smartcontractkit/chainlink-testing-framework/grafana v0.0.0-20240405215812-5a72bc9af239 // indirect github.com/smartcontractkit/havoc/k8schaos v0.0.0-20240409145249-e78d20847e37 // indirect github.com/smartcontractkit/tdh2/go/ocr2/decryptionplugin v0.0.0-20230906073235-9e478e5e19f1 // indirect - github.com/smartcontractkit/wsrpc v0.8.1 // indirect + github.com/smartcontractkit/wsrpc v0.7.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/sony/gobreaker v0.5.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect @@ -390,7 +388,7 @@ require ( github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.19.0 // indirect + github.com/spf13/viper v1.18.2 // indirect github.com/status-im/keycard-go v0.2.0 // indirect github.com/streamingfast/logging v0.0.0-20220405224725-2755dab2ce75 // indirect github.com/stretchr/objx v0.5.2 // indirect @@ -400,7 +398,7 @@ require ( github.com/tendermint/go-amino v0.16.0 // indirect github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 // indirect github.com/test-go/testify v1.1.4 // indirect - github.com/testcontainers/testcontainers-go v0.32.0 // indirect + github.com/testcontainers/testcontainers-go v0.28.0 // indirect github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a // indirect github.com/tidwall/btree v1.6.0 // indirect github.com/tidwall/gjson v1.17.0 // indirect @@ -425,14 +423,14 @@ require ( go.dedis.ch/fixbuf v1.0.3 // indirect go.dedis.ch/kyber/v3 v3.1.0 // indirect go.etcd.io/bbolt v1.3.8 // indirect - go.etcd.io/etcd/api/v3 v3.5.12 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.5.12 // indirect - go.etcd.io/etcd/client/v3 v3.5.12 // indirect + go.etcd.io/etcd/api/v3 v3.5.10 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect + go.etcd.io/etcd/client/v3 v3.5.10 // indirect go.mongodb.org/mongo-driver v1.15.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/collector/pdata v1.0.0-rcv0016 // indirect go.opentelemetry.io/collector/semconv v0.87.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect go.opentelemetry.io/otel v1.28.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect @@ -448,15 +446,15 @@ require ( go.uber.org/zap v1.27.0 // indirect go4.org/netipx v0.0.0-20230125063823-8449b0a6169f // indirect golang.org/x/arch v0.7.0 // indirect - golang.org/x/crypto v0.26.0 // indirect + golang.org/x/crypto v0.25.0 // indirect golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect golang.org/x/mod v0.19.0 // indirect golang.org/x/net v0.27.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.23.0 // indirect - golang.org/x/term v0.23.0 // indirect - golang.org/x/text v0.17.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/term v0.22.0 // indirect + golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.23.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect @@ -481,7 +479,7 @@ require ( k8s.io/kube-openapi v0.0.0-20240709000822-3c01b740850f // indirect k8s.io/kubectl v0.28.2 // indirect k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 // indirect - nhooyr.io/websocket v1.8.10 // indirect + nhooyr.io/websocket v1.8.7 // indirect pgregory.net/rapid v1.1.0 // indirect rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/controller-runtime v0.18.4 // indirect diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index d0dc4086a4..ad49cec300 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -135,10 +135,10 @@ github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0 github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= -github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= -github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/Microsoft/hcsshim v0.11.5 h1:haEcLNpj9Ka1gd3B3tAEs9CpE0c+1IhoL59w/exYU38= -github.com/Microsoft/hcsshim v0.11.5/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= +github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= github.com/NethermindEth/juno v0.3.1 h1:AW72LiAm9gqUeCVJWvepnZcTnpU4Vkl0KzPMxS+42FA= github.com/NethermindEth/juno v0.3.1/go.mod h1:SGbTpgGaCsxhFsKOid7Ylnz//WZ8swtILk+NbHGsk/Q= github.com/NethermindEth/starknet.go v0.7.1-0.20240401080518-34a506f3cfdb h1:Mv8SscePPyw2ju4igIJAjFgcq5zCQfjgbz53DwYu5mc= @@ -307,12 +307,10 @@ github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/Yj github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/containerd/containerd v1.7.18 h1:jqjZTQNfXGoEaZdW1WwPU0RqSn1Bm2Ay/KJPUuO8nao= -github.com/containerd/containerd v1.7.18/go.mod h1:IYEk9/IO6wAPUz2bCMVUbsfXjzw5UNP5fLz4PsUygQ4= +github.com/containerd/containerd v1.7.12 h1:+KQsnv4VnzyxWcfO9mlxxELaoztsDEjOuCMPAuPqgU0= +github.com/containerd/containerd v1.7.12/go.mod h1:/5OMpE1p0ylxtEUGY8kuCYkDRzJm9NO1TFMWjUpdevk= github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= -github.com/containerd/errdefs v0.1.0 h1:m0wCRBiu1WJT/Fr+iOoQHMQS/eP5myQ8lCv4Dz5ZURM= -github.com/containerd/errdefs v0.1.0/go.mod h1:YgWiiHtLmSeBrvpw+UfPijzbLaB77mEG1WwJTDETIV0= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= @@ -403,14 +401,14 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/r github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/digitalocean/godo v1.99.0 h1:gUHO7n9bDaZFWvbzOum4bXE0/09ZuYA9yA8idQHX57E= github.com/digitalocean/godo v1.99.0/go.mod h1:SsS2oXo2rznfM/nORlZ/6JaUJZFhmKTib1YhopUc8NA= -github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= -github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= +github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v27.0.3+incompatible h1:aBGI9TeQ4MPlhquTQKq9XbK79rKFVwXNUAYz9aXyEBE= -github.com/docker/docker v27.0.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v25.0.2+incompatible h1:/OaKeauroa10K4Nqavw4zlhcDq/WBcPMc5DbjOGgozY= +github.com/docker/docker v25.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -473,8 +471,8 @@ github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQ github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/fxamacker/cbor/v2 v2.6.0 h1:sU6J2usfADwWlYDAFhZBQ6TnLFBHxgesMrQfQgk1tWA= github.com/fxamacker/cbor/v2 v2.6.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= -github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= -github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= +github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= +github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= github.com/gagliardetto/binary v0.7.7 h1:QZpT38+sgoPg+TIQjH94sLbl/vX+nlIRA37pEyOsjfY= github.com/gagliardetto/binary v0.7.7/go.mod h1:mUuay5LL8wFVnIlecHakSZMvcdqfs+CsotR5n77kyjM= github.com/gagliardetto/gofuzz v1.2.2 h1:XL/8qDMzcgvR4+CyRQW9UGdwPRPMHVJfqQ/uMvSUuQw= @@ -502,6 +500,7 @@ github.com/gin-contrib/size v0.0.0-20230212012657-e14a14094dc4 h1:Z9J0PVIt1PuibO github.com/gin-contrib/size v0.0.0-20230212012657-e14a14094dc4/go.mod h1:CEPcgZiz8998l9E8fDm16h8UfHRL7b+5oG0j/0koeVw= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= github.com/go-asn1-ber/asn1-ber v1.5.5 h1:MNHlNMBDgEKD4TcKr36vQN68BA00aDfjIt3/bD50WnA= @@ -531,9 +530,8 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= -github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc= github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo= @@ -569,14 +567,18 @@ github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+Gr github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU= github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.22.0 h1:k6HsTZ0sTnROkhS//R0O+55JgM8C4Bx7ia+JlgcnOao= -github.com/go-playground/validator/v10 v10.22.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.15.5 h1:LEBecTWb/1j5TNY1YYG2RcOUN3R7NLylN+x8TTueE24= +github.com/go-playground/validator/v10 v10.15.5/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= github.com/go-resty/resty/v2 v2.11.0 h1:i7jMfNOJYMp69lq7qozJP+bjgzfAzeOhuGlyDrqxT/8= @@ -620,6 +622,15 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= +github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= +github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/gobwas/ws v1.2.1 h1:F2aeBZrm2NDsc7vbovKrWSogd4wvfAxg0FQ89/iqOTk= +github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= @@ -736,6 +747,7 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3 github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -743,8 +755,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= -github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= +github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= +github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= github.com/gophercloud/gophercloud v1.5.0 h1:cDN6XFCLKiiqvYpjQLq9AiM7RDRbIC9450WpPH+yvXo= github.com/gophercloud/gophercloud v1.5.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -759,6 +771,7 @@ github.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kX github.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo= github.com/gorilla/sessions v1.2.2 h1:lqzMYz6bOfvn2WriPUjNByzeXIlVzURcPmgMczkmTjY= github.com/gorilla/sessions v1.2.2/go.mod h1:ePLdVu+jbEgHH+KWw8I1z2wqd0BAdAQh/8LRvBeoNcQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= @@ -810,8 +823,8 @@ github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/b github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.28.2 h1:mXfkRHrpHN4YY3RqL09nXU1eHKLNiuAN4kHvDQ16k/8= -github.com/hashicorp/consul/api v1.28.2/go.mod h1:KyzqzgMEya+IZPcD65YFoOVAgPpbfERu4I/tzG6/ueE= +github.com/hashicorp/consul/api v1.25.1 h1:CqrdhYzc8XZuPnhIYZWH45toM0LB9ZeYr/gvpLVI3PE= +github.com/hashicorp/consul/api v1.25.1/go.mod h1:iiLVwR/htV7mas/sy0O+XSuEnrdBUUydemjxcUrAt4g= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.16.0 h1:SE9m0W6DEfgIVCJX7xU+iv/hUl4m/nxqMTnCdMxDpJ8= github.com/hashicorp/consul/sdk v0.16.0/go.mod h1:7pxqqhqoaPqnBnzXD1StKed62LqJeClzVsUEy85Zr0A= @@ -988,6 +1001,7 @@ github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFF github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= @@ -1001,12 +1015,12 @@ github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dv github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.17.3 h1:qkRjuerhUU1EmXLYGkSH6EZL+vPSxIrYjLNAK4slzwA= github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= -github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= @@ -1029,8 +1043,9 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a h1:dHCfT5W7gghzPtfsW488uPmEOm85wewI+ypUwibyTdU= github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= -github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= +github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -1134,8 +1149,6 @@ github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= -github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= -github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8= @@ -1149,6 +1162,7 @@ github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= @@ -1198,8 +1212,8 @@ github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= -github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= +github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= +github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= github.com/opencontainers/runc v1.1.10 h1:EaL5WeO9lv9wmS6SASjszOeQdSctvpbu0DdBQBizE40= github.com/opencontainers/runc v1.1.10/go.mod h1:+/R6+KmDlh+hOO8NkjmgkG9Qzvypzk0yXxAPYYR65+M= github.com/opentracing-contrib/go-grpc v0.0.0-20210225150812-73cb765af46e h1:4cPxUYdgaGzZIT5/j0IfqOrrXmq6bG8AwvwisMXpdrg= @@ -1394,8 +1408,8 @@ github.com/smartcontractkit/tdh2/go/tdh2 v0.0.0-20230906073235-9e478e5e19f1 h1:D github.com/smartcontractkit/tdh2/go/tdh2 v0.0.0-20230906073235-9e478e5e19f1/go.mod h1:G5Sd/yzHWf26rQ+X0nG9E0buKPqRGPMJAfk2gwCzOOw= github.com/smartcontractkit/wasp v0.4.7 h1:7mKJfwzFbuE8xVLUYtLt7Bjw8q/bmVZRW6Ks8kc1LVM= github.com/smartcontractkit/wasp v0.4.7/go.mod h1:jeabvyXikb2aNoLQwcZGqaz17efrR8NJhpq4seAmdgs= -github.com/smartcontractkit/wsrpc v0.8.1 h1:kk0SXLqWrWaZ3J6c7n8D0NZ2uTMBBBpG5dZZXZX8UGE= -github.com/smartcontractkit/wsrpc v0.8.1/go.mod h1:yfg8v8fPLXkb6Mcnx6Pm/snP6jJ0r5Kf762Yd1a/KpA= +github.com/smartcontractkit/wsrpc v0.7.3 h1:CKYZfawZShZGfvsQep1F9oBansnFk9ByZPCdTMpLphw= +github.com/smartcontractkit/wsrpc v0.7.3/go.mod h1:sj7QX2NQibhkhxTfs3KOhAj/5xwgqMipTvJVSssT9i0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= @@ -1427,8 +1441,8 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= -github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= +github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= +github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/streamingfast/logging v0.0.0-20220405224725-2755dab2ce75 h1:ZqpS7rAhhKD7S7DnrpEdrnW1/gZcv82ytpMviovkli4= @@ -1450,6 +1464,7 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= @@ -1467,8 +1482,8 @@ github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 h1:3SNcvBmEPE1YlB github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0= github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmNQzk2ghU= -github.com/testcontainers/testcontainers-go v0.32.0 h1:ug1aK08L3gCHdhknlTTwWjPHPS+/alvLJU/DRxTD/ME= -github.com/testcontainers/testcontainers-go v0.32.0/go.mod h1:CRHrzHLQhlXUsa5gXjTOfqIEJcrK5+xMDmBr/WMI88E= +github.com/testcontainers/testcontainers-go v0.28.0 h1:1HLm9qm+J5VikzFDYhOd+Zw12NtOl+8drH2E8nTY1r8= +github.com/testcontainers/testcontainers-go v0.28.0/go.mod h1:COlDpUXbwW3owtpMkEB1zo9gwb1CoKVKlyrVPejF4AU= github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a h1:YuO+afVc3eqrjiCUizNCxI53bl/BnPiVwXqLzqYTqgU= github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a/go.mod h1:/sfW47zCZp9FrtGcWyo1VjbgDaodxX9ovZvgLb/MxaA= github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg= @@ -1495,7 +1510,9 @@ github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaO github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= @@ -1564,12 +1581,12 @@ go.dedis.ch/protobuf v1.0.11/go.mod h1:97QR256dnkimeNdfmURz0wAMNVbd1VmLXhG1CrTYr go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= -go.etcd.io/etcd/api/v3 v3.5.12 h1:W4sw5ZoU2Juc9gBWuLk5U6fHfNVyY1WC5g9uiXZio/c= -go.etcd.io/etcd/api/v3 v3.5.12/go.mod h1:Ot+o0SWSyT6uHhA56al1oCED0JImsRiU9Dc26+C2a+4= -go.etcd.io/etcd/client/pkg/v3 v3.5.12 h1:EYDL6pWwyOsylrQyLp2w+HkQ46ATiOvoEdMarindU2A= -go.etcd.io/etcd/client/pkg/v3 v3.5.12/go.mod h1:seTzl2d9APP8R5Y2hFL3NVlD6qC/dOT+3kvrqPyTas4= -go.etcd.io/etcd/client/v3 v3.5.12 h1:v5lCPXn1pf1Uu3M4laUE2hp/geOTc5uPcYYsNe1lDxg= -go.etcd.io/etcd/client/v3 v3.5.12/go.mod h1:tSbBCakoWmmddL+BKVAJHa9km+O/E+bumDe9mSbPiqw= +go.etcd.io/etcd/api/v3 v3.5.10 h1:szRajuUUbLyppkhs9K6BRtjY37l66XQQmw7oZRANE4k= +go.etcd.io/etcd/api/v3 v3.5.10/go.mod h1:TidfmT4Uycad3NM/o25fG3J07odo4GBB9hoxaodFCtI= +go.etcd.io/etcd/client/pkg/v3 v3.5.10 h1:kfYIdQftBnbAq8pUWFXfpuuxFSKzlmM5cSn76JByiT0= +go.etcd.io/etcd/client/pkg/v3 v3.5.10/go.mod h1:DYivfIviIuQ8+/lCq4vcxuseg2P2XbHygkKwFo9fc8U= +go.etcd.io/etcd/client/v3 v3.5.10 h1:W9TXNZ+oB3MCd/8UjxHTWK5J9Nquw9fQBLJd5ne5/Ao= +go.etcd.io/etcd/client/v3 v3.5.10/go.mod h1:RVeBnDz2PUEZqTpgqwAtUd8nAPf5kjyFyND7P1VkOKc= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= @@ -1591,8 +1608,8 @@ go.opentelemetry.io/collector/semconv v0.87.0 h1:BsG1jdLLRCBRlvUujk4QA86af7r/ZXn go.opentelemetry.io/collector/semconv v0.87.0/go.mod h1:j/8THcqVxFna1FpvA2zYIsUperEtOaRaqoLYIN4doWw= go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin v0.49.0 h1:1f31+6grJmV3X4lxcEvUy13i5/kfDw1nJZwhd8mA4tg= go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin v0.49.0/go.mod h1:1P/02zM3OwkX9uki+Wmxw3a5GVb6KUXRsa7m7bOC9Fg= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 h1:vS1Ao/R55RNV4O7TA2Qopok8yN+X0LIP6RVWLFkprck= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0/go.mod h1:BMsdeOxN04K0L5FNUBfjFdvwWGNe/rkmSwH4Aelu/X0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= @@ -1641,6 +1658,7 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go4.org/netipx v0.0.0-20230125063823-8449b0a6169f h1:ketMxHg+vWm3yccyYiq+uK8D3fRmna2Fcj+awpQp84s= @@ -1675,8 +1693,8 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= -golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1795,8 +1813,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1882,8 +1900,8 @@ golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= -golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1895,8 +1913,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= -golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= +golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1910,8 +1928,8 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2009,8 +2027,8 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= -google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= +google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= +google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2164,8 +2182,8 @@ k8s.io/kubectl v0.28.2 h1:fOWOtU6S0smdNjG1PB9WFbqEIMlkzU5ahyHkc7ESHgM= k8s.io/kubectl v0.28.2/go.mod h1:6EQWTPySF1fn7yKoQZHYf9TPwIl2AygHEcJoxFekr64= k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak= k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -nhooyr.io/websocket v1.8.10 h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q= -nhooyr.io/websocket v1.8.10/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= +nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= +nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= From aedb16781214feb8beac0c98b53ba3ee1aa32a76 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 15 Aug 2024 14:53:35 -0400 Subject: [PATCH 32/42] Revert --- integration-tests/load/go.mod | 52 ++++++------- integration-tests/load/go.sum | 134 +++++++++++++++------------------- 2 files changed, 85 insertions(+), 101 deletions(-) diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index a85ab009d6..07c07b93b2 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -35,8 +35,10 @@ require ( cosmossdk.io/depinject v1.0.0-alpha.4 // indirect cosmossdk.io/errors v1.0.1 // indirect cosmossdk.io/math v1.3.0 // indirect + github.com/containerd/errdefs v0.1.0 // indirect github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/moby/docker-image-spec v1.3.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect @@ -69,8 +71,8 @@ require ( github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.2.1 // indirect github.com/Masterminds/sprig/v3 v3.2.3 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/Microsoft/hcsshim v0.11.4 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/Microsoft/hcsshim v0.11.5 // indirect github.com/NethermindEth/juno v0.3.1 // indirect github.com/NethermindEth/starknet.go v0.7.1-0.20240401080518-34a506f3cfdb // indirect github.com/VictoriaMetrics/fastcache v1.12.1 // indirect @@ -114,7 +116,7 @@ require ( github.com/confio/ics23/go v0.9.0 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect - github.com/containerd/containerd v1.7.12 // indirect + github.com/containerd/containerd v1.7.18 // indirect github.com/containerd/continuity v0.4.3 // indirect github.com/containerd/log v0.1.0 // indirect github.com/coreos/go-semver v0.3.1 // indirect @@ -141,9 +143,9 @@ require ( github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect - github.com/distribution/reference v0.5.0 // indirect + github.com/distribution/reference v0.6.0 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker v25.0.2+incompatible // indirect + github.com/docker/docker v27.0.3+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dominikbraun/graph v0.23.0 // indirect @@ -163,7 +165,7 @@ require ( github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/fvbommel/sortorder v1.1.0 // indirect github.com/fxamacker/cbor/v2 v2.6.0 // indirect - github.com/gabriel-vasile/mimetype v1.4.2 // indirect + github.com/gabriel-vasile/mimetype v1.4.3 // indirect github.com/gagliardetto/binary v0.7.7 // indirect github.com/gagliardetto/solana-go v1.8.4 // indirect github.com/gagliardetto/treeout v0.1.4 // indirect @@ -182,7 +184,7 @@ require ( github.com/go-logfmt/logfmt v0.6.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-openapi/analysis v0.21.4 // indirect github.com/go-openapi/errors v0.20.4 // indirect github.com/go-openapi/jsonpointer v0.21.0 // indirect @@ -194,7 +196,7 @@ require ( github.com/go-openapi/validate v0.22.1 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.15.5 // indirect + github.com/go-playground/validator/v10 v10.22.0 // indirect github.com/go-redis/redis/v8 v8.11.5 // indirect github.com/go-webauthn/webauthn v0.9.4 // indirect github.com/go-webauthn/x v0.1.5 // indirect @@ -242,7 +244,7 @@ require ( github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect - github.com/hashicorp/consul/api v1.25.1 // indirect + github.com/hashicorp/consul/api v1.28.2 // indirect github.com/hashicorp/consul/sdk v0.16.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect @@ -288,13 +290,13 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/julienschmidt/httprouter v1.3.0 // indirect github.com/kelseyhightower/envconfig v1.4.0 // indirect - github.com/klauspost/compress v1.17.3 // indirect + github.com/klauspost/compress v1.17.7 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a // indirect - github.com/leodido/go-urn v1.2.4 // indirect + github.com/leodido/go-urn v1.4.0 // indirect github.com/lib/pq v1.10.9 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect @@ -335,7 +337,7 @@ require ( github.com/oklog/ulid v1.3.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0-rc5 // indirect + github.com/opencontainers/image-spec v1.1.0 // indirect github.com/opencontainers/runc v1.1.10 // indirect github.com/opentracing-contrib/go-grpc v0.0.0-20210225150812-73cb765af46e // indirect github.com/opentracing-contrib/go-stdlib v1.0.0 // indirect @@ -380,7 +382,7 @@ require ( github.com/smartcontractkit/chainlink-testing-framework/grafana v0.0.0-20240405215812-5a72bc9af239 // indirect github.com/smartcontractkit/havoc/k8schaos v0.0.0-20240409145249-e78d20847e37 // indirect github.com/smartcontractkit/tdh2/go/ocr2/decryptionplugin v0.0.0-20230906073235-9e478e5e19f1 // indirect - github.com/smartcontractkit/wsrpc v0.7.3 // indirect + github.com/smartcontractkit/wsrpc v0.8.1 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/sony/gobreaker v0.5.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect @@ -388,7 +390,7 @@ require ( github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.18.2 // indirect + github.com/spf13/viper v1.19.0 // indirect github.com/status-im/keycard-go v0.2.0 // indirect github.com/streamingfast/logging v0.0.0-20220405224725-2755dab2ce75 // indirect github.com/stretchr/objx v0.5.2 // indirect @@ -398,7 +400,7 @@ require ( github.com/tendermint/go-amino v0.16.0 // indirect github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 // indirect github.com/test-go/testify v1.1.4 // indirect - github.com/testcontainers/testcontainers-go v0.28.0 // indirect + github.com/testcontainers/testcontainers-go v0.32.0 // indirect github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a // indirect github.com/tidwall/btree v1.6.0 // indirect github.com/tidwall/gjson v1.17.0 // indirect @@ -423,14 +425,14 @@ require ( go.dedis.ch/fixbuf v1.0.3 // indirect go.dedis.ch/kyber/v3 v3.1.0 // indirect go.etcd.io/bbolt v1.3.8 // indirect - go.etcd.io/etcd/api/v3 v3.5.10 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect - go.etcd.io/etcd/client/v3 v3.5.10 // indirect + go.etcd.io/etcd/api/v3 v3.5.12 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.12 // indirect + go.etcd.io/etcd/client/v3 v3.5.12 // indirect go.mongodb.org/mongo-driver v1.15.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/collector/pdata v1.0.0-rcv0016 // indirect go.opentelemetry.io/collector/semconv v0.87.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect go.opentelemetry.io/otel v1.28.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect @@ -446,15 +448,15 @@ require ( go.uber.org/zap v1.27.0 // indirect go4.org/netipx v0.0.0-20230125063823-8449b0a6169f // indirect golang.org/x/arch v0.7.0 // indirect - golang.org/x/crypto v0.25.0 // indirect + golang.org/x/crypto v0.26.0 // indirect golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect golang.org/x/mod v0.19.0 // indirect golang.org/x/net v0.27.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/term v0.22.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.23.0 // indirect + golang.org/x/term v0.23.0 // indirect + golang.org/x/text v0.17.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.23.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect @@ -479,7 +481,7 @@ require ( k8s.io/kube-openapi v0.0.0-20240709000822-3c01b740850f // indirect k8s.io/kubectl v0.28.2 // indirect k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 // indirect - nhooyr.io/websocket v1.8.7 // indirect + nhooyr.io/websocket v1.8.10 // indirect pgregory.net/rapid v1.1.0 // indirect rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/controller-runtime v0.18.4 // indirect diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index ad49cec300..d0dc4086a4 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -135,10 +135,10 @@ github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0 github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= -github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/Microsoft/hcsshim v0.11.5 h1:haEcLNpj9Ka1gd3B3tAEs9CpE0c+1IhoL59w/exYU38= +github.com/Microsoft/hcsshim v0.11.5/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU= github.com/NethermindEth/juno v0.3.1 h1:AW72LiAm9gqUeCVJWvepnZcTnpU4Vkl0KzPMxS+42FA= github.com/NethermindEth/juno v0.3.1/go.mod h1:SGbTpgGaCsxhFsKOid7Ylnz//WZ8swtILk+NbHGsk/Q= github.com/NethermindEth/starknet.go v0.7.1-0.20240401080518-34a506f3cfdb h1:Mv8SscePPyw2ju4igIJAjFgcq5zCQfjgbz53DwYu5mc= @@ -307,10 +307,12 @@ github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/Yj github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/containerd/containerd v1.7.12 h1:+KQsnv4VnzyxWcfO9mlxxELaoztsDEjOuCMPAuPqgU0= -github.com/containerd/containerd v1.7.12/go.mod h1:/5OMpE1p0ylxtEUGY8kuCYkDRzJm9NO1TFMWjUpdevk= +github.com/containerd/containerd v1.7.18 h1:jqjZTQNfXGoEaZdW1WwPU0RqSn1Bm2Ay/KJPUuO8nao= +github.com/containerd/containerd v1.7.18/go.mod h1:IYEk9/IO6wAPUz2bCMVUbsfXjzw5UNP5fLz4PsUygQ4= github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= +github.com/containerd/errdefs v0.1.0 h1:m0wCRBiu1WJT/Fr+iOoQHMQS/eP5myQ8lCv4Dz5ZURM= +github.com/containerd/errdefs v0.1.0/go.mod h1:YgWiiHtLmSeBrvpw+UfPijzbLaB77mEG1WwJTDETIV0= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= @@ -401,14 +403,14 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/r github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/digitalocean/godo v1.99.0 h1:gUHO7n9bDaZFWvbzOum4bXE0/09ZuYA9yA8idQHX57E= github.com/digitalocean/godo v1.99.0/go.mod h1:SsS2oXo2rznfM/nORlZ/6JaUJZFhmKTib1YhopUc8NA= -github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= -github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= +github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v25.0.2+incompatible h1:/OaKeauroa10K4Nqavw4zlhcDq/WBcPMc5DbjOGgozY= -github.com/docker/docker v25.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.0.3+incompatible h1:aBGI9TeQ4MPlhquTQKq9XbK79rKFVwXNUAYz9aXyEBE= +github.com/docker/docker v27.0.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -471,8 +473,8 @@ github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQ github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/fxamacker/cbor/v2 v2.6.0 h1:sU6J2usfADwWlYDAFhZBQ6TnLFBHxgesMrQfQgk1tWA= github.com/fxamacker/cbor/v2 v2.6.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= -github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= -github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= +github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= github.com/gagliardetto/binary v0.7.7 h1:QZpT38+sgoPg+TIQjH94sLbl/vX+nlIRA37pEyOsjfY= github.com/gagliardetto/binary v0.7.7/go.mod h1:mUuay5LL8wFVnIlecHakSZMvcdqfs+CsotR5n77kyjM= github.com/gagliardetto/gofuzz v1.2.2 h1:XL/8qDMzcgvR4+CyRQW9UGdwPRPMHVJfqQ/uMvSUuQw= @@ -500,7 +502,6 @@ github.com/gin-contrib/size v0.0.0-20230212012657-e14a14094dc4 h1:Z9J0PVIt1PuibO github.com/gin-contrib/size v0.0.0-20230212012657-e14a14094dc4/go.mod h1:CEPcgZiz8998l9E8fDm16h8UfHRL7b+5oG0j/0koeVw= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= github.com/go-asn1-ber/asn1-ber v1.5.5 h1:MNHlNMBDgEKD4TcKr36vQN68BA00aDfjIt3/bD50WnA= @@ -530,8 +531,9 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc= github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo= @@ -567,18 +569,14 @@ github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+Gr github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU= github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.15.5 h1:LEBecTWb/1j5TNY1YYG2RcOUN3R7NLylN+x8TTueE24= -github.com/go-playground/validator/v10 v10.15.5/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/go-playground/validator/v10 v10.22.0 h1:k6HsTZ0sTnROkhS//R0O+55JgM8C4Bx7ia+JlgcnOao= +github.com/go-playground/validator/v10 v10.22.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= github.com/go-resty/resty/v2 v2.11.0 h1:i7jMfNOJYMp69lq7qozJP+bjgzfAzeOhuGlyDrqxT/8= @@ -622,15 +620,6 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= -github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= -github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/gobwas/ws v1.2.1 h1:F2aeBZrm2NDsc7vbovKrWSogd4wvfAxg0FQ89/iqOTk= -github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= @@ -747,7 +736,6 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3 github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -755,8 +743,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= -github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= +github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/gophercloud/gophercloud v1.5.0 h1:cDN6XFCLKiiqvYpjQLq9AiM7RDRbIC9450WpPH+yvXo= github.com/gophercloud/gophercloud v1.5.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -771,7 +759,6 @@ github.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kX github.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo= github.com/gorilla/sessions v1.2.2 h1:lqzMYz6bOfvn2WriPUjNByzeXIlVzURcPmgMczkmTjY= github.com/gorilla/sessions v1.2.2/go.mod h1:ePLdVu+jbEgHH+KWw8I1z2wqd0BAdAQh/8LRvBeoNcQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= @@ -823,8 +810,8 @@ github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/b github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.25.1 h1:CqrdhYzc8XZuPnhIYZWH45toM0LB9ZeYr/gvpLVI3PE= -github.com/hashicorp/consul/api v1.25.1/go.mod h1:iiLVwR/htV7mas/sy0O+XSuEnrdBUUydemjxcUrAt4g= +github.com/hashicorp/consul/api v1.28.2 h1:mXfkRHrpHN4YY3RqL09nXU1eHKLNiuAN4kHvDQ16k/8= +github.com/hashicorp/consul/api v1.28.2/go.mod h1:KyzqzgMEya+IZPcD65YFoOVAgPpbfERu4I/tzG6/ueE= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.16.0 h1:SE9m0W6DEfgIVCJX7xU+iv/hUl4m/nxqMTnCdMxDpJ8= github.com/hashicorp/consul/sdk v0.16.0/go.mod h1:7pxqqhqoaPqnBnzXD1StKed62LqJeClzVsUEy85Zr0A= @@ -1001,7 +988,6 @@ github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFF github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= @@ -1015,12 +1001,12 @@ github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dv github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.17.3 h1:qkRjuerhUU1EmXLYGkSH6EZL+vPSxIrYjLNAK4slzwA= github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= @@ -1043,9 +1029,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a h1:dHCfT5W7gghzPtfsW488uPmEOm85wewI+ypUwibyTdU= github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= -github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -1149,6 +1134,8 @@ github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8= @@ -1162,7 +1149,6 @@ github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= @@ -1212,8 +1198,8 @@ github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/cbdlwvlWt0pnFI= -github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/opencontainers/runc v1.1.10 h1:EaL5WeO9lv9wmS6SASjszOeQdSctvpbu0DdBQBizE40= github.com/opencontainers/runc v1.1.10/go.mod h1:+/R6+KmDlh+hOO8NkjmgkG9Qzvypzk0yXxAPYYR65+M= github.com/opentracing-contrib/go-grpc v0.0.0-20210225150812-73cb765af46e h1:4cPxUYdgaGzZIT5/j0IfqOrrXmq6bG8AwvwisMXpdrg= @@ -1408,8 +1394,8 @@ github.com/smartcontractkit/tdh2/go/tdh2 v0.0.0-20230906073235-9e478e5e19f1 h1:D github.com/smartcontractkit/tdh2/go/tdh2 v0.0.0-20230906073235-9e478e5e19f1/go.mod h1:G5Sd/yzHWf26rQ+X0nG9E0buKPqRGPMJAfk2gwCzOOw= github.com/smartcontractkit/wasp v0.4.7 h1:7mKJfwzFbuE8xVLUYtLt7Bjw8q/bmVZRW6Ks8kc1LVM= github.com/smartcontractkit/wasp v0.4.7/go.mod h1:jeabvyXikb2aNoLQwcZGqaz17efrR8NJhpq4seAmdgs= -github.com/smartcontractkit/wsrpc v0.7.3 h1:CKYZfawZShZGfvsQep1F9oBansnFk9ByZPCdTMpLphw= -github.com/smartcontractkit/wsrpc v0.7.3/go.mod h1:sj7QX2NQibhkhxTfs3KOhAj/5xwgqMipTvJVSssT9i0= +github.com/smartcontractkit/wsrpc v0.8.1 h1:kk0SXLqWrWaZ3J6c7n8D0NZ2uTMBBBpG5dZZXZX8UGE= +github.com/smartcontractkit/wsrpc v0.8.1/go.mod h1:yfg8v8fPLXkb6Mcnx6Pm/snP6jJ0r5Kf762Yd1a/KpA= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= @@ -1441,8 +1427,8 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/streamingfast/logging v0.0.0-20220405224725-2755dab2ce75 h1:ZqpS7rAhhKD7S7DnrpEdrnW1/gZcv82ytpMviovkli4= @@ -1464,7 +1450,6 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= @@ -1482,8 +1467,8 @@ github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 h1:3SNcvBmEPE1YlB github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0= github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmNQzk2ghU= -github.com/testcontainers/testcontainers-go v0.28.0 h1:1HLm9qm+J5VikzFDYhOd+Zw12NtOl+8drH2E8nTY1r8= -github.com/testcontainers/testcontainers-go v0.28.0/go.mod h1:COlDpUXbwW3owtpMkEB1zo9gwb1CoKVKlyrVPejF4AU= +github.com/testcontainers/testcontainers-go v0.32.0 h1:ug1aK08L3gCHdhknlTTwWjPHPS+/alvLJU/DRxTD/ME= +github.com/testcontainers/testcontainers-go v0.32.0/go.mod h1:CRHrzHLQhlXUsa5gXjTOfqIEJcrK5+xMDmBr/WMI88E= github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a h1:YuO+afVc3eqrjiCUizNCxI53bl/BnPiVwXqLzqYTqgU= github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a/go.mod h1:/sfW47zCZp9FrtGcWyo1VjbgDaodxX9ovZvgLb/MxaA= github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg= @@ -1510,9 +1495,7 @@ github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaO github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= @@ -1581,12 +1564,12 @@ go.dedis.ch/protobuf v1.0.11/go.mod h1:97QR256dnkimeNdfmURz0wAMNVbd1VmLXhG1CrTYr go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= -go.etcd.io/etcd/api/v3 v3.5.10 h1:szRajuUUbLyppkhs9K6BRtjY37l66XQQmw7oZRANE4k= -go.etcd.io/etcd/api/v3 v3.5.10/go.mod h1:TidfmT4Uycad3NM/o25fG3J07odo4GBB9hoxaodFCtI= -go.etcd.io/etcd/client/pkg/v3 v3.5.10 h1:kfYIdQftBnbAq8pUWFXfpuuxFSKzlmM5cSn76JByiT0= -go.etcd.io/etcd/client/pkg/v3 v3.5.10/go.mod h1:DYivfIviIuQ8+/lCq4vcxuseg2P2XbHygkKwFo9fc8U= -go.etcd.io/etcd/client/v3 v3.5.10 h1:W9TXNZ+oB3MCd/8UjxHTWK5J9Nquw9fQBLJd5ne5/Ao= -go.etcd.io/etcd/client/v3 v3.5.10/go.mod h1:RVeBnDz2PUEZqTpgqwAtUd8nAPf5kjyFyND7P1VkOKc= +go.etcd.io/etcd/api/v3 v3.5.12 h1:W4sw5ZoU2Juc9gBWuLk5U6fHfNVyY1WC5g9uiXZio/c= +go.etcd.io/etcd/api/v3 v3.5.12/go.mod h1:Ot+o0SWSyT6uHhA56al1oCED0JImsRiU9Dc26+C2a+4= +go.etcd.io/etcd/client/pkg/v3 v3.5.12 h1:EYDL6pWwyOsylrQyLp2w+HkQ46ATiOvoEdMarindU2A= +go.etcd.io/etcd/client/pkg/v3 v3.5.12/go.mod h1:seTzl2d9APP8R5Y2hFL3NVlD6qC/dOT+3kvrqPyTas4= +go.etcd.io/etcd/client/v3 v3.5.12 h1:v5lCPXn1pf1Uu3M4laUE2hp/geOTc5uPcYYsNe1lDxg= +go.etcd.io/etcd/client/v3 v3.5.12/go.mod h1:tSbBCakoWmmddL+BKVAJHa9km+O/E+bumDe9mSbPiqw= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= @@ -1608,8 +1591,8 @@ go.opentelemetry.io/collector/semconv v0.87.0 h1:BsG1jdLLRCBRlvUujk4QA86af7r/ZXn go.opentelemetry.io/collector/semconv v0.87.0/go.mod h1:j/8THcqVxFna1FpvA2zYIsUperEtOaRaqoLYIN4doWw= go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin v0.49.0 h1:1f31+6grJmV3X4lxcEvUy13i5/kfDw1nJZwhd8mA4tg= go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin v0.49.0/go.mod h1:1P/02zM3OwkX9uki+Wmxw3a5GVb6KUXRsa7m7bOC9Fg= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 h1:vS1Ao/R55RNV4O7TA2Qopok8yN+X0LIP6RVWLFkprck= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0/go.mod h1:BMsdeOxN04K0L5FNUBfjFdvwWGNe/rkmSwH4Aelu/X0= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 h1:9G6E0TXzGFVfTnawRzrPl83iHOAV7L8NJiR8RSGYV1g= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0/go.mod h1:azvtTADFQJA8mX80jIH/akaE7h+dbm/sVuaHqN13w74= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= @@ -1658,7 +1641,6 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= go4.org/netipx v0.0.0-20230125063823-8449b0a6169f h1:ketMxHg+vWm3yccyYiq+uK8D3fRmna2Fcj+awpQp84s= @@ -1693,8 +1675,8 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1813,8 +1795,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1900,8 +1882,8 @@ golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1913,8 +1895,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/term v0.23.0 h1:F6D4vR+EHoL9/sWAWgAR1H2DcHr4PareCbAaCo1RpuU= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1928,8 +1910,8 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2027,8 +2009,8 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= -google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= +google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= +google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2182,8 +2164,8 @@ k8s.io/kubectl v0.28.2 h1:fOWOtU6S0smdNjG1PB9WFbqEIMlkzU5ahyHkc7ESHgM= k8s.io/kubectl v0.28.2/go.mod h1:6EQWTPySF1fn7yKoQZHYf9TPwIl2AygHEcJoxFekr64= k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak= k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g= -nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +nhooyr.io/websocket v1.8.10 h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q= +nhooyr.io/websocket v1.8.10/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= From cf75d2511fd81d15f76ef5c438db4742cbd12446 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 15 Aug 2024 16:45:21 -0400 Subject: [PATCH 33/42] Exec working --- .../deployment/ccip/deploy_test.go | 3 +- .../ccip/migrations/1_initial_deploy_test.go | 51 +++++++++++++++++-- integration-tests/deployment/memory/chain.go | 2 +- .../deployment/memory/environment.go | 8 +-- 4 files changed, 54 insertions(+), 10 deletions(-) diff --git a/integration-tests/deployment/ccip/deploy_test.go b/integration-tests/deployment/ccip/deploy_test.go index a3e7ba1b24..75810e6881 100644 --- a/integration-tests/deployment/ccip/deploy_test.go +++ b/integration-tests/deployment/ccip/deploy_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/stretchr/testify/require" + "go.uber.org/zap/zapcore" "github.com/smartcontractkit/chainlink/integration-tests/deployment/memory" @@ -14,7 +15,7 @@ import ( func TestDeployCCIPContracts(t *testing.T) { lggr := logger.TestLogger(t) - e := memory.NewMemoryEnvironment(t, lggr, memory.MemoryEnvironmentConfig{ + e := memory.NewMemoryEnvironment(t, lggr, zapcore.InfoLevel, memory.MemoryEnvironmentConfig{ Chains: 1, Nodes: 1, }) diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index 5037557e2c..121abddaf4 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -11,6 +11,7 @@ import ( "github.com/ethereum/go-ethereum/common" chainsel "github.com/smartcontractkit/chain-selectors" "github.com/stretchr/testify/require" + "go.uber.org/zap/zapcore" "github.com/smartcontractkit/chainlink/integration-tests/deployment" @@ -65,7 +66,7 @@ func Test0001_InitialDeploy(t *testing.T) { capReg = common.HexToAddress(addr) break } - nodes := memory.NewNodes(t, chains, 4, 1, memory.RegistryConfig{ + nodes := memory.NewNodes(t, zapcore.InfoLevel, chains, 4, 1, memory.RegistryConfig{ EVMChainID: homeChainEVM, Contract: capReg, }) @@ -128,6 +129,8 @@ func Test0001_InitialDeploy(t *testing.T) { } } } + + // Send a message from each chain to the home chain. for sel, chain := range e.Chains { dest := homeChainSel if sel == homeChainSel { @@ -166,6 +169,9 @@ func Test0001_InitialDeploy(t *testing.T) { state.EvmOffRampsV160[homeChainSel], ccipocr3.SeqNumRange{1, 1}, ) + waitForExecWithSeqNr(t, + state.EvmOffRampsV160[homeChainSel], + chain, e.Chains[homeChainSel], 1) } // TODO: Apply the proposal. } @@ -192,17 +198,18 @@ func waitForCommitWithInterval( }, sink) require.NoError(t, err) ticker := time.NewTicker(1 * time.Second) + defer ticker.Stop() for { select { - case <-ticker.C: - src.Client.(*backends.SimulatedBackend).Commit() - dest.Client.(*backends.SimulatedBackend).Commit() case <-time.After(time.Minute): t.Logf("Waiting for commit report on chain selector %d from source selector %d expected seq nr range %s", dest.Selector, src.Selector, expectedSeqNumRange.String()) t.Error("Timed out waiting for commit report") return + case <-ticker.C: + src.Client.(*backends.SimulatedBackend).Commit() + dest.Client.(*backends.SimulatedBackend).Commit() case subErr := <-subscription.Err(): t.Fatalf("Subscription error: %+v", subErr) case report := <-sink: @@ -222,3 +229,39 @@ func waitForCommitWithInterval( } } } + +func waitForExecWithSeqNr(t *testing.T, + offramp *evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp, + source, dest deployment.Chain, expectedSeqNr uint64) { + tick := time.NewTicker(5 * time.Second) + defer tick.Stop() + for { + select { + case <-time.After(time.Minute): + t.Log("Timed out waiting for ExecutionStateChanged") + return + case <-tick.C: + // TODO: Clean this up + source.Client.(*backends.SimulatedBackend).Commit() + dest.Client.(*backends.SimulatedBackend).Commit() + scc, err := offramp.GetSourceChainConfig(nil, source.Selector) + require.NoError(t, err) + t.Logf("Waiting for ExecutionStateChanged on chain %d from chain %d with expected sequence number %d, current onchain minSeqNr: %d", + dest.Selector, source.Selector, expectedSeqNr, scc.MinSeqNr) + iter, err := offramp.FilterExecutionStateChanged(nil, + []uint64{source.Selector}, []uint64{expectedSeqNr}, nil) + require.NoError(t, err) + var count int + for iter.Next() { + if iter.Event.SequenceNumber == expectedSeqNr && iter.Event.SourceChainSelector == source.Selector { + count++ + } + } + if count == 1 { + t.Logf("Received ExecutionStateChanged on chain %d from chain %d with expected sequence number %d", + dest.Selector, source.Selector, expectedSeqNr) + return + } + } + } +} diff --git a/integration-tests/deployment/memory/chain.go b/integration-tests/deployment/memory/chain.go index e77423ec4c..153d9d19e9 100644 --- a/integration-tests/deployment/memory/chain.go +++ b/integration-tests/deployment/memory/chain.go @@ -64,7 +64,7 @@ func GenerateChains(t *testing.T, numChains int) map[uint64]EVMChain { require.NoError(t, err) backend := backends.NewSimulatedBackend(core.GenesisAlloc{ owner.From: {Balance: big.NewInt(0).Mul(big.NewInt(100), big.NewInt(params.Ether))}}, 10000000) - tweakChainTimestamp(t, backend, time.Hour*24) + tweakChainTimestamp(t, backend, time.Hour*8) chains[chainID] = EVMChain{ Backend: backend, DeployerKey: owner, diff --git a/integration-tests/deployment/memory/environment.go b/integration-tests/deployment/memory/environment.go index f6fd582b08..327d9df404 100644 --- a/integration-tests/deployment/memory/environment.go +++ b/integration-tests/deployment/memory/environment.go @@ -59,7 +59,7 @@ func NewMemoryChains(t *testing.T, numChains int) map[uint64]deployment.Chain { return chains } -func NewNodes(t *testing.T, chains map[uint64]deployment.Chain, numNodes, numBootstraps int, registryConfig RegistryConfig) map[string]Node { +func NewNodes(t *testing.T, logLevel zapcore.Level, chains map[uint64]deployment.Chain, numNodes, numBootstraps int, registryConfig RegistryConfig) map[string]Node { mchains := make(map[uint64]EVMChain) for _, chain := range chains { evmChainID, err := chainsel.ChainIdFromSelector(chain.Selector) @@ -81,7 +81,7 @@ func NewNodes(t *testing.T, chains map[uint64]deployment.Chain, numNodes, numBoo bootstrap = true existingNumBootstraps++ } - node := NewNode(t, ports[i], mchains, zapcore.InfoLevel, bootstrap, registryConfig) + node := NewNode(t, ports[i], mchains, logLevel, bootstrap, registryConfig) nodesByPeerID[node.Keys.PeerID.String()] = *node // Note in real env, this ID is allocated by JD. nodeIDs = append(nodeIDs, node.Keys.PeerID.String()) @@ -125,9 +125,9 @@ func NewMemoryEnvironmentFromChainsNodes(t *testing.T, //} // To be used by tests and any kind of deployment logic. -func NewMemoryEnvironment(t *testing.T, lggr logger.Logger, config MemoryEnvironmentConfig) deployment.Environment { +func NewMemoryEnvironment(t *testing.T, lggr logger.Logger, logLevel zapcore.Level, config MemoryEnvironmentConfig) deployment.Environment { chains := NewMemoryChains(t, config.Chains) - nodes := NewNodes(t, chains, config.Nodes, config.Bootstraps, config.RegistryConfig) + nodes := NewNodes(t, logLevel, chains, config.Nodes, config.Bootstraps, config.RegistryConfig) var nodeIDs []string for id := range nodes { nodeIDs = append(nodeIDs, id) From 3e2705eb2bbd348c58b0eabad6b51a9ae449eecb Mon Sep 17 00:00:00 2001 From: connorwstein Date: Thu, 15 Aug 2024 17:18:03 -0400 Subject: [PATCH 34/42] Pull up common code --- integration-tests/deployment/ccip/commit | 361 ------------------ integration-tests/deployment/ccip/deploy.go | 51 +-- .../deployment/ccip/deploy_home_chain.go | 13 +- .../deployment/ccip/deploy_test.go | 4 +- integration-tests/deployment/ccip/jobs.go | 112 ------ .../ccip/migrations/1_initial_deploy_test.go | 2 +- integration-tests/deployment/ccip/propose.go | 1 + integration-tests/deployment/environment.go | 142 +++++++ 8 files changed, 166 insertions(+), 520 deletions(-) delete mode 100644 integration-tests/deployment/ccip/commit diff --git a/integration-tests/deployment/ccip/commit b/integration-tests/deployment/ccip/commit deleted file mode 100644 index 47d243c6a1..0000000000 --- a/integration-tests/deployment/ccip/commit +++ /dev/null @@ -1,361 +0,0 @@ -{"Time":"2024-08-15T13:38:08.792412-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.792-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.79243-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.792-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.793542-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.792-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.793809-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.792-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.793964-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.792-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} -{"Time":"2024-08-15T13:38:08.794196-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.792-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.794497-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.793-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.794505-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.793-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.794568-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.793-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.794577-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.793-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.794712-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.793-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.794723-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.793-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} -{"Time":"2024-08-15T13:38:08.796433-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.795-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/managed_ocr3_oracle.go:161\tManagedOCR3Oracle: error during NewEndpoint\t{\"version\": \"unset@unset\", \"peerIDs\": [\"12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2\", \"12D3KooWHmm26BVPGRPyPNSo6x2ej5K7THDzi6T1mL9MtD3XCRvt\", \"12D3KooWAYB8Z2m3QNKQre9ELWXtojtE9T5YqapZUd2kW5kvS9w8\", \"12D3KooWJ9F1bZC7mj5vb2a4ivcDov3mQVtaLi3xHsebPfVwgksS\"], \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"v2bootstrappers\": [\"12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2@127.0.0.1:20501\"], \"error\": \"asked to add group with digest we already have (digest: 000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409)\"}\n"} -{"Time":"2024-08-15T13:38:08.799056-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.795-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0."} -{"Time":"2024-08-15T13:38:08.801378-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.796-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.801384-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.796-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.80149-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.796-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.801499-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.796-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.801621-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.796-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.801629-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.796-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} -{"Time":"2024-08-15T13:38:08.804911-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.798-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAccount:0x7c91e01b21a21F51Ee6fB2A935EE17a140A83861} {OffchainPublicKey:[175 87 104 79 88 88 68 27"} -{"Time":"2024-08-15T13:38:08.805476-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.798-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"config\": {\"ConfigDigest\":\"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0x7c91e01b21a21F51Ee6fB2A935EE17a140A83861\",\"0xFcd50645379b6959DD9CacCdae19f79507c4f341\",\"0x013eCe49A33529DfF532D1623C4D9696c4d9CA57\",\"0xc23808Fe7134a2d04b871c0a5ae4999123830ac1\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfT"} -{"Time":"2024-08-15T13:38:08.807814-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.801-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1, \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAcc"} -{"Time":"2024-08-15T13:38:08.809307-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.802-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}}\n"} -{"Time":"2024-08-15T13:38:08.809317-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.803-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"config\": {\"ConfigDigest\":\"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0x275CcC34Cf98d5939BB20a4696B94cd057140367\",\"0x2d4c45aD58b3d177c0de811aFD033aAAAfC54419\",\"0xFf56Dd72Ffd72B9D2983e43316e8615Abc2d17Ef\",\"0xC8a753F6261549710d58dd22AbACA511969633D4\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfT"} -{"Time":"2024-08-15T13:38:08.81007-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.803-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2}\n"} -{"Time":"2024-08-15T13:38:08.810214-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.804-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\"}\n"} -{"Time":"2024-08-15T13:38:08.810344-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.804-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"repatt\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.810428-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.804-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2}\n"} -{"Time":"2024-08-15T13:38:08.810524-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.804-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"pacemaker\"}\n"} -{"Time":"2024-08-15T13:38:08.810646-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.804-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"proto\": \"outgen\", \"epoch\": 1}\n"} -{"Time":"2024-08-15T13:38:08.810747-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.804-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 1, \"l\": 1, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:38:08.811026-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.805-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}, \"oid\": 1}\n"} -{"Time":"2024-08-15T13:38:08.81136-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.807-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.811444-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.807-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:38:08.811524-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.807-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1, \"proto\": \"pacemaker\"}\n"} -{"Time":"2024-08-15T13:38:08.811534-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.807-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1, \"proto\": \"repatt\"}\n"} -{"Time":"2024-08-15T13:38:08.811539-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.807-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:38:08.811616-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.807-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"epoch\": 1, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:38:08.811623-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.807-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 1, \"l\": 2, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"oid\": 1}\n"} -{"Time":"2024-08-15T13:38:08.816087-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.816-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.816101-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.816-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.816128-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.816-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.81625-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.816-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.816259-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.816-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.816306-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.816-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.820612-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.818-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"config\": {\"ConfigDigest\":\"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0x275CcC34Cf98d5939BB20a4696B94cd057140367\",\"0x2d4c45aD58b3d177c0de811aFD033aAAAfC54419\",\"0xFf56Dd72Ffd72B9D2983e43316e8615Abc2d17Ef\",\"0xC8a753F6261549710d58dd22AbACA511969633D4\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfT"} -{"Time":"2024-08-15T13:38:08.821678-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.818-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"oid\": 3, \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAccount:0x275CcC34Cf98d5939BB20a4696B94cd057140367} {OffchainPublicKey:[175 87 104 79 8"} -{"Time":"2024-08-15T13:38:08.830387-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.822-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}}\n"} -{"Time":"2024-08-15T13:38:08.831887-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.822-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.831946-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.822-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.831955-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.822-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.832012-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.822-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.832019-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.822-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} -{"Time":"2024-08-15T13:38:08.83211-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.822-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.834072-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.823-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/managed_ocr3_oracle.go:161\tManagedOCR3Oracle: error during NewEndpoint\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"error\": \"asked to add group with digest we already have (digest: 000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143)\", \"peerIDs\": [\"12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2\", \"12D3KooWHmm26BVPGRPyPNSo6x2ej5K7THDzi6T1mL9MtD3XCRvt\", \"12D3KooWAYB8Z2m3QNKQre9ELWXtojtE9T5YqapZUd2kW5kvS9w8\", \"12D3KooWJ9F1bZC7mj5vb2a4ivcDov3mQVtaLi3xHsebPfVwgksS\"], \"v2bootstrappers\": [\"12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2@127.0.0.1:20501\"]}\n"} -{"Time":"2024-08-15T13:38:08.834989-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.824-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0x7c91e01b21a21F51Ee6fB2A935EE17a140A83861\",\"0xFcd50645379b6959DD9CacCdae19f79507c4f341\",\"0x013eCe49A33529DfF532D1623C4D9696c4d9CA57\",\"0xc23808Fe7134a2d04b871c0a5ae4999123830ac1\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfThKi7ogiP4O3cVkdB67AgWZFpWIN8ggIg/xIHjdNjqnT0icpJScN/8bB8MjUTG88GkvT7tgyrCxeKAjQxMkQz"} -{"Time":"2024-08-15T13:38:08.838606-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.823-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3}\n"} -{"Time":"2024-08-15T13:38:08.83866-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.824-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3}\n"} -{"Time":"2024-08-15T13:38:08.838826-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.824-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"proto\": \"pacemaker\"}\n"} -{"Time":"2024-08-15T13:38:08.839059-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.824-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:38:08.839088-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.824-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"proto\": \"repatt\"}\n"} -{"Time":"2024-08-15T13:38:08.842553-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.824-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"epoch\": 1, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3}\n"} -{"Time":"2024-08-15T13:38:08.842643-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.825-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"e\": 1, \"l\": 2}\n"} -{"Time":"2024-08-15T13:38:08.8471-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.831-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.847138-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.831-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.847158-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.831-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.848337-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.831-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} -{"Time":"2024-08-15T13:38:08.848388-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.831-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} -{"Time":"2024-08-15T13:38:08.848501-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.831-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.848904-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.831-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAccount:0x7c91e01b21a21F51Ee6fB2A935EE17a140A83861} {OffchainPublicKey:[175 87 104 79 88 88 68 27"} -{"Time":"2024-08-15T13:38:08.849121-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.832-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0x7c91e01b21a21F51Ee6fB2A935EE17a140A83861\",\"0xFcd50645379b6959DD9CacCdae19f79507c4f341\",\"0x013eCe49A33529DfF532D1623C4D9696c4d9CA57\",\"0xc23808Fe7134a2d04b871c0a5ae4999123830ac1\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfThKi7ogiP4O3cVkdB67AgWZFpWIN8ggIg/xIHjdNjqnT0icpJScN/8bB8MjUTG88GkvT7tgyrCxeKAjQxMkQz"} -{"Time":"2024-08-15T13:38:08.850224-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.833-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:38:08.850304-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.834-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:38:08.850319-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.834-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\"}\n"} -{"Time":"2024-08-15T13:38:08.85033-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.834-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:38:08.850354-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.834-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"repatt\"}\n"} -{"Time":"2024-08-15T13:38:08.850366-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.834-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"pacemaker\"}\n"} -{"Time":"2024-08-15T13:38:08.850451-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.834-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"epoch\": 1}\n"} -{"Time":"2024-08-15T13:38:08.850473-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.834-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 1, \"l\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:38:08.850539-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.838-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.850597-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.838-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.850611-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.838-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.850622-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.838-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.850718-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.838-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} -{"Time":"2024-08-15T13:38:08.850733-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.838-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.851376-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.839-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAcc"} -{"Time":"2024-08-15T13:38:08.851708-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.840-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"config\": {\"ConfigDigest\":\"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0xe0F4a70361306085d2a61785B308e95d5ad06955\",\"0x9946f887FA1da1c548A08f4aD95b0e440088F0aE\",\"0x4333763Dc844117F00C12174F88495eC03B5F189\",\"0xd3152E7f39637c9117662972d31899F3a213A0Cd\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfT"} -{"Time":"2024-08-15T13:38:08.85407-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"oid\": 2, \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.854106-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.854118-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.854155-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.854166-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.854237-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.854363-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.854691-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAcc"} -{"Time":"2024-08-15T13:38:08.855024-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2}\n"} -{"Time":"2024-08-15T13:38:08.855046-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.855205-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"pacemaker\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.855512-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:38:08.855522-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.841-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"repatt\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.857235-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.842-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"config\": {\"ConfigDigest\":\"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0x7c91e01b21a21F51Ee6fB2A935EE17a140A83861\",\"0xFcd50645379b6959DD9CacCdae19f79507c4f341\",\"0x013eCe49A33529DfF532D1623C4D9696c4d9CA57\",\"0xc23808Fe7134a2d04b871c0a5ae4999123830ac1\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfT"} -{"Time":"2024-08-15T13:38:08.861282-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.842-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"epoch\": 1}\n"} -{"Time":"2024-08-15T13:38:08.861373-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.842-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}}\n"} -{"Time":"2024-08-15T13:38:08.861555-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.845-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"oid\": 2, \"proto\": \"outgen\", \"e\": 1, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.862368-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.848-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3}\n"} -{"Time":"2024-08-15T13:38:08.862426-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.848-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"transmission\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.863094-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.848-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"pacemaker\"}\n"} -{"Time":"2024-08-15T13:38:08.8631-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.848-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"repatt\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.863105-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.848-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:08.863196-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.848-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"outgen\", \"epoch\": 1}\n"} -{"Time":"2024-08-15T13:38:08.863204-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.848-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 1, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"oid\": 3, \"e\": 1}\n"} -{"Time":"2024-08-15T13:38:08.86446-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.856-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.864701-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.856-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.86471-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.856-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.864777-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.856-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} -{"Time":"2024-08-15T13:38:08.864785-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.856-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.864847-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.856-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.865203-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.857-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/managed_ocr3_oracle.go:161\tManagedOCR3Oracle: error during NewEndpoint\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"peerIDs\": [\"12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2\", \"12D3KooWHmm26BVPGRPyPNSo6x2ej5K7THDzi6T1mL9MtD3XCRvt\", \"12D3KooWAYB8Z2m3QNKQre9ELWXtojtE9T5YqapZUd2kW5kvS9w8\", \"12D3KooWJ9F1bZC7mj5vb2a4ivcDov3mQVtaLi3xHsebPfVwgksS\"], \"v2bootstrappers\": [\"12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2@127.0.0.1:20501\"], \"error\": \"asked to add group with digest we already have (digest: 000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b)\"}\n"} -{"Time":"2024-08-15T13:38:08.867125-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.858-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"error\": \"WriteConfig failed: ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\", \"errorVerbose\": \"ERROR: insert or update on table \\\"ocr2_contract_configs\\\" violates foreign key constraint \\\"offchainreporting2_contract_configs_oracle_spec_fkey\\\" (SQLSTATE 23503)\\nWriteConfig failed\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteConfig\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:206\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/managed.(*runWithContractConfigState).configChanged\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0."} -{"Time":"2024-08-15T13:38:08.871647-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.858-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.871772-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.858-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.871976-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.858-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.872079-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.858-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} -{"Time":"2024-08-15T13:38:08.872224-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.858-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.872464-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.858-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.872758-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.859-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAcc"} -{"Time":"2024-08-15T13:38:08.873572-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.859-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"config\": {\"ConfigDigest\":\"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0xe0F4a70361306085d2a61785B308e95d5ad06955\",\"0x9946f887FA1da1c548A08f4aD95b0e440088F0aE\",\"0x4333763Dc844117F00C12174F88495eC03B5F189\",\"0xd3152E7f39637c9117662972d31899F3a213A0Cd\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfThKi7ogiP4O3cVkdB67AgWZFpWIN8ggIg/xIHjdNjqnT0icpJScN/8bB8MjUTG88GkvT7tgyrCxeKAjQxMkQz"} -{"Time":"2024-08-15T13:38:08.874246-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.860-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}}\n"} -{"Time":"2024-08-15T13:38:08.874251-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:38:08.874337-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:38:08.874426-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:38:08.874506-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"proto\": \"repatt\"}\n"} -{"Time":"2024-08-15T13:38:08.874596-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"pacemaker\"}\n"} -{"Time":"2024-08-15T13:38:08.874678-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"epoch\": 1}\n"} -{"Time":"2024-08-15T13:38:08.874753-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 1, \"l\": 1}\n"} -{"Time":"2024-08-15T13:38:08.874832-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.865-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.874837-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.865-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.8749-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.865-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.874907-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.865-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.875016-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.865-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.875023-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.865-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.87559-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.865-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAccount:0x275CcC34Cf98d5939BB20a4696B94cd057140367} {OffchainPublicKey:[175 87 104 79 88 88 68 27 124 250 180 253 12 226 247 243 9 164 124 78 102 76 9 185 87 98 0 151 200 9 6 14] OnchainPublicKey:[88 74 8 95 131 52 180 5 185 118 26 57 49 151 252 133 143 154 26 249] PeerID:12D3KooWHmm26BVPGRPyPNSo6x2ej5K7THDzi6T1mL9MtD3XCRvt TransmitAccount:0x2d4c45aD"} -{"Time":"2024-08-15T13:38:08.87625-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.866-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"config\": {\"ConfigDigest\":\"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0x275CcC34Cf98d5939BB20a4696B94cd057140367\",\"0x2d4c45aD58b3d177c0de811aFD033aAAAfC54419\",\"0xFf56Dd72Ffd72B9D2983e43316e8615Abc2d17Ef\",\"0xC8a753F6261549710d58dd22AbACA511969633D4\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfT"} -{"Time":"2024-08-15T13:38:08.877512-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 2}\n"} -{"Time":"2024-08-15T13:38:08.877611-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.877619-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 2, \"proto\": \"transmission\"}\n"} -{"Time":"2024-08-15T13:38:08.877626-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/load_from_database.go:21\tloadConfigFromDatabase: Database.ReadConfig returned nil, no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.877687-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:105\trunWithContractConfig: found no configuration to restore\t{\"version\": \"unset@unset\"}\n"} -{"Time":"2024-08-15T13:38:08.877694-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/track_config.go:64\tTrackConfig: returning config\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.877784-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:73\trunWithContractConfig: switching between configs\t{\"version\": \"unset@unset\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\"}\n"} -{"Time":"2024-08-15T13:38:08.877791-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"proto\": \"repatt\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 2}\n"} -{"Time":"2024-08-15T13:38:08.877852-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:114\trunWithContractConfig: winding down old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.877859-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:120\trunWithContractConfig: closed old configuration\t{\"version\": \"unset@unset\", \"oldConfigDigest\": \"0000000000000000000000000000000000000000000000000000000000000000\", \"newConfigDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.877935-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 2, \"proto\": \"pacemaker\"}\n"} -{"Time":"2024-08-15T13:38:08.878303-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"oid\": 2}\n"} -{"Time":"2024-08-15T13:38:08.878374-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"epoch\": 1, \"oid\": 2}\n"} -{"Time":"2024-08-15T13:38:08.878504-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.868-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 1, \"l\": 2, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:08.8787-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.868-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:132\tOracle: running\t{\"version\": \"unset@unset\", \"localConfig\": \"{BlockchainTimeout:10s ContractConfigConfirmations:1 SkipContractConfigConfirmations:true ContractConfigTrackerPollInterval:10s ContractTransmitterTransmitTimeout:10s DatabaseTimeout:10s MinOCR2MaxDurationQuery:1s DevelopmentMode:false}\", \"publicConfig\": \"{DeltaProgress:30s DeltaResend:10s DeltaInitial:20s DeltaRound:2s DeltaGrace:2s DeltaCertifiedCommitRequest:10s DeltaStage:10s RMax:3 S:[1 1 1 1] OracleIdentities:[{OffchainPublicKey:[219 102 26 112 216 145 162 178 219 228 223 80 86 239 43 8 165 75 7 211 177 243 249 234 184 118 199 183 127 33 112 20] OnchainPublicKey:[67 127 246 164 0 211 218 153 50 180 154 244 4 203 143 148 191 76 55 111] PeerID:12D3KooWFUWVTG7BKBv6ChxvWzvWvSGyM6nQdsNDiwLFdPP34ht2 TransmitAccount:0xe0F4a70361306085d2a61785B308e95d5ad06955} {OffchainPublicKey:[175 87 104 79 88 88 68 27"} -{"Time":"2024-08-15T13:38:08.8794-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.868-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tmanaged/run_with_contract_config.go:150\trunWithContractConfig: error writing new config to database\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"config\": {\"ConfigDigest\":\"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\",\"ConfigCount\":1,\"Signers\":[\"Q3/2pADT2pkytJr0BMuPlL9MN28=\",\"WEoIX4M0tAW5dho5MZf8hY+aGvk=\",\"8L302uNq8hrVgD1jNLYCqz4gnHs=\",\"aYmQ/W9LIYcQ7Qx43oBKfC7vEf0=\"],\"Transmitters\":[\"0xe0F4a70361306085d2a61785B308e95d5ad06955\",\"0x9946f887FA1da1c548A08f4aD95b0e440088F0aE\",\"0x4333763Dc844117F00C12174F88495eC03B5F189\",\"0xd3152E7f39637c9117662972d31899F3a213A0Cd\"],\"F\":1,\"OnchainConfig\":\"\",\"OffchainConfigVersion\":30,\"OffchainConfig\":\"yAGA2I7hb9ABgMivoCXYAYCo1rkH4AGAqNa5B+gBgMivoCXwAQP6AQQBAQEBggIg22YacNiRorLb5N9QVu8rCKVLB9Ox8/nquHbHt38hcBSCAiCvV2hPWFhEG3z6tP0M4vfzCaR8TmZMCblXYgCXyAkGDoICILUgfc3kU+nLDLfT"} -{"Time":"2024-08-15T13:38:08.879931-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.868-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:316\trestoreFromDatabase: successfully restored pacemaker state\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"state\": {\"Epoch\":0,\"HighestSentNewEpochWish\":0}}\n"} -{"Time":"2024-08-15T13:38:08.880682-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.873-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/oracle.go:339\trestoreFromDatabase: did not find cert, starting at genesis\t{\"version\": \"unset@unset\", \"oid\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.880689-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.873-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:72\tTransmission: running\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"transmission\"}\n"} -{"Time":"2024-08-15T13:38:08.880781-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.873-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/pacemaker.go:128\tPacemaker: running\t{\"version\": \"unset@unset\", \"proto\": \"pacemaker\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3}\n"} -{"Time":"2024-08-15T13:38:08.880846-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.873-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/report_attestation.go:91\tReportAttestation: running\t{\"version\": \"unset@unset\", \"proto\": \"repatt\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3}\n"} -{"Time":"2024-08-15T13:38:08.880936-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:147\tOutcomeGeneration: running\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"outgen\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:08.880984-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"epoch\": 1}\n"} -{"Time":"2024-08-15T13:38:08.881075-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:08.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 1}\n"} -{"Time":"2024-08-15T13:38:16.975306-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.973-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"l\": 1, \"contributors\": \"AQMC\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 1}\n"} -{"Time":"2024-08-15T13:38:16.975729-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.973-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 1, \"l\": 2, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"contributors\": \"AQID\"}\n"} -{"Time":"2024-08-15T13:38:16.975887-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.974-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"l\": 1, \"contributors\": \"AQMC\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 1}\n"} -{"Time":"2024-08-15T13:38:16.976532-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.974-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"round\": 1, \"seqNr\": 1, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"e\": 1, \"l\": 2}\n"} -{"Time":"2024-08-15T13:38:16.977439-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"seqNr\": 1, \"round\": 1, \"oid\": 1, \"proto\": \"outgen\", \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 909606746561742123\", \"e\": 1, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:16.978449-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 1, \"l\": 2, \"seqNr\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"round\": 1}\n"} -{"Time":"2024-08-15T13:38:16.97943-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"seqNr\": 1, \"round\": 1, \"l\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"e\": 1}\n"} -{"Time":"2024-08-15T13:38:16.980283-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 1, \"seqNr\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 909606746561742123\", \"round\": 1, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2}\n"} -{"Time":"2024-08-15T13:38:16.981136-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"e\": 1, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"seqNr\": 1, \"round\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 909606746561742123\", \"oid\": 3, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:38:16.982146-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"oid\": 3, \"e\": 1, \"l\": 2, \"seqNr\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"round\": 1, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:16.982908-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"seqNr\": 1, \"round\": 1, \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\", \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 1, \"l\": 1}\n"} -{"Time":"2024-08-15T13:38:16.983761-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:16.975-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/common.go:40\tcall to ReportingPlugin.Observation errored\t{\"version\": \"unset@unset\", \"oid\": 2, \"e\": 1, \"l\": 1, \"round\": 1, \"seqNr\": 1, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"error\": \"observe latest committed sequence numbers: get next seq nums: minSeqNr not found for chain 789068866484373046\"}\n"} -{"Time":"2024-08-15T13:38:38.829271-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.829-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 3, \"e\": 1, \"l\": 2, \"epoch\": 2, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:38.829337-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.829-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"e\": 2, \"l\": 1, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3}\n"} -{"Time":"2024-08-15T13:38:38.829366-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.829-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 1, \"l\": 2, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"epoch\": 2}\n"} -{"Time":"2024-08-15T13:38:38.829399-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.829-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"e\": 2, \"l\": 1, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"oid\": 2}\n"} -{"Time":"2024-08-15T13:38:38.829734-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.829-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 1, \"l\": 2, \"epoch\": 2}\n"} -{"Time":"2024-08-15T13:38:38.829784-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.829-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 2, \"l\": 1, \"oid\": 1, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:38:38.830211-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.830-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"e\": 2, \"l\": 1, \"oid\": 1, \"contributors\": \"AgMB\", \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:38.837477-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.837-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 1, \"l\": 1}\n"} -{"Time":"2024-08-15T13:38:38.837562-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.837-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 2, \"l\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:38:38.837691-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.837-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 1, \"l\": 1, \"epoch\": 2}\n"} -{"Time":"2024-08-15T13:38:38.837739-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.837-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 2, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 1, \"l\": 1}\n"} -{"Time":"2024-08-15T13:38:38.837796-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.837-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"oid\": 2, \"e\": 2, \"l\": 2, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:38:38.837874-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.837-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 2, \"l\": 2, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:38:38.838242-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.838-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"contributors\": \"AQID\", \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 2, \"l\": 2}\n"} -{"Time":"2024-08-15T13:38:38.867835-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 1, \"l\": 1, \"epoch\": 2}\n"} -{"Time":"2024-08-15T13:38:38.867861-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"epoch\": 2, \"e\": 1, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:38.867883-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 2, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"e\": 2}\n"} -{"Time":"2024-08-15T13:38:38.867892-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 2, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 2, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:38:38.868083-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.868-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 1, \"l\": 1, \"epoch\": 2}\n"} -{"Time":"2024-08-15T13:38:38.868131-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.868-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 2, \"l\": 2, \"highestCertifiedTimestamp\": {\"SeqNr\":0,\"CommittedElsePrepared\":true}, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2}\n"} -{"Time":"2024-08-15T13:38:38.868475-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:38.868-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"contributors\": \"AQMC\", \"e\": 2, \"l\": 2, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2}\n"} -{"Time":"2024-08-15T13:38:42.85283-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:42.852-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"seqNr\": 1, \"index\": 0}\n"} -{"Time":"2024-08-15T13:38:42.855664-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:42.855-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 1, \"index\": 0}\n"} -{"Time":"2024-08-15T13:38:44.863197-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:44.863-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"seqNr\": 2, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"proto\": \"transmission\"}\n"} -{"Time":"2024-08-15T13:38:44.863505-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:44.863-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 2, \"index\": 0, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:44.886998-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:44.886-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"transmission\", \"seqNr\": 2, \"index\": 0}\n"} -{"Time":"2024-08-15T13:38:46.866642-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"e\": 2, \"epoch\": 3, \"l\": 1, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3}\n"} -{"Time":"2024-08-15T13:38:46.866709-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}, \"e\": 3, \"l\": 0}\n"} -{"Time":"2024-08-15T13:38:46.866924-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 2, \"l\": 2, \"epoch\": 3}\n"} -{"Time":"2024-08-15T13:38:46.866942-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 2, \"l\": 1, \"epoch\": 3}\n"} -{"Time":"2024-08-15T13:38:46.866954-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"e\": 2, \"l\": 1, \"epoch\": 3}\n"} -{"Time":"2024-08-15T13:38:46.867052-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"epoch\": 3, \"e\": 2, \"l\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:38:46.867068-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 3, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}, \"e\": 3}\n"} -{"Time":"2024-08-15T13:38:46.867318-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 3, \"l\": 0, \"oid\": 1, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:38:46.867332-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 3, \"l\": 0, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:46.867449-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 3, \"e\": 2, \"l\": 2, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"epoch\": 3}\n"} -{"Time":"2024-08-15T13:38:46.867574-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 3, \"l\": 3, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:38:46.867594-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.867-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 3, \"l\": 3, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3}\n"} -{"Time":"2024-08-15T13:38:46.868212-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.868-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"l\": 3, \"contributors\": \"AwIB\", \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 3}\n"} -{"Time":"2024-08-15T13:38:46.871518-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.871-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 3, \"index\": 0}\n"} -{"Time":"2024-08-15T13:38:46.872912-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.872-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"seqNr\": 3, \"index\": 0, \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:46.889965-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.889-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 2, \"epoch\": 3, \"l\": 2}\n"} -{"Time":"2024-08-15T13:38:46.890025-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.889-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 3, \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:38:46.890202-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.890-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 2, \"l\": 2, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"epoch\": 3}\n"} -{"Time":"2024-08-15T13:38:46.890219-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.890-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"epoch\": 3, \"e\": 2, \"l\": 2, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:38:46.89025-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.890-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 3, \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:38:46.890305-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.890-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 3, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}, \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:38:46.891196-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:46.891-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"contributors\": \"AgED\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 3}\n"} -{"Time":"2024-08-15T13:38:50.88228-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:50.882-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 4, \"index\": 0}\n"} -{"Time":"2024-08-15T13:38:50.902274-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:50.902-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 4, \"index\": 0}\n"} -{"Time":"2024-08-15T13:38:52.855356-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:52.855-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"seqNr\": 1, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:38:52.885613-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:52.885-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"seqNr\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"transmission\", \"index\": 0}\n"} -{"Time":"2024-08-15T13:38:52.908161-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:52.908-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"seqNr\": 5, \"index\": 0}\n"} -{"Time":"2024-08-15T13:38:54.862511-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.862-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 2, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:54.887049-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.887-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"seqNr\": 2, \"index\": 0, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3}\n"} -{"Time":"2024-08-15T13:38:54.893256-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.893-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"l\": 3, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 3, \"epoch\": 4}\n"} -{"Time":"2024-08-15T13:38:54.893293-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.893-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 4, \"l\": 2, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:38:54.89375-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.893-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 3, \"l\": 3, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"epoch\": 4}\n"} -{"Time":"2024-08-15T13:38:54.893763-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.893-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 3, \"l\": 3, \"proto\": \"outgen\", \"epoch\": 4}\n"} -{"Time":"2024-08-15T13:38:54.893784-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.893-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 4, \"l\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:38:54.893811-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.893-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 4, \"l\": 2}\n"} -{"Time":"2024-08-15T13:38:54.894452-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.894-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"oid\": 2, \"e\": 4, \"contributors\": \"AgED\", \"l\": 2, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:38:54.909876-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.909-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 3, \"l\": 3, \"epoch\": 4, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:38:54.909908-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.909-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 4, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:38:54.910091-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.910-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 3, \"l\": 3, \"epoch\": 4}\n"} -{"Time":"2024-08-15T13:38:54.910128-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.910-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 3, \"l\": 3, \"epoch\": 4}\n"} -{"Time":"2024-08-15T13:38:54.910204-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.910-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 4, \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}, \"l\": 1}\n"} -{"Time":"2024-08-15T13:38:54.910215-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.910-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 4, \"l\": 1, \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:38:54.910809-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.910-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"contributors\": \"AwEC\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 4, \"l\": 1}\n"} -{"Time":"2024-08-15T13:38:54.912807-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:54.912-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"transmission\", \"index\": 0, \"seqNr\": 6}\n"} -{"Time":"2024-08-15T13:38:56.873093-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:56.873-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 3, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:38:56.873504-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:56.873-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 3, \"index\": 0}\n"} -{"Time":"2024-08-15T13:38:56.894485-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:56.894-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"transmission\", \"index\": 0, \"seqNr\": 3}\n"} -{"Time":"2024-08-15T13:38:58.902813-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:38:58.902-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 3, \"seqNr\": 7, \"index\": 0, \"proto\": \"transmission\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:39:00.906971-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:00.906-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 4, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:00.912448-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:00.912-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"index\": 0, \"seqNr\": 8, \"proto\": \"transmission\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:39:00.929257-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:00.929-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"seqNr\": 8}\n"} -{"Time":"2024-08-15T13:39:02.853417-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.853-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"seqNr\": 1, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 2, \"proto\": \"transmission\"}\n"} -{"Time":"2024-08-15T13:39:02.853811-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.853-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"seqNr\": 1, \"index\": 0, \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:39:02.882123-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.882-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"seqNr\": 1, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:02.890444-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.890-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 5, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:02.914213-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.914-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 5, \"proto\": \"outgen\", \"e\": 4, \"l\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:39:02.914231-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.914-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"e\": 4, \"epoch\": 5, \"l\": 2, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2}\n"} -{"Time":"2024-08-15T13:39:02.914261-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.914-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 3, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}, \"e\": 5}\n"} -{"Time":"2024-08-15T13:39:02.914285-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.914-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}, \"l\": 3, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 5}\n"} -{"Time":"2024-08-15T13:39:02.914421-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.914-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 3, \"e\": 4, \"l\": 2, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"epoch\": 5}\n"} -{"Time":"2024-08-15T13:39:02.914447-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.914-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 3, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 5, \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:39:02.915125-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.915-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"contributors\": \"AQID\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"e\": 5, \"l\": 3}\n"} -{"Time":"2024-08-15T13:39:02.9169-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.916-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"transmission\", \"index\": 0, \"seqNr\": 9}\n"} -{"Time":"2024-08-15T13:39:02.930677-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.930-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"epoch\": 5, \"e\": 4, \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:39:02.930714-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.930-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}, \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"outgen\", \"e\": 5}\n"} -{"Time":"2024-08-15T13:39:02.930943-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.930-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 4, \"l\": 1, \"epoch\": 5}\n"} -{"Time":"2024-08-15T13:39:02.931038-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.930-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"l\": 1, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 4, \"epoch\": 5}\n"} -{"Time":"2024-08-15T13:39:02.931056-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.931-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 3, \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 5}\n"} -{"Time":"2024-08-15T13:39:02.931082-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.930-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}, \"e\": 5, \"l\": 3}\n"} -{"Time":"2024-08-15T13:39:02.931685-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.931-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"contributors\": \"AQMC\", \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 5}\n"} -{"Time":"2024-08-15T13:39:02.93366-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:02.933-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"seqNr\": 9, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3}\n"} -{"Time":"2024-08-15T13:39:04.863644-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:04.863-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"seqNr\": 2, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1, \"proto\": \"transmission\"}\n"} -{"Time":"2024-08-15T13:39:04.864258-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:04.864-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 2, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:04.888498-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:04.888-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"seqNr\": 2, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:04.896203-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:04.896-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 6, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:04.914492-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:04.914-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 6}\n"} -{"Time":"2024-08-15T13:39:06.874323-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"oid\": 3, \"epoch\": 4, \"e\": 3, \"l\": 0, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:39:06.874365-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 4, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 3, \"l\": 0, \"oid\": 1, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:39:06.874401-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 3, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"e\": 4}\n"} -{"Time":"2024-08-15T13:39:06.874512-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 4, \"l\": 3, \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}, \"oid\": 1, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:39:06.874813-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"l\": 0, \"epoch\": 4, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"e\": 3}\n"} -{"Time":"2024-08-15T13:39:06.874831-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.874-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 4, \"l\": 3, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":3,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:39:06.875721-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.875-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1, \"seqNr\": 3, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:06.875828-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.875-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"contributors\": \"AwEC\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"e\": 4, \"l\": 3}\n"} -{"Time":"2024-08-15T13:39:06.895283-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.895-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"seqNr\": 3, \"index\": 0, \"proto\": \"transmission\"}\n"} -{"Time":"2024-08-15T13:39:06.944819-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:06.944-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"seqNr\": 10, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:08.904603-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:08.904-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"seqNr\": 7, \"index\": 0, \"proto\": \"transmission\", \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:39:08.918907-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:08.918-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"seqNr\": 7, \"index\": 0, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"transmission\"}\n"} -{"Time":"2024-08-15T13:39:08.930767-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:08.930-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 11, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:10.883603-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.883-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 4, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:10.890226-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.889-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"seqNr\": 4, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:10.902255-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.902-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"transmission\", \"seqNr\": 4, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:10.913771-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.913-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"oid\": 2, \"seqNr\": 8, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:10.933484-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.933-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 6, \"proto\": \"outgen\", \"e\": 5, \"l\": 3, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:39:10.933532-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.933-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 0, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 1, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":12,\"CommittedElsePrepared\":true}, \"e\": 6}\n"} -{"Time":"2024-08-15T13:39:10.933713-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.933-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"l\": 3, \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"e\": 5, \"epoch\": 6}\n"} -{"Time":"2024-08-15T13:39:10.933741-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.933-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"epoch\": 6, \"e\": 5, \"l\": 3}\n"} -{"Time":"2024-08-15T13:39:10.93376-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.933-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 2, \"highestCertifiedTimestamp\": {\"SeqNr\":12,\"CommittedElsePrepared\":true}, \"e\": 6, \"l\": 0, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:39:10.933834-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.933-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"highestCertifiedTimestamp\": {\"SeqNr\":12,\"CommittedElsePrepared\":true}, \"e\": 6, \"l\": 0, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:39:10.949377-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.949-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 6, \"oid\": 1, \"proto\": \"outgen\", \"e\": 5, \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:39:10.949435-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.949-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"highestCertifiedTimestamp\": {\"SeqNr\":12,\"CommittedElsePrepared\":true}, \"oid\": 1, \"proto\": \"outgen\", \"e\": 6, \"l\": 0, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:39:10.94955-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.949-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 6, \"l\": 3, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"e\": 5}\n"} -{"Time":"2024-08-15T13:39:10.949564-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.949-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 5, \"epoch\": 6, \"l\": 3}\n"} -{"Time":"2024-08-15T13:39:10.949589-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.949-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"e\": 6, \"l\": 0, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":12,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:39:10.949601-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.949-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 0, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"outgen\", \"e\": 6, \"highestCertifiedTimestamp\": {\"SeqNr\":12,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:39:10.951806-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:10.951-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 12, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:12.860192-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:12.860-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 1, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:12.880152-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:12.880-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 1, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:12.891938-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:12.891-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"transmission\", \"index\": 0, \"seqNr\": 5}\n"} -{"Time":"2024-08-15T13:39:12.897267-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:12.896-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 5, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:39:12.908704-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:12.908-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 5, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:14.866745-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.866-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"seqNr\": 2, \"index\": 0, \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:39:14.89977-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.899-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 6, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:14.900157-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.900-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 5, \"proto\": \"outgen\", \"e\": 4, \"l\": 3, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:39:14.900205-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.900-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"epoch\": 5, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 4, \"l\": 3, \"oid\": 1}\n"} -{"Time":"2024-08-15T13:39:14.900217-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.900-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}, \"e\": 5, \"l\": 2, \"oid\": 2}\n"} -{"Time":"2024-08-15T13:39:14.900228-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.900-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"e\": 4, \"l\": 3, \"proto\": \"outgen\", \"epoch\": 5}\n"} -{"Time":"2024-08-15T13:39:14.900406-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.900-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 5, \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}, \"l\": 2, \"oid\": 1, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:39:14.900428-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.900-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"e\": 5, \"l\": 2, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":6,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:39:14.901305-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.901-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"e\": 5, \"l\": 2, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"contributors\": \"AgED\"}\n"} -{"Time":"2024-08-15T13:39:14.913885-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:14.913-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1, \"proto\": \"transmission\", \"seqNr\": 6, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:16.872956-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:16.872-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"seqNr\": 3, \"index\": 0, \"proto\": \"transmission\"}\n"} -{"Time":"2024-08-15T13:39:16.89373-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:16.893-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"seqNr\": 3, \"oid\": 3, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\"}\n"} -{"Time":"2024-08-15T13:39:16.93198-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:16.931-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"oid\": 1, \"index\": 0, \"seqNr\": 10}\n"} -{"Time":"2024-08-15T13:39:18.905361-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:18.905-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"index\": 0, \"seqNr\": 7, \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:39:18.910478-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:18.910-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1, \"proto\": \"transmission\", \"seqNr\": 7}\n"} -{"Time":"2024-08-15T13:39:18.918456-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:18.918-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"seqNr\": 7, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:18.931119-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:18.931-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"index\": 0, \"seqNr\": 11}\n"} -{"Time":"2024-08-15T13:39:18.94776-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:18.947-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 3, \"seqNr\": 11}\n"} -{"Time":"2024-08-15T13:39:20.888304-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:20.888-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 4, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:20.892188-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:20.892-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"seqNr\": 4, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:20.912881-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:20.912-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 8}\n"} -{"Time":"2024-08-15T13:39:20.919302-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:20.919-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 1, \"seqNr\": 8, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:20.928226-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:20.928-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"seqNr\": 8, \"index\": 0, \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 1}\n"} -{"Time":"2024-08-15T13:39:20.936794-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:20.936-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"index\": 0, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 12}\n"} -{"Time":"2024-08-15T13:39:22.895715-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.895-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 1, \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"seqNr\": 5, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:22.89901-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.898-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 3, \"seqNr\": 5, \"index\": 0, \"proto\": \"transmission\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:39:22.913542-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.913-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"transmission\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"index\": 0, \"seqNr\": 5}\n"} -{"Time":"2024-08-15T13:39:22.918872-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.918-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\", \"proto\": \"transmission\", \"oid\": 2, \"seqNr\": 9, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:22.921046-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.921-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"epoch\": 6, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 5, \"l\": 2, \"oid\": 1, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:39:22.921129-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.921-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 6, \"l\": 1, \"oid\": 1, \"proto\": \"outgen\", \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:39:22.921246-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.921-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"e\": 5, \"l\": 2, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"epoch\": 6, \"proto\": \"outgen\"}\n"} -{"Time":"2024-08-15T13:39:22.921314-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.921-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 1, \"oid\": 2, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"proto\": \"outgen\", \"e\": 6, \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:39:22.921333-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.921-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:274\tstarting new epoch\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"epoch\": 6, \"e\": 5, \"l\": 2}\n"} -{"Time":"2024-08-15T13:39:22.921405-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.921-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation.go:320\tsending MessageEpochStartRequest to leader\t{\"version\": \"unset@unset\", \"l\": 1, \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"e\": 6, \"highestCertifiedTimestamp\": {\"SeqNr\":9,\"CommittedElsePrepared\":true}}\n"} -{"Time":"2024-08-15T13:39:22.922105-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.922-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_leader.go:156\tbroadcasting MessageEpochStart\t{\"version\": \"unset@unset\", \"proto\": \"outgen\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"e\": 6, \"l\": 1, \"oid\": 1, \"contributors\": \"AwEC\"}\n"} -{"Time":"2024-08-15T13:39:22.923686-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.923-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 9, \"index\": 0, \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\"}\n"} -{"Time":"2024-08-15T13:39:22.932835-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:22.932-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2, \"proto\": \"transmission\", \"seqNr\": 9, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:24.898191-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:24.898-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"seqNr\": 6, \"index\": 0, \"oid\": 3, \"proto\": \"transmission\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:39:24.903139-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:24.903-0400\tINFO\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/transmission.go:214\t🚀 successfully invoked ContractTransmitter.Transmit\t{\"version\": \"unset@unset\", \"configDigest\": \"000ac65764e6d50aec7b6bec8e5482fc9ce2be63fc0691b78658fa60a1ad6409\", \"oid\": 3, \"proto\": \"transmission\", \"seqNr\": 6, \"index\": 0}\n"} -{"Time":"2024-08-15T13:39:26.925193-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:26.925-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_follower.go:749\terror persisting cert to database, cannot safely continue current round\t{\"version\": \"unset@unset\", \"seqNr\": 10, \"error\": \"WriteProtocolState failed for job 1: sql: database is closed\", \"errorVerbose\": \"sql: database is closed\\nWriteProtocolState failed for job 1\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteProtocolState\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:376\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/shim.(*SerializingOCR3Database).WriteCert\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/shim/ocr3_database.go:91\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/ocr3/protocol.(*outcomeGenerationState[...]).persistCert\\n\\t/Users/"} -{"Time":"2024-08-15T13:39:26.925893-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:26.925-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000002.0x4ea2f433a45c26d38f7b33f318dd73b1b17bb63d\tprotocol/transmission.go:208\tContractTransmitter.Transmit error\t{\"version\": \"unset@unset\", \"oid\": 3, \"proto\": \"transmission\", \"error\": \"failed to submit transaction thru chainwriter: Failed to search for transaction with IdempotencyKey: sql: database is closed; failed to create tx\", \"configDigest\": \"000a450a0bc449dbce75fe067c38a89bc1fc610a03ef84febcd7aa9ddfa60143\"}\n"} -{"Time":"2024-08-15T13:39:26.926151-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:26.925-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_follower.go:749\terror persisting cert to database, cannot safely continue current round\t{\"version\": \"unset@unset\", \"seqNr\": 10, \"error\": \"WriteProtocolState failed for job 1: sql: database is closed\", \"errorVerbose\": \"sql: database is closed\\nWriteProtocolState failed for job 1\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteProtocolState\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:376\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/shim.(*SerializingOCR3Database).WriteCert\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/shim/ocr3_database.go:91\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/ocr3/protocol.(*outcomeGenerationState[...]).persistCert\\n\\t/Users/"} -{"Time":"2024-08-15T13:39:26.926766-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:26.925-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000001.0x43085c6e72bd094113dc71d9e07a2fc3b86dd85d\tprotocol/outcome_generation_follower.go:749\terror persisting cert to database, cannot safely continue current round\t{\"version\": \"unset@unset\", \"oid\": 1, \"proto\": \"outgen\", \"seqNr\": 10, \"error\": \"WriteProtocolState failed for job 1: sql: database is closed\", \"errorVerbose\": \"sql: database is closed\\nWriteProtocolState failed for job 1\\ngithub.com/smartcontractkit/chainlink/v2/core/services/ocr2.(*db).WriteProtocolState\\n\\t/Users/connorstein/go/src/github.com/smartcontractkit/ccip/core/services/ocr2/database.go:376\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/shim.(*SerializingOCR3Database).WriteCert\\n\\t/Users/connorstein/go/pkg/mod/github.com/smartcontractkit/libocr@v0.0.0-20240717100443-f6226e09bee7/offchainreporting2plus/internal/shim/ocr3_database.go:91\\ngithub.com/smartcontractkit/libocr/offchainreporting2plus/internal/ocr3/protocol.(*outcomeGenerationState"} -{"Time":"2024-08-15T13:39:26.940926-04:00","Action":"output","Test":"Test0001_InitialDeploy","Output":" logger.go:146: 2024-08-15T13:39:26.940-0400\tERROR\tCCIPCCIPCommitOCR3.evm.90000003.0x9f857c139c4bc8ca44906b033e5344ad2aa6773e\tprotocol/transmission.go:208\tContractTransmitter.Transmit error\t{\"version\": \"unset@unset\", \"proto\": \"transmission\", \"error\": \"failed to submit transaction thru chainwriter: Failed to search for transaction with IdempotencyKey: sql: database is closed; failed to create tx\", \"configDigest\": \"000a530e36f1ddbc37909eb6453bcee99594faceaa301a0ca7f74ee701320d0b\", \"oid\": 2}\n"} diff --git a/integration-tests/deployment/ccip/deploy.go b/integration-tests/deployment/ccip/deploy.go index 7491fe19ff..bd4c2c4331 100644 --- a/integration-tests/deployment/ccip/deploy.go +++ b/integration-tests/deployment/ccip/deploy.go @@ -2,14 +2,13 @@ package ccipdeployment import ( "encoding/hex" - "fmt" "math/big" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/rpc" owner_helpers "github.com/smartcontractkit/ccip-owner-contracts/gethwrappers" + deployment2 "github.com/smartcontractkit/ccip/integration-tests/deployment" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/ccip_config" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/maybe_revert_message_receiver" @@ -120,7 +119,7 @@ type DeployCCIPContractConfig struct { // Deployment produces an address book of everything it deployed. func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) (deployment.AddressBook, error) { ab := deployment.NewMemoryAddressBook() - nodes, err := NodeInfo(e.NodeIDs, e.Offchain) + nodes, err := deployment2.NodeInfo(e.NodeIDs, e.Offchain) if err != nil { e.Logger.Errorw("Failed to get node info", "err", err) return ab, err @@ -411,7 +410,7 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( // TODO: We enable the deployer initially to set prices AddedCallers: []common.Address{offRamp.Address, chain.DeployerKey.From}, }) - if err := ConfirmIfNoError(chain, tx, err); err != nil { + if err := deployment.ConfirmIfNoError(chain, tx, err); err != nil { e.Logger.Errorw("Failed to confirm price registry authorized caller update", "err", err) return ab, err } @@ -419,7 +418,7 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( tx, err = nonceManager.Contract.ApplyAuthorizedCallerUpdates(chain.DeployerKey, nonce_manager.AuthorizedCallersAuthorizedCallerArgs{ AddedCallers: []common.Address{offRamp.Address, onRamp.Address}, }) - if err := ConfirmIfNoError(chain, tx, err); err != nil { + if err := deployment.ConfirmIfNoError(chain, tx, err); err != nil { e.Logger.Errorw("Failed to update nonce manager with ramps", "err", err) return ab, err } @@ -456,32 +455,6 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( return ab, nil } -func MaybeDataErr(err error) string { - d, ok := err.(rpc.DataError) - if ok { - return d.ErrorData().(string) - } - return "" -} - -func ConfirmIfNoError(chain deployment.Chain, tx *types.Transaction, err error) error { - if err != nil { - d, ok := err.(rpc.DataError) - if ok { - fmt.Println("Got Data Error", d.ErrorData()) - } - return err - } - return chain.Confirm(tx.Hash()) -} -func uBigInt(i uint64) *big.Int { - return new(big.Int).SetUint64(i) -} - -func e18Mult(amount uint64) *big.Int { - return new(big.Int).Mul(uBigInt(amount), uBigInt(1e18)) -} - func AddLane(e deployment.Environment, state CCIPOnChainState, from, to uint64) error { // TODO: Batch tx, err := state.Routers[from].ApplyRampUpdates(e.Chains[from].DeployerKey, []router.RouterOnRamp{ @@ -490,7 +463,7 @@ func AddLane(e deployment.Environment, state CCIPOnChainState, from, to uint64) OnRamp: state.EvmOnRampsV160[from].Address(), }, }, []router.RouterOffRamp{}, []router.RouterOffRamp{}) - if err := ConfirmIfNoError(e.Chains[from], tx, err); err != nil { + if err := deployment.ConfirmIfNoError(e.Chains[from], tx, err); err != nil { return err } tx, err = state.EvmOnRampsV160[from].ApplyDestChainConfigUpdates(e.Chains[from].DeployerKey, @@ -500,7 +473,7 @@ func AddLane(e deployment.Environment, state CCIPOnChainState, from, to uint64) Router: state.Routers[from].Address(), }, }) - if err := ConfirmIfNoError(e.Chains[from], tx, err); err != nil { + if err := deployment.ConfirmIfNoError(e.Chains[from], tx, err); err != nil { return err } @@ -509,11 +482,11 @@ func AddLane(e deployment.Environment, state CCIPOnChainState, from, to uint64) TokenPriceUpdates: []price_registry.InternalTokenPriceUpdate{ { SourceToken: state.LinkTokens[from].Address(), - UsdPerToken: e18Mult(20), + UsdPerToken: deployment2.E18Mult(20), }, { SourceToken: state.Weth9s[from].Address(), - UsdPerToken: e18Mult(4000), + UsdPerToken: deployment2.E18Mult(4000), }, }, GasPriceUpdates: []price_registry.InternalGasPriceUpdate{ @@ -522,7 +495,7 @@ func AddLane(e deployment.Environment, state CCIPOnChainState, from, to uint64) UsdPerUnitGas: big.NewInt(2e12), }, }}) - if err := ConfirmIfNoError(e.Chains[from], tx, err); err != nil { + if err := deployment.ConfirmIfNoError(e.Chains[from], tx, err); err != nil { return err } @@ -534,7 +507,7 @@ func AddLane(e deployment.Environment, state CCIPOnChainState, from, to uint64) DestChainConfig: defaultPriceRegistryDestChainConfig(), }, }) - if err := ConfirmIfNoError(e.Chains[from], tx, err); err != nil { + if err := deployment.ConfirmIfNoError(e.Chains[from], tx, err); err != nil { return err } @@ -547,7 +520,7 @@ func AddLane(e deployment.Environment, state CCIPOnChainState, from, to uint64) OnRamp: common.LeftPadBytes(state.EvmOnRampsV160[from].Address().Bytes(), 32), }, }) - if err := ConfirmIfNoError(e.Chains[to], tx, err); err != nil { + if err := deployment.ConfirmIfNoError(e.Chains[to], tx, err); err != nil { return err } tx, err = state.Routers[to].ApplyRampUpdates(e.Chains[to].DeployerKey, []router.RouterOnRamp{}, []router.RouterOffRamp{}, []router.RouterOffRamp{ @@ -556,7 +529,7 @@ func AddLane(e deployment.Environment, state CCIPOnChainState, from, to uint64) OffRamp: state.EvmOffRampsV160[to].Address(), }, }) - if err := ConfirmIfNoError(e.Chains[to], tx, err); err != nil { + if err := deployment.ConfirmIfNoError(e.Chains[to], tx, err); err != nil { return err } return nil diff --git a/integration-tests/deployment/ccip/deploy_home_chain.go b/integration-tests/deployment/ccip/deploy_home_chain.go index 3f194ecbf2..6b868994af 100644 --- a/integration-tests/deployment/ccip/deploy_home_chain.go +++ b/integration-tests/deployment/ccip/deploy_home_chain.go @@ -11,6 +11,7 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/rpc" + deployment2 "github.com/smartcontractkit/ccip/integration-tests/deployment" confighelper2 "github.com/smartcontractkit/libocr/offchainreporting2plus/confighelper" "github.com/smartcontractkit/libocr/offchainreporting2plus/ocr3confighelper" @@ -98,7 +99,7 @@ func DeployCapReg(lggr logger.Logger, chains map[uint64]deployment.Chain, chainS ConfigurationContract: ccipConfig.Address, }, }) - if err := ConfirmIfNoError(chain, tx, err); err != nil { + if err := deployment.ConfirmIfNoError(chain, tx, err); err != nil { lggr.Errorw("Failed to add capabilities", "err", err) return ab, err } @@ -109,7 +110,7 @@ func DeployCapReg(lggr logger.Logger, chains map[uint64]deployment.Chain, chainS Name: "NodeOperator", }, }) - if err := ConfirmIfNoError(chain, tx, err); err != nil { + if err := deployment.ConfirmIfNoError(chain, tx, err); err != nil { lggr.Errorw("Failed to add node operators", "err", err) return ab, err } @@ -206,7 +207,7 @@ func AddDON( f uint8, bootstrapP2PID [32]byte, p2pIDs [][32]byte, - nodes []Node, + nodes []deployment2.Node, ) error { sortP2PIDS(p2pIDs) // Get OCR3 Config from helper @@ -214,7 +215,7 @@ func AddDON( var oracles []confighelper2.OracleIdentityExtra for _, node := range nodes { schedule = append(schedule, 1) - cfg := node.selToOCRConfig[dest.Selector] + cfg := node.SelToOCRConfig[dest.Selector] oracles = append(oracles, confighelper2.OracleIdentityExtra{ OracleIdentity: confighelper2.OracleIdentity{ OnchainPublicKey: cfg.OnchainPublicKey, @@ -326,7 +327,7 @@ func AddDON( Config: encodedConfigs, }, }, false, false, f) - if err := ConfirmIfNoError(home, tx, err); err != nil { + if err := deployment.ConfirmIfNoError(home, tx, err); err != nil { return err } @@ -387,7 +388,7 @@ func AddDON( //uni.backend.Commit() tx, err = offRamp.SetOCR3Configs(dest.DeployerKey, offrampOCR3Configs) - if err := ConfirmIfNoError(dest, tx, err); err != nil { + if err := deployment.ConfirmIfNoError(dest, tx, err); err != nil { return err } diff --git a/integration-tests/deployment/ccip/deploy_test.go b/integration-tests/deployment/ccip/deploy_test.go index 75810e6881..ed2378cef3 100644 --- a/integration-tests/deployment/ccip/deploy_test.go +++ b/integration-tests/deployment/ccip/deploy_test.go @@ -28,6 +28,7 @@ func TestDeployCCIPContracts(t *testing.T) { require.NoError(t, err) // Assert expect every deployed address to be in the address book. + // TODO: Add the rest of CCIPv2 representation b, err := json.MarshalIndent(snap, "", " ") require.NoError(t, err) fmt.Println(string(b)) @@ -35,7 +36,7 @@ func TestDeployCCIPContracts(t *testing.T) { func TestJobSpecGeneration(t *testing.T) { lggr := logger.TestLogger(t) - e := memory.NewMemoryEnvironment(t, lggr, memory.MemoryEnvironmentConfig{ + e := memory.NewMemoryEnvironment(t, lggr, zapcore.InfoLevel, memory.MemoryEnvironmentConfig{ Chains: 1, Nodes: 1, }) @@ -44,4 +45,5 @@ func TestJobSpecGeneration(t *testing.T) { for node, jb := range js { fmt.Println(node, jb) } + // TODO: Add job assertions } diff --git a/integration-tests/deployment/ccip/jobs.go b/integration-tests/deployment/ccip/jobs.go index e89f987d2c..f45fe4c553 100644 --- a/integration-tests/deployment/ccip/jobs.go +++ b/integration-tests/deployment/ccip/jobs.go @@ -3,125 +3,13 @@ package ccipdeployment import ( "context" "fmt" - "strconv" - - "github.com/ethereum/go-ethereum/common" - chainsel "github.com/smartcontractkit/chain-selectors" - ocrtypes "github.com/smartcontractkit/libocr/offchainreporting2/types" - "github.com/smartcontractkit/libocr/offchainreporting2plus/types" "github.com/smartcontractkit/chainlink/integration-tests/deployment" nodev1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/node/v1" - "github.com/smartcontractkit/chainlink/v2/core/services/keystore/keys/p2pkey" - "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/validate" "github.com/smartcontractkit/chainlink/v2/core/services/relay" ) -type OCRConfig struct { - OffchainPublicKey ocrtypes.OffchainPublicKey - // For EVM-chains, this an *address*. - OnchainPublicKey ocrtypes.OnchainPublicKey - PeerID p2pkey.PeerID - TransmitAccount ocrtypes.Account - ConfigEncryptionPublicKey types.ConfigEncryptionPublicKey - IsBootstrap bool - MultiAddr string // TODO: type -} - -type Nodes []Node - -func (n Nodes) PeerIDs(chainSel uint64) [][32]byte { - var peerIDs [][32]byte - for _, node := range n { - cfg := node.selToOCRConfig[chainSel] - // NOTE: Assume same peerID for all chains. - // Might make sense to change proto as peerID is 1-1 with node? - peerIDs = append(peerIDs, cfg.PeerID) - } - return peerIDs -} - -func (n Nodes) BootstrapPeerIDs(chainSel uint64) [][32]byte { - var peerIDs [][32]byte - for _, node := range n { - cfg := node.selToOCRConfig[chainSel] - if !cfg.IsBootstrap { - continue - } - peerIDs = append(peerIDs, cfg.PeerID) - } - return peerIDs -} - -// OffchainPublicKey types.OffchainPublicKey -// // For EVM-chains, this an *address*. -// OnchainPublicKey types.OnchainPublicKey -// PeerID string -// TransmitAccount types.Account -type Node struct { - selToOCRConfig map[uint64]OCRConfig -} - -func MustPeerIDFromString(s string) p2pkey.PeerID { - p := p2pkey.PeerID{} - if err := p.UnmarshalString(s); err != nil { - panic(err) - } - return p -} - -// Gathers all the node info through JD required to be able to set -// OCR config for example. -func NodeInfo(nodeIDs []string, oc deployment.OffchainClient) (Nodes, error) { - var nodes []Node - for _, node := range nodeIDs { - // TODO: Filter should accept multiple nodes - nodeChainConfigs, err := oc.ListNodeChainConfigs(context.Background(), &nodev1.ListNodeChainConfigsRequest{Filter: &nodev1.ListNodeChainConfigsRequest_Filter{ - NodeId: node, - }}) - if err != nil { - return nil, err - } - selToOCRConfig := make(map[uint64]OCRConfig) - for _, chainConfig := range nodeChainConfigs.ChainConfigs { - if chainConfig.Chain.Type == nodev1.ChainType_CHAIN_TYPE_SOLANA { - // Note supported for CCIP yet. - continue - } - evmChainID, err := strconv.Atoi(chainConfig.Chain.Id) - if err != nil { - return nil, err - } - sel, err := chainsel.SelectorFromChainId(uint64(evmChainID)) - if err != nil { - return nil, err - } - b := common.Hex2Bytes(chainConfig.Ocr2Config.OcrKeyBundle.OffchainPublicKey) - var opk ocrtypes.OffchainPublicKey - copy(opk[:], b) - - b = common.Hex2Bytes(chainConfig.Ocr2Config.OcrKeyBundle.ConfigPublicKey) - var cpk types.ConfigEncryptionPublicKey - copy(cpk[:], b) - - selToOCRConfig[sel] = OCRConfig{ - OffchainPublicKey: opk, - OnchainPublicKey: common.HexToAddress(chainConfig.Ocr2Config.OcrKeyBundle.OnchainSigningAddress).Bytes(), - PeerID: MustPeerIDFromString(chainConfig.Ocr2Config.P2PKeyBundle.PeerId), - TransmitAccount: ocrtypes.Account(chainConfig.AccountAddress), - ConfigEncryptionPublicKey: cpk, - IsBootstrap: chainConfig.Ocr2Config.IsBootstrap, - MultiAddr: chainConfig.Ocr2Config.Multiaddr, - } - } - nodes = append(nodes, Node{ - selToOCRConfig: selToOCRConfig, - }) - } - return nodes, nil -} - // In our case, the only address needed is the cap registry which is actually an env var. // and will pre-exist for our deployment. So the job specs only depend on the environment operators. func NewCCIPJobSpecs(nodeIds []string, oc deployment.OffchainClient) (map[string][]string, error) { diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index 121abddaf4..1701dd0465 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -147,7 +147,7 @@ func Test0001_InitialDeploy(t *testing.T) { } fee, err := state.Routers[sel].GetFee( &bind.CallOpts{Context: context.Background()}, dest, msg) - require.NoError(t, err, ccipdeployment.MaybeDataErr(err)) + require.NoError(t, err, deployment.MaybeDataErr(err)) tx, err := state.Weth9s[sel].Deposit(&bind.TransactOpts{ From: e.Chains[sel].DeployerKey.From, Signer: e.Chains[sel].DeployerKey.Signer, diff --git a/integration-tests/deployment/ccip/propose.go b/integration-tests/deployment/ccip/propose.go index 6121d8fbf0..0dc42acc87 100644 --- a/integration-tests/deployment/ccip/propose.go +++ b/integration-tests/deployment/ccip/propose.go @@ -13,6 +13,7 @@ import ( "github.com/smartcontractkit/chainlink/integration-tests/deployment" ) +// TODO: Pull up to deploy func SimTransactOpts() *bind.TransactOpts { return &bind.TransactOpts{Signer: func(address common.Address, transaction *types.Transaction) (*types.Transaction, error) { return transaction, nil diff --git a/integration-tests/deployment/environment.go b/integration-tests/deployment/environment.go index 67a1b6703a..6cff4296d2 100644 --- a/integration-tests/deployment/environment.go +++ b/integration-tests/deployment/environment.go @@ -1,11 +1,22 @@ package deployment import ( + "context" + "fmt" + "math/big" + "strconv" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/rpc" + "github.com/smartcontractkit/chain-selectors" + types2 "github.com/smartcontractkit/libocr/offchainreporting2/types" + types3 "github.com/smartcontractkit/libocr/offchainreporting2plus/types" jobv1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/job/v1" nodev1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/node/v1" + "github.com/smartcontractkit/chainlink/v2/core/services/keystore/keys/p2pkey" "github.com/smartcontractkit/chainlink-common/pkg/logger" ) @@ -46,3 +57,134 @@ func (e Environment) AllChainSelectors() []uint64 { } return selectors } + +func ConfirmIfNoError(chain Chain, tx *types.Transaction, err error) error { + if err != nil { + d, ok := err.(rpc.DataError) + if ok { + fmt.Println("Got Data Error", d.ErrorData()) + } + return err + } + return chain.Confirm(tx.Hash()) +} + +func MaybeDataErr(err error) string { + d, ok := err.(rpc.DataError) + if ok { + return d.ErrorData().(string) + } + return "" +} + +func UBigInt(i uint64) *big.Int { + return new(big.Int).SetUint64(i) +} + +func E18Mult(amount uint64) *big.Int { + return new(big.Int).Mul(UBigInt(amount), UBigInt(1e18)) +} + +type OCRConfig struct { + OffchainPublicKey types2.OffchainPublicKey + // For EVM-chains, this an *address*. + OnchainPublicKey types2.OnchainPublicKey + PeerID p2pkey.PeerID + TransmitAccount types2.Account + ConfigEncryptionPublicKey types3.ConfigEncryptionPublicKey + IsBootstrap bool + MultiAddr string // TODO: type +} + +type Nodes []Node + +func (n Nodes) PeerIDs(chainSel uint64) [][32]byte { + var peerIDs [][32]byte + for _, node := range n { + cfg := node.SelToOCRConfig[chainSel] + // NOTE: Assume same peerID for all chains. + // Might make sense to change proto as peerID is 1-1 with node? + peerIDs = append(peerIDs, cfg.PeerID) + } + return peerIDs +} + +func (n Nodes) BootstrapPeerIDs(chainSel uint64) [][32]byte { + var peerIDs [][32]byte + for _, node := range n { + cfg := node.SelToOCRConfig[chainSel] + if !cfg.IsBootstrap { + continue + } + peerIDs = append(peerIDs, cfg.PeerID) + } + return peerIDs +} + +// OffchainPublicKey types.OffchainPublicKey +// // For EVM-chains, this an *address*. +// OnchainPublicKey types.OnchainPublicKey +// PeerID string +// TransmitAccount types.Account +type Node struct { + SelToOCRConfig map[uint64]OCRConfig +} + +func MustPeerIDFromString(s string) p2pkey.PeerID { + p := p2pkey.PeerID{} + if err := p.UnmarshalString(s); err != nil { + panic(err) + } + return p +} + +// Gathers all the node info through JD required to be able to set +// OCR config for example. +func NodeInfo(nodeIDs []string, oc OffchainClient) (Nodes, error) { + var nodes []Node + for _, node := range nodeIDs { + // TODO: Filter should accept multiple nodes + nodeChainConfigs, err := oc.ListNodeChainConfigs(context.Background(), &nodev1.ListNodeChainConfigsRequest{Filter: &nodev1.ListNodeChainConfigsRequest_Filter{ + NodeId: node, + }}) + if err != nil { + return nil, err + } + selToOCRConfig := make(map[uint64]OCRConfig) + for _, chainConfig := range nodeChainConfigs.ChainConfigs { + if chainConfig.Chain.Type == nodev1.ChainType_CHAIN_TYPE_SOLANA { + // Note supported for CCIP yet. + continue + } + evmChainID, err := strconv.Atoi(chainConfig.Chain.Id) + if err != nil { + return nil, err + } + sel, err := chain_selectors.SelectorFromChainId(uint64(evmChainID)) + if err != nil { + return nil, err + } + b := common.Hex2Bytes(chainConfig.Ocr2Config.OcrKeyBundle.OffchainPublicKey) + var opk types2.OffchainPublicKey + copy(opk[:], b) + + b = common.Hex2Bytes(chainConfig.Ocr2Config.OcrKeyBundle.ConfigPublicKey) + var cpk types3.ConfigEncryptionPublicKey + copy(cpk[:], b) + + selToOCRConfig[sel] = OCRConfig{ + OffchainPublicKey: opk, + OnchainPublicKey: common.HexToAddress(chainConfig.Ocr2Config.OcrKeyBundle.OnchainSigningAddress).Bytes(), + PeerID: MustPeerIDFromString(chainConfig.Ocr2Config.P2PKeyBundle.PeerId), + TransmitAccount: types2.Account(chainConfig.AccountAddress), + ConfigEncryptionPublicKey: cpk, + IsBootstrap: chainConfig.Ocr2Config.IsBootstrap, + MultiAddr: chainConfig.Ocr2Config.Multiaddr, + } + } + nodes = append(nodes, Node{ + SelToOCRConfig: selToOCRConfig, + }) + } + return nodes, nil +} From 2a1dcd06eb835b83d5abf01c2410695efe3570fd Mon Sep 17 00:00:00 2001 From: Adam Hamrick Date: Thu, 15 Aug 2024 18:13:00 -0400 Subject: [PATCH 35/42] Downgrade Docker deps (#1307) ## Motivation ## Solution --- integration-tests/go.mod | 5 ++--- integration-tests/go.sum | 10 ++++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 98846cfad3..5571e0c2dc 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -48,7 +48,7 @@ require ( github.com/spf13/cobra v1.8.1 github.com/stretchr/testify v1.9.0 github.com/test-go/testify v1.1.4 - github.com/testcontainers/testcontainers-go v0.32.0 + github.com/testcontainers/testcontainers-go v0.28.0 github.com/umbracle/ethgo v0.1.3 go.uber.org/atomic v1.11.0 go.uber.org/multierr v1.11.0 @@ -167,7 +167,7 @@ require ( github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker v27.0.3+incompatible // indirect + github.com/docker/docker v25.0.2+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dominikbraun/graph v0.23.0 // indirect @@ -336,7 +336,6 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect - github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/spdystream v0.4.0 // indirect github.com/moby/sys/sequential v0.5.0 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index c1a130b939..9c63ac2aa4 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -419,8 +419,8 @@ github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v27.0.3+incompatible h1:aBGI9TeQ4MPlhquTQKq9XbK79rKFVwXNUAYz9aXyEBE= -github.com/docker/docker v27.0.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v25.0.2+incompatible h1:/OaKeauroa10K4Nqavw4zlhcDq/WBcPMc5DbjOGgozY= +github.com/docker/docker v25.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -1148,8 +1148,6 @@ github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= -github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= -github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8= @@ -1487,8 +1485,8 @@ github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 h1:3SNcvBmEPE1YlB github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0= github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmNQzk2ghU= -github.com/testcontainers/testcontainers-go v0.32.0 h1:ug1aK08L3gCHdhknlTTwWjPHPS+/alvLJU/DRxTD/ME= -github.com/testcontainers/testcontainers-go v0.32.0/go.mod h1:CRHrzHLQhlXUsa5gXjTOfqIEJcrK5+xMDmBr/WMI88E= +github.com/testcontainers/testcontainers-go v0.28.0 h1:1HLm9qm+J5VikzFDYhOd+Zw12NtOl+8drH2E8nTY1r8= +github.com/testcontainers/testcontainers-go v0.28.0/go.mod h1:COlDpUXbwW3owtpMkEB1zo9gwb1CoKVKlyrVPejF4AU= github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a h1:YuO+afVc3eqrjiCUizNCxI53bl/BnPiVwXqLzqYTqgU= github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a/go.mod h1:/sfW47zCZp9FrtGcWyo1VjbgDaodxX9ovZvgLb/MxaA= github.com/thlib/go-timezone-local v0.0.0-20210907160436-ef149e42d28e h1:BuzhfgfWQbX0dWzYzT1zsORLnHRv3bcRcsaUk0VmXA8= From 8d9a0d97f69cca6f17a962181fb5ce6340e9ddbd Mon Sep 17 00:00:00 2001 From: connorwstein Date: Fri, 16 Aug 2024 10:04:37 -0400 Subject: [PATCH 36/42] PR comments --- integration-tests/deployment/address_book.go | 8 ++++++-- integration-tests/deployment/ccip/deploy.go | 3 +-- .../deployment/ccip/deploy_home_chain.go | 4 +--- .../ccip/migrations/1_initial_deploy_test.go | 18 ++++++------------ integration-tests/deployment/environment.go | 8 ++++---- .../deployment/memory/environment.go | 5 ++--- 6 files changed, 20 insertions(+), 26 deletions(-) diff --git a/integration-tests/deployment/address_book.go b/integration-tests/deployment/address_book.go index 5850ef88e7..ca1ad7ba13 100644 --- a/integration-tests/deployment/address_book.go +++ b/integration-tests/deployment/address_book.go @@ -31,7 +31,9 @@ func (m *AddressBookMap) Addresses() (map[uint64]map[string]string, error) { } func (m *AddressBookMap) AddressesForChain(chain uint64) (map[string]string, error) { - // TODO error + if _, exists := m.AddressesByChain[chain]; !exists { + return nil, fmt.Errorf("chain %d not found", chain) + } return m.AddressesByChain[chain], nil } @@ -43,7 +45,9 @@ func (m *AddressBookMap) Merge(ab AddressBook) error { } for chain, chainAddresses := range addresses { for address, typeAndVersions := range chainAddresses { - return m.Save(chain, address, typeAndVersions) + if err := m.Save(chain, address, typeAndVersions); err != nil { + return err + } } } return nil diff --git a/integration-tests/deployment/ccip/deploy.go b/integration-tests/deployment/ccip/deploy.go index bd4c2c4331..2355950b55 100644 --- a/integration-tests/deployment/ccip/deploy.go +++ b/integration-tests/deployment/ccip/deploy.go @@ -70,9 +70,8 @@ type Contracts interface { } type ContractDeploy[C Contracts] struct { - // We just return keep all the deploy return values + // We just keep all the deploy return values // since some will be empty if there's an error. - // and we want to avoid repeating that Address common.Address Contract C Tx *types.Transaction diff --git a/integration-tests/deployment/ccip/deploy_home_chain.go b/integration-tests/deployment/ccip/deploy_home_chain.go index 6b868994af..c7e36bf6e4 100644 --- a/integration-tests/deployment/ccip/deploy_home_chain.go +++ b/integration-tests/deployment/ccip/deploy_home_chain.go @@ -4,13 +4,11 @@ import ( "bytes" "context" "errors" - "fmt" "sort" "time" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/rpc" deployment2 "github.com/smartcontractkit/ccip/integration-tests/deployment" confighelper2 "github.com/smartcontractkit/libocr/offchainreporting2plus/confighelper" "github.com/smartcontractkit/libocr/offchainreporting2plus/ocr3confighelper" @@ -398,7 +396,7 @@ func AddDON( }, uint8(pluginType)) if err != nil { //return err - return fmt.Errorf("%s", err.(rpc.DataError).ErrorData().(string)) + return deployment.MaybeDataErr(err) } // TODO: assertions //require.Equalf(t, offrampOCR3Configs[pluginType].ConfigDigest, ocrConfig.ConfigInfo.ConfigDigest, "%s OCR3 config digest mismatch", pluginType.String()) diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index 1701dd0465..7c5fd5d2a5 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -136,14 +136,12 @@ func Test0001_InitialDeploy(t *testing.T) { if sel == homeChainSel { continue } - //require.NoError(t, ccipdeployment.AddLane(e, state, sel, dest)) msg := router.ClientEVM2AnyMessage{ Receiver: common.LeftPadBytes(state.Receivers[dest].Address().Bytes(), 32), Data: []byte("hello"), TokenAmounts: nil, // TODO: no tokens for now - //FeeToken: common.HexToAddress("0x0"), - FeeToken: state.Weth9s[sel].Address(), - ExtraArgs: nil, // TODO: no extra args for now, falls back to default + FeeToken: state.Weth9s[sel].Address(), + ExtraArgs: nil, // TODO: no extra args for now, falls back to default } fee, err := state.Routers[sel].GetFee( &bind.CallOpts{Context: context.Background()}, dest, msg) @@ -155,6 +153,8 @@ func Test0001_InitialDeploy(t *testing.T) { }) require.NoError(t, err) require.NoError(t, chain.Confirm(tx.Hash())) + + // TODO: should be able to avoid this by using native? tx, err = state.Weth9s[sel].Approve(e.Chains[sel].DeployerKey, state.Routers[sel].Address(), fee) require.NoError(t, err) @@ -202,14 +202,11 @@ func waitForCommitWithInterval( for { select { - case <-time.After(time.Minute): - t.Logf("Waiting for commit report on chain selector %d from source selector %d expected seq nr range %s", - dest.Selector, src.Selector, expectedSeqNumRange.String()) - t.Error("Timed out waiting for commit report") - return case <-ticker.C: src.Client.(*backends.SimulatedBackend).Commit() dest.Client.(*backends.SimulatedBackend).Commit() + t.Logf("Waiting for commit report on chain selector %d from source selector %d expected seq nr range %s", + dest.Selector, src.Selector, expectedSeqNumRange.String()) case subErr := <-subscription.Err(): t.Fatalf("Subscription error: %+v", subErr) case report := <-sink: @@ -237,9 +234,6 @@ func waitForExecWithSeqNr(t *testing.T, defer tick.Stop() for { select { - case <-time.After(time.Minute): - t.Log("Timed out waiting for ExecutionStateChanged") - return case <-tick.C: // TODO: Clean this up source.Client.(*backends.SimulatedBackend).Commit() diff --git a/integration-tests/deployment/environment.go b/integration-tests/deployment/environment.go index 6cff4296d2..7c3cd3b7a9 100644 --- a/integration-tests/deployment/environment.go +++ b/integration-tests/deployment/environment.go @@ -62,19 +62,19 @@ func ConfirmIfNoError(chain Chain, tx *types.Transaction, err error) error { if err != nil { d, ok := err.(rpc.DataError) if ok { - fmt.Println("Got Data Error", d.ErrorData()) + return fmt.Errorf("Got Data Error: %s", d.ErrorData()) } return err } return chain.Confirm(tx.Hash()) } -func MaybeDataErr(err error) string { +func MaybeDataErr(err error) error { d, ok := err.(rpc.DataError) if ok { - return d.ErrorData().(string) + return d } - return "" + return err } func UBigInt(i uint64) *big.Int { diff --git a/integration-tests/deployment/memory/environment.go b/integration-tests/deployment/memory/environment.go index 327d9df404..939105e2ad 100644 --- a/integration-tests/deployment/memory/environment.go +++ b/integration-tests/deployment/memory/environment.go @@ -1,7 +1,6 @@ package memory import ( - "fmt" "testing" "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" @@ -44,11 +43,11 @@ func NewMemoryChains(t *testing.T, numChains int) map[uint64]deployment.Chain { chain.Backend.Commit() receipt, err := chain.Backend.TransactionReceipt(nil, tx) if err != nil { - fmt.Println("failed to get receipt", err) + t.Log("failed to get receipt", err) continue } if receipt.Status == 0 { - fmt.Printf("Status (reverted) %d for txhash %s\n", receipt.Status, tx.String()) + t.Log("Status (reverted) %d for txhash %s\n", receipt.Status, tx.String()) } return nil } From becdd4ca6f850473228d5234addc8e2689b0915e Mon Sep 17 00:00:00 2001 From: connorwstein Date: Fri, 16 Aug 2024 10:28:42 -0400 Subject: [PATCH 37/42] Test all lanes --- .../ccip/migrations/1_initial_deploy_test.go | 108 +++++++++++------- 1 file changed, 68 insertions(+), 40 deletions(-) diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index 7c5fd5d2a5..0dda6fa49e 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -3,6 +3,7 @@ package migrations import ( "context" "math/big" + "sync" "testing" "time" @@ -130,49 +131,75 @@ func Test0001_InitialDeploy(t *testing.T) { } } - // Send a message from each chain to the home chain. - for sel, chain := range e.Chains { - dest := homeChainSel - if sel == homeChainSel { - continue - } - msg := router.ClientEVM2AnyMessage{ - Receiver: common.LeftPadBytes(state.Receivers[dest].Address().Bytes(), 32), - Data: []byte("hello"), - TokenAmounts: nil, // TODO: no tokens for now - FeeToken: state.Weth9s[sel].Address(), - ExtraArgs: nil, // TODO: no extra args for now, falls back to default + // Send a message from each chain to every other chain. + for src, srcChain := range e.Chains { + for dest, _ := range e.Chains { + if src == dest { + continue + } + msg := router.ClientEVM2AnyMessage{ + Receiver: common.LeftPadBytes(state.Receivers[dest].Address().Bytes(), 32), + Data: []byte("hello"), + TokenAmounts: nil, // TODO: no tokens for now + FeeToken: state.Weth9s[src].Address(), + ExtraArgs: nil, // TODO: no extra args for now, falls back to default + } + fee, err := state.Routers[src].GetFee( + &bind.CallOpts{Context: context.Background()}, dest, msg) + require.NoError(t, err, deployment.MaybeDataErr(err)) + tx, err := state.Weth9s[src].Deposit(&bind.TransactOpts{ + From: e.Chains[src].DeployerKey.From, + Signer: e.Chains[src].DeployerKey.Signer, + Value: fee, + }) + require.NoError(t, err) + require.NoError(t, srcChain.Confirm(tx.Hash())) + + // TODO: should be able to avoid this by using native? + tx, err = state.Weth9s[src].Approve(e.Chains[src].DeployerKey, + state.Routers[src].Address(), fee) + require.NoError(t, err) + require.NoError(t, srcChain.Confirm(tx.Hash())) + + t.Logf("Sending CCIP request from chain selector %d to chain selector %d", + src, dest) + tx, err = state.Routers[src].CcipSend(e.Chains[src].DeployerKey, dest, msg) + require.NoError(t, err) + require.NoError(t, srcChain.Confirm(tx.Hash())) } - fee, err := state.Routers[sel].GetFee( - &bind.CallOpts{Context: context.Background()}, dest, msg) - require.NoError(t, err, deployment.MaybeDataErr(err)) - tx, err := state.Weth9s[sel].Deposit(&bind.TransactOpts{ - From: e.Chains[sel].DeployerKey.From, - Signer: e.Chains[sel].DeployerKey.Signer, - Value: fee, - }) - require.NoError(t, err) - require.NoError(t, chain.Confirm(tx.Hash())) + } - // TODO: should be able to avoid this by using native? - tx, err = state.Weth9s[sel].Approve(e.Chains[sel].DeployerKey, - state.Routers[sel].Address(), fee) - require.NoError(t, err) - require.NoError(t, chain.Confirm(tx.Hash())) + // Wait for all commit reports to land. + var wg sync.WaitGroup + for src, srcChain := range e.Chains { + for dest, dstChain := range e.Chains { + if src == dest { + continue + } + wg.Add(1) + go func(src, dest uint64) { + defer wg.Done() + waitForCommitWithInterval(t, srcChain, dstChain, state.EvmOffRampsV160[dest], ccipocr3.SeqNumRange{1, 1}) + }(src, dest) + } + } + wg.Wait() - t.Logf("Sending CCIP request from chain selector %d to chain selector %d", - sel, dest) - tx, err = state.Routers[sel].CcipSend(e.Chains[sel].DeployerKey, homeChainSel, msg) - require.NoError(t, err) - require.NoError(t, chain.Confirm(tx.Hash())) - waitForCommitWithInterval(t, chain, e.Chains[homeChainSel], - state.EvmOffRampsV160[homeChainSel], - ccipocr3.SeqNumRange{1, 1}, - ) - waitForExecWithSeqNr(t, - state.EvmOffRampsV160[homeChainSel], - chain, e.Chains[homeChainSel], 1) + // Wait for all exec reports to land + for src, srcChain := range e.Chains { + for dest, dstChain := range e.Chains { + if src == dest { + continue + } + wg.Add(1) + go func(src, dest uint64) { + defer wg.Done() + waitForExecWithSeqNr(t, srcChain, dstChain, state.EvmOffRampsV160[dest], 1) + }(src, dest) + } } + wg.Wait() + // TODO: Apply the proposal. } @@ -228,8 +255,9 @@ func waitForCommitWithInterval( } func waitForExecWithSeqNr(t *testing.T, + source, dest deployment.Chain, offramp *evm_2_evm_multi_offramp.EVM2EVMMultiOffRamp, - source, dest deployment.Chain, expectedSeqNr uint64) { + expectedSeqNr uint64) { tick := time.NewTicker(5 * time.Second) defer tick.Stop() for { From 2a5fe72c7f1049c0c022651ff1b884483459ed8c Mon Sep 17 00:00:00 2001 From: connorwstein Date: Fri, 16 Aug 2024 10:36:20 -0400 Subject: [PATCH 38/42] Fix load module --- integration-tests/load/go.mod | 5 ++--- integration-tests/load/go.sum | 10 ++++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index 07c07b93b2..de2866b0e9 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -38,12 +38,12 @@ require ( github.com/containerd/errdefs v0.1.0 // indirect github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect - github.com/moby/docker-image-spec v1.3.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/smartcontractkit/chainlink-ccip v0.0.0-20240814100759-a12828c40ddb // indirect github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240710121324-3ed288aa9b45 // indirect + github.com/testcontainers/testcontainers-go v0.28.0 // indirect k8s.io/apimachinery v0.30.2 // indirect ) @@ -145,7 +145,7 @@ require ( github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker v27.0.3+incompatible // indirect + github.com/docker/docker v25.0.2+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dominikbraun/graph v0.23.0 // indirect @@ -400,7 +400,6 @@ require ( github.com/tendermint/go-amino v0.16.0 // indirect github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 // indirect github.com/test-go/testify v1.1.4 // indirect - github.com/testcontainers/testcontainers-go v0.32.0 // indirect github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a // indirect github.com/tidwall/btree v1.6.0 // indirect github.com/tidwall/gjson v1.17.0 // indirect diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index d0dc4086a4..bdabf1c1b4 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -409,8 +409,8 @@ github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v27.0.3+incompatible h1:aBGI9TeQ4MPlhquTQKq9XbK79rKFVwXNUAYz9aXyEBE= -github.com/docker/docker v27.0.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v25.0.2+incompatible h1:/OaKeauroa10K4Nqavw4zlhcDq/WBcPMc5DbjOGgozY= +github.com/docker/docker v25.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -1134,8 +1134,6 @@ github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= -github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= -github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8= @@ -1467,8 +1465,8 @@ github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 h1:3SNcvBmEPE1YlB github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0= github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmNQzk2ghU= -github.com/testcontainers/testcontainers-go v0.32.0 h1:ug1aK08L3gCHdhknlTTwWjPHPS+/alvLJU/DRxTD/ME= -github.com/testcontainers/testcontainers-go v0.32.0/go.mod h1:CRHrzHLQhlXUsa5gXjTOfqIEJcrK5+xMDmBr/WMI88E= +github.com/testcontainers/testcontainers-go v0.28.0 h1:1HLm9qm+J5VikzFDYhOd+Zw12NtOl+8drH2E8nTY1r8= +github.com/testcontainers/testcontainers-go v0.28.0/go.mod h1:COlDpUXbwW3owtpMkEB1zo9gwb1CoKVKlyrVPejF4AU= github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a h1:YuO+afVc3eqrjiCUizNCxI53bl/BnPiVwXqLzqYTqgU= github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a/go.mod h1:/sfW47zCZp9FrtGcWyo1VjbgDaodxX9ovZvgLb/MxaA= github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg= From bea33d66521f744b132df35a43868cefebeaddf1 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Fri, 16 Aug 2024 10:41:32 -0400 Subject: [PATCH 39/42] Lint --- integration-tests/deployment/memory/environment.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/deployment/memory/environment.go b/integration-tests/deployment/memory/environment.go index 939105e2ad..5b87a436dc 100644 --- a/integration-tests/deployment/memory/environment.go +++ b/integration-tests/deployment/memory/environment.go @@ -47,7 +47,7 @@ func NewMemoryChains(t *testing.T, numChains int) map[uint64]deployment.Chain { continue } if receipt.Status == 0 { - t.Log("Status (reverted) %d for txhash %s\n", receipt.Status, tx.String()) + t.Logf("Status (reverted) %d for txhash %s\n", receipt.Status, tx.String()) } return nil } From ae9973006eda353ea28670d9b02b2464eb5732cc Mon Sep 17 00:00:00 2001 From: connorwstein Date: Fri, 16 Aug 2024 12:02:10 -0400 Subject: [PATCH 40/42] Test merge --- integration-tests/deployment/address_book.go | 2 ++ .../deployment/address_book_test.go | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/integration-tests/deployment/address_book.go b/integration-tests/deployment/address_book.go index ca1ad7ba13..409b3a482c 100644 --- a/integration-tests/deployment/address_book.go +++ b/integration-tests/deployment/address_book.go @@ -2,6 +2,8 @@ package deployment import "fmt" +// AddressBook is a simple interface for storing and retrieving contract addresses across +// chains. It is family agnostic. type AddressBook interface { Save(chainSelector uint64, address string, typeAndVersion string) error Addresses() (map[uint64]map[string]string, error) diff --git a/integration-tests/deployment/address_book_test.go b/integration-tests/deployment/address_book_test.go index 1d5e350567..d34053e89c 100644 --- a/integration-tests/deployment/address_book_test.go +++ b/integration-tests/deployment/address_book_test.go @@ -37,4 +37,35 @@ func TestAddressBook(t *testing.T) { }, }) + // Test merge + ab2 := NewMemoryAddressBook() + require.NoError(t, ab2.Save(3, "0x3", "OnRamp 1.0.0")) + require.NoError(t, ab.Merge(ab2)) + // Other address book should remain unchanged. + addresses, err = ab2.Addresses() + require.NoError(t, err) + assert.DeepEqual(t, addresses, map[uint64]map[string]string{ + 3: { + "0x3": "OnRamp 1.0.0", + }, + }) + // Existing addressbook should contain the new elements. + addresses, err = ab.Addresses() + require.NoError(t, err) + assert.DeepEqual(t, addresses, map[uint64]map[string]string{ + 1: { + "0x1": "OnRamp 1.0.0", + "0x2": "OnRamp 1.0.0", + }, + 2: { + "0x1": "OnRamp 1.0.0", + "0x2": "OnRamp 1.2.0", + }, + 3: { + "0x3": "OnRamp 1.0.0", + }, + }) + + // Merge to an existing chain. + require.NoError(t, ab2.Save(2, "0x3", "OffRamp 1.0.0")) } From 1e1a3823cb3b69d39a98a21ffddf364feac3ce84 Mon Sep 17 00:00:00 2001 From: connorwstein Date: Fri, 16 Aug 2024 12:55:32 -0400 Subject: [PATCH 41/42] Linter --- integration-tests/deployment/ccip/deploy.go | 13 +++++-------- .../deployment/ccip/deploy_home_chain.go | 14 ++++---------- .../ccip/migrations/1_initial_deploy_test.go | 18 +++++++++++++----- integration-tests/deployment/environment.go | 2 ++ .../deployment/memory/environment.go | 6 ++---- 5 files changed, 26 insertions(+), 27 deletions(-) diff --git a/integration-tests/deployment/ccip/deploy.go b/integration-tests/deployment/ccip/deploy.go index 2355950b55..ae3b00de65 100644 --- a/integration-tests/deployment/ccip/deploy.go +++ b/integration-tests/deployment/ccip/deploy.go @@ -123,7 +123,7 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( e.Logger.Errorw("Failed to get node info", "err", err) return ab, err } - cap, err := c.CapabilityRegistry[c.HomeChainSel].GetHashedCapabilityId( + cr, err := c.CapabilityRegistry[c.HomeChainSel].GetHashedCapabilityId( &bind.CallOpts{}, CapabilityLabelledName, CapabilityVersion) if err != nil { e.Logger.Errorw("Failed to get hashed capability id", "err", err) @@ -134,7 +134,7 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( c.CapabilityRegistry[c.HomeChainSel], e.Chains[c.HomeChainSel], nodes.PeerIDs(c.HomeChainSel), // Doesn't actually matter which sel here - [][32]byte{cap}, + [][32]byte{cr}, ); err != nil { return ab, err } @@ -435,7 +435,7 @@ func DeployCCIPContracts(e deployment.Environment, c DeployCCIPContractConfig) ( // For each chain, we create a DON on the home chain. if err := AddDON(e.Logger, - cap, + cr, c.CapabilityRegistry[c.HomeChainSel], c.CCIPConfig[c.HomeChainSel], offRamp.Contract, @@ -498,7 +498,7 @@ func AddLane(e deployment.Environment, state CCIPOnChainState, from, to uint64) return err } - // Enable dest in price registy + // Enable dest in price registry tx, err = state.PriceRegistries[from].ApplyDestChainConfigUpdates(e.Chains[from].DeployerKey, []price_registry.PriceRegistryDestChainConfigArgs{ { @@ -528,10 +528,7 @@ func AddLane(e deployment.Environment, state CCIPOnChainState, from, to uint64) OffRamp: state.EvmOffRampsV160[to].Address(), }, }) - if err := deployment.ConfirmIfNoError(e.Chains[to], tx, err); err != nil { - return err - } - return nil + return deployment.ConfirmIfNoError(e.Chains[to], tx, err) } func defaultPriceRegistryDestChainConfig() price_registry.PriceRegistryDestChainConfig { diff --git a/integration-tests/deployment/ccip/deploy_home_chain.go b/integration-tests/deployment/ccip/deploy_home_chain.go index c7e36bf6e4..5c67e4cc2a 100644 --- a/integration-tests/deployment/ccip/deploy_home_chain.go +++ b/integration-tests/deployment/ccip/deploy_home_chain.go @@ -143,10 +143,7 @@ func AddNodes( if err != nil { return err } - if err := chain.Confirm(tx.Hash()); err != nil { - return err - } - return nil + return chain.Confirm(tx.Hash()) } func SetupConfigInfo(chainSelector uint64, readers [][32]byte, fChain uint8, cfg []byte) ccip_config.CCIPConfigTypesChainConfigInfo { @@ -240,9 +237,6 @@ func AddDON( // TODO: implement token price writes // TokenPriceBatchWriteFrequency: *commonconfig.MustNewDuration(tokenPriceBatchWriteFrequency), }) - if err2 != nil { - return err2 - } } else { encodedOffchainConfig, err2 = pluginconfig.EncodeExecuteOffchainConfig(pluginconfig.ExecuteOffchainConfig{ BatchGasLimit: BatchGasLimit, @@ -252,9 +246,9 @@ func AddDON( RootSnoozeTime: *commonconfig.MustNewDuration(RootSnoozeTime), BatchingStrategyID: BatchingStrategyID, }) - if err2 != nil { - return err2 - } + } + if err2 != nil { + return err2 } signers, transmitters, configF, _, offchainConfigVersion, offchainConfig, err2 := ocr3confighelper.ContractSetConfigArgsForTests( DeltaProgress, diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index 0dda6fa49e..ea8e1db73e 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -100,7 +100,7 @@ func Test0001_InitialDeploy(t *testing.T) { require.NoError(t, err) // Ensure capreg logs are up to date. - ReplayAllLogs(nodes, chains) + require.NoError(t, ReplayAllLogs(nodes, chains)) // Apply the jobs. for nodeID, jobs := range output.JobSpecs { @@ -119,7 +119,7 @@ func Test0001_InitialDeploy(t *testing.T) { time.Sleep(30 * time.Second) // Ensure job related logs are up to date. - ReplayAllLogs(nodes, chains) + require.NoError(t, ReplayAllLogs(nodes, chains)) // Send a request from every router // Add all lanes @@ -133,7 +133,7 @@ func Test0001_InitialDeploy(t *testing.T) { // Send a message from each chain to every other chain. for src, srcChain := range e.Chains { - for dest, _ := range e.Chains { + for dest := range e.Chains { if src == dest { continue } @@ -176,6 +176,8 @@ func Test0001_InitialDeploy(t *testing.T) { if src == dest { continue } + srcChain := srcChain + dstChain := dstChain wg.Add(1) go func(src, dest uint64) { defer wg.Done() @@ -191,6 +193,8 @@ func Test0001_InitialDeploy(t *testing.T) { if src == dest { continue } + srcChain := srcChain + dstChain := dstChain wg.Add(1) go func(src, dest uint64) { defer wg.Done() @@ -203,13 +207,16 @@ func Test0001_InitialDeploy(t *testing.T) { // TODO: Apply the proposal. } -func ReplayAllLogs(nodes map[string]memory.Node, chains map[uint64]deployment.Chain) { +func ReplayAllLogs(nodes map[string]memory.Node, chains map[uint64]deployment.Chain) error { for _, node := range nodes { for sel := range chains { chainID, _ := chainsel.ChainIdFromSelector(sel) - node.App.ReplayFromBlock(big.NewInt(int64(chainID)), 1, false) + if err := node.App.ReplayFromBlock(big.NewInt(int64(chainID)), 1, false); err != nil { + return err + } } } + return nil } func waitForCommitWithInterval( @@ -227,6 +234,7 @@ func waitForCommitWithInterval( ticker := time.NewTicker(1 * time.Second) defer ticker.Stop() + //revive:disable for { select { case <-ticker.C: diff --git a/integration-tests/deployment/environment.go b/integration-tests/deployment/environment.go index 7c3cd3b7a9..88b1c8a3c2 100644 --- a/integration-tests/deployment/environment.go +++ b/integration-tests/deployment/environment.go @@ -60,6 +60,7 @@ func (e Environment) AllChainSelectors() []uint64 { func ConfirmIfNoError(chain Chain, tx *types.Transaction, err error) error { if err != nil { + //revive:disable d, ok := err.(rpc.DataError) if ok { return fmt.Errorf("Got Data Error: %s", d.ErrorData()) @@ -70,6 +71,7 @@ func ConfirmIfNoError(chain Chain, tx *types.Transaction, err error) error { } func MaybeDataErr(err error) error { + //revive:disable d, ok := err.(rpc.DataError) if ok { return d diff --git a/integration-tests/deployment/memory/environment.go b/integration-tests/deployment/memory/environment.go index 5b87a436dc..d496d173c0 100644 --- a/integration-tests/deployment/memory/environment.go +++ b/integration-tests/deployment/memory/environment.go @@ -1,6 +1,7 @@ package memory import ( + "context" "testing" "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" @@ -41,7 +42,7 @@ func NewMemoryChains(t *testing.T, numChains int) map[uint64]deployment.Chain { Confirm: func(tx common.Hash) error { for { chain.Backend.Commit() - receipt, err := chain.Backend.TransactionReceipt(nil, tx) + receipt, err := chain.Backend.TransactionReceipt(context.Background(), tx) if err != nil { t.Log("failed to get receipt", err) continue @@ -51,7 +52,6 @@ func NewMemoryChains(t *testing.T, numChains int) map[uint64]deployment.Chain { } return nil } - return nil }, } } @@ -71,7 +71,6 @@ func NewNodes(t *testing.T, logLevel zapcore.Level, chains map[uint64]deployment } } nodesByPeerID := make(map[string]Node) - var nodeIDs []string ports := freeport.GetN(t, numNodes) var existingNumBootstraps int for i := 0; i < numNodes; i++ { @@ -83,7 +82,6 @@ func NewNodes(t *testing.T, logLevel zapcore.Level, chains map[uint64]deployment node := NewNode(t, ports[i], mchains, logLevel, bootstrap, registryConfig) nodesByPeerID[node.Keys.PeerID.String()] = *node // Note in real env, this ID is allocated by JD. - nodeIDs = append(nodeIDs, node.Keys.PeerID.String()) } return nodesByPeerID } From db18e9323e9439b16d39e868a74d011124658d80 Mon Sep 17 00:00:00 2001 From: AnieeG Date: Fri, 16 Aug 2024 10:33:18 -0700 Subject: [PATCH 42/42] fix lint issues --- .../deployment/ccip/deploy_home_chain.go | 8 ++-- .../ccip/migrations/1_initial_deploy.go | 2 +- .../ccip/migrations/1_initial_deploy_test.go | 44 +++++++++---------- integration-tests/deployment/environment.go | 11 +++-- 4 files changed, 34 insertions(+), 31 deletions(-) diff --git a/integration-tests/deployment/ccip/deploy_home_chain.go b/integration-tests/deployment/ccip/deploy_home_chain.go index 5c67e4cc2a..ad76dbf892 100644 --- a/integration-tests/deployment/ccip/deploy_home_chain.go +++ b/integration-tests/deployment/ccip/deploy_home_chain.go @@ -9,15 +9,17 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" - deployment2 "github.com/smartcontractkit/ccip/integration-tests/deployment" confighelper2 "github.com/smartcontractkit/libocr/offchainreporting2plus/confighelper" "github.com/smartcontractkit/libocr/offchainreporting2plus/ocr3confighelper" + deployment2 "github.com/smartcontractkit/ccip/integration-tests/deployment" + "github.com/smartcontractkit/chainlink-ccip/chainconfig" "github.com/smartcontractkit/chainlink-ccip/pluginconfig" commonconfig "github.com/smartcontractkit/chainlink-common/pkg/config" "github.com/smartcontractkit/chainlink-common/pkg/logger" "github.com/smartcontractkit/chainlink-common/pkg/types/ccipocr3" + "github.com/smartcontractkit/chainlink/integration-tests/deployment" cctypes "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/types" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/ccip_config" @@ -269,8 +271,8 @@ func AddDON( int(f), []byte{}, // empty OnChainConfig ) - if err != nil { - return err + if err2 != nil { + return err2 } signersBytes := make([][]byte, len(signers)) diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy.go index fef28d93a5..e92d7c0e8b 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy.go @@ -3,7 +3,7 @@ package migrations import ( "github.com/smartcontractkit/chainlink/integration-tests/deployment" - "github.com/smartcontractkit/chainlink/integration-tests/deployment/ccip" + ccipdeployment "github.com/smartcontractkit/chainlink/integration-tests/deployment/ccip" ) // We expect the migration input to be unique per migration. diff --git a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go index ea8e1db73e..aa8f244481 100644 --- a/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go +++ b/integration-tests/deployment/ccip/migrations/1_initial_deploy_test.go @@ -17,6 +17,7 @@ import ( "github.com/smartcontractkit/chainlink/integration-tests/deployment" "github.com/smartcontractkit/chainlink-common/pkg/types/ccipocr3" + jobv1 "github.com/smartcontractkit/chainlink/integration-tests/deployment/jd/job/v1" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_multi_offramp" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" @@ -268,30 +269,27 @@ func waitForExecWithSeqNr(t *testing.T, expectedSeqNr uint64) { tick := time.NewTicker(5 * time.Second) defer tick.Stop() - for { - select { - case <-tick.C: - // TODO: Clean this up - source.Client.(*backends.SimulatedBackend).Commit() - dest.Client.(*backends.SimulatedBackend).Commit() - scc, err := offramp.GetSourceChainConfig(nil, source.Selector) - require.NoError(t, err) - t.Logf("Waiting for ExecutionStateChanged on chain %d from chain %d with expected sequence number %d, current onchain minSeqNr: %d", - dest.Selector, source.Selector, expectedSeqNr, scc.MinSeqNr) - iter, err := offramp.FilterExecutionStateChanged(nil, - []uint64{source.Selector}, []uint64{expectedSeqNr}, nil) - require.NoError(t, err) - var count int - for iter.Next() { - if iter.Event.SequenceNumber == expectedSeqNr && iter.Event.SourceChainSelector == source.Selector { - count++ - } - } - if count == 1 { - t.Logf("Received ExecutionStateChanged on chain %d from chain %d with expected sequence number %d", - dest.Selector, source.Selector, expectedSeqNr) - return + for range tick.C { + // TODO: Clean this up + source.Client.(*backends.SimulatedBackend).Commit() + dest.Client.(*backends.SimulatedBackend).Commit() + scc, err := offramp.GetSourceChainConfig(nil, source.Selector) + require.NoError(t, err) + t.Logf("Waiting for ExecutionStateChanged on chain %d from chain %d with expected sequence number %d, current onchain minSeqNr: %d", + dest.Selector, source.Selector, expectedSeqNr, scc.MinSeqNr) + iter, err := offramp.FilterExecutionStateChanged(nil, + []uint64{source.Selector}, []uint64{expectedSeqNr}, nil) + require.NoError(t, err) + var count int + for iter.Next() { + if iter.Event.SequenceNumber == expectedSeqNr && iter.Event.SourceChainSelector == source.Selector { + count++ } } + if count == 1 { + t.Logf("Received ExecutionStateChanged on chain %d from chain %d with expected sequence number %d", + dest.Selector, source.Selector, expectedSeqNr) + return + } } } diff --git a/integration-tests/deployment/environment.go b/integration-tests/deployment/environment.go index 88b1c8a3c2..7d8fb6e631 100644 --- a/integration-tests/deployment/environment.go +++ b/integration-tests/deployment/environment.go @@ -2,6 +2,7 @@ package deployment import ( "context" + "errors" "fmt" "math/big" "strconv" @@ -10,7 +11,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/rpc" - "github.com/smartcontractkit/chain-selectors" + chain_selectors "github.com/smartcontractkit/chain-selectors" types2 "github.com/smartcontractkit/libocr/offchainreporting2/types" types3 "github.com/smartcontractkit/libocr/offchainreporting2plus/types" @@ -61,9 +62,10 @@ func (e Environment) AllChainSelectors() []uint64 { func ConfirmIfNoError(chain Chain, tx *types.Transaction, err error) error { if err != nil { //revive:disable - d, ok := err.(rpc.DataError) + var d rpc.DataError + ok := errors.As(err, &d) if ok { - return fmt.Errorf("Got Data Error: %s", d.ErrorData()) + return fmt.Errorf("got Data Error: %s", d.ErrorData()) } return err } @@ -72,7 +74,8 @@ func ConfirmIfNoError(chain Chain, tx *types.Transaction, err error) error { func MaybeDataErr(err error) error { //revive:disable - d, ok := err.(rpc.DataError) + var d rpc.DataError + ok := errors.As(err, &d) if ok { return d }