区块链是一个分布式账本,参与者发生交易后,导致账本的状态发生改变。发起这笔交易的人,向全网广播出去,告诉所有记账者这笔交易发生了,那么在这个网络当中,记账者就要把自己收听到的所有的广播的交易记录下来,每过一段时间,记账者就要把这段时间收听到的所有的交易整理成一下,生成一个账单,这个账单的内容里面记录了这段时间谁给谁转了多少钱,谁谁的的账户余额还有多少等等一些内容,那么这个最后整理好了的账单,就是我们理解的区块链里面的一个区块,所以,区块就是记录了一段时间内发生的所有交易以及参与交易的角色的账户的状态。

打开网易新闻 查看精彩图片

每个时间段内都会有一张账单,很多账单连串在一起就是一个账本,那么,一个时间段内产生一个区块,每上一个时间段的区块的最末的状态就是下一个时间段的区块的初始状态,这些区块串联在一起就是一条链,这就是区块链,也是一个分布式的账本。

打开网易新闻 查看精彩图片

说到账本,我们肯定会联想到账户,它是账本中重要的组成部分,区块链中的账户体系是什么样呢?他和我们传统中的账户有很大的区别,举个例子,我们在支付宝注册一个账户,同时也设置了一个登录密码,而这个账户和密码会存储在支付宝能控制的数据库里面,这也是为什么我们在忘记了密码的时候,能够联系支付宝客服找回密码的原因。但是在区块链里面,我们是不信任第三方的,所以就没有人(或者机构)来存储我们的账户和密码。

在区块链里面,我们会用到一些加密函数,也即加密工具,利用这些工具,我们生成一个公钥和一个私钥,简单的理解就是

公钥:区块链世界里的账号

私钥:区块链世界里面的账号密码

公钥我们可以对外公开,也就是大家都可以给这个账户转账,私钥要是你登录这个账户的密码,证明你持有这个账户,从加密函数的角度来讲,知道了私钥,可以计算出你的公钥,但是知道了公钥,是不能得到你的私钥的,这就涉及到计算里面的映射,感兴趣的同学,可以后面仔细查阅其他资料去研究!

区块链里面的交易和记录交易的过程我们怎么理解呢?举个例子,当甲和乙两个人达成一笔交易时,甲会向这个网络发送一条消息,告诉这个网络里面的所有记账者,我要给乙转账了,那么这些记账者就会记录,什么时候甲给乙转了多少钱,转账之后甲的账户余额是多少,乙收到钱后的账户余额是多少。作为一个记账者,也就是一个监听广播的人,需要监听最新的账单,也即最新的区块,当记账者把某个时间段内的账单都监听并整理好了,从而形成一个账单,也就是一个备选区块!那么问题来了,我们知道一个网络中是有非常多的人在记账的,到了某个时间点,大家都会提交同样的一张账单,那么,到底下一张放在账本上的账单用谁的呢?换言之,某个区块链现在到时间要往上面记一个区块了,那么这个时候,到底用谁记录的区块,这就是多人记账要解决的核心问题。

打开网易新闻 查看精彩图片

我们用比特币的例子来解释这个问题。简单的理解就是玩一个游戏,每个记账者都要找一个随机数,这个随机数要使得某个结果达成到某个条件,更详细的理解就是:把这个随机数放在这个“账单”里面,使得这个“账单”做一个哈希函数的计算。哈希函数的特性是:把任意的输入值都会输出成一个标准格式的输出值。输入值和输出值之间很难通过正常的手段去推测他们的关系,所以为了得到某个特定的输出值,我们就会不断地去尝试输入值,换言之,需要随机的去尝试找一个有效的随机数来算出这个某个特定的要求的结果。如果我们去限制,甚至更加严格要求,那么记账者就更难找到这样一个随机数,如果要有效率的找到这样一个随机数,就需要进行大量的工作,这就是比特币所用到的工作量证明(POW)的共识机制。

随机数的找寻是需要靠工作量的,这就保证一定的公平性,当某个幸运者恰好找到了这个随机数,那么这个幸运者就可以把这个账单登记到账本上,也就是把他的这个区块上传到链上面。我们知道比特币是给记账者的奖励,当一个区块被上传到链上,那么这个区块相应数量的比特币就会奖励给这个记账者,也就是我们所谓的矿工。结合下面这个图片,我们能更好的的理解。

打开网易新闻 查看精彩图片

比特币交易系统用到了一个UTXO(未花费的交易输出)模型,也就是重点记录“交易”而非“余额”,传统账户是:只看余额,加减账户的余额数字。UTXO是:只记录交易过程,下一笔交易的输入必须是之前交易的输出,这个就不展开讲了,感兴趣的同学可以自己查阅资料,做更深入的理解。在区块链里面,我们知道了不同的角色,也即交易者和记录者,显然,记录着有更加重要的权限,按照这个读写的权限,可以简单的分成不同类型的区块链,如图

打开网易新闻 查看精彩图片

现在我们提到的更多的是许可链和非许可链。总结下来区块链就是一个分布式的账本。