正在看這篇文章的你殃姓,應該是一名被區(qū)塊鏈技術所吸引的開發(fā)者或者極客。我相
信你已經理解了區(qū)塊鏈的技術原理,并急切地想要搞清楚這項技術將為你和你的
開發(fā)技術棧帶來怎樣的影響调榄。
如果你需要更基礎的區(qū)塊鏈技術介紹愿伴,可以閱讀比特幣和以太坊的白皮書肺魁。?
這篇文章的目標是:
1. 解釋區(qū)塊鏈項目的開發(fā)和現有軟件開發(fā)模式的區(qū)別。
2. 提供上下文隔节,幫助你更好地思考該領域的機遇和挑戰(zhàn)鹅经。
3. 提供區(qū)塊鏈領域的基礎資源和資料,便于開發(fā)區(qū)塊鏈項目怎诫。
開發(fā)模式的轉變
互聯網的網絡效應產生了大量的中心化的數據瘾晃,這些數據促進了互聯網應用的發(fā)
展。受惠于共享開放的網絡協議(比如 TCP/IP,HTTP)幻妓,諸如 Yelp蹦误,Facebook
和 Amazon 這樣的公司得以把自己的用戶——當然也包括用戶產生的數據——集
中存儲在自己的服務器上。這樣一來肉津,這些互聯網巨頭們除了比用戶量小的企業(yè)
更有優(yōu)勢之外强胰,他們還對自己所擁有的海量用戶數據如何變現有著 100% 的控制
權。用數字貨幣投資者 Joel Monegro 的話說就是妹沙,現有的互聯網模式使得絕大
部分的價值被應用層所攫取偶洋,而應用層的基礎,也就是底層的協議層則獲利很少
(即距糖,“胖”應用層玄窝,“瘦”協議層模式)。
相反悍引,區(qū)塊鏈技術帶來的價值分布模式哆料,可以被理解為是一種“胖”協議
層,“瘦”應用層的模式吗铐。正是密碼學貨幣的創(chuàng)新东亦,使得這種模式成為可能。正
如 USV 的 Albert Wagner 所說:
“一直以來,靠協議賺錢的方式只有一種典阵,那就是基于該協議開發(fā)軟件并出售
(當然最近都轉為出租了)… 然而密碼學貨幣則提供了一種直接在協議層變
現的可能奋渔,并且隨著基于該協議的應用越來越豐富,底層協議的變現能力也會
隨之越來越強壮啊,反映在數字貨幣上就是價格越來越高嫉鲸。”
從前那些互聯網開放協議的開發(fā)者們歹啼,也就是 DARPA 網的研究員們或者那些無償
的貢獻者們玄渗,并不會因為開放協議的發(fā)展或基于其上的應用越來越多,而獲得直
接的經濟回報狸眼。不同的是藤树,現在的協議開發(fā)者們可以直接發(fā)行數字貨幣了,比如
比特幣或以太幣拓萌,而這些數字貨幣則直接代表了去中心化協議的價值岁钓。
Joel Monegro 相信,區(qū)塊鏈技術所帶來的這種模式上的轉變微王,將促使開發(fā)者重新
審視自己的應用屡限。“數據的開放共享和內生激勵機制的結合炕倘,最終會終結“贏者
通吃”的市場現象钧大。這將改變應用層的游戲規(guī)則,并且催生一批有著全新業(yè)務模
型的公司罩旋。而這些公司業(yè)務模型的不同將主要集中在協議層拓型。”
以太坊
前面的討論帶給我們的結論是:區(qū)塊鏈技術帶來的創(chuàng)新讓開發(fā)者們可以直接在協
議層獲得價值瘸恼。接下來我們將繼續(xù)討論劣挫,區(qū)塊鏈技術是如何朝著開發(fā)者友好的方
向演進的。8 年前东帅,一種無需中心化金融機構背書的數字貨幣出現了压固,它就是現
在人們耳熟能詳的比特幣。一開始靠闭,開發(fā)者們試圖將數據直接存儲在比特幣的區(qū)
塊鏈上來開發(fā)應用帐我,結果表明,這種方式非常低效(Joel 的這篇文章是個很好的
例子)愧膀。其中一位開發(fā)者 Vitalik Buterin 實在是受夠了比特幣對于新特性極端
謹慎和保守的態(tài)度拦键,于是他開發(fā)了一個新的區(qū)塊鏈平臺以太坊(Ethereum)。
比特幣的初衷是創(chuàng)造一種新的價值存儲的媒介檩淋。以太坊則是為了實現一個圖靈完
備的區(qū)塊鏈開發(fā)平臺芬为。在以太坊網絡中萄金,開發(fā)者們可以使用 Solidity 這門編程
語言編寫智能合約,這些合約則由以太坊虛擬機(EVM)來運行媚朦。從 Vitalik
Buterin 的例子中我們不難看出氧敢,開發(fā)者們完全可以開發(fā)一個全新的區(qū)塊鏈網
絡,以此來滿足自己多樣的需求询张。當然孙乖,從頭開發(fā)新的區(qū)塊鏈網絡也有缺點,比
如你要從頭開始構建開發(fā)者社區(qū)份氧。但直接在類似以太坊這類成熟的網絡上開發(fā)唯袄,
則沒有這樣的問題。而且一個顯著的不同是蜗帜,開發(fā)基于區(qū)塊鏈網絡的應用恋拷,開發(fā)
者不僅會是這個應用的所有者,也會成為因此而繁榮的底層協議的直接受益人钮糖。
去中心化應用(Dapps)梅掠,代幣和智能合約
現在的開發(fā)者們基于現有的區(qū)塊鏈協議(比如以太坊)開發(fā)出了滿足不同用戶需
求的去中心化應用(dapp)酌住。開發(fā)者一般會在 dapp 中發(fā)行自己的代幣
(token)店归,用戶可以通過消耗代幣來讓 dapp “執(zhí)行”相應的操作來實現某
個“功能”。代幣其實并不神秘酪我,你可以把它想象成人們在商場的電玩世界里買
的游戲幣消痛。這些通過“智能合約”實現的“功能”通過收取一定的費用(代
幣),使得 dapp 可以在不依賴第三方的情況下對外提供可靠的服務都哭。用游戲幣
來類比就是秩伞,只要有足夠的游戲幣,你隨時都可以把游戲幣塞到籃球機里玩一
局欺矫!
一般情況下纱新,代幣的總量是固定的,因此隨著某個 dapp 提供的服務越來越流
行穆趴,基于簡單的供需原理脸爱,代幣的價格肯定會水漲船高∥疵茫基于這個邏輯簿废,dapp 的
開發(fā)者們往往通過發(fā)售代幣的方式來募集開發(fā)資金(而不是通過傳統的融資渠
道),這一過程的另一個眾所周知的名字就是 ICO(初始代幣銷售)络它。
看到這里你可能會問族檬,“為什么每個 dapp 都要發(fā)行專用的代幣,而不是用現成
的化戳,比如以太幣(eth)呢单料?”。這個不難解釋,因為專用的代幣利于特定應用生
態(tài)里的小微經濟看尼。換句話說递鹉,專用的代幣可以針對應用的特定功能和需求作出靈
活的調整,如此一來藏斩,這個代幣就能更好地服務于這款 dapp躏结。說到這里,我們不
得不提到以太坊(Ethereum)狰域。以太坊正是這么一個讓 dapp 開發(fā)者們可以方便
地發(fā)行代幣的平臺媳拴。
早期機會
有了上述這些對于 dapp 底層機制的理解,接下來你應該思考這么一個問題了:
去中心化到底會給你的用戶帶來什么價值兆览?我們希望你可以先想清楚上面這個問
題屈溉,而不是一上來就開始急著“去中心化”現有的產品。舉個例子抬探,Augur 這款
產品依靠區(qū)塊鏈技術實現了一個預測市場子巾。為什么要用區(qū)塊鏈技術實現?正是因
為這項技術帶來的鼓勵誠實的經濟激勵機制小压,使得散布在世界各地的參與者因此
而能夠作出更準確的預測线梗。
在開發(fā)者層面,區(qū)塊鏈技術也帶來了一次技術棧的創(chuàng)新機會〉∫妫現有區(qū)塊鏈的開發(fā)
者們很喜歡把現在的情形跟互聯網早期做類比仪搔,那個時候各種開發(fā)工具和框架都
還不夠完善,而現在的區(qū)塊鏈開發(fā)領域正是如此蜻牢。來自 Stream 的 Ben Yu 認為
這是開發(fā)者的新機會:“很多看起來是舉手之勞的基礎工作亟待完成烤咧,如果說區(qū)
塊鏈技術社區(qū)的現狀很像 1994 年的互聯網的話,那么抢呆,為了將其演進到 2017
年的互聯網煮嫌,還要完成很多基礎架構工作”。
由于區(qū)塊鏈技術的創(chuàng)新抱虐,很多人已經看到了創(chuàng)建全新的昌阿、去中心化的網絡棧的機
會。這種全新的網絡棧將不再依賴中心化的政府或公司梯码。傳統的網絡棧由
TCP/IP宝泵,DNS,數據庫轩娶,網絡服務器儿奶,鑒權系統和 CDN 這些基礎組件構成,而現
在鳄抒,我們有機會通過類似于以太坊這樣的平臺闯捎,用去中心化的方式椰弊,重新實現傳
統網絡棧中的各個組件。
“不可篡改”帶來的挑戰(zhàn)
就像早期的 Javascript 技術一樣瓤鼻,區(qū)塊鏈技術演進的過程必然伴隨著各式各樣
的挑戰(zhàn)秉版。其中最大的挑戰(zhàn)之一,也是區(qū)塊鏈技術最突出的特性茬祷,那就是“不可篡
改”清焕。由于這個特性,開發(fā)者們無法更改底層的區(qū)塊鏈祭犯,也無法更改頂層的智能
合約秸妥,對基礎庫和合約進行版本控制也非常困難。最近 Parity 的一個 bug 直接
導致了價值 1.5 億美金的以太幣被鎖沃粗。諸如此類的事故不斷地提醒我們粥惧,構建經
得住未來考驗的架構是非常重要的。
關于這種不可篡改性對業(yè)務安全所帶來的影響最盅,來自 0x 項目的開發(fā)者 Brandon
Millman 跟我們分享了他的看法:“跟傳統項目相比突雪,在這個領域做開發(fā)意味著
你要加倍小心,因為任何問題都將直接影響用戶數字資產的安全涡贱。一直以來咏删,區(qū)
塊鏈技術對于私有財產的有力保護廣為人知,也就是說盼产,只要你安全地控制著私
鑰饵婆,理論上沒有人可以偷走你的資產勺馆。但這個領域更多的偷竊行為并不是通過直
接盜取用戶的私鑰來實施的戏售。騙子們更多地是通過誘騙的方式,讓用戶將數字資
產轉移到他們的錢包草穆,最終達成行竊的目的灌灾。”
開發(fā)者們悲柱,尤其是那些來自創(chuàng)業(yè)公司習慣了快節(jié)奏開發(fā)的開發(fā)者們锋喜,不得不停下
來思考如何在速度和安全性之間找到平衡。就像來自 Stream 的 Ben Yu 說的那
樣:“開發(fā)者們普遍推崇的一個原則是:move fast and break things. 這句話
在區(qū)塊鏈領域只有前半句成立豌鸡。這個領域的發(fā)展日新月異嘿般,所以你必須 move
fast 才不至于被競爭對手超越,但 break things 則意味著成千上萬的金錢損
失涯冠÷”
區(qū)塊鏈領域的開發(fā)需要更加周密的計劃。由于開發(fā)者對于整個系統缺少中心化的
控制蛇更,因此 dapp 是很難像傳統應用那樣做快速熱修復的瞻赶。相反的赛糟,在區(qū)塊鏈世
界要想做系統級別的變更,則往往意味著整個協議的硬分叉砸逊。
以太坊的局限性
除了上面講到的“不可篡改”帶來的挑戰(zhàn)璧南,開發(fā)者在以太坊網絡上還可能碰到一
些其他限制。比如师逸,以太坊網絡不支持通過外部調用的方式獲取自身區(qū)塊鏈以外
的數據司倚。開發(fā)者們需要依賴第三方數據提供商來向智能合約注入外部數據,這類
數據提供商也常常被稱作預言機(Oracle)篓像。
除此之外对湃,以太坊的性能不足以支持實時計算。以太坊網絡中區(qū)塊的處理時間長
達 15 秒(跟比特幣網絡的 10 分鐘比起來已經很快了)遗淳。因此拍柒,開發(fā)者們需要
寫一些異步代碼來進行狀態(tài)的更新(這一點跟 React 很像)。
同時屈暗,在以太坊網絡中拆讯,合約執(zhí)行的每一步都需要消耗 gas,而 gas 最終會以以
太幣(eth)進行結算养叛。因此种呐,開發(fā)者們可能經常會碰到由于 gas 設置過低,導
致計算無法完成的情況(比如這款象棋游戲)弃甥。也就是說爽室,以太坊的“鏈上計
算”是非常昂貴的,同時也非常消耗帶寬淆攻。因此阔墩,市面上也產生了一些像
Truebit 這類旨在降低計算成本的“鏈下計算”服務。
如何開始
簡單來說瓶珊,這是一個令人嘆為觀止的領域啸箫。區(qū)塊鏈技術是交叉學科的典型代表,
這一技術涉及了經濟學伞芹、博弈論忘苛、金融學、計算機科學唱较、數學扎唾、密碼學等眾多學
科領域。而交叉學科往往也意味著南缓,有很多基礎工作需要完成胸遇。
對于區(qū)塊鏈領域的新人,來自 0x 項目團隊的 Brandon 給的建議是西乖,選擇自己感
興趣或跟自身經歷相關的領域為切入點狐榔,而不是一上來就想吃成大胖子:“如果
你之前做的是 JS 開發(fā)工作坛增,那么這個領域有非常多的 JS 庫需要你這樣的人來
完善。假以時日薄腻,在開發(fā)過程中收捣,你就會逐漸理解并熟悉這一領域。你無須有完
成一門課程才能入門的負擔庵楷“瞻”
正如區(qū)塊鏈技術所宣揚的“去中心化”思想那樣,這一領域的絕大多數項目的代
碼都是開源的尽纽。下面就列出了一些可以讓你快速上手的資源:
· Solidity 官方文檔 是學習這門語言的很好的開始咐蚯。
· Truffle 框架 是 solidity 最好的開發(fā)框架之一。
· 在 zeppelinOS 代碼庫 里可以看到很多知名的開源庫弄贿。
· Blockgeeks 提供了一個詳細的 以太坊代幣開發(fā)指引春锋,并附有一些代碼示例和
抽象概念。
· 你也可以從火爆全網的 Crypto Kitties 那里學習 如何在區(qū)塊鏈上創(chuàng)建自己的
游戲差凹。
如果你想做一些項目練手期奔,也許下面這些主意不錯:
· 創(chuàng)建自己的錢包應用∥D颍可以是網頁版呐萌,移動版或桌面版
· 發(fā)行自己的 ERC-20 代幣,并部署在測試網絡上谊娇。
· 改一改 crypto kitties 的代碼(比如改成狗肺孤,坦克,僵尸)并部署在測試網
絡上济欢。
展望未來
目前看來赠堵,我們必須承認,圍繞區(qū)塊鏈的開發(fā)一團亂麻船逮。跟現有成熟的網絡開發(fā)
相比顾腊,區(qū)塊鏈領域還沒有好用的框架和工具粤铭。但換個角度想挖胃,這種早期的混亂,
正是一個機會梆惯,更重要的是酱鸭,這是一個極有可能帶來開發(fā)模式巨變的機會。
在區(qū)塊鏈上垛吗,你不需要部署任何中心化的服務器凹髓,這就意味著單點失敗的風險為
零。如果你的整個技術棧都是去中心化的怯屉,那么就不需要引入“可信”的第三
方蔚舀,而沒有第三方則意味著可以 100% 對抗審查饵沧。區(qū)塊鏈技術帶來了數據開放的
新機會,基于區(qū)塊鏈的去中心化數據庫未來可期赌躺。
有了區(qū)塊鏈技術狼牺,我們可以預見這樣一個未來世界:一個沒有中間人,并且信息
和權利被系統性地分散開來的世界礼患。