{"id":19107347,"url":"https://github.com/smartcontractkit/chainlink-automation","last_synced_at":"2025-04-30T18:47:05.643Z","repository":{"id":61623313,"uuid":"528065002","full_name":"smartcontractkit/chainlink-automation","owner":"smartcontractkit","description":null,"archived":false,"fork":false,"pushed_at":"2024-10-23T16:59:43.000Z","size":14632,"stargazers_count":10,"open_issues_count":12,"forks_count":6,"subscribers_count":14,"default_branch":"main","last_synced_at":"2024-10-25T12:55:07.165Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smartcontractkit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-23T16:01:33.000Z","updated_at":"2024-10-23T16:58:42.000Z","dependencies_parsed_at":"2023-10-24T15:32:52.906Z","dependency_job_id":"2d248529-29c2-46d1-93d7-6edd5cd963dd","html_url":"https://github.com/smartcontractkit/chainlink-automation","commit_stats":null,"previous_names":["smartcontractkit/chainlink-automation","smartcontractkit/ocr2keepers"],"tags_count":83,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smartcontractkit%2Fchainlink-automation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smartcontractkit%2Fchainlink-automation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smartcontractkit%2Fchainlink-automation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smartcontractkit%2Fchainlink-automation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smartcontractkit","download_url":"https://codeload.github.com/smartcontractkit/chainlink-automation/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223783173,"owners_count":17201915,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T04:12:14.871Z","updated_at":"2024-11-09T04:12:15.440Z","avatar_url":"https://github.com/smartcontractkit.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ocr2keepers Oracle Plugin\nInitialize the plugin by creating a new Delegate\n\n```go\ndelegate, err := ocr2keepers.NewDelegate(delegateConfig)\n```\n\n## Links\n\n- [Overview](./OVERVIEW.md)\n- [Simulator](./SIMULATOR.md)\n\n## Unit Testing\nUnit testing is used extensively and the primary goal is to keep test coverage above 70%.\n\nTest coverage should be rerun with every commit either by running a git hook or `make coverage` to help maintain a high level of test coverage.\n\nIt is recommended that you install the git hooks so that the automated tooling is part of your workflow. Simply run:\n\n```\ncp -r .githooks/ .git/hooks\n```\n\nExplore test coverage per file with\n```\n$ go tool cover -html=cover.out\n```\n\n## Benchmarking\nBenchmarking helps identify general function inefficiencies both with memory and processor time. Only benchmark functions that are likely to run multiple times, asynchronously, or be processor/memory intensive.\n\nUsing benchmarking consistently requires that os, arch, and cpu be kept consistent. Do not overwrite the `benchmark.txt` file unless your specs are identical.\n\nTo run benchmarking:\n```\n$ make benchmark | new.txt\n```\n\nTo view a diff in benchmarks:\n```\n$ go install golang.org/x/perf/cmd/benchstat@latest\n$ benchstat benchmarks.txt new.txt\n```\n\n## Logging\nTo reduce dependencies on the main chainlink repo, all loggers are based on the default go log.Logger. When using the NewDelegate function, a new logger is created with `[keepers-plugin] ` prepending all logs and includes short file names/numbers. This logger writes its output to the ocr logger provided to the delegate as `Debug` logs.\n\nThe strategy of logging in this repo is to have two types of outcomes from logs:\n1. actionable - errors and panics (which should be handled by the chainlink node itself)\n2. debug info - extra log info about inner workings of the plugin (optional based on provided ocr logger settings)\n\nIf an error cannot be handled, it should be bubbled up. If it cannot be bubbled up, it should panic. The plugin shouldn't be concerned with managing runtime errors, log severity, or panic recovery unless it cannot be handled by the chainlink node process. An example might be a background service that is created a plugin startup but not managed by the chainlink node. If there is such a service, it should handle its own recovery within the context of a Start/Stop service.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmartcontractkit%2Fchainlink-automation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmartcontractkit%2Fchainlink-automation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmartcontractkit%2Fchainlink-automation/lists"}