區塊如何防篡改_深入淺出:一條數據是如何完成上鏈的

12b606f382abc7bc79b03a3addab98fe.png

一筆業務數據在區塊鏈處理的流程大致分為三個階段:分別是上鏈前處理階段、鏈上處理階段和智能合約處理階段。

148f02e14a795627f8add06d2e13fd33.png

一.上鏈前處理階段

業務數據上鏈前需要將業務數據處理,并且對信息進行簽名。這些過程可以通過對應的工具,比如序列化工具和各種橢圓曲線的簽名工具來完成,不過更多的時候是通過將各種工具集成的SDK來完成,以太坊的web3就是比較典型的上鏈前處理的開發工具。業務數據處理

業務數據可以是任意的內容,比如物流信息、商品交易或物聯網設備上傳的數據或者對應數據的哈希值等等。這些業務數據既可以通過服務器處理,也可通過物聯網設備的邊緣計算系統處理。以存證用的物流數據舉例,首先對業務數據不需要進一步處理或者簡單計算一下哈希值,然后將調用函數的信息加上鏈數據放入交易結構體的相關部分當中即可。簽名前的交易結構體是由鏈決定的,不過一般都包含調用的合約、時間戳、隨機數和調用函數加數據的信息。將簽名前的數據拼裝好之后,會進一步序列化以便消息傳遞。對于一些隱私交易,需要用到同態加密或者零知識證明等算法,此時業務數據則需要經過更復雜的加工過程,比如數字經過處理可以變成一個乘方求模的大數或者橢圓曲線上的點,但是拼裝和序列化等過程還是相同的處理方式。

信息簽名

簽名前的數據處理好之后,對該數據進行一次哈希處理,并對哈希進行簽名。哈希是與數據綁定的一串值,篡改信息會造成哈希值發生變化,因此本身具有防篡改的特性。接下來是對信息的哈希值進行簽名。簽名是一種非對稱加密的方法,可以在不泄露發送者本身的私鑰的情況下,通過公鑰和簽名信息確認發送者持有對應的私鑰。對哈希進行簽名還可將發送者的身份和信息綁定,同時也可防止其他人冒充發送者,因此這樣處理可保證信息的防篡改的同時認證發送者的身份,防止抵賴。
業務上鏈前的處理階段主要是通過工具將業務數據轉換成區塊鏈可讀的方式,同時通過簽名將發送者的身份和發送信息綁定,起到身份認證和防止抵賴的作用,最后再將處理好的信息發送到區塊鏈節點。上鏈前處理是中心化的,這些處理過程并不涉及區塊鏈節點,因此這一階段并不需要節點參與。有些系統,如邊緣計算系統,本身的性能和儲存空間都有限,并不適合做區塊鏈節點,但可以作為業務上鏈前處理的平臺。

二.上鏈處理階段

處理完成的數據發送到區塊鏈節點后,就形成了一筆區塊鏈交易并進入上鏈處理的階段,鏈上處理大體可分為交易廣播和區塊共識流程。

交易廣播

在收到交易后,各節點會將接收到的交易先廣播到其他節點,以便形成一個統一的交易池來為達成共識做準備。交易廣播后聯盟鏈和公鏈對交易會有不同的處理方法。對公鏈來說,任何交易發送者都可將交易發送到鏈上,但是處理能力不是無限的,因此會根據交易的手續費行有選擇的處理,手續費低的交易很可能一直無法得到處理。在一些極端情況下,節點為了提高處理速度甚至會出現不處理任何交易的空塊。對聯盟鏈來說有一定的準入機制,能夠發送交易的應該是合作伙伴,因此處理交易的原則是盡量將能夠處理的交易打包進塊。

區塊共識

區塊主要包含區塊哈希、區塊頭和交易數據的信息,其中區塊頭一般都會包含共識信息、時間戳、區塊高度等,并記錄前一區塊的哈希來指向前一區塊;交易數據包含該區塊里打包交易的哈希,交易需要根據統一的順序排序;在確認區塊頭和哈希之后,就能計算區塊哈希。這樣通過前一區塊哈希和自身哈希相連形成鏈條,修改鏈上的任何一個區塊的內容會后面區塊的前一區塊哈希和修改后的哈希不同,因此區塊具有防篡改的特性。只有修改該區塊和往后所有區塊的內容,且每個節點上都以相同方式修改才能完成修改。共識的主要目的就是以某種約定的方式生成能夠被大部分節點認可的區塊。不同共識方式的區別比較大,但是基本原則就是讓不同節點產生相同的區塊,盡可能保證數據的一致性。對公鏈來說,因為節點的通訊狀況不可控,保證一直出塊的情況下,如果網絡出現問題,將可能無法達成一致,甚至出現分叉的情況。對聯盟鏈來說,共識算法需要盡量使節點的區塊數據保持一致性,因此在一定數量的節點出現網絡問題的情況下將會停止出塊。上鏈處理階段是將業務數據寫入區塊的過程,這個過程就是通常所說的上鏈,這一過程是去中心化的,需要由節點處理。在處理階段時業務數據還是可以按照發送者的意愿寫入不同內容,而進入上鏈階段后的業務數據將無法篡改,不過仍然存在上鏈失敗的可能,因此仍需要關注是否完成上鏈。共識階段完成后,各節點的區塊保持一致。此時的業務數據獲得每個節點承認且可追溯的數據了。

三.智能合約處理階段

上鏈處理完成后,業務數據已經記錄在鏈上了,對于單純存證的業務來說,將業務信息寫入區塊已經完成了這筆業務處理,只需記錄存證業務的交易哈希并在取的時候通過交易哈希查詢即可。但是大部分業務場景都需要進行一定的邏輯處理,因此通過智能合約處理是必須的。智能合約處理包括合約邏輯處理以及修改狀態梅克爾樹等流程。合約邏輯處理

完成上鏈的業務數據很多情況下需要進一步進行邏輯的處理,比如一次最簡單的商品的交易就涉及轉賬,即買家余額減少和賣家余額增加的邏輯流程,這樣的流程雖然可以通過上鏈前的處理來完成,但是上鏈前處理是中心化的流程,對網絡波動和可信度問題都有一定的劣勢,因此通過智能合約進行邏輯處理是比較好的方式。不同鏈平臺對智能合約處理的方式不同,但是和一般的編程語言一樣都有調用函數和傳入參數的過程。并且因為創建智能合約和調用智能合約的過程都是上鏈的,即執行的程序和調用的函數與參數都是經過共識的,因此最終調用智能合約的數據的輸出結果也是相同的。處理完后的結果會寫入合約的狀態數據庫,這個數據庫除了最新狀態也會包含歷史狀態,方便追溯和查詢。

修改狀態梅克爾樹

智能合約的邏輯處理完成后,會修改狀態梅克爾樹。梅克爾樹是一個二叉樹結構,不同的葉通過梅克爾樹鏈接到根,能起到防篡改和索引的作用。通過梅克爾樹的索引,能夠快速定位合約的歷史狀態,可通過查詢某個業務執行的區塊高度的合約數據來獲取當時的執行結果。智能合約處理階段是將業務數據進行邏輯處理,并記錄智能合約狀態的過程,這一過程也需要節點處理。如果合約邏輯處理的操作執行失敗,對狀態梅克爾樹的修改也會撤銷,合約的數據將會回滾到調用前的歷史數據。需要注意的是合約調用失敗和上鏈失敗是有區別的,觸發合約調用的時候交易已經在區塊里留下記錄,而區塊是防篡改的,因此調用失敗并不會擦除區塊里的記錄。如果交易因為數據錯誤或者共識問題而沒有被記錄進區塊,則不會觸發合約處理的過程。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532967.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532967.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532967.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鎖定計算機在哪里設置方法,怎樣鎖定電腦?如何設置電腦鎖屏【步驟詳解】

我們在日常使用電腦的時候,特別是自己的私人電腦時,難免會遇到上個廁所接個水之類的雜事需要離開位置的,也許可能就一兩分鐘不到的時間,這么點的時間如果關機的話又覺得實在是太麻煩了,但是又不想讓其它的人知道我們的…

python 安裝html,python安裝glob

python 里面的glob模塊是怎么用的新手剛學這一塊內容,不是很懂 這個模塊可以用來統計每個類型物品的統計glob是python自己帶的一個文件操作相關模塊,用它可以查找符合自己目的的文件,就類似于Windows下的文件搜索,支持通配符操作,…

hough變換檢測圓周_Python OpenCV 霍夫變換

霍夫變換(Hough Transform)是圖像處理中的一種特征提取技術,它通過一種投票算法檢測具有特定形狀的物體。Hough變換是圖像處理中從圖像中識別幾何形狀的基本方法之一。Hough變換的基本原理在于利用點與線的對偶性,將原始圖像空間的給定的曲線通過曲線表達…

關于未來計算機的想象作文600字,未來世界的想象作文600字

我背著書包漫無目的地走在街上,剛要出門的時候突然出現了一個大洞,我本想上前一看究竟,結果被石子絆了下去,一下就落進了那個黑洞里,我的世界陷入了一片黑暗。不知過了多久,我眼睛好不容易看到一絲光亮&…

creator qt 字體太小_qt ttf 字體太小的解決方法

編譯完成qt以后,發現qt的字體太小了原因是qt的dpi計算錯誤,這樣的情況會導致qt在不同的平臺上大小不一解決的方法就是設置好qt的dpi,qt是根據顯示器的物理長度或者寬度于分辨率的關系來計算dpi的,所以我們設置exportQWS_DISPLAY"LinuxFB:mmWidth95:0"export QWS_SIZE…

當前超級計算機的應用方興未艾,四川省若爾蓋縣高三下學期語文模擬卷(五)

四川省若爾蓋縣高三下學期語文模擬卷(五)姓名:________ 班級:________ 成績:________一、選擇題 (共3題;共6分)1. (2分)(2017海南模擬) 下列各句中劃線成語的使用,全都正確的一項是()①與做人一樣,李天來對待試驗同樣謹小慎微。他說&#xff…

easyui中onchange事件_React中類似Vue的“模板語法”

一、數據綁定類似 Vue 的 v-model,this.state { val: 1, companies: ["阿里巴巴", "騰訊", "百度", "京東"], };companyNameUpdate(e) { this.setState({ companyName: e…

html5著陸頁模板,多用途著陸頁HTML模板

資源下載此資源下載價格為5D幣,請先登錄資源文件列表apnew/css/animate.css , 74096apnew/css/bootstrap.min.css , 121260apnew/css/font-awesome.min.css , 27466apnew/css/jquery-ui.css , 36437apnew/css/jquery.carousel-3d.default.css , 3639apnew/css/mater…

php十六進制字符串轉成字節數組_10 天 5 千 Star!21 歲本科生給程序員開發的十六進制編輯器...

【導語】:ImHex 是一款界面美觀的十六進制編輯器,主要面向逆向工程師和程序員。如果你喜歡暗黑系編輯器,那它應該是你的菜。ImHex 最近在 GitHub 上非常火熱,上架五天就收獲了 2.5k Star,十天 5k Star。開發者介紹ImHe…

ie11用不了html5,HTML5拖放不能在IE11上運行

應用HTML5原生拖放功能,drop不適用于IE,與chrome和firefox配合使用。拖動似乎正在起作用,但對IE不感興趣。另一個小問題 - 在IE中,我的可拖動元素周圍有一個半透明的方塊,但它的背景是透明的(圖像是這樣完成的)&#x…

掃掠兩條引導線_《神都夜行錄》周年慶點燃線上線下,解讀國風二次元IP的成長之路...

自2016年國產二次元手游在市場實現登頂以來,該品類便一直呈明顯的上升趨勢,如今也依然是大小廠商乃至創業團隊的布局對象。不過具體到二次元手游的玩法和IP建設上,多數產品都選擇沿襲早期艦娘like的收集模式,再加上市面熱門的重度…

vi新建一個shell腳本_編寫第一個Shell腳本

Linux中有好多中不同的shell,bash是linux默認的shell,免費且容易使用。su切換為root權限1.創建shell腳本touch hello.sh2.編輯:vi hello.sh內容#! /bin/bash#the first programecho "hello world"3.保存并退出按Esc取消插入&#x…

四川三河職業學院計算機寢室,2020四川三河職業學院宿舍條件如何-有空調否?(宿舍圖片)...

對于要考的大學宿舍條件好不好,想必大家也是很關心的,下面就帶大家探索一番。(注:每年存在大學宿舍翻新的情況,數據與圖片可作為參考。。)1、四川三河職業學院宿舍條件學生宿舍近日,四川三河職業學院為2013級即將入住的…

安徽科技學院計算機二級,安徽科技大學2017年3月計算機二級考試報名時間

根據安徽省教育招生考試院要求,安徽科技學院2017年上半年全國計算機二級考試定于2017年3月25日至28日(具體時間見準考證)舉行。本次考試報名工作具體安排如下:一、開考科目、級別二、報名及繳費時間2017年2月13日上午9:00至2月28日下午17:30。三、報名方…

c# u盤使用記錄_U盤如何快速清除使用記錄【詳解】

大家在使用U盤的時候,是不是覺得只要將U盤拔下來,就不會在剛才的電腦中留下使用過的痕跡?其實不然,只要你在Windows下對U盤做過任何操作,系統都會一絲一毫的記錄下來,雖然這些在系統的資源管理器或記錄上不會明顯顯示…

echart vue 圖表大小_cesium+vue,性能優化

平時在vue開發中,我們都習慣把所有數據掛載到vue的data對象上,這樣做大大簡化了我們的開發流程,響應式數據簡直不要太爽但是,針對地圖業務的開發,使用了cesium這個開源庫的話,其實完全不建議把整個庫&#…

計算機 教育 研究生分數查詢,專業碩士在考試結束之后幾周內可以去查分呢現在只能是通過電腦來查分了嗎...

考完試之后揭曉成績是所有考生最激動的時刻,但專業碩士的考試結束之后,大家在短期是查不到成績的,一般會在五六周之后才可以去查分。雙證在職研究生也就是專碩的不脫產學習方式,那么現在大家去查分只能是通過電腦嗎。第一&#xf…

iis架設aspx_在IIS6中配置html文件以ASPX方式工作

在IIS6中配置html文件以ASPX方式工作由于IIS6的安全不斷提高,如果你需要設置html文件以ASPX文件方式被執行。僅僅設置應用程序映射是不夠的,還 需要修改一些其他設置。如果你只修改了應用程序映射,而沒有修改其它,則可能會報404錯…

飛行計算機人機工程,人機工程學版

《人機工程學版》由會員分享,可在線閱讀,更多相關《人機工程學版(18頁珍藏版)》請在人人文庫網上搜索。1、人機工程學版,人體工程應用與實訓宜家考察總結,2011級景觀一班,人機工程學版,人體工程學的研究對象及其關系,人機環境 (人體工程學主要研究科技和…

pytorch如何計算導數_PyTorch怎么用?來看這里

構建深度學習模型的基本流程就是:搭建計算圖,求得損失函數,然后計算損失函數對模型參數的導數,再利用梯度下降法等方法來更新參數。搭建計算圖的過程,稱為“正向傳播”,這個是需要我們自己動手的&#xff0…