Doublespend
通過工作證明的安全性
我正在閱讀 Satoshi 的原始論文,只是為了理解這個概念。我有最少的電腦科學背景(一些),主要是數學。
在Satoshi 的原始論文的第 4 節工作證明中,他(她?誰知道)說“一旦 CPU 工作量用於使其滿足工作證明,就不能在不重做工作的情況下更改塊。由於後面的塊被連結在它之後,因此更改塊的工作將需要重做它之後的所有塊”。
我想我理解上述選擇的大局,但我不知道在這種情況下會發生什麼的技術細節。問題:
- 假設一個節點確實返回並重做前一個塊(例如塊n)的工作證明 - 無意對任何後續塊進行工作證明 - 這會創建一個來自塊n的分叉還是會它切斷了區塊n和n+1之間目前最長的區塊鏈?
- ‘改變區塊的工作需要重做之後的所有區塊‘的原因僅僅是因為除非改變的區塊中的數據通過出現在最長的鏈中得到驗證,否則改變區塊是沒有意義的。由於按照問題 1 中所述返回並更改塊 n (根據我的解釋)在塊**n-1處創建了一個對誠實n和不誠實n的分叉,-通過重做不誠實 n 之後的所有其他塊的工作*,*雜湊和時間戳重合, 如果這條鏈在理論上趕上了目前的誠實鏈(當然這在機率上是不可能發生的),那麼這條鏈將是新的誠實鏈,按照5. 中的定義。網路.
- 假設發生了不太可能的事情,並且問題 2 的情況發生了 - 與普通貨幣的適當類比是 a) 我給你錢以換取一些商品或服務 b) (大概)我收到了商品或服務 c) 我偷了錢回來。我的意思是,即使發生了不可想像的事情,也不會類似於“複製”我給你的錢,更像是把它偷回來?
我更喜歡主要在 Satoshi 的原始論文框架內回答的答案(這可能與比特幣目前在現實世界中的運作方式不同),但我不反對聽到有關如何實際實施的相關事實。
另外 - 這個社區的新手:請隨意編輯標籤或標題:)
- 它創建了一個分叉。沒有辦法“切斷”區塊鏈的現有分支。所有有效的分支永遠保持有效,節點將選擇目前最長的一個(按總工作量計算)作為權威分類賬。
- 正確的。如果你只是重做一個區塊,你已經創建了一個分支,但它不是最長的,所以它不會被認為是權威賬本的一部分。
- 是的,這是正確的類比。“雙花”不重複錢;相反,它會改寫歷史記錄,因此您的付款被認為是轉給了其他人(通常還給了您)。如果其他人認為他們有這筆錢,並給了你一些商品或服務作為交換,那麼你實際上已經從他們那裡偷了回來。你實際上必須花兩次錢,但區塊鏈認為第一次從未發生過,所以官方記錄只顯示了一次支出。