EOS主網即將上線,那些你一定要知道的事兒
Eos.Store的自白
Eos.Store作為超級節點的競選者之一,期望可以成為其守護者以及EOS生態繁榮的建設者,並致力構造一個開放多元平衡的應用生態。圍繞EOS生態,Eos.Store將以社群為中心,構建基於EOS的DAPP超級應用市場,幫助更多的開發應用落地,同時社區每一位以Eos.Store社群繁榮的用戶將有優先投票權幫助社區更好地發展,促使整個EOS生態合理有序。感謝大家的支持,請與我們一起見證未來…
本篇文章是延續「入門(一)」繼續講解的,上一篇沒有看過的朋友可以先閱覽一下(入門(一)丨EOS價格突破20美元,創歷史新高,你了解EOS么?)
正文繼續:
EOS術語解釋
Account,賬戶
Authority,權力
Block,縮寫Blk,每個區塊可包含0個或多個交易,以及一個對前置區塊的加密連接。不可逆。
DAC,分權自治集體,或者是分權自治公司。
DAO,分權自治組織
Deferred Transaction,縮寫defTx,延期交易。該交易是有智能合約所創建,會在未來的某個時間被執行。這個交易也能夠創建另一個在其之後的交易。因此,延期交易可以創建無限循環的順序交易。用戶授權一個延期交易必須指定到執行的時刻擁有足夠的帶寬,存儲來執行預期交易。
DLTs,分散式賬本技術。一種分散式賬本(也被稱作共享式賬本),它是一個基於複製、共享以及同步數字化資產的跨站點、跨國家、跨機構的共識。
DPoS,授權權益證明。此外,也可以代表民主即權益證明。DPoS是共識演算法的一種,即區塊生產者能夠針對交易或區塊的真實性,可驗證,不可逆等特性達成共識的一種方法。
Key pair,縮寫keys,一個密鑰對,包括公鑰和其對應的私鑰。
larimer,一種EOS的計量單位,等於0.0001 EOS。(性質如同以太坊中的Wei)
Master Password,用於解鎖,或解密一個錢包文件的密碼。
Action,一個對區塊鏈的改變動作。可以是一個或這多個動作組成一個交易。
Non-Producing Node,非生產節點,也可以被理解為普通節點。這是一個完整的區塊鏈節點,但它智能觀察和驗證區塊,以及只能維護自己本地區塊鏈的拷貝。一個普通節點可以在一個「備用池」中,通過投票流程稱為生產節點(具備出塊權的超級節點)一個超級節點,也會被投票出局,成為一個普通節點。但是值得注意的是,大多數普通節點並不在「備用池」中。
Oracle,在區塊鏈和智能合約的上下文中,它是一個代理,被智能合約使用用來找到和驗證實際發生的並提交這個信息到區塊鏈上。
peer-to-peer,p2p,對等計算或網路是一個分散式應用程序架構,在對等環境下,它被分去為任務或者是工作量。對等節點是擁有等價許可權,在應用程序中的參與機會均等。他們組成了點對點的網路節點。
Permission,加權的,安全機制,通過評估它的簽名權力來確定一個信息是否被正確授權。
Private Key,用來簽名交易的私鑰。
Public Key,縮寫pub key,公鑰,會在交易間被傳輸。
Scope,作用域,智能合約的作用域,智能合約智能寫入他們同一個作用域的自己的其他合約,而只能夠讀取其他作用域的合約。
Smart Contract, 智能合約,一個計算機協議,旨在促進、驗證或執行談判。
Standby Pool,100個全節點的集合,渴望被選中為21個超級節點之一,他們實際上已經擁有了超級節點的能力,無論何時鏈需要替換一個超級節點時,就會從備用池中選擇。
Transaction,縮寫Tx,Txn。它有事務的含義,一般我們稱作交易。它是一個完整的原子的區塊鏈的變化,一個或多個消息的組合,在EOS中通常是由一個智能合約來執行。
Wallet,錢包,會生成一個加密錢包文件或是通過客戶端來管理,例如cleos。它管理了私鑰以及用一個安全的方式去促進交易的簽名。錢包可以被鎖定或解鎖。
Block Producer, 縮寫bp。21個超級節點之一,是目前正在出塊輪次的那個超級節點。
構建本地環境
EOS三個組件:
nodeos:服務端區塊鏈節點組件
cleos:命令行介面,與區塊鏈交互,管理錢包,管理賬戶,在區塊鏈上調用方法。(很重要,相當於以太坊web3)
keosd:管理EOSIO錢包的組件。
接下來,我們將構建這些EOSIO組件,並將它們部署在一個主機,通過單個節點對網路(testnet)進行測試與配置。
構建源碼
recursive參數會將所有子組件自動克隆下來,最終我們會在本地得到全部完整的源碼。
自動構建源碼。
構建時間較長,最終構建成功的頁面如下:
手動構建源碼
安裝開發工具包
wget 下載llvm-key出錯,可以按照提示加入參數--no-check-certificate搞定。
依賴
基於我本機是Ubuntu16.04,除了使用上面的自動編譯以外,也可以手動安裝,不怕折磨的話。
目前EOS當前版本的依賴包括:
Clang 4.0.0
CMake 3.5.1
Boost 1.66
OpenSSL
LLVM 4.0
secp256k1-zkp (Cryptonomex branch)
依賴安裝請參照官方文檔
跑單元測試
這一步是為了驗證源碼功能完整度,耗時也較久。
安裝命令
命令會被安裝在/usr/local。執行完這個命令以後,我們可以在系統任何位置進行命令啟用。
啟動一個單獨節點
構建完成後,會在build/programs/目錄中出現nodeos文件夾,這是我們要啟動節點的工具。通過以下命令啟動你自己的獨立節點區塊鏈
這條命令中,可執行文件./nodeos後面有很多參數,好看的是後面的plugin是啟動時對插件的配置,剩下的參數配置我們會在接下來介紹到。啟動以後,日誌列印出來相關信息:
下面來逐一分析一下這個日誌內容,可以看出EOS啟動私鏈節點是通過插件實現的,在啟動私鏈前,要對插件進行初始化配置,啟動各依賴組件處理器。下面來列舉一下主要插件內容:
wallet_plugin,錢包管理相關,啟動階段只出現過一次,說明它的功能主要依賴啟動後的操作,而在啟動期間需要做的配置很少。
walletapiplugin,依賴於wallet_plugin,出現一次,應該是提供外部調用與錢包交互的介面服務。
http_plugin,啟動階段大量出現的插件,說明在準備期,針對HTTP的配置和添加介面服務非常多。配置包括url,埠,監聽。介面服務包括錢包相關,鏈相關,賬戶相關的一系列api地址。
chain_plugin,鏈插件配置,出現了幾次,除了初始化啟動以外,還有針對鏈數據讀取模式的配置為read/write模式,生成創世塊配置文件genesis.json,以及展示了創世區塊的各種屬性信息。
chainapiplugin,同樣的,依賴於chain_plugin,提供外部調用鏈相關操作的介面服務。
net_plugin,網路插件,出現了幾次,是對網路節點的基本配置,包括網路日誌的級別為info,本地網路監聽埠,生成節點id。最後啟動監聽器,並設置了以該網路節點為伺服器的客戶端最多能夠連入25個。
main,主插件,對eosio這整個軟體的一個主要插件,配置了eosio的版本以及展示了eosio工作的本地root地址。
accounthistoryapi_plugin,顧名思義,賬戶歷史介面插件,估計是與賬戶歷史相關的供外部調用的介面服務。
producer_plugin,區塊生產者插件,插件啟動。
以上出現的所有插件亦可理解為組件。
接著看日誌,提示我創世塊時間戳過時,可以通過一個參數來修改,下面我嘗試修改一下,在以上啟動命令加入了參數,重新啟動:
重新啟動以後,列印出來的日誌中,前面的都是相同的,我們從producer_plugin貼出來是:
可以看到,那個關於創世塊時間戳的提示已經消失,producer_plugin插件啟動開始與完畢。接下來就是
fork_database程序,推送區塊,報出了消失區塊好2783。TODO:這一行還待未來分析解決。
接下來就是正常出塊了,由於我們本地啟動的節點一定是具備出塊權的(目前只有一個節點未涉及共識),這些塊是不包含任何交易信息的,出塊速度很快。
停止
斷開私鏈直接按下複製鍵(Ctrl+C)即可,日誌中也有體現:
可以看到私鏈停止時,都是通過netplugin插件來操作,操作的方法是與pluginstartup對應的plugin_shutdown,步驟為:
開始關閉的標識
關閉接收器acceptor
關閉連接
完成私鏈停止工作,退出shutdown程序
以上內容在未來的源碼分析中均會涉及。
(未完待續,精彩講解敬請期待)
TAG:全球大搜羅 |