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學習博客

Docker Command Model

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上進行搜索。

search eosio

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

docker search eosio

search eosio cl

拉取鏡像

拉取鏡像時,需要指出拉取的tag,相當於版本號,默認是latest。

docker pull eosio/eos-dev@lastest

@latest是指出拉取tag,如果是latest,可缺省。而鏡像有哪些tag,可在docker hub的網站上查詢到。

search tag

其他一些鏡像命令
#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


特別說明:因為原eosio官方的鏡像已經停更,所以推薦使用以下鏡像代替eostudio/eos




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM