【劉文彬】 EOS1.1版本新特性介紹

原文鏈接:醒者呆的博客園,https://www.cnblogs.com/Evsward/p/9330057.html

EOSIO/eos 目前在github的項(xiàng)目活躍度方面排名第一,release版本更新的速度讓人應(yīng)接不暇。今天EOS的大版本1.1發(fā)布,我也有幸參與了貢獻(xiàn),本篇文章重點(diǎn)介紹1.1版本的重大功能升級(jí)。

關(guān)鍵字:eos, eos 1.1, MongoDB,Read-Mode: HEAD,sync,優(yōu)雅退出,keosd的硬件支持

MongoDB plugin

我們知道目前eos的本地存儲(chǔ)結(jié)構(gòu)是簡單的文件存儲(chǔ),對(duì)于備份和數(shù)據(jù)查詢等管理角度,略顯尷尬。新版本推出了MongoDB插件eosio::mongo_db_plugin,

  • eosio::mongo_db_plugin 將區(qū)塊鏈數(shù)據(jù)歸檔至MongoDB數(shù)據(jù)庫中。

  • 這份區(qū)塊鏈的數(shù)據(jù)是只讀的,支持高可擴(kuò)展以及方便的數(shù)據(jù)查詢工作。

  • 支持部署和訪問一個(gè)MongoDB集群。

通過對(duì)源碼的瀏覽,可以查看到該插件支持的主要函數(shù)功能:

    void consume_blocks(); // 消費(fèi)區(qū)塊
    
    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&);

這些功能有消費(fèi)區(qū)塊、接收區(qū)塊、應(yīng)用不可逆區(qū)塊、接收交易、應(yīng)用交易,在這些功能函數(shù)的實(shí)現(xiàn)中,也看到隊(duì)列的使用,很可能我們未來不必自己引入第三方隊(duì)列而直接使用這些新特性即可。這些功能從字面上就能感受到背后的潛力,未來會(huì)單獨(dú)介紹這個(gè)插件。

Read-Mode: HEAD

配置nodeos為“只讀頭區(qū)塊”模式,意味著所有RPC請(qǐng)求都會(huì)返回頭區(qū)塊的數(shù)據(jù),頭區(qū)塊就是最新的一個(gè)區(qū)塊。

它的含義主旨要抓?。壕褪撬粫?huì)讀取未確認(rèn)的,或者花費(fèi)在p2p網(wǎng)絡(luò)中延遲的交易。

這個(gè)模式也跟我們之前討論的交易確認(rèn)的方案分析形成互動(dòng)。我們可以通過這個(gè)模式下的請(qǐng)求判斷出某個(gè)交易是至少被一個(gè)生產(chǎn)者確認(rèn)的,但可能還沒有最終定局。

nodeos的性能提升

一、同步速度加快

之前,一個(gè)新節(jié)點(diǎn)加入?yún)^(qū)塊鏈時(shí),需要嘗試保持一個(gè)良好的網(wǎng)絡(luò)狀態(tài),然后驗(yàn)證以及轉(zhuǎn)播它接收到的交易。如果鏈數(shù)據(jù)有很大一部分需要同步到新節(jié)點(diǎn),數(shù)據(jù)的驗(yàn)證準(zhǔn)確度會(huì)降低,驗(yàn)證的耗費(fèi)也會(huì)增多。所以新版本中:

新節(jié)點(diǎn)不轉(zhuǎn)播交易,在它沒完成數(shù)據(jù)同步之前。這樣可以提高新節(jié)點(diǎn)同步的速度。

二、數(shù)據(jù)庫大小警衛(wèi)

EOSIO是通過兩個(gè)內(nèi)存數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù):一個(gè)是state DB,一個(gè)是reversible block DB?,F(xiàn)在使用警衛(wèi)保護(hù):

  • 允許運(yùn)行的實(shí)例nodeos檢測(cè)即將到來的限制
  • 優(yōu)雅退出,防止可怕的BAD_ALLOC異常引發(fā)的數(shù)據(jù)庫臟數(shù)據(jù),必須要replay整條鏈進(jìn)行修復(fù)。這是一個(gè)從dawn3.0就困擾我的問題。
    • 現(xiàn)在恢復(fù)一個(gè)數(shù)據(jù)庫的操作,就像修改單個(gè)配置一樣容易
    • 重新啟動(dòng)的這個(gè)過程,再也不需要replay或resync的操作了。

Alpha:keosd的硬件支持

我們都知道,區(qū)塊鏈的賬戶的私鑰的保管是一個(gè)問題,登陸驗(yàn)證身份的過程也很容易涉及安全的風(fēng)險(xiǎn),從1.1開始,正式引入了對(duì)keosd的硬件支持,當(dāng)前目前仍舊是測(cè)試版本,還未成為生產(chǎn)版本。

Apple's Secure Enclave

使用蘋果電腦的人們目前可通過Secure Enclave提供的基于硬件的秘鑰保護(hù)他們的EOSIO賬戶。通過命令

cleos wallet create_key -n SecureEnclave

使用Secure Enclave wallet來創(chuàng)建key,不需要import操作。另外,mac中你要訪問Secure Enclave的行為必須被簽名。

YubiHSM 2

YubiHSM 2是一個(gè)外部硬件安全模塊,可添加到任何用戶的電腦通過USB端口。keosd現(xiàn)在允許任何使用Linux發(fā)行版和MacOS的用戶保護(hù)他們的EOSIO賬戶,通過YUbiHSM 2提供的基于硬件的秘鑰。這個(gè)手段可能會(huì)被生產(chǎn)者大量使用。

login 插件

登錄插件是第一個(gè)支持基于EOSIO blockchain的應(yīng)用驗(yàn)證概念的組件。插件API允許您來驗(yàn)證一個(gè)用戶是否能夠簽名滿足指定的權(quán)限。

目前l(fā)ogin插件只是初步的設(shè)計(jì),并無法上生產(chǎn)環(huán)境,就像存在了好幾個(gè)版本的MongoDB插件在當(dāng)前這個(gè)版本才被正式推出一樣,login插件日后還會(huì)迎來大量修改。

其他的重要改變


相關(guān)文章和視頻推薦

圓方圓學(xué)院匯集大批區(qū)塊鏈名師,打造精品的區(qū)塊鏈技術(shù)課程。 在各大平臺(tái)都長期有優(yōu)質(zhì)免費(fèi)公開課,歡迎報(bào)名收看。

公開課地址:https://ke.qq.com/course/345101

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • eos項(xiàng)目(v1.0.9)主要可以分為以下八個(gè)模塊:1.編譯模塊2.主程序模塊3.依賴庫模塊4.插件模塊5.智能合...
    vdes閱讀 2,934評(píng)論 0 1
  • EOS 資源匯總 A curated list of EOS Ecosystem by [SuperONE](ht...
    shenciyou閱讀 4,070評(píng)論 0 21
  • 1xx消息 這一類型的狀態(tài)碼,代表請(qǐng)求已被接受,需要繼續(xù)處理。這類響應(yīng)是臨時(shí)響應(yīng),只包含狀態(tài)行和某些可選的響應(yīng)頭信...
    linbj閱讀 600評(píng)論 0 0
  • 隨著越來越多的把芳香用在日常的生活中,也越來越深的感觸到大自然的神奇,她給我們有足夠的預(yù)備,只是,要去尋見。而尋的...
    清香讀書1000天閱讀 356評(píng)論 3 4
  • 有時(shí)候,某些心理學(xué)書里說的東西也不太靠譜。這點(diǎn)是個(gè)人一早在馬桶上思考所得的收獲。話說昨夜夢(mèng)中自家一直在找?guī)?,找?guī)?..
    競走的蝸牛閱讀 219評(píng)論 0 0

友情鏈接更多精彩內(nèi)容