区块链技术荆
A. 什么是区块链技术区块链技术的核心构成是什么
从技术的角度,架构的角度,用通俗的语言来跟大家讲讲,我对区块链的一些理解。
究竟啥是区块链?Block chain,一句话来说,区块链是一个存储系统,存储系统更细一点,区块链是一个没有管理员,每个节点都拥有全部数据的分布式存储系统。
那常见的存储系统,是什么样子的呢?
首先看一下如何保证高可用?
普通的存储系统通常是用“冗余”的方式来解决高可用问题的。图上图所示如果能够把数据复制成几份,冗余到多个地方,就能够保证高可用。一个地方的数据挂了,另外的地方还存有数据,例如MySQL的主从集群就是这个原理,磁盘的RAID也是这个原理。
这个地方需要强调的两点是:数据冗余,往往会引发一致性的问题
1、例如MySQL的主从集群中中其实读写会有延时的,它其实就是有一个短的时间内读写不一致。这个是数据冗余,带来的一个副作用。
2、第二个点是数据冗余往往会降低写入的效率,因为数据同步也是需要消耗资源的。你看单点写入,如果加了两个从库之后,其实写入的效率会受影响。普通的存储系统,就是采用冗余的方式,保证数据的高可用的。
那么第二个问题,普通的存储系统,能否多点写入呢?
答案是可以的,比如说以这个图为例:
其实MySQL的话可以做一个双主的主从同步,双主的主从同步,两个节点,同时可以写入。如果要做多机房多活的数据中心,其实多机房多活也是进行数据同步的。这里要强调的是多点写入,往往会引发写写冲突的一致性问题,以MySQl为例,假设有一个表的属性是自增ID,那么现在数据库中的数据是1234,那么其中一个节点写入,插入了一条数据,那它可能变成5了,然后这5条数据,向另外一个主节点进行数据同步,同步完成之前,如果另外一个写入节点,也插入了一条数据,也生成了一条这个自增id为5的数据。那么,生成之后,往另外一个节点同步,然后同步数据到达之后会与本地的这两条5冲突,就会同步失败,会引发写写的一致性冲突问题。这个多点写入的话都会出现这个问题。
多点写入,如何保证一致?
维新“天鹅大咖课”给你更多的技术干活
B. 如何理解区块链与区块链技术
区块链技术用数学方法实现分布式记账,并解决信任问题,从而完成了去中心化,将在通信、金融、物联网、政府管理等众多领域带来深远的影响。
区块链(Blockchain)是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案,是一种全民参与记账的技术方式。而此前的记账方式都是中心化的,需要中心化的中介,无论这个中介是传统的政府、金融机构、公证机构还是新兴的电商平台、网络支付平台。
经济学假设中,信息是充分的。实际上,正是因为信息不充分,才存在非常庞大的中介机构。而中介机构的存在,增加了交易成本,提高了交易门槛。区块链技术本质上来说是一个大规模协作工具,它首次使用纯技术方式让直接的价值转移成为可能,并延续了互联网去中心化和去中介化的趋势。去中介的区块链技术将极大地颠覆信息中介行业。
区块链技术是构建比特币数据结构与交易信息加密传输的基础技术,该技术实现了比特币的发行与交易。区块链技术的核心是所有当前参与的节点共同维护交易及数据库,使交易基于密码学原理而不基于信任,使得任何达成一致的双方,能够直接进行支付交易,不需第三方的参与。
从技术上来讲,区块是一种记录交易的数据结构,反映了一笔交易的资金流向。系统中已经达成交易的区块连接在一起形成了一条主链,所有参与计算的节点都记录了主链或主链的一部分。
一个区块包含以下三部分:交易信息、前一个区块形成的哈希散列和随机数。交易信息是区块所承载的任务数据,具体包括交易双方的私钥、交易的数量、电子货币的数字签名等;前一个区块形成的哈希散列用来将区块连接起来,实现过往交易的顺序排列;随机数是交易达成的核心,所有节点竞争计算随机数的答案,最快得到答案的节点生成一个新的区块,并广播到所有节点进行更新,如此完成一笔交易。