原文連結:醒者呆的部落格園,www.cnblogs.com/Evsward/p/9…
EOSIO/eos 目前在github的專案活躍度方面排名第一,release版本更新的速度讓人應接不暇。今天EOS的大版本1.1釋出,我也有幸參與了貢獻,本篇文章重點介紹1.1版本的重大功能升級。
關鍵字:eos, eos 1.1, MongoDB,Read-Mode: HEAD,sync,優雅退出,keosd的硬體支援
MongoDB plugin
我們知道目前eos的本地儲存結構是簡單的檔案儲存,對於備份和資料查詢等管理角度,略顯尷尬。新版本推出了MongoDB外掛eosio::mongo_db_plugin,
-
eosio::mongo_db_plugin 將區塊鏈資料歸檔至MongoDB資料庫中。
-
這份區塊鏈的資料是隻讀的,支援高可擴充套件以及方便的資料查詢工作。
-
支援部署和訪問一個MongoDB叢集。
通過對原始碼的瀏覽,可以檢視到該外掛支援的主要函式功能:
void consume_blocks(); // 消費區塊
void accepted_block( const chain::block_state_ptr& );
void applied_irreversible_block(const chain::block_state_ptr&);
void accepted_transaction(const chain::transaction_metadata_ptr&);
void applied_transaction(const chain::transaction_trace_ptr&);
複製程式碼
這些功能有消費區塊、接收區塊、應用不可逆區塊、接收交易、應用交易,在這些功能函式的實現中,也看到佇列的使用,很可能我們未來不必自己引入第三方佇列而直接使用這些新特性即可。這些功能從字面上就能感受到背後的潛力,未來會單獨介紹這個外掛。
Read-Mode: HEAD
配置nodeos為“只讀頭區塊”模式,意味著所有RPC請求都會返回頭區塊的資料,頭區塊就是最新的一個區塊。
它的含義主旨要抓住:就是它不會讀取未確認的,或者花費在p2p網路中延遲的交易。
複製程式碼
這個模式也跟我們之前討論的交易確認的方案分析形成互動。我們可以通過這個模式下的請求判斷出某個交易是至少被一個生產者確認的,但可能還沒有最終定局。
nodeos的效能提升
一、同步速度加快
之前,一個新節點加入區塊鏈時,需要嘗試保持一個良好的網路狀態,然後驗證以及轉播它接收到的交易。如果鏈資料有很大一部分需要同步到新節點,資料的驗證準確度會降低,驗證的耗費也會增多。所以新版本中:
新節點不轉播交易,在它沒完成資料同步之前。這樣可以提高新節點同步的速度。
複製程式碼
二、資料庫大小警衛
EOSIO是通過兩個記憶體資料庫儲存資料:一個是state DB,一個是reversible block DB。現在使用警衛保護:
- 允許執行的例項nodeos檢測即將到來的限制
- 優雅退出,防止可怕的BAD_ALLOC異常引發的資料庫髒資料,必須要replay整條鏈進行修復。這是一個從dawn3.0就困擾我的問題。
- 現在恢復一個資料庫的操作,就像修改單個配置一樣容易
- 重新啟動的這個過程,再也不需要replay或resync的操作了。
Alpha:keosd的硬體支援
我們都知道,區塊鏈的賬戶的私鑰的保管是一個問題,登陸驗證身份的過程也很容易涉及安全的風險,從1.1開始,正式引入了對keosd的硬體支援,當前目前仍舊是測試版本,還未成為生產版本。
Apple's Secure Enclave
使用蘋果電腦的人們目前可通過Secure Enclave提供的基於硬體的祕鑰保護他們的EOSIO賬戶。通過命令
cleos wallet create_key -n SecureEnclave
複製程式碼
使用Secure Enclave wallet來建立key,不需要import操作。另外,mac中你要訪問Secure Enclave的行為必須被簽名。
YubiHSM 2
YubiHSM 2是一個外部硬體安全模組,可新增到任何使用者的電腦通過USB埠。keosd現在允許任何使用Linux發行版和MacOS的使用者保護他們的EOSIO賬戶,通過YUbiHSM 2提供的基於硬體的祕鑰。這個手段可能會被生產者大量使用。
login 外掛
登入外掛是第一個支援基於EOSIO blockchain的應用驗證概念的元件。外掛API允許您來驗證一個使用者是否能夠簽名滿足指定的許可權。
目前login外掛只是初步的設計,並無法上生產環境,就像存在了好幾個版本的MongoDB外掛在當前這個版本才被正式推出一樣,login外掛日後還會迎來大量修改。
其他的重要改變
- cleos以及rpc可通過二級索引讀取table資料
- 多簽名合約eosio.msig可以提案一個包含多個actions的transaction
- 新增系統賬戶eosio.sudo,這個賬戶只有超過三分之二絕對多數的active 區塊生產者才能使用,它的子命令exec可以繞過所有的許可權檢查
- 發行原子的delegatebw / buyram事務,解決了賬戶餘額足夠卻無法購買記憶體的和抵押cpu資源。
- 使用KiB 來購買記憶體,buyram
- 改進了錯誤提示,這些錯誤一般都是在校驗環節,原來的錯誤日誌很模糊不清晰
- RPC可以獲取定時事務
- nodeos提供灰名單賬戶,阻止其訪問資源在一個無人認領的擁堵鏈
- nodeos更好的控制塊傳輸的時間,來彌補生產者之間的網路延遲,使用引數produce_time_offset_us
- nodeos檢查點(通過signal emit的方式)可以在同步期間,執行確權塊上鍊,共識相關。
- 支援匯入匯出可逆塊資料庫作為行動式檔案格式,這個特性可以在資料備份設計中使用
- 提高生產者水印追蹤,解決生產者出塊後落選再次選中出塊以後造成confirmed值延續很高的bug
- 日誌更新使用ISO國際標準化時間戳
相關文章和視訊推薦
圓方圓學院彙集大批區塊鏈名師,打造精品的區塊鏈技術課程。 在各大平臺都長期有優質免費公開課,歡迎報名收看。
公開課地址:ke.qq.com/course/3451…