指針
在程序運行過程中,需要用到數據。最簡單的是直接獲取數據,但當數據本身較大,需要占用較大空間時,明顯會造成一定麻煩。因此,可以引入指針這一概念。當需要獲取數據時,只需要按照指針所給的地址,去對應的位置讀取數據即可,這樣大大節省了內存空間。
在實際中,為了便於程序移植性等原因,指針實際上存儲的是邏輯地址而非物理地址。
區塊鏈結構本身為一條鏈表,節點為區塊。而傳統鏈表實現,便是通過指針將各個節點串聯起來而稱為最終的鏈。如下便是我們最常見的一個鏈表:
但在區塊鏈系統中,並未采用指針,而是使用了哈希指針
哈希指針
如下圖對於該節點,我們可以看到有兩個指針指向這個節點(實際上為一個),其中P為該節點的地址,H()為該節點的哈希值,該值與節點中內容有關。當節點(區塊)中內容發生改變,該哈希值也會發生改變,從而保證了區塊內容不能被篡改。
在比特幣中,其最基本的數據結構便是一個個區塊形成的區塊鏈。
區塊鏈與鏈表區別1:哈希指針代替普通指針
如圖為一個簡單的區塊鏈。其中,每個區塊根據自己的區塊內容生成自己的哈希值,此外,每個區塊(除創世紀塊)都保存有前一個區塊的哈希值。需要注意的是,本區塊哈希生成依賴於本區塊內容,而本區塊內容中又包含有前一個區塊的哈希值。從而保證了區塊內容不被篡改。
如圖中所示,如果我們想要破壞區塊鏈完整性。篡改B的內容,而C中保存有B的哈希值,所以C也得進行修改。而同樣C后區塊也得修改。而用戶只需要記住最后一個區塊鏈的哈希地址,就可以檢測區塊鏈上內容是否被篡改。
在實際應用中,一整條鏈可能會被切斷分開保存在多個地方。若用戶僅僅具有其中一段,當用到前面部分區塊數據時,直接問系統中其他節點要即可,當要到之后,僅僅通過計算要到的最后一個哈希值和自己保存哈希值是否一致可以判斷所給內容是否確實為區塊鏈上真實的內容。
————————————————
版權聲明:本文為CSDN博主「Sinocifengs」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Mu_Xiaoye/article/details/104316112
