雷锋网按:本文作者白硕,原文标题为《浅论区块链的可运维性》,由雷锋网转载自大众号《理深科技时评》。
什么是IT零碎的“可运维性”?浅显地讲,IT零碎的可运维性就是一个IT零碎本身所提供确实保该零碎的正常运转形态、扫除该零碎的异常运转形态、应对突发的运转需求的才能。当然,这种才能,需求最终与从事运维任务的人相结合才干真正发扬其预期效果,但是假如零碎提供的“可运维性”才能很差,就会招致从事运维任务的人有劲使不上或许只能用十分低级原始的方法来达成运维目的的状况。从这个意义上讲,IT零碎的可运维性是它得以付诸平安颠簸高效运转的前提。
笔者在传统金融行业从事过多年IT运维管理,深知可运维性关于金融机构的重要性。让我们来看一看 可运维性在金融行业是如何表现的 。
在金融行业,确保零碎的正常运转形态的主·要途径是架构手腕,即经过高可用架构完成尽量短的毛病恢复工夫目的(RTO)和可容忍毛病恢复点目的(RPO) 。很多关键业务零碎的RTO为秒级,RPO为0,这意味着不允许任何数据丧失和业务形态紊乱,业务的长久中缀不会形成普通用户感官上的分明进展。为此在高可用架构中要有少量的冗余设计和接收(failover)措施,从机房、电力、网络、主机、存储、数据库、两头件、域名解析到使用,都需求在架构设计上一体化思索,都不允许呈现单一毛病点(Single Point of Failure) 。
在金融行业,扫除零碎的异常运转形态是监控手腕和应急操作特权入口,提供详尽、可了解、可视化的直观监控信息,可协助运维人员实时理解零碎和网络的真实安康情况,以便及早发现并应对异常;提供给急操作特权入口,可以为例如改错、选择性关停、限流等应急手工操作提供一个平安方便的操作环境。
在金融行业,应对突发的运转需求的次要途径,在架构层面是参数化设计,在操作层面是保存最终干涉权。 灵敏的参数化设计可在短工夫内经过参数调整来应对突发的业务改动。比方2015年,证券市场的“熔断”机制推出后数天即被要求叫停,借助于参数化设置的这种灵敏性,技术零碎仅仅需求把熔断触发条件设置成逻辑上不能够的参数值就可以很快满足这一突发的运转需求。最终干涉权则是对关键业务零碎的中心模块提供人工干涉的应急接口,来停止满足突发的运转需求的操作。留意,突发运转需求的原因并不是零碎发作了异常,而是零碎运转的微观内部条件(如政策)发作了异常,迫使零碎必需以十分规的手腕停止应对。
区块链是一种基于密码学和散布式共识机制为一个特定用户群提供信任效劳的根底设备。近年来,区块链技术失掉了迅猛开展,不只在官方有基于“虚拟货币+社区+区块链平台”的“币圈”打法,在传统金融机构和其他行业也呈现了仅应用区块链平台效劳于业务目的的“链圈”打法。随之,区块链语境下如何表现可运维性也开端浮出水面。
不要以为区块链技术从其架构本性下去讲就是高可用的,因而就可以无视可运维性的成绩。实践上, 区块链技术开展的现状为区块链的可运维性提供的技术资源还太少太少。 从区块链范畴遇到的大大小小触及可运维性的成绩当中,笔者深深地领会到, 区块链的可运维性既需求鼎力度自创传统金融机构管理可运维性的一系列理念和做法,也需求基于区块链语境自身的特殊性开展一系列原创性的运维管理做法,尤其是要纠正区块链范畴的一些错误的看法和做法。
2016年The DAO事情余波未平,2017年以太坊又爆出了Parity多重签名合约误锁破绽。区块链的可运维性又一次惹起热议。去年比特币社区还在讪笑以太坊社区一言不合就分叉,往年分叉的事情就轮到了比特币社区本人的头上。每次看到社区呈现这样的状况,总会有传统金融机构的冤家出来说:看看,幸而链圈没有这么玩,否则指不定死多少回了!
其实,可运维性不只是链圈、也异样是币圈所追求的区块链特性。 在处理了不可撤销、不可仿冒、不可窜改、不可承认、不可双花、不可透支这些价值传输最根本的成绩之后,人们的目光停留在了隐私维护和可运维性下面。 说起隐私维护特性,币圈有ZCash这样的虚拟货币推出。 说起可运维性呢?也许是去中心化的观念先行,扫除了少量在链圈看来很往常的运维手腕的运用,从应急处置和审计追责的角度,我们还没有看到币圈有有份量的可运维性技术处理手腕的推出。但是,从预防为主的角度,至多智能合约的方式化验证成绩和在线晋级的成绩,曾经在币圈惹起了足够的注重,这一迹象是正面的。
链圈呢?在这里我们必需提到链圈的两个值得一提的努力。
第一个努力是埃森哲公司提出的“可编辑的区块链”概念。 在埃森哲的资料中,他们开宗明义,把可编辑区块链的推出和传统金融机构的可运维性需求挂起钩来,从不当得利、错账冲正到乌龙指,各种必需修正的错,都不能将功补过,需求失掉受权的操作人员把错账改正来。假如区块链承当了记账的义务,那么改错账就应该是区块链必备的功用。以比特币、以太坊为典型代表的币圈平台做不了这件事情,除非分叉。埃森哲提出的处理手腕则是运用基于“变色龙哈希”的“可编辑的区块链”。从数学原理上看,可编辑的区块链的确可以不分叉就能改错,但是代价是开了一个既能窜改历史又不可审计的后门。这样一个东西的存在,不只秉持坚决去中心化理念的币圈不可承受,就算是在一定水平上容忍中心化要素存在的链圈,承受的人也不是很多。
第二个努力是R3联盟去年底推出的Corda平台。 在Corda上,智能合约代码和对应该合约的正式无效的法律文本是相互勾稽的。合约法律文本的存证形状是合约代码的不可短少的附件,并以数字签名存证。经过对附件的验证,给予合约代码所代表的“本意”一个抓得住的抓手。一旦合约在运转中呈现成绩,至多可以经过查验来确定这究竟是法律合约本来就有的,还是合约的代码完成没有忠实地表现法律合约的“本意”形成的。某种水平上,这也算是对此前一段工夫以来合约代码单兵突进、法律法规没有同步跟进后果构成畸形生态的一个补偿。此外,Corda上并不存在一个“我的银子我做主”的根底账本,任何单据(形态)都可以在适宜的条件下经公证被废止。这也为改错账留下了可以运作的空间。可以说R3这些业务大咖们关于散布式账本的可运维性的意义还是心中无数的。
由此可见,可运维性的诉求是一个很重要的诉求,它在币圈的缺位不是由于币圈不需求它,而是由于币圈有难言之隐,在目前技术条件下无法把这个诉求落到实处,而只能诉诸分叉这样无法而又蠢笨的手腕。 链圈关于可运维性的诉求来源于传统金融机构运用者关于合规性的发自天性的盲目恪守,但并没无形成一个完好的技术体系和技术办法论 。
首先,“我的资产我做主”绝不是一个与现行法律体系完全兼容的做法。 假如在技术上把“我的资产我做主”做实,“做主”在技术上表现为“掌握私钥”,那么在一些场所下,执法措施就落不到实处,就必需现实上将就区块链的技术设定。在需求停止应急处置的场景,尤其是需求对触及资产余额的错账、乌龙指、合法所得、不当得利等停止冲正、追查、查封、充公等操作的时分,这样的做法在法律上有分明的缺陷。 所以,从区块链底层把执法措施支持到位,是区块链使用单位满足合规要求的最少要求。 假如说在之前以自创为主的阶段大家还顾不上法律合规性的话,那么当区块链进入以技术上自主创新、自主掌控为主,使用上以合规开展、为我所用为主的阶段时,这样的要求再不失掉满足就说不过来了。
其次,可运维性的要求应该十分明晰地传导到开发方。 一是在开发方中逐步构成基于最佳理论的模板,把有个性的可运维性的功用(比方应急处置特权下的冲正机制、解冻机制、刹车机制以及在线晋级机制等)作为模板的标配代码嵌入其中。二是在开发方中逐步构成基于业内风控理念和经过历史经验积聚上去的业务流程参考约束规范,把重要的业务步骤之间个性的合理顺序固化上去。秉持异样运维理念的开发方应该结合起来,构成共享可运维性模板的联盟。经过这样的做法,让区块链使用少走弯路。ChinaLedger白皮书2016版中零碎论述了如何在智能合约层面支持应急处置的成绩,有兴味的读者可以参阅。
第三,区块链绝不可以看成是一个“数据库”,更遑论“散布式数据库”。 拿区块链当数据库用,就会发现区块链只要创立和读取功用,没有修正和删除功用,就会得出“区块链不如数据库”的错误结论。其实,并不是区块链不如数据库,而是压根儿不应该把区块链这样来用。区块链上记载的不应该是业务数据,而只能是操纵业务数据的指令序列(或其日志)。区块链不是要取代数据库,而是要作为数据库的高牢靠性的前置。我们要求日志不可脱漏、不可窜改,但并不是说数据自身不可改动。把一系列操作依序记载在区块链上,然后到真正的数据库中依序执行这些可留痕、可审计、可追责的正常操作和应急操作,操作的最终后果写在真正的数据库而不是区块链中。一旦数据库发作成绩需求回滚,只需从区块链的特定高度停止重演,数据库自身的高可用架构也可因而大大简化。应急处置中假如需求对数据停止冲正,只需经过区块链添加一条冲正的数据操纵指令,这个应急处置行为自身既是需求特权答应的,也是留痕的、可审计的。
第四,经过分叉来修正区块链数据,即便在币圈,也相对不是值得倡导的事情。 分叉自身意味着账本的分裂,但在多条区块链经过跨链机制互联的场景下,会招致与之跨链互联的账本也跟着分裂。也就是说,当分叉遇到跨链,分叉会把原本在一条区块链内的运维成绩传导到另外的区块链中去,变成一个全网的运维成绩,从而大大添加全网的运维难度。所以,从可运维性的根本理念动身,不应该听任动辄分叉,而应该应用互联互通来反制那些轻率的分叉举动。
第五,有缺陷的区块链使用特别是智能合约使用上线,是一件非常风险的事情。 它不只能够影响本身的用户群和业务生态,还能够影响其他的用户群和业务生态。由此看来,当区块链技术和使用开展到一定阶段,对承载重要业务、运作重要资产的区块链实行某种方式的使用准入制,要求使用自带某种方式化验证的进程与后果,要求使用具有某种标配的应急处置功用,是非常必要的。
第六,区块链可运维性应该成为区块链正轨教育和区块链技术培训的必选内容。 只要让可运维性的理念和最佳理论不得人心,只要把不注重可运维性招致的结果充沛提醒出来,才干使区块链技术人才树立关于区块链技术的正确的知识构造。这些人到了使用开发第一线,才会愈加盲目地为区块链使用扎牢可运维性的篱笆。
总的说来,笔者以为,可运维性是区块链使用中不应被无视的重要诉求,必需从法律层面、行业最佳理论及规范化层面、用法层面加以引导和约束,使可运维性的诉求贯串区块链使用的一直。
*注:本文雷锋网 (大众号:雷锋网) 已发送转载请求,直至发稿前暂未收到回复,如有侵权,可联络雷锋网做相应处置。 我们也正在做着心目中属于未来的事业,那就是通过互联网金融创新,不断完善人与金融、货币之间的关系,让所有人都能享受到最好的金融服务 。
雷锋网版权文章,未经受权制止转载。概况见。