最后更新:2020-05-09 11:24:06 手机定位技术交流文章

免责声明:本文旨在传递更多的市场信息,不构成任何投资建议。这篇文章仅代表作者的观点,并不代表火星财经的官方立场。
边肖:记住要注意
资料来源:巴比特
作者:张凯翔,FISCO·BCOS的首席建筑师
什么是“上行链”?什么数据和逻辑应该被“链接”?文件可以上传吗?可以在链上检查批次数据吗?什么是“链条下”?
一篇文章清楚地解释了“链上”和“链外”的许多问题。
什么是“链上”和“链下”
块“链”的链,包括“数据链”和“节点链”。数据链是指以链结构组织块数据以形成数据检查和跟踪链的链;“节点链”是指通过网络连接在一起并相互共享信息的多个节点,其中一致节点共同执行一致算法来生成和确认块。
交易“上行链”的简要流程如下:
簿记员收集交易,并根据连锁数据结构将它们打包成“块”。一致性算法驱动每个人验证新块中的事务,以确保计算出一致的结果。数据被广播到所有节点并安全存储。每个节点将存储数据的完整副本。一旦事务被“向上链接”,这意味着它被完全执行,并且到达“分布式事务”。简而言之,这就像是一段已经被集体认可,然后在公告栏上公开的文章。这不是一个坏词,它是永久可见的,不能被改变。
“连锁”意味着“共识”和“储存”,两者缺一不可。没有共识,交易就不能保证一致性和正确性,也不能被链中的所有参与者所接受。协商一致后的数据不是由多方存储的,这意味着数据可能会单方面丢失或篡改,更不用说冗余了。
此外,如果只调用接口进行查询,不改变链接数据,也不需要一致确认,则不认为是“链接”。
或者,如果业务服务本身与区块链不直接相关,或者其业务流程不需要参与协商一致,并且生成的数据没有写入节点存储,则该业务服务被称为“链下服务”,无论它是与区块链节点一起部署在服务器上,还是甚至与节点流程一起编译。
当该服务调用区块链接口发送事务,事务完成“一致”和“存储”时,称为“上行”;如果这个交易没有按预期打包,那么它可以被称为“连锁失败”
事实上,几乎所有的区块链系统,尤其是与实体经济和现实世界相结合的区块链应用,都需要上下链合作,并采用“混合架构”来实现。该系统本身包含丰富的技术生态。
*注1:交易是区块链的通用术语,指发送到区块链的指令和数据的一部分,它改变了链上的数据和状态。
*注2:本节描述了一个简单的模型。在多层链和切片模型中,过程将更加复杂,事务划分将更加详细。然而,“共识”和“储存”的基本原则将保持不变。
交易之光与“连锁”之重
目前,区块链的底层平台正在逐步走向成熟。性能和成本不再是主要问题,但由于“分布式多方合作”,下列费用是固有的:
共识成本:在主流共识算法中,功率(工作量证明,即采矿)消耗电能;抵押资产获得簿记权的证明;PBFT(联盟链中常用的拜占庭容错算法)簿记员必须完成多次往返投票,过程步骤复杂。计算成本:除了加密解密、协议分析等计算外,为了验证合同的执行结果,所有节点都会在支持智能合同的区块链上任意执行合同代码,造成全身受到影响。网络开销:它与节点数量成指数比例。节点越多,网络传播的次数越多,带宽和流量开销就越大。如果数据包太大,情况会更糟。存储成本:它与节点数量成正比。链中的所有数据将被写入所有节点的硬盘。在一个有100个节点的链中,它变成100个副本。如果有1000个节点,则为1000份。有些人可能会说,“这是‘信任’的代价,是值得的!”我同意。只有理想不能脱离现实,毕竟硬件资源总是有限的。
想象一下,如果每个事务都是复杂的科学计算任务,那么每个节点的CPU和内存都将满负荷运行。如果每个事务包含一个大图片或视频,整个网络的带宽和每个节点的存储将很快被阻塞。如果每个人都公开滥用“连锁”资源,“公地悲剧”是不可避免的。
调用API进行交易很容易,链上的开销就像房间里的大象,所以很难视而不见。作为一个开发商,我们需要正视“轻交易、重连锁”,积极“连锁”,同时减少不必要的开支,并找到一个平衡的方法。
*注1:常规联盟链节点参考配置:8核/16G内存/10m外网带宽/4T硬盘,不包括“矿机”等特殊配置。土豪是自由的。俗话说,“钱能解决的问题不是问题,问题是……”注2:本节不讨论“局部/分裂的共识”或“平行扩展”。默认情况下,假设整个网络都参与共识和存储。
让“链条上”回归链条,“链条下”回归链条
支出只是一个成本问题,本质上,应该允许区块链做它最应该做的事情。关注供应链中的多方合作,尽快达成共识,建立或转移信任,并在刀刃上使用优质钢材。那些不是全球性的,不需要许多方面的一致意见,有大量的数据,并且计算复杂的都是在链下实现的,只有一个英雄和三个助手。
如何切割?在业务层面,找出多方合作和数据共享的“最大公约数”,抓住关键点和难点,全力以赴。从技术上讲,我们应该合理设计多层结构,扬长避短,因地制宜地应用各种技术,不要想拿着锤子看钉子,一蹴而就。
为了避免过于抽象,下面是一些例子。
*注意:每个例子实际上都有很多细节。考虑到长度,这里是一个简短的介绍,重点是上链和下链之间的差异和有机结合。
文件可以上传吗?
这是一个非常高频率的问题,经常被问到。这里的文件通常指图像、视频、PDF等。它们还可以引用大量的数据集。上传可信共享的目的是使收件人能够验证文件的完整性和正确性。
在常见的场景中,文件共享通常是本地和点对点的,而不是向每个人广播,这样区块链可以不加选择地存储大量数据,这将会不堪重负。因此,计算文件的数字指纹(MD5或HASH)并将其与其他可选信息(如作者、持有者的签名、访问地址等)联系起来是合理的。单个链接中没有太多信息。
文件本身存储在私有文件服务器、云文件存储或IPFS系统中。这些专业方案更适合维护海量文件和大文件,容量更大,成本更低。请注意,如果文件的安全级别达到“一个字节也不能泄露给无关人员”的级别,则应谨慎使用分布式存储方案IPFS,并且首选私有存储。
当文件需要与指定的朋友共享时,可以使用专用的传输通道来点对点发送文件,或者可以授权朋友下载到指定的网址,该网址可以与区块链的P2P网络隔离,并且不占用区块链的带宽。朋友获得文件后,他计算文件的MD5和HASH,并将其与链上的相应信息进行比较,以验证数字签名,并确保他收到正确完整的文件。
在该方案中,文档在链上被“认证”、“锚定”和“寻址”,明文在链下传输并在链上相互检查,从而在成本、效率和隐私安全性方面实现平衡。
如何批量查询和分析数据?
分析区块链的数据是一项自然要求,例如“一个账户参与了哪些业务流程,完成了多少交易,成功率是多少”,“某个记账节点参与了多少块记账操作,是否及时,是否存在欺诈行为”。这些逻辑将涉及时间范围、区块高度、交易发送和接收方、合同地址、事件日志、状态数据和其他维度。
目前,区块链的底层平台一般采用“键值”存储结构,具有极高的读写效率,但难以支持复杂的查询。
其次,复杂的查询逻辑一般在生成块后执行,时效性稍低,不需要多方协商,具有一定的“离线”性质。
最后,一旦数据“向上链接”,它就不会改变,只会增加而不会减少。数据本身具有明显的特征(如块高、相关HASH值、数字签名等)。)可以检查数据的完整性和正确性。无论是在链上还是链外处理,都没有区别。任何拥有完整数据的节点都可以支持独立和复杂的查询。
因此,我们可以从链中完全导出数据,包括从创建块开始到最新的所有块、所有事务流和收据、所有事务生成的事件、状态数据等。,全部写入关系数据库(如MySQL)或链外的大数据平台,以构建链上数据的“镜像”。然后我们可以利用这些引擎强大的索引模型、相关性分析、建模训练、并行任务能力,灵活全面地查询和分析数据。
区块链浏览器、运营管理平台、监控平台、监管审计等系统将采用这种策略。块将从链中取出,ETL将及时放入链下存储,经过本地化分析和处理后,如有必要,将与链进行交互,然后通过接口将事务发送给链。
复杂逻辑和计算
与复杂查询略有不同,复杂逻辑是指事务处理中具有复杂关系和复杂过程的部分。
如上所述,链中的智能契约将在所有节点上运行。如果智能合同写得太复杂或包含实际上不需要整个网络一致同意的冗余逻辑,整个网络将承担不必要的费用。最极端的例子是,契约写了一个超大数据遍历逻辑(甚至是一个死循环),所以整个网络中的所有节点都会陷入这种遍历,用裤子跑半天,甚至被拖死。
除了使用类似GAS的机制来控制逻辑长度,在允许的GAS范围内,我们建议智能合同的设计尽可能简洁。一个合同界面包含100多行代码,这就更加复杂了。我们可以考虑是否拆卸其中一些。
拆分的界限因企业而异,这是对熟悉企业的一个相当大的考验。开发人员需要以渐进的方式在层和模块中分离业务,并且只将涉及多方合作、需要共识、共享和宣传的业务流程部分放在链上,从而使合同只包含“必须”和“肯定”需要在链上运行的逻辑,并且合同逻辑“小而美”。
一般来说,多方见证的在线协作、公共账簿的管理以及必须与所有人共享的关键数据(或数据散列)都可以放在链上,但某些相关的前置或后续逻辑(如检查、会计和对账)可以在链下适当地分解。
一些与密集计算相关的逻辑应该尽可能在链下实现。例如,可以设计复杂的加密和解密算法来生成逻辑,以便在链下的证明链上进行快速验证。如果业务流程涉及各种数据的遍历、排序和统计,则在链下建立一个索引,并且只有键值才被准确地读取和写入链。
事实上,每当我看到现在契约中使用的映射或数组时,我都会着迷地思考是否可以将服务的这一部分置于链之下。我个人欣赏“胖链下”和“瘦链上”的设计取向。
应该强调的是,简化链中的合同逻辑并不完全是由于合同引擎的效率,它已经变得越来越快。其核心原因是在充分发挥区块链效应的同时避免“公地悲剧”。开发人员提出了计算和存储成本最低的合同,这具有奥卡姆的剃刀般的“必要时添加实体”之美,并对链中的所有参与者表现出尊重和负责任的态度。
即时消息:快速协商和响应
受队列调度、一致算法、网络广播和其他因素的限制,“上行”过程会有所延迟。随着工作负载链被证明是一致的,延迟在10秒到10分钟的范围内。有了DPOS和PBFT的共识,这种延迟可以缩短到第二个水平。此外,在网络波动和交易拥塞等特殊情况下,延迟性能会出现抖动。
一般来说,与毫秒或百毫秒响应的瞬时交互相比,“上行链”会显得有点“慢”。例如,如果你去超市买一瓶水,你一定不能站在那里,在付款后等十秒到十分钟以上,然后在确认连锁后离开(有点尴尬)。
对于类似的场景,宜将预存和链外支付结合起来,在链下点对点通道上实现高频率、快速、低延迟的交易,保证链下的正确接收和响应,最后汇总链上双方的账户余额和交易凭证,完成链上的正确记账。著名的“闪电网络”与这个模型相似。
此外,一些业务场景将从多轮订单匹配、竞争性拍卖或议价开始。一般来说,这些操作发生在本地交易对手之间,不一定需要整个网络的一致同意,因此也可以通过离线渠道完成。最后,双方的订单(包括谈判结果、数字签名和其他信息)可以被发送到链中以完成交易。
让我们举一个快速移动的例子。棋手的每一步都不需要实时链接。双方都倒下了,裁判和观众只是看着。例如,在游戏结束时,总共玩100步,然后收集100步的记录,并将其与获胜和失败的结果联系在一起,以便记录结果并分发奖金。如果你想重复象棋游戏的细节(如视频),你可以参考上面提到的离线文件存储模式,并使用专用服务器或分布式存储。
为了响应类似的要求,在FISCO BCOS底层平台提供了AMOP(链信使协议),通过使用已经建立的区块链网络,在整个网络上实现点对点、实时和安全的通信。基于AMOP,它可以支持即时消息、快速协商、事件通知、秘密交换、构造私人交易等。推荐。
*注:[·阿莫普]请参阅:
http://fisco-bcos-documentation . readthedocs . io/zh _ CN/latest/docs/manual/amop _ protocol . html
如何信任链下的信息?
让我们看一个典型的问题:“如果我想在智能合同的操作中使用链外信息,我应该怎么做?”
例如,在链条上有一个世界杯决赛猜谜游戏,但是不能在链条上玩世界杯。或者需要参考今天的天气,天气显然不是链上的主要信息,应该从气象局获得;在跨境业务中,可以使用合法汇率,汇率必须来自权威机构,不能由链上的空生成。
此时将使用“甲骨文”。链下的一个或多个可信机构将写下关于球类、天气、汇率等的信息。到公共合同链上。其他合同将使用一致确认的可信信息,没有歧义。考虑到安全性和效率,Oracle将有多种具体的方法,这些方法的实现非常有趣。
进一步的灵魂询问是:“如何确保链上的数据是真实的?”坦率地说,区块链无法从根本上保证该链下数据的可信度。它只能确保一旦信息被链接,整个网络是一致的,难以篡改。然而,当区块链与实体经济相结合时,必然会面临“如何可信对接”的问题。
例如,对于资产相关应用,除了人员管理之外,还需要“整合四个流程”,即“信息流、业务流、物流和资金流”进行匹配和交叉验证,这将使业务流程更加可信。这些“流动”经常发生在现实世界的链条下。为了控制它们,许多技术和方法如物联网(传感器、摄像机等。),人工智能(模式识别、联邦学习等。)、大数据分析、可信机构的认可等。这远远超出了区块链的范围。
因此,本节的命题实际上是:区块链如何与数字世界的技术广泛结合,更好地发挥其多党合作和建立信任的作用。
随着数字世界的发展,特别是“新基础设施”的大力推广,我们相信广泛的数字化可以在保护隐私的前提下降低信息收集和验证的成本,并且所收集的数据会越来越丰富。
例如,在使用、转移和回收实物材料时,及时收集和监测,甚至多方、多渠道、多维的收集和监测,以及在链上上下下的协商一致、宣传、锚定和交叉核对,可以逐步接近“实物世界可信连接”的效果,逻辑更严密,可信度更高,数据和价值流通更可靠,合作摩擦更低。
“链上”或“链外”治理?
“治理”是指制定行业联盟和业务运营规则,确保规则的实施,处理异常事件,奖励和惩罚参与者等。
在理想化的标准中,似乎应该实现链式治理。通过代码决策、规则制定和执行,系统在出错时具有“自我修复”的“超强能力”。事实上,一个完整的治理链过于复杂且难以实施,尤其是在现实世界中需要实现法律法规的实施时,单纯的治理链往往是不够的。
还有一步:如果你完全依赖代码,如果代码本身有缺陷或者需要被“修改”呢?供应链下的决策者和开发者是如何发现和干预的?
因此,“代码就是法律”仍然是一个理想化的目标,离线治理是不可或缺的。
联盟链的参与者组成一个管理委员会,在现实世界中根据民主集中制进行讨论和决策,共同制定规则,通过多重签名和工作流程共同发起治理行动,并调用块链接的上链。
在链上,包括区块链底层平台和智能合同,内置了一系列决策和控制点,如支持多方投票决策、从业务层到底层具有访问和权限控制能力、修改业务和节点参数、能够处理异常情况下的账户替换、纠正和调整错误账户等。
治理的行动和结果已经得到一致确认,并在整个链中变得有效。它们是公开和透明的,接受广泛的监督,并显示其合理性和公平性。如有必要,还可以引入监管机构和司法仲裁。
另一方面,联盟链上的数据具有知晓身份、不易篡改、不可否认、全过程可追溯的特点,可以为链下的治理决策提供完整的数据基础,也为链下的实际执行提供可信的凭证。因此,上下游的有机结合有助于设计一个完整、可控、可持续的治理机制。
如何“上”和“下”自如
有些人可能会说,“链条太复杂了,所以我想用区块链!”
我认为这种说法非常正确。毕竟,用户想要一个“链条”来利用。作为开发人员,我们需要构建一个灵活的插件式系统架构来实现各种功能,例如数据导出、文件存储和传输、密集计算、数据收集和异步上行链路、治理监督、一键部署...在根据需要选择之后,我们将它打包并开箱使用,实际上提供了“基于区块链的一系列能力”。
除了节点,最终呈现的“链”还包括一系列交互门户,如区块链浏览器、管理台、监控和审计系统、业务模板、应用程序/小程序等。用户只需移动鼠标、点击页面并调整界面,就可以在一站内体验完整的区块链应用程序。用户会觉得“这是块的链”,没有必要把它们分成“上”和“下”链作为一个整体。
说到这里,我推荐一个我认为非常好的设计:分布式身份识别(DID)。
DID是一套涵盖分布式身份管理和可信数据交换的标准。当局为用户完成KYC并颁发证书。对于用户来说,在链上发布他们的身份摘要并在链下存储他们的私有数据是非常重要的。
使用时,用户采用“明确授权”和“选择性披露”的策略。只需出示少量信息或加密证明,并与链上的数据进行比较,即可验证用户凭证和数据的可信度,从而达到“数据运行多,用户运行少”和保护用户隐私的可喜效果。
这种设计很好地结合了上下链,逻辑闭环是自洽的。它并没有因为数据存在于链下而削弱链的效率,而是使得链的信用模型更加重要。
DID规范定义了一个清晰的分层数据结构和一个通用的交互协议。开源项目伟德实体已经完全实现了DID协议,并提供了丰富的外围支持工具和服务,值得借鉴。
*注:[伟德实体]详情请访问:
https://fintech.webank.com/weidentity
结束语
链条很长,修远无穷无尽。我将“上下”寻找它。未来,“可信”的街区链将越来越多地与人们的日常生活和实体经济联系在一起,进入普通人的家庭。作为实践者,保持开放的心态,积极创新地将区块链与更多的技术结合起来。不管它是在链条上还是在链条下运作,只要它能解决问题并创造价值,它就是一条好链条。
本文由 在线网速测试 整理编辑,转载请注明出处。