Creación y redacción de un proyecto de activos digitales
Puede utilizar Blockchain App Builder para crear y componer un proyecto de contrato inteligente para trabajar con activos digitales.
Blockchain App Builder para Besu genera un proyecto de Hardhat autónomo para tokens ERC-20 o ERC-1155. Puede elegir el estándar de token y las capacidades soportadas en la extensión. La función de compositor en Blockchain App Builder copia el SDK coincidente, crea el contrato de token Universal Upgradeable Proxy Standard (UUPS) concreto y agrega scripts para desplegar y actualizar el contrato inteligente.
Utilice la función Composer para crear un proyecto en el que el token ABI y el contrato de cuenta se derivan de un perfil de capacidad explícito. No despliega un token cuando crea el proyecto y no ejecuta el comando npm install automáticamente
Para poder crear y desplegar un proyecto de activos digitales, debe instalar la extensión Blockchain App Builder for Besu y abrir un espacio de trabajo de Visual Studio Code. Para desplegar el proyecto generado, se deben instalar Node.js y npm. También necesita una red accesible de Hardhat o Besu, una cuenta capaz de desplegar contratos y un UUID de gobernanza y contrato de gobernanza existente.
Los scripts de despliegue generados necesitan variables de entorno GOVERNANCE_ADDRESS y GOVERNANCE_UUID. La función de Composer enlaza este contexto de gobernanza a los proxies de token y cuenta generados; la activación del despliegue permanece sujeta al flujo de trabajo de gobernanza configurado.
Crear un Proyecto
- Abra la vista Módulos en la barra de actividad del creador de aplicaciones de blockchain para Besu.
- Seleccione Abrir compositor de módulos y, a continuación, seleccione el separador Compositor de módulos.
- En Crear nuevo proyecto de Hardhat, introduzca el nombre del proyecto y seleccione su carpeta principal. La función de composición crea el proyecto mediante la siguiente estructura de directorios:
<parent_folder>/<project_name>.El nombre del proyecto puede contener letras, números, puntos, guiones y guiones bajos, pero no puntos dobles (..). El Nombre del Proyecto debe empezar con una letra o un guion bajo y solo puede contener letras, números y guiones bajos. El destino debe estar vacío. La función de redacción no sobrescribirá una carpeta de proyecto que no esté vacía.
- Seleccione el estándar de token, el modo de composición y las capacidades, que se describen en la siguiente sección.
- Introduzca un nombre de contrato de Solidity. Por ejemplo, introduzca DepositToken.
- Revise la vista previa de la composición generada y, a continuación, seleccione Generar paquete.
Cuando la generación del proyecto se realiza correctamente, la extensión importa el proyecto a la vista Contratos.
Modos de composición
- Modo de composición estricto: el token generado hereda una base que solo expone las capacidades opcionales seleccionadas. Para agregar capacidades que no se hayan seleccionado durante la composición, se necesita una actualización de implantación.
- El token generado hereda una base de compatibilidad de superficie completa. La configuración de tiempo de ejecución controla los comportamientos aplicables, pero la superficie del método más amplia permanece en la ABI.
Redactar un proyecto ERC-20
- ERC-5892: back-end de control de acceso estándar.
- ERC-6617: back-end de control de acceso basado en bits.
A continuación, configure las capacidades que se describen en la siguiente tabla.
| Entrada | Valores | Notas |
|---|---|---|
| Menta | Desactivado, Directo, Aprobación necesaria | La aprobación necesaria agrega el flujo de trabajo de solicitud/aprobación. |
| Quema | Desactivado, Directo, Aprobación necesaria | La aprobación necesaria agrega el flujo de trabajo de solicitud/aprobación. |
| Retenible | Activado o desactivado | Admite los flujos de trabajo de retención. |
| Roles | Activado o desactivado | Activado automáticamente para flujos de trabajo de extracción de aprobaciones, grabación de aprobaciones o retenibles porque requieren autorización NOTARY. |
| Límites diarios | Activado o desactivado | Selecciona una variante de cuenta con o sin aplicación de límite diario. |
| Aprobaciones de varios niveles | Activado o desactivado | Activa las políticas de cuentas y aprobación y la ejecución de retenciones en secuencia de aprobación. Activa automáticamente la capacidad de retención. |
Los siguientes comportamientos siempre forman parte de un perfil generado por ERC-20: comportamiento transferible, operaciones delegadas, comportamiento pausable y flujo de aprobación de gobernanza. Los roles también forman parte del perfil cuando la función de redacción los ha activado automáticamente.
Por ejemplo, un token de combustión directa y de menta directa sin retenciones genera la base estricta ERC20DirectMintBurnUpgradeable. Al activar aprobaciones de varios niveles, se selecciona una base de aprobación retenible de varios niveles y se despliega la biblioteca ERC20MultiLevelApprovalHelperLib adicional.
Redactar un proyecto ERC-1155
Los proyectos ERC-1155 utilizan por defecto el backend de control de acceso ERC-5982. Seleccione un tipo de activo:
- Token fungible: clases de token con un suministro fungible.
- NFT completo: clases de NFT no fraccionadas.
- NFT fraccional: clases de NFT con propiedad fraccional.
- Tokens fungibles y no fungibles combinados: clases tanto para tokens fungibles como para NFT.
Configure la acuñación directa y la quema como activada o desactivada. La menta y la quema con aprobaciones no son compatibles con ERC-1155. La función de composición siempre incluye el comportamiento transferible, la aprobación delegada del operador (setApprovalForAll y isApprovedForAll), el comportamiento pausable, la gobernanza y el control de acceso ERC-5982.
Puede activar roles. Para los tipos de activos de NFT, también puede activar las NFT bloqueables. El bloqueo no está disponible para tokens fungibles y está desactivado cuando tanto la acuñación como la quema están desactivadas. El comportamiento divisible/indivisible se deriva del tipo de activo seleccionado, no se escribe por separado. No se admiten límites diarios, comportamiento retenible y aprobaciones de varios niveles.
El perfil combinado ERC-1155 utiliza la base ERC1155CombinedTokenUpgradeable de superficie completa incluso cuando se selecciona una composición estricta. Otros perfiles estrictos utilizan un tipo de activo y una base específica de menta/quemadura.
Contenido de proyecto generado
La función de redacción crea la siguiente estructura de proyecto.
<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.mdEl SDK que se encuentra en contracts/obp-sdk/ se copia en el proyecto generado y es propiedad del proyecto tras la generación. El manifiesto registra el estándar del token, el modo de composición, los contratos base y de cuenta seleccionados y el perfil de capacidad normalizado completo
Solución de errores de generación
| Mensaje o condición | Resolución |
|---|---|
Select one identity-permission module |
Elija ERC-5982 o ERC-6617 para ERC-20. |
Contract name must start with a letter/underscore |
Use un identificador de Solidity válido. |
Project name is required o nombre no seguro
|
Proporcione un nombre de proyecto simple sin separadores de ruta ni puntos dobles (..). |
Choose a parent folder |
Seleccione una carpeta principal absoluta en el compositor. |
| La carpeta de destino existe y no está vacía | Seleccione un nuevo nombre de proyecto o un destino vacío. La función de redacción no sobrescribirá los proyectos. |
| ERC-1155 no admite la acuñación o quema basada en la aprobación | Seleccione Desactivado o Directo para la extracción y grabación de ERC-1155. |
GOVERNANCE_ADDRESS and GOVERNANCE_UUID are required |
Configure ambos valores antes de ejecutar el script de despliegue generado. |
Después de generar un proyecto de contrato, puede utilizar el proyecto importado en la vista Contratos para compilar, desplegar y abrir formularios de despliegue o ejecución. Mantenga el manifiesto generado con el contrato; las herramientas de extensión utilizan el manifiesto para emparejar el token generado y las ABI de la cuenta con el perfil de compositor seleccionado.