為什麼時間戳不能替代區塊鏈?
我對工作量證明的整個概念以及它如何允許一個去信任的去中心化系統非常著迷。儘管知道工作證明(或權益證明)對於擁有像比特幣這樣的加密貨幣來說是不可避免的,但我還是想完全了解其他方法在哪裡失敗。
據我了解,比特幣解決的第一個問題是每筆交易的簽名。對我來說,這完全有道理,因為完全有必要能夠驗證發件人確實是交易的創建者。但接下來的問題是交易順序和有效性,以防止雙重支出。我不完全理解為什麼不能只為每個廣播交易包含時間戳,並且交易可以具有正確的、普遍同意的時間,並且每個分類帳都按時間順序排序。這是因為它需要一個集中的系統來防止人們偽造時間戳嗎?或者我錯過了什麼?對我來說,如果交易被公開廣播到整個網路,分類賬/雙重支出就不會發生衝突。
主區塊鏈究竟是如何保持去中心化的?假設我離線並錯過了交易廣播,現在我想要主區塊鏈的更新版本。對於這個主區塊鏈,我必須依賴/信任其他人,它現在似乎是集中的,就像所有新使用者都從同一個區塊鏈副本中提取一樣。我不太明白這與社區分類帳的類比有什麼不同,每個人都只是保持他們的副本更新,或者每個人都不斷地從中提取的 git repo 上的主要分支。沒有單點故障,但在某種意義上它似乎仍然是一個社區賬本。
我完全清楚,我上面提出的“解決方案”在某些地方存在我遺漏的錯誤/我沒有考慮過這些將失敗的場景,我想確切地了解為什麼工作量證明系統是在這些情況下是必要的。並且,儘管具有上一段中描述的特徵,它如何保持去中心化和去信任。我相信,這將幫助我了解它的真正美。
但接下來的問題是交易順序和有效性,以防止雙重支出。我不完全理解為什麼不能只為每個廣播交易包含時間戳,並且交易可以具有正確的、普遍同意的時間,並且每個分類帳都按時間順序排序。這是因為它需要一個集中的系統來防止人們偽造時間戳嗎?或者我錯過了什麼?對我來說,如果交易被公開廣播到整個網路,分類賬/雙重支出就不會發生衝突。
您需要記住,通信網路並不完美。有延遲,有連接和斷開的節點。系統需要對這些動態具有強韌性。
你還需要記住,比特幣要解決的問題是商家如何知道向他支付的款項是最終的並且不會被退回。
假設雙花者向商家付款,tx 時間戳為 13:05。商家看到 tx 並提供商品。然後,攻擊者廣播一個時間戳為 13:04 的衝突交易。
接收到這個新交易的節點無法知道這個 tx 上的時間戳是否是偽造的,或者它是否確實在指定時間被廣播,他到目前為止只是錯過了它。由於規則規定較早的 txs 優先,因此支付給商家的款項將被退回。
那是在廣播這些交易時節點實際連接到網路的時候。如果它是一個新節點,或者它當時有停機時間怎麼辦?他怎麼可能知道這些交易中的哪些實際上更早出現在網路上?
這正是工作量證明和區塊鏈正在解決的問題——它們是每個人都可以同意的永久記錄,這很難偽造,因為它包含了實際計算工作用於驗證它的證據。
主區塊鏈究竟是如何保持去中心化的?假設我離線並錯過了交易廣播,現在我想要主區塊鏈的更新版本。對於這個主區塊鏈,我必須依賴/信任其他人,它現在似乎是集中的,就像所有新使用者都從同一個區塊鏈副本中提取一樣。我不太明白這與社區分類帳的類比有什麼不同,每個人都只是保持他們的副本更新,或者每個人都不斷地從中提取的 git repo 上的主要分支。沒有單點故障,但在某種意義上它似乎仍然是一個社區賬本。
區塊鏈實際上包含證明。我不需要信任任何節點——如果我從不同節點得到衝突的區塊鏈,我知道哪一個是正確的,因為它有更多計算工作的證明。這使得所有節點,無論何時連接,都可以在同一個共享分類帳上達成一致。
這就是最重要的——協議。只要每個人都同意哪種交易順序是正確的——尤其是提供商品以換取比特幣的人,以及他以後想要將這些比特幣發送給的人——支付網路就可以工作。