Aspect 引入了一种动态机制,以在区块链平台上实现系统级功能。Aspect 基本上类似于一个系统扩展,以 WebAssembly (WASM) 形式执行,可以绑定到任何智能合约上。这种特性提供了可以增强目标合约的功能或监控其活动,在满足预定义条件时触发特定操作的灵活性。
Aspect 的强大之处在于其基于 WebAssembly (WASM)。在 Artela 上,我们开发了一个专门的 WASM 运行时,名为 Aspect-Runtime,专用于在平台上执行 Aspects。Aspect Runtime 通过一组预定义的 host APIs 实现 Aspect 与区块链核心模块之间的交互。这些 APIs 使得 Aspect 具备多种能力,如读取区块链状态、调用智能合约、管理自身状态等。
有网站开发背景的人对于“中间件(middleware)”这个概念可能会比较熟悉。对于其他开发者,以下是更详细的说明。
拦截器是一段可以集成到 Web 服务器中以扩展其功能的代码。想象一下使用拦截器为网站服务器添加认证或日志记录功能,如下所示:
当接收到 HTTP 请求时,网站服务器的拦截器机制(在某些框架中称为中间件)允许开发人员创建模块来处理此传入请求,可以在主要处理之前或之后进行。例如,认证拦截器可以在请求到达核心逻辑之前验证用户凭据。这种设计模式使得认证和日志记录等功能模块化,确保设计的灵活性。
这种拦截器设置还支持共享上下文,使不同的中间件或路由器之间可以进行通信。例如,在认证用户之后,相关拦截器可以将用户数据存储在共享上下文中,后续的拦截器或路由处理器可以访问这些数据而无需重新加载。
相应地,Aspect 可以被视为智能合约的拦截器。想象一下在 Artela 上开发一个去中心化交易所并集成 Aspects:
正如拦截器可以增强网站框架,Aspect 也可以增强你的 dApps。它们支持模块化设计,并通过共享上下文促进模块间的通信。
在 Artela 中,我们提供了一个内置的扩展层,它位于应用层(包括智能合约)和基础层(区块链核心模块,如共识、内存池、P2P 网络)之间。这个扩展层允许开发人员为特定智能合约开发链级扩展,定制交易处理流程。
Aspect Core是一个系统模块,负责管理 Aspects 的生命周期,包括部署、执行、绑定、升级和销毁。它也作为一个系统合约部署在 0x0000000000000000000000000000000000A27E14
,可以通过 EVM 合约调用。Aspect 核心的实现是用本地代码编写的,以减少 VM 启动的开销。