一個產(chǎn)品經(jīng)理的區(qū)塊鏈學(xué)習(xí)指南(三)
「比特幣」是啥?「以太坊」又是啥?兩者間存在什么樣的聯(lián)系?又有哪些不一樣呢?
一提起「區(qū)塊鏈」,我們第一個想到的就是比特幣,那么有了「比特幣」為什么還需要「以太坊」呢?
「以太坊」是繼「比特幣」之后有一個「加密數(shù)字貨幣」。自2014年初Vitalik Buterin在北美比特幣大會上首次談及以太坊之后,這個新概念就得到了大眾廣泛的關(guān)注。另外,「以太坊」(Ethereum)已經(jīng)是目前的第二大「加密數(shù)字貨幣」。
截止20180121數(shù)字加密貨幣市值排名
那么「以太坊」何德何能,可以占據(jù)數(shù)字加密貨幣的二當(dāng)家呢?甚至有可能在未來超越「比特幣」成為數(shù)字加密貨幣的「扛把子」。
以太坊不單單是一種「數(shù)字加密貨幣」,更是一個「平臺」
「比特幣」自從出現(xiàn)就一直被當(dāng)作類似「黃金」一樣的法幣替代物,與「貨幣」一樣,主要擁有價值尺度、流動手段和支付手段等職能。
而「以太坊」成立的目的則是創(chuàng)建一個基于「智能合約」和「區(qū)塊鏈」技術(shù)的去中心化應(yīng)用開發(fā)平臺。開發(fā)人員可以在其基礎(chǔ)上構(gòu)建新的應(yīng)用,這些應(yīng)用可以永久安全的運行,抗屏蔽/審查和自我維持。
我們可以用「高速公路」來類比「以太坊」網(wǎng)絡(luò)。
我們都知道高速公路都是根據(jù)一系列規(guī)則來管理,每個人在使用時都必須遵守。比如:不得酒后駕駛,不能超載等等。公路網(wǎng)連接了路過的各個城鎮(zhèn)和人群,它們使貨物和服務(wù)的運輸成為了可能?!敢蕴弧蛊脚_很像公路網(wǎng),通過「以太坊」網(wǎng)絡(luò)將各個節(jié)點連接起來,同時「以太坊」也有一套規(guī)則,可以用來建立新的業(yè)務(wù)、應(yīng)用程序及通訊(我們把這些叫做「資產(chǎn)(Asset)」)等。
以太坊的「去中心化」
不過,高速公路是政府來管理和維護(hù)的,這意味著政府可以控制和限制人們使用高速公路,甚至完全切斷通往某個城市的路。
但是在「以太坊」里則不會出現(xiàn)這種問題。它是一個「去中心化」網(wǎng)絡(luò),沒有任何第三方可以控制這個網(wǎng)絡(luò)。在這里,沒有任何人可以限制你訪問屬于你的特定資產(chǎn)。這個系統(tǒng)可以確保人們在「完全無信任」的狀態(tài)下來創(chuàng)建資產(chǎn)等等。
同時,如果你在「以太坊」網(wǎng)絡(luò)里創(chuàng)建了一項資產(chǎn),那么你可以放心,你可以安全地訪問該資產(chǎn),在此期間不會受到任何的審查或遭遇宕機(jī)。在目前的網(wǎng)絡(luò)環(huán)境中顯然不會實現(xiàn)「不受審查,不宕機(jī)」,這也讓「以太坊」平臺的價值所在。
但是「不受審查,不宕機(jī)」也可以建立在基于「比特幣」的區(qū)塊鏈網(wǎng)絡(luò)上,畢竟上文提到的「以太坊」的優(yōu)點都是基于「區(qū)塊鏈」的特性,那么為什么在擁有「比特幣」網(wǎng)絡(luò)的情況下還需要「以太坊」呢?
「以太坊」優(yōu)于「比特幣」的地方在于它用來構(gòu)建資產(chǎn)的工具。
「以太坊」的構(gòu)建工具優(yōu)勢
我們都知道在開發(fā)一個軟件的時候都需要寫代碼,我們都愿意使用一個「優(yōu)雅」的開發(fā)語言來寫代碼。一個「優(yōu)雅」的開發(fā)語言,可以讓開發(fā)者更專注于最終產(chǎn)品,而不是花時間去學(xué)習(xí)如何使用這個語言。另外,一個「優(yōu)雅」編程語言的一些特性可以幫助開發(fā)者編寫更好的或者優(yōu)化代碼。
相比「比特幣」原始的腳本語言,在以太坊中用來部署代碼以及運行智能合約的語言更高級,擁有更多的特性,舉個栗子:loop——循環(huán)。在開發(fā)中,我們經(jīng)常會運用循環(huán)和條件來實現(xiàn)復(fù)雜的算法,比如求1+2+3+……+99+100的值是多少,如果沒有循環(huán),我們要把所有的數(shù)字都打出來,如果要是從1加到100w,那程序員會崩潰的。
但是「比特幣」使用的腳本語言不!支!持!循環(huán)。
這些缺點意味著在「比特幣」網(wǎng)絡(luò)去構(gòu)建的應(yīng)用一般是開發(fā)者的研究項目,很難把注意力集中在最終的成品上。而且本來可以通過3行代碼就可以完成的事情可能需要3k 行,這是迄今為止我們沒有看到在「比特幣」網(wǎng)絡(luò)上的應(yīng)用較少(很少)的重要原因。
而「以太坊」一開始就規(guī)劃了「圖靈完備」的編程語言,簡單來說就是「以太坊」提供的語言可以使用計算機(jī)完成任何計算機(jī)可以完成的任務(wù)。因此「以太坊」吸引了很多開發(fā)者在其基礎(chǔ)上開發(fā)應(yīng)用程序。
另外,「比特幣」的腳本語言還有一些其它的怪異結(jié)構(gòu)(比如 UTXOs),使得構(gòu)建某些功能的時候會變得異常困難(不是無法構(gòu)建)。
UTXOs(未花費的交易輸出)和Account(賬戶)
UTXOs 這個概念,我想很多人(即使是關(guān)注區(qū)塊鏈技術(shù)的人)都很陌生。我第一次在比特幣交易中接觸到 UTXOs 概念時也花費了一段時間才了解它以及為什么要按照 UTXOs 來設(shè)計比特幣交易。
在「比特幣」交易的實際操作過程中,UTXOs 的存在使得在「比特幣」網(wǎng)絡(luò)上構(gòu)建新應(yīng)用變得非常復(fù)雜,而這種復(fù)雜性正是導(dǎo)致「以太坊」迅速發(fā)展的關(guān)鍵因素之一。
我們來看看什么是 UTXOs , 我們來想想下「比特幣」網(wǎng)絡(luò)交易的原則:
- 我發(fā)送的任何比特幣金額都會被發(fā)送到一個發(fā)送地址——對方的錢包地址;
- 你接收到任何比特幣金額都會被鎖定到您的接受地址——我的錢包地址;
- 任何時候你花費(轉(zhuǎn)賬,發(fā)送)比特幣,你花的金額都是來自于你以前收到但是未花費的資金;
- 通過錢包來接收和使用比特幣
但是關(guān)于「比特幣」,它們并不是存在于你的錢包當(dāng)中,那你的錢包里到底有什么呢?
在你的錢包里存的是你從別人那里收到且未使用的每一個比特幣交易記錄(transaction and not spent yet)。在「比特幣」網(wǎng)絡(luò)中,有人給你發(fā)送比特幣被稱為「輸出(outputs)」。這些未使用的交易輸出被稱為 UTXOs(Unspent Transaction Outputs)。
這些記錄在進(jìn)入的錢包時不會混淆或者相加,而是按照收到的方式進(jìn)行存儲。舉個栗子:你收到了3個交易,每次交易分別為:交易1——1 btc, 交易2——2btc, 交易3——5btc。那么你的錢包里將顯示3個單獨的交易,分別為1,2,3個 btc。當(dāng)然你的錢包余額是這些記錄的總和——8btc,但是每一筆交易都是單獨存儲的——我咋想起來了「銀行存管」,額,最近頭有點大。
說完了 UTXOs,那么到底和「有了比特幣為什么還需要以太坊」的問題有什么關(guān)系呢?
UTXOs 太復(fù)雜
我們接著舉例子,你有8個 btc 了。你要給別人轉(zhuǎn)賬4 btc。理論上你是可以很輕松完成這筆交易的。但是事實真是如此么?圖樣圖森破。
「比特幣」網(wǎng)絡(luò)使用UTXOs 模式使得比特幣的腳本語言無法對比特幣金額進(jìn)行精確控制,從而實現(xiàn)轉(zhuǎn)賬。問題的復(fù)雜性全部交給你自己。
要轉(zhuǎn)賬4 btc 給別人,你首先要創(chuàng)建一個交易:
1. 你要先找到一個你之前收到但是未使用的交易(也就是 UTXOs);
2. 證明這個交易輸入你
3. 利用對方的錢包地址(公鑰)創(chuàng)建一個輸出,作為轉(zhuǎn)賬目的地
看似還不是特別復(fù)雜,但是你要注意:你收到了3個交易,每次交易分別為:交易1——1 btc, 交易2——2btc, 交易3——5btc。3個交易中并沒有一個4 btc 的交易,那怎么辦呢?
在比特幣腳本語言中,你沒有辦法直接操作:
證明交易3 屬于我,并將5btc中的4個發(fā)送到指定的地址
相反,你需要將交易3的5個比特幣全部花掉:將交易3進(jìn)行拆分,分成4btc和1btc。4btc輸出給對方,再創(chuàng)建另一個交易,將1btc 輸出給自己。
同時,我們也說了比特幣腳本語言并沒有「循環(huán)」等圖靈完備性功能,如果你想寫一個比特幣錢包的應(yīng)用程序,「轉(zhuǎn)賬」這個功能將會非常復(fù)雜:查找用戶錢包里所有的UTXOs——>將符合條件的 UTXOs 選出來作為一個集合,使這個集合中的 UTXOs 的綜合大于或者等于交易的期望輸出。
如果存在兩個或者兩個以上的 UTXOs 集合滿足交易的期望輸出,那么就需要進(jìn)行額外的邏輯判斷來決定使用哪個集合。顯然這將使業(yè)務(wù)邏輯變得極為復(fù)雜。
當(dāng)然,之所以選擇 UTXOs 模式作為比特幣的交易模式中本聰還有一定考慮的,比如高度的隱私、潛在的擴(kuò)展性等等,但是卻增加了應(yīng)用程序的復(fù)雜性。因此需要更加優(yōu)雅的語言來促進(jìn)新應(yīng)用程序的開發(fā),「以太坊」填補(bǔ)了這個空白。
另外,UTXOs 從根本上來看只有兩種模式——已使用和未使用。作為一個產(chǎn)品經(jīng)理,你在實際工作中估計很少碰到這種只有兩種狀態(tài)的業(yè)務(wù)邏輯吧?
這種只有兩種狀態(tài)的邏輯,使得「比特幣」網(wǎng)絡(luò)在進(jìn)行「多階段智能合約」開發(fā)的時候變得更加困難——比如需要向多個用戶提供應(yīng)用程序,然后還有一些附加條件,并在程序執(zhí)行的不同階段按照附件條件及預(yù)定義的合約規(guī)定將資金分配給合適的各方。如果使用比特幣腳本語言,這個看似只需要 if-else 和「循環(huán)」就可以解決的算法將變得值得大多數(shù)開發(fā)者進(jìn)行深入研究。而「以太坊」則在這樣一個智能合約的易用性方面要好的多。
我的看法
區(qū)塊鏈技術(shù)如果能夠廣泛應(yīng)用,一定是多種因素共同促成的。其中關(guān)鍵的因素在于「易用性」——普通人可以在區(qū)塊鏈上非常方便的去創(chuàng)建新應(yīng)用——而不是只有 geek 或者少數(shù)大牛。
之所以現(xiàn)在區(qū)塊鏈技術(shù)還沒有真正投入使用,正式因為沒有一個簡單的平臺可以讓大多數(shù)程序員去構(gòu)建他們的東西,而「以太坊」無疑是為了解決這個問題而出現(xiàn)的。當(dāng)我在閱讀《 Ethereum:A Next-Generation Smart Contract and Decentralized Application Platform 》(以太坊(Ethereum ):下一代智能合約和去中心化應(yīng)用平臺)白皮書的時候,我相信了以太坊的價值,它很有可能在未來的區(qū)塊鏈技術(shù)體系中占據(jù)重要的份額。
相關(guān)閱讀
一個產(chǎn)品經(jīng)理的區(qū)塊鏈學(xué)習(xí)指南(一)
一個產(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é)議
個人覺得這些區(qū)塊鏈知識只是一小部分,需要深入到區(qū)塊鏈更底層的知識,理解背后的哲學(xué)。比如隱私領(lǐng)域中的零知識證明。 比如共識算法等,還有現(xiàn)在介紹的都是公鏈,有很多聯(lián)盟鏈也是值得學(xué)習(xí)的,比如hyperledger。一點小想法哈
交易1——1 btc, 交易2——2btc, 交易3——5btc。那么你的錢包里將顯示3個單獨的交易,分別為1,2,3個 btc。
我們來看看什么是 UTXOs , 我們來想想下「比特幣」網(wǎng)絡(luò)交易的原則: