「比特幣」是啥?「以太坊」又是啥?兩者間存在什么樣的聯(lián)系末捣?又有哪些不
一樣呢进每?
一提起「區(qū)塊鏈」,我們第一個想到的就是比特幣射亏,那么有了「比特幣」為什么
還需要「以太坊」呢近忙?
「以太坊」是繼「比特幣」之后有一個「加密數(shù) 字貨幣」。自2014年初Vitalik
Buterin在北美比特幣大會上首次談及以太坊之后智润,這個新概念就得到了大眾廣泛
的關(guān)注及舍。另外,「以太坊」(Ethereum)已經(jīng)是目前的第二大「加密數(shù)字貨
幣」窟绷。
截止20180121數(shù)字加密貨幣市值排名
那么「以太坊」何德何能锯玛,可以占據(jù)數(shù)字加密貨幣的二當家呢?甚至有可能在未
來超越「比特幣」成為數(shù)字加密貨幣的「扛把子」兼蜈。
「比特幣」自從出現(xiàn)就一直被當作類似「黃金」一樣的法幣替代物攘残,與「貨幣」
一樣,主要擁有價值尺度为狸、流動手段和支付手段等職能肯腕。
而「以太坊」成立的目的則是創(chuàng)建一個基于「智能合約」和「區(qū)塊鏈」技術(shù)的去
中心化應用開發(fā)平臺。開發(fā)人員可以在其基礎(chǔ)上構(gòu)建新的應用钥平,這些應用可以永
久安全的運行实撒,抗屏蔽/審查和自我維持姊途。
我們可以用「高速公路」來類比「以太坊」網(wǎng)絡。
我們都知道高速公路都是根據(jù)一系列規(guī)則來管理知态,每個人在使用時都必須遵守捷兰。
比如:不得酒后駕駛,不能超載等等负敏。公路網(wǎng)連接了路過的各個城鎮(zhèn)和人群贡茅,它
們使貨物和服務的運輸成為了可能∑渥觯「以太坊」平臺很像公路網(wǎng)顶考,通過「以太
坊」網(wǎng)絡將各個節(jié)點連接起來,同時「以太坊」也有一套規(guī)則妖泄,可以用來建立新
的業(yè)務驹沿、應用程序及通訊(我們把這些叫做「資產(chǎn)(Asset)」)等。
不過蹈胡,高速公路是政府來管理和維護的渊季,這意味著政府可以控制和限制人們使用
高速公路,甚至完全切斷通往某個城市的路罚渐。
但是在「以太坊」里則不會出現(xiàn)這種問題却汉。它是一個「去中心化」網(wǎng)絡,沒有任
何第三方可以控制這個網(wǎng)絡荷并。在這里合砂,沒有任何人可以限制你訪問屬于你的特定
資產(chǎn)。這個系統(tǒng)可以確保人們在「完全無信任」的狀態(tài)下來創(chuàng)建資產(chǎn)等等源织。
同時既穆,如果你在「以太坊」網(wǎng)絡里創(chuàng)建了一項資產(chǎn),那么你可以放心雀鹃,你可以安
全地訪問該資產(chǎn)幻工,在此期間不會受到任何的審查或遭遇宕機。在目前的網(wǎng)絡環(huán)境
中顯然不會實現(xiàn)「不受審查黎茎,不宕機」囊颅,這也讓「以太坊」平臺的價值所在。
但是「不受審查傅瞻,不宕機」也可以建立在基于「比特幣」的區(qū)塊鏈網(wǎng)絡上踢代,畢竟
上文提到的「以太坊」的優(yōu)點都是基于「區(qū)塊鏈」的特性,那么為什么在擁有
「比特幣」網(wǎng)絡的情況下還需要「以太坊」呢嗅骄?
「以太坊」優(yōu)于「比特幣」的地方在于它用來構(gòu)建資產(chǎn)的工具胳挎。
我們都知道在開發(fā)一個軟件的時候都需要寫代碼,我們都愿意使用一個「優(yōu)雅」
的開發(fā)語言來寫代碼溺森。一個「優(yōu)雅」的開發(fā)語言慕爬,可以讓開發(fā)者更專注于最終產(chǎn)
品窑眯,而不是花時間去學習如何使用這個語言。另外医窿,一個「優(yōu)雅」編程語言的一
些特性可以幫助開發(fā)者編寫更好的或者優(yōu)化代碼磅甩。
相比「比特幣」原始的腳本語言,在以太坊中用來部署代碼以及運行智能合約的
語言更高級姥卢,擁有更多的特性卷要,舉個栗子:loop——循環(huán)。在開發(fā)中独榴,我們經(jīng)常
會運用循環(huán)和條件來實現(xiàn)復雜的算法僧叉,比如求1+2+3+……+99+100的值是多少,如
果沒有循環(huán)棺榔,我們要把所有的數(shù)字都打出來瓶堕,如果要是從1加到100w,那程序員會
崩潰的掷豺。
但是「比特幣」使用的腳本語言不!支薄声!持当船!循環(huán)。
這些缺點意味著在「比特幣」網(wǎng)絡去構(gòu)建的應用一般是開發(fā)者的研究項目默辨,很難
把注意力集中在最終的成品上德频。而且本來可以通過3行代碼就可以完成的事情可能
需要3k 行,這是迄今為止我們沒有看到在「比特幣」網(wǎng)絡上的應用較少(很少)
的重要原因缩幸。
而「以太坊」一開始就規(guī)劃了「圖靈完備」的編程語言壹置,簡單來說就是「以太
坊」提供的語言可以使用計算機完成任何計算機可以完成的任務。因此「以太
坊」吸引了很多開發(fā)者在其基礎(chǔ)上開發(fā)應用程序表谊。
另外钞护,「比特幣」的腳本語言還有一些其它的怪異結(jié)構(gòu)(比如 UTXOs),使得構(gòu)
建某些功能的時候會變得異常困難(不是無法構(gòu)建)爆办。
UTXOs 這個概念难咕,我想很多人(即使是關(guān)注區(qū)塊鏈技術(shù)的人)都很陌生。我第一
次在比特幣交易中接觸到 UTXOs 概念時也花費了一段時間才了解它以及為什么要
按照 UTXOs 來設計比特幣交易距辆。
在「比特幣」交易的實際操作過程中余佃,UTXOs 的存在使得在「比特幣」網(wǎng)絡上構(gòu)
建新應用變得非常復雜,而這種復雜性正是導致「以太坊」迅速發(fā)展的關(guān)鍵因素
之一跨算。
我們來看看什么是 UTXOs , 我們來想想下「比特幣」網(wǎng)絡交易的原則:
1. 我發(fā)送的任何比特幣金額都會被發(fā)送到一個發(fā)送地址——對方的錢包地
址爆土;
2. 你接收到任何比特幣金額都會被鎖定到您的接受地址——我的錢包地址;
3. 任何時候你花費(轉(zhuǎn)賬诸蚕,發(fā)送)比特幣步势,你花的金額都是來自于你以前收
到但是未花費的資金氧猬;
4. 通過錢包來接收和使用比特幣
但是關(guān)于「比特幣」,它們并不是存在于你的錢包當中立润,那你的錢包里到底有什
么呢狂窑?
在你的錢包里存的是你從別人那里收到且未使用的每一個比特幣交易記錄
(transaction and not spent yet)。在「比特幣」網(wǎng)絡中桑腮,有人給你發(fā)送比特
幣被稱為「輸出(outputs)」泉哈。這些未使用的交易輸出被稱為 UTXOs(Unspent
Transaction Outputs)。
這些記錄在進入的錢包時不會混淆或者相加破讨,而是按照收到的方式進行存儲丛晦。舉
個栗子:你收到了3個交易,每次交易分別為:交易1——1 btc, 交易2——2btc,
交易3——5btc提陶。那么你的錢包里將顯示3個單獨的交易烫沙,分別為1,2,3個 btc。當
然你的錢包余額是這些記錄的總和——8btc隙笆,但是每一筆交易都是單獨存儲的
——我咋想起來了「銀行存管」锌蓄,額,最近頭有點大撑柔。
說完了 UTXOs,那么到底和「有了比特幣為什么還需要以太坊」的問題有什么關(guān)系
呢瘸爽?
UTXOs 太復雜
我們接著舉例子,你有8個 btc 了铅忿。你要給別人轉(zhuǎn)賬4 btc剪决。理論上你是可以很輕
松完成這筆交易的。但是事實真是如此么檀训?圖樣圖森破柑潦。
「比特幣」網(wǎng)絡使用UTXOs 模式使得比特幣的腳本語言無法對比特幣金額進行精
確控制,從而實現(xiàn)轉(zhuǎn)賬峻凫。問題的復雜性全部交給你自己渗鬼。
要轉(zhuǎn)賬4 btc 給別人,你首先要創(chuàng)建一個交易:
1. 你要先找到一個你之前收到但是未使用的交易(也就是 UTXOs);
2. 證明這個交易輸入你
3. 利用對方的錢包地址(公鑰)創(chuàng)建一個輸出荧琼,作為轉(zhuǎn)賬目的地
看似還不是特別復雜乍钻,但是你要注意:你收到了3個交易,每次交易分別為:交易
1——1 btc, 交易2——2btc, 交易3——5btc铭腕。3個交易中并沒有一個4 btc 的交
易银择,那怎么辦呢?
在比特幣腳本語言中累舷,你沒有辦法直接操作:
證明交易3 屬于我浩考,并將5btc中的4個發(fā)送到指定的地址
相反,你需要將交易3的5個比特幣全部花掉:將交易3進行拆分被盈,分成4btc和
1btc析孽。4btc輸出給對方搭伤,再創(chuàng)建另一個交易,將1btc 輸出給自己袜瞬。
同時怜俐,我們也說了比特幣腳本語言并沒有「循環(huán)」等圖靈完備性功能,如果你想
寫一個比特幣錢包的應用程序邓尤,「轉(zhuǎn)賬」這個功能將會非常復雜:查找用戶錢包
里所有的UTXOs——>將符合條件的 UTXOs 選出來作為一個集合拍鲤,使這個集合中的
UTXOs 的綜合大于或者等于交易的期望輸出。
如果存在兩個或者兩個以上的 UTXOs 集合滿足交易的期望輸出汞扎,那么就需要進行
額外的邏輯判斷來決定使用哪個集合季稳。顯然這將使業(yè)務邏輯變得極為復雜。
當然澈魄,之所以選擇 UTXOs 模式作為比特幣的交易模式中本聰還有一定考慮的景鼠,比
如高度的隱私、潛在的擴展性等等痹扇,但是卻增加了應用程序的復雜性铛漓。因此需要
更加優(yōu)雅的語言來促進新應用程序的開發(fā),「以太坊」填補了這個空白鲫构。
另外浓恶,UTXOs 從根本上來看只有兩種模式——已使用和未使用。作為一個產(chǎn)品經(jīng)
理芬迄,你在實際工作中估計很少碰到這種只有兩種狀態(tài)的業(yè)務邏輯吧问顷?
這種只有兩種狀態(tài)的邏輯昂秃,使得「比特幣」網(wǎng)絡在進行「多階段智能合約」開發(fā)
的時候變得更加困難——比如需要向多個用戶提供應用程序禀梳,然后還有一些附加
條件,并在程序執(zhí)行的不同階段按照附件條件及預定義的合約規(guī)定將資金分配給
合適的各方肠骆。如果使用比特幣腳本語言算途,這個看似只需要 if-else 和「循環(huán)」就
可以解決的算法將變得值得大多數(shù)開發(fā)者進行深入研究。而「以太坊」則在這樣
一個智能合約的易用性方面要好的多蚀腿。
區(qū)塊鏈技術(shù)如果能夠廣泛應用嘴瓤,一定是多種因素共同促成的。其中關(guān)鍵的因素在
于「易用性」——普通人可以在區(qū)塊鏈上非常方便的去創(chuàng)建新應用——而不是只
有 geek 或者少數(shù)大牛莉钙。
之所以現(xiàn)在區(qū)塊鏈技術(shù)還沒有真正投入使用廓脆,正式因為沒有一個簡單的平臺可以
讓大多數(shù)程序員去構(gòu)建他們的東西,而「以太坊」無疑是為了解決這個問題而出
現(xiàn)的磁玉。當我在閱讀《 Ethereum:A Next-Generation Smart Contract and
Decentralized Application Platform 》(以太坊(Ethereum ):下一代智能合
約和去中心化應用平臺)白皮書的時候停忿,我相信了以太坊的價值,它很有可能在
未來的區(qū)塊鏈技術(shù)體系中占據(jù)重要的份額蚊伞。