1. 程式人生 > >5步構建私鏈,7步Neo過億

5步構建私鏈,7步Neo過億

是否,參加了各種Neo活動,對Neo頗感興趣,希望從源頭瞭解這個世界上為數不多的支援智慧合約的公鏈?

是否,總是想參照Neo文件建立一個自己的私鏈,但是總是沒有那麼多時間去昨晚,抑或沒走幾步總是會遇到各種攔路虎?

是否,想研究Neo智慧合約,但是苦於主網(mainnet)gas太貴,測試網(testnet)申請又太麻煩(而且一般都不那麼慷慨)?

是否,希望給大家炫個富,“嘿,看,我有1億Neo!”?

恭喜你,閱讀這篇文章就能解決以上問題。請跟隨筆者一步一步進行操作,每一步都是筆者的成功的操作記錄,請放心食用。本教程已經預設了多項引數,在一般情況下,按照本教程操作就能立即坐擁1億Neo並供你盡情揮霍。

本文面向私鏈體驗者,5步構建私鏈,7步Neo過億

以下操作以Linux指令為主:

  • 第1步,建立Docker環境

Docker支援所有系統,包括Linux、Windows、Mac,Linux為原生支援。

筆者以CentOS 7.4 x64為實驗環境,但是其他系統亦可,最終Docker層都是用CentOS的。

伺服器或虛擬機器建議不要低於2u4G。

  • 第2步,引用筆者編制好的dockerfile構建Neo Cli Docker映象,後面將以次為依託派生容器。

開啟CentOS終端或使用SSH遠端,輸入並執行如下命令:

docker build -t neo-cli:v0.3 https://github.com/NewEconoLab/neo-cli-docker.git#:dockerfile/privatenet

這條命令會從NEL的github自動應用私鏈映象構建指令碼,主要進行如下操作:

  • 構建CentOS Docker映象
  • 安裝dotnet sdk環境
  • 安裝Neo必須的leveldb-devel庫
  • 安裝git
  • 從Neo官方github克隆neo-cli專案最新程式碼
  • 使用dotnet sdk編譯neo-cli
  • 從NEL官方github克隆neo-cli-docker專案
  • 將neo-cli-docker專案中預先配置好的私鏈版config.json和protocol.json檔案替換到neo-cli根目錄
  • 第3步,安裝Docker官方容器編排工具docker-compose,為後面一鍵派生4個記賬人節點容器做準備。

輸入並執行:

sudo pip install -U docker-compose
pipuninstall urllib3
pipuninstall chardet
pip install requests
docker-compose –version
  • 第4步,引用筆者預先設定好的容器編排模板一鍵生成Neo鏈最小規模的4個記賬人節點容器(實際最少3個仍能繼續共識出塊)

輸入並執行:

cd /home
sudo yum -y install  git
git clone https://github.com/NewEconoLab/neo-cli-docker.git
cp neo-cli-docker/dockerfile/privatenet/docker-compose.ymldocker-compose.yml
docker-compose up -d
docker-compose ps

看到這個樣子就表示4個記賬人節點的容器已經成功啟動(此時節點還未啟動)

  • 第5步,分別進入容器,啟動節點,開啟記賬人錢包,啟動共識

輸入並執行:

docker attach cli0進入第一個容器,其後一次為cli1、cli2、cli3

這裡開始是容器內部環境:

cd /home/cli && dotnet neo-cli.dll /rpc啟動Cli節點

open wallet ./docs/neo_private_net_0.json開啟記賬人錢包,其後依次為neo_private_net_1.json、neo_private_net_2.json、neo_private_net_3.json

錢包密碼123456

start consensus啟動共識

最後切記使用特別的組合鍵【Ctrl】+ (【P】->【Q】),即按住【Ctrl】再依次按【P】、【Q】,退出並不停止當前容器。

其他3個節點容器類似依次操作,不在贅述

最後一個節點啟動後,稍等片刻,可以看到私鏈已近開始執行:

可以看出,主記賬人角色是交替承擔的

至此,私鏈已經搭建完成,後面2步是私鏈的應用。

  • 第6步,通過Cli jsonRPC api檢視私鏈執行狀態

安裝postman等api測試程式

使用get方式請求:

http://116.62.160.38:10332/?jsonrpc=2.0&method=getblockcount&params=[]&id=1

其中IP部分要替換成你的電腦或虛擬機器的實際ip。

然後就能看到當前私鏈總的區塊數,要檢視其它資訊,可參考NeoCli api文件

  • 第7步,從記賬人多重簽名合約中取出初始塊中的1億Neo轉到一個非記賬人錢包中
  • 構建能夠連線當前私鏈的config.json和protocol.json檔案

config.json參考:

{
  "ApplicationConfiguration": {
    "Paths": {
      "Chain":"ChainPrivate",
      "Notifications":"NotificationsPrivate"
    },
    "P2P": {
      "Port": 10333,
      "WsPort": 10334
    },
    "RPC": {
      "Port": 10332,
      "SslCert": "",
      "SslCertPassword": ""
    }
  }
}

 protocol.json參考:

{
  "ProtocolConfiguration": {
    "Magic": 9726190,
    "AddressVersion": 23,
    "StandbyValidators": [
     "0249b419692a17fb519c3b42ffbe82ae34855a45e54783a9bc940135b1c2753ece",
     "03298a54cdfb2b5ffae0638c60633de24e3956b76a44867475e81db5ce87b2a16b",
      "02b795b3322f0a171c7e7658371131c0caa77a9279818b85b9d0728a5a63452ff8",
     "0366440bd2a1fe4e0d1dcb9bf35995c5c6e858af846abef145064ab2b5e8ebfce8"
    ],
    "SeedList": [
      "seed0.nel.group:10333",
      "seed0.nel.group:20333",
      "seed0.nel.group:30333",
      "seed0.nel.group:40333",
    ],
    "SystemFee": {
      "EnrollmentTransaction": 1000,
      "IssueTransaction": 500,
      "PublishTransaction": 500,
      "RegisterTransaction": 10000
    }
  }
}

seed0.nel.group需要替換成你的電腦或虛擬機器的實際ip

  • 下載筆者預製好的記賬人錢包和非記賬人錢包

下載 https://github.com/NewEconoLab/neo-cli-dockerZIP

在/dockerfile/privatenet/docs可以找到相關檔案

  • 下載Neo官方GUI錢包,建議是2.6.0.0以上將其中config.json和protocol.json替換成以上內容,然後執行。開啟neo_private_net_0.json  0號記賬人錢包,密碼123456

可以看到一個合約地址中有1億Neo(是不是有點小興奮啊),這個合約地址是由4個記賬人公鑰構造的多重簽名地址合約,需要至少3個記賬人錢包簽名才能轉出。

  • 最終轉出

新建一個新的非記賬人錢包,比如neo_private_net_test_0.json

記住它的地址,比如AWSuQXpjuY3v22gCbEFL2vHbSLMMVK1QD6

開啟0號記賬人錢包,並【交易】-【轉賬】到上面地址

確定後會提示簽名不足

沒事,我們先把整個內容複製出來,然後開啟1號記賬人錢包,【交易】-【簽名】對這筆轉賬交易進行第二人簽名。

複製輸出,然後開啟2號記賬人錢包,【交易】-【簽名】對這筆轉賬交易進行第三人簽名。

此時,左下角出現【廣播】按鈕,代表交易簽名已經完備。

點選【廣播】將交易傳送到私鏈上進行共識

等到15秒左右,1億Neo就到你建立的那個AWSuQXpjuY3v22gCbEFL2vHbSLMMVK1QD6地址中了。

GAS是通過生成區塊,按照Neo持有量,不斷產生的。

通過對自己地址轉賬,然後【高階】-【提取NeoGas】就能將GAS提取到自己地址。

好了,至此你有用了一條新的Neo鏈、1億Neo、無數Gas,開始你的表演吧。

作者:青冥子