在区块链系统中,如果我和一个用户丙同时喊出一句话“我获得了一个AA!”因为位置的不同,一定会有一个人最先听到我的喊话,也一定会有一个人最先听到用户丙的喊话,那么一部分认为这句话是我喊得,开始帮我记录,同样另一帮人也会帮丙记录,这样的话,原本一条唯一的信息链在我们喊出“我获得了一个AA!”的时候,出现了分支。
区块链是一条吧所有数据全部串联起来的锁链,每个人记录的东西都是统一的,出现分支,数据的确定性统一性真实性就会出现问题,因此,为了解决掉这样的问题,设计出了新的规则,增加记录编码的难度,保证记录的唯一性(保证节点之间的同步)。
区块链的应用
区块链的雏形在很早之前就已经诞生,比特币的设计原理就是基于此,如今,区块链已经开始逐渐应用到各个领域,金融,物流,公共服务,银行体系中逐渐引入区块链技术。中央银行在16年就表态支持区块链发展,同年11月,中国政府已经把区块链正式列入十三五规划纲要中。
区块链凭借去中心化,多方共识,交易溯源,不可篡改的特点使贵州超过3000亿的脱贫脱贫攻坚基金,要通过300多个单位的运作,惠及493万贫困人口,确保扶贫资金募款,投资,使用管理等环节正确运作。
马云在近两年中,所提及最多的概念就是信用体系,因为信用使得中国电子商务获得了突飞猛进的发展,互联网在未来将会像空气一样围绕在每个人的身边,因此一个合理可靠的信用体系显得尤为重要。为此,马云着力打造一个可靠的信用体系,二蚂蚁金服便是马云为之构想。
马云认为,未来人们的生活将无现金,并可以用信用兑换商品。这一实现,十分需要一种革命性的信用机制。这一机制在2016年的支付宝App里已经悄然 上线—蚂蚁区块链。
技术角度理解区块链
区块链的本质
区块链其实是一种特殊的分布式数据库。主要作用是用来存储信息,任何信息都可以写入区块链,也可以读取出区块链中的数据。
所有用户都可以建设服务器加入区块链网络中,变为一个节点。区块链中没有中心节点,所有的节点都是平等的,都保存着整个数据库,可以向任何节点读数据和取数据,因为所有的节点数据都会被同步,保证区块链的一致性和正确性。
区块链的特点
区块链的最大特点就是去中心化,而且是彻底的无中心。区块链没有管理员制度,也就代表了没有人可以使用上帝视角对区块链进行审核和随意的修改数据,人人都可以写入数据,那怎么保证区块链中数据的正确性呢?这就是区块链的魅力所在!
区块
区块链是由一个一个的区块相连接形成的。每个区块有两部分组成,分别是区块头和区块体,区块头用来记录区块的信息,区块体用来记录实际数据。
区块链头部包含了很多区块的元信息:
区块生成时间
实际数据(即区块体的)的Hash
上一个区块的Hash
……
Hash就是计算机可以对任意内容计算出一个长度相同的特征值,区块链的Hash长度为256位,不管什么数据都会计算出一个256位的二进制数字,并且可以保证只要数据内容不同,对应的Hash一定不同。
Hash的不可修改性
区块与Hash为一一对应的关系,每个区块的Hash 都是针对“区块头“计算的。
区块头包含着许多内容,这就说明如果当前的区块发生了数据变化,或者上一个区块的Hash变了,一定会引起后一个区块的Hash变化。
加入有人修改了一个区块,改区块的Hash就变化了,为了让后面的区块还能连接修改过的区块,必须修改后面所有的区块,否则修改的区块就脱离区块链了。因为Hash的计算很耗时间,所以说同时修改多个区块几乎不可能。
正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。
采矿
为了保证区块链各个节点之间的同步性,新区块的添加速度都不能太快。例如,你刚同步好了一个区块,准备基于它生成一个新的区块,就在这时一个节点比你早一步进行了区块的生成,你不得不放弃进行一般的计算再次同步新生成的区块,毕竟,一个区块后边只能接一个区块,所以你别无选择,只能停下来立即同步。
于是,为了让添加新区块变得困难,故意设计了海量运算,只有通过大量的计算才可以得到当前区块的有效Hash,由于计算量太大,所以添加新区块变得异常的缓慢,平均每10分钟全网出一个区块,一个小时出六个。
其实这个过程就是采矿,因为计算有效 Hash 的难度,好比在全世界的沙子里面,找到一粒符合条件的沙子。计算 Hash 的机器就叫做矿机,操作矿机的人就叫做矿工。
分享
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】