区块链需要迈过的几道坎

简介: 区块链需要迈过的几道坎

从我的理解而言,区块链是一种“共识”实现技术,通过区块链可以记录网际间所有的交易,供区块链的用户见证实现“共识”,且链上信息内容“不可篡改”。而这种“不可篡改”性是通过系统内多个副本的存在增加了内容被恶意篡改的成本。以比特币系统而言,下图中的所有亮点代表一套内容一致的账本。因此,当所有的记录得到公示,就解决了现实生活中的“两表不可测”问题。两表不可测的原因是没有中心,两表数值各异观者无从可知。但中心不是必须,当存在多只表,且多数指针指向一个时间,少数服从多数,观者也就心知肚明。所以区块链要解决的一个问题就是“少数服从多数”,少数的存在有可能是数据生成的错误或者是恶意篡改的内容。也就是说你要篡改成功,就必须要改变系统中51%的副本[ 即51%攻击],由少数成为多数。可想而知,篡改成本从技术难度、时间消耗、人员使用上都是巨大的。同时,区块链的另一个关键结合,是同智能合约的结合。通过程序执行合约,因为前者已经做到了合约内容的“原汁原味”,后者成为“观察者”用机器执行杜绝了合约双方的违约和执行中断。金融活动从最早的支付到金融衍生品的高度发展,背后都是一个个合约的签订和执行。同时各种金融创新绝大多数也是保证合约的执行和违约偿付。如果合约的达成变得扁平且执行贯彻,那么整个流程将更为简洁和高效,这便是区块链亦将提出就被金融领域重视的一个前提。另外,区块链是一个不断“膨胀”的记录系统,可以记录系统从开始到今后运营中的所以交易的记录。这一机制也便捷了第三方,特别是金融监管者对资产交易信息的追踪、监测和转移。

image.png图1 比特币系统中的区块链副本

说明:每个亮点都是比特币系统中的终端,每个终端都保持一个账本(副本)

数据存放的两类模式

如果说合约是内容,当内容完成数字化,区块链就成为了信息存放的载体。因此,结合梅万妮•斯万意见,数据的存放就形成了两类模式。一类是数据就存放在块中,另一类是将数据压缩形成数字串列,也就是降维哈希过程[ 参见梅兰妮•斯万《区块链新经济蓝图及导读》第21页]。对于前者容易实现,但一致性问题突出。后者只同步数字串列,通过减少同步量解决一致性问题,但哈希过程的降维成为关键。

一致性问题

一致性问题是分布式存储系统一个比较难解决的问题,通常这一个环节起容灾备份功能,同步操作大多放在“闲时”,是一种后台操作。区块链采用“前置”的同步操作,当一个块生成,块链的更新需要所有副本完成内容一致的复制。如果内容存储在块内,那么更新的数据量为更新的内容乘以副本的数量,再加上副本间的传输距离和带宽,整个操作是耗时的,整体的效率体现在系统中最长的同步时间,如图2。

image.png

因此采用这种方式,将影响对高频应用的响应,例如诸多的交易场景。所以解决一致性问题的办法一是控制更新内容的大小,二是限定副本的数量。比特币系统的实现是采用前者,私有链是应用了后者。

降维哈希问题

  一致性问题的确是区块链技术未来真正应用的关键,如何降“魔”?梅万妮•斯万给出了他的思路,如果同步的数据量仅仅是64位或者是128位的数字串列,那么一致性起码是可控的。在此模式下,区块链服务的任何数字资产(例如文件、图片、视频录像、监控记录、软件等)数据最终不需要存放在区块链上,更新的内容只是对应的数列。因此如何降维是这一模式下的问题所在,共识的内容是自然语义。当自然语义过渡到程序识别的数字表达,多维的自然语义和元数据需要完成一对一的关系映射,这一过程需要对信息进行降维,其中会用到哈希、编码等技术。例如一个9G的基因组文件,就需要降维为1维的二进制数列来平衡区块链同步前置的负外部性,最终使智能合约的执行算法能够以此甄别对象的“真伪”。需要提醒的一点是梅万妮•斯万这种方式哈希过程不是地址(地址是数字资产数据的存储地址,例如指基因组文件的存放地址。要区别比特币中的哈希地址,其实质是明确比特币的所有权,类似于交易的甲乙方,是交易的内容)映射,如果区块链当中保存的是地址信息。

image.png一是违背了内容共识的机制,二是大大降低了系统的安全性。一旦非法入侵者获得任何一个副本,就可以找到合约内容的存储空间进行篡改。降维哈希这一过程类似于“压缩”,需要基于数据内容、文件特征、时间戳等特定信息进行压缩。这样智能合约的执行算法才能够以此判定指定内容的“真伪”。所以这个过程是复杂而艰巨的,工程量浩大。

智能合约的衔接

智能合约的核心是利用程序算法替代人执行合同,从这个概念上理解合约的执行可以类比“支付宝”。当买家和卖家在淘宝网达成了某笔交易,钱货两讫将按照支付宝程序执行,买卖双方更多是配合程序执行的贯彻。因此,智能合约的前提就必须是签订的交易在执行前不能被篡改。区块链因此成为智能合约在去中心环境下的天然基石,该机制保证了智能合约执行程序前能得到“原汁原味”的合约。image.png通常对智能合约的“触发”有两种自然的解决方式,模式A和模式B,如图3。前者通过数据本身的内容形成触发事件来驱动智能合约的执行,因此在执行之前需要验证数据内容和哈希值是否匹配。如果不匹配,就意味原始数据被篡改后续需要匹配容灾恢复机制。而采用模式B,则需要智能合约实现对哈希值的解读。如果说降维哈希是“压缩”,那么与智能合约之间的衔接就需要执行“解压”,需要从数字串列的特征值上进行解读,实现执行算法的“事件触发”。因此,区块链和智能合约的应用需要对数字资产内容进行标准化,通过标准的组件配置实现资产从注册、确权、转移等功能的量身定制。

区块链的检索

如果说一致性问题的解决是区块链“写”操作的实践,那么区块链内容的检索就是一个“读”过程。因此,对于应用的需求而言,切不可为了区块链而区块链。在内容实现广泛共识的基础上,我们可以相机选择合适的方式来优化区块链上的遍历。中心化的检索或者区块链本身复合检索功能都是可以参考的方式。国内开发的唯链Vechain是采用后者的一种方式,将地址信息和内容信息同时进行哈希。但这一方案反而降低了系统的安全性,因为区块链系统存在太多的副本。假如非法入侵者获取到任何一个副本就得到了系统一个完整的地址表,入侵者就很容易找到原始数据的存放空间进行“篡改”。所以需要强调的是:区块链的“不可篡改性”,仅仅指区块链上存储的内容(如图4红色圈出的内容,图中的序号说明了整个流程)难以篡改,而非其他数据。同时,复合地址信息从另一个角度来看也为未来系统的负载均衡设置了障碍。由于的区块链不能“瘦身”,存储信息日益膨胀使得“读”效率会逐步降低,未来客户端是否需要装载完整的区块链?毕竟对于单个用户而言涉及到的信息比例很低,在区域内建立区块链服务器也不为一个预期的方向。这样“去中心”的区块链将过渡到“非中心”的区块链,由区块链服务器保留完整的链信息。image.png传统金融的基础设施是中心化的,交易过程中信息的汇总、合同的内容、信用的背书等等操作都必须以金融中介机构为中心。由它为双方达成的合约背书,也就默认了凡是中介机构承载的交易信息都是正确的。因此,传统中心化的服务方式,系统本身是不容错的。一旦中介机构本身存在道德风险或者中介机构被黑客恶意修改合同,那么交易合同履行存在漏洞,参与者会出现财产损失。这进一步说明了,最近几年金融机构的服务器屡受攻击的动机所在。区块链的存在允许了系统的容错,通过“去中心的共识”实现系统的统一数字表达,将供需拉得更近。持续的被关注,本身就是对传统金融现状的“反抗”。金融本质是价值的流动,需求、供给和中介成为了实现流动的三个环节。传统的金融中介现阶段难以完成供需的直接满足,区块链强化供需、削弱中介来实现供需效率匹配的优化,这也是当前供给侧改革一种技术实现。


目录
相关文章
|
机器学习/深度学习 存储 人工智能
【c++百日刷题计划】 ———— DAY12,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY12,奋战百天,带你熟练掌握基本算法
211 0
|
人工智能 算法 C++
【c++百日刷题计划】 ———— DAY11,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY11,奋战百天,带你熟练掌握基本算法
118 0
|
存储 算法 C++
【c++百日刷题计划】 ———— DAY13,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY13,奋战百天,带你熟练掌握基本算法
336 0
|
6月前
|
消息中间件 缓存 NoSQL
记一次蚂蚁金服四面遭虐,面试水太深,过河的渡船你造好了吗?
有道无术,术可成;有术无道,止于道;以术识道,以道御术
惊险!备战3个月,五面蚂蚁金服差点倒在最后一面
作为程序员,免不了要经历面试这关,虽然平时工作勤勤恳恳,但是面试上面未必能展示的出来,比如平时都是做增删改查的业务系统,面试官非要问你如何处理高并发大数据,本来是写java代码,非要问你大型网站架构,这些问题防不胜防,本文就自己一次在蚂蚁金服的面试经验来总结一下,抛砖引玉。
|
人工智能 算法 搜索推荐
【c++百日刷题计划】 ———— DAY10,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY10,奋战百天,带你熟练掌握基本算法
229 0
|
机器学习/深度学习 算法 C++
【c++百日刷题计划】 ———— DAY8,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY8,奋战百天,带你熟练掌握基本算法
224 0
|
人工智能 算法 BI
【c++百日刷题计划】 ———— DAY9,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY9,奋战百天,带你熟练掌握基本算法
134 0
|
算法 C++
【c++百日刷题计划】 ———— DAY14,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY14,奋战百天,带你熟练掌握基本算法
355 0
|
缓存 C语言 芯片
【数字设计】联发科技_笔试面试题目分享
【数字设计】联发科技_笔试面试题目分享
【数字设计】联发科技_笔试面试题目分享