1. 首页 > 快讯

区块链中间件是什么意思?

随着区块链的发展,对于区块链感兴趣的人越来越多,而在近几年,区块链中间件一词出现在人们视线中,众所周知,区块链结构多用于解决数据问题,在传统的技术服务架构中,而区块链中间件是属于集中处理数据分散连接前后两端的部分,不过这么说很多人对区块链中间件还是不了解,那么,区块链中间件到底是什么意思呢?下面小编就给大家详细说说区块链中间件是什么意思?

区块链中间件是什么意思?

中间件是一种独立的系统软件或服务程序,它是对象技术和分布式计算发展的产物。借助中间件软件在不同的技术之间共享资源,实现应用间的互联与操作。按照IDC 的分类方法,中间件可分为六类。分别是数据访问中间件、远程过程调用中间件、消息中间件、交易中间件、对象中间件等。

这个概念和定义,其实已经过时了,现在一般认为有两种定义:

广义的说,所有不直接给客户直接提供业务价值的软件,都是中间件。举例说明,nginx和WebSphere App Server、MySQL都是中间件,而一个营销系统或者CRM系统、小额信贷系统,则不是中间件。

狭义上说,处于基础设施层的软件与业务系统软件中间这一层的一些软件或者库、框架,我们叫中间件,不一定是独立的程序。这样就把上面提到的类似DB和Web Server之类的软件划分到基础设施层了。狭义的中间件比如缓存中间件、数据库中间件、消息中间件、服务化中间件、交易中间件、调度中间件、集成中间件等等。现在互联网上说的一般是这几个。

区块链中间件会是什么形态?

在整个行业进入大众视野中后,我们看到的公链最多,每个公链社区出现的时候都会在白皮书中,大谈其技术应用,从比特币网络到以太坊网络、EOS网络的共识迭代中,公链项目的创始团队不断将“分层”的概念说明的越来越清晰,也就是不同的节点在结构中行使不同的权限、功能。

传统的开发中,例如一个操作系统,也会分为底层、中间层、业务层。底层是架构,也是数据通讯的基础,中间层则涉及了为上下层做连接、双向服务的服务部分,例如web service。最上层也就是业务层。

对于公链来说,其分层的逻辑相同。公链的每一层因为承担了不同的能力,为了可以组合出更好的能力,每一层在功能上是分割的,在技术开发上则是不相关的,如果相互的分层中联系较多,被称为耦合度高,代表互相影响的关系越复杂,其中一个部分出现调整,就要调整相应的其他部分。

在开发中,需要对每一层从设计上做“解耦”,使每一层的设计相对简单。但这三层的设计,每一层单独的设计都要尽可能的设计成可以跑任何业务,也就是可以兼容各类其他的开发情况。相互间用尽可能窄的API来去完成调用。每一层间的关系互相依赖,但不耦合,每一层都可以独立起来,单独演变。

综上,我们可以想象,在底层,同一公链的不同的节点间和不同公链或“链”间会有广泛的数据交换,而数据有天然的聚合需求,同时也需要再处理再分类。在应用开发的可编辑能力这一点上,也需要有协作的可能。

中间件即可承担这些需要,那我们也就可以将区块链中间件分为三个部分组成,分别是:跨链访问中间件,链外协作层CryptoApps(可以有不同的命名方式);智能合约的可视化编辑器。

通过这些中间件的组成部分,我们希望达到哪些目标呢?终极目标是对DAPPS开发者隐藏开发的细节,开发者不需要了解区块链的技术,就可以做应用。我们通过中间件,对所有开发者提供统一的基础链访问接口。

现有的

互联网云服务提供者只需要增加功能编辑的代码,就可以与智能合约实现交互。跨链访问中间件,可以通过统一的API,在可视化界面实现部署智能合约。这也形成了对于区块链技术的封装和认知折叠。

以上就是区块链中间件是什么意思的相关内容,俗话说计算机领域的任何问题都可以通过一个中间层来解决,一方面,不少的中间件或者中间件提供的特性能力,会不断下沉到更基础的层面,比如我们可以看到很多数据库中间件,融入到了分布式数据库,另一方面,随着业务场景的细分和互联网分布式技术的发展,更多的中间件在各自的场景里涌现,因此区块链中间件是一个做标准化的工具,也是增长必然要实现的工具,而这个工具,将会成为公链增长和公链应用落地的核心竞争力。

区块链SPV第一次出现,是在中本聪论文中,中本聪论文简要地提及了SPV概念,也就是说SPV指的是支付验证,不是交易验证,两种验证还是有很大的区别的,交易验证非常复杂,而支付验则比较简单,对于现如今大多数的投资者来说,并不太了解区块链SPV是什么意思,那么,区块链SPV到底是什么意思呢?下面小编就给大家详细说说区块链SPV是什么意思?

区块链SPV是什么意思?

在比特币白皮书第八节中,提出一个概念“Simplified Payment Verification”,这个就是SPV,意思是:简单支付验证,一种即使没有完整交易记录,也能便捷、安全地验证支付的方法。

SPV 全称“ Simplified Payment Verification ”,常见翻译为简单支付验证。其目的是为了验证某笔交易是否存在,但并不能验证交易的合法性,这需要进行两步操作,第一步是确认交易支付是否被验证过,第二步是计算得到了多少确认数。

中本聪在论文里提及了这一概念:在不运行全节点时也依然有可能对交易进行验证,用户只需要保留最长链上的所有的区块头数据。简单而言就是:

如小黑给大白转了一个比特币,大白怎么才能知道币已经交易完成了呢?在去中心化的系统里找证人那是不太可能的。

按照传统的办法就是:大白需要下载下来所有的区块链账本,然后找到小黑的账户,先瞅瞅它之前是不是有这样一个比特币,并且有没有转给大白的记录。仅仅是第一步,就使得大白的存储量要爆掉。

每个比特币的区块容量是 1 MB ,区块头只有 80 KB ,因此只需要下载区块头就可以节省很多空间。

区块链SPV有什么意义?

1.它让比特币系统的使用更简单,更便捷。

如果没有SPV节点的存在,想要使用比特币系统来验证支付,就需要下载全节点,目前的比特币全节点账本已经达到几百G,非常不方便。

2.它为侧链技术提供了技术环境

侧链技术就是通过单向或双向锚定,使用主链上的通证,侧链通过哈希锁的方式,隔离出一个小的单元,做出满足未来持续增长的,对于性能、扩展性、易用性的现实需求,比如闪电网络、RSK的基本技术中就有SPV节点的影子。

以上就是区块链SPV是什么意思的相关内容,众所周知,SPV机制不仅节省了储存空间,减少了P2P网络带宽的浪费,使得普通用户在没有下载完整数据的情况下也可以操作,而且也给查账带来了极大方便,但是,由于SPV没有完整的区块数据,是无法验证交易不存在的,这种情况很容易导致双花的情况出现,而随机链接节点也有可能受到网络的恶意攻击。

SPV是什么?SPV是“Simplified Payment Verification”(简单支付验证)的缩写。中本聪论文简要地提及了这一概念,指出:不运行完全节点也可验证支付,用户只需要保存所有的block header就可以了。用户虽然不能自己验证交易,但如果能够从区块链的某处找到相符的交易,他就可以知道网络已经认可了这笔交易,而且得到了网络的多少个确认。

按照中本聪的原文,这里有个细节需要注意,SPV指的是“支付验证“,而不是“交易验证”。这两种验证有很大区别。

“交易验证”非常复杂,涉及到验证是否有足够余额可供支出、是否存在双花、脚本能否通过等等,通常由运行完全节点的矿工来完成。

“支付验证”则比较简单,只判断用于“支付”的那笔交易是否已经被验证过,并得到了多少的算力保护(多少确认数)。

考虑这样一种情况,A收到来自B的一个通知,B声称他已经从某某账户中汇款一定数额的钱给了A。去中心方式下,没有任何人能证明B的可靠。接到这一通知,A如何能判断B所说的是真的呢?

在比特币系统中,这一通知是以一个固定格式的“交易”来实现的,该交易中包含B的汇款账户支票、B的签名、汇给A的金额以及A的地址。

如果A想本人亲自验证这笔交易,首先,A要遍历区块链账本,定位到B的账户上,这样才能查看B所给的账户支票上是否曾经有足够的金额;接下来,A要遍历后续的所有账本,看B是否已经支出了这个账户支票上的钱给别人(是否存在双花欺骗);然后还要验证脚本来判断B是否拥有该账户的支配权。这一过程要求A必须得到完整的区块链才行。

但是,如果A只想知道这笔支付是否已经得到了验证(如果验证了就发货),他可以依赖比特币系统来快速验证。即,检查发生此项支付的那笔交易是否已经收录于区块链中,并得到了多少个确认。

原理:block header中有三个关键字段,一是prev_block_hash(前一区块的hash值,确保了区块链所记录的交易次序);二是bits(当前区块的计算难度), 三是merkle_root_hash(借助merkle tree算法,确保收录与区块中所有交易的真实性)。

验证某个交易是否真实存在时,理论上,用户可以通过以下方式进行验证:

(为了简化模型,我们假设用tx_hash来定位block。这种方法有被“交易可锻性”攻击的风险,实际应用中可以根据output_point来定位。)

0. 从网络上获取并保存最长链的所有block header至本地;

1. 计算该交易的hash值tx_hash;

2. 定位到包含该tx_hash所在的区块,验证block header是否包含在已知的最长链中;

3. 从区块中获取构建merkle tree所需的hash值;

4. 根据这些hash值计算merkle_root_hash;

5. 若计算结果与block header中的merkle_root_hash相等,则交易真实存在。

6. 根据该block header所处的位置,确定该交易已经得到多少个确认。

优点:极大地节省存储空间。减轻终端用户的负担。无论未来的交易量有多大,block header的大小始终不变,只有80字节。按照每小时6个的出块速度,每年产出52560个区块。当只保存block header时,每年新增的存储需求约为4兆字节,100年后累计的存储需求仅为400兆,即使用户使用的是最低端的设备,正常情况下也完全能够负载。

问题:如何才能通过tx_hash定位到该交易所在的区块? 以往的比特币协议中缺少对此的支持。

比特币钱包

在进一步讨论SPV的实现之前,先要说明一下比特币钱包存放的是什么,钱包和私钥之间是什么关系?

既然用到“钱包”一词,那么应该与我们日常生活中使用的钱包有一定的相似之处。为了更直观说明,我们与日常生活中所使用的钱包做一下对比。

日常生活中里面存放的可能是纸币、支票、印鉴等等(为了简化说明,我们把银行卡排除在外,使用银行卡涉及到很多中间环节,增加表述上的复杂度)。

用纸币购物时,

1. 从钱包中凑足若干张不同面值的纸币,计算总面值是否大于所需金额以及应找回多少零钱;

2. 将这些纸币直接交给卖方;

3. 卖方验证这些纸币的真伪;

4. 卖方计算这些纸币的面值是否大于或等于商品价格,并找回相应的零钱。

5. 将收到的零钱放回钱包。

比特币的钱包里存放的相当于是一张张标有面值的“一次性支票”和对应的“印鉴”。支付时,

1. 用户从钱包中取出若干张“一次性支票”,自己计算总面值是否大于所需金额以及应找回多少零钱,注意要扣除比特币系统所收取的手续费;

2. 给卖方开一张支票,注明卖方地址和支付金额;如果需要找零,给自己开一张找零支票(写上自己的地址和找零金额);

3. 在每张从钱包中取出的支票上加盖对应的印鉴,确认支付权;

4. 将这些票据提交给比特币系统,比特币系统验证支票的真伪和支付是否有效。

5. 若比特币系统验证通过,收款方将收到的支票放入钱包。用户则将自己钱包中的已支付的支票丢弃(这些支票已经被比特币系统视为无效了,无法继续使用),

即使是刚接触比特币的人,估计也能猜出“印鉴”指的是“私钥”。但“一次性支票”是什么?

比特币系统中,这种“一次性支票”的术语是UTXO,全称是Unspent Transaction Outputs(未花费的交易输出)。区块链是一个收录所有历史交易(Transaction)的总帐,每个区块(block)中包含若干笔交易记录。

每个交易记录由两部分构成:资金来源(可以有多个来源)和资金去向(可以有多个去向),术语为Tx_in(交易输入)和Tx_out(交易输出)。也就是说,每笔交易TX包含有若干个Tx_in和若干个Tx_out。

除创世区块中的交易(genesis block)外,每笔交易必须要有资金来源。资金来源有两种,一种是挖矿奖励(依照固定算法实现的货币发行),出现在每个block的第一笔交易中;另一种是先前的交易中未曾使用的某个Tx_out(交易输出),即UTXO。支出方要出示证据来证明自己对该Tx_out拥有所有权,而比特币系统则要验证该Tx_out是否真的未被花费(是否是UTXO)以及支出方是否有权将其花费。

 1/4    1 2 3 4 下一页 尾页

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.longfuchaju.com//kuaixun/4637.html

联系我们

在线咨询:点击这里给我发消息

微信号:wx123456