zoukankan      html  css  js  c++  java
  • 区块链是什么?

    区块链是什么?(这张图是我用素描软件画的)。

    如果你对区块链深感好奇,却又不知道它究竟是什么,这篇文章就是你的菜。本文旨在让你了解区块链是什么,因此在写作过程中简化了部分内容。如果能助你理解区块链技术是什么,那我的任务就完成了。

    小贴士:为了更好地理解区块链技术,请不要忽略本文提到的图片。这些图片相当重要!

    区块链是什么?

    -区块链-

    是的,区块链 = 区块+链条 = 一串(区块)

    我们首先把区块链和转账系统进行类比。记住,区块链有很多用例,而转账系统只是其中之一。

    假设,我从自己的账户里转了一部分钱到你的账户。在我进行这笔交易时,一定要有个地方写入交易信息。

    这个地方就是区块

    区块中,我们会写入如下信息:

    • 谁在转账给谁?
    • 交易金额
    • 签名等其他信息
    public class Block {
      public String data;
      public String hash;
      ...
    }

    所以区块和银行支票类似,都是一种信息载体。

    除信息(I)外,每个区块都有一个独一无二的哈希值(H)作为身份标识。哈希值(H)是一个很重要的概念。

    交易越多,区块也会越多。

    这些区块通过一根链条相互连接成了一个区块链。

    为什么要让区块相互连接呢?

    是为了保证信息的安全性。

    连接方式:当前区块的哈希值取决于上一个区块的哈希值。

    下面举个简单的栗子?。

    假设我们有 3 个区块,包含如下信息:

    • 区块 1 包含的信息为 I1I1 的哈希值为 H1
    • 区块 2 包含的信息为 I2 ,I2 的哈希值为 H2
    • 区块 3 包含的信息为 I3 ,I3 的哈希值为 H3

    H2 是由 H1 和 I2 结合起来算出的。同样地,H3 是由 H2 和 I3 结合起来算出的,依此类推。

    3

    -哈希值说明-

    H2 = 某种加密函数(H1, I2)

    H3 = 某种加密函数(H2, I3).

    那 H1 从何而来?首先,我们要取一个默认值 H0 。

    H1=某种加密函数(H0, l1),其中 H0 是个默认值。

    -稳定的区块链-

    到目前为止,上图的区块链是稳定的。

    现在如果有人把区块 2 的信息 I2 改成 I2' ,I2 的哈希值 h2 改成 h2' ,其他区块保持不变。在这种情况下,区块链就会变成下图中的不稳定状态。

    5

    -不稳定的区块链-

    区块链不稳定的原因如下:

    • H3 ≠ 某种加密函数(H2', I3),H3 的值发生了变化。
    • 用 H2' 代入公式重新得出H3' = 某种加密函数(H2', I3)
    • H4'H5'H6' 也以此类推。

    修改后,这个区块链就会变得像下图一样稳定。

    6

    -稳定的区块链-

    这样的话,所有修改要经过端对端修改和审核。那黑客入侵电脑修改数据也就没那么容易了。如果有黑客修改了数据,区块链就会变得不稳定,立马就会被发现。

    List<Block> blockList = new ArrayList();

    我们将区块放在一个类似上图的列表中,这样已知当前区块所在 position (位置),很容易就能通过运行 blocklist.get(position — 1) 找到上一个区块。存储区块的方法有很多。

    区块互连主要是为了保证安全性。

    接下来深度科普区块链是什么

    区块链是一个分布式的去中心化分类账,用来存储交易信息等数据,这些数据为整个区块链网络中的节点所共享

    这么说是不是把区块链定义得太过复杂了?

    不过不用担心。我来帮你剖析一下难点。

    分类账

    分类账是承载区块列表的主要记录载体。

    存储数据

    区块能存储数据(信息)。此处对数据的定义很广泛,可以是我们能想到的任何数据。我们就拿交易信息这一数据来举个例子。

    分布式的去中心化分类账

    数据处理通常由一个中心机器负责。但是区块链里有很多机器(因此它不是中心化的),且所有机器都是点对点相互连接。另外,这些机器维护的是同一本分类账。因此,区块链被称为分布式的去中心化分类账。

    换句话说,因为同一区块链网络中的所有人都共享同一本分类账,所以说区块链是分布式的。每个人都有整个分类账的副本,一旦有什么东西添加进去,副本马上就会更新。

    为整个区块链网络中的节点所共享

    在区块链网络中,所有机器全都相互连接。每个节点(机器)都持有相同的分类账副本。这就意味着整个区块链网络中的节点都共享一本分类账。

    区块链是如何运作的?

    区块链的运作步骤:

    • 阿米特(Amit)想创建一个交易。
    • 阿米特创建了一个交易。
    • 阿米特将该交易提交到网络上。
    • 网络中的机器验证交易并予以批准。
    • 阿米特的交易被打包上链。
    • 更新后的区块链在全网广播。
    • 转账完成。

    现在理解区块链的定义以及它的运作方式了吧。

    既然区块链是分布式的,那它如何保证安全性呢?

    区块链利用密码学来生成数字签名。提到数字签名,先要了解下私钥和公钥的概念。

    我们每个人都可以获得自己的私钥和别人的公钥。

    私钥:只有所有者可以访问。

    公钥:网络中的每个人都可以访问彼此的公钥。

    假设我想创建一个交易。我用自己的私钥对信息进行加密来创建一个数字签名。

    -数字签名-

    然后我把交易(内含信息、公钥以及上图所示的数字签名)提交到网上进行审批。

    -交易-

    在这一过程中,网络会利用公钥来解密数字签名,并从签名中提取信息。

    如果原信息与从上图所示的签名中提取出来的信息相匹配,就可以通过审批,否则就无法通过。

    如果两个信息不匹配,可能是以下原因:

    • 原信息在中途被操控了。
    • 生成数字签名时所用的私钥与所提供的公钥不匹配。

    这就是网络如何能发现篡改的方法。因此区块链是安全的。

    这就是今天要讲的关于区块链的全部内容。请继续关注我的“循序渐进入门区块链”系列教程。

    区块链学习愉快?


    原文链接: https://medium.com/mindorks/what-is-blockchain-simplest-introduction-to-the-blockchain-764a468e1575

  • 相关阅读:
    pycharm下载 -professional
    geckodriver v0.11.0 github上下载的
    【Selenium】4.创建你的第一个Selenium IDE脚本
    【Selenium】3.介绍Selenium IDE
    【Selenium】2.安装Selenium IDE和 FireBug
    【Selenium】1.介绍 Selenium
    ACM Coder [T1002] 一直wrong answer,不知道为什么。上代码!就对就对!
    C# 类的属性
    C# 类的介绍,参数传递,各种符号说法
    C# 在Visual Studio中一个项目有两个Main函数, 怎么设置哪个是入口?取代csc /main选项。
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313661.html
Copyright © 2011-2022 走看看