مرکزی مواد پر جائیں

⁦ERC-20⁩ ٹوکن سمارٹ کنٹریکٹ کو سمجھیں

سمارٹ کنٹریکٹس
ٹوکنز
Solidity
erc-20
ابتدائی
jdourlens
۵ اپریل، ۲۰۲۰
6 منٹ کا مطالعہ

ایتھیریم پر سب سے اہم سمارٹ کنٹریکٹ کے معیارات میں سے ایک کو ERC-20 کے نام سے جانا جاتا ہے، جو قابل تبادلہ ٹوکن کے نفاذ کے لیے ایتھیریم بلاک چین پر تمام سمارٹ کنٹریکٹس کے لیے استعمال ہونے والے تکنیکی معیار کے طور پر ابھرا ہے۔

ERC-20 ان اصولوں کی ایک مشترکہ فہرست کی وضاحت کرتا ہے جن پر تمام قابل تبادلہ ایتھیریم ٹوکنز کو عمل کرنا چاہیے۔ نتیجتاً، یہ ٹوکن معیار ہر قسم کے ڈیولپرز کو بااختیار بناتا ہے کہ وہ درست طریقے سے پیش گوئی کر سکیں کہ نئے ٹوکنز بڑے ایتھیریم سسٹم کے اندر کیسے کام کریں گے۔ اس سے ڈیولپرز کے کام آسان ہو جاتے ہیں، کیونکہ وہ اپنا کام یہ جان کر جاری رکھ سکتے ہیں کہ جب تک ٹوکن اصولوں کی پیروی کرتا ہے، ہر نئے پروجیکٹ کو ہر بار نیا ٹوکن جاری ہونے پر دوبارہ کرنے کی ضرورت نہیں ہوگی۔

یہاں ایک انٹرفیس کے طور پر پیش کیے گئے وہ فنکشنز ہیں جنہیں ERC-20 کو نافذ کرنا چاہیے۔ اگر آپ کو یقین نہیں ہے کہ انٹرفیس کیا ہے: تو Solidity میں OOP پروگرامنگ (opens in a new tab) کے بارے میں ہمارا مضمون دیکھیں۔

یہاں لائن بہ لائن وضاحت دی گئی ہے کہ ہر فنکشن کس لیے ہے۔ اس کے بعد ہم ERC-20 ٹوکن کا ایک سادہ نفاذ پیش کریں گے۔

گیٹرز (Getters)

function totalSupply() external view returns (uint256);

موجود ٹوکنز کی مقدار واپس کرتا ہے۔ یہ فنکشن ایک گیٹر (getter) ہے اور کنٹریکٹ کی حالت کو تبدیل نہیں کرتا ہے۔ ذہن میں رکھیں کہ Solidity میں کوئی فلوٹس (floats) نہیں ہیں۔ اس لیے زیادہ تر ٹوکنز 18 اعشاریہ (decimals) اپناتے ہیں اور کل سپلائی اور دیگر نتائج کو 1 ٹوکن کے لیے 1000000000000000000 کے طور پر واپس کریں گے۔ ہر ٹوکن میں 18 اعشاریہ نہیں ہوتے اور ٹوکنز کے ساتھ کام کرتے وقت آپ کو واقعی اس بات کا خیال رکھنے کی ضرورت ہے۔

function balanceOf(address account) external view returns (uint256);

کسی پتہ (account) کی ملکیت والے ٹوکنز کی مقدار واپس کرتا ہے۔ یہ فنکشن ایک گیٹر ہے اور کنٹریکٹ کی حالت کو تبدیل نہیں کرتا ہے۔

function allowance(address owner, address spender) external view returns (uint256);

ERC-20 معیار ایک پتہ کو دوسرے پتہ کو الاؤنس دینے کی اجازت دیتا ہے تاکہ وہ اس سے ٹوکنز بازیافت کر سکے۔ یہ گیٹر باقی ماندہ ٹوکنز کی تعداد واپس کرتا ہے جو spender کو owner کی جانب سے خرچ کرنے کی اجازت ہوگی۔ یہ فنکشن ایک گیٹر ہے اور کنٹریکٹ کی حالت کو تبدیل نہیں کرتا ہے اور اسے پہلے سے طے شدہ (by default) طور پر 0 واپس کرنا چاہیے۔

فنکشنز

function transfer(address recipient, uint256 amount) external returns (bool);

ٹوکنز کی amount کو فنکشن کالر کے پتہ (msg.sender) سے وصول کنندہ کے پتہ پر منتقل کرتا ہے۔ یہ فنکشن بعد میں بیان کردہ Transfer ایونٹ کو خارج (emit) کرتا ہے۔ اگر منتقلی ممکن تھی تو یہ true واپس کرتا ہے۔

function approve(address spender, uint256 amount) external returns (bool);

allowance کی وہ مقدار سیٹ کریں جو spender کو فنکشن کالر (msg.sender) کے بیلنس سے منتقل کرنے کی اجازت ہے۔ یہ فنکشن Approval ایونٹ کو خارج کرتا ہے۔ فنکشن یہ واپس کرتا ہے کہ آیا الاؤنس کامیابی کے ساتھ سیٹ کیا گیا تھا۔

function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

الاؤنس کے طریقہ کار کا استعمال کرتے ہوئے ٹوکنز کی amount کو sender سے recipient میں منتقل کرتا ہے۔ پھر کالر کے الاؤنس سے مقدار کاٹ لی جاتی ہے۔ یہ فنکشن Transfer ایونٹ کو خارج کرتا ہے۔

ایونٹس

event Transfer(address indexed from, address indexed to, uint256 value);

یہ ایونٹ اس وقت خارج ہوتا ہے جب ٹوکنز کی مقدار (ویلیو) from پتہ سے to پتہ پر بھیجی جاتی ہے۔

نئے ٹوکنز کی ڈھلائی کے معاملے میں، منتقلی عام طور پر from 0x00..0000 پتہ سے ہوتی ہے جبکہ ٹوکنز کو جلانے کے معاملے میں منتقلی to 0x00..0000 پر ہوتی ہے۔

event Approval(address indexed owner, address indexed spender, uint256 value);

یہ ایونٹ اس وقت خارج ہوتا ہے جب ٹوکنز کی مقدار (value) کو owner کی طرف سے spender کے استعمال کے لیے منظور کیا جاتا ہے۔

ERC-20 ٹوکنز کا ایک بنیادی نفاذ

یہاں وہ سب سے آسان کوڈ ہے جس پر آپ اپنے ERC-20 ٹوکن کی بنیاد رکھ سکتے ہیں:

ERC-20 ٹوکن معیار کا ایک اور بہترین نفاذ اوپن زیپلن ERC-20 کا نفاذ (opens in a new tab) ہے۔