ERC-721 نان فنجیبل ٹوکن اسٹینڈرڈ
صفحہ کی آخری تازہ کاری: 25 فروری، 2026
تعارف
نان فنجیبل ٹوکن کیا ہے؟
ایک نان فنجیبل ٹوکن (NFT) کسی چیز یا کسی شخص کی منفرد طریقے سے شناخت کرنے کے لیے استعمال ہوتا ہے۔ اس قسم کا ٹوکن ان پلیٹ فارمز پر استعمال کے لیے بہترین ہے جو جمع کرنے والی اشیاء، رسائی کیز، لاٹری ٹکٹ، کنسرٹ اور کھیلوں کے میچوں کے لیے نمبر والی سیٹیں وغیرہ پیش کرتے ہیں۔ اس خاص قسم کے ٹوکن میں حیرت انگیز امکانات ہیں اس لیے یہ ایک مناسب معیار کا مستحق ہے، ERC-721 اسے حل کرنے کے لیے آیا ہے!
ERC-721 کیا ہے؟
ERC-721 این ایف ٹی کے لیے ایک معیار متعارف کراتا ہے، دوسرے لفظوں میں، اس قسم کا ٹوکن منفرد ہوتا ہے اور اسی اسمارٹ کنٹریکٹ کے دوسرے ٹوکن سے مختلف قیمت کا ہو سکتا ہے، شاید اس کی عمر، نایابیت یا اس کے بصری جیسی کسی اور چیز کی وجہ سے۔ انتظار کرو، بصری؟
جی ہاں! تمام NFTs میں tokenId نامی ایک uint256 متغیر ہوتا ہے، لہذا کسی بھی ERC-721 کنٹریکٹ کے لیے، جوڑا contract address, uint256 tokenId عالمی سطح پر منفرد ہونا چاہیے۔ اس نے کہا، ایک ڈی ایپ میں ایک "کنورٹر" ہوسکتا ہے جو tokenId کو ان پٹ کے طور پر استعمال کرتا ہے اور کسی ٹھنڈی چیز کی تصویر آؤٹ پٹ کرتا ہے، جیسے زومبیز، ہتھیار، مہارتیں یا حیرت انگیز بلیاں!
شرائط
باڈی
ERC-721 (ایتھیریم ریکویسٹ فار کمنٹس 721)، جسے جنوری 2018 میں ولیم اینٹریکن، ڈیٹر شرلی، جیکب ایونز، نستاسیا سیکس نے تجویز کیا تھا، ایک نان فنجیبل ٹوکن اسٹینڈرڈ ہے جو اسمارٹ کنٹریکٹس کے اندر ٹوکنز کے لیے ایک API نافذ کرتا ہے۔
یہ ایک اکاؤنٹ سے دوسرے اکاؤنٹ میں ٹوکن منتقل کرنے، کسی اکاؤنٹ کا موجودہ ٹوکن بیلنس حاصل کرنے، کسی مخصوص ٹوکن کا مالک حاصل کرنے اور نیٹ ورک پر دستیاب ٹوکن کی کل سپلائی حاصل کرنے جیسی خصوصیات فراہم کرتا ہے۔ ان کے علاوہ اس میں کچھ دیگر خصوصیات بھی ہیں جیسے کہ یہ منظور کرنا کہ کسی اکاؤنٹ سے ٹوکن کی رقم تیسرے فریق کے اکاؤنٹ کے ذریعے منتقل کی جا سکتی ہے۔
اگر کوئی اسمارٹ کنٹریکٹ درج ذیل طریقوں اور ایونٹس کو نافذ کرتا ہے تو اسے ERC-721 نان فنجیبل ٹوکن کنٹریکٹ کہا جا سکتا ہے اور، ایک بار تعینات ہونے کے بعد، یہ ایتھیریم پر بنائے گئے ٹوکنز کا ٹریک رکھنے کا ذمہ دار ہوگا۔
طریقے
1 function balanceOf(address _owner) external view returns (uint256);2 function ownerOf(uint256 _tokenId) external view returns (address);3 function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;4 function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;5 function transferFrom(address _from, address _to, uint256 _tokenId) external payable;6 function approve(address _approved, uint256 _tokenId) external payable;7 function setApprovalForAll(address _operator, bool _approved) external;8 function getApproved(uint256 _tokenId) external view returns (address);9 function isApprovedForAll(address _owner, address _operator) external view returns (bool);سب دکھائیںایونٹس
1 event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);2 event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);3 event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);مثالیں
آئیے دیکھتے ہیں کہ ایتھیریم پر کسی بھی ERC-721 ٹوکن کنٹریکٹ کا معائنہ کرنے کے لیے چیزوں کو آسان بنانے کے لیے ایک معیار کتنا اہم ہے۔ ہمیں کسی بھی ERC-721 ٹوکن کا انٹرفیس بنانے کے لیے صرف کنٹریکٹ ایپلیکیشن بائنری انٹرفیس (ABI) کی ضرورت ہے۔ جیسا کہ آپ نیچے دیکھ سکتے ہیں ہم ایک آسان کردہ ABI استعمال کریں گے، تاکہ اسے ایک کم رگڑ والی مثال بنایا جا سکے۔
Web3.py کی مثال
سب سے پہلے، یقینی بنائیں کہ آپ نے Web3.pyopens in a new tab Python لائبریری انسٹال کر لی ہے:
1pip install web31from web3 import Web32from web3._utils.events import get_event_data345w3 = Web3(Web3.HTTPProvider("https://cloudflare-eth.com"))67ck_token_addr = "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d" # کرپٹو کٹیز کنٹریکٹ89acc_address = "0xb1690C08E213a35Ed9bAb7B318DE14420FB57d8C" # کرپٹو کٹیز سیلز آکشن1011# یہ ایک ERC-721 NFT کنٹریکٹ کا ایک سادہ کنٹریکٹ ایپلیکیشن بائنری انٹرفیس (ABI) ہے۔12# یہ صرف طریقوں کو ظاہر کرے گا: balanceOf(address), name(), ownerOf(tokenId), symbol(), totalSupply()13simplified_abi = [14 {15 'inputs': [{'internalType': 'address', 'name': 'owner', 'type': 'address'}],16 'name': 'balanceOf',17 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],18 'payable': False, 'stateMutability': 'view', 'type': 'function', 'constant': True19 },20 {21 'inputs': [],22 'name': 'name',23 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}],24 'stateMutability': 'view', 'type': 'function', 'constant': True25 },26 {27 'inputs': [{'internalType': 'uint256', 'name': 'tokenId', 'type': 'uint256'}],28 'name': 'ownerOf',29 'outputs': [{'internalType': 'address', 'name': '', 'type': 'address'}],30 'payable': False, 'stateMutability': 'view', 'type': 'function', 'constant': True31 },32 {33 'inputs': [],34 'name': 'symbol',35 'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}],36 'stateMutability': 'view', 'type': 'function', 'constant': True37 },38 {39 'inputs': [],40 'name': 'totalSupply',41 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],42 'stateMutability': 'view', 'type': 'function', 'constant': True43 },44]4546ck_extra_abi = [47 {48 'inputs': [],49 'name': 'pregnantKitties',50 'outputs': [{'name': '', 'type': 'uint256'}],51 'payable': False, 'stateMutability': 'view', 'type': 'function', 'constant': True52 },53 {54 'inputs': [{'name': '_kittyId', 'type': 'uint256'}],55 'name': 'isPregnant',56 'outputs': [{'name': '', 'type': 'bool'}],57 'payable': False, 'stateMutability': 'view', 'type': 'function', 'constant': True58 }59]6061ck_contract = w3.eth.contract(address=w3.to_checksum_address(ck_token_addr), abi=simplified_abi+ck_extra_abi)62name = ck_contract.functions.name().call()63symbol = ck_contract.functions.symbol().call()64kitties_auctions = ck_contract.functions.balanceOf(acc_address).call()65print(f"{name} [{symbol}] NFTs in Auctions: {kitties_auctions}")6667pregnant_kitties = ck_contract.functions.pregnantKitties().call()68print(f"{name} [{symbol}] NFTs Pregnants: {pregnant_kitties}")6970# منتقل شدہ کٹیز کے بارے میں معلومات حاصل کرنے کے لیے ٹرانسفر ایونٹ ABI کا استعمال۔71tx_event_abi = {72 'anonymous': False,73 'inputs': [74 {'indexed': False, 'name': 'from', 'type': 'address'},75 {'indexed': False, 'name': 'to', 'type': 'address'},76 {'indexed': False, 'name': 'tokenId', 'type': 'uint256'}],77 'name': 'Transfer',78 'type': 'event'79}8081# ہمیں لاگز کو فلٹر کرنے کے لیے ایونٹ کے دستخط کی ضرورت ہے۔82event_signature = w3.keccak(text="Transfer(address,address,uint256)").hex()8384logs = w3.eth.get_logs({85 "fromBlock": w3.eth.block_number - 120,86 "address": w3.to_checksum_address(ck_token_addr),87 "topics": [event_signature]88})8990# نوٹس:91# - اگر کوئی ٹرانسفر ایونٹ واپس نہیں آتا ہے تو بلاکس کی تعداد 120 سے بڑھا دیں۔92# - اگر آپ کو کوئی ٹرانسفر ایونٹ نہیں ملا تو آپ یہاں سے ایک ٹوکن آئی ڈی حاصل کرنے کی کوشش بھی کر سکتے ہیں:93# https://etherscan.io/address/0x06012c8cf97BEaD5deAe237070F9587f8E7A266d#events94# ایونٹ کے لاگز کو پھیلانے کے لیے کلک کریں اور اس کے "tokenId" دلیل کو کاپی کریں۔95recent_tx = [get_event_data(w3.codec, tx_event_abi, log)["args"] for log in logs]9697if recent_tx:98 kitty_id = recent_tx[0]['tokenId'] # اوپر دیے گئے لنک سے "tokenId" کو یہاں پیسٹ کریں۔99 is_pregnant = ck_contract.functions.isPregnant(kitty_id).call()100 print(f"{name} [{symbol}] NFTs {kitty_id} is pregnant: {is_pregnant}")سب دکھائیںCryptoKitties کنٹریکٹ میں معیاری ایونٹس کے علاوہ کچھ دلچسپ ایونٹس بھی ہیں۔
آئیے ان میں سے دو کو چیک کریں، Pregnant اور Birth۔
1# نئی کٹیز کے بارے میں معلومات حاصل کرنے کے لیے پریگننٹ اور برتھ ایونٹس ABI کا استعمال۔2ck_extra_events_abi = [3 {4 'anonymous': False,5 'inputs': [6 {'indexed': False, 'name': 'owner', 'type': 'address'},7 {'indexed': False, 'name': 'matronId', 'type': 'uint256'},8 {'indexed': False, 'name': 'sireId', 'type': 'uint256'},9 {'indexed': False, 'name': 'cooldownEndBlock', 'type': 'uint256'}],10 'name': 'Pregnant',11 'type': 'event'12 },13 {14 'anonymous': False,15 'inputs': [16 {'indexed': False, 'name': 'owner', 'type': 'address'},17 {'indexed': False, 'name': 'kittyId', 'type': 'uint256'},18 {'indexed': False, 'name': 'matronId', 'type': 'uint256'},19 {'indexed': False, 'name': 'sireId', 'type': 'uint256'},20 {'indexed': False, 'name': 'genes', 'type': 'uint256'}],21 'name': 'Birth',22 'type': 'event'23 }]2425# ہمیں لاگز کو فلٹر کرنے کے لیے ایونٹ کے دستخط کی ضرورت ہے۔26ck_event_signatures = [27 w3.keccak(text="Pregnant(address,uint256,uint256,uint256)").hex(),28 w3.keccak(text="Birth(address,uint256,uint256,uint256,uint256)").hex(),29]3031# یہاں ایک پریگننٹ ایونٹ ہے:32# - https://etherscan.io/tx/0xc97eb514a41004acc447ac9d0d6a27ea6da305ac8b877dff37e49db42e1f8cef#eventlog33pregnant_logs = w3.eth.get_logs({34 "fromBlock": w3.eth.block_number - 120,35 "address": w3.to_checksum_address(ck_token_addr),36 "topics": [ck_event_signatures[0]]37})3839recent_pregnants = [get_event_data(w3.codec, ck_extra_events_abi[0], log)["args"] for log in pregnant_logs]4041# یہاں ایک برتھ ایونٹ ہے:42# - https://etherscan.io/tx/0x3978028e08a25bb4c44f7877eb3573b9644309c044bf087e335397f16356340a43birth_logs = w3.eth.get_logs({44 "fromBlock": w3.eth.block_number - 120,45 "address": w3.to_checksum_address(ck_token_addr),46 "topics": [ck_event_signatures[1]]47})4849recent_births = [get_event_data(w3.codec, ck_extra_events_abi[1], log)["args"] for log in birth_logs]سب دکھائیںمشہور NFTs
- Etherscan NFT Trackeropens in a new tab ٹرانسفر حجم کے لحاظ سے ایتھیریم پر سرفہرست NFT کی فہرست دیتا ہے۔
- CryptoKittiesopens in a new tab ایک ایسا گیم ہے جو افزائش کے قابل، جمع کرنے کے قابل، اور بہت ہی پیارے مخلوقات کے ارد گرد مرکوز ہے جسے ہم CryptoKitties کہتے ہیں۔
- Sorareopens in a new tab ایک عالمی فینٹسی فٹ بال گیم ہے جہاں آپ محدود ایڈیشن جمع کرنے والی اشیاء جمع کر سکتے ہیں، اپنی ٹیموں کا انتظام کر سکتے ہیں اور انعامات حاصل کرنے کے لیے مقابلہ کر سکتے ہیں۔
- The Ethereum Name Service (ENS)opens in a new tab سادہ، انسانی پڑھنے کے قابل ناموں کا استعمال کرتے ہوئے بلاک چین پر اور اس سے باہر دونوں وسائل کو ایڈریس کرنے کا ایک محفوظ اور غیر مرکزی طریقہ پیش کرتا ہے۔
- POAPopens in a new tab ان لوگوں کو مفت NFTs فراہم کرتا ہے جو ایونٹس میں شرکت کرتے ہیں یا مخصوص کارروائیاں مکمل کرتے ہیں۔ POAPs بنانے اور تقسیم کرنے کے لیے مفت ہیں۔
- Unstoppable Domainsopens in a new tab ایک سان فرانسسکو میں مقیم کمپنی ہے جو بلاک چینز پر ڈومینز بناتی ہے۔ بلاک چین ڈومینز کرپٹو کرنسی ایڈریسز کو انسانی پڑھنے کے قابل ناموں سے بدل دیتے ہیں اور سنسرشپ سے مزاحم ویب سائٹس کو فعال کرنے کے لیے استعمال کیے جا سکتے ہیں۔
- Gods Unchained Cardsopens in a new tab ایتھیریم بلاک چین پر ایک TCG ہے جو ان گیم اثاثوں کو حقیقی ملکیت دلانے کے لیے NFT's کا استعمال کرتا ہے۔
- Bored Ape Yacht Clubopens in a new tab 10,000 منفرد NFTs کا ایک مجموعہ ہے، جو، ثابت طور پر نایاب آرٹ کا ایک ٹکڑا ہونے کے ساتھ ساتھ، کلب کے لیے ایک رکنیت ٹوکن کے طور پر کام کرتا ہے، جو ممبر کے فوائد اور فوائد فراہم کرتا ہے جو کمیونٹی کی کوششوں کے نتیجے میں وقت کے ساتھ ساتھ بڑھتے ہیں۔