本文我會給大家介紹,如何從零開始,在一個全新的Ubuntu系統(tǒng)上,搭建起Chainlink測試節(jié)點的過程。本文內(nèi)容非常的基礎,如果你已經(jīng)非常熟悉Chainlink,或者的開發(fā)運維高手,無需閱讀本文。本文所說的內(nèi)容僅適用于測試環(huán)境,正式環(huán)境的部署請參考官方文檔,或咨詢Chainlink官方技術人員。
我們使用docker來建立Ethereum Client節(jié)點和Chainlink節(jié)點。使用docker的好處就是省去了編譯工作,編譯需要建立相對復雜的開發(fā)環(huán)境,可能還需要解決一些編譯錯誤,比較費時費力。好在無論是Ethereum還是Chainlink,官方都會及時提供最新的release版本的鏡像,我們直接拿來用就可以了。
安裝docker
首先需要安裝docker,大家可以在這個頁面根據(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 -
此時可以驗證一下可以的正確性,輸入下面的命令,如果出現(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)《[email protected]》
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
這個過程可能會花費一些時間。完成后我們就完成了docker的安裝了,你可以輸入docker -v,如果有正確的輸出,就說明安裝成功。
建立Ethereum Client(Geth)節(jié)點
我們使用docker來運行起一個同步模式為light的Geth節(jié)點,網(wǎng)絡選擇測試網(wǎng)絡Ropsten。Parity節(jié)點參考文檔
https://docs.chain.link/docs/run-an-ethereum-client#section-parity
獲取最新版本的Geth Docker鏡像
docker pull ethereum/client-go:latest
注:如果遇到權限問題,可以通過下面的命令,將當前用戶添加到docker用戶組
sudo usermod -a -G docker $USER
或者直接在拉取鏡像的命令前加sudo。
創(chuàng)建Ethereum數(shù)據(jù)目錄
mkdir ~/.geth-ropsten
運行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
啟動之后可以通過Ctrl+P 和 Ctrl+Q 來與docker的環(huán)境分離(detach)。
再次啟動的話直接輸入docker start eth就可以了。其中eth是剛剛啟動命令中—-name中指定的容器名。
運行Chainlink節(jié)點
創(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)絡。
LINK_CONTRACT_ADDRESS填入的是Ropsten測試網(wǎng)絡上的LINK token合約地址,這個地址在不同的網(wǎng)絡上是不同的。如果您使用的不是Ropsten測試網(wǎng)絡,需要前往Chainlink官方文檔查詢對應的合約地址。
由于Chainlink需要監(jiān)聽以太坊網(wǎng)絡上的狀態(tài)變化,所以需要充以太坊節(jié)點獲取最新的區(qū)塊信息。Chainlink與以太坊節(jié)點通過WebSocket進行通信。所以接下來需要獲取Ethereum節(jié)點的地址。
如果以太的客戶端節(jié)點容易與Chainlink的節(jié)點運行在同一臺主機上,可以通過下面的命令獲取到以太坊節(jié)點地址。
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é)點默認的WebSocket監(jiān)聽端口,確保不要連接成REST或其他端口。
如果以太坊節(jié)點和Chainlink節(jié)點不再同一臺機器上,請獲取到以太坊所在機器的IP地址,并確保以太坊所監(jiān)聽的WebSocket端口開放。
運行Chainlink容器
cd ~/.chainlink-ropsten && docker run --name chainlink -p 6688:6688 -v ~/.chainlink-ropsten:/chainlink -it --env-file=.env smartcontract/chainlink local n
首次啟動的時候會要求兩個密碼,第一個輸入的是節(jié)點錢包的密碼,可以用來解鎖節(jié)點自動生成的keystore。輸入之后還需確認一次。第二個密碼是一個賬戶和密碼對,是GUI界面的登錄密碼和API的調(diào)用密碼。
這兩個密碼和賬號請務必牢記,如果丟失可能需要重新建節(jié)點。
你還可以把賬號和密碼寫到環(huán)境變量的配置文件里,防止在終端輸入時的拼寫錯誤。
同樣,啟動之后可以通過Ctrl+P 和 Ctrl+Q 來與docker的環(huán)境分離(detach),再次啟動時輸入docker start chainlink 即可。此時建議您將節(jié)點密碼配置到文件中以方便使用。
不出意外的話你的第一個Chainlink節(jié)點就搭建完成啦。你可以通過在瀏覽器中輸入節(jié)點ip:6688來訪問節(jié)點管理界面了。
評論