Beveiligingsanalyse van het ERC 1155 NFT Smart Contract

Beveiligingsanalyse van het ERC 1155 NFT Smart Contract

Beveiligingsanalyse van het ERC 1155 NFT Smart Contract PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Leestijd: 5 minuten

Je hebt vast wel eens gehoord van cryptocurrency-tokens. Verschillende beschikbare tokens spelen een cruciale rol in het web3-ecosysteem. Deze tokens vertegenwoordigen eigendom, rijkdom, geloofwaardigheid en autoriteit in cryptocurrency. Het leuke is dat je ook je cryptocurrency-token kunt maken. 

Deze tokens zijn slimme contracten met verschillende functies voor verschillende acties, zoals overdracht, saldocontrole, enz. U kunt uw token maken door er een slim contract voor aan te maken. Maar om ervoor te zorgen dat uw token veilig is en er een gevoel van vertrouwen aan te hechten, is ERC 20 de slimme contractstandaard dat wordt geadviseerd om te volgen om fungibele tokens te maken, en ERC 721 is de slimme contractstandaard die wordt gebruikt om niet-fungibele tokens (NFT's) te maken.

ERC 20 en ERC 721 zijn algemeen aanvaarde slimme contractprotocollen voor het maken van tokens. Ze bieden een veilige en betrouwbare omgeving voor de tokens. En deze protocollen blijven verbeteren en worden steeds beter. Een stap in die richting leidt tot de creatie van een nieuw ERC 1155 smart contract-protocol voor tokens. Laten we eens kijken wat het is.

1. Wat is ERC 1155?

Alle ERC's, zoals 20 en 721, zijn slechts standaarden voor het maken van slimme contracten die passen bij verschillende omstandigheden voor NFT's. We hebben ERC 721 en vervangbare tokens zoals USDT en DAI volgen de ERC 20-normen. ERC 1155 is een standaard met ERC 20- en ERC 721-functies en -eigenschappen.

Stel dat u een programma wilt maken waarin u meerdere artikelen maakt. U wilt bijvoorbeeld een token met de naam goud maken, een ander token met de naam zilver en รฉรฉn koning, en de logica zegt dat degene met meer goud en zilver de koning zal zijn. Er kan maar รฉรฉn koning zijn. Het is een eenvoudig protocol, maar om dit te maken, moet u 3 contracten inzetten alleen voor activa, een voor een gouden token, een andere voor zilver en een voor de koning, wat ERC 721 zal zijn. Maar wat als u alleen kunt inzetten รฉรฉn contract met al die verschillende tokens?

Dit is zo'n probleem dat ERC 1155 oplost. U hoeft geen contract te implementeren voor elk van de tokens die u op de blockchain wilt hebben. Dit was zo'n voorbeeld van een ERC 1155-contract. Raad eens waar we dit type systeem met meerdere activa nodig hebben, sommige fungibel, sommige niet-fungibel. Het antwoord is web3-games. ERC 1155 stelt Web3-game-ontwikkelaars in staat schaalbaarheid en soepele ontwikkeling voor on-chain transacties mogelijk te maken.

1.1 Token-ID's in ERC 1155

U moet weten hoe het saldo in verschillende ERC 20-tokens kan worden gecontroleerd, u kunt gewoon bellen balanceOf(adres _eigenaar) functie, en u kunt zien hoeveel tokens dat adres bevat. Maar ERC 1155 behandelt verschillende tokens, dus we moeten verschillende ID's aan verschillende tokens geven. Bijna elke functie met betrekking tot tokens neemt in ten minste twee parameters de tokenId (activum waarover u informatie wilt opvragen) en het adres waarover u informatie wilt weten.

Laten we bijvoorbeeld zeggen dat het contract 3 tokens heeft, goud, zilver en koning. Om te weten hoeveel goud een bepaald adres in dat protocol heeft, kun je de functie balanceOf(adres _eigenaar, uint256 _id) op het slimme contract. Stel dat de tokenId voor goud is opgegeven als 1. Dan kunt u bellen saldovan(0x4Bf9DeCE75Bc7C4a9054d5b3BB13D53543eE4096, 1).

2 Auditrichtlijnen voor slimme contracten ERC 1155

ERC 1155 bestaat al een tijdje en sommige functies zijn niet beschikbaar in het reguliere ERC 20- of ERC 721-protocol, zoals batchoverdracht. Ook komt ERC 1155 minder vaak voor in de marktruimte, waardoor dit gebied voor veel ontwikkelaars iets minder verkend wordt. QuillAudits deelt cruciale inzichten voor de protocollen die op zoek zijn naar BUIDL op de ERC 1155, zodat ze kunnen helpen een veiliger web3-ecosysteem te creรซren door zichzelf te beschermen. 

2.1 ERC 1155-ontvangerinterface

Wanneer ons ERC 1155-contract activa overdraagt โ€‹โ€‹naar een ander contract, wat over het algemeen een vereiste is in het web3-spelprotocol, is het BELANGRIJK om de ERC1155-ontvangerinterface in het ontvangende contract te hebben voor een succesvolle transactie van de tokens.

Twee functies die onder de ERC 1155-ontvangerinterface vallen, zijn:

  • onERC1155Ontvangen(operator, van, id, waarde, gegevens)
  • onERC1155BatchOntvangen(operator, van, id's, waarden, gegevens)

Beide functies hebben bijna dezelfde functionaliteit, het enige verschil is dat de laatste is dat wanneer we met meer dan รฉรฉn transactie tegelijk te maken hebben, dus de naam batch, er een klein verschil is tussen de parameters en retourwaarden. Maar hier zullen we het alleen hebben over onERC1155Ontvangen. 

Deze functie MAG NIET worden aangeroepen buiten een munt- of overdrachtsproces. Om de overdracht te accepteren, moet het bytes4(keccak256(โ€œonERC1155Ontvangen(adres,adres,uint256,uint256,bytes)โ€)) retourneren als de overdracht is toegestaan.

Kijkend naar de parameters: -

  1. operator:- Het adres dat de overdracht heeft geรฏnitieerd (dwz msg.sender) 
  2. van: - Het adres dat voorheen het token bezat
  3. id:- De ID van het token dat wordt overgedragen 
  4. waarde:- Het aantal tokens dat wordt overgedragen 
  5. gegevens: - Aanvullende gegevens zonder gespecificeerd formaat 

2.2 Geen goedkeuren() functie?

Als je ooit met ERC 20 of ERC 721 hebt gewerkt, zou je de functie approval() zijn tegengekomen, waarmee een adres de goedgekeurde tokens van het saldo van de eigenaar kan halen. Als A bijvoorbeeld B wil goedkeuren voor het nemen van 100 DAI-tokens, dan kan A een beroep doen op de goedkeurfunctie en zeggen dat B recht heeft op 100 DAI-tokens, en later kan B een transactie doen met dat bedrag.

Maar ERC 1155 heeft geen goedkeuren functie voor een enkel token. We hebben een setApprovalForAll(adresoperator, bool goedgekeurd) functie, die wordt aangeroepen door de eigenaar en een adresparameteroperator bevat, wat het adres is van de uitgever of degene aan wie we onze tokens willen goedkeuren. We kunnen dus niet bellen goedkeuren functioneren of goedkeuring verlenen voor een enkel token uit onze ERC 1155-lijst met tokens, maar in plaats daarvan wordt alle tokentoegang in รฉรฉn keer goedgekeurd. Het ontwikkelteam moet zich hiervan bewust zijn. Indien genegeerd, kan dit leiden tot enorme verliezen en het protocol in gevaar brengen.

2.3 Enkele regelmatige controles

In de bovenstaande twee secties zijn twee van de unieke ERC 1155-gerelateerde controles onderzocht. In dit gedeelte zullen we enkele regelmatige controles doornemen die geen al te uitgebreide uitleg behoeven.

  1. Let op de ID's: - Elke externe functie of interface die met de ERC 1155 werkt, moet de token-ID hebben die is opgegeven om dat als invoer te gebruiken.
  2. Burn/Mint: - Wanneer deze functies worden aangeroepen, mogen ze alleen de balans en totalSupply wijzigen voor de opgegeven token-ID.
  3. Gelijkenis met ERC 20: - Veel eigendommen lijken op de ERC 20-tokenstandaard. Het doornemen van de beveiligingsrichtlijnen voor ERC 20 zal hierbij ook helpen.
  4. Re-entrance:- Zoals besproken, controleert ERC 1155 op ondersteunde interface in de overdrachtslogica. Er kunnen dus verschillende scenario's zijn die kunnen resulteren in herintreding kwetsbaarheid. Het wordt aangeraden om modifiers voor niet-terugkeerbeveiliging op de toepasselijke functies te behouden.

3. Conclusie

Het Web3-ecosysteem ziet continue ontwikkeling in reguliere standaarden om de beveiliging en functionaliteit te verbeteren. ERC 1155 is een stap in die richting. Maar wanneer de nieuwe standaarden worden vrijgegeven, ontstaat er een kennislacune met betrekking tot niet zo erg gebruikelijke standaarden in protocollen en ontstaat het risico van kleinere steekproefruimte voor beveiligingsmaatregelen. Dit is wanneer QuillAudits in beeld komt met een team van experts. We pakken aan, analyseren en vinden verschillende manieren waarop het protocol kan worden aangetast en beveiligen het protocol van onze klanten met ongelooflijke resultaten. Bezoek onze website en beveilig uw Web3-project!

17 keer bekeken

Tijdstempel:

Meer van Quillhash