Creare e comporre un progetto di asset digitali

È possibile utilizzare Blockchain App Builder per creare e comporre un progetto di smart contract per lavorare con gli asset digitali.

Blockchain App Builder For Besu genera un progetto Hardhat autonomo per i token ERC-20 o ERC-1155. È possibile scegliere lo standard token e le funzionalità supportate nell'estensione. La funzione composer in Blockchain App Builder copia l'SDK corrispondente, crea il contratto token UUPS (Universal Upgradeable Proxy Standard) concreto e aggiunge script per distribuire e aggiornare lo smart contract.

Utilizzare la funzione composer per creare un progetto in cui il token ABI e il contratto conto derivano da un profilo di funzionalità esplicito. Non distribuisce un token quando crea il progetto e non esegue automaticamente il comando npm install

Prima di poter creare e distribuire un progetto di asset digitali, è necessario installare l'estensione Blockchain App Builder for Besu e aprire un'area di lavoro Visual Studio Code. Per distribuire il progetto generato, è necessario installare Node.js e npm. Hai anche bisogno di una rete Hardhat o Besu accessibile, un account in grado di distribuire contratti e un contratto di governance e un UUID di governance esistenti.

Gli script di distribuzione generati richiedono variabili di ambiente GOVERNANCE_ADDRESS e GOVERNANCE_UUID. La funzione composer collega questo contesto di governance ai proxy di account e token generati; l'attivazione della distribuzione rimane soggetta al workflow di governance configurato.

Crea progetto

  1. Aprire la vista Moduli nella barra delle attività Blockchain App Builder For Besu.
  2. Selezionare Apri compositore modulo, quindi selezionare la scheda Compositore modulo.
  3. In Crea nuovo progetto Hardhat, immettere il nome del progetto e scegliere la relativa cartella padre. La funzione coompose crea il progetto utilizzando la struttura di directory seguente: <parent_folder>/<project_name>.

    Il nome del progetto può contenere lettere, numeri, punti, trattini e caratteri di sottolineatura, ma non punti doppi (..). Il Nome progetto deve iniziare con una lettera o un carattere di sottolineatura e può contenere solo lettere, numeri e sottolineature. La destinazione deve essere vuota. La funzione di composizione non sovrascriverà una cartella di progetto non vuota.

  4. Selezionare lo standard token, la modalità composizione e le funzionalità descritte nella sezione seguente.
  5. Immettere un nome contratto Solidity. Ad esempio, immettere DepositToken.
  6. Rivedere l'anteprima della composizione generata, quindi selezionare Genera package.

Quando la generazione del progetto riesce, l'estensione importa il progetto nella vista Contratti.

Modalità di composizione

Per impostazione predefinita, la funzione di composizione utilizza una modalità di composizione rigorosa. Entrambe le modalità sono supportate per entrambi gli standard token.
  • Modalità composizione rigorosa: il token generato eredita una base che espone solo le capacità facoltative selezionate. Per aggiungere funzionalità non selezionate durante la composizione, è necessario un aggiornamento dell'implementazione.
  • Il token generato eredita una base di compatibilità completa. La configurazione runtime controlla i comportamenti applicabili, ma la superficie del metodo più ampia rimane nell'ABI.

Componi un progetto ERC-20

Selezionare un modulo di autorizzazione identità richiesto:
  • ERC-5892: back-end di controllo di accesso standard.
  • ERC-6617: back-end di controllo dell'accesso basato su bit.

Quindi configurare le funzionalità descritte nella tabella seguente.

Input Valori Note
Coniuge Disabilitato, diretto, approvazione obbligatoria L'approvazione richiesta aggiunge il flusso di lavoro di richiesta/approvazione.
Bruciatura Disabilitato, diretto, approvazione obbligatoria L'approvazione richiesta aggiunge il flusso di lavoro di richiesta/approvazione.
Bloccabile Attivo o spento Supporta i flussi di lavoro di blocco.
Ruoli Attivo o spento Abilitato automaticamente per la generazione dell'approvazione, la masterizzazione dell'approvazione o i flussi di lavoro bloccabili perché richiedono l'autorizzazione NOTARIA.
Limiti giornalieri Attivo o spento Seleziona una variante conto con o senza applicazione dei limiti giornalieri.
Approvazioni multilivello Attivo o spento Abilita i criteri di account e approvazione e l'esecuzione del blocco con sequenza di approvazione. Abilita automaticamente la funzionalità di blocco.

I seguenti comportamenti fanno sempre parte di un profilo generato da ERC-20: comportamento trasferibile, operazioni delegate, comportamento riutilizzabile e flusso di approvazione della governance. I ruoli fanno parte del profilo anche quando la funzione di composizione li ha abilitati automaticamente.

Ad esempio, un token direct-mint e direct-burn senza blocchi genera la base rigorosa ERC20DirectMintBurnUpgradeable. L'abilitazione delle approvazioni multilivello seleziona invece una base di approvazione bloccabile e multilivello e distribuisce la libreria ERC20MultiLevelApprovalHelperLib aggiuntiva.

Comporre un progetto ERC-1155

Per impostazione predefinita, i progetti ERC-1155 utilizzano il back-end di controllo dell'accesso ERC-5982. Selezionare un tipo di asset:

  • Token fungibile: classi di token con una fornitura fungibile.
  • NFT intero: classi NFT non frazionarie.
  • Fractional NFT: classi NFT con proprietà frazionaria.
  • Token fungibili e non fungibili combinati: classi per token fungibili e NFT.

Configura la visualizzazione diretta e la masterizzazione come abilitata o disabilitata. Stampaggio e masterizzazione con approvazioni non sono supportati per ERC-1155. La funzione di composizione include sempre il comportamento trasferibile, l'approvazione delegata dell'operatore (setApprovalForAll e isApprovedForAll), il comportamento sospendibile, la governance e il controllo dell'accesso ERC-5982.

È possibile abilitare i ruoli. Per i tipi di asset NFT, è anche possibile abilitare NFT bloccabili. Il blocco non è disponibile per i gettoni fungibili ed è disabilitato quando sia il minting che la masterizzazione sono disabilitati. Il comportamento divisibile/indivisibile deriva dal tipo di asset selezionato, non inserito separatamente. I limiti giornalieri, il comportamento bloccabile e le approvazioni multilivello non sono supportati.

Il profilo combinato ERC-1155 utilizza la base ERC1155CombinedTokenUpgradeable a superficie intera anche quando si seleziona una composizione rigorosa. Altri profili rigorosi utilizzano una base specifica per asset-type e mint/burn.

Contenuti progetto generati

La funzione di composizione crea la struttura di progetto seguente.

<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

L'SDK che si trova in contracts/obp-sdk/ viene copiato nel progetto generato ed è di proprietà del progetto dopo la generazione. Il manifesto registra lo standard del token, la modalità composizione, i contratti base e conto selezionati e il profilo di funzionalità normalizzato completo

Risoluzione dei problemi relativi agli errori di generazione

Messaggio o condizione Risoluzione
Select one identity-permission module Scegliere ERC-5982 o ERC-6617 per ERC-20.
Contract name must start with a letter/underscore Utilizzare un identificativo Solidity valido.
Project name is required o nome non sicuro Fornire un nome di progetto semplice senza separatori di percorso o punti doppi (..).
Choose a parent folder Selezionare una cartella padre assoluta nel compositore.
La cartella di destinazione esiste e non è vuota Scegliere un nuovo nome progetto o una destinazione vuota. La funzione di composizione non sovrascriverà i progetti.
ERC-1155 non supporta la coniatura o la combustione basata sull'approvazione Scegliere Disabilitato o Diretto per la generazione e la masterizzazione di ERC-1155.
GOVERNANCE_ADDRESS and GOVERNANCE_UUID are required Configurare entrambi i valori prima di eseguire lo script di distribuzione generato.

Dopo aver generato un progetto a contratto, è possibile utilizzare il progetto importato nella vista Contratti per compilare, distribuire e aprire i moduli di distribuzione o di esecuzione. Conserva il manifesto generato con il contratto; gli strumenti di estensione utilizzano il manifesto per associare il token generato e gli ABI dell'account al profilo compositore selezionato.