{"id":29219915,"url":"https://github.com/protofire/chainlink-celo-node","last_synced_at":"2025-07-03T02:07:51.991Z","repository":{"id":52392722,"uuid":"363002757","full_name":"protofire/chainlink-celo-node","owner":"protofire","description":"Ready-to-go docker-compose configuration and external adapter for the Chainlink Network on the Celo Blockchain","archived":false,"fork":false,"pushed_at":"2021-05-05T21:24:21.000Z","size":128,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2023-04-10T04:54:21.404Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/protofire.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}},"created_at":"2021-04-30T02:20:05.000Z","updated_at":"2021-09-14T06:45:12.000Z","dependencies_parsed_at":"2022-09-06T08:13:12.461Z","dependency_job_id":null,"html_url":"https://github.com/protofire/chainlink-celo-node","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/protofire/chainlink-celo-node","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protofire%2Fchainlink-celo-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protofire%2Fchainlink-celo-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protofire%2Fchainlink-celo-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protofire%2Fchainlink-celo-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/protofire","download_url":"https://codeload.github.com/protofire/chainlink-celo-node/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protofire%2Fchainlink-celo-node/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263245313,"owners_count":23436515,"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":"2025-07-03T02:07:51.188Z","updated_at":"2025-07-03T02:07:51.955Z","avatar_url":"https://github.com/protofire.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chainlink Celo Development Node\t\r\n\r\n\u003cp align=\"center\"\u003e\u003ca href=\"https://protofire.io\"\u003eBy Protofire\u003c/a\u003e\u003c/p\u003e\r\n\r\nThis folder contains all files required to run a Chainlink Node for the Celo Alfajores Testnet. You will need `docker` and `docker-compose` \r\n\r\n## Contract Deployment\r\n\r\nAll Chainlink v6 contracts required (including LinkToken, Oracle, AccessControlledAggregator and EACAggregatorProxy) have been tested, verified and working on Celo. For the test we did an ETH/USD price aggregator with only one Oracle node.\r\n\r\nDeploying these contracts required no code modifications, and can be deployed using Remix, follwing standard procedure while making use of the [Celo Remix Plugin](https://github.com/dexfair/celo-remix-plugin), which is included in the Plugins tab of the Remix interface and is completely usable with Metamask or other web3 providers.\r\n\r\n\u003e Developing on Celo is not as straightforward as one would imagine coming from Ethereum or other strictly EVM compatible chains.\r\n\u003e To get some CELO, please use the provided [faucet](https://celo.org/developers/faucet)\r\n\r\n## Configure\r\n\r\nThere are four files to configure in this folder, `.env.chainlink`, `.env.postgres`, `data/password` and `data/api`. All files should already be present in this folder, just configure them to your liking. \r\n\r\n* `.env.chainlink` - All environment variables for the Chainlink Node. The ones present are the ones used for internal testing and validated as working on Dusty.\r\n* `.env.postgres` - All environment variables for the Postgres Database server. \r\n* `data` - This folder is mapped via docker to `/chainlink` in the Chainlink Node container\r\n* `data/password` - The password used by the Chainlink Node to lock the wallet\r\n* `data/api` - The password used by the Chainlink Node used for login and API calls\r\n\r\nFor the postgres database password, please make sure they match in both `.env.chainlink` and `.env.postgres`. \r\n\r\n\u003e **IMPORTANT** Make sure that `ETH_URL` value in `.env.chainlink` and the `CELO_RPC` configured for the adapter are *the same*, since any difference between these two might lead to a situation where the Chainlink Node is listening on one chain and the Celo Adapter is posting transactions to a different one.\r\n\r\n## Celo External Adapter\r\nFor Celo compatibility, we have produced a Celo-compatible External Adapter that will sign transactions in lieu of the Chainlink node doing so. For this purpose, it has to be configured with a private key, which *can be different* from the one that the node uses. See [the external adapter's README](celo-adapter/README.md) for more information on it.\r\n\r\nIn this case, at least the `celo-adapter` *bridge* should be configured, since it is essential for the node's ability to post transactions. Any job spec should make use of the following task specification instead of using the `EthTx` task.\r\n```json\r\n{\r\n  \"type\": \"celo-adapter\",\r\n  \"params\": {\r\n    \"address\": \u003cADDRESS_TO_CALL\u003e,\r\n    \"functionSelector\": \u003cFUNCTION_SELECTOR\u003e\r\n  }\r\n}\r\n```\r\n\r\nOur testing setup for this bridge on the node interface was\r\n```\r\nname: celo-adapter\r\nurl: http://celo-adapter:8080\r\nkept the default for other config parameters\r\n```\r\n\r\n## Data-Source External Adapters\r\n\r\nFor price aggregation, a script is included to automatically clone the [External Adapters JS Repo](https://github.com/smartcontractkit/external-adapters-js.git) and build the following external adapters\r\n\r\n* Cryptocompare\r\n* metalsapi\r\n* alphavantage\r\n\r\nYou may use the script `build_adapters.sh` inside this folder to clone and build these, or you may choose to build external adapters yourself. Be sure to include the External Adapter container inside the `docker-compose.yml` file. It should look something like this\r\n\r\nThis script will also build the `celo-adapter` docker image to be used in the docker-compose setup.\r\n\r\n### Adding External Adapters\r\n\r\nTo add an external adapter to the `docker-compose.yml` file, add a section for your external adapter at the bottom, like so\r\n\r\n```\r\n  chainlink-external-cryptocompare:\r\n    image: cryptocompare-adapter:latest\r\n    ports:\r\n      - \"8080:8080\"\r\n    environment:\r\n      API_KEY: \u003cAPI_KEY_HERE\u003e\r\n```\r\n\r\nthen, add the container as a requirement to the `chainlink` container, like so\r\n\r\n```\r\nservices:\r\n  chainlink:\r\n    image: smartcontract/chainlink:latest\r\n    depends_on:\r\n      - chainlink-db\r\n      - chainlink-external-cryptocompare\r\n      - celo-adapter\r\n      ...more external adapters containers here...\r\n```\r\n\r\n### Configuring External Adapters in the Node\r\n\r\nTo configure any external adapter in the chainlink node, simply point to the name of the container and the port it's exposing, like so\r\n![example bridge](https://i.ibb.co/0Mj82pZ/msedge-LHpxwubo72.png) \r\n\r\n## Configuring the Celo Adapter\r\n\r\nThe `celo-adapter` section of the included docker-compose file should be changed to give the Celo Adapter a PRIVATE_KEY to use. Change the provided dummy value with the private key for an address you control, and can be set up as the responder for a particular oracle contract, or a FluxAggregator.\r\n\r\n```\r\n- celo-adapter\r\n  ...\r\n  environment:\r\n    - PORT: 8080\r\n    - PRIVATE_KEY: \u003cPRIVATE_KEY_HERE\u003e\r\n```\r\n\r\n## Running\r\n\r\nBefore moving forward, run the included `build-adapters.sh` script. This will ensure that all required Docker images are built and ready to be used.\r\n\r\nTo run, simply run `docker-compose up` inside this folder after configuring. This will launch all required containers\r\n\r\nTo stop, simply run `docker-compose down` or use `CTRL + C` ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprotofire%2Fchainlink-celo-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprotofire%2Fchainlink-celo-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprotofire%2Fchainlink-celo-node/lists"}