1. 程式人生 > 其它 >顛覆你對區塊鏈的認識

顛覆你對區塊鏈的認識

顛覆你對區塊鏈的認識

本文節選自電子書《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

作者相關文章:

競猜活動區塊鏈方案探索

傳統資料庫也能實現區塊鏈儲存

以太坊·食品溯源案例

以太坊·單機多例項演示

以太坊·將資料寫入到區塊鏈中

以太坊智慧合約開發入門

hyperledger v1.0.5 區塊鏈運維入門

轉載請註明出處與作者宣告,掃描二維碼關注作者公眾好,不定期更新文章