在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>md_blockchain Java區塊鏈平臺

md_blockchain Java區塊鏈平臺

2022-04-22 | zip | 0.20 MB | 次下載 | 免費

資料介紹

授權協議 Apache
開發語言 Java
操作系統 跨平臺
軟件類型 開源軟件
所屬分類 服務器軟件存儲系統

軟件簡介

md_blockchain是一個Java區塊鏈平臺,基于Springboot開發的區塊鏈平臺。

理想中的區塊鏈平臺:

poYBAGJg_xyAEKLtAAEYksu2ixA324.png

項目說明

主要有存儲模塊、網絡模塊、PBFT共識算法、加密模塊、區塊解析入庫等。

該項目屬于"鏈",非"幣"。不涉及虛擬幣和挖礦。

存儲模塊

Block內存儲的是類Sql語句。聯盟間預先設定好符合業務場景需要的數據庫表結構,然后設定好各個節點對表的操作權限(ADD,UPDATE,DELETE),將來各個節點就可以按照自己被允許的權限,進行Sql語句的編寫,并打包至Block中,再全網廣播,等待全網校驗簽名、權限等信息的合法性。如果Block合法,則進入PBFT共識算法機制,各節點開始按照PrePrepare、Prepare、Commit等狀態依次執行,直到2f+1個commit后,開始進行本地生成新區塊。新區塊生成后,各節點進行區塊內容解析,并落地入庫的操作。

場景就比較廣泛了,可以設定不同的表結構,或者多個表,進而能完成各自類型信息的存儲。譬如商品溯源,從生產商、運輸、經銷商、消費者等,每個環節都可以對某個商品進行ADD信息的操作。

存儲采用的是key-value數據庫rocksDB,了解比特幣的知道,比特幣用的是levelDB,都是類似的東西。可以通過修改yml中db.levelDB為true,db.RocksDB為false來動態切換使用哪個數據庫。

結構類似于sql的語句,如ADD(增刪改) tableName(表名)ID(主鍵) JSON(該記錄的json)。這里設置了回滾的邏輯,也就是當你做了一個ADD操作時,會同時存儲一條Delete語句,以用于將來可能的回滾操作。

網絡模塊

網絡層,采用的是各節點互相長連接、斷線重連,然后維持心跳包。網絡框架使用的是t-io,也是oschina的知名開源項目。t-io采用了AIO的方式,在大量長連接情況下性能優異,資源占用也很少,并且具備group功能,特別適合于做多個聯盟鏈的SaaS平臺。并且包含了心跳包、斷線重連、retry等優秀功能。

在項目中,每個節點即是server,又是client,作為server則被其他的N-1個節點連接,作為client則去連接其他N-1個節點的server。同一個聯盟,設定一個Group,每次發消息,直接調用sendGroup方法即可。

但仍需要注意的是,由于項目采用了pbft共識算法,在達到共識的過程中,會產生N的3次方數量的網絡通信,當節點數量較多,如已達到100時,每次共識將會給網絡帶來沉重的負擔。這是算法本身的限制。

共識模塊PBFT

分布式共識算法是分布式系統的核心,常見的有Paxos、pbft、bft、raft、pow等。區塊鏈中常見的是POW、POS、DPOS、pbft等。

比特幣采用了POW工作量證明,需要耗費大量的資源進行hash運算(挖礦),由礦工來完成生成Block的權利。其他多是采用選舉投票的方式來決定誰來生成Block。共同的特點就是只能特定的節點來生成區塊,然后廣播給其他人。

區塊鏈分如下三類:

私有鏈:這是指在企業內部部署的區塊鏈應用,所有節點都是可以信任的,不存在惡意節點;

聯盟鏈:半封閉生態的交易網絡,存在不對等信任的節點,可能存在惡意節點;

公有鏈:開放生態的交易網絡,為聯盟鏈和私有鏈等提供全球交易網絡。

由于私有鏈是封閉生態的存儲系統,因此采用Paxos類共識算法(過半同意)可以達到最優的性能;聯盟鏈有半公開半開放特性,因此拜占庭容錯是適合選擇之一,例如IBM超級賬本項目;對于公有鏈來說,這種共識算法的要求已經超出了普通分布式系統構建的范疇,再加上交易的特性,因此需要引入更多的安全考慮。所以比特幣的POW是個非常好的選擇。

我們這里可選的是raft和pbft,分別做私鏈和聯盟鏈,項目中我使用了修改過的pbft共識算法。

先來簡單了解pbft:

(1)從全網節點選舉出一個主節點(Leader),新區塊由主節點負責生成。

(2)每個節點把客戶端發來的交易向全網廣播,主節點將從網絡收集到需放在新區塊內的多個交易排序后存入列表,并將該列表向全網廣播。

(3)每個節點接收到交易列表后,根據排序模擬執行這些交易。所有交易執行完后,基于交易結果計算新區塊的哈希摘要,并向全網廣播。

(4)如果一個節點收到的2f(f為可容忍的拜占庭節點數)個其它節點發來的摘要都和自己相等,就向全網廣播一條commit消息。

(5)如果一個節點收到2f+1條(包括自己)commit消息,即可提交新區塊到本地的區塊鏈和狀態數據庫。

(6)客戶端收到f + 1個成功(即便有f個失敗、再f個惡意返回的錯誤信息,f + 1個正確的也是多數派)的返回,即可認為該次寫入請求是成功的。

可以看到,傳統的pbft是需要先選舉出leader的,然后由leader來搜集交易,并打包,然后廣播出去。然后各個節點開始對新Block進行校驗、投票、累積commit數量,最后落地。

而我這里對pbft做了修改,這是一個聯盟,各個節點是平等的,而且性能要高。所以我不想讓每個節點都生成一個指令后,發給其他節點,再大家選舉出一個節點來搜集網絡上的指令組合再生成Block,太復雜了,而且又存在了leader節點的故障隱患。

我對pbft的修改是,不需要選擇leader,任何節點都可以構建Block,然后全網廣播。其他節點收到該Block請求時即進入Pre-Prepare狀態,校驗格式、hash、簽名、和table的權限,校驗通過后,進入Prepare狀態,并全網廣播狀態。待自己累積的各節點Prepare的數量大于2f+1時,進入commit狀態,并全網廣播該狀態。待自己累積的各節點Commit的數量大于2f+1時,認為已達成共識,將Block加入區塊鏈中,然后執行Block中sql語句。

很明顯,和有leader時相比,缺少了順序的概念。有leader時能保證Block的順序,當有并發生成Block的需求時,leader能按照順序進行廣播。譬如大家都已經到number=5的區塊了,然后需要再生成2個,有leader時,則會按照6、7的順序來生成。而沒有leader時,則可能發生多節點同時生成6的情況。為了避免分叉,我做了一些處理,具體的可以在代碼里看實現邏輯。

區塊信息查詢

各節點通過執行相同的sql來實現一個同步的sqlite數據庫(或mysql等其他關系型數據庫),將來對數據的查詢都是直接查詢sqlite,性能高于傳統的區塊鏈項目。

由于各個節點都能生成Block,在高并發下會出現區塊不一致的情況。如果因為某些原因導致鏈分叉了,也提供了回滾機制,sql可以回滾。原理也很簡單,你ADD一個數據時,我會在區塊里同時記錄兩個指令,一個是ADD,一個是回滾用的DELETE。同理,UPDATE時也會保存原來的舊數據。區塊里的sql落地,譬如順序執行1-10個指令,回滾時就是從10-1執行回滾指令。

每個節點都會記錄自己已經同步了的區塊的值,以便隨時進行sql落地入庫。

對區塊鏈信息的查詢,那就簡單了,直接做數據庫查詢即可。相比于比特幣需要檢索整個區塊鏈的索引樹,速度和方便性就大不同了。

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1使用單片機實現七人表決器的程序和仿真資料免費下載
  2. 2.96 MB   |  44次下載  |  免費
  3. 2聯想E46L DAOLL6筆記本電腦圖紙
  4. 1.10 MB   |  2次下載  |  5 積分
  5. 3MATLAB繪圖合集
  6. 27.12 MB   |  2次下載  |  5 積分
  7. 4PR735,使用UCC28060的600W交錯式PFC轉換器
  8. 540.03KB   |  1次下載  |  免費
  9. 5UCC38C42 30W同步降壓轉換器參考設計
  10. 428.07KB   |  1次下載  |  免費
  11. 6DV2004S1/ES1/HS1快速充電開發系統
  12. 2.08MB   |  1次下載  |  免費
  13. 7模態分解合集matlab代碼
  14. 3.03 MB   |  1次下載  |  2 積分
  15. 8美的電磁爐維修手冊大全
  16. 1.56 MB   |  1次下載  |  5 積分

本月

  1. 1使用單片機實現七人表決器的程序和仿真資料免費下載
  2. 2.96 MB   |  44次下載  |  免費
  3. 2UC3842/3/4/5電源管理芯片中文手冊
  4. 1.75 MB   |  15次下載  |  免費
  5. 3DMT0660數字萬用表產品說明書
  6. 0.70 MB   |  13次下載  |  免費
  7. 4TPS54202H降壓轉換器評估模塊用戶指南
  8. 1.02MB   |  8次下載  |  免費
  9. 5STM32F101x8/STM32F101xB手冊
  10. 1.69 MB   |  8次下載  |  1 積分
  11. 6HY12P65/HY12P66數字萬用表芯片規格書
  12. 0.69 MB   |  6次下載  |  免費
  13. 7華瑞昇CR216芯片數字萬用表規格書附原理圖及校正流程方法
  14. 0.74 MB   |  6次下載  |  3 積分
  15. 8華瑞昇CR215芯片數字萬用表原理圖
  16. 0.21 MB   |  5次下載  |  3 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935119次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420061次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73807次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65987次下載  |  10 積分
主站蜘蛛池模板: 一久久| 日本特级黄色大片| 免费视频网站在线观看| 女人成午夜大片7777在线| 国产亚洲精品久久久极品美女| аⅴ资源天堂8在线| 亚洲精品资源在线| 宅男色视频| 日韩第二页| 国产在线视频你懂得| 午夜资源站| 不卡的毛片| 亚洲伦理一区二区| 明日花绮罗在线观看| 9久久精品| 久久久久久国产精品mv| videosxxoo18在线| 伊人成综合| 国产免费成人在线视频| 手机看片福利盒子久久青| 欧美性黑人极品hd网站| 在线小毛片| 国产免费色视频| 1024国产欧美日韩精品| 最新激情网址| 欧美精品国产第一区二区 | 七月丁香八月婷婷综合激情| 狠狠丁香激情久久综合| 天堂网最新版www中文| 美女扒开尿口让男人桶| 日本一道dvd在线中文字幕| 天天做天天添天天谢| 操久久久| 色婷婷综合激情| 久久国产伦三级理电影| 天天看天天碰| 婷婷午夜激情| 日本黄色www| 午夜大片在线观看| 在线亚洲免费| 日韩午夜大片|