Création et rédaction d'un projet de ressources numériques

Vous pouvez utiliser Blockchain App Builder pour créer et composer un projet de contrat intelligent pour travailler avec des ressources numériques.

Blockchain App Builder For Besu génère un projet Hardhat autonome pour les jetons ERC-20 ou ERC-1155. Vous choisissez les fonctionnalités standard de jeton et prises en charge dans l'extension. La fonction de compositeur dans Blockchain App Builder copie le SDK correspondant, crée le contrat de jeton UUPS (Universal Upgradeable Proxy Standard) concret et ajoute des scripts pour déployer et mettre à niveau le contrat intelligent.

Utilisez la fonction Composer pour créer un projet dans lequel le jeton ABI et le contrat de compte sont dérivés d'un profil de capacité explicite. Il ne déploie pas de jeton lors de la création du projet et n'exécute pas automatiquement la commande npm install.

Pour pouvoir créer et déployer un projet de ressources numériques, vous devez installer l'extension Blockchain App Builder for Besu et ouvrir un espace de travail Visual Studio Code. Pour déployer le projet généré, Node.js et npm doivent être installés. Vous avez également besoin d'un réseau Hardhat ou Besu accessible, d'un compte capable de déployer des contrats et d'un UUID de gouvernance et de contrat de gouvernance existant.

Les scripts de déploiement générés nécessitent des variables d'environnement GOVERNANCE_ADDRESS et GOVERNANCE_UUID. La fonction Composer lie ce contexte de gouvernance aux mandataires de compte et de jeton générés ; l'activation du déploiement reste soumise au workflow de gouvernance configuré.

Création d'un projet

  1. Ouvrez la vue Modules dans la barre d'activité Blockchain App Builder for Besu.
  2. Sélectionnez Ouvrir Module Composer, puis sélectionnez l'onglet Module Composer.
  3. Dans Créer un projet Hardhat, entrez le nom du projet et choisissez son dossier parent. La fonction de coompose crée le projet à l'aide de la structure de répertoires suivante : <parent_folder>/<project_name>.

    Le nom du projet peut contenir des lettres, des chiffres, des points, des traits d'union et des traits de soulignement, mais pas des points doubles (..). Le projet doit commencer par une lettre ou un trait de soulignement et ne peut contenir que des lettres, des chiffres et des traits de soulignement. La destination doit être vide. La fonction Composer ne remplacera pas un dossier de projet non vide.

  4. Sélectionnez la norme de jeton, le mode de composition et les fonctionnalités, qui sont décrits dans la section suivante.
  5. Saisissez un nom de contrat Solidity. Par exemple, entrez DepositToken.
  6. Vérifiez l'aperçu de la composition générée, puis sélectionnez Générer un package.

Une fois le projet généré, l'extension importe le projet dans la vue Contrats.

Modes de composition

Par défaut, la fonction Composer utilise le mode de composition strict. Les deux modes sont pris en charge pour les deux normes de jeton.
  • Mode de composition stricte : le jeton généré hérite d'une base qui expose uniquement les capacités facultatives sélectionnées. Pour ajouter des fonctionnalités qui ne sont pas sélectionnées lors de la composition, une mise à niveau d'implémentation est requise.
  • Le jeton généré hérite d'une base de compatibilité pleine surface. La configuration d'exécution contrôle les comportements applicables, mais la surface de méthode plus large reste dans l'ABI.

Rédiger un projet ERC-20

Sélectionnez un module d'autorisation d'identité requis :
  • ERC-5892 : Back-end de contrôle d'accès standard.
  • ERC-6617 : Back-end de contrôle d'accès basé sur le bit.

Configurez ensuite les fonctionnalités décrites dans le tableau suivant.

Entrée Valeurs Notes
Menthe Désactivé, Direct, Approbation requise L'approbation requise ajoute le workflow de demande/approbation.
Brûlure Désactivé, Direct, Approbation requise L'approbation requise ajoute le workflow de demande/approbation.
Peut être maintenu Activé ou désactivé Prend en charge les workflows de blocage.
Rôles Activé ou désactivé Activé automatiquement pour les workflows d'extraction d'approbation, de gravure d'approbation ou pouvant être conservés car ils nécessitent une autorisation NOTARY.
Limites quotidiennes Activé ou désactivé Sélectionne une variante de compte avec ou sans application de limite journalière.
Approbations multiniveau Activé ou désactivé Active les stratégies de compte et d'approbation et l'exécution des blocages liés à l'approbation. Il active automatiquement la capacité de maintien.

Les comportements suivants font toujours partie d'un profil généré par ERC-20 : comportement transférable, opérations déléguées, comportement en pause et flux d'approbation de gouvernance. Les rôles font également partie du profil lorsque la fonction Composer les a automatiquement activés.

Par exemple, un jeton direct-mint, direct-burn sans mise en suspens génère la base stricte ERC20DirectMintBurnUpgradeable. L'activation des approbations à plusieurs niveaux sélectionne plutôt une base d'approbation à plusieurs niveaux pouvant être bloquée et déploie la bibliothèque ERC20MultiLevelApprovalHelperLib supplémentaire.

Rédiger un projet ERC-1155

Les projets ERC-1155 utilisent le back-end de contrôle d'accès ERC-5982 par défaut. Sélectionnez un type de ressource :

  • Jeton fongible : classes de jetons avec un approvisionnement fongible.
  • NFT entier : classes NFT non fractionnées.
  • NFT fractionnaire : classes NFT avec propriété fractionnée.
  • Jetons fongibles et non fongibles combinés : classes pour les jetons fongibles et les NFT.

Configurez l'extraction et la gravure directes comme étant activées ou désactivées. La menthe et la gravure avec des approbations ne sont pas prises en charge pour ERC-1155. La fonction Composer inclut toujours le comportement transférable, l'approbation déléguée de l'opérateur (setApprovalForAll et isApprovedForAll), le comportement suspendu, la gouvernance et le contrôle d'accès ERC-5982.

Vous pouvez activer les rôles. Pour les types d'immobilisation NFT, vous pouvez également activer les NFT verrouillables. Le verrouillage n'est pas disponible pour les jetons fongibles et est désactivé lorsque la frappe et la gravure sont désactivées. Le comportement divisible/indivisible est dérivé du type d'actif sélectionné, non saisi séparément. Les limites quotidiennes, le comportement pouvant être retenu et les approbations à plusieurs niveaux ne sont pas pris en charge.

Le profil combiné ERC-1155 utilise la base ERC1155CombinedTokenUpgradeable pleine surface même lorsque vous sélectionnez une composition stricte. D'autres profils stricts utilisent une base spécifique au type de ressource et à la menthe/brûlure.

Contenu du projet généré

La fonction Composer crée la structure de projet suivante.

<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

Le kit SDK situé sous contracts/obp-sdk/ est copié dans le projet généré et appartient au projet après sa génération. Le manifeste enregistre la norme de jeton, le mode de composition, les contrats de base et de compte sélectionnés, ainsi que le profil de capacité normalisé complet

Résoudre les erreurs de génération

Message ou condition Résolution
Select one identity-permission module Choisissez ERC-5982 ou ERC-6617 pour ERC-20.
Contract name must start with a letter/underscore Utilisez un identificateur Solidity valide.
Project name is required ou nom non sûr Indiquez un nom de projet simple sans séparateur de chemin ni point double (..).
Choose a parent folder Sélectionnez un dossier parent absolu dans le compositeur.
Le dossier cible existe et n'est pas vide Choisissez un nouveau nom de projet ou une destination vide. La fonction Composer ne remplacera pas les projets.
La frappe ou la combustion basée sur l'approbation ERC-1155 n'est pas prise en charge Sélectionnez Désactivé ou Direct pour la minage et la gravure ERC-1155.
GOVERNANCE_ADDRESS and GOVERNANCE_UUID are required Configurez les deux valeurs avant d'exécuter le script de déploiement généré.

Une fois le projet de contrat généré, vous pouvez utiliser le projet importé dans la vue Contrats pour compiler, déployer et ouvrir des formulaires de déploiement ou d'exécution. Conservez le manifeste généré avec le contrat ; les outils d'extension utilisent le manifeste pour associer le jeton généré et les ABI de compte au profil de compositeur sélectionné.