区块链到底是怎么运行的

为了方便你理解,这一篇文章我将以比特币为例来进行讲解,因为比特币算是区块链应用中最简单、最容易理解的一个案例了。

中心化记账的问题

首先,举一个关于中心化记账的经典例子 - 银行转账。假设小明给小红转200块,银行收到了转账请求,将小明银行账户里的余额减200,这个时候银行系统出现了问题,小红的账户上并没有收到这笔钱,但是小明的账户上钱已经被转走。好在很快银行系统修复,并且将小明的钱退回到他的账户里。又有一次银行系统遭到黑客攻击,小明的账户余额直接变成了0,小明气氛的跑到银行去讨个说法,这时候有个叫中本聪的人站了出来,他说这就是中心化记账的缺点,对中心节点(银行系统)的稳定性,安全性要求特别高,一旦被人攻击,或中心节点本身信用有问题,很容易出乱子。他说他设计了一套系统,可以不依赖任何人记账,于是,众人开始将目光集中到他的身上。

公开记账

公开记账说白了就是所有人都参与记账,这里参与记账的人我们可以认为是网络中的一个节点(Peer)。网络中的所有节点都可以互相通信,这就是 P2P 网络,是一个点对点的分布式网络。

当节点小明向节点小红转账的时候,会向对方节点发起一个交易,这个“交易”对应的英文单词是“Transaction”,这是个专有名词,专指一笔账。每一笔交易主要包括付款人、收款人和付款金额。网络中的所有节点记账记的都是这个交易,而不是账户余额。同时参与记账的每一个节点都有一个唯一标示,这个标示由一长串数字字母组成,交易中的付款人和收款人就是这个标示。

小明首先将交易广播到与其相连的其他节点,其他节点收到交易后,会验证交易的有效性,验证通过把交易存到本地,然后再广播到其他节点,如此循环最终这笔交易将会传播到网络中的所有节点。网络中的每个节点将收到的交易按照交易产生的时间顺序排列存储。

挖矿

当网络中的交易越来越多时,为了便于以后追溯查询,需要对这些区块打包,打包就是将若干交易放到一起生成一个区块。这个区块会有一个唯一标示,这个标示通过包含本区块中的所有交易和上一个区块的唯一标示一起通过某种方法计算出了一个hash值,这个计算方法有个特点就是任何一个交易发生了任何变化,最后计算出来的hash值完全不一样。通过这种方式确保交易中的数据没有被篡改。每打包一个区块的时候,这个区块同时记录了上一个区块的hash值,也就是说区块之间通过这个hash值关联起来了,这就是所谓的区块链。通过这种方式,整个区块链中的任意一个交易发生改变,会导致该交易之后的所有区块的唯一标示发生变化,从而其他节点会认为这个区块不是合法的,这就是所谓的区块链的不可篡改性。

刚才我们说了区块链中的每个区块都有前一个区块的唯一标示,那么网络中的第一个区块该怎么产生呢?实际上区块链中的第一个区块就创世区块,这个区块是初始就有的,不需要人为发起交易产生。

上面我们说了交易会被打包成区块,但是有个问题,就是没有规定谁有权利把 Transaction 打包成区块。 在比特币中是这样玩的,给定一个特殊hash值,这个hash值的前n位都是0,并且这个hash值必须用当前区块的hash值和一个随机数一起计算出来的,谁先找到这个随机数,谁就有权利把 Transaction 打包成一个区块,当然大家都这么热衷于打包区块是有原因的,因为打包区块系统会奖励打包者一定的比特币。

之所以选择这个难题,是因它有两大特性,第一是容易验证,第二是计算过程非常复杂。 例如,有种棋牌类游戏叫作“24 点”,玩法就是给出任意 4 个整数,通过整数运算得到 24,比如现在给出 2、9、1、5 四个数,答案是(5-2)*(9-1)= 24。当然,本处仅是举例,“24 点”游戏的答案空间非常小,是非常容易算出来的。 答案非常好验证,但是计算过程是一个尝试的过程,需要耗费大量的精力,这就是大名鼎鼎的挖矿。

矿工如果成功获得打包权,会在生成的区块中签上自己的名以及它发现的随机数,然后将生成的区块广播到网络中,网络中的节点一旦收到这种区块,首先对其验证真假,如果是合法的区块,则存储到本地并且广播到其他节点,同时用新生成的hash重新挖矿。

广播交易

来说说上文提到的广播交易,现在我们已经说过了, 广播的内容分两种,一种是广播 Transaction,一种是广播区块。第一种广播是意味着还有未被打包的 Transaction,而第二种广播则意味着这个 Transaction 已经被某个矿工确认。 收到了广播的通知后,大家先验证区块上难题的答案是否正确,这样便可以验证出区块是否被伪造,接着验证里面的每笔交易,最后还要验证上一个区块的的hash是否正确。因为上一个区块大家都已经确认,所以这样可以极大地规避作弊的可能。如果觉得没问题,就可以存入本地数据库中了。

总结

本篇文件主要聊了比特币区块链,其中包括区块链中公开记账、创世区块、交易、打包 交易、广播交易和区块的几个步骤。下一篇文章我给大家简单介绍一下区块链中的共识机制。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

emeson_ch

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值