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