天天看點

征信區塊鍊解決方案探索(Hyperledger)征信區塊鍊解決方案探索(Hyperledger)Netkiller Blockchain 手劄

本文節選自電子書《Netkiller Blockchain 手劄》

中國廣東省深圳市龍華新區民治街道溪山美地 518131 +86 13113668890 <code>&lt;[email protected]&gt;</code>

文檔始創于2018-02-10

版權 © 2018 Netkiller(Neo Chan). All rights reserved.

版權聲明

轉載請與作者聯系,轉載時請務必标明文章原始出處和作者資訊及本聲明。

微信訂閱号 netkiller-ebook (微信掃描二維碼)

QQ:13721218 請注明“讀者”

QQ群:128659835 請注明“讀者”

網站:http://www.netkiller.cn

内容摘要

這一部關于區塊鍊開發及運維的電子書。

為什麼會寫區塊鍊電子書?因為2018年是區塊鍊年。

這本電子書是否會出版(紙質圖書)? 不會,因為網際網路技術更疊太快,紙質書籍的内容無法實時更新,一本書動辄百元,很快就成為垃圾,你會發現目前市面的上區塊鍊書籍至少是一年前寫的,内容已經過時,很多例子無法正确運作。是以我不會出版,電子書的内容會追逐技術發展,及時跟進軟體版本的更新,做到内容最新,至少是主流。

這本電子書與其他區塊鍊書籍有什麼不同?市面上大部分區塊鍊書籍都是用2/3去講區塊鍊原理,隻要不到 1/3 的幹貨,幹貨不夠理論來湊,通篇将理論或是大談特談區塊鍊行業,這些内容更多是頭腦風暴,展望區塊鍊,均無法落地實施。本書與那些書籍完全不同,不講理論和原理,面向應用落地,注重例子,均是幹貨。

電子書更新頻率?每天都會有新内容加入,更新頻率最遲不會超過一周,更新内容請關注 https://github.com/netkiller/netkiller.github.io/commits/master

本文采用碎片化寫作,原文會不定期更新,請盡量閱讀原文。

http://www.netkiller.cn/blockchain/index.html

您的打賞是我的寫作動力:http://www.netkiller.cn/blockchain/donations.html

==============================

翻看了無數的文章沒有找到一篇關于談征信在區塊鍊上怎麼落地的文章。也在各種區塊鍊微信群和QQ群中問了一圈,也沒有人知道怎麼落地。

現在的情況是大家都知道區塊鍊做征信沒問題,區中心化,不可撰改,簡直是征信系統而設計的。那麼怎麼使項目落地呢?沒有一篇文章談到這個問題。可能有些大公司已經實作了,處于技術保密,沒有分享。

看來隻能靠自己了,以太坊和超級賬本一直在研究,最近一段時間研究以太坊比較多,但是發現征信這個系統是在不适合在以太坊上實作,于是有回到超級賬本上。

回到超級賬本上感覺有點不适應,超級賬本沒有 Token , 超級賬本的合約實作與以太坊完全不同。兩個系統是兩種思維解決同一個區塊鍊需求。

一看 hyperledger 就是目前IBM風格,hyperledger 特點,體系龐大,結構複雜,難以了解,運維複雜。簡單的問題用複雜的方式思考,做出一個複雜的系統,可用性極差。IBM的産品特點是,你隻能他們合作,一旦合作(上了船)就摔不掉,從他們小型機,到中間件産品,以及各種行業解決方案。IBM的系統出了問題,隻有IBM的人才能解決。

随者 hyperledger 開源,我希望 hyperledger 的風格能脫離IBM的影子。

回到正題,研究了幾個 hyperledger 提供的 Example 後,對怎麼實作征信需求,有了一點思路。

首先 chaincode 合約并不複雜,由兩個核心方法組織,分别是Init和Invoke。其次資料操作類似 map 資料結構, shim.ChaincodeStubInterface 接口提供了 get, put, del 等操作。

證信系統資訊查詢問題,一怎樣查詢?二查詢哪些資訊?

區塊不是關系型資料庫,無法實作SQL那樣的發雜查詢,是以設計接口要盡量迎合區塊鍊的,有些情況需要妥協,适應區塊鍊的弱點和不足。

但是我們可以讓資料庫和區塊鍊同時存在,互相彌補不足。

資料庫部分我這就就不講了,區塊鍊的實作方式是,使用身份證碼号查詢,傳回 json 資料。

首先我們定義一個結構體用來存儲身份資訊,征信資訊遠不止這幾項,請根據你的實際情況定義即可

編譯,運作,測試定義json是否正确。

最終我們隻需要結構體複制到合約代碼中。

通過下面的函數,将征信資料寫入到區塊鍊上。

通過下面方法查詢鍊上的征信資料。

通過下面方法删除征信資料。

這裡僅僅講了一下思路,因為家中重新整理(刷牆)是以我的小伺服器被覆寫起來了,沒有 hyperledger 開發環境,是以無法提供完整的合約代碼。