程序員也追風口:這里是一份區(qū)塊鏈開發(fā)進階指南
編者按:區(qū)塊鏈的火爆讓很多人都躍躍欲試。YC在其博客上發(fā)布了一篇文章指出,區(qū)塊鏈將會帶來開發(fā)范式的轉變,并且給出了應對這一范式轉變的操作建議。文章由36氪編譯。
引言
如果你點開了這篇文章,我們就假設你是一個對區(qū)塊鏈感興趣的開發(fā)者/黑客。你確信你能理解它的工作原理,現(xiàn)在你想要搞清楚區(qū)塊鏈對你和你的開發(fā)者技能意味著什么。
如果你需要學習更多的入門知識,我們建議你從比特幣白皮書和以太坊白皮書開始。
這篇文章的主要目標是:
1、解釋區(qū)塊鏈開發(fā)與現(xiàn)有開發(fā)范例的不同之處。
2、為這個領域的機遇和挑戰(zhàn)提供背景信息。
3、給你指出一些資源, 這些資源將幫你在這個新范式開始發(fā)展中奠定基礎。
開發(fā)者的范式轉換
互聯(lián)網應用程序受益于網絡效應,因為它們把信息孤島集中了起來。基于共享的開放協(xié)議(如TCP/IP協(xié)議、HTTP協(xié)議),Yelp、Facebook和亞馬遜等公司都能在一個地方擁有大量的用戶和用戶的數(shù)據(jù),這樣一來,他們不僅比那些數(shù)據(jù)更少的競爭對手有更大的優(yōu)勢,而且還能完全控制數(shù)據(jù)變現(xiàn)的方式。
用加密貨幣投資者喬伊·錢格羅(Joel Monegro)的話來說,當前的互聯(lián)網范式是在應用層獲取了大部分的價值,而從底層通信協(xié)議層獲得的價值卻非常低。
或者,區(qū)塊鏈范式的價值分布可以用協(xié)議層(比較多)和應用層(比較少)來描述。這種模式的轉變是有可能的,因為加密代幣的發(fā)明,正如USV的阿爾伯特·瓦格納(Albert Wagner )所描述的那樣:
“從歷史上看,從協(xié)議中賺錢的唯一途徑是創(chuàng)建軟件來實現(xiàn)它,然后嘗試出售這個軟件(或者托管它)……然而,使用加密代幣,協(xié)議的創(chuàng)建者可以直接將協(xié)議貨幣化。事實上,當其他人在協(xié)議之上建立業(yè)務時,協(xié)議的創(chuàng)建者實際上會受益更多。”
在此之前,互聯(lián)網開放通信協(xié)議的開發(fā)者,主要是DARPA的研究人員和非營利貢獻者,從而沒有將財務激勵與協(xié)議開發(fā)結合起來。相比之下,如今的協(xié)議開發(fā)者可以發(fā)布“代幣”,比如比特幣和以太坊,這些“代幣”代表了它們去中心化協(xié)議的價值。
喬爾(Joel Monegro)認為,這種范式的轉變會影響開發(fā)者對應用程序的思考方式:“共享開放數(shù)據(jù)與激勵機制的結合,會顛覆‘贏者通吃’的應用層市場,從而改變應用層的游戲規(guī)則,并在協(xié)議層創(chuàng)建一個全新類別的公司,這些公司與當前挖掘應用層價值的公司的商業(yè)模式有著根本的不同。”
以太坊
我們已經認識到,在區(qū)塊鏈范式中,開發(fā)者可以通過協(xié)議創(chuàng)新來獲取價值。為了繼續(xù)我們的討論,我們回顧一下區(qū)塊鏈技術是如何演變,最終迎合開發(fā)者的。8年前,比特幣被認為是一種虛擬貨幣,消除了人們對集中式金融體系的需要。最初,開發(fā)者實際上是在比特幣區(qū)塊鏈上嘗試構建應用,方法是將數(shù)據(jù)存儲在區(qū)塊鏈中,但結果是效率非常低下。其中一名開發(fā)者維塔利克·布特林(Vitalik Buterin)對比特幣的不動員和風險規(guī)避文化化感到失望。因為他想要打造對開發(fā)者友好的新功能。因此,他建立了自己的平臺——以太坊。
雖然比特幣最初的目的是成為一種新的金融價值儲存媒介,但以太坊被的出現(xiàn)是作為一個完整的開發(fā)者環(huán)境。在以太坊中,開發(fā)者們會在Solidity編程語言中編寫智能的合同,而那些智能的合同都是在以太坊虛擬機(EVM)中運行的,在這里,我們看到開發(fā)者有機會分叉或使用他們自己的區(qū)塊鏈來實現(xiàn)不同的目的。然而,要做到這一點,就需要開發(fā)者的支持,以及激發(fā)現(xiàn)有區(qū)塊鏈技術此前實現(xiàn)的網絡效應。今天,在以太坊這樣的現(xiàn)有網絡基礎之上,開發(fā)者不僅可以成為他們自己的應用程序的利益相關者,而且還可以成為底層協(xié)議的利益相關者。
去中心化應用程序(Dapps)、加密貨幣和智能合同
如今的區(qū)塊鏈開發(fā)者通常做法是,在現(xiàn)有協(xié)議的基礎上開發(fā)去中心化的應用程序,以解決特定市場和終端用戶所需要的問題。這樣一來,開發(fā)者就可以發(fā)布代幣,用于執(zhí)行去中心化應用程序本身的某些“功能”。這些“功能”是一種“智能合同”,它們承諾為去中心化應用程序提供服務,以換取數(shù)字資產,從而消除中間人來擔保交易的需要。
隨著去中心化應用程序的功能越來越受到人們的追捧,固定數(shù)量的加密貨幣的價值隨著供不應求而增加。換句話說,如果事實證明,去中心化應用程序的體驗真的是非常引人注目和高度需求的,那么固定的代幣供應就會變得更有價值。這是所有ICO的基本原則,去中心化應用程序開發(fā)者通過提供一種用于應用中的加密貨幣來吸引投資,來資助他們的項目。
但是,等等,你可能會問:“為什么不使用現(xiàn)有的代幣,而是在一開始就發(fā)行自己的、特定于去中心化應用程序的代幣呢?”
特定于去中心化應用程序的代幣可以幫助小規(guī)模經濟體實現(xiàn)應用的目的。這些代幣是一種稀缺資源,可以對其進行管理,使其與去中心化應用程序的功能更加緊密地結合在一起。
這就是以太坊的出發(fā)點——在以太坊中,開發(fā)者可以很容易地為他們自己的去中心化應用程序的指定用途發(fā)布自己的代幣。
早期機會
了解了去中心化應用程序的底層機制后,很重要的一點是要仔細思考去中心化最終能夠對用戶帶來什么樣的好處。我們并不是要跳到一份附帶項目的列表中,而是將關系數(shù)據(jù)庫交給區(qū)塊鏈來實現(xiàn),我們敦促你考慮去中心化的好處。例如,奧格爾(Augur)通過分散的參與者做出正確的預測來預測市場,因為他們會分享財務激勵。
在一個元級別上,開發(fā)者堆棧中也有創(chuàng)新的機會。許多區(qū)塊鏈開發(fā)者將區(qū)塊鏈工具和框架的成熟度比作互聯(lián)網早期的網絡。我們采訪了Stream的Ben Yu,他稱這對開發(fā)者來說是一個新的機遇:“在讓這個領域變得更容易獲取的過程中,存在著唾手可得的成果,需要建立大量的技術基礎設施來將區(qū)塊鏈的發(fā)展水平,從1994年互聯(lián)網水平,帶到2017年。”
隨著區(qū)塊鏈的創(chuàng)新,許多人發(fā)現(xiàn)了建立一個新的、去中心化的網絡棧的機會,這種網絡棧,不依賴于集中式的政府或企業(yè)實體。傳統(tǒng)的網絡棧由諸如TCP/IP、DNS、數(shù)據(jù)庫、Web服務器、身份驗證系統(tǒng)和CDN等構建模塊組成,我們正在使用以太坊作為基礎層來復制這些組件。
不可變性的挑戰(zhàn)
不幸的是, 一種類似于JavaScript早期迭代的技術幾乎肯定會帶來挑戰(zhàn),其中最明顯的是與新協(xié)議的不可變性有關。開發(fā)者無法改變基礎區(qū)塊鏈或更高級別的智能合約。合約不能輕易地被版本化。最近的奇偶校驗bug,凍結了1.5億美元的資金,以及許多其他類似的事件,提醒我們有必要建立“基于未來”的架構。
0x工程師布蘭登·米爾曼(Brandon Millman)描述了區(qū)塊鏈的不變性如何影響他對安全問題的看法:“身處這個領域意味著要謹慎得多,特別是因為這會給人們的錢帶來風險。”區(qū)塊鏈范式的好處之一是,如果你持有私鑰,人們很難從你那里把錢取走,但很多騙局會讓你心甘情愿地把錢投到錯誤的地方,而不是從你的錢包里偷錢。”
開發(fā)者們,尤其是那些習慣了快節(jié)奏的創(chuàng)業(yè)公司的開發(fā)者,不得不在速度和安全性之間權衡取舍。
正如Stream的Ben Yu所描述的,“你必須非常快地移動,因為空間正在飛速發(fā)展,但你不能快速移動,打破常規(guī)。如果你把事情搞砸了,你就會損失數(shù)億美元。”
在區(qū)塊鏈上進行開發(fā)需要不同程度的規(guī)劃。開發(fā)者不能再使用熱補丁或過夜補丁,因為他們不再對整個系統(tǒng)進行集中控制。相反,引入系統(tǒng)變更通常需要對整個協(xié)議進行嚴格的處理,或者在某些情況下,為不直接綁定到區(qū)塊鏈的協(xié)議參數(shù)提供單獨的源代碼。
以太坊的局限性
除了一般的不可變性的挑戰(zhàn)外,以太坊還包含了一些區(qū)塊鏈開發(fā)者可能會遇到的限制。
首先,以太坊無法從區(qū)塊鏈外部獲取實時數(shù)據(jù)。開發(fā)人員需要依賴可信的第三方數(shù)據(jù)提供商,來為智能合同提供與外部信息如天氣、隨機數(shù)字或貨幣價值等等。
此外,以太坊的規(guī)范還阻止了實時計算。區(qū)塊交易的處理時間超過15秒(與比特幣的10分鐘相比,這是閃電般的速度)。因此,開發(fā)人員需要編寫帶有前端框架的異步代碼,這些框架可以相應地更新狀態(tài)(如 React)。
在以太坊中,你還要為你的交易支付交易費用,使用當前版本的Solidity, 如果你打算執(zhí)行的計算過于昂貴,那么你很有可能會發(fā)現(xiàn)自己遇到了一個交易限制。因此,在區(qū)塊鏈中的計算成本在金錢和網絡帶寬上變得昂貴。有一些有趣的替代方法,比如Truebit,可以在非鏈中執(zhí)行更密集的計算。
開始行動
總的來說, 進入這個領域肯定會讓人感到無法抗拒。這是一個跨學科領域,涵蓋了經濟學、博弈論、金融學、計算機科學、數(shù)學、密碼學等領域。然而,這也意味著有很多的領域可供新入行者選擇。
0x的布蘭登建議,你應該去那些你感興趣或有經驗的領域,而不是一次性地學習所有東西:“如果你之前已經做過JS開發(fā),你可以做很多的JS庫。雖然你肯定需要知道所有東西最終都是如何組合在一起的,但你不需要一開始就學習整個課程。”
本著去中心化的精神,區(qū)塊鏈項目的大部分代碼也可以通過開源獲得。有很多好的資源可以讓你使用:
-
官方的Solidity文件是一個很好的起點。
-
Truffle框架是最堅固的框架之一。
-
看看如何在zeppelinOS repo中開發(fā)出代幣和銷售代幣的方式,這是開發(fā)去中心化應用程序最受信任的庫之一。
-
Blockgeek還提供了一份帶有代碼樣本和高級概念的深度以太坊代幣指南。
-
你甚至可以從Crypto Kitties中學習,在區(qū)塊鏈上創(chuàng)建自己的數(shù)字游戲。
此外,開發(fā)者社區(qū)非常善于接納和幫助新人:
-
/r/ethereum
-
/r/ethdev
-
https://blockgeeks.com/
如果你主要通過編寫自己的項目來學習,這里有一些想法可以開始:
-
打造自己的錢包。它可以是一個網頁、移動應用或桌面應用。
-
創(chuàng)建您自己的ERC-20令牌,并將其部署到測試網絡中。
-
把Crypto Kitties做成狗、坦克、僵尸…并將它部署到測試網絡中。
展望未來
在當前的狀態(tài)下,區(qū)塊鏈的開發(fā)是混亂的。沒有類似于現(xiàn)代Web開發(fā)那樣的框架和工具。但為什么不把區(qū)塊鏈的新生狀態(tài)看作是影響一種范式轉換技術的機會呢?
在區(qū)塊鏈上,你不需要部署任何集中式的服務器,這意味著沒有單點故障。如果你的整個堆棧是去中心化的,那么就沒有可信的第三方參與到它的審查中去,你的數(shù)據(jù)庫是可以公開驗證的。隨著新范式為公開分享數(shù)據(jù)提供了機會, 我們認為將數(shù)據(jù)庫去中心化是一個最大的優(yōu)勢。這就是我們在區(qū)塊鏈上正在打造的未來——消除中間人,讓信息和權力被系統(tǒng)地分配。
(36氪編譯組出品,未經允許嚴禁轉載。編輯:郝鵬程)