ASCH區塊鏈防資料篡改的情景演示
背景:部署三個節點(A/B/C)的區塊鏈,對節點A上的資料庫直接進行修改,將使用者Ⅰ的balance和u_balance由1000增加修改成2000,另外兩個節點(B、C)上面的資料保持不變,仍然是1000。
資料篡改之後的現象:使用者Ⅰ登陸節點A的系統,檢視餘額為2000;而登陸節點(B/C)的系統,檢視餘額為1000。
交易操作:使用者Ⅰ登陸節點A的系統,然後發起向使用者Ⅱ轉賬1500的操作,轉賬交易成功,該筆交易進入節點A的待確認交易資料列表中,同時進行廣播。此時,
交易資料的廣播:節點(B/C)在收到交易資料的廣播訊息之後,對交易進行重新執行,發現使用者Ⅰ的餘額不足,故不接受該筆交易資料,無法進入待確認交易資料列表中。
建立新區塊E之前的資料情況:在節點A上,使用者Ⅰ的餘額變為500(忽略手續費),使用者Ⅱ的餘額未變化;能查到此條待確認交易資料。在節點(B/C)上,使用者Ⅰ和Ⅱ的餘額未變化;待確認交易資料列表中無此條交易資料。
建立新區塊E並上鏈:節點A上的受託人建立一個新區塊E,該區塊E包括了此條交易資料,並將此區塊E在本地進行上鍊,同時廣播給其他節點(B/C),其他節點收到該區塊E之後,由於對該區塊E中包含的交易資料在其他節點(B/C)上無法執行通過,故其他節點將忽略此區塊E。至此,節點A的區塊鏈高度要大於節點B/C的區塊鏈高度。
建立新區塊E之後的資料情況:在節點A上,使用者Ⅱ的餘額增加了1500,已經沒有此條待確認交易資料。在節點(B/C)上,使用者Ⅰ和Ⅱ的餘額未變化;待確認交易資料列表中無此條交易資料。
繼續建立新區塊X/Y/Z:由於每個節點建立區塊的間隔時間為10秒,建立下一個區塊的節點可能是節點A或者節點B/C(B或C建立新區塊的邏輯一樣)。按以下情況來假設分析:
1、若是節點A上的受託人繼續獲得了建立區塊的權利,先將建立區塊的新高度及ID等提議資訊廣播給其他節點B/C,節點B/C收到提議之後,發現該提議的區塊高度不等於本地區塊鏈的最後一個區塊的高度+1,則不回覆投票資訊給節點A;節點A由於獲得的贊成票數不足三分之二,則無法建立新的區塊。
但是,此時節點B/C發現收到的區塊高度已經大於了本地區塊鏈的高度了,為了防止區塊鏈落後,則發起同步區塊鏈的操作,隨機的從某個節點進行同步。假設選擇了節點C,由於區塊高度一樣則無需同步;假設選擇了節點A,則將區塊E同步到節點B中,但是在同步過程中該區塊的交易資料無法執行通過,則直接結束同步,無任何實質性的同步資料。
2、假設節點B上的受託人建立下一個區塊X,由於節點B在建立新區塊時得到了節點C的共識(即達到了三分之二),故成功建立新區塊X並上鏈,同時節點C也將新區塊X上鍊。而節點A在收到新區塊X之後,發現區塊X的前一個區塊ID等於節點A本地鏈中最後一個區塊(區塊E)的前一個區塊ID,並且區塊X的高度等於本地區塊E的高度,但是區塊X與區塊E的ID不同,從而判斷存在分叉(相同的高度和前區塊而不同的ID),節點A將忽略區塊X。
3、假設節點C上的受託人繼續建立下一個區塊Y,此時邏輯跟節點B建立區塊X一樣,節點B與節點C達成共識,同時將區塊Y上鍊,而節點A收到區塊Y之後,發現區塊Y的前區塊ID不等於本地鏈的最後一個區塊E的ID,但是本地鏈最後一個區塊E的高度+1等於區塊Y的高度,說明存在分叉(高度正確但是不同的前區塊),節點A將忽略區塊Y。
4、假設接下來由節點A上的受託人建立下一個區塊Z,經過第2、3步其他節點建立區塊之後,此時節點A上的區塊鏈高度與其他兩個節點的區塊鏈高度達成了一致,在建立新區塊的過程中通過提議的個數能達到三分之二,則在節點A中能將區塊Z上鍊,但是在同步區塊Z到其他節點時,由於區塊Z的前區塊ID不等於其他節點最後一個區塊的ID,則也會認為是分叉,被忽略。
5、假設接下來由節點B上的受託人建立新的區塊W,與節點B建立新區塊X時一樣,在節點C上能達成共識並上鏈,節點A收到區塊W之後,發現區塊W的高度已經大於了本地區塊E的高度+1,則從其他節點(B或C)執行區塊同步。
在同步過程中,將以前的區塊E刪除並將區塊E包含的交易資料進行回滾操作。
建立至少三個新區塊之後的資料情況:使用者Ⅰ登陸節點A的系統,檢視餘額為2000,使用者Ⅱ的餘額被還原;而登陸節點(B/C)的系統,檢視使用者Ⅰ的餘額為1000,使用者Ⅱ的餘額未變化。即使用者資料恢復成了資料篡改之後的情況,所有與篡改相關的交易均被回滾。相關文章
- 為什麼區塊鏈是不可篡改的區塊鏈
- 【譯】區塊鏈是如何工作的——用JavaScript演示區塊鏈JavaScript
- 區塊鏈溯源技術,區塊鏈溯源防偽解決方案區塊鏈
- 區塊鏈溯源-基於區塊鏈技術-全程追溯防偽區塊鏈
- 區塊鏈系列6-區塊鏈安全與大資料區塊鏈大資料
- 區塊鏈資料總結區塊鏈
- 區塊鏈學習資料區塊鏈
- 區塊鏈和資料庫區塊鏈資料庫
- 區塊鏈雲盤的資料安全區塊鏈
- 區塊鏈防偽溯源系統搭建區塊鏈
- 圖資料庫並非要取代區塊鏈,而是讓區塊鏈如虎添翼資料庫區塊鏈
- 區塊鏈和大資料的關係區塊鏈大資料
- 區塊鏈教程、區塊鏈指南、區塊鏈中文手冊、區塊鏈原理區塊鏈
- 區塊鏈溯源-防偽溯源解決方案區塊鏈
- MT和MPT—區塊鏈的資料結構區塊鏈資料結構
- 區塊鏈社交直播app開發,區塊鏈技術應用資料上鍊區塊鏈APP
- 區塊鏈資料管理平臺開發,多節點聯盟區塊鏈搭建區塊鏈
- 區塊鏈防偽溯源+商品溯源解決方案區塊鏈
- 區塊鏈商品溯源-有效防偽解決方案區塊鏈
- 區塊鏈商品溯源,溯源防偽解決方案區塊鏈
- WEB安全新玩法 [3] 防護交易資料篡改Web
- 區塊鏈技術落地應用,區塊鏈溯源防偽阻力電商行業直播帶貨區塊鏈行業
- 區塊鏈企業聯盟鏈解決商品溯源防偽區塊鏈
- 區塊鏈如何提高資料安全性?區塊鏈
- 區塊鏈資料隱私保護分析區塊鏈
- 區塊鏈資料管理必讀文獻區塊鏈
- 區塊鏈代表的資料庫和傳統資料庫有何區別區塊鏈資料庫
- 區塊鏈與分散式資料庫的比較區塊鏈分散式資料庫
- 區塊鏈技術實體應用落地開發方案,區塊鏈資料上鍊區塊鏈
- 區塊鏈技術物流應用場景開發方案,區塊鏈資料上鍊區塊鏈
- 區塊鏈100講:區塊鏈為什麼叫“區塊”“鏈”?區塊鏈
- “區塊”和“鏈”的火花,區塊鏈到底為何物區塊鏈
- 區塊鏈防偽溯源安全解決方案,區塊鏈底層公共服務平臺建設區塊鏈
- 區塊鏈商品溯源,防偽全程追溯平臺搭建區塊鏈
- 區塊鏈商品溯源-全程追溯防偽平臺搭建區塊鏈
- 區塊鏈商品溯源+商品溯源防偽解決方案區塊鏈
- 區塊鏈商品溯源-防偽全程追溯平臺搭建區塊鏈
- JavaScript防篡改物件JavaScript物件