點擊上方
Unitimes 可以訂閱哦!

unitimes.media

全球視角,獨到見解

什麼是區塊鏈?

從字面上看
:區塊鏈是由一個個記錄着各種信息的小區塊鏈接起來組成的一個鏈條,類似於我們將一塊塊磚頭疊起來,而且疊起來後是沒辦法拆掉的,每個磚頭上面還寫着各種信息,包括:誰疊的,什麼時候疊的,磚頭用了什麼材質等等,這些信息你也沒辦法修改。

從計算機上看
:區塊鏈是一種比較特殊的分佈式數據庫。分佈式數據庫就是將數據信息單獨放在每臺計算機,且存儲的信息的一致的,如果有一兩臺計算機壞掉了,信息也不會丟失,你還可以在其他計算機上查看到。

區塊鏈是一種分佈式的,所以它是沒有中心點的,信息存儲在所有加入到區塊鏈網絡的節點當中,節點的數據是同步的。節點可以是一臺服務器,筆記本電腦,手機等。

你要知道的是這些節點的存儲的數據都是一模一樣。

區塊鏈特性

去中心化:
因爲它是分佈式存儲的,所以不存在中心點,也可以說各個節點都是中心點,生活中應用就是不需要第三方系統了(銀行、支付寶、房產中介等都屬於第三方)。

開放性:
區塊鏈的系統數據是公開透明的,每個人都可以參與進來,比如租房子,你可以知道這個房子以前的出租信息,有沒出現過問題,當然這裏頭的一些個人私有信息是加密的。

自治性:
區塊鏈採用基於協商一致的規範和協議(比如一套公開透明的算法),然後各個節點就按照這個規範來操作,這樣就是所有的東西都有機器完成,就沒有人情成分。
使得對 \” 人 \” 的信任改成了對機器的信任,任何人爲的干預不起作用。

信息不可篡改:如果信息存儲到區塊鏈中就被永久保存,是沒辦法去改變,至於 51% 攻擊,基本不可能實現。

匿名性:區塊鏈上面沒有個人的信息,因爲這些都是加密的,是一堆數字字母組成的字符串,這樣就不會出現你的各種身份證信息、電話號碼被倒賣的現象。

區塊結構

區塊包含兩個部分:

1、區塊頭(Head):記錄當前區塊的元信息

2、區塊體(Body):實際數據

包含數據如下圖所示:

安裝命令行工具

打開終端,輸入 npm install blockchain-cli -g

終端輸入 blockchain

區塊 (block) 長什麼樣子?

在 blockchian -> 後面輸入 blockchain 或者 bc(簡寫) 查看創始區塊結構。

*Index (Block #): 第幾個區塊 ? (創世區塊鏈的索引爲 0)
*Hash: 當前區塊的 hash 值
*Previous Hash: 上一個區塊的 hash 值
*Timestamp: 當前區塊創建時的時間戳
*Data: 存儲在當前區塊上的交易信息
*Nonce: 在找到有效區塊之前,我們經歷的迭代次數

創世區塊(Genesis Block)

每個區塊鏈都是由一個創始區塊「 Genesis Block」開始。後面你所看到的區塊都依賴於上一個區塊。因此,創始區塊是我們挖取第一個區塊的基礎。

當一個區塊挖礦時都發生了什麼?

我們在 blockchain →中輸入 `mine youdi,挖取我們的第一個區塊。

*Index: o+1 = 1
*Previous Hash: 0000018035a828da0…
*Timestamp: 這個區塊創建的時間
*Data:youdi
*Hash: 00006c10b10baee43
*Nonce: 22269

Hash 是怎麼計算的?

Hash 值是一個十六進制固定長度爲 64 位的唯一的標識。

hash 值是由 index, previous block hash, timestamp, block data, 和 nonce 作爲輸入數據計算而得。

SHA256 算法將根據給出的輸入數據計算出一個唯一的 hash 值,只要輸入值不變,永遠返回相同的結果。

輸入數據爲 youdi 時,它的 hash 值永遠爲 2e4f702517a39db2c3614921b136d05b0bde291b0c5720cc899f6091668599fd

你是否注意到塊哈希中的四個前導 0?

四個前導 0 是有效散列的最低要求。 所需的前導 0 的數量稱爲難度。

下面的方法驗證 hash 難度是否有效。

這就是我們所熟知的 POW 工作量證明系統 – Proof-of-Work system。

什麼是 nonce?

nonce 是一個用來找到滿足條件的 hash 值的數字。

nonce 值一直迭代,直到 hash 值有效爲止。在我們案例中一個有效的 hash 值是最少有 4 個前導 0。找到 nonce 值以滿足合適條件的 hash 值的過程就叫做挖礦。

隨着難度的增加,可能的有效散列數減少。 使用較少可能的有效散列,需要更多的處理能力才能找到有效的散列。

Hash 爲什麼如此重要?

hash 散列很重要是因爲它可以使區塊鏈不能被改變。

如果我們有三個區塊鏈 1 -> 2 -> 3 -> 4 -> 5,當某個人想要試圖修改區塊 A 時,下面幾點將是會發生的幾種情況。

*區塊 3 上的區塊鏈被修改。
*區塊 3 上的 hash 值將發生改變,因爲 hash 值是通過數據計算而得。
*區塊 3 變得無效,因爲它的 hash 值不再具備 4 個前導 0 的條件。
*區塊 4 的 hash 值將發生改變,因爲區塊 3 的 hash 值用來參與計算區塊 4 的 hash 值。
*區塊 4 變得無效,因爲它的 hash 值不再具備 4 個前導 0 的條件。
*區塊 5 的 hash 值將發生改變,因爲區塊 4 的 hash 值用來參與計算區塊 5 的 hash 值。
*區塊 5 變得無效,因爲它的 hash 值不再具備 4 個前導 0 的條件。

如果想要無效的區塊 3、4、5 變得有效,必須從區塊 3 開始再一次重新依次挖礦,當你的區塊鏈足夠長,節點足夠多時,就算你將這條鏈上的區塊鏈改變並且重新挖礦成功,但是因爲超過 50% 的節點的數據和你的節點的數據不一致,你這個被改變的節點的數據也依然無效。

在這個 demo 的演示中,一共有三個節點,我修改了節點 2 的區塊鏈 3 並且重新挖礦取得合法的 hash 值,但是因爲節點 B 和節點 C 中區塊 3 的 hash 值和 A 的不同,所以,我爲了改變數據,必須超過 51% 的節點,這樣會消耗很多的資源,從而保證數據的安全,分佈式保證數據的安全可靠。

來源:簡書

作者:若與

原文鏈接:

https://www.jianshu.com/p/5ec29f9ede88

【文章版權歸原作者所有,其內容與觀點不代表 Unitimes 立 場。轉載文章僅爲傳播更有價值的信息,合作或授權聯繫請發郵件至
[email protected] 或添加微信 unitimes2017】

國際金融科技新媒體和社區平臺

UNITIMES

網址 : unitimes.media

新浪微博:@Unitimes__Media

等你點贊轉發都等出蜘蛛網了