区块链原理最清晰最直观的解释

标签: IT技术 区块链 | 发表时间:2017-09-26 18:00 | 作者:孙腾浩
出处:http://blog.jobbole.com

(A minimal blockchain command-line interface.)

维基百科上对区块链的描述:

维护不断增长的记录(称作区块)的分布式数据库。

听上去很简单,但到底是怎么回事呢?

我们用一款开源命令行界面 Blockchain CLI 来详细说明区块链。我也做了一个 浏览器可以访问的在线版

安装命令行界面

首先请确保安装 Node.js

然后在终端里运行下面命令:

npm install blockchain-cli -g
blockchain

你将看到  Welcome to Blockchain CLI!blockchain → 提示已准备好接受命令。

区块是什么样子的?

你可以在命令行中输入 blockchainbc 来查看你当前的区块链。你将看到下图类似的区块。

  • 索引(区块):这是哪个区块?(初始区块索引为 0)
  • 哈希:区块有效吗?
  • 前个哈希:之前一个区块有效吗?
  • 时间戳:区块什么时候添加的?
  • 数据:区块中存的什么信息?
  • 随机数(Nonce):我们重复了多少次才找到有效的区块?

初始区块

每个区块链都会以一个  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 上的数据。会发生下面情况:

  1. 修改区块 A 上的数据。
  2. 区块 A 的哈希变动,因为计算哈希所用的数据变化了。
  3. 区块 A 无效,因为它的哈希不是四个 0 开头。
  4. 区块 B 的哈希变动,因为计算区块 B 的哈希所用到的区块 A 的哈希值变化了。
  5. 区块 B 无效,因为它的哈希不是四个 0 开头。
  6. 区块 C 的哈希变动,因为计算区块 C 的哈希所用到的区块 B 的哈希值变化了。
  7. 区块 C 无效,因为它的哈希不是四个 0 开头。

修改一个区块的唯一方式就是重新开采这个区块以及它之后的所有区块。因为新的区块不断增加,基本不可能修改区块链。

我希望本文对你有帮助。

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

区块链原理最清晰最直观的解释,首发于 文章 - 伯乐在线

相关 [区块链 原理 直观] 推荐:

区块链原理最清晰最直观的解释

- - 文章 – 伯乐在线
维基百科上对区块链的描述:. 维护不断增长的记录(称作区块)的分布式数据库. 听上去很简单,但到底是怎么回事呢. 我们用一款开源命令行界面 Blockchain CLI 来详细说明区块链. 我也做了一个 浏览器可以访问的在线版. 首先请确保安装 Node.js. 然后在终端里运行下面命令:.

区块链入门教程

- - 阮一峰的网络日志
区块链(blockchain)是眼下的大热门,新闻媒体大量报道,宣称它将创造未来. 可是,简单易懂的入门文章却很少. 区块链到底是什么,有何特别之处,很少有解释. 下面,我就来尝试,写一篇最好懂的区块链教程. 毕竟它也不是很难的东西,核心概念非常简单,几句话就能说清楚. 我希望读完本文,你不仅可以理解区块链,还会明白什么是挖矿、为什么挖矿越来越难等问题.

颠覆未来:区块链技术

- - 冰火岛
区块链之父-中本聪,主要来自比特币技术. 2009年的一篇paper,Bitcoin: A Peer-to-Peer Electronic Cash System 提出基于 区块链技术的电子货币技术. 可以用点对点的网络解决方案解决双重支付问题. 没有类似铸币厂一级的第三方的信任机构. 可以用哈希现金形式的 工作量证明来制造新的货币.

[原]区块链技术学习笔记

- - 陶辉的专栏
1、区块链技术是一个解决了拜占庭将军(百度百科 拜占庭将军问题)节点的分布式数据系统. 这是它最大的不同,也导致了这个技术存在诸多限制. 做服务器端开发的程序员,都对zookeeper不陌生,我们解决分布式ACP问题时,寻找一致性解决方案时都会想到它. zookeeper实际使用了paxos的简化版算法(本文不展开,请参考我之前写过的两篇文章: paxos分布式一致性算法–讲述诸葛亮的反穿越 以及 paxos算法如何容错的–讲述五虎将的实践).

我是如何学习区块链的

- - IT瘾-dev
原创文章,转载请注明:转载自 Keegan小钢. 微信订阅号: keeganlee_me. 专栏地址: https://xiaozhuanlan.com/fullstack. 前几天我们已经学了如何学习的“道”和“术”,学完之后就应该落地到实践上,通过不断地实践练习,才能将这些 知识资源转化为我们的 知识资本.

前言 · 区块链技术指南

- -
区块链技术是金融科技(Fintech)领域的一项重要技术创新. 作为分布式记账(Distributed Ledger Technology,DLT)平台的核心技术,区块链被认为在金融、征信、物联网、经济贸易结算、资产管理等众多领域都拥有广泛的应用前景. 区块链技术自身尚处于快速发展的初级阶段,现有区块链系统在设计和实现中利用了分布式系统、密码学、博弈论、网络协议等诸多学科的知识,为学习原理和实践应用都带来了不小的挑战.

区块链的终极猜想

- - 商业不靠谱
编者按:本文来自丹华资本董事总经理Judy的分享“区块链的终极猜想”. 今天,我们来讨论一下区块链发展的终极猜想. 这个背景是之前我们一起打磨过六个课题,这个是最后一个课题. 所以我先用最短的几句话,分享一下之前课题里的一些个人观点. 我的观点一共分三块, 第一个是关于区块链核心的定义;第二个观点是关于平常大家喜欢交流的,区块链的投资趋势;第三个部分就是大家经常向投资人询问的,区块链创业的一些经验分享.

视频 | 18分钟搞懂区块链究竟是什么?

- - 明学的白板
一个视频了解一项面向未来的技术 —— 区块链. 今天推荐一个18分钟的视频,有关很多人至今仍看不懂的比特币背后的核心技术——区块链(blockchain). 比特币在去年由于众所周知的原因又爆发了一波. 区块链作为比特币最核心的底层技术,在它的气发现,目前已经有许多商业运用. 区块链的核心概念其实并不难理解,只是缺少清楚直观的讲述,Anders Brownworth 就是一位可以把复杂概念讲的非常简单的技术宅,我很佩服这样的人.

Hyperledger Fabric 1.0,基于区块链的分布式账本

- - 开源中国社区最新新闻
由 Linux 基金会发起创建的开源区块链分布式账本 —— Hyperledger Fabric,已经迎来了 1.0 版本. 该项目着重于性能和可靠性,以及推动区块链和分布式账本技术的跨行业协作. Hyperledger Fabric 可用于全球供应链管理、金融交易、资产账和去中心化的社交网络等场景,但无意以此来构建一种加密货币.

蒋勇 | 白话区块链技术栈与应用

- -
(中生代技术&华章科技区块链技术分享第一期). (本文约12000字,阅读完本文预计10分钟). (如果电脑上阅读出现方框乱码,请下载PDF原文:链接:http://pan.baidu.com/s/1jHEyjEA  密码:zg30). 现如今说起比特币,相信不少朋友已是耳熟能详了,尤其是这两年随着其价格飙升,甚至超过了黄金 ,超过了房地产,各大财经媒体乃至央视都有所关注报道;.