之因此開這個坑是由於我也算是幣圈的投資者之一,幣圈如今有不少的EOS信仰者,可是目前大部分所謂的有信仰者並不瞭解EOS代碼,只是聽別人說EOS是下一代以太坊,或者是據說ByteMaster很是牛逼,可是卻鮮有真正意義上對EOS代碼去作更深層次研究的。html
既然須要你們知其然,知其因此然,本着這樣的精神,我這個移動開發者也去嘗試的探究一下各類所謂的Token幣也好,主鏈幣也好,究竟他們到底有沒有點真本事,亦或是說只是些騙人的白皮書把戲。git
鑑於我平時是個iOS開發者,主要使用的語言是Swift和Objective-C(其實OC用的也不多了,都不熟悉了),而大多數的區塊鏈底層OS類型產品都是使用C++做爲開發語言,因此這個過程對我來講也是一個逐漸學習C++的過程。固然不免我也會犯下很多的錯誤,因此若是你們有發現任何的問題,或者是以爲我什麼地方寫錯了,都歡迎你們指出。github
根據EOS.IO的白皮書:算法
EOS.IO 軟件引入一種新的區塊鏈架構設計,它使得去中心化的應用能夠橫向和縱向的擴展。 這經過構建一個仿操做系統的方式來實現,在它之上能夠構建應用程序。 該軟件提供賬戶、身份驗證、數據庫、異步通訊和跨越數百個 CPU 內核或集羣的應用程序調度。 由此產生的技術是一種區塊鏈架構,它能夠擴展至每秒處理百萬級交易,消除用戶的手續費,而且容許快速和輕鬆的部署去中心化的應用。數據庫
同時,EOS.IO的白皮書還講到了EOS.IO在設計之初的幾個主要目標:微信
- 支持成百上千的用戶
- 免費的使用
- 簡單升級和 bug 修復
- 低延時
- 時序性能
- 併發性能
這其中,最吸引人的應該就是所謂的每秒處理百萬級交易,由於有了這樣級別的處理能力才能讓區塊鏈有了真正的大規模應用的可能性。與之相對應的有Ethereum,初期的測試網絡的處理能力是25筆交易每秒,通過逐漸的優化以後,可能能夠達到50-100筆交易每秒。而這50-100筆的每秒交易筆數顯然是不能知足大規模應用的,在2017年時候出現的爆紅一時的Cryptokitties(以太貓)就很明顯的暴露了這個問題。網絡
支持百萬級別的每秒交易筆數也是EOS.IO相對Ethereum來講最核心,也是最本質的革命。架構
固然,先別高興的太早,究竟能不能實現,咱們以後再來探究。併發
EOS.IO採用委託股權證實算法,全稱是delegated proof of stake,縮寫就是DPOS.iphone
DPOS最先在數字貨幣的應用應該是BitShare(比特股),也就是ByteMaster的第一個區塊鏈產品,最先的時候是爲了出一個基於區塊鏈的去中心化交易所和去中心的化的區塊鏈銀行,因此出現了一個稱爲比特股內盤的平臺,有興趣的能夠去這個地址看一下什麼是比特股內盤。
在這裏要提到比特股內盤的緣由是,比特股是一個很好的體現ByteMaster想法的應用,也正是由於其中存在的質押模式,讓EOS.IO最近受到了很大的質疑。這個咱們也在後面再談。
先簡單介紹一下DPOS,後面在考慮單獨出一篇文章介紹一下各類不一樣的共識算法。
DPOS顧名思義,就是講共識機制委託給對應的人進行決定。以比特股做爲例子,DPOS會讓每個持有比特股的人進行投票,產生101位表明,這101位表明每一個人擁有相同的權益,而最終的來決定哪一條鏈是有效的真實的鏈,則是由這101位表明的狀況來決定。
這聽起來是否是有點像人大會議或者是議會制度?由多數人選出少數人,再由這部分少數人來投票出最後的決定。而這樣的投票最終的目標是確保沒有任何人可以篡改歷史。
具體爲何這樣的模式能夠作到這一點,能夠參考Steemit上dantheman在2017年6月發表的文章《DPOS Consensus Algorithm - The Missing White Paper》。
想要看中文翻譯的版本的,能夠參考奚海峯在萬雲BaaS上發表的翻譯稿,雷鋒網當時進行了轉載,能夠在此看到當時的具體內容。
回到EOS.IO來看共識算法,基於DPOS的EOS.IO會每三秒產生一個新的區塊,這個區塊必須由投票產生的21位生產者輪流生產出來,這樣,完成一個輪迴以後,就會從新選出21位生產者。選擇的過程當中,得到票數數量的前20名自動被選中,剩下的一個生產者則須要按照得票比例來選出。
可能只是這樣簡單的說會比較很差理解,以後能夠根據具體的代碼來作進一步的分析。
以上就是我我的認爲EOS.IO比較重要的一些東西了,接下去,會按照代碼來看看EOS.IO。
術語名稱 | 同義詞 | Block.one的解釋 |
---|---|---|
Account(帳戶) | 區塊鏈上擁有一個或者多個密鑰/帳戶的原生或有自定義權限的的標識符 | |
Authority(權限) | 對現實中單個帳戶或多個帳戶的受權的一種抽象 | |
Block(區塊) | Blk | 區塊鏈的最小單位。每一個區塊包含大於等於0筆交易和密碼學性質上於以前一個區塊的聯繫。當大多數生產者都確認一個區塊中包括了無誤的交易,那這個區塊就被不可逆轉的確認了。當一個區塊被不可逆轉的確認之後,它就變成了不可變區塊鏈上的永久一部分。 |
DAC | 去中心化自治集合/去中心化自治委員會 | |
DAO | 去中心化自治組織 | |
DPoS | 委任權益證實算法 | |
Key pair | Keys | 與私有密鑰對應的公開密鑰 |
larimer | 1/10000個EOS | |
Master Password(主密碼) | 用於解鎖錢包的密碼 | |
Message(消息) | Msg | 對區塊鏈進行的操做,一條或多條消息組成一筆交易 |
Oracle(預言機) | 區塊鏈智能合約提供可信鏈外數據以觸發智能合約順利執行的數據源 | |
Permission(權限) | 經過對簽名驗證來判斷消息是否是通過受權的一種驗證機制 | |
Private Key(私鑰) | 用於簽名交易的密鑰 | |
Public Key(公鑰) | pub key | 和交易一塊兒傳送的公開密鑰 |
Smart Contract(智能合約) | 用於創建,驗證或者是執行合約的電腦協議 | |
Transaction(交易) | Tx, Txn | 對區塊鏈作的一次改變,由一個或多個消息組成,通常狀況下是執行一個智能合約 |
Wallet(錢包) | 客戶端創建的一段用於管理私鑰和簽名交易的加密文件。錢包能夠是鎖定或是解鎖狀態 | |
Witness(見證人) | block producer(區塊生產者) | 用於創建,驗證或者是執行合約的電腦協議 |