但是现在市场上还有一些更加底层的跨链技术,它们让两个区块链之间直接进行绑定或者直接进行比较底层的数据交换或者调用,而开放链访问协议不考虑两个不同的区块链或者两个不同的区块链协议之间的沟通,当然一切都是从应用这个角度来处理。
如果要类比,比如把区块链类比成一种,开放链访问协议就好比是一个应用,可以连接两个不同的,但这两个之间并不兼容和通讯,一致性完全靠应用维护。
如果要做跨链,就相当于在历史上曾经谈过的异构,不过在学术上做了很多研究之后,我们可以这样说——异构在商业上几乎完全失败了。因为今天没有看到任何一个异构扩散,它是一种技术理想主义。
不是说一个完全的跨链底层协议可能最终会失败,但是从类比的角度来讲,难度非常高,挑战非常大,开放链访问协议是实用主义设计,它能解决90%以上的问题。
冒志鸿:比如说在开放链访问协议里面有定了三个不同层次的API。
其中最基础的是level 1的API,它其实是个非常小的子集,因为区块链有些最基础的特点可以被抽象出来。
level 2比较有趣,我们并没有从今天的区块链来考虑,而是从做一个区块链的应用需要什么来考虑。所以,level 2的API是一个完全站在应用角度考虑的API集,这样的话不同的区块链就需要能适配level 2定义的接口,这就必然会导致level 2的接口由于某一些区块链实现不了。不过这个也不要紧,因为API里面就设计了能让你查询这个结构,下面的链不能实现。
level 3就是让程序可以绕过API的限制直接访问底层提供的接口,所以level3是底层不同的,看起来都是level 3,但是可能实现会区别很大。
一个应用如果确保只用level 1或者是level 2的话,那这个应用得就特别好,几乎不修改就可以换各种底层链。但是level 3的接口用得越多的话,就意味着你的上层协议还是会越多绑定在下体链的基础上。

如果用level1和level2的话,还需要做定制化设计。因为链式配器的这层已经帮你把这个事情处理了。如果用了level 3,毫无疑问,用了具体原生的特性,这个应用必然会跟下层区块链的距离会有一定程度的绑定。
冒志鸿:它是个微服务的架构,而同时又支持Serverless方式来开发Blocklet。这两者没有必然联系,但是略有点区别——微服务是一对功能单一的服务,不是把一堆功能放在一个服务里面。所以,一个完整的应用通常会有很多服务来协调。
举个例子,比如说用ArcBlock来设计,一个最终的应用可能在背后有好多个甚至十几个、几十个服务,每个服务基本上只干一件事情。我们的设计原则是—— 一次只做一个事情,但是把这个事情做好。
Serverless有相当多的服务是短暂型服务,而且负荷可能很不均衡。举个例子,假设用区块链做一个知识分享相关的应用,那么其中一些操作是非常少发生的,比如修改密码、名称、图标;但是给文章点赞,给文章支付小费等行为可能会不断地发生。
这种设计对开发者来说,首先是更低的成本,如果你的计算资源是以毫秒级来计费的,当一些功能不需要运行时,就不需要付费了。
冒志鸿:说它有很高的经济成本其实这句话不是完全正确,它对相对来讲规模不大的应用,对小规模的应用是更经济的,但是对超的应用,我相信其实是不够经济或者是最多是一样经济的。因为任何无服务器的系统后面有一个框架来支持,那个框架仍然带着服务,只不过就是无服务器这个框架做了更合理的调度,让你的应用不是那么繁忙的时候,就把你置换出去,让别的应用来运行。如果说你的应用非常开放,每时每刻都在运行你的运用的话,那么这种情况下,通常来说应该是更贵的。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-80977-3.html
美国被普京打了左边脸