怎樣才能修改區塊鏈里的數據?請結合技術和現實場景來描述?

我知道區塊鏈的技術特質是一旦寫入,不可篡改,而且大家之所以使用區塊鏈技術,也是看重了不可篡改帶來的公信力。如果被輕易篡改了,那區塊鏈就失去了其公信力,對整個區塊鏈行業將會是一次重大的打擊……好吧,扯遠了,讓我們拉回正題。

區塊鏈現在已經脫離了比特幣,逐步和其他行業結合,甚至向普通人的現實生活滲透,一旦涉及到應用,涉及到用戶,過程中肯定會有一些人為因素或者顯示因素導致一些不合時宜的情形出現。會不會出現數據記錄錯了的情況,如果錯了要怎麼修改?(51%算力攻擊?容我叫你一聲土豪爸爸!)

求高手指教,最好能結合下業務場景,詳細具體點。


不是高手,只是略有涉獵,強行回答一下。

首先,我先說明下區塊鏈的數據結構是怎樣的,以及為什麼說它無法篡改。

區塊鏈是一個去(多)中心化的分散式資料庫,這個資料庫是由一串使用密碼學方法產生的數據區塊鏈有序鏈接而成,區塊中包含有一定時間內產生的無法被篡改的數據記錄信息。

(PS:沒找到合適的圖,大家將就看,在B的前面還有一個數據塊A,只有一個當前hash0,沒有前一hash值,其他都一樣。)

先修知識;

o 密碼學Hash()函數的單向性: Hash(x) =y , 通過y很難找到x

o 哈希鏈: 假如現在有順序產生的數據塊 A, B , C 。 那麼我們可以這樣計算一個hash 。 注意 「||」 表示拼接

h0= Hash(A)

h1 = Hash(B || h0)

h2 = Hash(C || h1)

h2是我們計算的hash頭部,h2 的值依賴於之前一系列數據的內容和計算順序。 假如你拿著A,B, C, 不管是修改A,B, C的任一點內容還是A,B, C的出現順序,你都無法再次計算出正確的h2 。

當然,你會說,那我按照修改後的內容繼續算下去,走自己的路,就是要跟其他節點不一樣。但是,區塊鏈之所以能成為一個難以攻破的、不可篡改的數據記錄的去中心化誠實可信系統,就在於它能儘可能短的時間內保證最新區塊鏈被準確添加至區塊鏈、節點存儲的區塊鏈信息一致不分叉甚至可以抵禦惡意攻擊。這個流程我們成為共識機制。

目前主流的共識機制包括:pow、pos、dpos、pbft等等,具體原理見(懂技術的進,pbft是不是區塊鏈目前最優的共識機制? - JoannaD 的回答 - 知乎),簡單來說就是少數服從多數。你可以大概理解為你自己在自己的資料庫上修改數據沒有用,整個系統不會認同,只會按照設定好的機制走下去。

我們可以得出這樣的一個結論:區塊鏈可以確保鏈上數據的真實性,不需要修改。比如比特幣,自成系統,在沒有中心機構的維護下安全運營了8年,從沒有用戶反映自己的數據被篡改了。

但現在區塊鏈和比特幣不同的而是,區塊鏈正處於一個逐步與其他行業結合的階段,它需要和現實場景結合。比如錢香金融,將自己的理財產品發行在布萌區塊鏈上。用戶買了它家的1份理財產品,結果錢香金融一不小心送給用戶2份(舉例而已,可能並不會出現這種狀況)。這個數據被寫進了布萌區塊鏈後會被存儲在布萌每一個節點上,即使錢香金融自己修改數據,其他節點不修改,這個修改的數據也是無效的。錢香如果想修正這個錯誤,需要和用戶商量:hello,能把我多送你的那份理財產品還我嗎?

普通用戶也是這樣,還別人100塊還成了200塊,這種多中心化的記賬模式,一家機構想幫忙修改還真不成。所以,區塊鏈其實對機構也好、對用戶也好,提出了更高的要求。那就是,要為自己的行為負責。

當然你會說,中心機構也不會修改,因為這是用戶的失誤,但不會和不能是有區別的。比如銀行,你銀行卡丟了,只要提供身份證明,銀行會給你補辦一個,因為這個資料庫在銀行那裡,銀行可以進行這樣的操作。但區塊鏈應用是不能,數據是所有節點共同維護,某一家機構是沒法修改的。

恩,如果實在要修改也不是不可以,可以借鑒以太坊the dao 被黑客攻擊的事件,進行軟分叉或者硬分叉。但這個代價是非常沉重的,需要取得大部分節點的同意,某種程度上,也算是節點鏈外人為補充的一種共識吧。


諮詢服務業巨頭埃森哲已在歐美獲得可編輯區塊鏈模型專利。此種區塊鏈允許在已授權的區塊鏈系統中,由中央管理員修改及刪除儲存信息。埃森哲指出不可編輯性在授權系統中並非必要屬性,因為此系統由單一機構控制。 新聞來源比特幣跨境匯款方興未艾 可編輯區塊鏈或違初衷。但是這個還是不是區塊鏈呢?

在去年共享財經舉辦的活動論壇上,OKCoin高級研究員、品牌總監段新星對區塊鏈技術的發展趨勢做了一個判斷:「當一個技術逐漸發展起來以後,有的一些公司是真正的做技術,利用技術去改進人們的一些服務、生活。比如說我們讓交易更加流暢,更加便利,但是也有一些為了鍍上時代的金粉,打上技術的潮流標籤,聲稱自己是區塊鏈公司。如果持善意寬容的態度,我們可以把他們列入廣義的區塊鏈公司。究竟他是不是,有待商榷。 」


區塊鏈里的數據不能修改,不然就不叫區塊鏈了


嘿嘿嘿,商量好一起改


節點的數據也是由節點寫入的,如果寫錯的話,後續可以寫上正確的來進行覆蓋,再共識一次,雖然會留下痕迹,但結果正確就ok。


不能修改,除非被51%算力攻擊。


已寫入區塊鏈的歷史數據不是不可篡改,而是很難篡改。如果基於pbft共識,要同時篡改網路中三分之一節點的區塊,如果基於POW共識,那礦工的算力要是其他競爭者的N倍(N取決於被修改區塊距當前區塊的距離)


一個SHA-1就得動用巨量的算力…想修改但是不被發現,基本不可能。強行修改的話誰都知道了…http://www.zhihu.com/question/56234281


推薦閱讀:

中國人民銀行準備發行自己的數字貨幣會是什麼?這對比特幣來說意味著什麼?
怎麼看9.4號出台的關於ICO的新政策?
如何看待ico被判為非法?
如果升級BTS2.0至3.0,有哪些應該改進的地方?
相比POS和DPOS,POW更有利於區塊鏈原生代幣的價格穩定嗎?

TAG:分散式計算 | 科技 | 互聯網金融 | 區塊鏈Blockchain |