什么是区块链?区块链是一个技术名词,解决(或颠覆)现有依赖第三方中心的交易系统:如果有一个水果市场,我们在市场上用100新台币买一个芒果,其实就是新台币的发行者(中央银行)为这张薄薄的纸片做了信用背书——因为水果商相信这100元新台币可以在他需要的时候购买其他等值的物资。第三方中心的存在解决了交易双方之间的信任问题,但也带来了新的问题。如果第三方作恶(比如央行超发货币)怎么办?最终的解决方案是不需要第三方,这是区块链背后的根本动机。如何在没有第三方的情况下实现交易?区块链实现去中心化账本实现项目:我们有一个公开的账本,任何人都可以获得,账本上有每个人的余额;当爱丽丝从鲍勃那里购买商品时,爱丽丝给鲍勃开具一定金额的支票;Alice将支票公布给大家,大家确认确实是Alice的签名后,在账本中记录Alice的余额减少,Bob的余额增加;每隔一段时间,大家交流一下账本的内容,同步大家的账本信息。可见区块链是一个完全自治的系统,但现在存在几个问题:为什么要记账,每个人都可以指望别人记账,用别人??的账本是最划算的行为;涉及到账本的内容,如果两个人的账本不一致,以谁的账为准;如果Alice账户里只有10块钱,在市场这边花了8块钱买了之后,她很快跑到另一头又买了一个8块钱的A商品,这时候,另一边的账本还没来得及记录以前的购买记录,爱丽丝能把同样的钱花两次吗?为了解决这些问题,区块链做了最基本的设计:将所有交易按时间段组织成块;在块中使用哈希来防止修改;在每个区块中记录上一个区块的哈希值,保证永远无法修改;当多个块同时出现时,按照指定的算法选择一个块。使用该项目后,每次交换账本时,只需要交换总账中的一个区块,大大减少了交换次数;当多个区块同时出现时,使用某种约定的算法——这种算法在区块链中,称为共识,是基于满足算法条件的某个区块;而爱丽丝两次花同样的钱的想法也会失败:商家只能检查支票信息是否包含在共识块中,产品将提交给爱丽丝。至于为什么大家都愿意记账?注意图片上的区块中有一个记账人,每个被共识认可的区块的记账人都会得到一定的奖励。这时候货币只是一个数字(类似于银行的存款号码)。由于账本是公开的,大家可以在账本开启前就总币数和记账人的奖励项目达成一致。在一个时间点上,可以流通的数字是可以预测的,是不可改变的。区块链的共识机制区块同步时,可能会同时产生多个区块,需要一个预定义项来决定使用哪个区块。此项称为区块链中的共识机制。在去中心化系统中,什么是可信的?每个人都相信自己,交易和出块结果数据到达我的那一刻是无法伪造的:数据可能会迟到(网络延迟),但永远不会提前到达(除非时间倒流)。我们可以设计一种机制,让每个节点的记账结果都必须满足一定的条件,每个节点都会认可第一个满足这个条件的节点的记录。PoW机制Proof-Of-Work,工作量证明机制。每个节点在记账的同时,按照一定的规则寻找一个随机数。通过这个随机数,可以计算出一个合格的(哈希)值。谁先找到它,谁就会成功地生产出一个区块。寻找随机数的过程就是不断调整随机数的过程-->计算,只要算法能够足够离散即可(这次与下次计算无关,随机数的变化导致计算结果改变得足够离散),则可以实现出块节点的随机化。举个简单的例子,如果算法得到的hash值一直在0-10000之间,而算法要求(hash值)小于1,如果一台机器可以每秒计算一次,那么平均计算就是一个10000次,这个值可能小于1次;或者反过来说,每一次计算,都有万分之一小于1的几率。如果10000个节点同时在计算,那么一个节点可能得到满足条件的结果,得到满足条件的结果的节点条件是区块成功。而每一秒,得到结果的机器可能都不同。这实现了足够随机的结果。POSProof-Of-Stake,权益证明机制。PoW机制很好用,但是有个问题。军备竞赛之后,耗电太多,都是无意义的计算。除了这个结果和到达时间,还有什么可信的数据作为随机值??我想到了一个新的思路,是不是每个人账户存的币量不一样,能不能当成随机数?想想也无妨,每次出块,谁的出块节点(账户)的币最多,谁就被认可。但是有一个问题:不是总有币最多的出块吗?
