一個(gè)產(chǎn)品經(jīng)理的區(qū)塊鏈學(xué)習(xí)指南(三)

3 評論 8874 瀏覽 106 收藏 14 分鐘

「比特幣」是啥?「以太坊」又是啥?兩者間存在什么樣的聯(lián)系?又有哪些不一樣呢?

一提起「區(qū)塊鏈」,我們第一個(gè)想到的就是比特幣,那么有了「比特幣」為什么還需要「以太坊」呢?

「以太坊」是繼「比特幣」之后有一個(gè)「加密數(shù)字貨幣」。自2014年初Vitalik Buterin在北美比特幣大會上首次談及以太坊之后,這個(gè)新概念就得到了大眾廣泛的關(guān)注。另外,「以太坊」(Ethereum)已經(jīng)是目前的第二大「加密數(shù)字貨幣」。

截止20180121數(shù)字加密貨幣市值排名

那么「以太坊」何德何能,可以占據(jù)數(shù)字加密貨幣的二當(dāng)家呢?甚至有可能在未來超越「比特幣」成為數(shù)字加密貨幣的「扛把子」。

以太坊不單單是一種「數(shù)字加密貨幣」,更是一個(gè)「平臺」

「比特幣」自從出現(xiàn)就一直被當(dāng)作類似「黃金」一樣的法幣替代物,與「貨幣」一樣,主要擁有價(jià)值尺度、流動手段和支付手段等職能。

而「以太坊」成立的目的則是創(chuàng)建一個(gè)基于「智能合約」和「區(qū)塊鏈」技術(shù)的去中心化應(yīng)用開發(fā)平臺。開發(fā)人員可以在其基礎(chǔ)上構(gòu)建新的應(yīng)用,這些應(yīng)用可以永久安全的運(yùn)行,抗屏蔽/審查和自我維持。

我們可以用「高速公路」來類比「以太坊」網(wǎng)絡(luò)。

我們都知道高速公路都是根據(jù)一系列規(guī)則來管理,每個(gè)人在使用時(shí)都必須遵守。比如:不得酒后駕駛,不能超載等等。公路網(wǎng)連接了路過的各個(gè)城鎮(zhèn)和人群,它們使貨物和服務(wù)的運(yùn)輸成為了可能。「以太坊」平臺很像公路網(wǎng),通過「以太坊」網(wǎng)絡(luò)將各個(gè)節(jié)點(diǎn)連接起來,同時(shí)「以太坊」也有一套規(guī)則,可以用來建立新的業(yè)務(wù)、應(yīng)用程序及通訊(我們把這些叫做「資產(chǎn)(Asset)」)等。

以太坊的「去中心化」

不過,高速公路是政府來管理和維護(hù)的,這意味著政府可以控制和限制人們使用高速公路,甚至完全切斷通往某個(gè)城市的路。

但是在「以太坊」里則不會出現(xiàn)這種問題。它是一個(gè)「去中心化」網(wǎng)絡(luò),沒有任何第三方可以控制這個(gè)網(wǎng)絡(luò)。在這里,沒有任何人可以限制你訪問屬于你的特定資產(chǎn)。這個(gè)系統(tǒng)可以確保人們在「完全無信任」的狀態(tài)下來創(chuàng)建資產(chǎn)等等。

同時(shí),如果你在「以太坊」網(wǎng)絡(luò)里創(chuàng)建了一項(xiàng)資產(chǎn),那么你可以放心,你可以安全地訪問該資產(chǎn),在此期間不會受到任何的審查或遭遇宕機(jī)。在目前的網(wǎng)絡(luò)環(huán)境中顯然不會實(shí)現(xiàn)「不受審查,不宕機(jī)」,這也讓「以太坊」平臺的價(jià)值所在。

但是「不受審查,不宕機(jī)」也可以建立在基于「比特幣」的區(qū)塊鏈網(wǎng)絡(luò)上,畢竟上文提到的「以太坊」的優(yōu)點(diǎn)都是基于「區(qū)塊鏈」的特性,那么為什么在擁有「比特幣」網(wǎng)絡(luò)的情況下還需要「以太坊」呢?

「以太坊」優(yōu)于「比特幣」的地方在于它用來構(gòu)建資產(chǎn)的工具。

「以太坊」的構(gòu)建工具優(yōu)勢

我們都知道在開發(fā)一個(gè)軟件的時(shí)候都需要寫代碼,我們都愿意使用一個(gè)「優(yōu)雅」的開發(fā)語言來寫代碼。一個(gè)「優(yōu)雅」的開發(fā)語言,可以讓開發(fā)者更專注于最終產(chǎn)品,而不是花時(shí)間去學(xué)習(xí)如何使用這個(gè)語言。另外,一個(gè)「優(yōu)雅」編程語言的一些特性可以幫助開發(fā)者編寫更好的或者優(yōu)化代碼。

相比「比特幣」原始的腳本語言,在以太坊中用來部署代碼以及運(yùn)行智能合約的語言更高級,擁有更多的特性,舉個(gè)栗子:loop——循環(huán)。在開發(fā)中,我們經(jīng)常會運(yùn)用循環(huán)和條件來實(shí)現(xiàn)復(fù)雜的算法,比如求1+2+3+……+99+100的值是多少,如果沒有循環(huán),我們要把所有的數(shù)字都打出來,如果要是從1加到100w,那程序員會崩潰的。

但是「比特幣」使用的腳本語言不!支!持!循環(huán)。

這些缺點(diǎn)意味著在「比特幣」網(wǎng)絡(luò)去構(gòu)建的應(yīng)用一般是開發(fā)者的研究項(xiàng)目,很難把注意力集中在最終的成品上。而且本來可以通過3行代碼就可以完成的事情可能需要3k 行,這是迄今為止我們沒有看到在「比特幣」網(wǎng)絡(luò)上的應(yīng)用較少(很少)的重要原因。

而「以太坊」一開始就規(guī)劃了「圖靈完備」的編程語言,簡單來說就是「以太坊」提供的語言可以使用計(jì)算機(jī)完成任何計(jì)算機(jī)可以完成的任務(wù)。因此「以太坊」吸引了很多開發(fā)者在其基礎(chǔ)上開發(fā)應(yīng)用程序。

另外,「比特幣」的腳本語言還有一些其它的怪異結(jié)構(gòu)(比如 UTXOs),使得構(gòu)建某些功能的時(shí)候會變得異常困難(不是無法構(gòu)建)。

UTXOs(未花費(fèi)的交易輸出)和Account(賬戶)

UTXOs 這個(gè)概念,我想很多人(即使是關(guān)注區(qū)塊鏈技術(shù)的人)都很陌生。我第一次在比特幣交易中接觸到 UTXOs 概念時(shí)也花費(fèi)了一段時(shí)間才了解它以及為什么要按照 UTXOs 來設(shè)計(jì)比特幣交易。

在「比特幣」交易的實(shí)際操作過程中,UTXOs 的存在使得在「比特幣」網(wǎng)絡(luò)上構(gòu)建新應(yīng)用變得非常復(fù)雜,而這種復(fù)雜性正是導(dǎo)致「以太坊」迅速發(fā)展的關(guān)鍵因素之一。

我們來看看什么是 UTXOs , 我們來想想下「比特幣」網(wǎng)絡(luò)交易的原則:

  1. 我發(fā)送的任何比特幣金額都會被發(fā)送到一個(gè)發(fā)送地址——對方的錢包地址;
  2. 你接收到任何比特幣金額都會被鎖定到您的接受地址——我的錢包地址;
  3. 任何時(shí)候你花費(fèi)(轉(zhuǎn)賬,發(fā)送)比特幣,你花的金額都是來自于你以前收到但是未花費(fèi)的資金;
  4. 通過錢包來接收和使用比特幣

但是關(guān)于「比特幣」,它們并不是存在于你的錢包當(dāng)中,那你的錢包里到底有什么呢?

在你的錢包里存的是你從別人那里收到且未使用的每一個(gè)比特幣交易記錄(transaction and not spent yet)。在「比特幣」網(wǎng)絡(luò)中,有人給你發(fā)送比特幣被稱為「輸出(outputs)」。這些未使用的交易輸出被稱為 UTXOs(Unspent Transaction Outputs)。

這些記錄在進(jìn)入的錢包時(shí)不會混淆或者相加,而是按照收到的方式進(jìn)行存儲。舉個(gè)栗子:你收到了3個(gè)交易,每次交易分別為:交易1——1 btc, 交易2——2btc, 交易3——5btc。那么你的錢包里將顯示3個(gè)單獨(dú)的交易,分別為1,2,3個(gè) btc。當(dāng)然你的錢包余額是這些記錄的總和——8btc,但是每一筆交易都是單獨(dú)存儲的——我咋想起來了「銀行存管」,額,最近頭有點(diǎn)大。

說完了 UTXOs,那么到底和「有了比特幣為什么還需要以太坊」的問題有什么關(guān)系呢?

UTXOs 太復(fù)雜

我們接著舉例子,你有8個(gè) btc 了。你要給別人轉(zhuǎn)賬4 btc。理論上你是可以很輕松完成這筆交易的。但是事實(shí)真是如此么?圖樣圖森破。

「比特幣」網(wǎng)絡(luò)使用UTXOs 模式使得比特幣的腳本語言無法對比特幣金額進(jìn)行精確控制,從而實(shí)現(xiàn)轉(zhuǎn)賬。問題的復(fù)雜性全部交給你自己。

要轉(zhuǎn)賬4 btc 給別人,你首先要創(chuàng)建一個(gè)交易:
1. 你要先找到一個(gè)你之前收到但是未使用的交易(也就是 UTXOs);
2. 證明這個(gè)交易輸入你
3. 利用對方的錢包地址(公鑰)創(chuàng)建一個(gè)輸出,作為轉(zhuǎn)賬目的地

看似還不是特別復(fù)雜,但是你要注意:你收到了3個(gè)交易,每次交易分別為:交易1——1 btc, 交易2——2btc, 交易3——5btc。3個(gè)交易中并沒有一個(gè)4 btc 的交易,那怎么辦呢?

在比特幣腳本語言中,你沒有辦法直接操作:

證明交易3 屬于我,并將5btc中的4個(gè)發(fā)送到指定的地址

相反,你需要將交易3的5個(gè)比特幣全部花掉:將交易3進(jìn)行拆分,分成4btc和1btc。4btc輸出給對方,再創(chuàng)建另一個(gè)交易,將1btc 輸出給自己。

同時(shí),我們也說了比特幣腳本語言并沒有「循環(huán)」等圖靈完備性功能,如果你想寫一個(gè)比特幣錢包的應(yīng)用程序,「轉(zhuǎn)賬」這個(gè)功能將會非常復(fù)雜:查找用戶錢包里所有的UTXOs——>將符合條件的 UTXOs 選出來作為一個(gè)集合,使這個(gè)集合中的 UTXOs 的綜合大于或者等于交易的期望輸出。

如果存在兩個(gè)或者兩個(gè)以上的 UTXOs 集合滿足交易的期望輸出,那么就需要進(jìn)行額外的邏輯判斷來決定使用哪個(gè)集合。顯然這將使業(yè)務(wù)邏輯變得極為復(fù)雜。

當(dāng)然,之所以選擇 UTXOs 模式作為比特幣的交易模式中本聰還有一定考慮的,比如高度的隱私、潛在的擴(kuò)展性等等,但是卻增加了應(yīng)用程序的復(fù)雜性。因此需要更加優(yōu)雅的語言來促進(jìn)新應(yīng)用程序的開發(fā),「以太坊」填補(bǔ)了這個(gè)空白。

另外,UTXOs 從根本上來看只有兩種模式——已使用和未使用。作為一個(gè)產(chǎn)品經(jīng)理,你在實(shí)際工作中估計(jì)很少碰到這種只有兩種狀態(tài)的業(yè)務(wù)邏輯吧?

這種只有兩種狀態(tài)的邏輯,使得「比特幣」網(wǎng)絡(luò)在進(jìn)行「多階段智能合約」開發(fā)的時(shí)候變得更加困難——比如需要向多個(gè)用戶提供應(yīng)用程序,然后還有一些附加條件,并在程序執(zhí)行的不同階段按照附件條件及預(yù)定義的合約規(guī)定將資金分配給合適的各方。如果使用比特幣腳本語言,這個(gè)看似只需要 if-else 和「循環(huán)」就可以解決的算法將變得值得大多數(shù)開發(fā)者進(jìn)行深入研究。而「以太坊」則在這樣一個(gè)智能合約的易用性方面要好的多。

我的看法

區(qū)塊鏈技術(shù)如果能夠廣泛應(yīng)用,一定是多種因素共同促成的。其中關(guān)鍵的因素在于「易用性」——普通人可以在區(qū)塊鏈上非常方便的去創(chuàng)建新應(yīng)用——而不是只有 geek 或者少數(shù)大牛。

之所以現(xiàn)在區(qū)塊鏈技術(shù)還沒有真正投入使用,正式因?yàn)闆]有一個(gè)簡單的平臺可以讓大多數(shù)程序員去構(gòu)建他們的東西,而「以太坊」無疑是為了解決這個(gè)問題而出現(xiàn)的。當(dāng)我在閱讀《 Ethereum:A Next-Generation Smart Contract and Decentralized Application Platform 》(以太坊(Ethereum ):下一代智能合約和去中心化應(yīng)用平臺)白皮書的時(shí)候,我相信了以太坊的價(jià)值,它很有可能在未來的區(qū)塊鏈技術(shù)體系中占據(jù)重要的份額。

相關(guān)閱讀

一個(gè)產(chǎn)品經(jīng)理的區(qū)塊鏈學(xué)習(xí)指南(一)

一個(gè)產(chǎn)品經(jīng)理的區(qū)塊鏈學(xué)習(xí)指南(二)

#專欄作家#

張小璋,公眾號:張小璋的碎碎念(ID:SylvainZhang),人人都是產(chǎn)品經(jīng)理專欄作家。野蠻生長的產(chǎn)品經(jīng)理,專注于互聯(lián)網(wǎng)金融領(lǐng)域。

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 個(gè)人覺得這些區(qū)塊鏈知識只是一小部分,需要深入到區(qū)塊鏈更底層的知識,理解背后的哲學(xué)。比如隱私領(lǐng)域中的零知識證明。 比如共識算法等,還有現(xiàn)在介紹的都是公鏈,有很多聯(lián)盟鏈也是值得學(xué)習(xí)的,比如hyperledger。一點(diǎn)小想法哈

    來自韓國 回復(fù)
  2. 交易1——1 btc, 交易2——2btc, 交易3——5btc。那么你的錢包里將顯示3個(gè)單獨(dú)的交易,分別為1,2,3個(gè) btc。

    來自山東 回復(fù)
  3. 我們來看看什么是 UTXOs , 我們來想想下「比特幣」網(wǎng)絡(luò)交易的原則:

    來自山東 回復(fù)