面向區(qū)塊鏈開(kāi)發(fā)

正在看這篇文章的你,應(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)的世界。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容