顛覆你對區塊鏈的認識
顛覆你對區塊鏈的認識
本文節選自電子書《Netkiller Blockchain 手札》
Netkiller Blockchain 手札
本文作者最近在找工作,有意向致電 13113668890
Mr. Neo Chan, 陳景峰(BG7NYT)
中國廣東省深圳市龍華新區民治街道溪山美地
518131
+86 13113668890
<[email protected]>
文件始創於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
==============================
第 1 章 區塊鏈
目錄
- 1.1. 什麼是區塊鏈?
- 1.2. 什麼是智慧合約?
- 1.3. 我們應該怎麼做?
- 1.4. 如何學習區塊鏈
- 1.5. 區塊鏈能做什麼
- 1.6. 區塊鏈不能解決的問題
- 1.7. 理解去中心化
- 1.8. 理解不可撰改
- 1.9. 區塊鏈不能替代傳統資料
區塊鏈可以說是2018年最火的技術,相信很多開發者已經躍躍欲試投入到區塊鏈開發隊伍當中來,可是又感覺無從下手,你會發現世面上的書籍大多是將理論紙上談兵,都是一些無法落地的異想天開的想法,本書將用大量例項講解如何讓技術落地。
目前區塊鏈技術無論是 Ethereum 還 Hyperledger 都處在高速發展階段,每次版本迭代更新變化巨大,至少還需要一到三年才能變成成熟的技術。
1.1. 什麼是區塊鏈?
很多書籍談到區塊鏈都從比特幣開始,媒體也經常把比特幣拉出來說事,首先要高清一個問題:比特幣是區塊鏈,但區塊鏈並不是比特幣。
區塊鏈是什麼?一句話,它是一種特殊的(非關係型)分散式資料庫,這種資料庫只能做插入和查詢操作,並且沒有管理員。
首先,區塊鏈的主要作用是儲存資訊。任何需要儲存的資訊,都可以寫入區塊鏈,也可以從裡面讀取,所以它是資料庫。
其次,任何人都可以架設伺服器,加入區塊鏈網路,成為一個節點。區塊鏈的世界裡面,沒有中心節點,每個節點都是平等的,都儲存著整個資料庫。你可以向任何一個節點,寫入/讀取資料,因為所有節點最後都會同步,保證區塊鏈一致。
1.2. 什麼是智慧合約?
你可以理解為儲存過程+資料庫結構,這樣應該很好理解了把?
訪問只能合約就如同訪問儲存過程。在合約中定義的變數是不能直接訪問的,只能通過函式操作他。
所以非常類似資料庫定義了表結構,但是不能直接 select, insert, delete, update 資料,只能通過儲存過程操作資料庫一樣。
1.3. 我們應該怎麼做?
很簡單,通過IP地址與埠號連線到區塊鏈系統,通過API(通常是 json-rpc)呼叫合約方法完成一筆交易,產生一筆區塊記錄。
理論上區塊鏈比資料庫簡單。
1.4. 如何學習區塊鏈
我學習區塊鏈技術是沒有看過任何書籍的,我採用的是碎片化學習方法,主要是通過搜尋引擎和官方文件。我比較擅長自學,也很少和人交流。
也曾試圖購買書籍,但是我發現這些書籍沒有多大價值,幾乎三分之二的內容在談原理,理論的東西,剩下三分之一的內容,無非就是安裝、配置、Helloword 例項。另外書籍的出版週期通常是半年至一年,等書籍出版出來,內容早已經過時,軟體版本的差異導致書中的例子執行不了,所以我放棄了購買書籍的想法,同時萌生了自己要寫一本以乾貨內容為主的電子書,儘量在書中迴避理論的東西,軟體版本我選擇當前的主流版本,直接上例子,只要你對照步驟 Step by Step 實驗就能成功,這種成就感會驅使你繼續學習下去。
學習中遇到碰壁無法解決的問題可以藉助搜尋引擎解決,這是最好的學習工具。
我主張學習區塊鏈不要看太多的原理,快速過一遍即可,很多書中從比特幣開始講起,我覺的是沒有必要的。學習區塊鏈有兩個方向,一個是代幣開發,另一個才是區塊鏈開發,現在媒體將兩個方向混為一談,這是兩個獨立的方向。
如果你想從事代幣開發那麼目標很明確以太坊是最佳選擇,你的學習內容是代幣合約開發,合約部署,web3合約操作,代幣上交易所等等......
業界所指區塊鏈並非代幣開發,而是解決去中心化,期望區塊鏈技術幫助企業解決實際問題。通常Ethereum和Hyperledger兩種方案都能滿足企業需求,你需要自己判斷選擇哪個方案。
區塊鏈是一種工具,就如同手機是通訊工具,你不需要學習通訊原理和計算機原理,一樣可以使用手機。區塊鏈的發展一定是趨向傻瓜化,越來越容易使用和開發。
1.5. 區塊鏈能做什麼
區塊鏈具有去中心化安全性、可追溯、不可篡改等特性。
區塊鏈目前的底層只適合做,低頻高價值的業務。例如區塊鏈+徵信,區塊鏈+資產,區塊鏈+支付,區塊鏈+供應鏈,房地產+區塊鏈(登記,轉賬)
1.6. 區塊鏈不能解決的問題
你能保證上鍊的資料絕對不會被篡改;但你不能保證,上傳的資料是真的。
區塊鏈不能解決的問題:
- 使用者上傳假資料
- 物品被調包
- 高頻交易
我們舉一個現實中的例子“身份證”,例如身份證是可能證明你是你,但是別人可以拿著你的身份證冒充你。另外你不能保證戶籍人員在錄入身份資訊的時候不出錯。現實中我們常有身份證重號或資訊有誤的情況。
並不是實施了區塊鏈技術就安全無憂了,安全分為很多層,區塊鏈只能做到儲存層的安全。例如安全分為使用者層,應用層,邏輯層,儲存層等等。區塊鏈無法解決使用者層,應用層,邏輯層等安全問題,他只能保證儲存在硬碟上的區塊不被修改。
1.7. 理解去中心化
傳統資料庫是中心化的,它通過一個IP地址和一個埠號為應用程式提供服務,後來出現了“主從”和“主主”結構,去中心化就是一種“多主”結構。
與資料庫相比區塊鏈的去中心化更為複雜,他們的資料同步不是簡單的二進位制日誌同步,而是通過加密傳輸,節點共識後才做資料儲存。
1.8. 理解不可撰改
很多人被這句話誤導,認為區塊鏈的資料一旦建立是永久不能修改的,所以它安全。其實不然,區塊鏈的資料可以修改,但不能撰改。
首先你要搞明白什麼是撰改和修改,撰改是指非法修改區塊鏈資料,而修改則是合法變更資料。
區塊鏈上的資料是可以修改的,無論儲存多久的資料,隨時可以修改裡面內容。
通常撰改區塊鏈資料多指資料儲存層面的修改。而修改則是通過chaincode 提供的修改函式變更區塊鏈裡面的資料。
舉例一個場景例子,在徵信系統中,使用者有時被拉入黑名單,但使用者繳納欠費後應該立即將其移到白名單中,這個過程就需要修改區塊鏈上的資料。
另外我還告訴你,多數區塊鏈平臺沒有使用者認證許可權管理模組。所以無法控制區塊中的那些資料可能修改,那些不能修改,那些資料XXX使用者可以修改等等。即使有些區塊鏈平臺具備許可權控制,顆粒度也無法想目前的資料庫那些細。
1.9. 區塊鏈不能替代傳統資料
迴歸技術本質,我認為區塊鏈技術本身是一種追求分佈一致性的資料庫。
我們學過資料庫的,都知道CAP理論。CAP理論是指的是在一個分散式系統中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分割槽容錯性),三者不可得兼。大多數區塊鏈,放棄了一些可用性,偏向了一致性和分割槽容錯。
區塊鏈並非能解決所有問題,雖然他也算是一種資料庫,它能解決問題十分有限,它的資料管理和查詢能力還打不到 NoSQL 的水平,更別提 SQL 的複雜應用。所以在實際的應用中,區塊鏈不能替代資料,只能互補。
所以在專案實施前,仔細想想自己需求,真的需要區塊鏈嗎?還是需要區塊鏈上的一些特性?例如資料不可撰改。如果僅僅是需要區塊鏈的某一個特性。我們可以針對這個需求,思考一下能否使用傳統資料庫解決。
Donations (打賞)
We accept PayPal through:
https://www.paypal.me/netkiller
Wechat (微信) / Alipay (支付寶) 打賞:
http://www.netkiller.cn/home/donations.html
作者相關文章:
轉載請註明出處與作者宣告,掃描二維碼關注作者公眾好,不定期更新文章