币圈活动网:搜集全网最新优质可信的区块链空投币、糖果、代币、数字资产的实时空投信息,为区块链朋友提供优质、专业和安全的空投线报,分享代币空投,TOKEN空投,空投糖果,优质空投,数字货币糖果,虚拟货币空投,区块链空投,数字资产空投资讯,是一个值得收藏的空投糖果网站!Ctrl+D收藏本站。

作者:张开翔

来源:FISCO BCOS开源社区
什么是“上链”?什么数据和逻辑应该“上链”?文件能不能上链?链上能不能批量查数据?“链下”又是什么?
“链上”、“链下”许多问题,一文说清。
什么是“链上”和“链下”

一文说清“链上”和“链下”

区块“链”的链,包含“数据链”和“节点链”。数据链指用链式结构安排区块数据,构成数据校验和追溯的链条;“节点链”指多个节点经过网络连接在一起,相互同享信息,其间的一起节点则联合履行一起算法,发生并确认区块。
买卖“上链”的简要过程如下:
1、记账者们收录买卖,按链式数据结构打包成“区块”。
2、一起算法驱动大家验证新区块里的买卖,确保核算出一起的成果。
3、数据被播送到一切节点,稳妥存储下来,每个节点都会存储一个完好的数据副本。
买卖一旦“上链”,则意味着得到完好履行,达成了“分布式事务性”。简略地说,就像一段话经过集体核准后在布告板上公示于众,一字不错不少,永久可见且无法涂改。
“上链”意味着“一起”和“存储”,两者缺一不可。买卖不经过一起,则不能确保一起性和正确性,无法被链上一切参加者承受;一起后的数据不被多方存储,意味着数据有或许丢掉或被单独篡改,更谈不上冗余可用。
除此之外,假如仅仅是调用接口查询一下,没有改变任何链上数据,也不需求进行一起确认,则不算“上链”。
或许,某个事务服务本身和区块链并不直接相关,或其事务流程无需参加一起,所生成的数据也不写入节点存储,那么这个事务服务称为“链下服务”,不管它是否和区块链节点一起布置在一台服务器,乃至和节点进程编译在一起。
当这个事务服务调用区块链的接口发送买卖,且买卖完结“一起”和“存储”后,才称为“上链”;假如这个买卖没有按预期被打包处理,那么能够叫“上链失利”。
事实上,几乎一切的区块链体系,尤其是和实体经济、现实国际结合的区块链运用,都需求链上链下协同,用“混合架构“来完结,体系本身就包含丰厚的技能生态。
*注1:买卖(transaction)是区块链里的通用术语,泛指发往区块链,会改动链上数据和状况的一段指令和数据
*注2:本节描述的是简要的模型,在多层链、分片模型里,流程会愈加杂乱,事务划分更细,但“一起”和“存储”才叫上链的基本原则不变
买卖之轻和“上链”之重
现在区块链底层渠道逐渐趋于老练,性能和本钱现已不是什么大问题,只是以下几个开支是因“分布式多方协作”而先天存在的:
一起开支:主流一起算法里,PoW(工作量证明,也便是挖矿)消耗电力;PoS(权益证明)要典当财物获得记账权;PBFT(联盟链常用的拜占庭容错算法)记账者要完结多次往复投票,流程过程冗杂。
核算开支:除了加解密、协议解析等核算之外,在支撑智能合约的区块链上,为了验证合约的履行成果,一切节点都会无差别地履行合约代码,牵一发而动全身。
网络开支:与节点数呈指数级比例,节点越多,网络传达次数越多,带宽和流量开支越大,假如数据包过大,就更落井下石。
存储开支:和节点数成正比,一切的链上数据,都会写入一切节点的硬盘,在一个有100个节点的链上,就变成了100份副本,假如有1000个节点,那便是1000份。
或许有人会说:“这便是‘信赖’的本钱,值得的!”我同意。只是理想无法脱离现实,究竟硬件资源总是有限的。
幻想一下,假如每个买卖都是一个杂乱科学核算任务,那么每个节点CPU和内存会跑满;假如每个买卖都包含一个大大的图片或视频,那么全网的带宽,以及各节点存储很快被塞爆;假如大家都敞开来滥用“链上”资源,“公地悲剧”就不可避免。
调用API发个买卖是很简单的,而链上的开支就像房间里的大象,难以视而不见。作为开发者,需求正视“买卖之轻和链上之重”,积极“上链”的一起减少不必要的开支,找到平衡之道。
*注1:惯例联盟链节点参阅装备:8核/16G内存/10m外网带宽/4T硬盘,不考虑“矿机”和其他特种装备。土豪随意,俗话说“钱能解决的问题都不是问题,问题是...”
*注2:本节暂未评论“部分/分片一起”,也不探讨“平行扩容”的情况,默许假定全网参加一起和存储
让“链上”归链上,“链下”归链下
开支只是本钱问题,而本质上,应该让区块链干自己最该干的事情。链上聚焦多方协作,尽快达成一起,营建或传递信赖,将好钢用到刀刃上;那些非全局性的、无需多方一起的、数据量大的、核算冗杂的...通通放到链下完结,一个好汉三个帮。
怎么进行切割?在事务层面,辨认多方协作事务和数据同享中“最大公约数”,抓住要害痛点,四两拨千斤;在技能上,合理规划多层架构,扬长避短、因地制宜地运用多种技能,避免拿着锤子看什么都是钉子、一招打天下的思维。
为避免过于抽象,下面给出几个比方。
*注:每个比方其实都有大量的细节,考虑篇幅,这儿做概要介绍,聚焦链上链下的差异和有机结合
文件能不能上链?

一文说清“链上”和“链下”

这是个十分高频的问题,经常被问到。这儿的文件一般指图像、视频、PDF等,也能够泛指大体量的数据集,上链可信分享的意图,是使承受者能够验证文件的完好性、正确性。
常见的场景里,文件同享一般是部分的、点对点的,而不是播送给一切人,让区块链无差别地保存海量数据,会不堪重负。所以,合理的做法是核算文件的数字指纹(MD5或HASH),并与其他一些可选信息一起上链,如作者、持有人签名、访问地址等,单个上链信息并不多。
文件本身则保存在私有的文件服务器、云文件存储、或许IPFS体系里,这些专业计划更适合维护海量文件和大尺度文件,容量更高、本钱更低。注意,假如文件的安全级别到了“一个字节都不能泄露给无关人等”的程度,那么应慎用IPFS这种分布式存储的计划,优选私有存储方式。
需求分享文件给指定的朋友时,能够走专用传输通道点对点的发送文件,或许授权朋友到指定的URL下载,能够和区块链的P2P网络隔离,不占用区块链带宽。朋友获得文件后,核算文件的MD5、HASH,和链上对应的信息进行比对,验证数字签名,确保收到了正确且完好的文件。
这种计划,文件在链上“确权”、“锚定”和“寻址”,明文在链下传输并与链上互验,不管是本钱、功率、仍是隐私安全都取得了平衡。
怎样批量查询和剖析数据?

一文说清“链上”和“链下”

对区块链上的数据进行剖析是天然的需求,比方“某个账户参加哪些事务流程、完结了多少笔买卖、成功率怎么”,“某个记账节点在一段时间内参加了多少次区块记账、是否及时、有否做弊”,这些逻辑会牵涉到时间规模、区块高度、买卖收发两边、合约地址、事情日志、状况数据等维度。
现在区块链底层渠道一般是选用“Key-Value”的存储结构,其优势是读写功率极高,但难以支撑杂乱查询。
其次,杂乱查询逻辑一般是在区块生成后进行,时效性略低,且并不需求进行多方一起,有一定的“离线”性。
最终,数据一旦“上链”,就不会改变,且只增不减,数据本身有显着特征(如区块高度、相互相关的HASH值、数字签名等)能够查验数据的完好性和正确性,在链上仍是链下处理并无差异,任何具有完好数据的节点都能支撑独立的杂乱查询。
于是,咱们能够将数据完好地从链上导出,包含从创世块开始到最新的一切区块、一切买卖流水和回执、一切买卖发生的事情、状况数据等,通通写入链外的联系型数据库(如MySQL)或大数据渠道,构建链上数据的“镜像”,然后能够选用这些引擎强大的索引模型、相关剖析、建模练习、并行任务才能,灵敏全面地对数据进行查询剖析。
区块链浏览器、运营办理渠道、监控渠道、监管审计等体系,都会选用这种策略,链上出块,链下及时ETL入库,进行本地化地剖析处理后,如需求和链上进行交互,再经过接口发送买卖上链即可。
杂乱逻辑和核算 

一文说清“链上”和“链下”

和杂乱查询略有不同,杂乱逻辑指买卖流程中联系杂乱、流程冗杂的部分。
如上所述,链上的智能合约会在一切节点上运转,假如智能合约写得过于杂乱,或许包含其实不需求全网一起的多余逻辑,全网就会承当不必要的开支。极端的比方是,合约里写了个超级大的数据遍历逻辑(乃至是死循环),那么全网一切节点都会陷入这个遍历中,吭哧吭哧跑半天,乃至被拖死。
除了用相似GAS机制来控制逻辑的长度外,在答应的GAS规模内,咱们引荐智能合约的规划尽量精简,单个合约接口里包含的代码在百行以上就算是比较杂乱的了,能够考虑是否将一部分拆解出去。
拆解的边界因不同事务而异,较为检测对事务的熟悉程度。开发者要对事务进行庖丁解牛式地分层分模块解耦,仅将事务流程中牵涉多方协作、需求一起、同享和公示的部分放到链上,使得合约只包含“必须”“铁定”要在链上运转的逻辑,合约逻辑“小而美”。
一般来说,多方见证的线上协同、公共账本办理、一定要分享给整体的要害数据(或数据的HASH)都是能够放到链上的,但相关的一些前置或后续的查验、核算、对账等逻辑能够适当拆解到链下。
一些和密布核算有关的逻辑,宜尽量将其在链下完结,如杂乱的加解密算法,能够规划成链下生成证明链上快速验证的逻辑;假如事务流程中牵涉对各种数据的遍历、排序和核算,则在链下建立索引,链上仅进行Key-Value的精准读写。
其实,现在但凡看到合约里有用到mapping或array,我都会强迫症地想想能不能把这部分放链下服务去,个人比较欣赏“胖链下”和“瘦链上”的规划取向。
强调一下,精简链上合约逻辑,并不全是由于合约引擎的功率问题,合约引擎现已越来越快了。中心原因仍是在发挥区块链最大成效的一起,避免“公地悲剧”。开发者拿出核算和存储本钱最小的合约,有着“如无必要勿增实体”的奥卡姆剃刀式美感,更是对链上一切参加者表达尊重和负责任的态度。
即时消息:快速协商和呼应

一文说清“链上”和“链下”

受队列调度、一起算法、网络播送等因素约束,“上链”的过程多少都会有一点延时。选用工作量证明一起的链,时延在十几秒到10分钟,选用DPOS、PBFT的一起,时延可缩短到秒级,此外,假如遇到网络波动、买卖拥挤等特殊情况,时延体现会有抖动。
总的来说,对照毫秒或百毫秒级呼应的瞬时交互,“上链”会显得少许“愚钝”。比方去超市买瓶水,付出后肯定不能站在那里等十几秒到十分钟,链出块确认后才走吧(略为难)。
对相似场景,宜结合链上预存和链外付出,在链下的点对点通道完结高频、快速、低延时的买卖,链下确保收妥和呼应,最终将两边的账户余额、买卖凭证汇总到链上,在链上完结妥善记账。著名的“闪电网络”就相似这种形式。
另外,有些商业场景会先进行多轮的订单撮合、竞价拍卖或讨价还价。一般来说,这些操作是发生在部分的买卖对手方之间,未必需求全网一起,所以也能够经过链下通道完结,最终将两边的订单(包含两边商量成果、数字签名等信息)发送到链上,完结买卖事务即可。
举个下快棋的比方,棋手的每一步棋并不需求实时上链,两边只管啪啪地下,裁判和观众只管围观,在棋局结束时,比方总共下了一百手,那么将这一百手的记载汇总起来,连同输赢成果上链,以便记载战绩分配奖金。假如要复盘棋局概况(如视频),能够参阅上文提及的链下文件存储形式,用专用的服务器或分布式存储完结。
针对相似需求,在FISCO BCOS底层渠道中,供给了AMOP(链上信使协议),运用现已搭建起来的区块链网络,在全网规模完结点对点、实时、安全的通信。基于AMOP,能够支撑即时消息、快速协商、事情告诉、交流隐秘、构建私有买卖等,引荐。
*注:【AMOP】概况可参阅:
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/amop_protocol.html
链下信息怎么可信上链?

一文说清“链上”和“链下”

先看一个典型问题:“智能合约运转中要运用链外信息,怎样办?”
比方,链上有个国际杯决赛竞猜游戏,但国际杯不或许在链上踢吧;或许需求参阅今日的气候,气候显然不是链上原生信息,应该从气象局获取;在跨境事务中,或许用到法定汇率,而汇率一定是来自权威机构的,不能在链上随便生成。
这时候就要用到“预言机(Oracle)”,由一个或多个链下可信机构将球赛、气候、汇率等信息写到链上的公共合约,其他合约一起运用这份经过一起确认的可信信息,不会出现歧义。考虑到安全和功率,预言机(Oracle)会有多种具体做法,完结起来相当风趣。

一文说清“链上”和“链下”

更进一步的魂灵拷问是:“怎么确保上链的数据是实在的?”坦率地说,区块链并不能从根本上确保链下数据的可信性,只能确保信息一旦上链,便是全网一起且难以篡改的。而区块链跟实体经济结合时,势必要面对“怎么可信上链”这个问题。
如财物相关运用,除了进行人员办理之外,还要“四流合一”,即“信息流、商流、物流、资金流”相互匹配和穿插印证,会使事务流程愈加可信。这些“流”常常发生在链下现实国际,要把控它们,或许会用到物联网(传感器、摄像头号)、人工智能(形式辨认、联邦学**数据剖析、可信机构背书等多种技能和方式,这现已远远超出了区块链的规模。
所以,本节的命题其实是:区块链怎么和数字国际里的技能广泛结合,更好地发挥本身多方协作、营建信赖的作用。
随着数字国际的发展、尤其“新基建”的强力推动,咱们相信广泛的数字化能在维护隐私的前提下,下降信息收集和校验的本钱,收集的数据会越来越丰厚。
如在运用、搬运、回收实体物资时,及时收集监测,乃至是多方、多路、多维度立体化的收集监控,并上链进行一起、公示、锚定,链上链下穿插验证,这样就能够逐渐迫临“物理国际可信上链”的作用,逻辑会更紧密,更具有公信力,数据和价值流通会更可靠,协作的摩擦更低。
 "链上"仍是“链下"办理?

一文说清“链上”和“链下”

“办理”即拟定行业联盟和事务运作规矩,确保规矩的履行,处理异常事情,奖赏和惩戒参加者等。
以理想化的标准,似乎应该完结链上办理,经过代码决议计划、拟定和履行规矩,出错时体系具有“自修正”的“超才能"。实际上,齐备的链上办理过于杂乱,完结起来很有挑战性,尤其在需求达成现实国际法律法规的履行力时,纯链上的办理往往力不从心。
再多想一步:如完全依靠代码,万一代码本身有BUG、或许要“改需求”呢?链下的决议计划者、开发者怎么发现和介入?
所以,“Code is Law”仍是个理想化的目标,链下办理不可或缺。
联盟链参加者们组成办理委员会,在现实国际里进行民主集中制的评论和决议计划,一起拟定规矩,选用多签、工作流的方式一起发起办理动作,调用区块链接口上链。
在链上,包含区块链底层渠道和智能合约在内,都会内置一系列的决议计划和控制点,如支撑多方投票决议计划,具有从事务层穿透到底层的准入和权限控制才能,可修改事务和节点的参数,能应对异常情况的重置账户,对错账进行冲正调账等等。
办理动作和成果经过一起确认,在链上全网收效,公开透明,承受广泛监督,彰显其合理性和公正性。必要时还能够引入监管方和司法仲裁。
反过来,联盟链上的数据,具有身份可知、难以篡改、无法否认且可全程追溯等特色,可为链下办理决议计划供给齐备的数据基础,也便于为链下实际履行供给可信的凭证。所以,链上和链下有机结合,有助于规划齐备、可控、可持续的办理机制。
怎么做到“上” “下”自若
或许有人会说:“这链上链下什么的太杂乱了,我就想用区块链!”
我以为这个说法很对。提到底,用户就想要一条趁手的“链”。作为开发者,咱们要打造灵敏的、插件化的体系架构,完结各种才能,什么数据导出、文件存储和传输、密布核算、数据收集和异步上链、办理监管、一键布置......按需取舍后,打包起来开箱即用,实际上供给了“基于区块链的一系列才能”。
最终出现的“链”,除了节点之外,还有区块链浏览器、办理台、监控和审计体系、事务模板、APP/小程序等一系列交互进口,用户只需动动鼠标,点点页面,调调接口,一站式体验到一个完好的区块链运用。用户会觉得:“这便是区块链”,无需再分“链上”和“链下”,浑然一体。
提到这儿,引荐一个我以为十分棒的规划:分布式身份标识(DID)。
DID是一套涵盖了分布式身份办理、可信数据交流的规范。权威机构为用户完结KYC,颁布凭证。用户将身份标识的摘要公布到链上,而将自己隐私数据存在链下(这一点十分重要)。
运用时,用户选用“明确授权”和“选择性披露”的策略,仅需出示少数的信息或加密证明,与链上数据进行对照校验,即可证明用户凭证和数据可信性,达成了“数据多跑路,用户少跑腿”、维护了用户隐私的可喜作用。
这种规划很好地将链上链下结合起来,逻辑闭环自洽,并不由于数据存在链下,就削弱了链上的成效,反而使得链的授信模型更为重要。
DID规范界说了语义明晰、层次分明的数据结构,以及通用的交互协议。开源项目WeIdentity完好地完结了DID协议,并供给丰厚的周边支撑工具和服务,值得参阅。
*注:【WeIdentity】概况可见:
https://fintech.webank.com/weidentity
结语
链漫漫其修远兮,吾将“上下”而求索。在未来,“可信的”区块链将越来越多地和人们日常日子、实体经济联动,步入寻常百姓家。作为从业者,坚持开放的心态,积极而创新地将区块链与更多技能结合,不管运作于链上仍是链下,只要能解决问题、创造价值,便是一条好链。

视野开拓

生活水平这个要素所带来的影响,一方面是使得物质享受及维持生计这类较为隐晦的消费成分有所节制,另一方面又令子女数减少甚或没有,这也许在以从事学术研究的阶级中最为凸显。因为他们的生活被赋以在天赋及成就上都高人一等及凤毛麟角的特性,所以这些阶级依照惯例都被列在其财力品秩所应有的社会等级之上。在这种情况下,他们恰如其分的支出规模就相应地定得比较高,以至能留作生活其他用途的那一部分就格外的捉襟见肘。出于环境的压力,他们本身对这类事务何者为正当、何者为佳的习惯性观念,以及社会对有学问的人在财力礼仪上的期待,都是格外的高——这是以该阶级拥有财富及赚钱能力的普遍性,相对于那些社会地位和经济地位相当的非学者阶级来衡量的。在任何一个现代社会里,只要学术研究工作这类职业,不是像神职人员般成为被垄断的职业的话,从事学术研究工作的人们就难免要和财力在其之上的一些阶级打交道。这些财力较佳阶级所通行的高水平财力礼仪就随之渗进学者阶级中,而且是原封不动地照搬,少有闪失。如此一来,社会里没有一个阶级像学者阶级那将大部分财力用在炫耀性挥霍上。-《有闲阶级论》

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注