ERC 1155 NFT Smart Contractin turvallisuusanalyysi

ERC 1155 NFT Smart Contractin turvallisuusanalyysi

ERC 1155 NFT Smart Contract PlatoBlockchain Data Intelligence -tietoturva-analyysi. Pystysuuntainen haku. Ai.

Lukeaika: 5 pöytäkirja

Olet varmasti kuullut kryptovaluuttatokeneista. Erilaisilla tunnuksilla on tärkeä rooli web3-ekosysteemissä. Nämä tunnukset edustavat omistusta, varallisuutta, uskottavuutta ja valtaa kryptovaluutoissa. Hauskinta on, että voit myös tehdä kryptovaluuttatunnuksesi. 

Nämä tunnukset ovat älykkäitä sopimuksia, jotka sisältävät erilaisia ​​toimintoja eri toimiin, kuten siirtoon, saldon tarkistamiseen jne. Voit tehdä tunnuksesi luomalla sille älykkään sopimuksen. Silti varmistaaksesi, että tunnuksesi on turvallinen ja liittääksesi siihen luottamuksen, ERC 20 on oikea älykäs sopimusstandardi jota on suositeltavaa noudattaa vaihdettavien tokenien luomisessa, ja ERC 721 on älykäs sopimusstandardi, jota käytetään ei-vaihtokelpoisten tokenien (NFT) luomiseen.

ERC 20 ja ERC 721 ovat laajalti hyväksyttyjä älykkäitä sopimusprotokollia tunnuksen luomiseen. Ne tarjoavat turvallisen ja luotettavan ympäristön tokeneille. Ja nämä protokollat ​​paranevat jatkuvasti ja paranevat jatkuvasti. Askel tähän suuntaan johtaa uuden ERC 1155 älykkään sopimusprotokollan luomiseen tokeneille. Katsotaanpa mikä se on.

1. Mikä ERC 1155 on?

Kaikki ERC:t, kuten 20 ja 721, ovat vain standardeja älykkäiden sopimusten luomiseen, jotka sopivat erilaisiin olosuhteisiin NFT:ille. Meillä on ERC 721, ja korvattavat tunnukset, kuten USDT ja DAI, noudattavat ERC 20 -standardeja. ERC 1155 on yksi standardi, joka sisältää ERC 20- ja ERC 721 -toimintoja ja -ominaisuuksia.

Oletetaan, että haluat luoda ohjelman, jossa luot useita hyödykkeitä. Esimerkiksi haluat luoda kulta-nimisen merkin, toisen hopean ja yhden kuninkaan, ja logiikka sanoo, että se jolla on enemmän kultaa ja hopeaa, on kuningas. Kuningas voi olla vain yksi. Se on yksinkertainen protokolla, mutta luodaksesi tämän, sinun on otettava käyttöön kolme sopimusta vain omaisuudesta, yksi kultarahalle, toinen hopealle ja yksi kuninkaalle, joka on ERC 3. Mutta entä jos voit käyttää vain yksi sopimus, jossa luetellaan kaikki nuo erilaiset merkit?

Tämä on yksi tällainen ongelma, jonka ERC 1155 ratkaisee. Sinun ei tarvitse ottaa käyttöön sopimusta jokaiselle lohkoketjuun haluamallesi tunnukselle. Tämä oli yksi esimerkki ERC 1155 -sopimuksesta. Arvaa, mihin tarvitsemme tämän tyyppisen järjestelmän, jossa on useita resursseja, joista osa on vaihdettavissa, osa ei-korvattavissa. Vastaus on web3-pelit. ERC 1155 antaa Web3-pelien kehittäjille skaalautuvuuden ja sujuvan kehityksen ketjun sisällä tapahtuvia tapahtumia varten.

1.1 Token ID:t ERC 1155:ssä

Sinun täytyy olla tietoinen siitä, kuinka eri ERC 20 -tokeneiden saldo voidaan tarkistaa, voit soittaa saldo(osoite _omistaja) funktio, ja voit saada kuinka monta merkkiä kyseisessä osoitteessa on. Mutta ERC 1155 käsittelee erilaisia ​​tunnuksia, joten meidän on annettava eri tunnukset eri tokeneille. Melkein jokainen tokeneihin liittyvä toiminto sisältää vähintään kaksi parametria tokenId (omaisuus, josta haluat tiedustella) ja osoitteen, josta haluat tietää.

Oletetaan esimerkiksi, että sopimuksessa on 3 merkkiä, kulta, hopea ja kuningas. Tietääksesi kuinka paljon kultaa tietyllä osoitteella on kyseisessä protokollassa, voit käyttää funktiota balanceOf(osoite _omistaja, uint256 _id) älykkäässä sopimuksessa. Oletetaan, että kullan tokenId:ksi on määritetty 1. Sitten voit soittaa saldo(0x4Bf9DeCE75Bc7C4a9054d5b3BB13D53543eE4096, 1).

2 Tarkastusohjeet älykkäälle sopimukselle ERC 1155

ERC 1155 on ollut olemassa jo jonkin aikaa, ja jotkin ominaisuudet eivät ole käytettävissä tavallisessa ERC 20- tai ERC 721 -protokollassa, kuten eräsiirto. Lisäksi ERC 1155 on vähemmän yleinen markkinoilla, mikä tekee tästä alueesta hieman vähemmän tutkittua monien kehittäjien kannalta. QuillAudits jakaa tärkeitä näkemyksiä protokollista, jotka haluavat BUIDL:n ERC 1155:ssä, jotta ne voivat auttaa luomaan turvallisemman web3-ekosysteemin suojelemalla itseään. 

2.1 ERC 1155 -vastaanotinliitäntä

Kun ERC 1155 -sopimuksemme siirtää omaisuutta johonkin toiseen sopimukseen, joka on yleensä web3-peliprotokollan vaatimus, on TÄRKEÄÄ, että vastaanottavassa sopimuksessa on ERC1155Receiver Interface, jotta rahakkeiden onnistunut transaktio onnistuu.

Kaksi toimintoa, jotka kuuluvat ERC 1155 -vastaanotinliitännän piiriin, ovat:

  • onERC1155Vastaanotettu(operaattori, lähettäjä, tunnus, arvo, tiedot)
  • onERC1155BatchReceived(operaattori, lähettäjä, tunnukset, arvot, tiedot)

Molemmilla funktioilla on lähes samanlainen toiminnallisuus, ainoa ero on, että jälkimmäinen on, kun käsittelemme useampaa kuin yhtä tapahtumaa kerrallaan, eli nimierä, parametrien ja palautusarvojen välillä on pieni ero. Mutta tässä puhumme vain onERC1155Recievedistä. 

Tätä toimintoa EI SAA kutsua rahapaja- tai siirtoprosessin ulkopuolella. Siirron hyväksymiseksi sen on palautettava bytes4(keccak256("onERC1155Received(osoite,osoite,uint256,uint256,tavua)"), jos siirto on sallittu.

Parametreja katsoessa:

  1. operaattori:- Osoite, joka aloitti siirron (eli viestin lähettäjä) 
  2. from:- Osoite, joka aiemmin omisti tunnuksen
  3. id:- Siirrettävän tunnuksen tunnus 
  4. arvo:- Siirrettävien rahakkeiden määrä 
  5. tiedot: - Lisätiedot ilman määriteltyä muotoa 

2.2 Ei hyväksy()-funktiota?

Jos olet koskaan työskennellyt ERC 20:n tai ERC 721:n kanssa, olisit törmännyt approve()-funktioon, joka sallii jonkin osoitteen ottaa hyväksytyt merkit omistajan saldosta. Esimerkiksi, jos A haluaa hyväksyä B:n ottamaan 100 DAI-merkkiä, A voi kutsua hyväksymistoimintoa sanomalla, että B:llä on oikeus 100 DAI-tokeniin, ja myöhemmin B voi suorittaa tapahtuman tällä määrällä.

Mutta ERC 1155:ssä ei ole hyväksyä toiminto yhdelle tunnukselle. Meillä on setApprovalForAll (osoiteoperaattori, bool hyväksytty) funktio, jota omistaja kutsuu ja joka ottaa käyttöön osoiteparametrioperaattorin, joka on kuluttajan osoite tai osoite, johon haluamme hyväksyä tunnuksemme. Joten emme voi soittaa hyväksyä toimi tai myönnä hyväksyntä yhdelle tunnukselle ERC 1155 -tunnusluettelostamme, mutta sen sijaan kaikki tunnuksen käyttöoikeudet hyväksytään kerralla. Kehitystiimin tulee olla tietoinen tästä. Jos se jätetään huomiotta, tämä voi johtaa valtaviin menetyksiin ja vaarantaa protokollan.

2.3 Jotkut säännölliset tarkastukset

Yllä olevat kaksi osiota tutkivat kahta ainutlaatuista ERC 1155:een liittyvää tarkistusta. Tässä osiossa käymme läpi joitakin säännöllisiä tarkastuksia, jotka eivät vaadi kovin syvällistä selitystä.

  1. Huomioi tunnukset: - Jokaisella ulkoisella toiminnolla tai liitännällä, joka toimii ERC 1155:n kanssa, on määritettävä token ID, jotta se voidaan ottaa syötteeksi.
  2. Burn/Mint: – Aina kun näitä toimintoja kutsutaan, ne saavat muuttaa vain määritetyn tunnuksen saldoa ja TotalSupplya.
  3. ERC 20:n samankaltaisuus: - Monet ominaisuudet ovat kuin ERC 20 -tunnusstandardi. ERC 20:n turvallisuusohjeiden läpikäyminen auttaa myös tässä asiassa.
  4. Takaisinsisääntulo: - Kuten mainittiin, ERC 1155 tarkistaa tuetun rajapinnan siirtologiikassa. Näin ollen voi olla erilaisia ​​skenaarioita, jotka voivat johtaa sisäänpääsyn haavoittuvuus. On suositeltavaa pitää palaamattomat suojamuuntimet soveltuvissa toiminnoissa.

3. Päätelmä

Web3-ekosysteemissä säännöllisiä standardeja kehitetään jatkuvasti turvallisuuden ja toimivuuden parantamiseksi. ERC 1155 on askel tähän suuntaan. Mutta kun uudet standardit julkaistaan, se luo tietämyksen aukon, joka sisältää ei niin kovin yleisiä standardeja protokollissa, ja riskinä on pienemmän näytetilan turvatoimia. Tällöin QuillAudits tulee kuvaan asiantuntijaryhmän kanssa. Käsittelemme, analysoimme ja löydämme erilaisia ​​tapoja protokollan vaarantumiseen ja turvaamme asiakkaidemme protokollan uskomattomilla tuloksilla. Vieraile verkkosivuillamme ja varmista Web3-projektisi!

17 Näyttökerrat

Aikaleima:

Lisää aiheesta Quillhash