官术网_书友最值得收藏!

2

比特幣協議與發展

(一)比特幣協議概述

比特幣的本質是一種協議,在中本聰的論文中提出了一種完全通過點對點技術實現的電子現金系統,它使得在線支付能夠直接由一方發起并支付給另外一方,中間不需要通過任何金融機構。雖然數字簽名部分解決了這個問題,但是如果仍然需要第三方的支持才能防止雙重支付(double-spending),那么這種系統也就失去了存在的價值。

中本聰提出一種解決方案,使現金系統在點對點的環境下運行,并防止雙重支付問題。該網絡通過隨機散列(hashing)對全部交易加上時間戳(timestamp),將它們合并入一個不斷延伸的基于隨機散列的工作量證明(proof-of-work)的鏈條作為交易記錄,除非重新完成全部的工作量證明,形成的交易記錄將不可更改。最長的鏈條不僅將作為被觀察到的事件序列(sequence)的證明,而且被看作是來自CPU計算能力最大的池(pool)。只要大多數的CPU計算能力都沒有打算合作起來對全網進行攻擊,那么誠實的節點將會生成最長的、超過攻擊者的鏈條。這個系統本身需要的基礎設施非常少。信息盡最大努力在全網傳播即可,節點(node)可以隨時離開和重新加入網絡,并將最長的工作量證明鏈條作為在該節點離線期間發生的交易的證明。

(二)比特幣協議特點

通過比特幣的協議,我們可以發現比特幣的價值遠不止貨幣本身,因為它構建的是貨幣的互聯網協議。

大部分人只知道作為數字貨幣的比特幣,而真正有著深遠意義的是作為潛藏協議的比特幣,它還有著封裝并分發合約的功能。

比特幣封裝了以下四項基本技術。

電子簽名:無法偽造,允許一方安全地核實同另一方的交易。

點對點網絡:如同BitTorrent和TCP/IP一樣,幾乎無法摧毀,無須強大中央機構的維護。

Proof-of-Work(工作量證明):可以防止用戶一分錢花兩次,同時還無須中央機構來驗證交易是否有效。Bitcoin為礦工設立了獎勵機制,他們利用算力強大的計算機,來完成驗證交易是否有效的工作。礦工可以從這種活動中獲得新的比特幣作為獎勵,任何有足夠算力的人都可以參與挖礦,并獲得獎勵。

分布式總賬:在每一個比特幣錢包中,你都能查到整個比特幣系統的每一筆交易記錄。區塊鏈意味著任何人都可以去檢驗某項交易是否發生過。

通過這四項基礎技術,比特幣具有了很多特點,它是稀缺的(中央銀行沒法濫發貨幣)、持久的(不會像金子一樣降解)、便攜的(可以以電子或者只是你腦中的數字的形式存儲、傳播)、可分的(一個比特幣可以分成一億份或更多)、可證實的(每個人的區塊鏈里都能查到)、易存儲的(記在紙上或者電子介質上都行)、可替代的(每個比特幣都一樣)、難以偽造的(幾乎不可能破解),可被廣泛使用,許多互聯網技術人才正在花時間不斷改善比特幣。

對于比特幣的未來,人們還有各種各樣的擔心,比如加密算法的安全性、交易速度、區塊鏈的大小、交易的不可逆性、被盜或者被黑的可能性。所有這些都是可以被第三方服務和協議升級解決掉的。不妨把現在的比特幣協議看作Bitcoin 1.0,就像曾經的HTTP 1.0一樣,它會從最初只有簡單文字和圖片的瀏覽器演化成現在的互聯網,以后也會有更豐富的比特幣世界。

相較于現在的英鎊或者美元,比特幣有很多明顯的優勢,上文已經提到不少。但更重要的是,比特幣這套協議可以支持當下不可能實現或者實現昂貴且需要強力第三方的金融交易服務。

比特幣自帶有腳本語言,不單支持“把錢從X匯給Y”這種交易,還可以要求N方中的M方同意,才能使交易完成。舉個例子,設定一項遺囑,只有當大部分繼承人同意他們的父母已經過世時,該遺囑才會生效,完全不需要任何律師;或者只有當三方受信簽名中有兩方同意才能批準某項支出;或者一項Kickstarter上的眾籌計劃,只有多數支持者同意達到某項指標時,錢才會支付給發起人。所有這些案例中,仲裁者自己都是不能拿走錢的,他們只能批準或者駁回某項交易。

當然,腳本語言也能支持基于其他參數的交易。比如基于時間的交易,可以衍生出自動抵押貸款、信托和津貼支出。基于隨機數字的交易則可以是由第三方審計的抽獎。你還可以設計出智能財產,比如一種汽車電子鑰匙,只要買方向賣方支付一筆錢,賣方的汽車鑰匙就失靈,買方的鑰匙開始工作,可以用來開車。使用場景如下:你的無人駕駛汽車在其他地方被堵住了,給鄰居一點比特幣,就可以借他的車一用。

每個人都有整個比特幣的區塊鏈的備份,也就都能夠核實你的交易。你可以將任意一份文件加密,給個時間戳,放到區塊鏈中,任何人都可以隨時核準這份文件。如果你用自己的私鑰給文件簽名,其他方也用他們的私鑰簽名,這份文件就成了不可否認的共同署名的合同,可以徹底無視公證員的存在。還有Namecoin計劃,解決了域名問題,或者P2P股票和博彩交易所(SatoshiDice),無須傳統意義上的證券交易所就能買賣股票和分紅。

最重要的是,比特幣提供了開放的API接口,可以用于創造安全的、可編寫腳本的電子現金交易。如同Web將出版平民化一樣,比特幣可以讓構建新的金融服務更平民化。你可以用任意第三方或者代碼本身來訂立、修改或者執行電子合同,完全免費,快捷,不用擔心偽造或者撤回。傳統銀行或者信用卡公司只會把自己的支付基礎設施開放給幾家公司,而比特幣則向所有人開放。

比特幣從最初的0.1版本后,由比特幣開發團隊不斷進行維護和升級,根據市場的需求逐漸增加了一些新的功能,使得比特幣協議更加完善。我們就最近的比特幣協議升級情況來說明比特幣的最新發展情況。比特幣核心開發團隊在2013年的第三季度中發布了兩次協議升級——一次是計劃升級,還有一次則是為了響應一個關鍵性錯誤,這個錯誤會阻止多個節點索引最新的比特幣交易。

(三)Bitcoin 0.8.4

Bitcoin-Qt 0.8.4版本于2013年9月4日發布,包括了一些安全方面的改進。第一次更新解決Bloom Filters,緊湊數據結構,允許使用截斷的數據塊以節省磁盤空間,這是在Bitcoin-Qt 0.8.0中首次發布的。它們的實現,在不經意間創造了一個拒絕服務漏洞。被發現有兩起攻擊事件:有能力壓倒比特幣的節點的讀/寫能力,使他們落后于最新的塊,并有能力壓倒節點的消息導致比特幣軟件崩潰。雖然均未觀察到大量次數的攻擊,他們觀察到是一些孤立的事件,但需要立即引起注意。

0.8.4版本解決的第二個問題是一個漏洞,該漏洞允許攻擊者通過內存過載來讓節點崩潰。該問題與存儲交易的截斷方式有關。當反序列化時,描述參數可能會和序列化(截斷)版本出現沖突。如果攻擊者針對特定的節點,他們可以發送給該節點無效序列化的交易數據,而將一個不同的、有效的版本發送到網絡的其余部分時,無效的將變得有效。該節點與網絡的其余部分保持一致時,交易將被拒絕。這種情況很難獲得實際應用,因為它需要針對特定的節點,該節點必須是愿意接受零確認交易的。另外,攻擊者如果能夠通過網絡發送惡意交易,將導致試圖截斷交易的客戶端從網絡上斷開。

0.8.4版本的第三個更新是Bitcoin-Qt的RPC(遠程過程調用)中密碼嘗試所用的固定時間算法。更新之前,攻擊者通過精確衡量連接到受害者的電腦(通常是指在同一本地網絡)的情況下,可以通過使用一個不正確的密碼嘗試測量的響應延遲來知道他們有多接近。這使攻擊者在嘗試猜解一個私鑰時,能夠減少猜測時間和嘗試的次數。

(四)Bitcoin 0.8.5

Bitcoin-Qt的這一版本是通過緊急發布以解決嚴重bug的。運行Bitcoin 0.8.0或更高版本后,從2013年9月9日開始,有軟件用戶遇到數據庫損壞錯誤,被要求花費數個小時來重新建立區塊鏈索引,但這一措施被證明并不能解決問題。

產生這個問題是因為單一的交易塊256818,使用負的版本號進入本來應該只有0或者1的字段中,從而導致運行數據庫一致性檢查時出現錯誤。該問題并未對比特幣網絡有任何重大影響,有問題的交易發生后,大多數節點和交易所在不重新啟動的情況下可以保持軟件繼續運行。這個問題通過在交易中分配負版本號作為非標準情況得到解決,以防止出現問題復發。

(五)Bitcoin 0.9.0

預計比特幣協議下一個重大更新將會是交易發起方式的顯著改善。付款協議將會支持,允許用戶請求比特幣付款,能夠實現除了“拉”外還可以使用“推”的方式支付。

目前正在引進一個新的協議,將允許商家通過HTTPS發起交易。他們可以使用X.509數字證書來簽署支付請求,其中將會包含比特幣地址,還包括支付方式及文字描述字段。接著用戶作為對商家HTTPS請求的響應,可以回應發送一個交易。商家最終回復給客戶以確認付款。

1.技術進步

(1)簽署的交易

目前常見的做法是為每個客戶新生成一個比特幣接收地址,以確保資金可以關聯到每個客戶的賬戶。然而,由于支付請求的接收者需要驗證請求者的真實性,這對商家發起交易提出了問題。為了解決這個問題,0.9版本將采用X.509數字證書簽署付款申請。X.509數字證書經常被用來簽署網站會話,它由一個中央權威機構發布給一個特定的部門。支付請求可以被持有這些證書的商戶簽署來證明該支付請求的真實性。

選擇X.509數字證書而不是其他可替代數字證書的原因有兩點。第一,它們簡單并易于管理,免除了一些其他現有支付標準的不必要特性。第二,很多網站已使用X.509數字證書,它們有能力也有經驗使用這個數字證書。

(2)額外的字段:界面友好的說明書和退款地址

一旦支付請求流行起來,用戶可能需要過濾過多的請求,即使這些請求來自相同的發起人,來識別一個特定的交易。0.9版本計劃允許一個描述字段,比如“3月的VPN服務”,用更多的細節來識別交易。

此外,人們可能會用托管的錢包支付,比如交易平臺的一個賬戶,如果退款將不能提供一個可靠的地址。如果退款是發送回發出地址,有可能托管服務不能將轉入的支付與接收者聯系起來。提供一個退款地址的功能可以允許退款轉移到與比特幣發送地址不同的一個地址中,減輕前文所述的擔憂。

(3)關注點

新功能的實現有兩個關注點。許多用戶對比特幣的一個主要訴求是網絡的去中心化。X.509數字證書是由中央發布的,因此信任它們的簽名來源于證書發行者的可信度。雖然這種風險在交易中不會很普遍,但它確實增加了漏洞,因此大額交易最好不要使用這種交易方式。另外,很難檢查吊銷的證書。如果在線證書檢查協議(OCSP)是離線的或被黑客擊潰,有可能有假陽性的拒絕交易。

2.重大的改進

(1)易用性

新版本將會實現很多新功能,極大地改進不需要第三方參與的比特幣的易用性。手工輸入精確到小數點后八位的字符串給人們犯錯留下了空間。使用請求支付功能可以讓商家發送準確的交易數額給客戶,而客戶只需要簡單地回應確認即可,無須復制或輸入付款金額本身。

(2)定期付款

0.9版本的定期付款功能,雖然只有一個請求而不是直接的費用,將明顯容易實現。訂閱服務一直不愿意作為比特幣一個支付功能來實施,是因為缺乏有定期賬單的客戶。

有兩種方法可以利用這些變化保持訂閱付款。如果在到期支付前幾天發送一個支付請求,用戶將被提醒支付服務,并手動處理該項交易。另外,錢包項目可以發展出采用預先批準的標準的自動支付請求,比如從特殊商戶發出的支付請求或支付請求低于一個確定的臨界值。自動編制賬單在客戶的同意下可以實現。

(3)爭端解決

爭端解決也將更加清晰。交易完成后,客戶將會收到一份簽署的收據。使用請求支付、交易ID和支付確認的對一個商家的證明付款將是微不足道的。在中介環境中使用第三方擔保服務,交易雙方將有明確的證據顯示交易完成,因此可以發布第三方擔保基金。

另外,如果客戶發送付款給商家而商家不遵守其交易直到結束,一個公開可見的證據可以證明客戶購買了商家的服務。為了維護自己在世界上的通過論壇和媒體的廣泛的大眾傳播形成的聲譽,商家會發現自己有義務履行他們的最終協議。

3.協議的影響

減少摩擦發起交易

用戶無須填寫煩瑣的比特幣地址或掃描QR碼,不需要擔心得到的付款金額是否正確。

爭端解決會更容易

現在客戶可以通過使用X.509證明他們直接支付給商家。商戶可以在自由文本字段中根據特定的識別信息來區分產品和訂單ID信息。

經常性收支將成為可能

用戶將能夠根據一定的要求和可信的程度來自動每月回應支付。該軟件將可能有預設約束值以防止過度收費。

商家可以通過PaymentACK給用戶發送即時反饋

這將允許進行一定程度的溝通,如Satoshi Dice確認損失交易,這在以前是塊鏈上發生,將會移動到塊鏈下。

圖2-1 Bitcoin-Qt 0.9.0商戶支付流程圖

主站蜘蛛池模板: 南和县| 吴忠市| 漯河市| 横山县| 兴义市| 长丰县| 全椒县| 勐海县| 左贡县| 汝州市| 东丰县| 天峨县| 泰州市| 邵阳市| 塘沽区| 南城县| 堆龙德庆县| 夹江县| 天津市| 汨罗市| 盐源县| 互助| 柳林县| 无棣县| 县级市| 新巴尔虎左旗| 米脂县| 咸阳市| 黑水县| 晴隆县| 习水县| 丁青县| 青铜峡市| 塘沽区| 察雅县| 峨眉山市| 冷水江市| 丰原市| 共和县| 沾益县| 桂东县|