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