摘要:我同時也建立了一個基于瀏覽器的版本安裝命令行工具在此之前請先安裝然后在你的命令行中運行以下指令你應該會看到和一個提示。
原文:How does blockchain really work? I built an app to show you.
作者:Sean Han
譯者:JeLewine
根據(jù)維基百科,區(qū)塊鏈是:
一個用于維護不斷增長的記錄列表的分布式數(shù)據(jù)庫,我們稱之為區(qū)塊鏈。
這聽起來很棒,那它是如何工作的呢?
為了說明區(qū)塊鏈,我們將會使用一個名為Blockchain CLI的開源命令行工具。
我同時也建立了一個基于瀏覽器的版本
安裝命令行工具在此之前請先安裝Node.js
然后在你的命令行中運行以下指令:
npm install blockchain-cli -g blockchain
你應該會看到? Welcome to Blockchain CLI!和一個blockchain →提示。這說明已經(jīng)準備好了。
區(qū)塊長什么樣?想要查看當前的區(qū)塊鏈,你需要在命令提示行下輸入blockchain或者bc。你應該會看到像下面的圖片一樣的一個區(qū)塊。
Index:是哪一個區(qū)塊(創(chuàng)世塊的索引是0)?
Hash:塊是否有效?
Previous Hash:前一個區(qū)塊是否有效?
Timestamp:什么時候添加的區(qū)塊?
Data:什么信息存儲在區(qū)塊上?
Nonce:在找到有效區(qū)塊之前,我們進行了多少次迭代?
創(chuàng)世塊每一個區(qū)塊鏈都是從? Genesis Block開始的。正如你們將要在后面看到的,區(qū)塊鏈上的每一個區(qū)塊都依賴于前一個區(qū)塊。所以,需要創(chuàng)世塊來挖出我們的第一個區(qū)塊。
當一個新的區(qū)塊被開采時會發(fā)生什么?
讓我們挖出我們的第一個區(qū)塊。在命令行中輸入mine freeCodeCamp??。
區(qū)塊鏈查看鏈上最新的區(qū)塊來獲取index和previous hash。在這個案例下創(chuàng)世塊是最新的區(qū)塊。
Index:0+1=1
Previous Hash:0000018035a828da0…
Timestamp:區(qū)塊被添加的時間
Data:freeCodeCamp?
Hash:???
Nonce:???
Hash是如何計算的?哈希值是唯一標識數(shù)據(jù)的固定長度的數(shù)值。
Hash是通過將Index、Previous Hash、Timestamp、Data和Nonce作為輸入值來計算的。
CryptoJS.SHA256(index + previousHash + timestamp + data + nonce)
SHA256算法將會依據(jù)這些輸入計算出一個唯一Hash值。同樣的輸入總是會返回同樣的結(jié)果。
你是否注意到區(qū)塊Hash中的四個前導0?四個前導0是一個有效Hash的最低要求。所需前導0的數(shù)量被稱之為難度
function isValidHashDifficulty(hash, difficulty) { for (var i = 0, b = hash.length; i < b; i ++) { if (hash[i] !== "0") { break; } } return i >= difficulty; }
這也被稱為工作證明系統(tǒng)
Nonce是什么?Nonce是用來查找一個有效Hash的次數(shù)。
let nonce = 0; let hash; let input; while(!isValidHashDifficulty(hash)) { nonce = nonce + 1; input = index + previousHash + timestamp + data + nonce; hash = CryptoJS.SHA256(input) }
Nonce迭代到直到Hash有效。在我們的案例中,一個有效的Hash至少要擁有4個前置0。查找與有效Hash對應的Nonce的過程就是挖礦。
隨著難度的增加,可能的有效Hash數(shù)量就會減少。伴隨著有效Hash的減少,我們需要更強的算力來查找有效Hash。
為什么這么重要?這些機制非常重要,它們使區(qū)塊鏈不可變。
如果我們有這么一個區(qū)塊鏈“A->B->C”,而且有一個人想要改變區(qū)塊A上的數(shù)據(jù)。那么會發(fā)生什么呢?
區(qū)塊A上的數(shù)據(jù)改變了。
區(qū)塊A的hash改變了,因為數(shù)據(jù)被用來計算hash。
區(qū)塊A失效了,因為它的hash不再有4個前導0。
區(qū)塊B的hash改變了,因為區(qū)塊A的hash被用來計算區(qū)塊B的hash。
區(qū)塊B失效了,因為它的hash不再有4個前導0。
區(qū)塊B的hash改變了,因為區(qū)塊C的hash被用來計算區(qū)塊B的hash。
區(qū)塊C失效了,因為它的hash不再有4個前導0。
改變一個區(qū)塊的唯一方法就是將這個區(qū)塊重新挖一遍,接下來是所有的區(qū)塊。由于總是有新的區(qū)塊被添加,因此改變區(qū)塊幾乎是一件不可能的事。
我希望這個教程能夠?qū)δ兴鶐椭?/p>
如果您想要查看網(wǎng)頁版的演示,請出門右轉(zhuǎn)http://blockchaindemo.io
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/88517.html
摘要:我同時也建立了一個基于瀏覽器的版本安裝命令行工具在此之前請先安裝然后在你的命令行中運行以下指令你應該會看到和一個提示。 原文:How does blockchain really work? I built an app to show you.作者:Sean Han譯者:JeLewine 根據(jù)維基百科,區(qū)塊鏈是: 一個用于維護不斷增長的記錄列表的分布式數(shù)據(jù)庫,我們稱之為區(qū)塊鏈。 這聽...
摘要:前端日報精選使用實現(xiàn)和交互的彈幕效果類型檢測理解的閉包深入理解之代理和反射,和它們在之中的優(yōu)先級中文譯區(qū)塊鏈是如何工作的用演示知乎專欄譯怎樣處理移動端對圖片資源的限制掘金技術(shù)周刊的正則表達式掘金開發(fā)環(huán)境搭建掘金與復雜業(yè)務組件的 2017-09-11 前端日報 精選 使用canvas實現(xiàn)和HTML5 video交互的彈幕效果【JS】類型檢測理解 JavaScript 的閉包深入理解ES6...
摘要:區(qū)塊鏈技術(shù)通過給數(shù)字信息標記時間戳,使其無法回溯或篡改。因此,除創(chuàng)世區(qū)塊外,所有區(qū)塊均含有上一個區(qū)塊的哈希值,這是保證區(qū)塊鏈安全的關鍵技術(shù),下面將講解它的工作原理。它允許基于區(qū)塊鏈技術(shù)的金融交易,被用于貨幣和支付。 原文鏈接:https://www.guru99.com/blockc... 一、什么是區(qū)塊鏈? 簡而言之,區(qū)塊鏈就是由許多包含信息的區(qū)塊組成的鏈條。區(qū)塊鏈技術(shù)通過給數(shù)字信...
閱讀 3745·2021-11-19 09:56
閱讀 1566·2021-09-22 15:11
閱讀 1224·2019-08-30 15:55
閱讀 3433·2019-08-29 14:02
閱讀 3046·2019-08-29 11:07
閱讀 496·2019-08-28 17:52
閱讀 3233·2019-08-26 13:59
閱讀 492·2019-08-26 13:53