摘要
Marlin使用易于验证的链下计算资源增强了智能合约的处理能力和表现力。
Marlin有两种产品,即Oyster和Kalypso,分别使用可信执行环境(TEE)和零知识证明来确保计算的正确性。
无服务器功能使开发人员能够“一劳永逸”地编写代码,从而从繁琐的软件开发和运维中解放出来。弹性伸缩和容错功能已融入Marlin协议。
开发人员通过GPU支持的网络使用智能合约调用来启用程序、发送输入并接收结果,从而使AI支持的DeFi App和游戏变得实用。
部署在Oyster上的后端可以公开HTTPS端点,支持在其上部署低延迟的订单簿交易平台、远程过程调用(RPC)网关或去中心化前端。
简介
区块链由重复处理各种交易的大量节点组成,以防止恶意用户一币多付或执行无效的交易。这往往会导致区块链变慢或费用昂贵。即使是像“汇总”这样的Layer 2扩展解决方案的功能也很有限,因为这些方案无法访问区块链的历史以计算信用评分、也不能运行大型机器学习模型来开发动态游戏,或者实现足够低的延迟来部署响应式的订单簿交易平台。
像Marlin这样的协处理器支持在链下节点上计算复杂的大型算法,还额外支持访问Web2 API和区块链历史。而且并非是在多个机器上评估相同的程序,而是在单个节点上执行每个程序,这样可以加快执行速度、降低成本并提高并行性。在无需重复计算的情况下保持原始程序结果的正确性是通过使用零知识(ZK)证明和可信执行环境(TEE)等软件结构来实现的,在这种结构中,计算的精简证据和证明能在链上以更快的速度和更低的成本进行验证。
什么是Marlin?
Marlin是一种可验证的计算协议,由去中心化的节点网络组成,支持任意程序在节点上执行。这些程序可以用Solidity、C++、Rust和Go等语言编写,也面向任何其他WASM环境,能部署在诸如Docker化的容器之类的单个Marlin节点上,并使用智能合约调用进行启用。
该协议可以确保程序在不受信任的第三方节点上链下运行时,仍能正确执行。程序的输出可以在链上中继或通过API端点提供。如果节点不可用或工作负载突然增加,该协议会自动创建新实例,为用户提供无服务器的接口。
发布历程
Marlin的简要发布历程如下:
2019年第四季度,OpenWeaver发布,支持在节点集群中部署低延迟的全球中继网络。
2020年第二季度,Marlin Cache发布,支持节点存储和提供经常访问的数据。
2020年第四季度,OpenWeaver部署在由800多个节点组成的名为Marlin Relay的公共网络上。
2021年第二季度,Polygon的Flashbots客户端mev-bor发布,通过Marlin Relay接收MEV捆绑。
2022年第二季度,Oyster使用TEE为网络增加了计算能力。
2023年第四季度宣布,Kalypso支持将零知识证明的生成外包给该网络。
Marlin如何运作?
作为去中心化计算网络,Marlin的架构针对三项任务进行了优化:
(i) 接收计算请求
(ii) 执行计算
(iii) 提供计算结果
本着去中心化的精神,任何人都可以自由加入该网络并执行这些任务。根据任务的不同,为各节点分配了不同的角色,即
网关节点
执行节点
监控节点
网关节点
网关节点负责接收请求并将请求转发到执行节点,可通过启用网关节点公开的HTTPS端点来发出计算请求。或者可以在区块链上部署中继合约,来使智能合约发出请求。网关监听源自中继合约的事件,然后指定执行节点来处理请求。
因此,网关即为事实上的负载均衡器,因为网关在转发请求之前会检查验证各节点是繁忙还是空闲。同样,网关也充当回传结果的渠道。网关可以根据用户发出请求的要求,进行智能合约交易并将结果传回链上。
无服务器执行:实际上,网关节点通过相同的属性监测执行节点何时利用率高或何时不可用。它们命令新的执行节点接管。由于网关与执行节点池的配合,开发人员无需选择和监控单个执行节点。
执行节点
执行节点包括日常使用的笔记本电脑和服务器,也包括专用硬件,如GPU、ASIC和FPGA。其任务是运行计算,例如交易引擎的匹配算法,链上类似计算的成本非常高。此外,这些节点还可以使用机器学习模型进行推断或生成零知识证明,这在链上是不可能实现的。
要执行的程序可以直接与执行节点共享,共享方式是将它们保存在交易的Calldata或IPFS上,然后通过在请求中提及交易或IPFS哈希将执行节点指向它们。程序可以用任何语言编写,因此程序还可以包括服务器,这些服务器可以在执行节点上运行并像去中心化后端一样为用户请求提供服务。
监控节点
监控节点检查网关节点和执行节点做出的服务级别保证(SLA),包括运行时间和网络的可达性。如果节点未达到预期的保证,则监控节点可以罚没其质押。因此,监控节点淘汰不诚信和低性能的节点,在保持网络诚信和高性能方面发挥着关键作用。
正确性保证
每个人都可以运行这些节点,如果执行节点返回错误的结果会怎样?如果在Oyster上运行的预言机返回了错误的资产价格,或永续合约交易平台误平仓了交易者的仓位,那么可能会出现很多问题。同样糟糕的是,节点运营商可能会像为信用评分服务提供支持的专有机器学习模型一样窥探私人数据。
为向用户提供安全执行的安心感,Marlin采用了两种技术:TEE和零知识证明。
可信执行环境(TEE)
TEE,即安全飞地是机器中的受保护系统,其中数据和代码在硬件级别与其他进程隔离。许多云服务提供商和服务器制造商都提供此类实例。Oyster执行节点利用TEE确保程序正确运行,因为操作系统或在其上运行的任何其他进程都无法访问TEE中的程序。
发送到TEE的数据通常仅在TEE内部进行加密和解密,从而防止将敏感信息泄露给节点运营商。在TEE中进行计算时,可以获得链上可验证的证明。
零知识(ZK)证明
零知识证明是一种加密方案,支持执行计算的人通过共享证明向他人证明结果是正确的。生成证明背后的密码学使其非常容易验证,但除非计算的确能正确执行,否则几乎不可能伪造。外包给Kalypso执行节点的计算会生成这样的证明,然后可以在链上进行验证。
Kalypso零知识证明者市场是基于订单簿的交易平台,其中任何人都可以创造任何零知识证明机制市场。生成零知识证明既耗时又昂贵,因此市场将资源受限的设备与闲置的硬件供应商连接起来,提高其收入和资源利用率。
Marlin有何独特之处?
Marlin是链下协处理器网络,而不是区块链,有以下几大优势:
可兼容任何区块链:Marlin能与任何Layer 1、Layer 2或汇总即服务提供商合作,来增强其计算能力。
链下数据访问:Marlin节点可以访问来自数据库、Web2 API或区块链存档节点的信息,这在链上是不可能的。
并行计算:Marlin上的协处理器节点不会重复执行相同的计算,而是支持每个节点同时执行不同的任务。
HTTPS端点:传输层安全性协议(TLS)连接可以在TEE内部终止,从而支持Oyster节点使用HTTPS连接发送/接收数据。
可兼容任何电路:与专用的零知识证明者网络不同,Kalypso是无许可型,支持为任何电路、zkVM或证明系统生成证明。
与大多数按交易进行计算的区块链系统不同,部署在Marlin上的程序可以永久运行,前提是相关的钱包继续为此付费。
什么是POND代币?
Marlin生态系统通过POND代币获得安全保障。质押POND才能加入该网络中的节点。如果参与者出现不当行为,则可能会损失质押的代币。这样可确保网络中的不同的参与者遵守协议规则。
结语
Oyster和Kalypso将Marlin定位为可靠的协处理器,为在任何Layer 1、Layer 2或汇总即服务提供商上构建的DApp服务。其可定制性质确保了DApp可以选择使用TEE、零知识证明或二者兼用,为链下计算提供安全性。其灵活性提供了多种部署方式、交互模式、编程语言和运行时环境。最后,其开放性支持任何人加入、提供算力并部署有趣的应用程序。