ERC-1155 Mengi-ishara Kiwango
Ukurasa ulihaririwa mwisho: 22 Oktoba 2025
Utangulizi
Kiwango Mtandao kwa ajili ya mikataba ambayo kusimamia aina nyingi ishara. Mkataba mmoja uliotumwa unaweza kuwa na mchanganyiko wowote wa tokeni zinazoweza kubadilishana, tokeni zisizoweza kubadilishana au usanidi mwingine (k.m., tokeni nusu-badilishani).
Nini maana ya mengi-ishara kiwango?
Wazo ni rahisi na inataka kujenga erevu mkataba ni Mtandao ambayo inaweza kuwakilisha na kudhibiti idadi yoyote ya badilishwa na zisizo badilishwa aina ishara. Kwa njia hii, tokeni ya ERC-1155 inaweza kufanya kazi sawa na tokeni ya ERC-20 na ERC-721, na hata zote mbili kwa wakati mmoja. Wezesha utendaji wa viwango vya ERC-20 na ERC-721, na kuifanya iwe na ufanisi zaidi na kurekebisha makosa dhahiri ya utekelezaji.
Tokeni ya ERC-1155 imeelezewa kikamilifu katika EIP-1155opens in a new tab.
Mahitaji ya awali
Ili kuelewa ukurasa huu vizuri, tunapendekeza kwanza usome kuhusu viwango vya tokeni, ERC-20, na ERC-721.
Kazi na Vipengele vya ERC-1155:
- Uhamisho wa Kundi: Hamisha rasilimali nyingi kwa wito mmoja.
- Salio la Kundi: Pata salio za rasilimali nyingi kwa wito mmoja.
- Idhini ya Kundi: Idhinisha tokeni zote kwa anwani.
- Hook: Hook ya kupokea tokeni.
- Usaidizi wa NFT: Ikiwa usambazaji ni 1 pekee, ichukulie kama NFT.
- Kanuni za Uhamisho Salama: Seti ya kanuni za uhamisho salama.
Uhamisho wa Kundi
Uhamisho wa kundi hufanya kazi sawa na uhamisho wa kawaida wa ERC-20. Hebu tuangalie kazi ya kawaida ya transferFrom ya ERC-20:
1// ERC-202function transferFrom(address from, address to, uint256 value) external returns (bool);34// ERC-11555function safeBatchTransferFrom(6 address _from,7 address _to,8 uint256[] calldata _ids,9 uint256[] calldata _values,10 bytes calldata _data11) external;Onyesha yoteTofauti tu katika ERC-1155 ni kwamba sisi kupita maadili kama safu na sisi pia kupita safu ya kitambulisho. Kwa mfano, ukipewa ids=[3, 6, 13] na values=[100, 200, 5], uhamisho utakaotokea utakuwa
- Hamisha tokeni 100 zenye id 3 kutoka
_fromkwenda_to. - Hamisha tokeni 200 zenye id 6 kutoka
_fromkwenda_to. - Hamisha tokeni 5 zenye id 13 kutoka
_fromkwenda_to.
Katika ERC-1155 tuna transferFrom pekee, hakuna transfer. Ili kuitumia kama transfer ya kawaida, weka tu anwani ya kutoka iwe anwani inayoita kazi.
Salio la Kundi
Wito husika wa balanceOf wa ERC-20 kadhalika una kazi yake mshirika yenye usaidizi wa kundi. Kama ukumbusho, hii ni ERC-20 toleo:
1// ERC-202function balanceOf(address owner) external view returns (uint256);34// ERC-11555function balanceOfBatch(6 address[] calldata _owners,7 uint256[] calldata _ids8) external view returns (uint256[] memory);Hata rahisi kwa usawa wito, tunaweza kupata mizani nyingi katika wito moja. Sisi kupita safu ya wenyeji, kufuatia na safu ya kitambulisho ishara.
Kwa mfano ukipewa _ids=[3, 6, 13] na _owners=[0xbeef..., 0x1337..., 0x1111...], thamani ya kurudi itakuwa
1[2 balanceOf(0xbeef...),3 balanceOf(0x1337...),4 balanceOf(0x1111...)5]Idhini ya Kundi
1// ERC-11552function setApprovalForAll(3 address _operator,4 bool _approved5) external;67function isApprovedForAll(8 address _owner,9 address _operator10) external view returns (bool);Onyesha yoteIdhini ni tofauti kidogo kuliko ERC-20. Badala ya kuidhinisha kiasi maalum, unaweka opereta kuwa ameidhinishwa au hajaidhinishwa kupitia setApprovalForAll.
Kusoma hali ya sasa kunaweza kufanywa kupitia isApprovedForAll. Kama una tazama, ni operesheni ya yote au hakuna. Huwezi kufafanua jinsi ishara nyingi kupitisha au hata ambayo ishara ya darasa.
Hii ni makusudi iliyoundwa na unyenyekevu katika akili. Unaweza tu kupitisha kila kitu kwa anwani moja.
Hook ya Kupokea
1function onERC1155BatchReceived(2 address _operator,3 address _from,4 uint256[] calldata _ids,5 uint256[] calldata _values,6 bytes calldata _data7) external returns(bytes4);Kwa usaidizi wa EIP-165opens in a new tab, ERC-1155 inasaidia hook za kupokea kwa mikataba-erevu pekee. Kulabu kazi lazima kurudi uchawi kabla ya faini baiti4 thamani ambayo ni kutokana na:
1bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))Wakati mkataba kupokea anarudi thamani hii, kuchukuliwa mkataba anakubali uhamisho na anajua jinsi ya kushughulikia ERC-1155 ishara. Kubwa, hakuna zaidi kukwama ishara katika mkataba!
Usaidizi wa NFT
Wakati ugavi ni moja tu, ishara ni kimsingi ishara zisizo badilishwa (NFT). Na kama ni kiwango kwa ERC-721, unaweza kufafanua URL habari. URL inaweza kusomwa na kubadilishwa na wateja, angalia hapaopens in a new tab.
Kanuni ya Uhamisho Salama
Tumekuwa kuguswa juu ya utawala chache salama uhamisho tayari katika maelezo ya awali. Lakini hebu tazama utawala muhimu zaidi:
- Mtoa wito lazima aidhinishwe kutumia tokeni za anwani ya
_fromau mtoa wito lazima awe sawa na_from. - Wito uhamisho lazima kurudi kama
- Anwani ya
_toni 0. - urefu wa
_idssi sawa na urefu wa_values. - salio lolote la mmiliki kwa ajili ya tokeni katika
_idsni dogo kuliko kiasi husika katika_valueskilichotumwa kwa mpokeaji. - kosa lolote lingine hutokea.
- Anwani ya
Kumbuka: Kazi zote za kundi, ikiwemo hook, pia zinapatikana kama matoleo yasiyo na kundi. Hii ni kufanyika kwa ajili ya ufanisi wa gesi, kuzingatia kuhamisha tu mali moja pengine bado kuwa njia ya kawaida kutumika. Wacha nje kwa uwazi katika maelezo, ikiwa ni pamoja na utawala za uhamisho salama. Majina ni sawa, tu kuondoa 'Kikundi'.