iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0
Web 3

從 區塊鏈 到 去中心化應用程式(DApp)系列 第 2

區塊鏈基礎 : 加密學 應用於 區塊鏈

  • 分享至 

  • xImage
  •  

加密學 在 區塊鏈 應用

其實完全可以這麼說 區塊鏈是建構於加密學之上的
然而區塊鏈在加密學的使用主要可以分以下兩種技術進行講述

  1. 哈希函數
  2. 非對稱式加密

以下我會根據各自的原理說起,再帶出這項技術在區塊練中的應用。

哈希函數

像是在前一篇討論 區塊與鏈 時,就一直提及哈希這個詞彙。
哈希函數(Hash Function)就是一種數學函數

而這種函數 又具有以下特點

  1. 固定輸出長度
    不管輸入長度為和 輸出長度均相等
  2. 唯一性
    要使不同的值進行運算會獲得一個完全不同的答案
  3. 不可逆性
    正如破壞性的 無法從結果回推輸入值
  4. 抗碰撞:
    這意味著難以找到兩個不同的輸入產生相同的哈希值

坦白說講到這裡大家一定無法理解,當中又以不可逆性我想是最難理解。

因此最好的方式就是舉個例子,我記得當初我上課教授也舉這個。
便是 mod(餘數)運算

4 % 3 = 1
100 % 3 = 1
*此處%代表取餘數運算

在上述例子中,不論輸入是 4 或 100 輸出都是 1。
即代表我無法單純以輸出反推輸入,這運算具有破壞性、不可逆性

因此哈希函數就是類似這種,無法透過結果推出原始輸入的函式。

若對於哈希函數算法可以去查詢其內部如何實現。
此處便不繼續討論其計算方式。

備註:
此處僅為介紹哈希函數的不可逆性,mod (取餘數)本身並非哈希函數(不符合抗碰撞性) 非常容易碰撞。

哈希函數 應用於 區塊鏈

1. 區塊間 相連的數值

每個區塊都會有其哈希值,
就是透過計算 "區塊頭" 將其連續丟進哈希函數運算後所獲的值(雙重哈希)。

然後循而往復,再將這個值當作下個 "區塊頭" 中的 "前區塊哈希值"。

2. Markle root 計算

先前有提過 Markel root 與交易數據息息相關
便是因為其計算方式

  1. 將區塊內每筆數據 分別進行哈希運算
  2. 兩兩配對進行哈希 若無法配對則自己進行哈希
  3. 持續上一步驟直到剩餘一個值 便是 Markle root

舉例來說:

總共4筆交易

發送地址 接收地址 費用 給礦工手續費
A B 10 ETH 1 ETH
B C 10 ETH 1 ETH
C D 10 ETH 1 ETH
D A 10 ETH 1 ETH
#首先分別計算每筆哈希值
HASH1 = Hash(A + B + 10 ETH + 1 ETH)
HASH2 = Hash(B + C + 10 ETH + 1 ETH)
HASH3 = Hash(C + D + 10 ETH + 1 ETH)
HASH4 = Hash(D + A + 10 ETH + 1 ETH)

#兩兩配對再次進行哈希 若有餘數則單獨進行哈希
HASH12 = HASH(HASH1 + HASH2)
HASH34 = HASH(HASH3 + HASH4)

#重複上一步驟 持續到剩餘一個值 即是Markle root
HASH1234 = HASH(HASH12 + HASH34)

#推算得知 Markle root
Markel root = HASH1234

3. 交易紀錄 哈希計算

透過將交易紀錄進行哈希 就可以方便未來查詢到該筆紀錄。

非對稱式加密

非對稱式加密,是一種加密技術。

它使用一對密鑰來執行操作,
其中一個是公開的(公鑰),而另一個是私有的(私鑰)。

而這種加密方式有以下特色

  1. 公鑰加密 私鑰解密
  2. 私鑰簽名 公鑰認證

對於以上兩種模式進行解釋,

公鑰加密 私鑰解密
對於想隱藏的內容 透過公鑰進行加密

不一定會知道是誰加密的 但只有擁有私鑰的人可以得知內容

私鑰簽名 公鑰認證
對於公開的內容 透過私鑰進行簽名

可以透過公鑰確認是否為私鑰簽署的 內容大家都知道

其實現方式與邏輯原理這邊便不再展開。
若對其有興趣可以再透過自行學習獲得其更深入知識。

非對稱式加密 應用於 區塊鏈

哇! 光上述兩個特性就知道這算法有多方便了。
現在來仔細看其應用的內容

  1. 交易簽名
    交易發生時 都會記錄甚麼
發送地址 接收地址 費用 給礦工手續費 交易簽名
透過這些紀錄 
礦工便可計算交易簽名是否為發送地址的所簽署
進而判斷該筆交易是否合法
  1. 身分驗證
    用戶可以使用自己的私鑰來證明他們擁有特定的公鑰
    進而驗證他的身分

  2. 加密貨幣錢包
    用戶的私鑰用於簽署交易,而公鑰用於接收資金。

結言

坦白說,我今天寫這篇頭超痛。
看完這篇會感到很散是正常,因為就連我自己寫得也覺得很散。

感覺整篇就講了一堆理論這樣~~~
不過我認為這段真的就是區塊鏈的底層知識吧?

希望看完這篇後能理解

  1. 哈希函數
  2. 非對稱式加密
  3. 二者的基本應用

下回預告

看完這篇覺得超暈 沒關係

這就是戀愛的感覺~~~ 哈哈哈

下篇將會更有系統性的介紹 區塊鏈如何運行

下回 "區塊鏈基礎 : 區塊鏈 計算與運行"


上一篇
區塊鏈初訪 : 區塊與鏈 分開來看
下一篇
區塊鏈基礎 : 區塊鏈 計算與運行
系列文
從 區塊鏈 到 去中心化應用程式(DApp)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言