本节将指导您在 Artela 上使用示例 Aspect 构建 dApp。此 Aspect 作为原生扩展,与智能合约协同处理,并且可以在交易生命周期的各个阶段注入。在本例中,我们将展示 Aspect 如何识别并回滚特定交易。
确保您已安装最新版本的 Node.js 和 npm,首先安装 aspect-tool:
npm install -g @artela/aspect-tool
项目初始化:要使用 aspect-tool 启动项目,请按照以下步骤操作:
# 创建一个新目录并进入该目录
mkdir my-first-aspect && cd my-first-aspect
# 使用 aspect-tool 初始化 npm 项目
aspect-tool init
# 安装必要的依赖项
npm install
这将创建一个具有以下结构的项目目录:
.
├── README.md
├── asconfig.json
├── aspect <-- Aspect代码放在这里
│ └── index.ts <-- Aspect的入口函数
├── contracts <-- 智能合约放在这里
├── package.json
├── project.config.json
├── scripts <-- 实用脚本,包括部署、绑定等
│ ├── aspect-deploy.cjs
│ ├── bind.cjs
│ ├── contract-call.cjs
│ ├── contract-deploy.cjs
│ ├── contract-send.cjs
│ └── create-account.cjs
├── tests
└── tsconfig.json
在项目主目录的 contracts 项中,创建扩展名为 .sol 的智能合约源文件。
例如,创建一个 HelloWorld.sol 文件:
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.2 <0.9.0;
contract HelloWorld {
address private owner;
constructor() {
owner = msg.sender;
}
function isOwner(address user) external view returns (bool result) {
return user == owner;
}
// print hello message
function hello() public pure returns (string memory) {
return "hello";
}
// print world message
function world() public pure returns (string memory) {
return "world";
}
}