'CryptoYC'
研究|中间件介绍
🌿

研究|中间件介绍

什么是中间件?

所谓中间件⼴义的理解就是不直接给⽤⼾提供价值,处于业务型的应⽤软件和系统软件之间的应⽤都叫中间件。(这⾥我们倾向于是对⼴义的中间件的理解,我们更多的是看中整个⼴义中间件这个⽣态位,⽽不是局限于某⼀细分的狭义中间件)总的作⽤是为处于⾃⼰上层的应⽤软件提供运⾏与开发的环境,帮助使⽤者灵活、⾼效地开发和集成复杂的应⽤软件。

举个例⼦,我们⽇常使⽤的APP,如今⽇头条、⽀付宝、微信等这些应⽤是直接⾯向⽤⼾的,就是业务型应⽤软件,我们会更熟悉这些⽇常接触到的应⽤。但还有⼀些应⽤是我们⼏乎不会感知到的,也就是专⻔⾯向开发者或者说⾯向官⽅操作系统所提供的各项功能和服务的应⽤,这类应⽤就是中间件,⽐如⾦蝶中间件或者 IBM 提供的⼀些应⽤服务器,⼜或者, 随着⼤量公司的业务向云上迁移,许多云⼚商也在提供云+中间件的服务,⽐如阿⾥云或者亚⻢逊云(AWS)。那么换到区块链领域呢?区块链⾥的中间件⼜如何理解,⼜有哪些项⽬值得关注呢?传统的中间件是基础软件的⼀个⼤类,也是传统分布式系统的⼀个概念,它并没有很严格的定义,⽽具体哪些属于区块链的中间件,也没有达成共识。在这⾥,我们把专为区块链⽹络本⾝或 DApp提供 功能和服务的应⽤定义为区块链的中间件(此为 Polkadot ⽣态研究院定义,仅供参考)。⽬前,已经有许多⽿熟能详的项⽬其实就属于区块链世界的中间件,⽐如帮助链上应⽤与链下数据以多种⽅式进⾏交互的预⾔机 Chainlink(token 名为 LINK),专⻔提供链上数据索引服务,打造区块 链世界的⾕歌的 The Graph(token 名为 GRT),以及可以让 DApp 快速接⼊以太坊的⼀个偏中⼼化的以太坊最⼤节点服务商 Infura 等等,我们可以根据这些项⽬的功能窥⻅中间件对于区块链的意义。

为什么区块链需要中间件?

现在许多区块链项⽬或者DApp并不是把代码开发出来就⾏,它还需要⼀些稳定⽽⾼效的运⾏环境,并需要⼀些其他的数据⽀持,没有这些基础,许多项⽬就难以运⾏。⽽中间件对于区块链的作⽤还是与它之于互联⽹⼀样⸺帮助区块链开发者灵活、⾼效地开发和集成各种功能,以保证项⽬安全稳定地运⾏。⽬前⼤部分DeFi 应⽤都是由数据驱动的,DeFi的开发者也许善于开发 DApp,但是DeFi 需要引⼊外部的数据,这就需要预⾔机。可术业有专攻,做⼀个预⾔机本⾝就是很困难的事,我们不可能要求 DeFi 开发者作为⼀个全才,把所有问题都⼀⼀攻克。现有的情况是专业的⼈做专业的事,擅⻓做预⾔机的团队做出了类似Chainlink 这样的项⽬,DeFi 开发者只需要直接接⼊Chainlink 获得它提供的数据⽀持就⾜够了。⽬前,Chainlink已为许多DeFi提供喂价服务,这也是为何 LINK能创出新⾼的逻辑。另⼀⽅⾯,DApp 需要从底层数据源获取和转换数据的解决⽅案,区块链数据以很难在应⽤中直接调取使⽤的格式存储。像之前提到的 The Graph,每⽉就要处理来⾃ Uniswap、CoinGecko、 Synthetix 等知名 DeFi 项⽬和数据分析公司超过40亿次关于价格、历史交易量、流动性等的数据查询请求。同样,The Graph 也⼀本万利地解决了各类项⽬对于链上数据索引的需求。如果条件允许的话,⼤部分开发者会选择更安全快捷的⾃建节点⽅式,然⽽⽬前的以太坊全节点运营和维护的成本⾼昂,并且许多节点不愿意将节点服务公开,这对于DApp开发者来说是⾮常难受的事,⽽Infura 就观察到了这个需求,通过为DApp开发者提供通⽤的以太坊节点服务以及提供免费的⼊⻔服务,吸引了众多开发者,Infura 迅速成为世界上最⼤的以太坊节点服务提供商,并为以太坊⽣态的繁荣⽴下了汗⻢功劳。

中间件⽅向

为了尽快缩⼩区块链开发和云端服务开发之间的差距,中间件协议需要改进的地⽅仍有很多:

1. 为开发模块提供更多的抽象性 与其在不同的⽣态系统之间筑起⾼墙,不如反其道⽽⾏之,在不同区块链之间架起流动性和开发者体验的桥梁。例如连接到跨链桥接器的模块,应该作为⼀个API 提供,这样⼀来,应⽤程序可以更容易地为他们的⽤⼾提供资产置换服务。

2. 更加注重终端⽤⼾体验 对于加密货币⽤⼾来说,要在不同的⽣态系统中使⽤应⽤程序是很有困难的。⾸先,将资产从⼀个区 块链换到另⼀个区块链上既费时⼜费⼒。⽽中⼼化的交易所往往作为 DeFi 的直接中介,但这其实已经违背了完全去中⼼化的⽬的。

3. 去中⼼化开发的加密货币激励机制 与云端服务和传统软件开发中的中间件相⽐,加密服务其实存在⼀些原⽣的优势,也就是加密经济激励机制。通过原⽣代币设计,中间件协议可以吸引开源开发者贡献并建⽴他们认为有价值的模块;随着更多⽤⼾使⽤这些产品,开发者可以得到相应的加密货币的奖励。与互联⽹中的中间件开发过程相⽐,区块链的创新空间显然更⼤,因为它允许⾃下⽽上的激励⽹络形成。

中间件分类

图片来源:https://www.chainnews.com/articles/435967841809.htm

实际上区块链中间件的分类⽐较笼统,这⾥给出⼀些细分的分类。注意:具体例⼦不⼀定局限于其分类,很多中间件在探索其他分类⽅向。

1. 标准化⼯具

◦ Web3.js

◦ Substrate: 下⼀代区块链创新框架.

2. 数据查询

◦ Covalent: ⼀个提供区块链数据查询与索引服务的开发者平台,通过提供统⼀的 API,让开发者能够更加便捷地调⽤链上数据,让整个区块链⽹络呈现更⾼的数据透明度和可⻅性。

◦ The Graph: ⽤于整理、归纳区块链数据的去中⼼化索引协议 (Decentralized Indexing Protocol) 。使⽤GraphQL来查询开放式API的应⽤被称作⼦图 (Subgraph) ,其⽤来检索⽹络上已经被索引的数据。开发者可以通过Graph创建完全在公共基础设施上运⾏且⽆需服务器的应⽤

3. 链下计算

◦ Taxa: ⼀个去中⼼化的、兼具隐私和性能、开发环境友好、可接⼊多个区块链平台的可信服务平台。

◦ iExec: 提供区块链上运⾏的分散式应⽤程序,以便可扩展、安全且轻松地访问所需的服务、数据集和计算资源。

4. 数据传输/解码

◦ Chainlink: ⼀种安全区块链中间件,旨在通过允许智能合约访问关键链外资源(例如数据流 (数据库)、⽹站(微信,淘宝等)API、 和传统的银⾏(⽀付宝、微信⽀付等)账⼾⽀付。

◦ Baseline: ⼀个中间件解决⽅案,⽤于⼤公司在以太坊区块链上进⾏私下通信和交易。

5. 跨链

◦ Automata Network: ⼀个中间件层,为当前的区块链应⽤带来隐私与完整性计算。

◦ Pocket Network: ⼀个去中⼼化的区块链⽹络,它将需求侧的开发者和应⽤与供应侧的区块链全节点运营商相匹配。

数据流通技术

这⾥需要指出的是,实现数据流通⼜不泄露⽤⼾隐私信息是很多中间件的⽬的。为了实现此⽬的,⽬前业内主流的思路有三种:

1. TEE:Trusted-Execution Environment(可信执⾏环境)纯硬件⽅案。这⽅⾯⽐较有代表性的, ⽐如微信指纹⽀付。它允许将敏感数据发送到⽹络,并保证没有⼈可以看到数据(甚⾄计算机的所有者都看不到)。这对于在许多不同的设备上分布处理⾮常有⽤。⼀个很好的应⽤是处理基因组数据。数据通常很敏感,但同时也很⼤,需要进⾏⼤量处理。TEE是⼀个很好的解决⽅案。这个⽅案特点是“⽤⼾信息仅保存在本地,在本地明⽂计算,⽹络只传输计算结果”。

2. HE:Homomorphic Encryption(同态加密), 这⾥⽤的最多的是零知识证明,详情⻅前⽂

3. sMPC:Secure Multi-Party Computation(安全多⽅计算),这个知识将在之后单开⼀篇⽂章介绍。⼀个常⽤的MPC⽅法叫Shamir’s Secret Sharing, ⼤致意思是将⼀个秘密拆开成n份,任意拿到不 少于k(<=n)份的成员可以还原此秘密((n,k)-SSS)。此⽅法保证任何少于k个成员的联盟⽆法单独还原数据。

参考⽂献

1. 中间件协议:为什么中间件协议对区块链⽣态系统⾄关重要?

2. 中间件定义:https://www.zvstus.com/article/news/1/75d87ffffe884a9e99ece7d355360000.html

3.中间件分类:https://www.chainnews.com/articles/435967841809.html

4. Taxa: ⾼性能隐私计算中间件,Taxa助推Web3交互式应⽤

5. iExec: 三分钟读懂分布式云计算平台 iExec:如何融合云计算与区块链?-SOSOB区块链热点资讯

6. Chainlink:https://zhuanlan.zhihu.com/p/34222944

7.Baseline:https://www.fx5578.com/news/32207.html

8. Automata: IOSG:解读⾼性能隐私中间件 Automata Network_区块链_汇查查

9. Pocket: 寻找下⼀个爆发热点:为什么中间件是重要的基础设施乐⾼