區塊鏈的工作原理

分享
欣賞這篇文章
00:00 / 00:00

區塊鏈的核心部分就是挖礦演算法,接來下我們就以比特幣的演算法為例。它被稱為SHA-256,也就是“256位元安全散列演算法”的縮寫,它可接受任何內容的輸入,包括文本、數位,或者任何長度的電腦檔。而產生輸出稱為“雜湊”,且每次長度都相同為256位機器代碼。

同樣的輸入將得到同樣的輸出,並不會隨機。但如果你對輸入進行了微小的改變,則輸出會完全不同。

而且該演算法也被稱為單向函數,這就意味著你不能根據輸出來計算出輸入。你只能對輸入進行猜測,然而你猜對的幾率是2^256分之一,這幾乎是不可能的,換句話該演算法是安全的。

現在我們已經知道什麼是演算法,那接下來我們就用一個簡單的交易示例來演示區塊鏈是如何運行的。

現有Alice和Bob兩個人,且我們知道他們倆的比特幣餘額。我們假設Alice欠Bob2個比特幣。

Alice如果想要向Bob發送那兩枚比特幣,則Alice需要向網路中的礦工們廣播她想要進行交易的消息。

在廣播中,Alice將Bob的公共地址、她想要發送的比特幣數量,以及數位簽章和她公開金鑰提供給礦工們。該簽名是通過Alice的私密金鑰生成的,由此礦工們就可以驗證那些比特幣是屬於Alice的,且她也想要進行交易。

一旦礦工確定該交易是有效的,則他們就會將該交易與其他交易一起納入到區塊中,並嘗試對該區塊進行挖礦。且區塊中的這一輸入是通過SHA-256演算法來完成的。而輸出則需要從具體的0's數值開始,以便才能被認為有效。具體0's的數值則將根據所謂的“difficulty(難度)”來決定,而“difficulty”也將根據網路中的計算能力進行更改。

想要根據最開始要求的0's數值來生成輸出雜湊值,礦工則需要在區塊中添加一個“noncee number(亂數)”。由於輸入的很小改變會完全更改輸出,所以礦工要不斷隨機nonces,直到找到一個有效的輸出雜湊值為止。

如果該區塊已經被挖掘,則該礦工就會向其他礦工們廣播該新的已被挖掘的區塊。之後礦工們就開始檢查該區塊以確保是有效的,之後再將該區塊添加到他們的區塊鏈副本中,至此交易就完成了。並且礦工也需要在已完成的區塊中納入前一區塊的輸出雜湊值,以此才能使得所有的區塊都相互連接,而區塊相互連結的線性鏈也就被命名為區塊鏈。因為系統是基於信任工作的,所以這一過程尤為重要。

每一位礦工的電腦上都有他自己的區塊鏈副本,且所有人都相信投入計算工作最多的區塊鏈,就將成為最長的區塊鏈。如果一位元礦工更改了之前區塊中交易,則該區塊的輸出雜湊值也將改變,而這就導致了其後的所有雜湊值都會改變(因為區塊是通過雜湊值連結的)。該礦工就不得不重新開始所有的工作,以便於其他人接收到正確的區塊鏈。因此,如果一位礦工想要作弊,則他的算力就必須要超過網路計算能力的50%,這幾乎是不可能的。而網路中類似的攻擊也就被稱為51%攻擊。

為了生成區塊而使電腦運行的模式被稱為工作量證明(PoW)。也存在其他模式列入權益證明(PoS),而該模式下則不需要太多的計算能力,這就意味著只需要相對較少的電力,並且該模式也將擴展到更多的用戶。

以上就是區塊鏈的基本原理!



Loading