1. 程式人生 > >EOS基礎全家桶(一)開篇

EOS基礎全家桶(一)開篇

簡介

從今天開始我會在FishoPark上與大家分享EOS的一些技術經驗和基礎,如果大家在看文章的過程中有任何問題,歡迎在網站下方的評論裡留言,我會盡力為大家解答,如果發現我內容中所寫有錯,歡迎指正,謝謝。

那麼首先我們在開始學習EOS之前,需要先了解一下EOS開發所需的預備知識和環境。

EOS開發準備

EOSIO的開發,你最好具有以下經驗:

  • C/C++的開發經驗
  • Linux/Mac的使用經驗
  • 命令列的使用經驗,最好是bash命令的

在開始前,我們需要準備執行環境,目前EOSIO還不支援Windows環境,所以如果我們要使用Windows來進行開發或者測試時,只能通過虛擬技術執行Linux或者Mac環境。

如果你還沒有安裝虛擬機器,那麼我建議你直接安裝docker,在docker中執行linux系統容器甚至EOSIO的容器會是一個不錯的選擇。如果你使用的是Win10系統的話,你需要下載Docker Desktop,這是docker的桌面版,Win10系統將只支援這一種安裝方式。更多docker的內容,請閱讀Docker專欄(後續更新)。

如果你使用的是以下系統,那麼可以直接進入下一章節:

  • Amazon 2017.09 and higher
  • Centos 7
  • Fedora 25 and higher (Fedora 27 recommended)
  • Mint 18
  • Ubuntu 16.04 (Ubuntu 16.10 recommended)
  • Ubuntu 18.04
  • MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended)

C/C++

因為EOS是使用c編寫,並且智慧合約也使用c編寫,所以你會需要掌握一定的c的程式設計基礎,如果你不打算深入瞭解EOS原始碼,只是為了能看懂或能編寫智慧合約,那你需要了解基本的c的檔案結構、基本資料型別、引用和指標還有就是multi-index和麵向物件的基本程式設計。有一定英語基礎的朋友可以考慮直接觀看這本電子書Learn EOS - c/c++ 教程英文版,
這個文章是Christoph Michel寫的EOS開發的書的C++樣章,如果喜歡改內容,請購買書籍。LearnEOS書籍官網

Docker

對於沒有Mac或者Linux環境的朋友,就需要安裝Docker了,當然,Docker本身提供了與執行系統很好的系統環境隔離,也可作為開發中的輔助,在EOS節點章節和智慧合約章節我會更近一步展示使用Docker能為我們帶來的便利。

Docker安裝

視覺化Docker程式有兩個版本,早先的Windows/Mac系統支援的是Docker Toolbox, Win10、macOS Sierra 10.12後支援新的Docker Desktop。

具體安裝步驟我這裡就不做展示和說明了,如果大家對於這塊兒有問題的話歡迎留言,我會提供指導和幫助。

Docker基本使用

Docker本身也是虛擬技術的一種,只是在虛擬機器上抽象出來的一層,將底層共享,隔離出上層。相比於虛擬機器,資源佔用更少,更輕量,構建容器也更容易,也更適合用於隔離環境下,被大量用於微服務架構和SaaS(Software-as-a-Service)的設計架構中。

推薦Docker學習部落格。

Images-映象

映象更像是系統快照,可方便的在任意時刻由映象來建立容器。Docker自身提供了Docker Hub,用於管理公共映象,我們可以搜尋所需的映象,也可以上傳自己的映象。
國內在訪問Docker官方的映象庫時可能存在網路延遲甚至無法連線,導致映象無法拉取,所以在國內我們需要配置國內的Docker映象加速器。

國內映象地址

docker-cn加速器地址 https://registry.docker-cn.com
網易加速器地址 http://hub-mirror.c.163.com
Docker中國區官方映象https://registry.docker-cn.com
ustc https://docker.mirrors.ustc.edu.cn
中國科技大學https://docker.mirrors.ustc.edu.cn
阿里雲容器服務,通過建立地址首頁點選“建立我的容器映象”,得到一個專屬的映象加速地址,類似於https://1234abcd.mirror.aliyuncs.com

下面我會具體說明如何配置國內映象,我以docker-cn的地址為例。

  • Windows/Mac

針對安裝了Docker Toolbox的使用者,您可以參考以下配置步驟:
建立一臺安裝有Docker環境的Linux虛擬機器,指定機器名稱為default,同時配置Docker加速器地址。

docker-machine create --engine-registry-mirror=https://registry.docker-cn.com -d virtualbox default

檢視機器的環境配置,並配置到本地,並通過Docker客戶端訪問Docker服務。

docker-machine env default
eval "$(docker-machine env default)"
docker info

針對安裝了Docker for Windows的使用者,您可以參考以下配置步驟:
在系統右下角托盤圖示內右鍵選單選擇 Settings,開啟配置視窗後左側導航選單選擇 Docker Daemon。編輯視窗內的JSON串,填寫下方加速器地址:

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

編輯完成後點選 Apply 儲存按鈕,等待Docker重啟並應用配置的映象加速器。

  • CentOS/Ubuntu

針對Docker客戶端版本大於 1.10.0 的使用者

您可以通過修改daemon配置檔案/etc/docker/daemon.json來使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
搜尋映象

如果你正在找eosio的映象,那麼你可以在docker hub上進行搜尋。

或者你也可以通過命令來搜尋。

docker search eosio

拉取映象

拉取映象時,需要指出拉取的tag,相當於版本號,預設是latest。

docker pull eosio/eos-dev@lastest

@latest是指出拉取tag,如果是latest,可預設。而映象有哪些tag,可在docker hub的網站上查詢到。

其他一些映象命令
#list
docker images

#remove
docker rmi -f eosio/eos-dev

Container-容器

  • 建立容器

以下是最基本的用法,直接就在當前會話中執行並輸出。

docker run eosio/eos

docker的容器其實有很多功能,我們先看下面這個命令:

docker run --rm --name eosio -d \
-p 8888:8888 -p 9876:9876 \
-v /tmp/work:/work -v /tmp/eosio/data:/mnt/dev/data \
-v /tmp/eosio/config:/mnt/dev/config \
eosio/eos-dev  \
/bin/bash -c "nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::wallet_plugin --plugin eosio::producer_plugin --plugin eosio::history_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --plugin eosio::http_plugin -d /mnt/dev/data --config-dir /mnt/dev/config --http-server-address=0.0.0.0:8888 --access-control-allow-origin=* --contracts-console  --hard-replay"

這個指令是建立一個eosio開發環境的節點容器。

  1. –rm 選項是說明該容器在停止後就會立即刪除,此處使用是為了進行eos節點資料的恢復,所以是一次性的
  2. –name 容器名稱
  3. -d 後臺執行,即不會在當前命令列的會話中執行
  4. -p 埠對映,將容器內埠對映到外層環境中,可多次使用
  5. -v 掛載,將外層環境的目錄掛載到容器中,可多次使用
  • 刪除容器

如果容器已命名,可以直接通過名稱刪除,否則只能通過容器id刪除。

docker rm eosio
  • 啟動/停止/重啟容器
#啟動
docker start eosio
#停止
docker stop eosio
#重啟
docker restart eosio
  • 檢視容器列表
docker ps

如果需要檢視所有容器,包括已停止的,可以帶上-a引數。

  • 執行命令

使用以下命令,可以進入eosio中調起bash,並等待輸入。

docker exec -it eosio /bin/bash

Log

以下命令是輸出eosio容器的最後100行控制檯內容。

docker logs --tail 100 eosio

原文鏈