Digital Assets-Projekte erstellen und erstellen

Mit Blockchain App Builder können Sie ein Smart-Contract-Projekt erstellen und zusammenstellen, um mit digitalen Assets zu arbeiten.

Blockchain App Builder For Besu generiert ein eigenständiges Hardhat-Projekt für ERC-20- oder ERC-1155-Token. Sie wählen den Tokenstandard und die unterstützten Funktionen in der Erweiterung aus. Die Komposer-Funktion in Blockchain App Builder kopiert das entsprechende SDK, erstellt den konkreten UUPS-Tokenvertrag (Universal Upgradeable Proxy Standard) und fügt Skripte zum Deployment und Upgrade des Smart Contracts hinzu.

Verwenden Sie die Komponistenfunktion, um ein Projekt zu erstellen, bei dem der Token-ABI und der Accountvertrag aus einem expliziten Funktionsprofil abgeleitet werden. Beim Erstellen des Projekts wird kein Token bereitgestellt, und der Befehl npm install wird nicht automatisch ausgeführt

Bevor Sie ein Projekt für digitale Assets erstellen und bereitstellen können, müssen Sie die Erweiterung Blockchain App Builder for Besu installieren und einen Visual Studio Code-Workspace öffnen. Um das generierte Projekt bereitzustellen, müssen Node.js und npm installiert sein. Sie benötigen auch ein zugängliches Hardhat- oder Besu-Netzwerk, ein Konto, das Verträge bereitstellen kann, sowie einen bestehenden Governance-Vertrag und eine Governance-UUID.

Für die generierten Deployment-Skripte sind die Umgebungsvariablen GOVERNANCE_ADDRESS und GOVERNANCE_UUID erforderlich. Die Composer-Funktion verknüpft diesen Governance-Kontext mit den generierten Account- und Tokenproxys. Die Deployment-Aktivierung unterliegt weiterhin dem konfigurierten Governance-Workflow.

Projekt erstellen

  1. Öffnen Sie die Ansicht Module in der Aktivitätsleiste "Blockchain-App Builder für Besu".
  2. Wählen Sie Open Module Composer, und wählen Sie dann die Registerkarte Module Composer.
  3. Geben Sie unter Neues Hardhat-Projekt erstellen den Projektnamen ein, und wählen Sie den übergeordneten Ordner aus. Die Coompose-Funktion erstellt das Projekt mit der folgenden Verzeichnisstruktur: <parent_folder>/<project_name>.

    Der Projektname kann Buchstaben, Zahlen, Punkte, Bindestriche und Unterstriche enthalten, jedoch keine doppelten Punkte (..). Der Projektname muss mit einem Buchstaben oder Unterstrich beginnen und darf nur Buchstaben, Zahlen und Unterstriche enthalten. Das Ziel muss leer sein. Die Verfassen-Funktion überschreibt keinen nicht leeren Projektordner.

  4. Wählen Sie den Tokenstandard, den Kompositionsmodus und die Funktionen aus, die im folgenden Abschnitt beschrieben werden.
  5. Geben Sie einen Solidity-Vertragsnamen ein. Beispiel: Geben Sie DepositToken ein.
  6. Prüfen Sie die generierte Kompositionsvorschau, und wählen Sie Package generieren aus.

Wenn die Projektgenerierung erfolgreich ist, importiert die Erweiterung das Projekt in die Ansicht Verträge.

Kompositionsmodi

Standardmäßig verwendet die Compose-Funktion den strikten Kompositionsmodus. Beide Modi werden für beide Token-Standards unterstützt.
  • Strenger Kompositionsmodus: Das generierte Token erbt eine Basis, die nur die ausgewählten optionalen Funktionen bereitstellt. Um Funktionen hinzuzufügen, die während der Komposition nicht ausgewählt wurden, ist ein Implementierungsupgrade erforderlich.
  • Das generierte Token erbt eine Full-Surface-Kompatibilitätsbasis. Die Laufzeitkonfiguration steuert das anwendbare Verhalten, aber die breitere Methodenoberfläche bleibt in der ABI.

Erstellen eines ERC-20-Projekts

Wählen Sie ein erforderliches Identitätsberechtigungsmodul aus:
  • ERC-5892: Standard-Access Control-Backend.
  • ERC-6617: Bitbasiertes Access Control-Backend.

Konfigurieren Sie dann die in der folgenden Tabelle beschriebenen Funktionen.

Eingabe Werte Notizen
Prägen Deaktiviert, Direkt, Genehmigung erforderlich Die erforderliche Genehmigung fügt den Anforderungs-/Genehmigungsworkflow hinzu.
Brennen Deaktiviert, Direkt, Genehmigung erforderlich Die erforderliche Genehmigung fügt den Anforderungs-/Genehmigungsworkflow hinzu.
Feststellbar Ein oder aus Unterstützt Sperrenworkflows.
Rollen Ein oder aus Wird automatisch für Genehmigungs-Mining-, Genehmigungs-Brennen- oder sperrbare Workflows aktiviert, weil sie eine NOTARY-Autorisierung erfordern.
Tageslimits Ein oder aus Wählt eine Kontovariante mit oder ohne tägliche Durchsetzung.
Genehmigungen auf mehreren Ebenen Ein oder aus Aktiviert Account- und Genehmigungs-Policys und die Ausführung von Sperren nach Genehmigung. Es aktiviert automatisch die sperrbare Fähigkeit.

Die folgenden Verhaltensweisen sind immer Teil eines ERC-20-generierten Profils: übertragbares Verhalten, delegierte Vorgänge, pausierbares Verhalten und Governance-Genehmigungsablauf. Rollen sind auch Teil des Profils, wenn die Funktion "Verfassen" sie automatisch aktiviert hat.

Beispiel: Ein Direct-Mint-Token ohne Sperren generiert die strikte Basis ERC20DirectMintBurnUpgradeable. Wenn Sie mehrstufige Genehmigungen aktivieren, wird stattdessen eine sperrbare Genehmigungsbasis mit mehreren Ebenen ausgewählt, und die zusätzliche ERC20MultiLevelApprovalHelperLib-Bibliothek wird bereitgestellt.

ERC-1155 Projekt erstellen

ERC-1155-Projekte verwenden standardmäßig das Zugriffskontroll-Backend ERC-5982. Wählen Sie einen Assettyp aus:

  • Fungible token: Token-Klassen mit einer fungiblen Versorgung.
  • Ganzes NFT: Nicht-fraktionale NFT-Klassen.
  • NFT-Klassen mit Bruchteilen.
  • Kombinierte fungible und nicht fungible Token: Klassen für sowohl fungible Token als auch NFTs.

Direktes Prägen und Brennen als aktiviert oder deaktiviert konfigurieren. Minting und Brennen mit Genehmigungen werden für ERC-1155 nicht unterstützt. Die Compose-Funktion umfasst immer übertragbares Verhalten, die Genehmigung delegierter Operatoren (setApprovalForAll und isApprovedForAll), pausierbares Verhalten, Governance und ERC-5982-Zugriffskontrolle.

Sie können Rollen aktivieren. Für NFT-Assettypen können Sie auch sperrbare NFTs aktivieren. Das Sperren ist für fungible Token nicht verfügbar und deaktiviert, wenn sowohl das Prägen als auch das Brennen deaktiviert sind. Das Verhalten "Teilbar/Unteilbar" wird vom ausgewählten Assettyp abgeleitet und nicht separat eingegeben. Tägliche Limits, sperrbares Verhalten und Genehmigungen auf mehreren Ebenen werden nicht unterstützt.

Das kombinierte ERC-1155-Profil verwendet die vollflächige ERC1155CombinedTokenUpgradeable-Basis, selbst wenn Sie eine strenge Zusammensetzung auswählen. Andere strenge Profile verwenden einen Vermögensgegenstandstyp und eine mint-/brandspezifische Basis.

Generierte Projektinhalte

Die Verfassen-Funktion erstellt die folgende Projektstruktur.

<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

Das SDK, das sich unter contracts/obp-sdk/ befindet, wird in das generierte Projekt kopiert und gehört nach der Generierung dem Projekt. Das Manifest zeichnet den Tokenstandard, den Kompositionsmodus, die ausgewählten Basis- und Kontokontrakte sowie das vollständige normalisierte Funktionsprofil auf

Fehler bei der Generierung beheben

Meldung oder Bedingung Lösung
Select one identity-permission module Wählen Sie ERC-5982 oder ERC-6617 für ERC-20.
Contract name must start with a letter/underscore Verwenden Sie eine gültige Soliditätskennung.
Project name is required oder unsicherer Name Geben Sie einen einfachen Projektnamen ohne Pfadtrennzeichen oder doppelte Punkte (..) an.
Choose a parent folder Wählen Sie einen absoluten übergeordneten Ordner im Komponisten aus.
Zielordner ist vorhanden und nicht leer Wählen Sie einen neuen Projektnamen oder ein leeres Ziel. Die Verfassen-Funktion überschreibt keine Projekte.
ERC-1155 genehmigungsbasiertes Prägen oder Brennen wird nicht unterstützt Wählen Sie Deaktiviert oder Direkt für ERC-1155-Mining und -Brennen.
GOVERNANCE_ADDRESS and GOVERNANCE_UUID are required Konfigurieren Sie beide Werte, bevor Sie das generierte Bereitstellungsskript ausführen.

Nachdem Sie ein Vertragsprojekt generiert haben, können Sie das importierte Projekt in der Ansicht Verträge zum Kompilieren, Bereitstellen und Öffnen von Bereitstellungs- oder Ausführungsformularen verwenden. Bewahren Sie das generierte Manifest mit dem Vertrag auf. Erweiterungstools verwenden das Manifest, um das generierte Token und die Konto-ABIs mit dem ausgewählten Komponistenprofil zu koppeln.