正在看這篇文章的你,應(yīng)該是一名被區(qū)塊鏈技術(shù)所吸引的開(kāi)發(fā)者或者極客。我相
信你已經(jīng)理解了區(qū)塊鏈的技術(shù)原理,并急切地想要搞清楚這項(xiàng)技術(shù)將為你和你的
開(kāi)發(fā)技術(shù)棧帶來(lái)怎樣的影響。
如果你需要更基礎(chǔ)的區(qū)塊鏈技術(shù)介紹,可以閱讀比特幣和以太坊的白皮書(shū)。?
這篇文章的目標(biāo)是:
1. 解釋區(qū)塊鏈項(xiàng)目的開(kāi)發(fā)和現(xiàn)有軟件開(kāi)發(fā)模式的區(qū)別。
2. 提供上下文,幫助你更好地思考該領(lǐng)域的機(jī)遇和挑戰(zhàn)。
3. 提供區(qū)塊鏈領(lǐng)域的基礎(chǔ)資源和資料,便于開(kāi)發(fā)區(qū)塊鏈項(xiàng)目。
開(kāi)發(fā)模式的轉(zhuǎn)變
互聯(lián)網(wǎng)的網(wǎng)絡(luò)效應(yīng)產(chǎn)生了大量的中心化的數(shù)據(jù),這些數(shù)據(jù)促進(jìn)了互聯(lián)網(wǎng)應(yīng)用的發(fā)
展。受惠于共享開(kāi)放的網(wǎng)絡(luò)協(xié)議(比如 TCP/IP,HTTP),諸如 Yelp,F(xiàn)acebook
和 Amazon 這樣的公司得以把自己的用戶——當(dāng)然也包括用戶產(chǎn)生的數(shù)據(jù)——集
中存儲(chǔ)在自己的服務(wù)器上。這樣一來(lái),這些互聯(lián)網(wǎng)巨頭們除了比用戶量小的企業(yè)
更有優(yōu)勢(shì)之外,他們還對(duì)自己所擁有的海量用戶數(shù)據(jù)如何變現(xiàn)有著 100% 的控制
權(quán)。用數(shù)字貨幣投資者 Joel Monegro 的話說(shuō)就是,現(xiàn)有的互聯(lián)網(wǎng)模式使得絕大
部分的價(jià)值被應(yīng)用層所攫取,而應(yīng)用層的基礎(chǔ),也就是底層的協(xié)議層則獲利很少
(即,“胖”應(yīng)用層,“瘦”協(xié)議層模式)。
相反,區(qū)塊鏈技術(shù)帶來(lái)的價(jià)值分布模式,可以被理解為是一種“胖”協(xié)議
層,“瘦”應(yīng)用層的模式。正是密碼學(xué)貨幣的創(chuàng)新,使得這種模式成為可能。正
如 USV 的 Albert Wagner 所說(shuō):
“一直以來(lái),靠協(xié)議賺錢的方式只有一種,那就是基于該協(xié)議開(kāi)發(fā)軟件并出售
(當(dāng)然最近都轉(zhuǎn)為出租了)… 然而密碼學(xué)貨幣則提供了一種直接在協(xié)議層變
現(xiàn)的可能,并且隨著基于該協(xié)議的應(yīng)用越來(lái)越豐富,底層協(xié)議的變現(xiàn)能力也會(huì)
隨之越來(lái)越強(qiáng),反映在數(shù)字貨幣上就是價(jià)格越來(lái)越高?!?/p>
從前那些互聯(lián)網(wǎng)開(kāi)放協(xié)議的開(kāi)發(fā)者們,也就是 DARPA 網(wǎng)的研究員們或者那些無(wú)償
的貢獻(xiàn)者們,并不會(huì)因?yàn)殚_(kāi)放協(xié)議的發(fā)展或基于其上的應(yīng)用越來(lái)越多,而獲得直
接的經(jīng)濟(jì)回報(bào)。不同的是,現(xiàn)在的協(xié)議開(kāi)發(fā)者們可以直接發(fā)行數(shù)字貨幣了,比如
比特幣或以太幣,而這些數(shù)字貨幣則直接代表了去中心化協(xié)議的價(jià)值。
Joel Monegro 相信,區(qū)塊鏈技術(shù)所帶來(lái)的這種模式上的轉(zhuǎn)變,將促使開(kāi)發(fā)者重新
審視自己的應(yīng)用?!皵?shù)據(jù)的開(kāi)放共享和內(nèi)生激勵(lì)機(jī)制的結(jié)合,最終會(huì)終結(jié)“贏者
通吃”的市場(chǎng)現(xiàn)象。這將改變應(yīng)用層的游戲規(guī)則,并且催生一批有著全新業(yè)務(wù)模
型的公司。而這些公司業(yè)務(wù)模型的不同將主要集中在協(xié)議層?!?/p>
以太坊
前面的討論帶給我們的結(jié)論是:區(qū)塊鏈技術(shù)帶來(lái)的創(chuàng)新讓開(kāi)發(fā)者們可以直接在協(xié)
議層獲得價(jià)值。接下來(lái)我們將繼續(xù)討論,區(qū)塊鏈技術(shù)是如何朝著開(kāi)發(fā)者友好的方
向演進(jìn)的。8 年前,一種無(wú)需中心化金融機(jī)構(gòu)背書(shū)的數(shù)字貨幣出現(xiàn)了,它就是現(xiàn)
在人們耳熟能詳?shù)谋忍貛拧R婚_(kāi)始,開(kāi)發(fā)者們?cè)噲D將數(shù)據(jù)直接存儲(chǔ)在比特幣的區(qū)
塊鏈上來(lái)開(kāi)發(fā)應(yīng)用,結(jié)果表明,這種方式非常低效(Joel 的這篇文章是個(gè)很好的
例子)。其中一位開(kāi)發(fā)者 Vitalik Buterin 實(shí)在是受夠了比特幣對(duì)于新特性極端
謹(jǐn)慎和保守的態(tài)度,于是他開(kāi)發(fā)了一個(gè)新的區(qū)塊鏈平臺(tái)以太坊(Ethereum)。
比特幣的初衷是創(chuàng)造一種新的價(jià)值存儲(chǔ)的媒介。以太坊則是為了實(shí)現(xiàn)一個(gè)圖靈完
備的區(qū)塊鏈開(kāi)發(fā)平臺(tái)。在以太坊網(wǎng)絡(luò)中,開(kāi)發(fā)者們可以使用 Solidity 這門(mén)編程
語(yǔ)言編寫(xiě)智能合約,這些合約則由以太坊虛擬機(jī)(EVM)來(lái)運(yùn)行。從 Vitalik
Buterin 的例子中我們不難看出,開(kāi)發(fā)者們完全可以開(kāi)發(fā)一個(gè)全新的區(qū)塊鏈網(wǎng)
絡(luò),以此來(lái)滿足自己多樣的需求。當(dāng)然,從頭開(kāi)發(fā)新的區(qū)塊鏈網(wǎng)絡(luò)也有缺點(diǎn),比
如你要從頭開(kāi)始構(gòu)建開(kāi)發(fā)者社區(qū)。但直接在類似以太坊這類成熟的網(wǎng)絡(luò)上開(kāi)發(fā),
則沒(méi)有這樣的問(wèn)題。而且一個(gè)顯著的不同是,開(kāi)發(fā)基于區(qū)塊鏈網(wǎng)絡(luò)的應(yīng)用,開(kāi)發(fā)
者不僅會(huì)是這個(gè)應(yīng)用的所有者,也會(huì)成為因此而繁榮的底層協(xié)議的直接受益人。
去中心化應(yīng)用(Dapps),代幣和智能合約
現(xiàn)在的開(kāi)發(fā)者們基于現(xiàn)有的區(qū)塊鏈協(xié)議(比如以太坊)開(kāi)發(fā)出了滿足不同用戶需
求的去中心化應(yīng)用(dapp)。開(kāi)發(fā)者一般會(huì)在 dapp 中發(fā)行自己的代幣
(token),用戶可以通過(guò)消耗代幣來(lái)讓 dapp “執(zhí)行”相應(yīng)的操作來(lái)實(shí)現(xiàn)某
個(gè)“功能”。代幣其實(shí)并不神秘,你可以把它想象成人們?cè)谏虉?chǎng)的電玩世界里買
的游戲幣。這些通過(guò)“智能合約”實(shí)現(xiàn)的“功能”通過(guò)收取一定的費(fèi)用(代
幣),使得 dapp 可以在不依賴第三方的情況下對(duì)外提供可靠的服務(wù)。用游戲幣
來(lái)類比就是,只要有足夠的游戲幣,你隨時(shí)都可以把游戲幣塞到籃球機(jī)里玩一
局!
一般情況下,代幣的總量是固定的,因此隨著某個(gè) dapp 提供的服務(wù)越來(lái)越流
行,基于簡(jiǎn)單的供需原理,代幣的價(jià)格肯定會(huì)水漲船高?;谶@個(gè)邏輯,dapp 的
開(kāi)發(fā)者們往往通過(guò)發(fā)售代幣的方式來(lái)募集開(kāi)發(fā)資金(而不是通過(guò)傳統(tǒng)的融資渠
道),這一過(guò)程的另一個(gè)眾所周知的名字就是 ICO(初始代幣銷售)。
看到這里你可能會(huì)問(wèn),“為什么每個(gè) dapp 都要發(fā)行專用的代幣,而不是用現(xiàn)成
的,比如以太幣(eth)呢?”。這個(gè)不難解釋,因?yàn)閷S玫拇鷰爬谔囟☉?yīng)用生
態(tài)里的小微經(jīng)濟(jì)。換句話說(shuō),專用的代幣可以針對(duì)應(yīng)用的特定功能和需求作出靈
活的調(diào)整,如此一來(lái),這個(gè)代幣就能更好地服務(wù)于這款 dapp。說(shuō)到這里,我們不
得不提到以太坊(Ethereum)。以太坊正是這么一個(gè)讓 dapp 開(kāi)發(fā)者們可以方便
地發(fā)行代幣的平臺(tái)。
早期機(jī)會(huì)
有了上述這些對(duì)于 dapp 底層機(jī)制的理解,接下來(lái)你應(yīng)該思考這么一個(gè)問(wèn)題了:
去中心化到底會(huì)給你的用戶帶來(lái)什么價(jià)值?我們希望你可以先想清楚上面這個(gè)問(wèn)
題,而不是一上來(lái)就開(kāi)始急著“去中心化”現(xiàn)有的產(chǎn)品。舉個(gè)例子,Augur 這款
產(chǎn)品依靠區(qū)塊鏈技術(shù)實(shí)現(xiàn)了一個(gè)預(yù)測(cè)市場(chǎng)。為什么要用區(qū)塊鏈技術(shù)實(shí)現(xiàn)?正是因
為這項(xiàng)技術(shù)帶來(lái)的鼓勵(lì)誠(chéng)實(shí)的經(jīng)濟(jì)激勵(lì)機(jī)制,使得散布在世界各地的參與者因此
而能夠作出更準(zhǔn)確的預(yù)測(cè)。
在開(kāi)發(fā)者層面,區(qū)塊鏈技術(shù)也帶來(lái)了一次技術(shù)棧的創(chuàng)新機(jī)會(huì)?,F(xiàn)有區(qū)塊鏈的開(kāi)發(fā)
者們很喜歡把現(xiàn)在的情形跟互聯(lián)網(wǎng)早期做類比,那個(gè)時(shí)候各種開(kāi)發(fā)工具和框架都
還不夠完善,而現(xiàn)在的區(qū)塊鏈開(kāi)發(fā)領(lǐng)域正是如此。來(lái)自 Stream 的 Ben Yu 認(rèn)為
這是開(kāi)發(fā)者的新機(jī)會(huì):“很多看起來(lái)是舉手之勞的基礎(chǔ)工作亟待完成,如果說(shuō)區(qū)
塊鏈技術(shù)社區(qū)的現(xiàn)狀很像 1994 年的互聯(lián)網(wǎng)的話,那么,為了將其演進(jìn)到 2017
年的互聯(lián)網(wǎng),還要完成很多基礎(chǔ)架構(gòu)工作”。
由于區(qū)塊鏈技術(shù)的創(chuàng)新,很多人已經(jīng)看到了創(chuàng)建全新的、去中心化的網(wǎng)絡(luò)棧的機(jī)
會(huì)。這種全新的網(wǎng)絡(luò)棧將不再依賴中心化的政府或公司。傳統(tǒng)的網(wǎng)絡(luò)棧由
TCP/IP,DNS,數(shù)據(jù)庫(kù),網(wǎng)絡(luò)服務(wù)器,鑒權(quán)系統(tǒng)和 CDN 這些基礎(chǔ)組件構(gòu)成,而現(xiàn)
在,我們有機(jī)會(huì)通過(guò)類似于以太坊這樣的平臺(tái),用去中心化的方式,重新實(shí)現(xiàn)傳
統(tǒng)網(wǎng)絡(luò)棧中的各個(gè)組件。
“不可篡改”帶來(lái)的挑戰(zhàn)
就像早期的 Javascript 技術(shù)一樣,區(qū)塊鏈技術(shù)演進(jìn)的過(guò)程必然伴隨著各式各樣
的挑戰(zhàn)。其中最大的挑戰(zhàn)之一,也是區(qū)塊鏈技術(shù)最突出的特性,那就是“不可篡
改”。由于這個(gè)特性,開(kāi)發(fā)者們無(wú)法更改底層的區(qū)塊鏈,也無(wú)法更改頂層的智能
合約,對(duì)基礎(chǔ)庫(kù)和合約進(jìn)行版本控制也非常困難。最近 Parity 的一個(gè) bug 直接
導(dǎo)致了價(jià)值 1.5 億美金的以太幣被鎖。諸如此類的事故不斷地提醒我們,構(gòu)建經(jīng)
得住未來(lái)考驗(yàn)的架構(gòu)是非常重要的。
關(guān)于這種不可篡改性對(duì)業(yè)務(wù)安全所帶來(lái)的影響,來(lái)自 0x 項(xiàng)目的開(kāi)發(fā)者 Brandon
Millman 跟我們分享了他的看法:“跟傳統(tǒng)項(xiàng)目相比,在這個(gè)領(lǐng)域做開(kāi)發(fā)意味著
你要加倍小心,因?yàn)槿魏螁?wèn)題都將直接影響用戶數(shù)字資產(chǎn)的安全。一直以來(lái),區(qū)
塊鏈技術(shù)對(duì)于私有財(cái)產(chǎn)的有力保護(hù)廣為人知,也就是說(shuō),只要你安全地控制著私
鑰,理論上沒(méi)有人可以偷走你的資產(chǎn)。但這個(gè)領(lǐng)域更多的偷竊行為并不是通過(guò)直
接盜取用戶的私鑰來(lái)實(shí)施的。騙子們更多地是通過(guò)誘騙的方式,讓用戶將數(shù)字資
產(chǎn)轉(zhuǎn)移到他們的錢包,最終達(dá)成行竊的目的。”
開(kāi)發(fā)者們,尤其是那些來(lái)自創(chuàng)業(yè)公司習(xí)慣了快節(jié)奏開(kāi)發(fā)的開(kāi)發(fā)者們,不得不停下
來(lái)思考如何在速度和安全性之間找到平衡。就像來(lái)自 Stream 的 Ben Yu 說(shuō)的那
樣:“開(kāi)發(fā)者們普遍推崇的一個(gè)原則是:move fast and break things. 這句話
在區(qū)塊鏈領(lǐng)域只有前半句成立。這個(gè)領(lǐng)域的發(fā)展日新月異,所以你必須 move
fast 才不至于被競(jìng)爭(zhēng)對(duì)手超越,但 break things 則意味著成千上萬(wàn)的金錢損
失?!?/p>
區(qū)塊鏈領(lǐng)域的開(kāi)發(fā)需要更加周密的計(jì)劃。由于開(kāi)發(fā)者對(duì)于整個(gè)系統(tǒng)缺少中心化的
控制,因此 dapp 是很難像傳統(tǒng)應(yīng)用那樣做快速熱修復(fù)的。相反的,在區(qū)塊鏈?zhǔn)?/p>
界要想做系統(tǒng)級(jí)別的變更,則往往意味著整個(gè)協(xié)議的硬分叉。
以太坊的局限性
除了上面講到的“不可篡改”帶來(lái)的挑戰(zhàn),開(kāi)發(fā)者在以太坊網(wǎng)絡(luò)上還可能碰到一
些其他限制。比如,以太坊網(wǎng)絡(luò)不支持通過(guò)外部調(diào)用的方式獲取自身區(qū)塊鏈以外
的數(shù)據(jù)。開(kāi)發(fā)者們需要依賴第三方數(shù)據(jù)提供商來(lái)向智能合約注入外部數(shù)據(jù),這類
數(shù)據(jù)提供商也常常被稱作預(yù)言機(jī)(Oracle)。
除此之外,以太坊的性能不足以支持實(shí)時(shí)計(jì)算。以太坊網(wǎng)絡(luò)中區(qū)塊的處理時(shí)間長(zhǎng)
達(dá) 15 秒(跟比特幣網(wǎng)絡(luò)的 10 分鐘比起來(lái)已經(jīng)很快了)。因此,開(kāi)發(fā)者們需要
寫(xiě)一些異步代碼來(lái)進(jìn)行狀態(tài)的更新(這一點(diǎn)跟 React 很像)。
同時(shí),在以太坊網(wǎng)絡(luò)中,合約執(zhí)行的每一步都需要消耗 gas,而 gas 最終會(huì)以以
太幣(eth)進(jìn)行結(jié)算。因此,開(kāi)發(fā)者們可能經(jīng)常會(huì)碰到由于 gas 設(shè)置過(guò)低,導(dǎo)
致計(jì)算無(wú)法完成的情況(比如這款象棋游戲)。也就是說(shuō),以太坊的“鏈上計(jì)
算”是非常昂貴的,同時(shí)也非常消耗帶寬。因此,市面上也產(chǎn)生了一些像
Truebit 這類旨在降低計(jì)算成本的“鏈下計(jì)算”服務(wù)。
如何開(kāi)始
簡(jiǎn)單來(lái)說(shuō),這是一個(gè)令人嘆為觀止的領(lǐng)域。區(qū)塊鏈技術(shù)是交叉學(xué)科的典型代表,
這一技術(shù)涉及了經(jīng)濟(jì)學(xué)、博弈論、金融學(xué)、計(jì)算機(jī)科學(xué)、數(shù)學(xué)、密碼學(xué)等眾多學(xué)
科領(lǐng)域。而交叉學(xué)科往往也意味著,有很多基礎(chǔ)工作需要完成。
對(duì)于區(qū)塊鏈領(lǐng)域的新人,來(lái)自 0x 項(xiàng)目團(tuán)隊(duì)的 Brandon 給的建議是,選擇自己感
興趣或跟自身經(jīng)歷相關(guān)的領(lǐng)域?yàn)榍腥朦c(diǎn),而不是一上來(lái)就想吃成大胖子:“如果
你之前做的是 JS 開(kāi)發(fā)工作,那么這個(gè)領(lǐng)域有非常多的 JS 庫(kù)需要你這樣的人來(lái)
完善。假以時(shí)日,在開(kāi)發(fā)過(guò)程中,你就會(huì)逐漸理解并熟悉這一領(lǐng)域。你無(wú)須有完
成一門(mén)課程才能入門(mén)的負(fù)擔(dān)?!?/p>
正如區(qū)塊鏈技術(shù)所宣揚(yáng)的“去中心化”思想那樣,這一領(lǐng)域的絕大多數(shù)項(xiàng)目的代
碼都是開(kāi)源的。下面就列出了一些可以讓你快速上手的資源:
· Solidity 官方文檔 是學(xué)習(xí)這門(mén)語(yǔ)言的很好的開(kāi)始。
· Truffle 框架 是 solidity 最好的開(kāi)發(fā)框架之一。
· 在 zeppelinOS 代碼庫(kù) 里可以看到很多知名的開(kāi)源庫(kù)。
· Blockgeeks 提供了一個(gè)詳細(xì)的 以太坊代幣開(kāi)發(fā)指引,并附有一些代碼示例和
抽象概念。
· 你也可以從火爆全網(wǎng)的 Crypto Kitties 那里學(xué)習(xí) 如何在區(qū)塊鏈上創(chuàng)建自己的
游戲。
如果你想做一些項(xiàng)目練手,也許下面這些主意不錯(cuò):
· 創(chuàng)建自己的錢包應(yīng)用??梢允蔷W(wǎng)頁(yè)版,移動(dòng)版或桌面版
· 發(fā)行自己的 ERC-20 代幣,并部署在測(cè)試網(wǎng)絡(luò)上。
· 改一改 crypto kitties 的代碼(比如改成狗,坦克,僵尸)并部署在測(cè)試網(wǎng)
絡(luò)上。
展望未來(lái)
目前看來(lái),我們必須承認(rèn),圍繞區(qū)塊鏈的開(kāi)發(fā)一團(tuán)亂麻。跟現(xiàn)有成熟的網(wǎng)絡(luò)開(kāi)發(fā)
相比,區(qū)塊鏈領(lǐng)域還沒(méi)有好用的框架和工具。但換個(gè)角度想,這種早期的混亂,
正是一個(gè)機(jī)會(huì),更重要的是,這是一個(gè)極有可能帶來(lái)開(kāi)發(fā)模式巨變的機(jī)會(huì)。
在區(qū)塊鏈上,你不需要部署任何中心化的服務(wù)器,這就意味著單點(diǎn)失敗的風(fēng)險(xiǎn)為
零。如果你的整個(gè)技術(shù)棧都是去中心化的,那么就不需要引入“可信”的第三
方,而沒(méi)有第三方則意味著可以 100% 對(duì)抗審查。區(qū)塊鏈技術(shù)帶來(lái)了數(shù)據(jù)開(kāi)放的
新機(jī)會(huì),基于區(qū)塊鏈的去中心化數(shù)據(jù)庫(kù)未來(lái)可期。
有了區(qū)塊鏈技術(shù),我們可以預(yù)見(jiàn)這樣一個(gè)未來(lái)世界:一個(gè)沒(méi)有中間人,并且信息
和權(quán)利被系統(tǒng)性地分散開(kāi)來(lái)的世界。