《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 一文讀懂區塊鏈的工作方式

一文讀懂區塊鏈的工作方式

2019-06-06

  讓我們通過構建一個應用程序來展示區塊鏈是如何工作的。根據維基百科的描述,區塊鏈是:一種分布式數據庫,用于維護不斷增長的記錄列表,稱為塊。這聽起來似乎不錯,但它到底是如何工作的?

  為了說明區塊鏈如何工作,我們將使用名為 Blockchain CLI 的開源命令行界面。

  我還在這里構建了一個 基于瀏覽器的版本 。

5cf75b9ec2b5a-thumb.png

  安裝命令行界面版本

  如果還沒有 Node.js ,先安裝一下。

  然后在終端中運行以下命令:

  # Clone this repository

  $ git clone https://github.com/seanseany/blockchain-cli

  # Go into the repository

  $ cd blockchain-cli

  # Install dependencies

  $ npm install

  # Run the app

  $ npm start

  你應該看到,歡迎使用Blockchain CLI!和區塊鏈提示準備好了,可以接受命令。

  區塊看起來像什么?

  要查看當前的區塊鏈,請在命令提示符中輸入blockchain或bc。你應該看到如下圖所示的塊。

5cf75b9e92559-thumb.png

  Block的索引:表示它是哪個塊,Genesis塊的索引為0。

  哈希:表示塊是否有效。

  上一個哈希:表示前一個塊是否有效。

  時間戳:表示塊何時添加。

  數據:塊上存儲了哪些信息。

  Nonce:在找到有效塊之前,我們經歷了多少次迭代?

  Genesis Block

  每個區塊鏈都將從Genesis Block開始。正如你稍后將看到的,區塊鏈上的每個塊都依賴于前一個塊。因此,需要Genesis塊來挖掘我們的第一個塊。

  開采新區塊時會發生什么?

  讓我們來看看我們的第一塊。輸入 mine freeCodeCamp 進入提示。

  區塊鏈查看區塊鏈上最新的索引和前一個哈希塊。在這種情況下,Genesis塊是最新的塊。

  索引:o + 1 = 1

  上一哈希:0000018035a828da0 ……

  時間戳:添加塊時間。

  數據:freeCodeCamp

  哈希:??

  Nonce:??

  如何計算哈希值?

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

  通過將索引,先前塊哈希,時間戳,塊數據和隨機數作為輸入來計算哈希。

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

  在給定這些輸入的情況下,SHA256算法將計算唯一的哈希值。相同的輸入將始終返回相同的哈希值。

  是否注意到塊哈希中的四個前導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?

  隨機數是用于查找有效哈希的數字。

  let nonce = 0;let hash;let input;

  while(!isValidHashDifficulty(hash)) {

  nonce = nonce + 1;

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

  hash = CryptoJS.SHA256(input)

  }

  nonce迭代直到哈希有效。在我們的例子中,有效哈希至少有四個前導0。查找與有效哈希相對應的隨機數的過程是挖掘。

  隨著難度的增加,可能的有效哈希的數量減少。利用較少的有效哈希值,查找有效哈希需要更多處理能力。

  為什么這很重要?

  這很重要,因為它使區塊鏈不變。

  如果我們有以下區塊鏈A→B→C,并且有人想要更改塊A上的數據。這是會發生的事情:

  塊A上的數據更改。

  塊A的哈希值發生變化,因為數據用于計算哈希值。

  塊A變為無效,因為其哈希不再具有四個前導0。

  塊B的哈希值發生變化,因為塊A的哈希值用于計算塊B的哈希值。

  塊B變為無效,因為其哈希不再具有四個前導0。

  塊C的哈希值發生變化,因為塊B的哈希值用于計算塊C的哈希值。

  塊C變為無效,因為其哈希不再具有四個前導0。

  改變塊的唯一方法是再次挖掘塊,然后是所有塊。由于總是添加新塊,因此幾乎不可能改變區塊鏈。

  我希望這個教程對你有所幫助!

  如果想查看演示版的網絡版,請訪問http://blockchaindemo.io

  分享一些比特幣、以太坊、EOS、Fabric等區塊鏈相關的交互式在線編程實戰教程:

  java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Java代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。

  php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在Php代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。

  c#比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈存儲、去中心化共識機制、密鑰與腳本、交易與UTXO等,同時也詳細講解如何在C#代碼中集成比特幣支持功能,例如創建地址、管理錢包、構造裸交易等,是C#工程師不可多得的比特幣開發學習課程。

  java以太坊開發教程,主要是針對java和android程序員進行區塊鏈以太坊開發的web3j詳解。

  python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。

  php以太坊,主要是介紹使用php進行智能合約開發交互,進行賬號創建、交易、轉賬、代幣開發以及過濾器和交易等內容。

  以太坊入門教程,主要介紹智能合約與dapp應用開發,適合入門。

  以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。

  ERC721以太坊通證實戰,課程以一個數字藝術品創作與分享DApp的實戰開發為主線,深入講解以太坊非同質化通證的概念、標準與開發方案。內容包含ERC-721標準的自主實現,講解OpenZeppelin合約代碼庫二次開發,實戰項目采用Truffle,IPFS,實現了通證以及去中心化的通證交易所。

  C#以太坊,主要講解如何使用C#開發基于.Net的以太坊應用,包括賬戶管理、狀態與交易、智能合約開發與交互、過濾器和交易等。

  EOS入門教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智能合約開發與部署、使用代碼與智能合約交互等核心知識點,最后綜合運用各知識點完成一個便簽DApp的開發。

  深入淺出玩轉EOS錢包開發 ,本課程以手機EOS錢包的完整開發過程為主線,深入學習EOS區塊鏈應用開發,課程內容即涵蓋賬戶、計算資源、智能合約、動作與交易等EOS區塊鏈的核心概念,同時也講解如何使用eosjs和eosjs-ecc開發包訪問EOS區塊鏈,以及如何在React前端應用中集成對EOS區塊鏈的支持。課程內容深入淺出,非常適合前端工程師深入學習EOS區塊鏈應用開發。

  Hyperledger Fabric 區塊鏈開發詳解 ,本課程面向初學者,內容即包含Hyperledger Fabric的身份證書與MSP服務、權限策略、信道配置與啟動、鏈碼通信接口等核心概念,也包含Fabric網絡設計、nodejs鏈碼與應用開發的操作實踐,是Nodejs工程師學習Fabric區塊鏈開發的最佳選擇。

  Hyperledger Fabric java 區塊鏈開發詳解 ,課程面向初學者,內容即包含Hyperledger Fabric的身份證書與MSP服務、權限策略、信道配置與啟動、鏈碼通信接口等核心概念,也包含Fabric網絡設計、java鏈碼與應用開發的操作實踐,是java工程師學習Fabric區塊鏈開發的最佳選擇。


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产伦一区二区三区免费 | 免费黄色三级 | 成人在线午夜 | 美国一级毛片a | 最近2019好看中文字幕 | 日韩精品亚洲专区在线观看 | 中文天堂 | 欧美fxxxx性高清 | 狠狠色噜噜狠狠色综合久 | 日日射夜夜 | 小黄漫画激情四射在线观看 | www.av欧美| 天天爽夜夜 | 羞羞人成午夜爽爽影院 | 国产综合第一页在线视频 | 日韩www视频 | 激情网站网址 | 天天色天天射天天操 | 成 人 黄 色 视频165 | 日本一本一区二区 | 人人人干 | 欧美巨大另类极品video | 亚洲午夜精品久久久久久人妖 | 青草色视频| 日韩 欧美 中文字幕 不卡 | 九九精品久久 | 91成人免费视频 | 99在线免费 | 亚洲免费看片 | 黑人videovideosex 黑人操日本人视频 | 妞干网欧美 | 国产在线视频国产永久视频 | 天天射综合 | 色你懂的| 92国产福利午夜757小视频 | 巨尻在线播放 | 一级免费黄色大片 | 香港经典三级成人xxx | 视频在线观看网站免费 | 韩国xxxx色视频在线观看 | 99riav精品国产 |