Ανάλυση ασφάλειας του Έξυπνου συμβολαίου ERC 1155 NFT

Ανάλυση ασφάλειας του Έξυπνου συμβολαίου ERC 1155 NFT

Ανάλυση ασφάλειας του ERC 1155 NFT Smart Contract PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Ώρα ανάγνωσης: 5 πρακτικά

Πρέπει να έχετε ακούσει για τα διακριτικά κρυπτονομισμάτων. Διάφορα token εκεί έξω παίζουν ζωτικό ρόλο στο οικοσύστημα web3. Αυτά τα διακριτικά αντιπροσωπεύουν την ιδιοκτησία, τον πλούτο, την αξιοπιστία και την εξουσία στα κρυπτονομίσματα. Το διασκεδαστικό μέρος είναι ότι μπορείτε επίσης να δημιουργήσετε το διακριτικό κρυπτονομίσματος σας. 

Αυτά τα διακριτικά είναι έξυπνα συμβόλαια που περιλαμβάνουν διάφορες λειτουργίες για διάφορες ενέργειες όπως μεταφορά, έλεγχος υπολοίπου κ.λπ. Μπορείτε να φτιάξετε το διακριτικό σας δημιουργώντας ένα έξυπνο συμβόλαιο για αυτό. Ωστόσο, για να διασφαλίσετε ότι το διακριτικό σας είναι ασφαλές και να του προσδώσετε μια αίσθηση εμπιστοσύνης, το ERC 20 είναι το πρότυπο έξυπνου συμβολαίου που συνιστάται να ακολουθείται για τη δημιουργία ανταλλάξιμων κουπονιών και το ERC 721 είναι το πρότυπο έξυπνων συμβολαίων που χρησιμοποιείται για τη δημιουργία μη ανταλλάξιμων κουπονιών (NFT).

Τα ERC 20 και ERC 721 είναι ευρέως αποδεκτά πρωτόκολλα έξυπνων συμβολαίων για τη δημιουργία διακριτικών. Παρέχουν ένα ασφαλές και αξιόπιστο περιβάλλον για τα διακριτικά. Και αυτά τα πρωτόκολλα συνεχίζουν να βελτιώνονται και να βελτιώνονται. Ένα βήμα προς αυτή την κατεύθυνση οδηγεί στη δημιουργία ενός νέου πρωτοκόλλου έξυπνων συμβολαίων ERC 1155 για μάρκες. Ας δούμε τι είναι.

1. Τι είναι το ERC 1155;

Όλα τα ERC, όπως το 20 και το 721, είναι απλώς πρότυπα για τη δημιουργία έξυπνων συμβολαίων που ταιριάζουν σε διαφορετικές περιστάσεις για NFT. Διαθέτουμε ERC 721 και τα ανταλλάξιμα token όπως το USDT και το DAI ακολουθούν τα πρότυπα ERC 20. Το ERC 1155 είναι ένα πρότυπο που περιλαμβάνει λειτουργίες και ιδιότητες ERC 20 και ERC 721.

Ας υποθέσουμε ότι θέλετε να δημιουργήσετε ένα πρόγραμμα όπου δημιουργείτε πολλά προϊόντα. Για παράδειγμα, θέλετε να δημιουργήσετε ένα διακριτικό με το όνομα χρυσός, ένα άλλο διακριτικό με το όνομα ασήμι και έναν βασιλιά, και η λογική λέει ότι αυτός με περισσότερο χρυσό και ασήμι θα είναι ο βασιλιάς. Μπορεί να υπάρχει μόνο ένας βασιλιάς. Είναι ένα απλό πρωτόκολλο, αλλά για να το δημιουργήσετε, θα πρέπει να αναπτύξετε 3 συμβόλαια μόνο για περιουσιακά στοιχεία, ένα για ένα χρυσό κουπόνι, ένα άλλο για ασήμι και ένα για τον βασιλιά, το οποίο θα είναι ERC 721. Αλλά τι γίνεται αν μπορείτε να αναπτύξετε μόνο ένα συμβόλαιο που περιλαμβάνει όλα αυτά τα διαφορετικά διακριτικά;

Αυτό είναι ένα τέτοιο πρόβλημα που λύνει το ERC 1155. Δεν χρειάζεται να αναπτύξετε ένα συμβόλαιο για κάθε ένα από τα διακριτικά που θέλετε στο blockchain. Αυτό ήταν ένα τέτοιο παράδειγμα σύμβασης ERC 1155. Μαντέψτε πού χρειαζόμαστε αυτό το είδος συστήματος με πολλαπλά στοιχεία ενεργητικού, μερικά ανταλλάξιμα, άλλα μη ανταλλάξιμα. Η απάντηση είναι παιχνίδια web3. Το ERC 1155 εξουσιοδοτεί τους προγραμματιστές παιχνιδιών Web3 με επεκτασιμότητα και ομαλή ανάπτυξη για συναλλαγές εντός της αλυσίδας.

1.1 Αναγνωριστικά διακριτικών στο ERC 1155

Πρέπει να γνωρίζετε πώς μπορεί να ελεγχθεί το υπόλοιπο σε διαφορετικά κουπόνια ERC 20, μπορείτε απλώς να καλέσετε balanceOf(διεύθυνση _owner) λειτουργία και μπορείτε να λάβετε πόσα διακριτικά περιέχει αυτή η διεύθυνση. Αλλά το ERC 1155 ασχολείται με διαφορετικά διακριτικά, επομένως πρέπει να παρέχουμε διαφορετικά αναγνωριστικά σε διαφορετικά διακριτικά. Σχεδόν κάθε συνάρτηση που σχετίζεται με διακριτικά περιλαμβάνει τουλάχιστον δύο παραμέτρους, το tokenId (στοιχείο για το οποίο θέλετε να ρωτήσετε) και τη διεύθυνση για την οποία θέλετε να μάθετε.

Για παράδειγμα, ας υποθέσουμε ότι το συμβόλαιο έχει 3 μάρκες, χρυσό, ασήμι και βασιλιά. Για να μάθετε πόσο χρυσό έχει μια συγκεκριμένη διεύθυνση σε αυτό το πρωτόκολλο, μπορείτε να χρησιμοποιήσετε τη συνάρτηση balanceOf(διεύθυνση _ιδιοκτήτης, uint256 _id) στο έξυπνο συμβόλαιο. Ας υποθέσουμε ότι το tokenId για το χρυσό έχει καθοριστεί ως 1. Στη συνέχεια, μπορείτε να καλέσετε BalceOf(0x4Bf9DeCE75Bc7C4a9054d5b3BB13D53543eE4096, 1).

2 Οδηγίες ελέγχου για έξυπνο συμβόλαιο ERC 1155

Το ERC 1155 κυκλοφορεί εδώ και αρκετό καιρό και ορισμένες λειτουργίες δεν είναι διαθέσιμες στο κανονικό πρωτόκολλο ERC 20 ή ERC 721, όπως η μεταφορά παρτίδων. Επίσης, το ERC 1155 είναι λιγότερο διαδεδομένο στον χώρο της αγοράς, καθιστώντας έτσι αυτήν την περιοχή λίγο λιγότερο εξερευνημένη για πολλούς προγραμματιστές. Το QuillAudits μοιράζεται κρίσιμες πληροφορίες για τα πρωτόκολλα που επιδιώκουν τη δημιουργία BUIDL στο ERC 1155, ώστε να μπορούν να βοηθήσουν στη δημιουργία ενός ασφαλέστερου οικοσυστήματος web3 προστατεύοντας τον εαυτό τους. 

2.1 Διεπαφή δέκτη ERC 1155

Όταν το συμβόλαιό μας ERC 1155 μεταφέρει περιουσιακά στοιχεία σε κάποιο άλλο συμβόλαιο που είναι γενικά απαίτηση στο πρωτόκολλο παιχνιδιών web3, είναι ΣΗΜΑΝΤΙΚΟ να υπάρχει η διεπαφή δέκτη ERC1155 στο συμβόλαιο λήψης για επιτυχή συναλλαγή των διακριτικών.

Δύο λειτουργίες που περιλαμβάνονται στη διεπαφή δέκτη ERC 1155 είναι:

  • onERC1155 Received (χειριστής, από, αναγνωριστικό, τιμή, δεδομένα)
  • onERC1155BatchReceived(χειριστής, από, αναγνωριστικά, τιμές, δεδομένα)

Και οι δύο συναρτήσεις έχουν σχεδόν παρόμοια λειτουργικότητα, με τη μόνη διαφορά ότι η τελευταία είναι ότι όταν έχουμε να κάνουμε με περισσότερες από μία συναλλαγές τη φορά, επομένως η παρτίδα ονόματος, υπάρχει μια μικρή διαφορά μεταξύ των παραμέτρων και των τιμών επιστροφής. Αλλά εδώ θα μιλήσουμε μόνο για το onERC1155Recieved. 

Αυτή η λειτουργία ΔΕΝ ΠΡΕΠΕΙ να καλείται εκτός μιας διαδικασίας νομισματοκοπείου ή μεταφοράς. Για να αποδεχτεί τη μεταφορά, πρέπει να επιστρέψει bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)")) εάν η μεταφορά επιτρέπεται.

Εξετάζοντας τις παραμέτρους: -

  1. χειριστής: - Η διεύθυνση που ξεκίνησε τη μεταφορά (π.χ. msg.sender) 
  2. από: - Η διεύθυνση στην οποία κατείχε προηγουμένως το διακριτικό
  3. id: - Το αναγνωριστικό του διακριτικού που μεταφέρεται 
  4. αξία: - Ο αριθμός των διακριτικών που μεταφέρονται 
  5. δεδομένα: - Πρόσθετα δεδομένα χωρίς καθορισμένη μορφή 

2.2 Δεν υπάρχει συνάρτηση approve();

Εάν έχετε εργαστεί ποτέ με το ERC 20 ή το ERC 721, θα συναντούσατε τη συνάρτηση approve(), η οποία επιτρέπει σε κάποια διεύθυνση να λαμβάνει τα εγκεκριμένα διακριτικά από το υπόλοιπο του κατόχου. Για παράδειγμα, εάν ο Α θέλει να εγκρίνει τον Β να πάρει 100 μάρκες DAI, τότε ο Α μπορεί να καλέσει τη συνάρτηση έγκρισης, λέγοντας ότι ο Β δικαιούται 100 μάρκες DAI και αργότερα, ο Β μπορεί να κάνει μια συναλλαγή με αυτό το ποσό.

Αλλά το ERC 1155 δεν έχει εγκρίνω λειτουργία για ένα μόνο διακριτικό. Εχουμε ένα setApprovalForAll (τελεστής διεύθυνσης, bool εγκεκριμένος) συνάρτηση, η οποία καλείται από τον κάτοχο και λαμβάνει έναν τελεστή παραμέτρου διεύθυνσης, που είναι η διεύθυνση του καταναλωτή ή εκείνου στον οποίο θέλουμε να εγκρίνουμε τα διακριτικά μας. Άρα, δεν μπορούμε να καλέσουμε ένα εγκρίνω λειτουργία ή χορήγηση έγκρισης για ένα μεμονωμένο διακριτικό από τη λίστα κουπονιών ERC 1155, αλλά αντίθετα, όλη η πρόσβαση σε διακριτικό θα εγκριθεί αμέσως. Η ομάδα ανάπτυξης πρέπει να το γνωρίζει αυτό. Εάν αγνοηθεί, αυτό μπορεί να οδηγήσει σε τεράστιες απώλειες και να θέσει σε κίνδυνο το πρωτόκολλο.

2.3 Ορισμένοι τακτικοί έλεγχοι

Οι παραπάνω δύο ενότητες διερεύνησαν δύο από τους μοναδικούς ελέγχους που σχετίζονται με το ERC 1155. Σε αυτή την ενότητα, θα περάσουμε από ορισμένους τακτικούς ελέγχους που δεν χρειάζονται πολύ βαθιά εξήγηση.

  1. Λάβετε υπόψη τα αναγνωριστικά: - Κάθε εξωτερική λειτουργία ή διεπαφή που λειτουργεί με το ERC 1155 πρέπει να έχει καθορισμένο το αναγνωριστικό διακριτικού για να το λαμβάνει ως είσοδο.
  2. Burn/Mint:- Κάθε φορά που καλούνται αυτές οι συναρτήσεις, πρέπει να αλλάζουν μόνο το υπόλοιπο και το σύνολο Προμήθειας για το καθορισμένο αναγνωριστικό διακριτικού.
  3. Ομοιότητα ERC 20: - Πολλές ιδιότητες είναι σαν το πρότυπο διακριτικών ERC 20. Η μετάβαση στις οδηγίες ασφαλείας για το ERC 20 θα βοηθήσει επίσης σε αυτό το θέμα.
  4. Επανεισαγωγή: - Όπως συζητήθηκε, το ERC 1155 ελέγχει για υποστηριζόμενη διεπαφή στη λογική μεταφοράς. Έτσι μπορεί να υπάρχουν διάφορα σενάρια που μπορεί να προκύψουν ευπάθεια επανεισόδου. Συνιστάται να διατηρείτε τους τροποποιητές προστασίας μη επανεισόδου στις ισχύουσες λειτουργίες.

3. Σύναψη

Το οικοσύστημα Web3 βλέπει συνεχή ανάπτυξη σε κανονικά πρότυπα για τη βελτίωση της ασφάλειας και της λειτουργικότητας. Το ERC 1155 είναι ένα βήμα προς αυτή την κατεύθυνση. Αλλά όταν κυκλοφορούν τα νέα πρότυπα, δημιουργείται ένα κενό γνώσης που περιλαμβάνει όχι και τόσο κοινά πρότυπα στα πρωτόκολλα και ενέχει τον κίνδυνο μικρότερου χώρου δειγμάτων για μέτρα ασφαλείας. Αυτό είναι όταν η QuillAudits έρχεται στο προσκήνιο με μια ομάδα ειδικών. Αντιμετωπίζουμε, αναλύουμε και βρίσκουμε διαφορετικούς τρόπους με τους οποίους μπορεί να παραβιαστεί το πρωτόκολλο και προστατεύουμε το πρωτόκολλο των πελατών μας με απίστευτα αποτελέσματα. Επισκεφτείτε τον ιστότοπό μας και εξασφαλίστε το έργο σας στο Web3!

17 Προβολές

Σφραγίδα ώρας:

Περισσότερα από Quillhash