区块链如何做_区块链运作流程原理

  区块链如何做_区块链运作流程原理

  区块链的“区块”,类似于我们储存数据用的硬盘。每个区块,就是保存区块链上信息的地方。通过密码学技术进行加密,保证这些被保存的信息数据无法被篡改。

  区块链系统会检验期间产生的所有数据,比如交易记录以及该区块何时被编辑或创建的记录等,并将这些数据储存在一个新的区块上。这个区块会与前一个区块连接,每个区块都必须包含前一区块的相关信息才能生效,从而形成一根链条,因此称为“区块链”。

  区块链本质上是一个去中心化的数据库。区块链真正能发挥所长的场景是允许用户在无第三方中介参与的情况下进行协作,且不必彼此信任。在区块链网络中,没有任何一方可以篡改区块链上的数据。

  用户若要运行和独立验证区块链的状态,必须下载特定的钱包软件。软件启动后,便会接入区块链网络中的其他计算设备,目的是上传或下载信息(例如,交易、区块)。软件将会下载一个个区块数据,检查它的真实性,然后将检验过的相关信息广播传递给其他计算设备。

  于是,我们得到了由成百上千、甚至是上万个计算设备组成的区块链生态系统。这些计算设备被称为“节点”,全部运行同一个软件,并同时彼此同步更新、广播交易数据,实现了区块链的数据真实而去中心化的特性。

  区块链工作原理是什么?区块链技术的工作原理是什么?

  大家都知道,“比特币”是一种数字货币。而“区块链”就是比特币的记账系统。可以把区块链想象成一个账本,上面记录了全球所有的比特币交易信息。那么,区块链跟传统的银行记账有什么区别呢?这就涉及到区块链的本质了:区块链是一种去中心化的分布式数据库。我会一一解释这三个关键词。

  数据库:

  所谓“数据库”,就是计算机上的一组表格,它可以存放大量的有结构的信息(可以类比Excel,但远比Excel复杂)。比如我们去银行存款、取款、汇款,这些交易信息都是要上传到银行的数据库的。

  分布式:

  这个数据库可以存放在银行的一台超级电脑上,也可以放在多台电脑上。比如工行可能在华北、华中、华东、华南等地区各有一台服务器,每个地区的交易信息发送到本地区的服务器上,各个服务器之间通过银行的内部网络连接。这就叫“分布式数据库”。

  去中心化:

  传统的服务器,不管是不是分布式的,都是有“管理员”的。也就是说,有一个银行内部的“超级用户”可以查看所有的交易信息,并且可以随意添加、修改这些信息。这就叫“中心化”。

  而区块链则是“去中心化”的。也就是说,区块链这个数据库中不存在管理员,所有人都是平等的,都有权查看、添加信息。去中心化是区块链的本质特征。

  既然所有人都有权往区块链上添加信息,那么这个“账本”难道不会乱七八糟吗?要搞清楚这点,我们需要了解什么是“区块”,什么是“链”。

  何为“区块”何为“链”?“区块”是区块链的基本组成。区块就是一个数据块。类比账本的话,区块就相当于账本上的一页,这一页上记录了多条交易信息。而把这些分散在整个互联网上的“页”串成一条链,就可以形成一个完整的“账本”。那么,“区块”是怎么串成“区块链”的呢?

  哈希值与防篡改:

  除了比特币交易信息之外,区块上还包含了这个区块本身的一些特征信息。可以类比一页上的“页码”,只不过这个“页码”比较复杂。“页码”中最重要的,就是“哈希值”,它是理解区块链可靠性的关键。

  所谓“哈希值”,可以理解为数据的一个“指纹”。我们签合同有时会摁手印,以后只要把自己的指纹和合同上的指纹对比一下,就可以证明合同是自己签的。类似地,我们在网上下载一个软件,有些网站会给出安装包的哈希值(可能称为CRC或SHA)。我们下载完安装包后,只需用专门的工具计算一下这个SHA值,再跟官网上给的SHA值对比一下,就可以知道自己下载的和网站提供的是否100%一致,下载过程有没有被人做了手脚。

  不同的数据,算出来的哈希值一般来说是不同的。如果已知数据A的哈希值是H,想伪造另一个数据B,使它的哈希值也是H,这是极其困难的。也就是说,哈希值具有不可伪造性,起到了“指纹”的作用。

  一个区块中,包含了两种哈希值:“上一个区块的哈希值”和“本区块的哈希值”。因为每个区块都包含了上一个区块的哈希值,所有的区块就依次连成一条(逻辑上的)链。“上一个区块的哈希值”就起到了“页码”的作用——给页排序。

  区块连接成区块链

  如果一个区块上的交易信息被人恶意篡改的话,“本区块的哈希值”就会改变。由于区块链中下一个区块包含了“上一个区块的哈希值”,为了让下一个区块依然能连到本区块,需要修改下一个区块。而这又导致下下个、下下下个......区块也必须修改。

  篡改了一个区块,就要修改后面所有区块

  由于区块链本身的一些机制(这个机制比较细节,我们这里不讨论),计算一个区块的哈希值是极其困难的,修改多个区块的哈希值则是难上加难。这样,篡改区块链中的交易信息就成为几乎不可能的事情。这就保证了区块链的可靠性。

  采矿:向区块链写入信息的方式

  采矿:向区块链写入信息的方式“采矿”,就是计算出一个潜在区块的哈希值,使这个区块正式加入整个区块链的过程。一个区块加入区块链后,其中包含的交易信息才能成为事实。由于比特币设计者的一些考虑,采矿的过程需要消耗大量时间和资源。前面已经提到,计算区块的哈希值是极其困难的。具体有多困难呢?如果比特币网络中的计算机都参与哈希值的计算,平均每十分钟才能算出一个哈希值。

  从事采矿活动的人,称为“矿工”。互联网上的任何人都可以加入比特币网络,成为矿工。既然采矿需要消耗大量时间和资源,为什么矿工会自愿加入呢?这是因为比特币协议规定,挖到新区块的矿工会得到比特币奖励。这是矿工采矿的动力;也因为矿工持续得挖矿,比特币交易信息才能被确认,比特币交易才能正常进行。同时,这也是比特币总量唯一的增加方式。比特币不像传统货币,它的总量不能通过国家或机构人为印发的方式增加,只能通过挖矿奖励的方式“自然地”增加。

  如何避免主链分叉?

  既然挖矿会有比特币奖励,比特币的交易方也会给矿工一些手续费作为报酬,矿工之间难免会产生大量竞争。如果两个矿工同时挖到了某个区块的下一个区块,那么谁挖到的那个区块有资格加入区块链呢?如果都可以加入区块链,区块链产生了分叉,这样如何保证区块链的“唯一性”呢?

  区块链协议规定,如果一个分叉上的新增区块达到了六个,那么它就成为区块链的“正统”;而同一时刻其他没有达到六个区块的分叉,就会被不幸淘汰,这些区块上的交易信息也不会被认可。这就避免了区块链的分叉。由于一个区块在被挖出来后,后面必须跟上六个新区块,而平均每十分钟才能挖到一个新区块,这样,一笔交易至少需要一个小时才能被确认(被写进区块链)。

  矿工B:我有一句喵喵喵不知当不当讲

  综合上文,那么比特币交易的过程是怎样的呢?

  交易无非就是一条信息:“买方-1$,卖方+1$。”(这里涉及到一些非对称密码的知识,由于不是比特币所独有,不作讨论。)当你发起一笔比特币交易后,这个交易信息就会从你的设备上,逐渐发送到整个比特币网络。

  为了挖矿奖励,许多矿工都会收集你的交易信息,并拼命挖新的区块。如果一个矿工挖出了一个新的区块,他就会把你的交易信息写入区块。在这之后,他还需要再挖出六个新的区块,以保证整个区块链采用了这个区块。这时你的交易信息才能正式写入区块链,得到确认。而那些没有挖到六个区块的矿工的成果则会被淘汰。

  这样,虽然是多个矿工在竞争着写入你的交易信息,最后只能有一个矿工成功地写入。这就保证了同一次交易中,你的钱不会被扣掉两次。

  一旦一个新的区块正式加入了区块链,这个区块就会被同步到所有矿工的机器上,新的区块只能跟在这个区块后面。而挖到这个区块的矿工会获得一些比特币作为奖励,这也是新比特币发行的过程。

  小结一下以上的要点:区块链是比特币交易的可靠的、唯一的账本,区块链是一个无中心的分布式数据库。它没有管理员,网络中的所有用户都可以平等地向区块链中写入新的区块。

  区块根据“上个区块的哈希值”而连接成一条链,计算哈希值的困难性,使得区块和区块链无法被篡改,保证了区块和区块链的可靠性。

  一个区块后面新增六个区块才能使它正式加入区块链,这使得区块链不会产生分叉,保证了区块链的唯一性,但同时,这也导致比特币交易至少需要一个小时来确认,不具有即时性。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

留言与评论(共有 0 条评论)
   
验证码:
微信号已复制,请打开微信添加咨询详情!