如何在Ubuntu系統(tǒng)上搭建一個(gè)Chainlink測試節(jié)點(diǎn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
本文我會給大家介紹,如何從零開始,在一個(gè)全新的Ubuntu系統(tǒng)上,搭建起Chainlink測試節(jié)點(diǎn)的過程。本文內(nèi)容非常的基礎(chǔ),如果你已經(jīng)非常熟悉Chainlink,或者的開發(fā)運(yùn)維高手,無需閱讀本文。本文所說的內(nèi)容僅適用于測試環(huán)境,正式環(huán)境的部署請參考官方文檔,或咨詢Chainlink官方技術(shù)人員。
我們使用docker來建立Ethereum Client節(jié)點(diǎn)和Chainlink節(jié)點(diǎn)。使用docker的好處就是省去了編譯工作,編譯需要建立相對復(fù)雜的開發(fā)環(huán)境,可能還需要解決一些編譯錯(cuò)誤,比較費(fèi)時(shí)費(fèi)力。好在無論是Ethereum還是Chainlink,官方都會及時(shí)提供最新的release版本的鏡像,我們直接拿來用就可以了。
安裝docker
首先需要安裝docker,大家可以在這個(gè)頁面根據(jù)自己操作系統(tǒng)的情況來按照文檔完成安裝。下面我寫一下Ubuntu1804環(huán)境下的安裝步驟。(參考)
依次執(zhí)行下面的命令
安裝必要的包
sudo apt update
sudo apt-get install
apt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common
安裝docker官方提供的GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg》 | sudo apt-key add -
此時(shí)可以驗(yàn)證一下可以的正確性,輸入下面的命令,如果出現(xiàn)的是這一串字符 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88,說明正確。
sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE deb)《docker@docker.com》
sub rsa4096 2017-02-22 [S]
將穩(wěn)定版本的docker添加到apt庫中
sudo add-apt-repository
“deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable”
開始安裝
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
這個(gè)過程可能會花費(fèi)一些時(shí)間。完成后我們就完成了docker的安裝了,你可以輸入docker -v,如果有正確的輸出,就說明安裝成功。
建立Ethereum Client(Geth)節(jié)點(diǎn)
我們使用docker來運(yùn)行起一個(gè)同步模式為light的Geth節(jié)點(diǎn),網(wǎng)絡(luò)選擇測試網(wǎng)絡(luò)Ropsten。Parity節(jié)點(diǎn)參考文檔
https://docs.chain.link/docs/run-an-ethereum-client#secTIon-parity
獲取最新版本的Geth Docker鏡像
docker pull ethereum/client-go:latest
注:如果遇到權(quán)限問題,可以通過下面的命令,將當(dāng)前用戶添加到docker用戶組
sudo usermod -a -G docker $USER
或者直接在拉取鏡像的命令前加sudo。
創(chuàng)建Ethereum數(shù)據(jù)目錄
mkdir ~/.geth-ropsten
運(yùn)行Ethereum容器
docker run --name eth -p 8546:8546 -v ~/.geth-ropsten:/geth -it
ethereum/client-go --syncmode light --testnet --ws --ipcdisable
--wsaddr 0.0.0.0 --wsorigins=“*” --datadir /geth
啟動(dòng)之后可以通過Ctrl+P 和 Ctrl+Q 來與docker的環(huán)境分離(detach)。
再次啟動(dòng)的話直接輸入docker start eth就可以了。其中eth是剛剛啟動(dòng)命令中—-name中指定的容器名。
運(yùn)行Chainlink節(jié)點(diǎn)
創(chuàng)建Chainlink測試目錄
mkdir ~/.chainlink-ropsten
創(chuàng)建環(huán)境變量文件
echo “ROOT=/chainlink
LOG_LEVEL=debug ETH_CHAIN_ID=3 MIN_OUTGOING_CONFIRMATIONS=2 MIN_INCOMING_CONFIRMATIONS=0 LINK_CONTRACT_ADDRESS=0x20fe562d797a42dcb3399062ae9546cd06f63280
CHAINLINK_TLS_PORT=0
SECURE_COOKIES=false
ALLOW_ORIGINS=*” 》 ~/.chainlink-ropsten/.env
其中
ETH_CHAIN_ID=3表示Chainlink需要接入Ethereum的Ropsten測試網(wǎng)絡(luò)。
LINK_CONTRACT_ADDRESS填入的是Ropsten測試網(wǎng)絡(luò)上的LINK token合約地址,這個(gè)地址在不同的網(wǎng)絡(luò)上是不同的。如果您使用的不是Ropsten測試網(wǎng)絡(luò),需要前往Chainlink官方文檔查詢對應(yīng)的合約地址。
由于Chainlink需要監(jiān)聽以太坊網(wǎng)絡(luò)上的狀態(tài)變化,所以需要充以太坊節(jié)點(diǎn)獲取最新的區(qū)塊信息。Chainlink與以太坊節(jié)點(diǎn)通過WebSocket進(jìn)行通信。所以接下來需要獲取Ethereum節(jié)點(diǎn)的地址。
如果以太的客戶端節(jié)點(diǎn)容易與Chainlink的節(jié)點(diǎn)運(yùn)行在同一臺主機(jī)上,可以通過下面的命令獲取到以太坊節(jié)點(diǎn)地址。
ETH_CONTAINER_IP=$(docker inspect --format ‘{{ .NetworkSetTIngs.IPAddress }}’ $(docker ps -f name=eth -q))`
然后將以太坊的地址寫入到Chainlink的環(huán)境變量文件中:
echo “ETH_URL=ws://$ETH_CONTAINER_IP:8546” 》》 ~/.chainlink-ropsten/.env`
其中8546是以太坊節(jié)點(diǎn)默認(rèn)的WebSocket監(jiān)聽端口,確保不要連接成REST或其他端口。
如果以太坊節(jié)點(diǎn)和Chainlink節(jié)點(diǎn)不再同一臺機(jī)器上,請獲取到以太坊所在機(jī)器的IP地址,并確保以太坊所監(jiān)聽的WebSocket端口開放。
運(yùn)行Chainlink容器
cd ~/.chainlink-ropsten && docker run --name chainlink -p 6688:6688 -v ~/.chainlink-ropsten:/chainlink -it --env-file=.env smartcontract/chainlink local n
首次啟動(dòng)的時(shí)候會要求兩個(gè)密碼,第一個(gè)輸入的是節(jié)點(diǎn)錢包的密碼,可以用來解鎖節(jié)點(diǎn)自動(dòng)生成的keystore。輸入之后還需確認(rèn)一次。第二個(gè)密碼是一個(gè)賬戶和密碼對,是GUI界面的登錄密碼和API的調(diào)用密碼。
這兩個(gè)密碼和賬號請務(wù)必牢記,如果丟失可能需要重新建節(jié)點(diǎn)。
你還可以把賬號和密碼寫到環(huán)境變量的配置文件里,防止在終端輸入時(shí)的拼寫錯(cuò)誤。
同樣,啟動(dòng)之后可以通過Ctrl+P 和 Ctrl+Q 來與docker的環(huán)境分離(detach),再次啟動(dòng)時(shí)輸入docker start chainlink 即可。此時(shí)建議您將節(jié)點(diǎn)密碼配置到文件中以方便使用。
不出意外的話你的第一個(gè)Chainlink節(jié)點(diǎn)就搭建完成啦。你可以通過在瀏覽器中輸入節(jié)點(diǎn)ip:6688來訪問節(jié)點(diǎn)管理界面了。