Run an Ethereum Client
In order to run a Chainlink node, it must be able to connect to an Ethereum client with an active websocket connection. This is accomplished by running either Geth, Parity, or using a 3rd party connection. The examples below show how to run Geth and Parity in their official Docker containers for each network that they support.
We would recommend to use one of the external services for your Ethereum client, since running one on your own managed machine will consume a lot of resources. If you do choose to run either Geth or Parity with their native clients, please be sure to enable the websockets API, since it is required for the Chainlink node to communicate with the Ethereum blockchain.
Geth
The Geth client can be used for the Rinkeby test network, as well as the Ethereum main network.
Download the latest version:
docker pull ethereum/client-go:latest
Create a local directory to persist the data:
mkdir ~/.geth-rinkeby
mkdir ~/.geth
Run the container:
docker run --name eth -p 8546:8546 -v ~/.geth-rinkeby:/geth -it \
ethereum/client-go --rinkeby --ws --ipcdisable \
--ws.addr 0.0.0.0 --ws.origins="*" --datadir /geth
docker run --name eth -p 8546:8546 -v ~/.geth:/geth -it \
ethereum/client-go --syncmode fast --ws --ipcdisable \
--ws.addr 0.0.0.0 --ws.origins="*" --datadir /geth
Once the Ethereum client is running, you can use Ctrl + P, Ctrl + Q
to detach from the container without stopping it. You will need to leave the container running for the Chainlink node to connect to it.
If the container was stopped and you need to run it again, you can simply use the following command:
docker start -i eth
Return to Running a Chainlink Node.
Parity
The OpenEthereum client can be used for the Kovan test network, as well as the Ethereum main network.
Download the latest version:
openethereum/openethereum:stable
Create a local directory to persist the data:
mkdir ~/.openethereum-kovan
mkdir ~/.parity
Run the container:
docker run --name eth -p 8546:8546 \
-v ~/.openethereum-kovan/:/home/openethereum/.local/share/io.parity.ethereum/ \
-it openethereum/openethereum:latest --chain=kovan \
--ws-interface=all --ws-origins="all" \
--base-path /home/openethereum/.local/share/io.parity.ethereum/
docker run --name eth -p 8546:8546 \
-v ~/.parity:/home/parity/.local/share/io.parity.ethereum/ \
-it parity/parity:stable --ws-interface=all --ws-origins="all" \
--base-path /home/parity/.local/share/io.parity.ethereum/
Once the Ethereum client is running, you can use Ctrl + P, Ctrl + Q
to detach from the container without stopping it. You will need to leave the container running for the Chainlink node to connect to it.
If the container was stopped and you need to run it again, you can simply use the following command:
docker start -i eth
Return to Running a Chainlink Node.
External Services
The following services offer Ethereum clients with websockets connectivity known to work with the Chainlink node.
Chainstack
Example connection setting
ETH_URL=wss://user-name:pass-word-pass-word-pass-word@ws-nd-123-456-789.p2pify.com
Fiews
Example connection setting
ETH_URL=wss://cl-rinkeby.fiews.io/v1/yourapikey
ETH_URL=wss://cl-main.fiews.io/v1/yourapikey
Infura
Example connection setting. Note to replace YOUR_PROJECT_ID with the ID Infura provides you on your project settings page
ETH_URL=wss://rinkeby.infura.io/ws/v3/YOUR_PROJECT_ID
ETH_URL=wss://kovan.infura.io/ws/v3/YOUR_PROJECT_ID
ETH_URL=wss://mainnet.infura.io/ws/v3/YOUR_PROJECT_ID
LinkPool
Example connection setting
ETH_URL=wss://main-rpc.linkpool.io/ws
QuikNode
Example connection setting
ETH_URL=wss://your-node-name.rinkeby.quiknode.pro/security-hash/
ETH_URL=wss://your-node-name.kovan.quiknode.pro/security-hash/
ETH_URL=wss://your-node-name.quiknode.pro/security-hash/
Alchemy
Example connection setting
ETH_URL=wss://eth-rinkeby.alchemyapi.io/v2/YOUR_PROJECT_ID
ETH_URL=wss://eth-kovan.alchemyapi.io/v2/YOUR_PROJECT_ID
ETH_URL=wss://eth-mainnet.alchemyapi.io/v2/YOUR_PROJECT_ID