Analisis Keamanan Kontrak Cerdas ERC 1155 NFT

Analisis Keamanan Kontrak Cerdas ERC 1155 NFT

Security Analysis of the ERC 1155 NFT Smart Contract PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Waktu Baca: 5 menit

Anda pasti pernah mendengar tentang token cryptocurrency. Berbagai token di luar sana memainkan peran penting dalam ekosistem web3. Token ini mewakili kepemilikan, kekayaan, kredibilitas, dan otoritas dalam cryptocurrency. Bagian yang menyenangkan adalah Anda juga dapat membuat token cryptocurrency Anda sendiri. 

Token ini adalah kontrak pintar yang melibatkan berbagai fungsi untuk berbagai tindakan seperti transfer, pemeriksaan saldo, dll. Anda dapat membuat token Anda dengan membuat kontrak pintar untuknya. Namun, untuk memastikan bahwa token Anda aman dan memberikan rasa percaya padanya, ERC 20 adalah solusinya standar kontrak pintar yang disarankan untuk diikuti untuk membuat token yang dapat dipertukarkan, dan ERC 721 adalah standar kontrak cerdas yang digunakan untuk membuat token yang tidak dapat dipertukarkan (NFT).

ERC 20 dan ERC 721 adalah protokol kontrak pintar yang diterima secara luas untuk pembuatan token. Mereka menyediakan lingkungan yang aman dan dapat dipercaya untuk token. Dan protokol ini terus meningkat dan terus menjadi lebih baik. Langkah ke arah itu mengarah pada pembuatan protokol kontrak pintar ERC 1155 baru untuk token. Mari kita lihat apa itu.

1. Apa itu ERC 1155?

Semua ERC, seperti 20 dan 721, hanyalah standar untuk membuat kontrak pintar yang sesuai dengan keadaan berbeda untuk NFT. Kami memiliki ERC 721, dan token yang sepadan seperti USDT dan DAI mengikuti standar ERC 20. ERC 1155 adalah salah satu standar yang melibatkan fungsi dan properti ERC 20 dan ERC 721.

Misalkan Anda ingin membuat program tempat Anda membuat banyak komoditas. Misalnya, Anda ingin membuat token bernama emas, token lain bernama perak dan satu raja, dan logikanya mengatakan yang memiliki lebih banyak emas dan perak akan menjadi raja. Hanya ada satu raja. Ini adalah protokol yang sederhana, tetapi untuk membuatnya, Anda harus menerapkan 3 kontrak hanya untuk aset, satu untuk token emas, satu lagi untuk perak, dan satu untuk raja, yang akan menjadi ERC 721. Tetapi bagaimana jika Anda dapat menerapkan hanya satu kontrak yang mencantumkan semua token yang berbeda itu?

Ini adalah salah satu masalah yang dipecahkan oleh ERC 1155. Anda tidak perlu menerapkan kontrak untuk setiap token yang Anda inginkan di blockchain. Ini adalah salah satu contoh kontrak ERC 1155. Tebak di mana kita membutuhkan sistem jenis ini dengan banyak aset, beberapa dapat dipertukarkan, beberapa tidak dapat dipertukarkan. Jawabannya adalah game web3. ERC 1155 memberdayakan pengembang game Web3 dengan skalabilitas dan pengembangan yang mulus untuk transaksi on-chain.

1.1 ID Token di ERC 1155

Anda harus mengetahui bagaimana saldo di berbagai token ERC 20 dapat diperiksa, Anda cukup menelepon balanceOf(alamat _pemilik) fungsi, dan Anda bisa mendapatkan berapa banyak token yang disimpan oleh alamat tersebut. Tapi ERC 1155 berurusan dengan token yang berbeda, jadi kami perlu memberikan ID yang berbeda untuk token yang berbeda. Hampir setiap fungsi yang terkait dengan token memperhitungkan setidaknya dua parameter tokenId(aset yang ingin Anda tanyakan) dan alamat yang ingin Anda ketahui.

Misalnya, kontrak memiliki 3 token, emas, perak, dan raja. Untuk mengetahui berapa banyak emas yang dimiliki alamat tertentu dalam protokol itu, Anda dapat memanggil fungsi balanceOf(alamat _pemilik, uint256 _id) pada kontrak pintar. Misalkan tokenId untuk emas ditetapkan menjadi 1. Kemudian Anda dapat memanggil keseimbangan(0x4Bf9DeCE75Bc7C4a9054d5b3BB13D53543eE4096, 1).

2 Pedoman Audit untuk kontrak pintar ERC 1155

ERC 1155 telah ada selama beberapa waktu, dan beberapa fitur tidak tersedia di protokol ERC 20 atau ERC 721 biasa, seperti transfer batch. Juga, ERC 1155 kurang lazim di ruang pasar, sehingga membuat area ini sedikit kurang dieksplorasi oleh banyak pengembang. QuillAudits membagikan wawasan penting untuk protokol yang ingin BUIDL di ERC 1155, sehingga mereka dapat membantu menciptakan ekosistem web3 yang lebih aman dengan melindungi diri mereka sendiri. 

2.1 Antarmuka Penerima ERC 1155

Ketika kontrak ERC 1155 kami mentransfer aset ke beberapa kontrak lain yang umumnya merupakan persyaratan dalam protokol game web3, PENTING untuk memiliki Antarmuka Penerima ERC1155 dalam kontrak penerima untuk transaksi token yang berhasil.

Dua fungsi yang berada di bawah Antarmuka Penerima ERC 1155 adalah:-

  • onERC1155Received(operator, dari, id, nilai, data)
  • onERC1155BatchReceived(operator, dari, id, nilai, data)

Kedua fungsi memiliki fungsi yang hampir mirip, satu-satunya perbedaan adalah bahwa yang terakhir adalah ketika kita berurusan dengan lebih dari satu transaksi pada satu waktu, sehingga nama batch, ada sedikit perbedaan antara params dan nilai kembalian. Tapi di sini kita hanya akan berbicara tentang satuERC1155Recieved. 

Fungsi ini TIDAK HARUS dipanggil di luar proses mint atau transfer. Untuk menerima transfer, harus mengembalikan bytes4(keccak256(โ€œonERC1155Received(address,address,uint256,uint256,bytes)โ€)) jika transfer diperbolehkan.

Melihat parameter: -

  1. operator:- Alamat yang memulai transfer (mis. msg.sender) 
  2. from:- Alamat yang sebelumnya memiliki token
  3. id: - ID token yang ditransfer 
  4. nilai: - Jumlah token yang ditransfer 
  5. data: - Data tambahan tanpa format yang ditentukan 

2.2 Tidak ada fungsi approval()?

Jika Anda pernah bekerja dengan ERC 20 atau ERC 721, Anda akan menemukan fungsi approval(), yang mengizinkan beberapa alamat untuk mengambil token yang disetujui dari saldo pemilik. Misalnya, jika A ingin menyetujui B untuk mengambil 100 token DAI, maka A dapat memanggil fungsi persetujuan, mengatakan bahwa B berhak atas 100 token DAI, dan nantinya, B dapat melakukan transaksi dengan jumlah tersebut.

Tapi ERC 1155 tidak memiliki menyetujui fungsi untuk satu token. Kita punya sebuah setApprovalForAll (operator alamat, bool disetujui) fungsi, yang dipanggil oleh pemilik dan mengambil operator parameter alamat, yang merupakan alamat pemboros atau yang ingin kami setujui token kami. Jadi, kita tidak bisa memanggil an menyetujui berfungsi atau berikan persetujuan untuk satu token dari daftar token ERC 1155 kami, tetapi sebaliknya, semua akses token akan disetujui sekaligus. Tim pengembangan perlu menyadari hal ini. Jika diabaikan, ini dapat menyebabkan kerugian besar dan membahayakan protokol.

2.3 Beberapa Pemeriksaan Reguler

Dua bagian di atas mengeksplorasi dua pemeriksaan terkait ERC 1155 yang unik. Pada bagian ini, kita akan melalui beberapa pemeriksaan rutin yang tidak memerlukan penjelasan yang sangat mendalam.

  1. Perhatikan ID: - Setiap fungsi atau antarmuka eksternal yang bekerja dengan ERC 1155 harus memiliki ID token yang ditentukan untuk menjadikannya sebagai input.
  2. Burn/Mint: - Setiap kali fungsi ini dipanggil, mereka hanya boleh mengubah saldo dan totalSupply untuk ID token yang ditentukan.
  3. Kemiripan ERC 20: - Banyak properti seperti standar token ERC 20. Melalui pedoman keamanan untuk ERC 20 juga akan membantu dalam masalah ini.
  4. Masuk kembali: - Seperti yang telah dibahas, ERC 1155 memeriksa antarmuka yang didukung dalam logika transfer. Dengan demikian dapat terjadi berbagai skenario yang dapat mengakibatkan kerentanan masuk kembali. Disarankan untuk menjaga pengubah penjaga non-reentrancy pada fungsi yang berlaku.

3. Kesimpulan

Ekosistem Web3 melihat pengembangan berkelanjutan dalam standar reguler untuk meningkatkan keamanan dan fungsionalitas. ERC 1155 adalah langkah ke arah itu. Tetapi ketika standar baru dirilis, itu menciptakan kesenjangan pengetahuan yang melibatkan standar yang tidak terlalu umum dalam protokol dan disertai dengan risiko ruang sampel yang lebih kecil untuk langkah-langkah keamanan. Ini adalah saat QuillAudit muncul bersama tim ahli. Kami menangani, menganalisis, dan menemukan berbagai cara protokol dapat disusupi dan mengamankan protokol klien kami dengan hasil yang luar biasa. Kunjungi situs web kami dan dapatkan proyek Web3 Anda diamankan!

17 views

Stempel Waktu:

Lebih dari Quillhash