為了瞭解區塊鏈是什麼以及如何運作,在此做了一些研究和討論,希望能分享給大家,讓大家在通往幣圈的路上不孤單.
由於不是本科系出生,也不是相關科系出生,活生生就是一個穩紮穩打的文科生,接下來都會用super 簡單的方式來說明,如果還有疑問的話,都可以提出來一起討論,當作是彼此成長路上互助動力!!
什麼是區塊鏈(Blockchain)?
首先要先把區塊跟鏈分開來說明.以下圖片最大格子叫區塊(Block)、區塊跟區塊之間叫做鏈(Chain)
區塊是指一個有一個包含著Hash(雜湊值)、Timestamp( 時間戳)、Root(Merkle Tree Root(Merkle樹根節點的Hash值))、Nonce(隨機數)四個東西(來自比特幣白皮書),當然後面有經過修正多了其他東西,但我們先在這個框架下進行說明~這邊都懂了,加上去的很快就會理解了.
鏈就是把一個一個區塊串「鏈」在一起的「通道」.
區塊+鏈=區塊鏈(用想像的方式命名,他真的在運作的時候不是長這樣的~)
什麼是Hash(雜湊值)?
雜湊值又稱為哈希函數,直接翻譯hash=哈希這樣由來的.
用人類的指紋的指紋來比喻的話,你的指紋不會因為你的外表或是內在改變,而導致你的指紋改變。哈希函數就是這樣的存在,而且不會有人跟你擁有一樣的指紋,所以也不用擔心遭受到盜用的可能。
而哈希函數最特別的地方是:
1. 無論你增加了什麼內容在裡面,最後產出的函數數值是長度固定而不會相同(十個手指頭(長度固定)+十個指紋(不會相同))
2.輸入進去的值跟你最終產出的結果是無規律的,所以沒辦法往回推算説原本長怎麼樣.
那誰要先幫我們找到想要的範圍呢?就是礦工們!他們用他們的礦工機位你把範圍算出來,第一名算出來的礦工就會得到獎勵,而這個舉動就會被稱為挖礦.
而在一個區塊中,哈希函數有兩個,一個是上一塊板子上的哈希函數,跟你現在所在的區塊板子上的哈希函數,以此類推,下一塊板子上就會有你的哈希函數,和他自己的哈希函數.
什麼是Timestamp( 時間戳)?
就是像郵戳一樣,記載著寄出的時間、收到的時間.
在網路的世界裡面,時間是一件很重要的時間,才可以知道先後順序,你的上一塊區塊跟下一塊區塊,才不會有鏈出現不按照順序的問題.
什麼是Root(Merkle Tree Root(Merkle樹根節點的Hash值))?
在最上面的圖片中,有一個很多節點的Root,就是使用哈希函數來兩個兩個驗算這一個區塊當中的所有交易,是不是都是 1.正確性 2.完整性 這兩點.
可以用想像的方式我們想要驗算這筆交易這樣對不對,我們請了好多的會計們一起幫忙算這筆交易,一個一個對上去,最後確定~哇!這筆帳是對的!可以放行!!
當他把兩個兩個一起合成一個的時候,,一路合併,直到只剩下最後一個.這樣子的做法,還可以把大量的訊息縮縮縮到只剩一個.
什麼是Nonce(隨機數)?
人如其名隨機數就是一個不對改變的數字,Nonce就 是一個不斷改變的隨機數,加入安全散列演算法(Secure Hash Algorithm) 運算,最後算出以 0 為開頭的哈希值,而0越多的哈希值算出的困難度更高,因為會消耗更多的耗能.
根據哈希函數的規定,我們要產出的哈希值都落在同一個範圍裡,我們又不能肯定說他一定在範圍內!
這時候我希望他可以落在我想要的範圍裡,就只能反著做,先給出輸出值(還不是完整體,我們只是先讓他落在範圍裡)
我們要先讓哈希函數的數值在我們想要的範圍裡,之後你再輸入想要的內容,使這個函數又符合你的需求,又能傳遞你要的訊息.
但是要計算出輸出值是落在範圍內,才能開始交易的話,我現在可能第一筆交易都不會完成的......
這時候我們就需要強大的幫手—礦工!!
沒錯他們在幫你算這些哈希函數的時候,就是在挖礦,這些看似極為複雜的函數,都是由礦工們幫我們算出來的.
小結~~
當一塊板子連到下一塊板子的時候,用一個一個鏈串起來的時候(這邊是想像的部分!!)這就是區塊鏈(Blockchain)名字的由來,
實際情況就是你是一塊板子,你的前一塊板子的哈希函數你寫在自己的板子上,而你的哈希函數,除了自己的板子上有寫上外,你的下一塊板子也有寫上你的哈希函數,彼此都是彼此的上下家,一但有人偷偷改了什麼,那他的函數就會發生變化,連帶影響到下一塊板子,以此類推,接下來的板子都會驗證錯誤!!
所以要竄改任何一塊板子的話幾乎是不可能!!
你也沒辦法要安插一個區塊進去,因為大家都是按照時間來排序的,請不要插隊!!
本文章的先分享到這邊,其他的我們下一篇文再繼續分享~,如果有任何疑問都歡迎在下方留言或是私訊粉專喔!!