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
- Aprire la vista Moduli nella barra delle attività Blockchain App Builder For Besu.
- Selezionare Apri compositore modulo, quindi selezionare la scheda Compositore modulo.
- 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.
- Selezionare lo standard token, la modalità composizione e le funzionalità descritte nella sezione seguente.
- Immettere un nome contratto Solidity. Ad esempio, immettere DepositToken.
- 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
- 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
- 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.mdL'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.