1. 程式人生 > >小白如何入門區塊鏈技術

小白如何入門區塊鏈技術

前幾天我們已經學瞭如何學習的“道”和“術”,學完之後就應該落地到實踐上,通過不斷地實踐練習,才能將這些 知識資源 轉化為我們的 知識資本。如果你看完前面的文章後,覺得講得真好,然後缺乏思考缺乏行動,然後就沒有然後了。為了更好地指導你們如何實踐,本篇文章我將與你分享我是如何將知識資源轉化為我的知識資本的。

如果你開始對以太坊上去中心化應用的開發產生興趣,希望馬上可以動手實踐,可以訪問匯智網提供的出色的線上互動教程:

為什麼選擇區塊鏈

選擇區塊鏈作為實踐學習的案例,原因有三:

  • 第一,區塊鏈是我最近兩三個月剛學習的領域,對我來說也是一門從零開始學習的領域,這樣的學習案例最具有指導作用。因為時間沒有隔太久,很多學習過程中的細節我也還記得,這樣我可以還原出更真實的學習過程。
  • 第二,區塊鏈——確切說是虛擬貨幣最近非常火,連中國大媽都知道了,我的微信群裡也有部分人在玩或準備玩,但大部分人普遍對比特幣和區塊鏈缺乏正確的認知,只是跟隨潮流,這其實是存在很大風險的。因此,我覺得也有必要普及一下區塊鏈和比特幣正確的認知。
  • 第三,區塊鏈是價值網際網路的基石,是未來必然的趨勢,會成為像HTTP一樣基礎的技術,所以也應該是每個技術人員都要掌握的技術。

關於第二點,很多人是因為聽到了太多虛擬貨幣的致富神話,所以才開始關注這個行業。但卻因為對虛擬貨幣和區塊鏈缺乏真正的瞭解,所以其實看不懂這個行業的現狀,更看不懂這個行業的未來。因為看不懂,所以要麼一直觀望,要麼畏畏縮縮。最典型的就是我的一個同事,看著別人賺錢,一直想進。但從比特幣1萬塊觀望到2萬塊,一直不敢入場,總覺得價格太高,但卻一直看著它升高。後來,有一次,被他抓到了一次抄底的機會,就是7月中旬比特幣跌到1萬3後反彈到差不多兩萬的那次,他終於下了決心入場了,貌似是丟了2000塊錢進去,結果呢,賺了200塊錢他就拋了。後來,BCC從2000塊左右開始起飛之前,也被他抓住了,這次他膽子大了,丟了10000塊錢進去,但和上次一樣,只賺了10%就怕了跑出來了。那次BCC起飛足足翻了一倍還多。不過他也算是幸運的,起碼賺到了錢,雖然賺得少。但有很多人是虧錢了的,而且還虧得不少。說了這麼多,其實就是想表明,你想在這個行業裡賺錢,甚至長期賺錢,你看不懂是不行的。

第三點才是最重要的,區塊鏈將會成為基礎性技術。基於HTTP的網際網路可以稱為資訊網際網路,主要傳遞的就是各種資訊。而基於區塊鏈的網際網路則稱為價值網際網路,傳遞的是價值。在資訊網際網路時代你需要熟悉HTTP,那麼,在價值網際網路時代你就需要熟悉區塊鏈。而且,未來已來,我們應該提前做好準備。

開始學習之前

每個人開始學習某項領域的知識之前,或多或少都會先聽到或讀到各種概念和觀點,沒有人會在真正一無所知的情況下突然決定要去學習某個東西。就比如說,如果你連“區塊鏈”這個概念都沒聽說過,那你就不可能會有想去學“區塊鏈”的想法。

我在決定開始學習區塊鏈之前,就已經聽到和讀到了很多相關的概念,包括:區塊鏈1.0、區塊鏈2.0、區塊鏈3.0、公有鏈、聯盟鏈、私有鏈、硬分叉、軟分叉、隔離見證、閃電網路、雷電網路、以太坊、以太坊經典、幣圈、鏈圈、智慧合約、比特幣錢包等等,一大堆陌生概念。不過,那時候,給我印象最深刻的還是比特幣,一個星期就從1萬漲到了1萬5。

那時候瞭解到的資訊大部分都是從巴位元讀到的,很多文章其實都看不懂,主要還是不懂的概念太多。但有一些還是看懂了,比如,比特幣可稱為數字黃金,那它未來的價值應該可以接近黃金,從這個角度來看的話,那比特幣還有很大的上漲空間。比如,區塊鏈開啟了價值網際網路時代,是趨勢所在。主要也是這兩點激發起了我學習區塊鏈的興趣。

確定目標
在《001 | 如何高效學習》一文中就已經說過,想要提高學習效率,第一個條件就是:目標導向。功利學習法的核心也是目標導向。因此,我們學習一個東西,第一步必須是確定目標,而且必須是清晰明確的目標。另外,目標有分大目標和小目標。一開始,你是先確定了大目標,然後根據大目標分解成一個個小目標,每個小目標都應該是非常清晰明確可操作的。下面我就講解我是如何將大目標拆解成小目標的。
我學習區塊鏈的目標是很明確的,從大的方面來說,目標就兩個:

為了以後進入區塊鏈開發做技術儲備;
為了能指導我如何投資虛擬貨幣。

那麼,為了達到這兩個目標,需要學習哪些東西呢?第一個目標需要學習區塊鏈相關技術,就要知道區塊鏈涉及到哪些技術、區塊鏈的技術原理等;第二個目標則需要學習虛擬貨幣相關知識,包括需要解決有哪些虛擬貨幣、去哪裡買虛擬貨幣、怎麼買等問題,以及要了解虛擬貨幣未來的前景會如何。梳理之後,就變成了一個個待解決的問題:

  • 什麼是區塊鏈?
  • 區塊鏈1.0、區塊鏈2.0、區塊鏈3.0有什麼區別?
  • 什麼是公有鏈?聯盟鏈?私有鏈?
  • 什麼是分叉?硬分叉和軟分叉有什麼區別?
  • 什麼是隔離見證?閃電網路?雷電網路?
  • 比特幣的本質是什麼?
  • 比特幣是如何交易的?
  • 什麼是比特幣錢包?
  • 什麼是智慧合約?
  • 什麼是以太坊?以太坊和以太坊經典有什麼區別?
  • 什麼是幣圈?什麼是鏈圈?
  • 哪裡買虛擬貨幣?怎麼買?
  • 區塊鏈和各種虛擬貨幣的前景如何?

很多時候,第一次梳理出來的問題並不全面,甚至很少,但沒關係,在學習的過程中,就會不斷湧現出新的問題。比如,有哪些共識演算法?什麼是超級賬本?什麼是ICO?怎麼玩?等等這些就是我在學習的過程中新發現的問題。

這一步,最重要的是確定好大目標,然後拆解成一個個待解決的小問題。

蒐集知識資源

當你的目標已經明確細分到一個個小問題之後,就可以根據這些問題蒐集各種知識資源了。知識資源主要有三類:書籍、官方文件和網路上的零散文章。蒐集知識資源時,首選應該是書籍,因為書籍相對比較系統化,可以解答我們大部分的疑問。官方文件主要是為了加深理解,畢竟,書籍一般不會細化到一些技術細節之類的。而有部分問題,從書籍和官方文件是找不到答案的,這時就只能到網路上搜索相關文章了。另外,有些英語比較差的人看官方文件太累太費時間,也可以搜尋網路上的中文文章。但我還是推薦儘量看原文,不會失真。

那麼,回到我的區塊鏈學習上來,選書上,我主要還是在那些比較暢銷的書裡挑,而且會盡量多覆蓋上面所提到的問題。在亞馬遜看每本書的簡介和目錄,最後選了以下幾本:

  • 《區塊鏈:新經濟藍圖及導讀》:同事推薦的一本書,講到了區塊鏈1.0、2.0、3.0,可以幫助我從巨集觀上了解區塊鏈。
  • 《區塊鏈:技術驅動金融》:從技術層面逐步解釋了比特幣是如何運作的。
  • 《區塊鏈技術指南》:更加深入技術底層的書,還講到了智慧合約和超級賬本,可以作為上一本書的補充。
  • 《區塊鏈革命:比特幣底層技術如何改變貨幣、商業和世界》:全景式描述了區塊鏈理論及應用,這是為了擴大視野的書。

官方文件主要就是各種白皮書了,我搜集的白皮書主要包括:

  • 比特幣白皮書:英文原版、中文版、精讀比特幣白皮書系列(1-6)
  • 以太坊白皮書:英文原版、中文版
  • 超級賬本白皮書:英文原版(需翻牆)、中文版
  • 閃電網路白皮書:英文原版、中文版

最後,有些問題無法直接在書籍或白皮書中得到解答,比如說,什麼是幣圈?什麼是鏈圈?這問題在百度或Google搜尋一下就能得到答案了。有些文章會比較長,比如這篇:《詳解最近大熱的閃電網路、雷電網路和CORDA》,一時難以看懂,沒關係,先收集起來,可以等後面進行大量泛讀時再看。推薦可以去巴位元找資源,大部分都能找到。

這一步,主要還是蒐集各種知識資源。先挑選書籍,最好找到比較系統化的教程,例如匯智網的以太坊DApp實戰入門教程以太坊去中心化電商應用開發實戰。再蒐集各種官方文件,這是第一手資訊,詳細而不失真,可以加深理解。最後才是蒐集網路上零散的文章,有些比較簡單的問題可能直接就得到答案了,有些難以理解的要留到後面進行大量泛讀時再看。

大量泛讀

知識資源都蒐集好了,接下來就可以開始進行大量泛讀了。不知道大家是否還記得,大量泛讀的主要目的就是:梳理出核心概念、主要觀點、框架邏輯。雖然在學習之前,我們或多或少都已經瞭解到了部分概念和觀點,但在學習的過程中,我們就會發現還有更多我們不瞭解的概念和觀點,這些都需要一一去理解的。

我們之前講功利學習法時,提到知識資源可以分為三類:娛樂性、知識性、心智性。學習不同型別的知識應該分配不同的時間資源,知識性的比較適合碎片化學習,心智性的則需要集中幾個小時進行系統性學習。因此,對我們蒐集的這些知識資源,首先要區分好哪些是知識性的,哪些是心智性的,然後使用不同的時間管理策略進行閱讀學習。對於我學習的區塊鏈來說,大部分知識資源是屬於知識性的,包括幾本書籍的大部分內容和網路上搜集來的零散文章,這些我一般會放在上下班路上,或中午休息時學習;而那些專業的白皮書和書籍中深入技術架構的部分則屬於心智性的知識,我一般就會放在晚上或週末集中兩三個小時進行高強度學習。

閱讀的方式也是有講究的,我不會將幾本書按順序看完一本又一本,這樣的話學習效率太低了。我會從一個個的問題出發,為了解決問題而從各種知識資源中找答案。解決完一個問題後再解決下一個。另外,在解決問題的過程中,普遍會遇到新的問題,那就把新問題先記下來,然後繼續解決當前的問題。如果一個問題花了很長時間都解決不了,那可能這個問題對現階段的你還沒能力理解,這時可以先放一放,等學完其他再回過頭來繼續研究。

比如,我在解決“什麼是比特幣?”這個問題時,我會將每本書對比特幣的介紹先看一遍,瞭解其框架邏輯後,再研讀比特幣白皮書,理解其技術架構和一些技術細節,直到終於明白,比特幣從技術角度來說,本質上就是一堆複雜演算法所生成的特解。另外,學習的過程中,就遇到了很多新的問題,比如“什麼是共識演算法?什麼是Merkle Tree?什麼是挖礦?等等,於是我就先把這些問題記下來,繼續解決“什麼是區塊鏈?”的問題。

以下是我在大量泛讀之後對一些核心概念的總結性理解:

  1. 區塊鏈:從狹義上來說,區塊鏈就是一種分散式的資料庫,資料結構上就是按時間順序將資料區塊相連的一條連結串列,鏈上的每個節點就是一個區塊,區塊一般通過二叉樹(如Merkle Tree)將每筆交易資料打包在一起,形成一個彙總的雜湊值,再加上時間戳,就是一個區塊的唯一標識。從廣義上來說,區塊鏈是結合了分散式資料儲存、點對點傳輸、共識機制、加密演算法等多種技術的一種分散式基礎架構模式。
  2. 比特幣:有很多人對比特幣的理解就是賬上的那串數字,但嚴格意義上來說,比特幣是一種點對點的電子現金系統,是一整套系統,這點從比特幣白皮書的標題上就已經說明了。可以將比特幣簡單理解為就是區塊鏈技術的第一個應用。不過,“比特幣”的概念要比“區塊鏈”早,“區塊鏈”這個概念是比特幣發展了一段時間之後,將比特幣的底層技術抽象出來形成的。另外,從投資的角度來看,比特幣總量恆定為2100萬個,其價值可以和黃金相比,但目前的市值和黃金的市值差距,還有很大的上漲空間,所以從長期來看,我還是非常看好。
  3. 以太坊:區塊鏈2.0的典型代表,主要實現了智慧合約的功能,開發人員可以在以太坊平臺建立和釋出各種分散式應用,這些應用,其實就是合約,智慧合約說白了其實就是當達到某條件時會自動執行的程式碼。很多ICO的代幣就是在以太坊平臺上建立的應用。
  4. 公有鏈/聯盟鏈/私有鏈:公有鏈就是完全公開的區塊鏈,像比特幣、以太坊;聯盟鏈則不是完成公開的,是指有若干個機構共同參與管理的區塊鏈,每個機構都執行著一個或多個節點,其中的資料只允許系統內不同的機構進行讀寫和傳送交易,並且共同來記錄交易資料,該聯盟鏈的每個參與方不用擔心自己資料存在哪裡,自己產生的資料都只有自己看到,只有通過對方授權的金鑰才能看到其他參與者的資料,這樣就解決資料隱私和安全性問題,同時能夠實現去中心化;私有鏈則是完全私有的,一般適合跨國公司,目前這一塊還沒了解到有什麼代表性應用。

這一步,最高效率的閱讀應該是帶著問題去找答案。而且,要分配好時間資源,閱讀知識性的資訊時可以多用碎片化時間,心智性的內容則需要集中時間研讀,要儘量理解每個核心概念。

建立模型

上一步我們已經大致理解了每個核心概念,但這些還只是一個個點,這一步就要將點與點之間連成線,逐漸連成網。即是說要理清不同核心概念之間的關聯關係,逐漸形成系統模型。如果有條件的話,大白板當然是最好的思考工具,沒有的話,用Visio、OmniGraffle之類的畫圖工具也可以,或者用XMind之類的思維導圖也可以,甚至只用紙和筆都行,最重要的是要畫出來。

以下是我用OmniGraffle梳理的區塊鏈的系統模型圖,因為時間和篇幅所限,所以只是部分內容:

chart

求教專家

如果還存在無法解決的問題,那就要求教專家了。不過,這裡也有一些需要注意的地方。
首先,你的朋友圈裡要儘量多加一些專注不同領域的專家。不過,現在大部分人應該都加了不少牛人了,所以這一點沒什麼需要特別講的。但有一點我想特別講一下:不要隨便什麼問題都去求教專家。

一來,專家基本都是很忙的,沒太多時間總去幫你解決問題,尤其是當你問一些對他沒有價值的問題時更不想搭理你。比如,你去請教一個Android架構師,問的卻是“Android怎麼開啟藍芽?”這種隨便百度一下就能得到答案的問題,就算是我,我可能就會丟回一句“請自己去百度”。既然你請教的是Android架構師,就應該問架構方面的問題,而且最好是有深度、值得討論、能給他帶來價值的問題,比如,你去問他“什麼是MVP?”這種問題也不合適,合適的請教方式應該是:你先講出自己對MVP的理解,自己是如何用來架構專案的,再逐步與對方討論MVP的架構思想、實現方案等。

二來,專家是你很重要的資源,你需要經營好。有一句話說得好:那些能幫到你的人,不是你的人脈,只有那些你能幫到的人,才是你的人脈。對於專家,雖然平時在專業領域上你很難幫得到他,但在其他方面你可以儘量多去給他提供幫助。

回到學習上來,為什麼我們要先完成上一步的建立起系統模型後才來求教專家?之前的文章也有說過,因為如果你沒有基本的全域性觀,問不出好問題。另外,也可以利用好知乎平臺,很多問題,知乎上都有很多牛人有很好的回答。你也可以上去發問,當然,前提是你要提出好問題,這樣,才有牛人願意回答。

理解複述

複述最主要就是能起到強化理解的作用,費曼技巧是很好的一種複述方法,寫作也是一種不錯的方式,而且最好是公開性的。公開的寫作,一來,你要寫給不瞭解的人看,會促使你進行更完善的思考;二來,你可以從外部得到反饋,來完善和升級你的認知。所以我是推薦每個人都寫部落格的。

對於我來說,我更多就是寫成文章分享出來,另外,有時候也會在公司內部做技術分享。

這一步也許是最費腦力的事情,但也是最能提高你的學習力的關鍵一步。

總結

我學習的方式可以總結為以下幾個步驟:

  • 確定目標:先確定大目標,再拆解成一個個待解決的小問題;
  • 蒐集知識資源:知識資源主要有三類:書籍、官方文件和網路上的零散文章,儘量蒐集全一點;
  • 大量泛讀:最高效率的閱讀應該是帶著問題去找答案,而且要分配好時間資源;
  • 建立模型:將一個個核心概念的點連成線,逐漸形成網,建立起系統模型;
  • 求教專家:需要注意,不要隨便什麼問題都去求教專家,而且要經營好專家人脈;
  • 理解複述:提高學習力的最關鍵一步,除了費曼技巧,寫作也是一種推薦的方式。

思考和實踐

如果讓你學一門新的程式語言,你又會怎麼學習?