ERC-1155 பல-குறி தரநிலை
பக்கத்தின் கடைசி புதுப்பிப்பு: 22 அக்டோபர், 2025
அறிமுகம்
பல குறி வகைகளை நிர்வகிக்கும் ஒப்பந்தங்களுக்கான ஒரு தரப்படுத்தப்பட்ட இடைமுகம். ஒற்றை பயன்படுத்தப்பட்ட ஒப்பந்தம், பரிமாற்றக்கூடிய குறிகள், பரிமாற முடியாத குறிகள் அல்லது பிற உள்ளமைவுகளின் (எ.கா., அரை-பரிமாற்றக்கூடிய குறிகள்) எந்தவொரு கலவையையும் கொண்டிருக்கலாம்.
பல-குறி தரநிலை என்பதன் பொருள் என்ன?
இந்த எண்ணம் எளிமையானது மற்றும் எந்த எண்ணிக்கையிலான ஒன்றுக்கொன்று மாற்றக்கூடிய மற்றும் ஒன்றுக்கொன்று மாற்ற முடியாத குறி வகைகளைக் குறிப்பிட மற்றும் கட்டுப்படுத்தக்கூடிய ஒரு ஸ்மார்ட் ஒப்பந்த இடைமுகத்தை உருவாக்குவதை நோக்கமாகக் கொண்டுள்ளது. இந்த வழியில், ERC-1155 குறியானது ERC-20 மற்றும் ERC-721 குறி போன்ற அதே செயல்பாடுகளைச் செய்ய முடியும், மேலும் ஒரே நேரத்தில் இரண்டையும் கூட செய்ய முடியும். இது ERC-20 மற்றும் ERC-721 தரநிலைகளின் செயல்பாட்டை மேம்படுத்துகிறது, இது மிகவும் திறமையானதாக ஆக்குகிறது மற்றும் வெளிப்படையான செயலாக்கப் பிழைகளை சரிசெய்கிறது.
ERC-1155 குறியானது EIP-1155opens in a new tab இல் முழுமையாக விவரிக்கப்பட்டுள்ளது.
முன்னேற்றக் கட்டுரை
இந்தப் பக்கத்தை நன்கு புரிந்துகொள்ள, நீங்கள் முதலில் குறி தரநிலைகள், ERC-20, மற்றும் ERC-721 பற்றிப் படிக்குமாறு பரிந்துரைக்கிறோம்.
ERC-1155 செயல்பாடுகள் மற்றும் அம்சங்கள்:
- தொகுதி பரிமாற்றம்: ஒரே அழைப்பில் பல சொத்துக்களை மாற்றவும்.
- தொகுதி இருப்பு: ஒரே அழைப்பில் பல சொத்துகளின் இருப்புகளைப் பெறுங்கள்.
- தொகுதி ஒப்புதல்: ஒரு முகவரிக்கு அனைத்து குறிகளையும் அங்கீகரிக்கவும்.
- கொக்கிகள்: குறிகளை பெறும் கொக்கி.
- NFT ஆதரவு: வழங்கல் 1 ஆக மட்டுமே இருந்தால், அதை NFT ஆகக் கருதவும்.
- பாதுகாப்பான பரிமாற்ற விதிகள்: பாதுகாப்பான பரிமாற்றத்திற்கான விதிகள் தொகுப்பு.
தொகுதிப் பரிமாற்றங்கள்
தொகுதி பரிமாற்றம் வழக்கமான ERC-20 பரிமாற்றங்களைப் போலவே செயல்படுகிறது. வழக்கமான ERC-20 transferFrom செயல்பாட்டைப் பார்ப்போம்:
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;அனைத்தையும் காட்டுERC-1155 இல் உள்ள ஒரே வித்தியாசம் என்னவென்றால், நாம் மதிப்புகளை ஒரு வரிசையாக அனுப்புகிறோம், மேலும் நாம் ஐடிகளின் ஒரு வரிசையையும் அனுப்புகிறோம். எடுத்துக்காட்டாக, ids=[3, 6, 13] மற்றும் values=[100, 200, 5] எனக் கொடுக்கப்பட்டால், இதன் விளைவாக வரும் பரிமாற்றங்கள்
_fromஇடமிருந்து_toஇற்கு 3 என்ற ஐடியுடன் 100 குறிகளை மாற்றவும்._fromஇடமிருந்து_toஇற்கு 6 என்ற ஐடியுடன் 200 குறிகளை மாற்றவும்._fromஇடமிருந்து_toஇற்கு 13 என்ற ஐடியுடன் 5 குறிகளை மாற்றவும்.
ERC-1155 இல் எங்களிடம் transferFrom மட்டுமே உள்ளது, transfer இல்லை. இதை ஒரு வழக்கமான transfer போலப் பயன்படுத்த, செயல்பாட்டை அழைக்கும் முகவரிக்கு அனுப்பும் முகவரியை அமைக்கவும்.
தொகுதி இருப்பு
அந்தந்த ERC-20 balanceOf அழைப்பும் இதேபோல் தொகுதி ஆதரவுடன் அதன் கூட்டாளர் செயல்பாட்டைக் கொண்டுள்ளது. நினைவூட்டலாக, இது ERC-20 பதிப்பு:
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);இருப்பு அழைப்பிற்கு இன்னும் எளிமையாக, ஒரே அழைப்பில் பல இருப்புகளை நாம் மீட்டெடுக்கலாம். உரிமையாளர்களின் வரிசையைத் தொடர்ந்து, குறி ஐடிகளின் வரிசையை நாங்கள் அனுப்புகிறோம்.
எடுத்துக்காட்டாக, _ids=[3, 6, 13] மற்றும் _owners=[0xbeef..., 0x1337..., 0x1111...] என கொடுக்கப்பட்டால், திரும்ப வரும் மதிப்பு
1[2 balanceOf(0xbeef...),3 balanceOf(0x1337...),4 balanceOf(0x1111...)5]தொகுதி ஒப்புதல்
1// ERC-11552function setApprovalForAll(3 address _operator,4 bool _approved5) external;67function isApprovedForAll(8 address _owner,9 address _operator10) external view returns (bool);அனைத்தையும் காட்டுஒப்புதல்கள் ERC-20 ஐ விட சற்று வித்தியாசமானவை. குறிப்பிட்ட தொகைகளுக்கு ஒப்புதல் அளிப்பதற்குப் பதிலாக, setApprovalForAll வழியாக ஒரு ஆபரேட்டரை அங்கீகரிக்கப்பட்டவர் அல்லது அங்கீகரிக்கப்படாதவர் என அமைக்கிறீர்கள்.
isApprovedForAll வழியாக தற்போதைய நிலையைப் படிக்கலாம். நீங்கள் பார்க்கிறபடி, இது எல்லாம் அல்லது ஒன்றுமில்லை என்ற செயல்பாடு. எத்தனை குறிகளுக்கு ஒப்புதல் அளிக்க வேண்டும் அல்லது எந்த குறி வகுப்பிற்கு ஒப்புதல் அளிக்க வேண்டும் என்பதை உங்களால் வரையறுக்க முடியாது.
இது வேண்டுமென்றே எளிமையை மனதில் கொண்டு வடிவமைக்கப்பட்டுள்ளது. ஒரு முகவரிக்கு மட்டுமே நீங்கள் எல்லாவற்றிற்கும் ஒப்புதல் அளிக்க முடியும்.
பெறுதல் கொக்கி
1function onERC1155BatchReceived(2 address _operator,3 address _from,4 uint256[] calldata _ids,5 uint256[] calldata _values,6 bytes calldata _data7) external returns(bytes4);EIP-165opens in a new tab ஆதரவைக் கொண்டு, ERC-1155 ஸ்மார்ட் ஒப்பந்தங்களுக்கு மட்டுமே பெறுதல் கொக்கிகளை ஆதரிக்கிறது. கொக்கிச் செயல்பாடு ஒரு மாயாஜால முன்னரே வரையறுக்கப்பட்ட bytes4 மதிப்பைத் திருப்பித் தர வேண்டும், இது இவ்வாறு கொடுக்கப்பட்டுள்ளது:
1bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))பெறும் ஒப்பந்தம் இந்த மதிப்பைத் திருப்பித் தரும்போது, ஒப்பந்தம் பரிமாற்றத்தை ஏற்றுக்கொண்டு ERC-1155 குறிகளை எவ்வாறு கையாள்வது என்று அறிந்திருப்பதாகக் கருதப்படுகிறது. அருமை, இனி ஒரு ஒப்பந்தத்தில் குறிகள் சிக்கிக் கொள்ளாது!
NFT ஆதரவு
வழங்கல் ஒன்றாக இருக்கும்போது, குறி அடிப்படையில் ஒரு பரிமாறாக் குறி (NFT) ஆகும். ERC-721 க்கு தரநிலையாக இருப்பது போலவே, நீங்கள் ஒரு மெட்டாடேட்டா URL ஐ வரையறுக்கலாம். URL ஐ வாடிக்கையாளர்களால் படிக்கவும் மாற்றவும் முடியும், இங்கேopens in a new tab பார்க்கவும்.
பாதுகாப்பான பரிமாற்ற விதி
முந்தைய விளக்கங்களில் சில பாதுகாப்பான பரிமாற்ற விதிகளை நாங்கள் ஏற்கனவே தொட்டுள்ளோம். ஆனால் விதிகளில் மிக முக்கியமானவற்றைப் பார்ப்போம்:
- அழைப்பாளர்
_fromமுகவரிக்கான குறிகளைச் செலவழிக்க அங்கீகரிக்கப்பட வேண்டும் அல்லது அழைப்பாளர்_fromக்கு சமமாக இருக்க வேண்டும். - பின்வரும் சமயங்களில் பரிமாற்ற அழைப்பு ரத்து செய்யப்பட வேண்டும்:
_toமுகவரி 0 ஆக இருந்தால்._idsஇன் நீளம்_valuesஇன் நீளத்திற்கு சமமாக இல்லை என்றால்._idsஇல் உள்ள குறி(களு)க்கான வைத்திருப்பாளர்(களின்) இருப்பு(களில்) ஏதேனும் ஒன்று பெறுநருக்கு அனுப்பப்பட்ட_valuesஇல் உள்ள அந்தந்தத் தொகை(களை) விட குறைவாக இருந்தால்.- வேறு ஏதேனும் பிழை ஏற்பட்டால்.
குறிப்பு: கொக்கி உட்பட அனைத்து தொகுதி செயல்பாடுகளும் தொகுதி இல்லாத பதிப்புகளாகவும் உள்ளன. ஒற்றைச் சொத்தை மாற்றுவது என்பது மிகவும் பொதுவாகப் பயன்படுத்தப்படும் வழியாக இருக்கும் என்பதைக் கருத்தில் கொண்டு, இது எரிவாயு செயல்திறனுக்காக செய்யப்படுகிறது. விளக்கங்களில் எளிமைக்காக, பாதுகாப்பான பரிமாற்ற விதிகள் உட்பட, அவற்றை நாங்கள் விட்டுவிட்டோம். பெயர்கள் ஒரே மாதிரியானவை, 'தொகுதி' என்பதை அகற்றவும்.