创建和编写数字资产项目

您可以使用区块链应用程序构建器创建和编写智能合同项目,以使用数字资产。

Blockchain App Builder For Besu 为 ERC-20 或 ERC-1155 代币生成一个自包含的 Hardhat 项目。您可以在扩展中选择令牌标准和支持的功能。Blockchain App Builder 中的 composer 函数复制匹配的 SDK,创建具体的 Universal Upgradeable Proxy Standard (UUPS) 令牌合约,并添加用于部署和升级智能合约的脚本。

使用 composer 函数创建项目,其中令牌 ABI 和账户合同源自显式功能配置文件。它在创建项目时不会部署标记,并且不会自动运行 npm install 命令

您必须先安装 Blockchain App Builder for Besu 扩展并打开 Visual Studio Code 工作区,然后才能创建和部署数字资产项目。要部署生成的项目,必须安装 Node.js 和 npm。您还需要一个可访问的 Hardhat 或 Besu 网络,一个能够部署合同的账户,以及一个现有的治理合同和治理 UUID。

生成的部署脚本需要 GOVERNANCE_ADDRESS 和 GOVERNANCE_UUID 环境变量。编写器函数将此监管上下文链接到生成的账户和令牌代理;部署激活仍受配置的监管工作流约束。

创建一个项目

  1. 打开 Blockchain App Builder For Besu 活动栏中的 Modules(模块)视图。
  2. 选择 Open Module Composer ,然后选择 Module Composer 选项卡。
  3. 在创建新硬帽项目中,输入项目名称并选择其父文件夹。coompose 函数使用以下目录结构创建项目:<parent_folder>/<project_name>。

    项目名称可以包含字母、数字、句点、连字符和下划线,但不能包含双句点 (..)。项目名称必须以字母或下划线开头,并且只能包含字母、数字和下划线。目标必须为空。编写函数不会覆盖非空的项目文件夹。

  4. 选择令牌标准、组合模式和功能,将在以下部分中介绍这些功能。
  5. 输入 Solidity 合同名称。例如,输入 DepositToken 。
  6. 查看生成的组合预览,然后选择生成程序包。

项目生成成功后,扩展会将项目导入到合同视图中。

组成模式

缺省情况下,编写函数使用严格的编写模式。这两种模式都支持两种标记标准。
  • 严格组合模式:生成的标记继承仅公开所选可选功能的基础。要添加组合期间未选择的任何功能,需要进行实施升级。
  • 生成的标记继承了全表面兼容性基础。运行时配置控制适用的行为,但更广泛的方法表面仍保留在 ABI 中。

编写 ERC-20 项目

选择一个必需的身份权限模块:
  • ERC-5892:标准访问控制后端。
  • ERC-6617:基于位的访问控制后端。

然后,配置下表中介绍的功能。

输入 值 注释
铸造 禁用、直接、需要审批 需要审批将添加请求/审批工作流。
燃烧 禁用、直接、需要审批 需要审批将添加请求/审批工作流。
可暂挂 开启或关闭 支持暂挂工作流。
角色 开启或关闭 自动启用审批铸造、审批刻录或可暂挂工作流,因为它们需要 NOTARY 授权。
每日限额 开启或关闭 选择具有或不具有每日限制实施的帐户变体。
多级审批 开启或关闭 启用账户和审批策略以及按审批顺序执行的暂挂。它自动启用可控能力。

以下行为始终是 ERC-20 生成的配置文件的一部分:可转移行为、委托操作、可暂停行为和监管审批流。当编写函数自动启用角色时,角色也是配置文件的一部分。

例如,没有暂挂的直接刻录令牌会生成严格的基 ERC20DirectMintBurnUpgradeable。而是启用多级审批,选择可暂挂的多级审批库并部署额外的 ERC20MultiLevelApprovalHelperLib 库。

编写 ERC-1155 项目

ERC-1155 项目默认使用 ERC-5982 访问控制后端。选择一种资产类型:

  • 可替换令牌:具有可替换供应的令牌类。
  • 全 NFT:非分数级 NFT 类。
  • 小数 NFT:具有小数所有权的 NFT 类。
  • 组合可变代币和非可变代币:可变代币和 NFT 的类。

将直接铸造和刻录配置为启用或禁用。ERC-1155 不支持铸造和燃烧并获得批准。编写函数始终包括可转移行为、委托操作员批准(setApprovalForAll 和 isApprovedForAll)、可暂停行为、监管和 ERC-5982 访问控制。

您可以启用角色。对于 NFT 资产类型,您还可以启用可锁定 NFT。锁定不可用于可替换令牌,并且在禁用铸币和刻录时禁用。可分割/不可分割行为派生自所选资产类型,而不是单独输入。不支持每日限制、可控行为和多级别审批。

组合的 ERC-1155 配置文件使用全表面 ERC1155CombinedTokenUpgradeable 基数,即使您选择了严格的组合。其他严格的配置文件使用资产类型和薄荷/燃烧特定的基础。

生成的项目内容

编写函数创建以下项目结构。

<project>/
├── contracts/
│   ├── obp-sdk/                         # copied ERC-20 or ERC-1155 SDK source
│   └── <ContractName>/
│       ├── <ContractName>Upgradeable.sol
│       └── generated.manifest.json      # selected profile and generated paths
├── scripts/
│   ├── deploy/<contract-name>/deploy-<contract-name>.ts
│   └── upgrade/
│       ├── upgrade-<contract-name>.ts
│       └── upgrade-<contract-name>-account.ts
├── .obp-bap/
│   ├── plugins/                         # bundled Hardhat plugin archives
│   └── project.json                     # Composer project metadata
├── config/hardhat-env.ts
├── hardhat.config.ts
├── package.json
└── README.md

位于 contracts/obp-sdk/ 下的 SDK 将复制到生成的项目中,并在生成后由项目拥有。清单记录标记标准、组成模式、选定的基本合同和客户合同以及完整的规范化功能配置文件

排除生成错误

消息或条件 解决方法
Select one identity-permission module 为 ERC-20 选择 ERC-5982 或 ERC-6617。
Contract name must start with a letter/underscore 使用有效的 Solidity 标识符。
Project name is required 或不安全名称 提供不带路径分隔符或双句点 (..) 的简单项目名称。
Choose a parent folder 在作曲器中选择绝对父文件夹。
目标文件夹存在且不为空 选择新项目名称或空目标。编写函数不会覆盖项目。
ERC-1155 基于审批的铸造或燃烧不受支持 选择 Disabled 或 Direct 以进行 ERC-1155 铸造和燃烧。
GOVERNANCE_ADDRESS and GOVERNANCE_UUID are required 在运行生成的部署脚本之前配置这两个值。

生成合同项目后,您可以使用合同视图中的导入项目来编译、部署和打开部署或执行表单。将生成的清单与合同保持一致;扩展工具使用清单将生成的标记和帐户 ABI 与所选作曲者配置文件配对。