Analisi di sicurezza dello Smart Contract ERC 1155 NFT

Analisi di sicurezza dello Smart Contract ERC 1155 NFT

Analisi della sicurezza dell'ERC 1155 NFT Smart Contract PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Tempo per leggere: 5 verbale

Devi aver sentito parlare dei token di criptovaluta. Vari token là fuori svolgono un ruolo vitale nell'ecosistema web3. Questi token rappresentano proprietà, ricchezza, credibilità e autorità nella criptovaluta. La parte divertente è che puoi anche creare il tuo token di criptovaluta. 

Questi token sono contratti intelligenti che coinvolgono varie funzioni per varie azioni come il trasferimento, il controllo del saldo, ecc. Puoi creare il tuo token creando un contratto intelligente per esso. Tuttavia, per garantire che il tuo token sia al sicuro e attribuirgli un senso di fiducia, ERC 20 è il standard di contratto intelligente che si consiglia di seguire per creare token fungibili e ERC 721 è lo standard del contratto intelligente che viene utilizzato per creare token non fungibili (NFT).

ERC 20 e ERC 721 sono protocolli di contratti intelligenti ampiamente accettati per la creazione di token. Forniscono un ambiente sicuro e affidabile per i token. E questi protocolli continuano a migliorare e continuano a migliorare. Un passo in quella direzione porta alla creazione di un nuovo protocollo di contratto intelligente ERC 1155 per i token. Vediamo di cosa si tratta.

1. Cos'è l'ERC 1155?

Tutti gli ERC, come 20 e 721, sono solo standard per la creazione di contratti intelligenti che si adattano a circostanze diverse per gli NFT. Abbiamo ERC 721 e token fungibili come USDT e DAI seguono gli standard ERC 20. ERC 1155 è uno standard che coinvolge le funzioni e le proprietà di ERC 20 e ERC 721.

Supponiamo che tu voglia creare un programma in cui crei più merci. Ad esempio, vuoi creare un gettone chiamato oro, un altro gettone chiamato argento e un re, e la logica dice che quello con più oro e argento sarà il re. Può esserci un solo re. È un protocollo semplice, ma per crearlo dovrai distribuire 3 contratti solo per le risorse, uno per un gettone d'oro, un altro per l'argento e uno per il re, che sarà ERC 721. Ma cosa succede se puoi distribuire solo un contratto che elenca tutti quei diversi token?

Questo è uno di questi problemi che ERC 1155 risolve. Non è necessario distribuire un contratto per ciascuno dei token che desideri sulla blockchain. Questo era uno di questi esempi di contratto ERC 1155. Indovina dove abbiamo bisogno di questo tipo di sistema con più risorse, alcune fungibili, altre non fungibili. La risposta è giochi web3. ERC 1155 offre agli sviluppatori di giochi Web3 scalabilità e sviluppo fluido per le transazioni on-chain.

1.1 ID token in ERC 1155

Devi essere consapevole di come è possibile controllare il saldo in diversi token ERC 20, puoi semplicemente chiamare saldoDi(indirizzo _proprietario) funzione e puoi ottenere quanti token contiene quell'indirizzo. Ma ERC 1155 si occupa di token diversi, quindi dobbiamo fornire ID diversi a token diversi. Quasi tutte le funzioni relative ai token prendono in almeno due parametri il tokenId (asset di cui vuoi informarti) e l'indirizzo di cui vuoi sapere.

Ad esempio, supponiamo che il contratto abbia 3 gettoni, oro, argento e re. Per sapere quanto oro ha un particolare indirizzo in quel protocollo, puoi invocare la funzione balanceOf(indirizzo _proprietario, uint256 _id) sullo smart contract. Supponiamo che il tokenId per l'oro sia specificato come 1. Quindi puoi chiamare equilibrioDi(0x4Bf9DeCE75Bc7C4a9054d5b3BB13D53543eE4096, 1).

2 Linee guida di audit per smart contract ERC 1155

ERC 1155 esiste da tempo e alcune funzionalità non sono disponibili nel normale protocollo ERC 20 o ERC 721, come il trasferimento batch. Inoltre, ERC 1155 è meno diffuso nello spazio di mercato, rendendo così quest'area un po' meno esplorata per molti sviluppatori. QuillAudits condivide approfondimenti cruciali per i protocolli che cercano di BUIDL su ERC 1155, in modo che possano contribuire a creare un ecosistema web3 più sicuro salvaguardando se stessi. 

2.1 Interfaccia ricevitore ERC 1155

Quando il nostro contratto ERC 1155 trasferisce le risorse a un altro contratto, che è generalmente un requisito nel protocollo di gioco web3, è IMPORTANTE avere l'interfaccia del ricevitore ERC1155 nel contratto di ricezione per la corretta transazione dei token.

Due funzioni che rientrano nell'interfaccia del ricevitore ERC 1155 sono: -

  • onERC1155Ricevuto(operatore, da, id, valore, dati)
  • onERC1155BatchReceived(operatore, da, id, valori, dati)

Entrambe le funzioni hanno funzionalità quasi simili, l'unica differenza è che quest'ultima è quando abbiamo a che fare con più di una transazione alla volta, quindi il nome batch, c'è una leggera differenza tra i parametri e i valori restituiti. Ma qui parleremo solo di onERC1155Recieved. 

Questa funzione NON DEVE essere richiamata al di fuori di un processo di conio o di trasferimento. Per accettare il trasferimento, deve restituire bytes4(keccak256(“onERC1155Received(address,address,uint256,uint256,bytes)”)) se il trasferimento è consentito.

Guardando i parametri: -

  1. operatore:- L'indirizzo che ha avviato il trasferimento (es. msg.sender) 
  2. from:- L'indirizzo che in precedenza possedeva il token
  3. id:- L'ID del token trasferito 
  4. valore:- Il numero di token trasferiti 
  5. dati:- Dati aggiuntivi senza formato specificato 

2.2 Nessuna funzione di approvazione ()?

Se hai mai lavorato con ERC 20 o ERC 721, ti saresti imbattuto nella funzione approve(), che consente ad alcuni indirizzi di prelevare i token approvati dal saldo del proprietario. Ad esempio, se A vuole autorizzare B a prendere 100 token DAI, allora A può chiamare la funzione di approvazione, dicendo che B ha diritto a 100 token DAI e, successivamente, B può effettuare una transazione con tale importo.

Ma ERC 1155 non ha un file approvare funzione per un singolo token. Noi abbiamo un setApprovalForAll(operatore indirizzo, bool approvato) funzione, che viene chiamata dal proprietario e accetta un operatore di parametro di indirizzo, che è l'indirizzo dello spender o quello a cui vogliamo approvare i nostri token. Quindi, non possiamo chiamare an approvare funzione o concedere l'approvazione per un singolo token dal nostro elenco di token ERC 1155, invece, tutti gli accessi al token verranno approvati contemporaneamente. Il team di sviluppo deve esserne consapevole. Se ignorato, questo può portare a enormi perdite e compromettere il protocollo.

2.3 Alcuni controlli regolari

Le due sezioni precedenti hanno esplorato due dei controlli unici relativi a ERC 1155. In questa sezione, eseguiremo alcuni controlli regolari che non richiedono una spiegazione molto approfondita.

  1. Attenzione agli ID: ogni funzione o interfaccia esterna che funziona con ERC 1155 deve avere l'ID token specificato per accettarlo come input.
  2. Burn/Mint:- Ogni volta che queste funzioni vengono chiamate, devono modificare solo il saldo e il totaleSupply per l'ID token specificato.
  3. Somiglianza ERC 20: - Molte proprietà sono come lo standard token ERC 20. Anche esaminare le linee guida sulla sicurezza per ERC 20 aiuterà in questa materia.
  4. Rientro: - Come discusso, ERC 1155 controlla l'interfaccia supportata nella logica di trasferimento. Quindi ci possono essere vari scenari che possono comportare vulnerabilità al rientro. Si consiglia di mantenere i modificatori di guardia di non rientro sulle funzioni applicabili.

3. CONCLUSIONE

L'ecosistema Web3 vede uno sviluppo continuo in standard regolari per migliorare la sicurezza e la funzionalità. ERC 1155 è un passo in quella direzione. Ma quando i nuovi standard vengono rilasciati, si crea una lacuna di conoscenza che coinvolge standard non molto comuni nei protocolli e comporta il rischio di uno spazio campione più piccolo per le misure di sicurezza. Questo è quando QuillAudits entra in scena con un team di esperti. Affrontiamo, analizziamo e troviamo diversi modi in cui il protocollo può essere compromesso e proteggiamo il protocollo dei nostri clienti con risultati incredibili. Visita il nostro sito Web e assicurati il ​​tuo progetto Web3!

17 Visualizzazioni

Timestamp:

Di più da quillhash