三個月前上面發了一個關於智羣匯聚和問題求解研究的項目,咱們公司作其中的一個子項目,就是基於區塊鏈的科技信息聯盟構建。利用區塊鏈的去中心化特性,構建一個基於區塊鏈的科技社區,以提供科技羣智匯聚採集的基礎承載平臺。科技工做者能夠發佈本身的論文、問題,以及對他人問題的交互討論。因爲採用區塊鏈技術,包括最新科技創想在內的討論內容所造成的知識資產能夠獲得確權,不可編造、不能否認。聯盟的參與節點是各個社區,全部節點維護相同的數據,全部附帶做者的內容都附帶做者的數字簽名,知識產權的確認將變得很是容易。最後,數據分佈在網絡的全部節點上,將完全避免數據的丟失。node
區塊鏈部分是由我來完成,這個月前完成區塊鏈和社區的對接,展現一個完整的項目,下個月就上線了。golang
這是理想的社區區塊鏈架構圖:數據庫
注:其實每一個BC節點(區塊鏈節點)能夠包括peer節點和orderer節點。api
如下是我本季度完成的工做:安全
1.搭建區塊鏈網絡服務器
分別爲兩個社區創建一個peer節點。 社區A一開始要求部署在阿里雲服務器上,以前在本地經過搭建多臺虛擬機的方式測試的區塊鏈網絡一點問題都沒有,但當我將節點部署到阿里雲上的時候卻在生成創世區塊這一步上出現報錯了,忙活了一星期都沒解決。各個容器能夠ping通,開放的端口也能夠telnet上,我甚至把操做系統內核都換成了和我本地部署時同樣的內核,16GB的內存也不會是內存不足,後來我在騰訊雲服務器上從新部署了一遍也沒有任何問題。因爲時間關係,這個技術問題先無論了,再申請一臺服務器又要一萬多,因此出於經濟,就在本地部署。社區B是要求部署在他們本地,可是因爲這段時間正在開十九大,既不容許遠程操做服務器也不容許對外開放端口,因此我就直接過去把環境和fabric配置好了,等十九大結束端口開放之後區塊鏈網絡就能夠運行了。網絡
(阿里雲問題現已解決,是DNS的問題)架構
2.爲每一個節點設立數據庫區塊鏈
fabric下存在三種類型的數據庫。1.基於文件系統的區塊鏈數據庫,存儲了交易的讀寫集,不能更改。2.歷史數據和區塊鏈索引的leveldb數據庫,也不能更改。3.以key-value對的方式存儲咱們在ChainCode中操做的業務數據的狀態數據庫。fabric1.0默認的是levelDB,可支持couchdb,因此我選擇替換成支持富查詢的couchdb來做爲社區節點的數據庫。我爲每一個社區部署節點(爲了高可用之後可能會在一個社區中部署多個節點),我也爲每個節點部署一個couchdb。能夠經過Elasticsearch的logstash將couchdb內的數據實時導入Elasticsearch內,這樣就能夠對狀態數據庫進行豐富的全文檢索功能了。測試
3.創建社區聯盟
對應於hyperledger fabric,就是建立channel,而且讓各個社區節點加入該channel,這樣每一個社區節點能夠接受廣播的區塊了。
4.安裝並運行chaincode
區塊鏈網絡和channel都準備完畢,接下來就安裝和運行帶有社區業務邏輯的chaincode了,實現對帖子的增改查等功能。
5.搭建http API
爲每個社區節點創建一個用node.js開發的服務器,向社區提供http api,支持get請求。該服務器集成hyperledger fabric node sdk,提供了與區塊鏈節點交互的功能。每一個社區經過API訪問區塊鏈節點,實現將區塊鏈底層屏蔽掉、讓社區能夠輕鬆對接。
第一個迭代下不少功能還不完備,下季度的完成目標:
1.目前只有兩個社區,因此沒加入證書頒發機構fabric ca,下一步將加入ca,讓更多的社區加入聯盟。
2.由單一orderer共識節點升級爲集羣共識,使區塊鏈更加安全穩定。
3.升級chaincode,實現對區塊鏈數據的更多操做。
4.增長更多面向社區的API。