摘要:但同時由于比特幣交易確認(rèn)后無法更改,也從另一個方面導(dǎo)致買家付了款而賣家據(jù)不發(fā)貨的漏洞。明白了這個原理,我們來看如何將比特幣從一個人發(fā)給另一個人。
摘要
首先中本聰在摘要中就指明了要建立的是一個去中心化的p2p支付系統(tǒng),并且不引入第三方來解決雙重支付(double-spending)問題。并且提出了解決方案思路,提及時間戳(Timestamps)、工作量證明(Proof-of-Work)等技術(shù)要點(diǎn)。
接下來看正文內(nèi)容……
簡介當(dāng)前互聯(lián)網(wǎng)上的金融貿(mào)易,無不都借助于可信賴的第三方,如國家強(qiáng)制性機(jī)構(gòu)(銀行),超大企業(yè)(支付寶、微信)等,是一種“基于信用的模式(trust based model)”,不是說當(dāng)下模式不好用,只是既然基于信用,則需要持續(xù)不斷的維護(hù)信用,其成本非常巨大。
所以比特幣出現(xiàn)了,它不再基于信用而是基于密碼學(xué)原理,使得虛擬交易可以在雙方達(dá)成一致,直接支付,不需要第三方參與。
由于直接支付,確認(rèn)后無法更改,所以是對賣家的一種保護(hù),而對買家的保護(hù),中本聰則提出“在此環(huán)境下通常設(shè)立第三方擔(dān)保機(jī)制也可謂輕松加愉快”。其實說白了,比特幣系統(tǒng)在設(shè)計上對交易雙方是不平等的,天平更傾向于賣家,就像淘寶上買東西,杜絕了買家買貨后給差評拒不付款的情況。但同時由于比特幣交易確認(rèn)后無法更改,也從另一個方面導(dǎo)致買家付了款而賣家據(jù)不發(fā)貨的漏洞。
這就是比特幣給我們的另一個注意點(diǎn),比特幣網(wǎng)絡(luò)其實是替代的中心化的信用機(jī)構(gòu),并不能保證交易雙方的信用。就像上面說的買家拒不付款、賣家拒不發(fā)貨此類情況,都是屬于交易雙方出現(xiàn)了信用問題,而由于此時沒有第三方信用系統(tǒng)介入(淘寶、京東等),交易無法撤銷,損失了就是損失了,這是比特幣的優(yōu)點(diǎn)也是它的痛點(diǎn)。
交易成功后無法更改其實是有條件的,就是俗稱的51%攻擊。原文中有寫到“除非重新完成全部的工作量證明,形成的記錄將不可更改”,比特幣采用的是復(fù)雜的工作量證明機(jī)制,更改交易區(qū)塊,需要從該區(qū)塊以及之后所有區(qū)塊都重新計算,需要大量運(yùn)算,非常耗時,所以在客觀上是形成不可更改的目的。
但是,試想,如果賣家買家達(dá)成一致,或者根據(jù)“多數(shù)人即正義”原則,有絕大數(shù)人同意修改呢?這是的的確確存在的比特幣的缺陷,并且這個缺陷也給濫用留了空子。至今還記憶猶新的全球勒索病毒的爆發(fā),勒索掉大量的比特幣,這在全球絕大多數(shù)人眼里非正義行為,就可以在比特幣的規(guī)則下,堂而皇之的鉆空子,而我們卻無力回滾其交易,因為比特幣交易存在這客觀不可更改。
交易Transaction這一塊內(nèi)容是中本聰設(shè)計最核心也是最精妙的部分,讓人贊嘆。先奉上原圖,注意是英文原版白皮書原圖,不是網(wǎng)上流行的中文翻譯版的圖,中文圖是錯誤的,整整誤導(dǎo)了我很久。
首先搞懂白皮書里給出的coin的定義:”一枚電子貨幣(an electronic coin)是這樣的一串?dāng)?shù)字簽名“。首先比特幣這個概念就很繞,即不跟現(xiàn)實貨幣相同,也和類似Q幣這樣的不同。Q幣可以理解為線上流通的實體貨幣的代幣,也會記錄擁有者姓名、數(shù)量等信息。而比特幣實際上根本不記錄都有誰誰誰,誰擁有多少幣,也沒有戶頭概念,所有的這些都是通過交易記錄反推得來。
例如,Q幣的記錄方式是A有100個Q幣,B有50個Q幣,A轉(zhuǎn)給B10個Q幣,則A戶頭上-10Q幣,B戶頭上+10Q幣,這是中心化的運(yùn)作方式,包括銀行都是這樣。而比特幣的記錄可能就是一條“A給B10個比特幣”,無數(shù)個這樣的交易記錄組成交易鏈,就形成來一個去中心化的,公開透明的公共賬本。如果A想要知道自己有多少比特幣,那么就援引所有他參與過的交易來反推出數(shù)量。
明白了這個原理,我們來看如何將比特幣從一個人發(fā)給另一個人。
比如說一筆交易記錄:張三發(fā)給李四5個比特幣。
發(fā)送者(張三)要做的事情是:把這條交易信息和目標(biāo)地址(李四的公鑰)做個HSAH,然后用自己的私鑰進(jìn)行數(shù)字簽名(即用張三的私鑰加密這個哈希值),同時將這個數(shù)字簽名附到這筆Tx(交易)里,然后通過p2p技術(shù)發(fā)送給李四。
李四收到這條消息后怎么做:拿著這筆交易里公布的張三的公鑰來驗證數(shù)據(jù)(公鑰解密)得到哈希值x,同時,用自己的公鑰和交易信息做哈希得到hash(data),然后對比x=hash(data),則可以判斷出這筆交易來自于張三。因為公鑰驗證出的哈希值只有私鑰才能生成,而拿張三的公鑰驗證的,必然是張三的私鑰,私鑰只會存在張三那里,抵賴是抵賴不掉的。這里就用到來非對稱加密,私鑰數(shù)字簽名,公鑰驗證數(shù)據(jù)。公鑰確定錢包地址,私鑰確定所有權(quán)。
知識點(diǎn)一:非對稱加密
公鑰可以加密數(shù)據(jù)或驗證數(shù)據(jù),私鑰可以解密數(shù)據(jù)或?qū)?shù)據(jù)簽名。 公鑰加密數(shù)據(jù),只能用私鑰解密。 私鑰加密數(shù)據(jù)(這個過程叫數(shù)據(jù)簽名),只能用公鑰解密(驗證數(shù)據(jù))。 區(qū)塊鏈在設(shè)計交易(Transaction)的時候,就是用不對稱加密算法(SHA-256)。
既然是支付系統(tǒng),逃不開的就是雙花(double-spending)問題。
知識點(diǎn)二:雙重花費(fèi)問題
如果同一筆錢,被重復(fù)支付兩次,這就是雙花問題。
現(xiàn)實世界中你偽造一塊黃金拿去交易,很容易被證偽,而虛擬世界中的物品被復(fù)制太容易了,一前一后用同一筆錢發(fā)起兩筆交易,看似都沒有任何問題,但這就存在雙花問題。
中心化的支付系統(tǒng)(支付寶、銀行等)并不是不存在雙花問題,只是更好解決而已。例如銀行轉(zhuǎn)賬,A戶頭轉(zhuǎn)賬100元到B戶頭,銀行會開啟事務(wù),A戶頭-100,B戶頭+100。這個過程類比鑄幣廠來說,銀行會先作廢掉A戶頭的100,然后重新發(fā)行新的100給B戶頭。由于A戶頭上的100元被作廢掉了,所以就解決了雙花問題。
那么,比特幣是怎么解決雙花問題的呢?老樣子,多數(shù)即正義。首先是要求所有交易對全網(wǎng)公開,所有人都可以追溯每一筆交易的來龍去脈,無法造假。二來每筆交易都有個時間戳,這樣就能確定先后順序,形成時間序列交易鏈。三是絕大多數(shù)的節(jié)點(diǎn)承認(rèn)交易是首次出現(xiàn)的。這里就引出了下一章節(jié)的概念:時間戳服務(wù)器。
時間戳服務(wù)器時間戳服務(wù)器通過對區(qū)塊加蓋時間戳,則能證明某些數(shù)據(jù)在某些特定時間是確實存在的。每個時間戳都會有前一個時間戳的信息,這樣時間戳也形成一個鏈條,后一個時間戳就是對前一個的增強(qiáng)。這樣就算有人想篡改某一個時間戳,則需要把其之后的所有時間戳都改掉,這個過程是有工作量證明的,將會大量耗時和算力,從而保證不可被篡改。
現(xiàn)在又出現(xiàn)思考,比特幣不是說去中心化的么,怎么又出來個時間戳服務(wù)器,有服務(wù)器不就又成了中心化的。其實不是這樣的,此服務(wù)器非彼服務(wù)器,還是那句話,多數(shù)即正義,時間取自于其他至少5個節(jié)點(diǎn)的時間的中位數(shù),并且中位數(shù)跟本地時間相差不能超過70分鐘。
知識點(diǎn)三:中位數(shù)
一個數(shù)學(xué)概念,統(tǒng)計學(xué)中的專有名詞,代表一個樣本、種群或概率分布中的一個數(shù)值,其可將數(shù)值集劃分為相等的上下兩個部分。
中位數(shù)是以它在所有標(biāo)志值中所處的位置確定的全體單位標(biāo)志值的代表值,不受分布數(shù)列的極大或極小值影響,從而在一定程度上提高了中位數(shù)對分布數(shù)列的代表性。
所以說中位數(shù)比平均數(shù)更不受極端值的影響,更能代表分布數(shù)列的中間值。
時間戳的運(yùn)行機(jī)制就是兩個區(qū)塊產(chǎn)生間隔中所有交易進(jìn)行Hash運(yùn)算,加蓋時間戳,我們就得到了一個按時間序列產(chǎn)生的交易記錄了,這就是區(qū)塊鏈。
工作量證明工作量證明,就是俗稱的“挖礦”。一來浪費(fèi)電力,二來浪費(fèi)算力,并且比特幣并不是挖礦挖出來的貨幣,那么為什么還需要挖礦呢?
試想,有一筆交易產(chǎn)生了,并廣播給全網(wǎng),現(xiàn)在A、B、C三個人都收到了這個交易信息,都可以對交易進(jìn)行加蓋時間戳,然后打包區(qū)塊到鏈上去。但是每個人接受到的交易信息不一樣,并且接受的時間也不一樣,那么產(chǎn)生的區(qū)塊hash就千差萬別。所以此時需要一個共識機(jī)制,在全網(wǎng)達(dá)成共識,就需要引入競爭機(jī)制。就如同長跑一樣,誰第一個撞線,就給誰記賬(加蓋時間戳、打包區(qū)塊)的權(quán)利。那怎么樣制造一個所有人都參與長跑的場景呢,工作量證明(Proof-of-Work)機(jī)制就來了。
白皮書里定義了如何工作量證明,即借用CPU的算力進(jìn)行窮舉法,有概率性的碰撞出所需要的值,比如一串開頭有N個0的hash值。這個過程是需要付出算力且耗時的,CPU算力的不同,A、B、C三人就有先后順序了,第一個滿足要求的人擁有下一個區(qū)塊的記賬權(quán),這樣就達(dá)成了共識。
此時再試想,如果A、B、C中三人B通過工作量證明脫穎而出,拿到了記賬權(quán),如果他這時篡改交易記錄或者惡意構(gòu)造交易實現(xiàn)雙花怎么辦?
由于有POW機(jī)制的存在,B拿到了記賬權(quán),同時他付出了電力成本、CPU算力成本,并且篡改比特幣的某一筆交易,需要連帶修改之后所有交易,其帶來更大成本支出。當(dāng)作惡成本遠(yuǎn)遠(yuǎn)大于篡改記錄所得的利益時,就如同花100塊錢的成本為了賺1塊錢,他還會選擇作惡么?
工作量證明機(jī)制簡單來講就是提升了作惡的成本,讓作惡的投入產(chǎn)出比低于做誠實節(jié)點(diǎn)的投入產(chǎn)出比,這就是中本聰運(yùn)用博弈論的點(diǎn)睛之筆。
另一個點(diǎn),工作量證明的難度是隨著時間而變化的,如果區(qū)塊的產(chǎn)生速度過快,難度就會提升,從最初的CPU到GPU到礦池,挖礦成本一直在增加,難度是越來越大。所以日漸突出的一個問題就是,越來越多的普通CPU用戶成為吃瓜群眾,超大算力的CPU被礦池占據(jù),不免讓人擔(dān)心純POW的共識機(jī)制還能否繼續(xù)完美保證比特幣系統(tǒng)運(yùn)行下去。所以后來也出現(xiàn)了像股權(quán)證明機(jī)制(POS)等新的共識機(jī)制來避免算力集中。
網(wǎng)絡(luò)前面幾章依次講述了比特幣系統(tǒng)的交易、時間戳、工作量證明,到這里就講述,比特幣系統(tǒng)網(wǎng)絡(luò)是怎么運(yùn)行的,交易在網(wǎng)絡(luò)中是怎么流轉(zhuǎn)并打包成區(qū)塊,并形成鏈的。
前面的步驟其實很好理解,繼續(xù)順著工作量證明之后往下說,打包成區(qū)塊后,向全網(wǎng)廣播,不是說這個區(qū)塊在記賬完成就是有效的,還是要經(jīng)過“多數(shù)人即正義”的驗證的,當(dāng)且僅當(dāng)包含在該區(qū)塊中的所有交易都是有效的且之前未存在過的,其他節(jié)點(diǎn)才認(rèn)同該區(qū)塊的有效性。“所有交易都有效”,“之前未存在過”這兩點(diǎn)就是指全網(wǎng)節(jié)點(diǎn)驗證交易和驗證時間戳,占據(jù)絕大多數(shù)都驗證通過后,這個區(qū)塊方可被承認(rèn)。
全網(wǎng)接受了這個區(qū)塊之后,接受的方法就是在這個區(qū)塊末尾制造新區(qū)塊,用以延長該區(qū)塊。這個設(shè)計也很巧妙,目的就是促使生成一條最長鏈,并且最誠實,最正義,因為只有接受度最高的區(qū)塊鏈才會被延長。
激勵前面一直說工作量證明,直到這里才真正說明工作量證明的刺激點(diǎn),大家伙為什么拼了命的耗電耗時耗算力地去做呢?因為有激勵機(jī)制,只有在去中心化的系統(tǒng)有提供激勵機(jī)制,才能保證長久運(yùn)行下去,所謂“從激情開始,用利益維持”說的就是這個。
比特幣系統(tǒng)里的激勵有兩種。一是在“每個區(qū)塊的第一筆交易進(jìn)行特殊化處理,該交易產(chǎn)生一枚由該區(qū)塊創(chuàng)造者擁有的新的電子貨幣”,這是用來補(bǔ)貼用于工作量證明的成本;二是交易費(fèi),“如果某筆交易的輸出值小于輸入值,那么差額就是交易費(fèi),該交易費(fèi)將被增加到該區(qū)塊的激勵中”,這是用來補(bǔ)貼用于交易確認(rèn)所產(chǎn)生的成本。
回收硬盤空間這個解決的是存儲問題,由于處于比特幣網(wǎng)絡(luò)中的每個節(jié)點(diǎn)都會同步全部的交易記錄,這個體積是在不斷膨脹的。白皮書提出的解決方案是,使用Merkel Hash Tree方式存儲被消費(fèi)過的交易信息,只把這個Tree的Root節(jié)點(diǎn)保存進(jìn)區(qū)塊。而Merkel Hash Tree則由一些IPFS、公共節(jié)點(diǎn)、信任度高的節(jié)點(diǎn)來保存。同時如果想回溯交易,只需去對于的Tree里下載回所有交易記錄即可。
簡化支付認(rèn)證這其實是回收硬盤空間所帶出來的問題,當(dāng)鏈上的節(jié)點(diǎn)保存的不再是完整的交易鏈信息時,必須要走一個簡化的支付認(rèn)證,這算是折衷方案。
當(dāng)某個存儲Merkel Hash Tree節(jié)點(diǎn)遭受攻擊或發(fā)現(xiàn)異常,系統(tǒng)會提示用戶下載這個節(jié)點(diǎn)存儲的數(shù)據(jù)來保證整條鏈上的交易數(shù)據(jù)是不被篡改的。同時一些金融機(jī)構(gòu)或著對全部交易數(shù)據(jù)敏感的節(jié)點(diǎn)會一直保存下所有的交易記錄,而不進(jìn)行回收硬盤空間的折衷。
組合和分割價值這一塊內(nèi)容又是對交易的一個補(bǔ)充,同時它灌輸了一種觀念,比特幣跟現(xiàn)實貨幣是完全不一樣的,沒有單位換算,只有差額,價值的組合和分割完全可以用加減法來實現(xiàn)。
最重要的一點(diǎn)是,明確來一個交易(Tx)包含多個Input和多個Output。
由于比特幣系統(tǒng)不記戶頭帳,只記錄交易信息,所以每個人的持有貨幣數(shù)量都是由交易反推的。同理,當(dāng)進(jìn)行一筆交易時,你需要援引一條甚至多條交易記錄來湊出你的電子貨幣,所以由多條輸入(Input)。
比特幣系統(tǒng)交易還有一個特點(diǎn),每次交易都把錢花光,意思就是Inputs=Outputs,所以輸出一個是目標(biāo)錢包的交易數(shù)量,另一個就是找零,找零全部返回付款方。
隱私這個其實是大眾很關(guān)心的問題,一方面比特幣網(wǎng)絡(luò)說是去中心化的,交易全透明的,另一方面又說比特幣是匿名交易、不互信的,到底是怎么回事呢?
其實很簡單,比特幣網(wǎng)絡(luò)里沒有戶頭概念,只有錢包地址,錢包地址是由公鑰hash得來,在這個環(huán)節(jié)上錢包公開,公鑰匿名。公眾可以看到有一個錢包地址發(fā)送一筆數(shù)目給另一個錢包地址,但是沒有信息能把錢包地址于某個人聯(lián)系在一起,這樣就保證了用戶的隱私。這就是只看到有交易在發(fā)生,但是不知道是誰在交易。
附錄:中本聰 《Bitcoin: A Peer-to-Peer Electronic Cash System》
大圣2017《(大魚)精讀比特幣白皮書系列(1-6)》
godsex 《解密比特幣白皮書(3) — 當(dāng)你發(fā)送比特幣,你在發(fā)送什么?》
金曉 《比特幣白皮書 個人翻譯+注解》
蔣宏偉 《比特幣的交易-數(shù)字簽名(一)》
aisen 《什么是“雙重支付”問題,怎樣解決?》
百度百科 《中位數(shù)》
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/23961.html
摘要:在共識機(jī)制中,挖礦則是大眾的權(quán)利。抑制權(quán)益降低寡頭權(quán)為了防止大戶形成壟斷,用上凸函數(shù)轉(zhuǎn)換持幣數(shù)量和投票權(quán),這就是上述的抑制權(quán)益系數(shù)。 showImg(https://segmentfault.com/img/bVbt6br?w=800&h=534); 前言:礦工對于區(qū)塊鏈來說意味著什么?為什么ETM的共識機(jī)制將對礦工規(guī)則重新洗牌?怎樣的機(jī)制讓礦工享受公平與效益?本篇文章為星球日報對En...
摘要:在共識機(jī)制中,挖礦則是大眾的權(quán)利。抑制權(quán)益降低寡頭權(quán)為了防止大戶形成壟斷,用上凸函數(shù)轉(zhuǎn)換持幣數(shù)量和投票權(quán),這就是上述的抑制權(quán)益系數(shù)。 showImg(https://segmentfault.com/img/bVbt6br?w=800&h=534); 前言:礦工對于區(qū)塊鏈來說意味著什么?為什么ETM的共識機(jī)制將對礦工規(guī)則重新洗牌?怎樣的機(jī)制讓礦工享受公平與效益?本篇文章為星球日報對En...
摘要:秘猿科技法務(wù)總監(jiān)錢靖受邀參加北京大學(xué)數(shù)字金融研究中心舉辦的數(shù)字金融第十講,作為主講嘉賓就區(qū)塊鏈正在重塑法律做了主題演講。而區(qū)塊鏈在很大程度上可以幫助解決這些問題。第三個方面涉及到區(qū)塊鏈對每個部門法的影響。 showImg(https://segmentfault.com/img/bVboMSK?w=1280&h=543); 秘猿科技法務(wù)總監(jiān)錢靖受邀參加北京大學(xué)數(shù)字金融研究中心舉辦的數(shù)字...
摘要:區(qū)塊鏈進(jìn)化史軟件好,才是真的好區(qū)塊鏈的區(qū)塊鏈基礎(chǔ)概念漫畫什么是區(qū)塊鏈個區(qū)塊鏈專業(yè)術(shù)語名詞解釋。 區(qū)塊鏈進(jìn)化史 軟件好,才是真的好:區(qū)塊鏈的1976—2017 區(qū)塊鏈基礎(chǔ)概念 漫畫:什么是區(qū)塊鏈?48個區(qū)塊鏈專業(yè)術(shù)語名詞解釋。 比特幣 比特幣白皮書英文原版比特幣是什么 以太坊 以太坊白皮書關(guān)于以太坊各種網(wǎng)站 共識機(jī)制 深度長文:區(qū)塊鏈共識機(jī)制 智能合約 去中心化的核心——智能合約...
摘要:區(qū)塊鏈?zhǔn)擒浖_源運(yùn)動所結(jié)出的果子。原因是區(qū)塊鏈創(chuàng)造的信任是基于代碼產(chǎn)生的。 上一講中,我們深入探討了區(qū)塊鏈對一些基本問題的答案,包括對時間的答案、對空間的答案以及對能量的答案。在這一篇文章中,我們將從區(qū)塊鏈作為基本工具的工具論方面切入。這個方面包括了它是怎樣看待這個世界的:它使用了哪些工具,以及它使用了哪些方法?構(gòu)造了哪些全新的博弈環(huán)境并形成了哪些新的博弈均衡態(tài)?這些方法也許和人們過去...
閱讀 1217·2023-04-25 20:31
閱讀 3723·2021-10-14 09:42
閱讀 1494·2021-09-22 16:06
閱讀 2660·2021-09-10 10:50
閱讀 3529·2021-09-07 10:19
閱讀 1778·2019-08-30 15:53
閱讀 1176·2019-08-29 15:13
閱讀 2823·2019-08-29 13:20