本文我會給大家介紹,如何從零開始,在一個全新的Ubuntu系統上,搭建起Chainlink測試節點的過程。本文內容非常的基礎,如果你已經非常熟悉Chainlink,或者的開發運維高手,無需閱讀本文。本文所說的內容僅適用于測試環境,正式環境的部署請參考官方文檔,或咨詢Chainlink官方技術人員。
我們使用docker來建立Ethereum Client節點和Chainlink節點。使用docker的好處就是省去了編譯工作,編譯需要建立相對復雜的開發環境,可能還需要解決一些編譯錯誤,比較費時費力。好在無論是Ethereum還是Chainlink,官方都會及時提供最新的release版本的鏡像,我們直接拿來用就可以了。
安裝docker
首先需要安裝docker,大家可以在這個頁面根據自己操作系統的情況來按照文檔完成安裝。下面我寫一下Ubuntu1804環境下的安裝步驟。(參考)
依次執行下面的命令
安裝必要的包
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 -
此時可以驗證一下可以的正確性,輸入下面的命令,如果出現的是這一串字符 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]
將穩定版本的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)節點
我們使用docker來運行起一個同步模式為light的Geth節點,網絡選擇測試網絡Ropsten。Parity節點參考文檔
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。
創建Ethereum數據目錄
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的環境分離(detach)。
再次啟動的話直接輸入docker start eth就可以了。其中eth是剛剛啟動命令中—-name中指定的容器名。
運行Chainlink節點
創建Chainlink測試目錄
mkdir ~/.chainlink-ropsten
創建環境變量文件
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測試網絡。
LINK_CONTRACT_ADDRESS填入的是Ropsten測試網絡上的LINK token合約地址,這個地址在不同的網絡上是不同的。如果您使用的不是Ropsten測試網絡,需要前往Chainlink官方文檔查詢對應的合約地址。
由于Chainlink需要監聽以太坊網絡上的狀態變化,所以需要充以太坊節點獲取最新的區塊信息。Chainlink與以太坊節點通過WebSocket進行通信。所以接下來需要獲取Ethereum節點的地址。
如果以太的客戶端節點容易與Chainlink的節點運行在同一臺主機上,可以通過下面的命令獲取到以太坊節點地址。
ETH_CONTAINER_IP=$(docker inspect --format ‘{{ .NetworkSettings.IPAddress }}’ $(docker ps -f name=eth -q))`
然后將以太坊的地址寫入到Chainlink的環境變量文件中:
echo “ETH_URL=ws://$ETH_CONTAINER_IP:8546” 》》 ~/.chainlink-ropsten/.env`
其中8546是以太坊節點默認的WebSocket監聽端口,確保不要連接成REST或其他端口。
如果以太坊節點和Chainlink節點不再同一臺機器上,請獲取到以太坊所在機器的IP地址,并確保以太坊所監聽的WebSocket端口開放。
運行Chainlink容器
cd ~/.chainlink-ropsten && docker run --name chainlink -p 6688:6688 -v ~/.chainlink-ropsten:/chainlink -it --env-file=.env smartcontract/chainlink local n
首次啟動的時候會要求兩個密碼,第一個輸入的是節點錢包的密碼,可以用來解鎖節點自動生成的keystore。輸入之后還需確認一次。第二個密碼是一個賬戶和密碼對,是GUI界面的登錄密碼和API的調用密碼。
這兩個密碼和賬號請務必牢記,如果丟失可能需要重新建節點。
你還可以把賬號和密碼寫到環境變量的配置文件里,防止在終端輸入時的拼寫錯誤。
同樣,啟動之后可以通過Ctrl+P 和 Ctrl+Q 來與docker的環境分離(detach),再次啟動時輸入docker start chainlink 即可。此時建議您將節點密碼配置到文件中以方便使用。
不出意外的話你的第一個Chainlink節點就搭建完成啦。你可以通過在瀏覽器中輸入節點ip:6688來訪問節點管理界面了。
評論
查看更多