{"id":37978733,"url":"https://github.com/chronicleprotocol/omnia-feed","last_synced_at":"2026-01-16T18:32:42.562Z","repository":{"id":37618233,"uuid":"476336751","full_name":"chronicleprotocol/omnia-feed","owner":"chronicleprotocol","description":"Modular Open Oracle Network","archived":false,"fork":false,"pushed_at":"2024-05-06T14:32:22.000Z","size":37769,"stargazers_count":14,"open_issues_count":3,"forks_count":15,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-05-06T15:55:14.977Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Nix","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chronicleprotocol.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-03-31T14:15:16.000Z","updated_at":"2024-04-09T20:04:08.000Z","dependencies_parsed_at":"2024-05-06T15:51:44.965Z","dependency_job_id":"4eae90eb-05fb-4782-b7a9-b733a96d2601","html_url":"https://github.com/chronicleprotocol/omnia-feed","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/chronicleprotocol/omnia-feed","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chronicleprotocol%2Fomnia-feed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chronicleprotocol%2Fomnia-feed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chronicleprotocol%2Fomnia-feed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chronicleprotocol%2Fomnia-feed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chronicleprotocol","download_url":"https://codeload.github.com/chronicleprotocol/omnia-feed/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chronicleprotocol%2Fomnia-feed/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28480931,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2026-01-16T18:32:42.460Z","updated_at":"2026-01-16T18:32:42.546Z","avatar_url":"https://github.com/chronicleprotocol.png","language":"Nix","funding_links":[],"categories":[],"sub_categories":[],"readme":"# oracles\n\n## Summary\n\nOracle client written in bash that utilizes secure scuttlebutt for offchain message passing along with signed price data to validate identity and authenticity on-chain.\n\n## Design Goals\n\nGoals of this new architecture are:\n\n1. Scalability,\n2. Reduce costs by minimizing number of ethereum transactions and operations performed on-chain,\n3. Increase reliability during periods of network congestion,\n4. Reduce latency to react to price changes,\n5. Make it easy to on-board price feeds for new collateral types, and\n6. Make it easy to on-board new Oracles.\n\n## Architecture\n\nThere are currently two main modules:\n\n### Feed\n\nEach Feed runs a Feed client which pulls prices redundantly with [Setzer]() and [Oracle Suite/Gofer](https://github.com/chronicleprotocol/oracle-suite), signs them with an ethereum private key, and broadcasts them as a message to the redundant p2p networks (e.g. scuttlebutt and libp2p).\n\n### Relay\n\nRelays monitor the broadcast messages, check for liveness, and homogenize the pricing data and signatures into a single ethereum transaction to be posted to the on-chain oracles.\n\n## [Live Goerli Oracles]\n\nSee [./omnia/config/relay-goerli.conf](./omnia/config/relay-goerli.conf)\n\n| Pair         | Oracle    |\n|--------------|-----------|\n| AAVE/USD | 0x48d9b9B980EcB23601E4cE5D0f828Ad1F3c8673f |\n| BAL/USD | 0x0f18931AF4BD88a77640E86977E41691A6773C81 |\n| BAT/USD | 0x559492e2D2CB96da572aB35b551049f2414039DB |\n| BTC/USD | 0x586409bb88cF89BBAB0e106b0620241a0e4005c9 |\n| COMP/USD | 0x41Bd42D1f64489a85CB552a9C122546bF0986399 |\n| ETH/USD | 0xD81834Aa83504F6614caE3592fb033e4b8130380 |\n| LINK/USD | 0xe4919256D404968566cbdc5E5415c769D5EeBcb0 |\n| LRC/USD | 0x9D86EC8d17AC9F27B67626710e70598198c53846 |\n| MANA/USD | 0xCCce898497e139831523cc9D23c948138dDF67f6 |\n| MATIC/USD | 0x4b4e2a0b7a560290280f083c8b5174fb706d7926 |\n| RETH/USD | 0x7eEE7e44055B6ddB65c6C970B061EC03365FADB3 |\n| UNI/USD | 0xF87BE13f2b081d8D555f31d6bd6590Fd817a99FA |\n| USDT/USD | 0x44084f056e9405FB41343ACb4E2E49f75b75640f |\n| YFI/USD | 0x38D27Ba21E1B2995d0ff9C1C070c5c93dd07cB31 |\n| ZRX/USD | 0x5C964118cD17B6b7b8a15C5De93b2E23c24d5789 |\n\n## [Live Mainnet Oracles]\n\nSee [./omnia/config/relay.conf](./omnia/config/relay.conf)\n\n| Pair         | Oracle    |\n|--------------|-----------|\n| BTC/USD | 0xe0F30cb149fAADC7247E953746Be9BbBB6B5751f |\n| ETH/BTC | 0x81A679f98b63B3dDf2F17CB5619f4d6775b3c5ED |\n| ETH/USD | 0x64DE91F5A373Cd4c28de3600cB34C7C6cE410C85 |\n| LINK/USD | 0xbAd4212d73561B240f10C56F27e6D9608963f17b |\n| MANA/USD | 0x681c4F8f69cF68852BAd092086ffEaB31F5B812c |\n| MATIC/USD | 0xfe1e93840D286C83cF7401cB021B94b5bc1763d2 |\n| RETH/USD | 0xf86360f0127f8a441cfca332c75992d1c692b3d1 |\n| WSTETH/USD | 0x2F73b6567B866302e132273f67661fB89b5a66F2 |\n| YFI/USD | 0x89AC26C0aFCB28EC55B6CD2F6b7DAD867Fa24639 |\n\n\n## Query Oracle Contracts\n\nQuery Oracle price Offchain\n\n```\nrawStorage=$(cast storage \u003cORACLE_CONTRACT\u003e 0x1)\ncast --from-wei $(cast --to-dec ${rawStorage:34:32})\n```\n\nQuery Oracle Price Onchain\n\n```\ncast --from-wei $(cast --to-dec $(cast call \u003cORACLE_CONTRACT\u003e \"read()(uint256)\"))\n```\n\nThis will require the address you are submitting the query from to be whitelisted in the Oracle smart contract.\n\nTo get whitelisted on a Goerli Oracle please send an email to nik@chroniclelabs.org.\n\nTo get whitelisted on a Mainnet Oracle please submit a proposal in the Oracle section of the Maker Forum forum.makerdao.com\nYour proposal will need to be ratified by MKR Governance to be enacted. Details of the proposal format can be found inside the Forum.\n\n## Install with Nix\n\nFirst you need `nix`:\n\n```sh\ncurl -L https://nixos.org/nix/install | sh\n. /home/\u003cUSER\u003e/.nix-profile/etc/profile.d/nix.sh\n```\n\nAdd Maker build cache:\n\n```sh\nnix run -f https://cachix.org/api/v1/install cachix -c cachix use maker\n```\n\nThen run the following to make the `omnia`, `ssb-server` and `install-omnia`\ncommands available in your user environment:\n\n```sh\nnix-env -i -f https://github.com/chronicleprotocol/oracles/tarball/v1.13.3 # update this to the latest version\n```\n\nGet the Scuttlebot private network keys (caps) from an admin and put it in a file\n(e.g. called `~/caps.json`). The file should have the JSON format:\n\n\n```json\n{\n\t\"shs\": \"\u003cBASE64\u003e\",\n\t\"sign\": \"\u003cBASE64\u003e\"\n}\n```\n\nYou can use the `install-omnia` command to install Omnia as a `systemd`\nservice, update your `/etc/omnia.conf`, `~/.ssb/config` and migrate a\nScuttlebot secret and gossip log.\n\n\n### Configuring a feed\n\nTo install and configure Omnia as a feed running with `systemd`:\n\n```\ninstall-omnia feed \\\n\t--ssb-caps ~/caps.json \\\n\t--ssb-external \u003cyour external ip here\u003e \\\n\t--eth-rpc \u003chttps://node1[:port]/path\u003e \\\n\t--eth-rpc \u003chttps://node2[:port]/path\u003e \\\n\t--eth-rpc \u003chttps://node3[:port]/path\u003e\n```\n\nFor more information about the install CLI:\n\n```\ninstall-omnia help\n```\n\nThe installed Scuttlebot config can be found in `~/.ssb.config`, more details\nabout the [Scuttlebot config](https://github.com/ssbc/ssb-config#configuration).\n\n## Relay Gas Price configuration\n\nAdding a new configuration parameter to `ethereum` relay config section: `gasPrice`.\nIt consist of 3 available options: \n\n`source` - source of gas price. Default value: `node`\n\n**There is currently only a single value available.** \n\n - `node` - Getting Gas Price from node (using `cast gas-price`).\n\n`multiplier` - A number the gas pice will be multiplied by after fetching. **Default value: 1**\n\n**Example configuration:**\n\n```json\n{\n  \"mode\": \"relay\",\n  \"ethereum\": {\n    \"from\": \"0x\",\n    \"keystore\": \"\",\n    \"password\": \"\",\n    \"network\": \"goerli\",\n    \"gasPrice\": {\n      \"source\": \"node\",\n      \"multiplier\": 1\n\t\t}\n  },\n  \"transports\":[\"ssb\"],\n  \"feeds\": [\n    \"0xdeadbeef123\"\n  ],\n  ...\n}\n```\n\n## Development\n\nTo build from inside this repo, clone and run:\n\n```sh\nnix-build\n```\n\nYou can then run `omnia` from `./result/bin/omnia`.\n\nTo get a development environment with all dependencies run:\n\n```sh\nnix-shell\ncd omnia\n./omnia.sh\n```\n\nNow you can start editing the `omnia` scripts and run them directly.\n\n### Update dependencies\n\nTo update dependencies like `setzer` use `niv` e.g.:\n\n```sh\nnix-shell\nniv show\nniv update setzer\n```\n\nTo update NodeJS dependencies edit the `nix/node-packages.json` file and run:\n\n```sh\nnix-shell\nupdateNodePackages\n```\n\n### Staging and release process\n\nTo create a release candidate (RC) for staging, typically after a PR has\npassed its smoke and regression tests and is merged into `master`, checkout\n`master` and run:\n\n```sh\nnix-shell --run \"release minor\"\n```\n\nThis should bump the version of `omnia` by Semver version level `minor`\nand create a new release branch with the resulting version\n(e.g. `release/1.1`) and a tag with the suffix `-rc` which indicates a\nrelease candidate that is ready for staging.\n\nWhen a release candidate has been tested in staging and is deemed stable you can\nrun the same command in the release branch but without the Semver version level:\n\n```sh\nnix-shell --run release\n```\n\nThis should add a Git tag to the current commit with its current version\n(without suffix) and move the `stable` tag there also.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchronicleprotocol%2Fomnia-feed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchronicleprotocol%2Fomnia-feed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchronicleprotocol%2Fomnia-feed/lists"}