This repo allows to setup the oracles for few chains quickly with the same credentials.
- Install full testnet nodes
- Set ETH_URL (node Websocket Endpoint) in files chainlink-eth.env, chainlink-bsc.env, chainlink-heco.env
- Set providers (node RPC Endpoint) ETH_PROVIDER, BSC_PROVIDER, ETH_PROVIDER in file postgres.env
- Change default (postgreschainlink) postgress password. Files: initiator/.env, chainlink-heco.env, chainlink-bsc.env, chainlink-eth.env
- Create file apicredentials with chainlink email and password. example docs. After that need to change CHAINLINK_EMAIL, CHAINLINK_PASSWORD in initiator/.env
- Put keystore file to
secrets/keystore.json
. - Store the password that decrypts the key from
keystore
inpassword.txt
- Make your oracle-operator address to be whitelisted by deBridge governance
- Run the command
docker-compose up --build -d
. - Run the script to create the initiators and prepare the jobs and store main configurations in the database:
bash chainlink-init-scripts/setup-initiators-and-jobs.sh
- Run the command
docker-compose restart initiator
.
- Create and configure chainlink-[{CHAIN_TICKER}].env. At least the followed params should be added:
ROOT
ETH_CHAIN_ID
LINK_CONTRACT_ADDRESS
CHAINLINK_TLS_PORT
SECURE_COOKIES
GAS_UPDATER_ENABLED
ALLOW_ORIGINS
ETH_URL
DATABASE_URL
CHAINLINK_BASEURL
FEATURE_EXTERNAL_INITIATORS
CHAINLINK_DEV
CHAINLINK_PORT
CLIENT_NODE_URL
For more details, see the docs
- Add the container to the
docker-compose.yml
chainlink-[{CHAIN_TICKER}]:
container_name: chainlink-[{CHAIN_TICKER}]
image: smartcontract/chainlink:0.10.2
entrypoint: /bin/sh -c "chainlink node import /run/secrets/keystore && chainlink node start -d -p /run/secrets/node_password -a /run/secrets/apicredentials"
restart: always
env_file:
- chainlink-[{CHAIN_TICKER}].env
ports:
- [{PORT}]:6688
secrets:
- node_password
- apicredentials
- keystore
depends_on:
- postgres
networks:
- chainlink
- Add the new database name specified in
DATABASE_URL
topostgres.env
at the end ofPOSTGRES_MULTIPLE_DATABASES
using coma separator.
Note: if the database already exist the scrypt that creates the database won't be run. So the database either should be created manually or the volume with previous database can be removed:
docker volume rm pgdata
See Initialization scripts section in docs.
-
Run the command
docker-compose up
. -
Extend
setup-initiators-and-jobs.sh
. Add to the end of the file:
echo "Add initiator for $NETWORK"
network=[[NETWORK_NAME]]
chain_id=[[NETWORK_CHAIN_ID]]
cl_url=[[CHAINLINK_NODE_URL]]
add_initiator $network
echo "Add jobs for $NETWORK"
add_jobs $network
echo "Prepare table for $NETWORK ie"
create_ei_table $chain_id $cl_url $network
echo "Add record for $NETWORK ie"
add_record $network
Connect to the database:
docker exec -it debridge-launcher_postgres_1 psql -v ON_ERROR_STOP=1 --username postgres -d $DATABASE_NAME