區塊鏈 - 我為什麼選擇區塊鏈技術?

買賣虛擬貨幣
最近就幹兩件事情:寫程式碼,招人。程式碼不好寫,招人很難招。程式碼,是花時間可以幹成的事情。招人,招合適的人比較難。想招區塊鏈裡合適的人更難。最近和以前的同事朋友聊區塊鏈,很多人對區塊鏈的認識就是炒幣,傳銷。和他們講,區塊鏈也是有技術的,很多人都半信半疑。有點感慨,認知真的有區別,要跨行業,走出自己的舒服區,需要很大的勇氣。之前的同事朋友在技術上都很優秀,但在創業這件事情上,現實的壓力都非常大,房貸,穩定的收入讓大家都裹步不前。當然不是鼓勵創業,不是每個人都適合創業,也不是每個人都需要創業,做自己喜歡做的,活得開心就好。只是對我來說,我選擇創業而已。一直想寫篇文章,講講自己對區塊鏈的理解,講講對區塊鏈技術的理解。很多優秀的技術人,對區塊鏈技術即好奇又擔心。區塊鏈離錢很近,經常和金融的東西混在一起。很多人,簡單的認為區塊鏈就是炒幣,區塊鏈就是傳銷。

1. 什麼是區塊鏈?

區塊鏈是個綜合型跨界交叉學科,由三大塊組成:P2P網路通訊,加密理論以及博弈論組成。P2P網路通訊是區塊鏈的基礎。加密理論,保證賬戶安全,交易安全以及區塊安全。博弈論,幫助在多個節點之間達成共識。共識的演算法有很多種:POW,POS,DPOS,BFT,PBFT,LBFT等等。經濟模型,在共識機制的基礎上,進一步從經濟激勵的方面,設計穩定長久的模型。代幣,是經濟模型的一種展現形式。比特幣的代幣,就是對轉賬支付費用,支付給礦工。礦工有利可圖,從而保持穩定的比特幣網路。以太坊作為世界計算機,增加了智慧合約,提出了GAS模型。轉賬或者執行智慧合約計算都需要消耗GAS,也就是消耗以太代幣。這些代幣,因為有參與方的博弈,天然的是一種標的,也就是“商品”。從而,代幣就有了價格。

推薦大家看看Bitcoin的原始碼,最少看看《精通比特幣》。能對比特幣或者區塊鏈技術有大致的理解。

2. 區塊鏈有沒有價值?

很多人(瞭解區塊鏈的,不瞭解區塊鏈的)都會問同樣的問題。不同的人,有不同的答案。有些人說,區塊鏈的價值是去中心化,提高效率。有些人說,區塊鏈的價值在於共識,有共識就有價值。有些人說,區塊鏈沒有任何價值,就是騙局。

從技術人的角度,區塊鏈的價值在於區塊鏈是一種新的“媒介”。區塊鏈,作為一種媒介,能讓資訊透明,不可篡改。麥克盧漢的《理解媒介》告訴我們,媒介可能會改變人和人的協同方式。剛開始,被區塊鏈的技術吸引,因為區塊鏈作為一種“工具”,能讓更多的人彼此信任協作。至於,這種新的協同方式,具體會發展到什麼形態,還不知道。去中心化,也只是新的一種協同方式。

區塊鏈的價值和代幣的價格,是兩回事。區塊鏈的技術有價值。代幣的價格,目前更多是一種標的,在目前沒有監管的情況下,和區塊鏈的價值幾乎沒有太多的聯絡。

區塊鏈,再牛,也只是一種媒介。不需要妖魔化,也不可小看它。沒有什麼技術是一步到位的,允許它慢慢發展和演進。但也沒有什麼技術就是最後的形態。

3. 區塊鏈的未來怎樣?

區塊鏈的未來怎樣,應該沒有人能現在說清楚。未來需要一步步探索,區塊鏈本身也是在發展。去中心化,是否能完全顛覆中心化?我不確定。中心化提供服務,有更好的效率和使用者體驗。去中心化,更強調資料的透明安全。未來可能是一種中心化和去中心化的結合的模式。

4. 幣圈和幣價

在區塊鏈行業野蠻生長的這幾年,我自己也無奈的得出一個樸素的觀點:幣價和技術幾乎沒有關係。幣,作為一種標的,慢慢的變成了炒作。發現有個神奇的現象,剛開始的時候,技術人還有心思辨別,專案方是不是真的是傳銷幣。後來好像都麻木了,甚至有的時候,自己也糊塗了,究竟是交易模式的創新,還是傳銷的新變種。現在都是事後英雄了,成功的專案就是創新,失敗的就是傳銷。

技術人,看不大懂,這麼簡單粗暴的賺錢方式。甚至有些氣餒,區塊鏈這個行業,充斥著這麼多“騙人”的把戲,還能好好的做技術嗎?

5. 區塊鏈有技術嗎?

區塊鏈當然有技術,而且區塊鏈是個複雜的交叉學科。先不談,區塊鏈的人文,社會,經濟方面的技術,我不太專業。就純粹從計算機技術來看,區塊鏈的技術也非常的龐雜和專業。

先從程式語言開始。2018年,go語言在區塊鏈流行,幾乎大點的公鏈都是用go進行開發,確實簡潔好用,網路處理,命令列處理,都有非常豐富的庫。2019年,rust語言慢慢流行起來。Facebook的libra專案全部採用rust語言開發。零知識證明的一些庫也是由rust語言開發。Rust語言型別預先定義,避免安全隱患;陣列定長,防止溢位攻擊。Rust語言有個新的概念,所有權(Ownership)的記憶體管理方式。記憶體的所有權管理方式,能讓編譯器在編譯的時候檢查。所有權是管理堆上資料。透過所有權的設計,Rust在編譯的時候,能檢查和避免 資料競爭情況(多個地址訪問同一資料,資料寫入的時候必須有效等等)。區塊鏈開發,經常在多種開發語言之間切換:go,rust,C++,python。有的時候,程式碼開發有點恍惚:變數型別的定義在變數的前面還是後面?表示式後面需不需要分號?表示式後面是否要加冒號?

資料結構,區塊鏈中有兩個比較重要的資料結構:Merkle樹和DAG結構。Merkle樹,透過葉子節點兩兩計算hash結果,生成上一層的節點,直至樹根。Merkle樹資料結構,有很明顯的好處,葉子節點的任何改動,都會改動樹根。Merkle樹還有個優點,在給定某個Merkle path,能證明某個葉子節點確實在以某個樹根的merkle樹上。Merkle樹,也有很多變種。以太坊管理賬戶資訊(世界狀態),使用的是MPT樹。MPT樹透過增加或者合併節點,最佳化了Merkle樹的深度。Merkle樹一般是兩叉樹,其實還可以擴充套件為多叉樹。

DAG,有向無環圖。傳統的區塊鏈(比如,比特幣,以太坊),使用的單序的區塊連結方式,也就是後一個區塊依賴前一個區塊。這種傳統的區塊鏈組織方式,限制了交易的效能(TPS)。為了提高TPS,DAG是一種新的區塊組織的方式。如何在DAG的區塊結構方式下,確定區塊/交易的順序,有很多相關的研究和演算法。

虛擬機器和智慧合約,虛擬機器是在區塊鏈上安全執行“程式”的環境。智慧合約,就是在虛擬機器中執行的程式。不同的公鏈提供了不同型別的虛擬機器,比如以太坊的EVM,星雲鏈的JVM,EOS的基於WASM的虛擬機器等等。不同的虛擬機器有不同的程式設計規範。

共識演算法,共識演算法讓資料在一定的網路環境下達成共識。最傳統的是BFT/PBFT共識演算法,基於投票以及少數服從多數的原則,只要超過2/3的節點簽名的資料就是達成共識的資料。PBFT共識演算法,需要有幾個階段,每個階段都需要收集超過2/3的節點簽名。這種方式,安全可靠,不會有區塊分叉,但是效率比較低。PBFT共識演算法的複雜度是O(N^2)。為了提高共識演算法的效能,提出了其他很多基於BFT思想的共識演算法,比如HoneyBadgerBFT演算法,LBFT演算法。Algorand也是PBFT演算法中的一種變種,先隨機抽取節點,然後讓這些抽取的節點用PBFT演算法形成共識。POS/DPOS共識演算法,採用和PBFT演算法完全不一樣的共識原理。POS/DPOS共識演算法,採用誰抵押多,誰出塊概率高的思想,簡單粗暴。抵押越多,貢獻越大,也有相應的出塊獎勵。

加密演算法,區塊鏈中的加密演算法比較多。橢圓曲線加密,各種簽名演算法(BLS,盲籤,環籤等等)。

零知識證明,零知識證明的理論基礎就更多了:橢圓曲線,大數計算,群論,同態加密,配對函式,零知識證明的各種演算法(zkSNARK,zkSTARK,BulletProof等等)。零知識證明的理論可以追溯到1985年。目前有兩個方向的應用:隱私和資料壓縮。Zcash就是利用零知識證明實現交易隱私,交易的雙方資訊以及交易金額只有交易雙方可知。Loopring的去中心化交易協議3.0,就是利用零知識證明實現了鏈下計算,鏈上驗證的思想。Filecoin利用零知識證明實現”資料的壓縮“,使用者儲存的資料(資料量很大)不需要直接上鍊,只需要將資料證明(資料量比較小,幾百個位元組)儲存在鏈上。在零知識證明技術之前,區塊鏈世界是區塊鏈世界,現實世界是現實世界。零知識證明的技術,提供了一種方式,將現實世界,部分對映到了區塊鏈世界。

很多人問我,為什麼堅持做區塊鏈技術,因為我對區塊鏈技術感興趣。僅此而已。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;