首頁>財經>

概述. 一個真正的的點對點的電子現金應該允許從發起方直接線上支付給對方,而不需要透過第三方的金融服務機構。現有的數字簽名技術雖然提供了部分解決方案,但如果還需要經過一個可以信任的第三方機構來防止電子現金的“雙重支付”,那就喪失了電子現金給人類帶來的最大好處。我們針對電子現金會出現的“雙重支付”問題,用點對點的網路技術提供了一個解決方案。該網路透過給交易記錄打上時間戳,並透過雜湊對其加密,然後將其併入一個不斷增長的雜湊記錄所組成的鏈條檔案中,以此形成一個新的交易記錄,這個雜湊記錄鏈條檔案(以下簡稱鏈條檔案)是由一個需要證明工作量的系統網路所提供儲存和計算服務的。沒有基於工作量證明的系統網路來重新完成所有的工作量證明,一個已經形成的記錄是不能被修改的。基於工作量證明的系統理念,最長的鏈條檔案不僅僅是提供這些工作量序列事件記錄的證據,而且它也是由最大的CPU處理能力池產生的。只要由計算機節點控制的大部分CPU處理能力不聯合攻擊網路本身,它們的處理能力將超過攻擊者,並生成最大的鏈條檔案。

這個網路它自身需要最簡單的結構,以方便資訊包盡最大努力廣播給網路上的計算機節點,同時計算機節點只需要接受它們離開時工作量網路的產生的資料鏈,它也可以隨時加入和離開網路。

1 介紹

網際網路商業的電子支付已經發展到了幾乎都需要專有的金融機構來提供第三方信任來處理的階段。雖然大部分交易,系統都能工作的足夠好,但它還是需要面對基於信任的基礎模型帶來的天生的缺點。 自從金融機構不可避免的開始調解糾紛,完全而不可撤銷的交易就不能真正的實現。調解成本增加了交易成本,限制了實際可行交易的最小規模,同時徹底切斷了為日常小額交易提供服務的可能性,廣義上的成本讓系統失去了為不可撤銷型別的服務提供不可撤銷支付的能力。因為使用者有撤銷支付的可能性,所以需要某個時間段內連續性的信任,這導致商家必須防備他們的客戶,騷擾他們以為了得到更多的他們不再需要的資訊。不可避免的,一定比例下的欺詐性交易是可以接受的。雖然使用物理貨幣可以避免這些成本和支付的不確定性,但是沒有商家在不透過可信任的三方的溝通渠道前提下去支付。

這就是為什麼需要一個基於加密證明的電子支付系統取代原來的基於信任的基礎模型,允許任意兩個希望交易的雙方不透過基於信任的第三方來直接支付。經過計算的無效交易將自動被撤銷,以保護賣家遠離欺詐,常規附帶條件的契約,將被機械化的執行,將保護買家變得很簡單。這篇論文中,我們提供了一個基於點對點的分散式時間戳伺服器去生成基於時間序列的交易訂單的計算證明方案,從而解決雙重支付問題。只要誠實的節點全體所控制的CPU計算能力的總和,大於聯合攻擊節點計算能力組的總和,該系統就是安全的。

2 交易

我們首先定義一個電子貨幣就是一個包含了一串數字簽名的鏈。每一個幣交易者透過用雜湊技術對上一個交易資訊和下一個擁有者的公共金鑰兩者進行加密,然後進行數字簽名,最後將這些資訊新增到這枚電子貨幣的末尾。下一個收款人透過私有金鑰與鏈裡的公有金鑰進行簽名驗證,以確認自己是鏈也就是這枚電子貨幣的擁有者。

當然這個流程的問題在於,收款人還是不能驗證幣的某位擁有者是否對這個貨幣進行了雙重花費,通常的解決辦法是引入一個值得信任的中心權威,或者造幣廠來檢查每一筆交易的是否被雙重花費。每一筆交易結束後,貨幣必須由造幣廠回收以發行一個新的貨幣,只有從造幣廠直接發行的貨幣才會被信任為沒有被雙重花費。這個解決方案的災難之處是,整個金錢系統依靠某家公司來運營造幣廠,就像銀行一樣,每一筆交易不得不透過它們。

我們需要用一個方法來讓收款人知道貨幣的上一個擁有者沒有在更早的任何一個交易裡簽名授權以導致雙重花費。我們的目的是,去計算以前的交易,我們不需要關心之後的交易是否對其進行雙重花費。唯一的方法是知道之前所有的交易,才會確認交易不存在。基於造幣廠的模型,造幣廠知道所有的交易,同時決定哪一個交易請求第一時間到達。在沒有可信任的三方下完成這個目的,交易必須公開發布,我們需要一個系統的每個參與者,都同意一個它們已經接受到的單一的訂單歷史。收款人需要透過主要節點認同它們已經第一時間收到了這筆交易來證明每一筆交易。

3 時間戳伺服器

我們的解決方案從一個時間戳伺服器開始,一個時間戳伺服器對一組已經被時間戳標示過的資料塊進行雜湊加密,然後廣泛公開發布這個雜湊,就像新聞或者以前的論壇發帖一樣。明顯的,為了進入雜湊裡,時間戳證明了資料在這個時間是必須必定存在的,每個時間戳包含了上一個交易的時間戳在它的雜湊裡,以後每次交易的時間戳都對上一個進行了加強,以此形成了一個鏈。

4 工作量證明

我們將需要使用工作量證明系統,在點對點的基礎之上構建一個分散式的時間戳伺服器,和adam back提出的的雜湊現金很像,而不是以前的新聞組及論壇的機制。當資料被雜湊加密後,工作量證明用安全雜湊演算法sha-256對一個數據的雜湊值進行檢查。雜湊從一定數量的0位元組開始,檢查的平均工作量隨著0的位元組的數量增長而呈指數增長,而校驗只需要執行一次雜湊操作。

為了我們的時間戳網路可行,我們增加一個不會被重複的隨機數進到資料塊內並執行一定的工作量來找到它,這個資料塊的的雜湊已經包含已經所需數量的0位元組。CPU處理能力一經被證明它滿足了所需的工作量,不重做所有的工作,這個資料塊將不能被修改。隨後的資料塊被連結在其最後,修改資料塊的資訊需要把其後所有的資料塊的工作量重做。

這個工作量系統也解決了集體決策誰代表大多數的問題。如果大多數是基於一個IP地址一票的機制,它將被能分配大量IP地址的人所破壞,工作量證明是基於一CPU一票的。大多數決策被最長的鏈代表,也代表了最大工作量效果的投入。如果大多數CPU被誠實節點控制,誠實鏈將最快速的增長,超過任何競爭的鏈。 修改一個過去的塊,一個攻擊者將不得不把塊和之後所有的塊裡所有的工作量重做,然後追上超過誠實節點的工作。我們隨後將展示一個慢速攻擊者追上隨後的資料塊的可能性隨資料塊的增加呈指數增加。

為了抵償硬體增加的速度和節點執行時的變化的收益,工作量證明將被一個移動平均值來確定,即每小時平均生成的資料塊數。如果它們生成的太快,難度也在增加。

5 網路

執行這個網路的步驟如下:

1 新的交易被廣播給所有節點

2每一個節點收集新的交易寫進一個數據塊

3每個節點發現這個資料塊的工作量的難度

4 當一個節點證明了它的工作量,它將廣播這個資料塊給所有的節點。

5節點接受這個資料塊,只有資料塊中所有的交易都是有生效和沒有被支付過的,節點才會接受這個資料塊。

6 節點透過建立下一個資料塊在資料鏈上,同時把傳送節點資料塊的雜湊作為建立資料塊的上一個雜湊,表示它們接受了這個資料塊。

節點始終認為最長的資料鏈是正確的,會一直在上面延展。如果兩個節點一起廣播不同版本的資料塊,一些節點先接收到一個或者另一個。在這個例子裡,它們會先在第一個接收的資料塊上開始工作,但是儲存另一個作為下一個分支,防止它變的更長。當工作量證明網路發現其中一個分支變的更長,在短鏈上工作的節點會切換到更長的鏈上,其所屬關係也會被打斷,

新的交易廣播不需要到達所有節點,它們只需要儘可能到達多的節點,它們將被整合進資料塊中。資料塊廣播也容忍丟棄資訊。如果一個節點沒有收到一個數據塊,它將持續請求它,直到它接受到下一個資料塊,並相信它是丟失的那個。

6 激勵

根據規則,在資料塊裡的第一個交易是一個特定的交易,它建立了一個新的貨幣,由這個資料塊的建立者擁有。這給支援網路的節點添加了一個激勵,同時提供一個在整個迴圈裡分散式發行貨幣的方法,沒有中心權威去影響它們。穩定的、數量不斷增加的新貨幣和挖金人花費資源新增黃金進如黃金迴圈系統一樣。在這個例子裡,處理器時間和電力是所需要花費的資源。

激勵也可以透過交易費用獲得。如果交易的一個輸出值小於輸入址,差值就是交易費,它作為激勵被被新增進包含這個交易的資料塊。整個迴圈的貨幣數量已經被預先設定,同時交易費作為交易的激勵可以完全避免通貨膨脹。

激勵也可以有助於節點保持誠實。如果一個貪婪的攻擊者有能力集合很多處理器能力超過誠實的節點,他要麼選擇從自己的交易裡欺詐他人,要麼使用它生成新的貨幣。他應該發現遵守規則獲利更多,這樣的規則有利於他聯合其他人賺取新貨幣,超過了他削弱這個系統和損害自身的財富健康的有效性。

7 回收磁碟空間

一個貨幣裡最後的交易已經被足夠多的資料塊覆蓋,那麼這個支付交易之前的資料可以不再被使用以節省磁碟空間。為了在不打斷資料塊的雜湊前提下促進它。交易被雜湊進默克爾樹(Merkle Tree),這樣只這個資料塊雜湊的根需要被包含進來,老的資料塊可以被壓縮排樹的接下的分支而拔除。內部的雜湊不需要被儲存。

一個不含交易資訊的資料塊頭部大概80位元組。如果我們支援每十分鐘生成一個數據塊。80位元組*6*24*365=4.2M/每年。2008年,每個通用的計算機都有2G記憶體。根據摩爾定律預測,每年增長1.2GB,資料頭都被儲存進記憶體也不是問題。

8. 簡化的支付驗證

不需要執行一個完整的網路節點也可以認證支付,一個使用者僅僅需要儲存工作量網路的最長資料鏈的資料塊頭部的複本,他可透過在網路節點上排隊等待直到他相信他自己已經得到了最長的鏈,並且包含交易的資料塊已經被默克爾分支連線上。他不能檢查他自己的交易,但是透過連線到鏈的某個位置,他能看到網路節點已經接受了這個資料,並且其後增加的資料塊也證明網路節點已經接受了它。

例如,這個支付驗證依靠儘可能誠實的節點控制網路,但是如果網路被一個擁有大量算力的攻擊者控制,它是會容易受到攻擊的。當網路節點可以確認它們自身的交易,這個簡單的方法可以被一個攻擊者的編造的交易來欺騙,只要攻擊者擁有超過網路的算力。當網路節點偵測到一個無效的資料塊,一個策略會保護反對者,他們將會從網路節點接收到警告,促使軟體的使用者去下載整個資料塊,以確認被警告交易的一致性。支付頻繁的商家還可以去執行它們自己的節點,以獲得更獨立的安全和更快的確認。

9 合併和拆分資料

儘管它可以控制單個貨幣的交易,但針對交易的每一分錢分開處理是很笨的方法。交易包含的多個輸入和輸出,應該允許數值的拆分和合並。通常要麼就是從上一個更大的交易裡單一輸入,要麼就是把多個輸入合併成更小的數字,同時最多隻有兩個輸出,一個負責支付,一個負責找零,如果有,則返回給傳送者。

.

這裡需要注意的是輸出端。一個交易從幾個交易而來,同時這些交易從更多交易而來,這不是問題。這裡永遠不需要去展開一個交易的歷史完整複本。

10 隱私

傳統銀行的模式是給合作伙伴有限的訪問許可權,同時透過一個被信任的第三方來呼叫,以來檢視一定級別的隱私。除了這個方法,維護隱私還需要透過打斷資訊流的一些地方,透過匿名的公共金鑰,以公開需要的所有的交易。公眾可以看到某人傳送給其他人的數字,但是沒有交易人的資訊,這個很像股票交易所的資訊釋出級別,公眾記錄了單比的交易的時間和規模,但是不知道誰交易的。

作為一個額外的防火牆,同一個擁有者的每一比新交易可以連線一對新的配對金鑰。一些連線還是不可避免的包含多個交易的輸入,這必須暴露同一個擁有者過去的其他輸入,這個風險是如果擁有者的金鑰被暴露了,連線將暴露屬於同一擁有者的其他交易。

11 計算

我們假設一個場景,一個攻擊者試圖去生成一個更快的鏈以替代誠實的鏈。甚至如果它完成的比較徹底,它拋開這個系統去隨意改變,例如憑空創造一個值或者拿走從不屬於他的錢,節點不會接受一個無效的支付交易,誠實節點將永遠不會接受包含他們的鏈。一個攻擊者能做的僅僅是可以努力去改變他自己的交易,以從他最近的支付裡把錢拿回來。

誠實鏈和攻擊鏈的之間比賽的特徵是一個二項分佈的隨機漫步。成功的事件是誠實的節點被一個數據塊擴充套件,它的領先增加一個點,失敗的事件是攻擊者的鏈擴充套件一個數據塊,差距減少一個點。

攻擊者從一個給定的赤字追上成功的可能性和賭徒破產問題相似。假設一個賭徒從一個赤字開始擁有無限的信用,同時無限嘗試的次數去賭以達到盈虧平衡。我們可以計算他達到盈虧平衡的可能性,那也就是一個攻擊者追上誠實的鏈。如下所示。

p = 誠實節點發現下一個資料塊的可能性

q = 攻擊者發現下一個資料塊的可能性

qz = 攻擊者嘗試從z資料塊以後追上的可能性

我們假設p>q,可能性隨著攻擊者追上資料塊的增加呈指數下降,隨著機率和他做對,如果他不能在早期幸運的趕上,越往後,他的機會會變的很渺茫。

我們現在思考需要等待多久才能確認這個傳送者不能改變交易。我們假設這個傳送者是個攻擊者,他想使接收者相信他已經把錢付給了他,然後過一會,他把錢再付給他自己。當發生時,接受者將接收到警告,但是傳送者希望它遲些發生。

接收者在簽名前生成一個新的配對金鑰然後把很快把公鑰給了傳送者。這防止傳送者在這個時間點前準備一個數據塊鏈並開始持續的工作,直到他幸運的跑到前面,然後在這時執行這個交易。交易一經發出,不誠實的傳送者就已經開始在一個並行包含了他交易的替代版本的鏈上秘密工作。

接收者等待直到這個交易已經被新增進一個數據塊同時Z資料塊已經被連結在它的後面。他不知道攻擊者已經制造的資料塊進展的準確數字,但是假設誠實的資料塊按每個資料塊的期望的平均值生成,攻擊者可能的進展的期望值將呈柏松分佈。

為了得到攻擊者在這時追上的機率,我們用柏松分佈密度乘以他可能在這個點上追上可能的機率的進展數:

重新整理避免分佈無限迴圈的尾部求和

轉換到C程式碼...

執行一些結果,我們可以看到隨著z值的增加,機率呈指數下降。

求解 P 小於 0.1%...

12.結論

我們已經提出了一個不需要基於第三方信任的電子交易系統。我們從常用的包含數字簽名的貨幣框架開始,雖然它提供了強大的控制力,但是在防止雙重支付方面做的不完整。為了解決這個問題,我們提出了一個依靠工作量證明的點對點網路,用其記錄一個公共的交易歷史,如果誠實的節點控制了主要的處理能力,那麼經過計算,攻擊者希望修改記錄的努力將變的不切實際。這個網路簡單且具備魯棒性。所有網路上的節點僅需要一點點的協調。它們不需要被認證,資訊不需要路由到任何特別的地方,僅僅需要盡最佳效果傳播。只需要接受它們離開時工作量網路的產生的資料鏈,計算節點可以隨時加入和離開網路。它們用處理器能力投票,透過在資料塊上擴充套件新的資料,以表示對資料塊有效性的贊同,拒絕在資料塊上擴充套件以拒絕無效資料塊。任何需要的規則和獎勵已經被整合進這個一致的機制且強制執行。

12
最新評論
  • 神秘買家6億元拍走,樂視大廈究竟歸誰?
  • 晶片行業110頁深度報告:CPU研究框架