區塊鏈原理最清晰最直觀的解釋

2022-01-06 Linux愛好者

(點擊上方公眾號,可快速關注)

編譯:伯樂在線 - 孫騰浩

如有好文章投稿,請點擊 → 這裡了解詳情

(A minimal blockchain command-line interface.)

維基百科上對區塊鏈的描述:

維護不斷增長的記錄(稱作區塊)的分布式資料庫。

聽上去很簡單,但到底是怎麼回事呢?

我們用一款開源命令行界面 Blockchain CLI 來詳細說明區塊鏈。我也做了一個瀏覽器可以訪問的在線版。


安裝命令行界面

首先請確保安裝 Node.js

然後在終端裡運行下面命令:

npm install blockchain-cli -g

blockchain

你將看到 👋 Welcome to Blockchain CLI! 和 blockchain → 提示已準備好接受命令。

區塊是什麼樣子的?

你可以在命令行中輸入 blockchain 或 bc 來查看你當前的區塊鏈。你將看到下圖類似的區塊。


初始區塊

每個區塊鏈都會以一個 🏆 Genesis Block 作為開始。你接下來將會看到每個區塊都關聯前一個區塊。所以我們開採第一個區塊前,要有初始區塊。

當一個新的區塊被開採出來會發生什麼?

讓我們來開採我們的第一個區塊,在提示框輸入 mine freeCodeCamp♥︎ 命令。 區塊鏈根據最後一個區塊生成當前索引和前個哈希。我們現在的區塊鏈最後一個區塊就是初始區塊。

索引:o+1 = 1

前個哈希:0000018035a828da0…

時間戳:區塊什麼時候添加的?

數據:freeCodeCamp❤

哈希:??

隨機數(Nonce):??


哈希值如何計算?

哈希值是固定長度的數值,用來標識唯一數據。

哈希通過將索引、前個哈希、時間戳、數據、隨機數作為輸入後計算得出。

CryptoJS.SHA256(index + previousHash + timestamp + data + nonce)

SHA256 算法通過給定的輸入,計算出一個唯一的哈希。相同的輸入總會生成相同的哈希。

你注意到哈希開頭的四個 0 了嗎?

開頭的四個 0 是有效哈希的基本要求。開頭 0 的個數被稱為難度值(difficulty)。

function isValidHashDifficulty(hash, difficulty) {

  for (var i = 0, b = hash.length; i < b; i ++) {

      if (hash[i] !== '0') {

          break;

      }

  }

  return i >= difficulty;

}

這就是眾所周知的工作量證明系統(Proof-of-Work)。

什麼是隨機數?

隨機數是用來尋找有效哈希的一個數字。

let nonce = 0;

let hash;

let input;

while(!isValidHashDifficulty(hash)) {     

  nonce = nonce + 1;

  input = index + previousHash + timestamp + data + nonce;

  hash = CryptoJS.SHA256(input)

}

隨機數不斷迭代,直到哈希有效。在我們的例子中,有效的哈希值至少要四個 0 開頭。尋找有效哈希對應隨機數的過程就稱為開採(挖礦)。

隨著難度值的提升,有效哈希的數量逐步減少,我們需要投入更多資源來找到一個有效哈希。

為什麼這很重要?

因為它確保了區塊鏈不可變。

如果我們有一個這樣的區塊鏈 A → B → C,有人想修改區塊 A 上的數據。會發生下面情況:

修改區塊 A 上的數據。

區塊 A 的哈希變動,因為計算哈希所用的數據變化了。

區塊 A 無效,因為它的哈希不是四個 0 開頭。

區塊 B 的哈希變動,因為計算區塊 B 的哈希所用到的區塊 A 的哈希值變化了。

區塊 B 無效,因為它的哈希不是四個 0 開頭。

區塊 C 的哈希變動,因為計算區塊 C 的哈希所用到的區塊 B 的哈希值變化了。

區塊 C 無效,因為它的哈希不是四個 0 開頭。

修改一個區塊的唯一方式就是重新開採這個區塊以及它之後的所有區塊。因為新的區塊不斷增加,基本不可能修改區塊鏈。

我希望本文對你有幫助。

如果你想 checkout 在線版本的例子,移步 http://blockchaindemo.io

看完本文有收穫?請轉發分享給更多人

關注「程式設計師的那些事」,提高編程技能

相關焦點

  • 區塊鏈到底是什麼?這是區塊鏈最通俗易懂的解釋
    區塊鏈可以解決上面的3個問題。 區塊鏈是什麼 區塊鏈是一個分布式的資料庫。>連結在一起,構成「區塊鏈」。以比特幣(比特幣用的是區塊鏈技術)為例,從比特幣發行至今的交易信息均被記錄在區塊鏈上,通過區塊鏈瀏覽器可以查詢。
  • 13個最常見的區塊鏈神話解釋!
    區塊鏈的潛在應用很多:它已經被用於從轉移資金和安排音樂家演出到戰鬥世界飢餓的所有事情。神話1.有一個獨特的區塊鏈考慮到區塊鏈的討論方式,假設只有一個區塊鏈,你會被原諒。事實上,到目前為止,閱讀這篇文章,你可能會有同樣的印象。現實情況是,有很多區塊鏈,每個區塊鏈都有不同的用途。
  • 區塊鏈核心知識丨Hash算法原理
    關注「區鏈數科」,讓你從入門到精通區塊鏈!上一篇文章我們講解了「要了解區塊鏈一定要清楚區塊鏈技術的幾點技術原理!」今天我們來講解區塊鏈中「Hash算法」的基本原理。簡單解釋:哈希(Hash)算法,即散列函數。它是一種單向密碼體制,即它是一個從明文到密文的不可逆的映射,只有加密過程,沒有解密過程。同時,哈希函數可以將任意長度的輸入經過變化以後得到固定長度的輸出。哈希函數的這種單向特徵和輸出數據長度固定的特徵使得它可以生成消息或者數據。
  • 區塊鏈是個啥?A股最知道了
    比特幣的價格在突破20000美元後開始大幅回落,最新的價格已經跌破13000美元,不過,比特幣的底層技術區塊鏈最近卻在資本市場火了,凡是跟區塊鏈技術沾上邊或者「傳緋聞」的公司都出現了大幅上漲。  上周A股區塊鏈概念行情火爆,連續兩天均有超過10家區塊鏈概念公司股價漲停。據統計,目前涉及區塊鏈的上市公司有37家。
  • 區塊鏈書單:8位區塊鏈專家向你推薦10本藏書
    區塊鏈正在成為當下最具有關注度的技術。從創業者到投資人,從專業技術人員到普通用戶,圍繞區塊鏈的討論和爭議正在成為大家追逐的焦點。 2月26日,《人民日報》更是以接近整版的篇幅,刊發了關於區塊鏈的兩篇文章,在《三問區塊鏈》中,以 「什麼是區塊鏈」、「區塊鏈有什麼用」、「區塊鏈會成為新風口嗎」三個角度對這一新技術及趨勢進行了科普和解讀。
  • 如何用最通俗的語言解釋區塊鏈?
    區塊鏈是比特幣的核心技術,是一種管理持續增長的、按序整理成區塊並受保護以防篡改的交易記錄的分布式帳本資料庫。說明:分布式記帳的邏輯是只增加,不修改。共識機制:區塊鏈或分布式帳本技術應用的一種無須依賴中央機構鑑定和驗證某一數值或交易的機制。共識機制是所有區塊鏈盒分布式帳本應用的基礎。節點:保存帳本副本的共識網絡貨伺服器的成員或系統,並可擔任不同角色,如發出、驗證、接受和通知等。
  • 如何向菜鳥解釋區塊鏈?
    導讀:區塊鏈技術的文章泛濫成災,但大多讀起來晦澀難懂。這篇在知乎上點讚量達到1萬+的文章,就有點意思了。作者寫這篇文章初衷正是苦惱於不知該如何跟弱智室友解釋區塊鏈。作者來自浙江大學 • 竺可楨學院、紐約大學 (New York University) • 計算機科學學院,自稱區塊鏈黑客,他的文章會迅速讓你感覺區塊鏈很弱智的樣子。
  • 區塊鏈學堂|什麼是知識圖譜
    但是這些信息點必須表意清晰,確保人類和計算機能夠對其進行高效的處理且不會產生歧義。同時,這些信息點必須相互關聯,一個信息點能為另一個信息點提供語境,或是起到解釋作用。比如在一個電影相關的知識圖譜中會有許多代表電影名稱、導演、演員等相關信息的節點。一個電影節點可以和相關導演及演員節點相關聯。
  • 1文看懂區塊鏈原理與形成機制
    今天分享下區塊鏈原理。先看第1個話題:分布式帳本。我們通過以下3點來了解一下: 第1點,帳本反映可以在多個節點、不同地理位置,或者多個機構組成的網絡裡進行分享的資產資料庫。這是什麼意思?區塊鏈技術它應該是一個網絡概念,但分布式帳本是一個會計學概念,分布式帳本這個概念在上個世紀90年代就出現了,不過在那個時候,無論是計算機技術還是人工智慧技術,都不能讓他得到實現。直到比特幣誕生,區塊鏈誕生分布式帳本,這種會計學思想才真正的得以實現。好,說回來,網絡裡唯一的真實的帳本是怎樣生成的呢?
  • Comunion 區塊鏈深度學習系列|區塊鏈進階原理:構成
    本系列內容包含:基本概念及原理、密碼學、共識算法、錢包及節點原理、挖礦原理及實現。區塊結構構成每個區塊主要包括區塊頭(下圖灰色的部分)和交易主體(下圖橙色的部分)兩部分。整個區塊頭中內容包含:第一個是前序區塊的哈希,這樣區塊才能跟前面區塊鏈起來,形成一個鏈;第二個是時間戳,表明區塊是在什麼時間被挖出來的;第三個是難度的目標值,礦工挖礦的過程,其實就是在不斷的計算挖出來的區塊是否和難度值相匹配;第四個Nonce 是一個隨機數;最後 Merkle root ,記錄的是整個包含在當前區塊中所有交易的交易哈希
  • 區塊鏈加密機制的不同算法及其原理解析
    談到不同的共識機制,就有很多話題可以說了,甚至可以說區塊鏈的發展就一直伴隨著共識機制以及算法的改進,那我們就來介紹一下不同的共識機制、算法及其原理:其實關於共識機制和算法,現在經常被混於一談,但是要分辨開來的話,那就是機制主要是指POW,POS與DPOS,算法則主要指的是POW下的各種算法。
  • 區塊鏈比特幣是什麼意思通俗的解釋
    區塊鏈比特幣是什麼意思通俗的解釋;好快科技;專業區塊鏈比特幣應用APP區塊連開發;區塊鏈是最近的熱門新聞。在不久之前的一段時間,處於工作年齡的人都在學習分析課程。人們的收件箱裡充斥著各種提供分析課程、學位和文憑的機構和組織的電子郵件。
  • 最通俗的解釋來了,區塊鏈到底是個啥?你敢不敢用?
    這個詞叫「區塊鏈」最近「區塊鏈「又被公開點名。  「區塊鏈」到底是啥  從學術角度來解釋,區塊鏈是分布式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式。  區塊鏈本質上是一個去中心化的資料庫。
  • 區塊鏈記帳原理
    區塊鏈(1.0)是一個基於密碼學安全的分布式帳本,是一個方便驗證,不可篡改的帳本。 通常認為與智能合約相結合的區塊鏈為區塊鏈2.0, 如以太坊是典型的區塊鏈2.0 很多人只了解過比特幣,不知道區塊鏈,比特幣實際是一個使用了區塊鏈技術的應用,只是比特幣當前太熱,把區塊鏈技術的光芒給掩蓋了。區塊鏈才是未來,期望各位開發人員少關心幣價,多關心技術。
  • 為了解釋區塊鏈,阿里工程師給兒子畫了一本童話書
    為了解釋區塊鏈,阿里工程師給兒子畫了一本童話書 作者:螞蟻金服 發布時間:
  • 用專業術語來解釋什麼是比特幣和區塊鏈。
    什麼是比特幣和區塊鏈。近這兩個概念特別火,對於非技術和金融行業的同學們來說,即使查閱專業文獻資料,理解起來還是有一定難度。相信大家心裡都有一些疑問,這篇文章儘量少用專業術語來解釋什麼是比特幣和區塊鏈。比特幣和區塊鏈是什麼關係? 什麼是比特幣?如果簡單理解區塊鏈的概念?比特幣是怎麼產生的?什麼是比特幣挖礦?
  • 區塊鏈最通俗易懂的解釋,看了後連小白都懂了
    剛看新聞,看到國家提倡大力發展區塊鏈。說實在話,區塊鏈這個詞我很早聽到過,但一直對它似懂非懂,不知道是不是有人也跟我一樣。今天看了新聞,決定搞清楚它倒裡是什麼?於是查了些資料,再加入了一些自己的理解,希望對跟我一樣的小白有所幫助。一:首先來說什麼是區塊鏈。
  • 區塊鏈
    原文連結:「區塊鏈+」教育的發展現狀及其應用價值研究區塊鏈技術被認為是網際網路誕生以來人類社會最重要的發明。其正在深刻影響全球治理,經濟發展,金融以及教育等機構或服務的運營理念,組織和業務模式,尤其是在銀行,證券,保險,公證,音樂,分布式存儲,物聯網等行業和領域得到了積極實踐與應用。
  • 餐飲區塊鏈已開啟供應鏈革命,區塊鏈和餐飲還能怎麼結合?
    筷玩思維(ID:kwthink)認為,當我們談論一項技術的時候,始終繞不開的兩個問題是:技術原理和實際應用,本文會對區塊鏈的技術原理進行簡單梳理,在此基礎之上,也全面整理了餐飲區塊鏈現有的一些應用,比如在供應鏈等層面,未來,還有可能運用於餐飲的營銷、物流、運營、招商,甚至是系統建設中。
  • (知識普及)幣鏈 | 區塊鏈中常用的名詞解釋
    區塊鏈中常用的名詞解釋①礦工: 在比特幣網絡中,競爭計算能獲得新生的比特幣獎勵,很像開採埋在地底下的礦物的過程形象地叫做「挖礦」,競爭挖礦的人或組織,叫「礦工」。②算力:可以簡單理解為計算能力。⑤區塊:比特幣網絡是一個巨大的帳本平均每10分鐘網絡誕生帳本的一頁,我們叫它「區塊」⑥區塊鏈: 每個區塊被打.上時間戳, 按照嚴格的先後順序,連接起來, 叫「區塊鏈 」精選區