اسمارٹ کنٹریکٹس کا تعارف
صفحہ کی آخری تازہ کاری: 25 فروری، 2026
اسمارٹ کنٹریکٹ کیا ہے؟
ایک "اسمارٹ کنٹریکٹ" محض ایک پروگرام ہے جو Ethereum بلاک چین پر چلتا ہے۔ یہ کوڈ (اس کے فنکشنز) اور ڈیٹا (اس کی اسٹیٹ) کا ایک مجموعہ ہے جو Ethereum بلاک چین پر ایک مخصوص ایڈریس پر رہتا ہے۔
اسمارٹ کنٹریکٹس ایک قسم کے Ethereum اکاؤنٹ ہیں۔ اس کا مطلب ہے کہ ان کا ایک بیلنس ہوتا ہے اور وہ ٹرانزیکشنز کا ہدف ہو سکتے ہیں۔ تاہم انہیں کسی یوزر کے ذریعے کنٹرول نہیں کیا جاتا، اس کے بجائے انہیں نیٹ ورک پر ڈیپلائے کیا جاتا ہے اور پروگرام کے مطابق چلایا جاتا ہے۔ یوزر اکاؤنٹس پھر ایسے ٹرانزیکشنز جمع کر کے ایک اسمارٹ کنٹریکٹ کے ساتھ تعامل کر سکتے ہیں جو اسمارٹ کنٹریکٹ پر بیان کردہ فنکشن کو عمل میں لاتے ہیں۔ اسمارٹ کنٹریکٹس ایک باقاعدہ کنٹریکٹ کی طرح اصولوں کی وضاحت کر سکتے ہیں، اور کوڈ کے ذریعے خود بخود ان کا نفاذ کر سکتے ہیں۔ اسمارٹ کنٹریکٹس کو بطور ڈیفالٹ ڈیلیٹ نہیں کیا جا سکتا، اور ان کے ساتھ تعاملات ناقابل واپسی ہیں۔
شرائط
اگر آپ ابھی شروعات کر رہے ہیں یا کم تکنیکی تعارف کی تلاش میں ہیں، تو ہم اپنے اسمارٹ کنٹریکٹس کے تعارف کی سفارش کرتے ہیں۔
اسمارٹ کنٹریکٹس کی دنیا میں قدم رکھنے سے پہلے یقینی بنائیں کہ آپ نے اکاؤنٹس، ٹرانزیکشنز اور Ethereum ورچوئل مشین کے بارے میں پڑھ لیا ہے۔
ایک ڈیجیٹل وینڈنگ مشین
شاید ایک اسمارٹ کنٹریکٹ کے لیے بہترین استعارہ ایک وینڈنگ مشین ہے، جیسا کہ Nick Szabo (opens in a new tab) نے بیان کیا ہے۔ صحیح ان پٹس کے ساتھ، ایک مخصوص آؤٹ پٹ کی ضمانت دی جاتی ہے۔
ایک وینڈنگ مشین سے اسنیک حاصل کرنے کے لیے:
1پیسہ + اسنیک کا انتخاب = اسنیک دیا گیایہ منطق وینڈنگ مشین میں پروگرام کی گئی ہے۔
ایک اسمارٹ کنٹریکٹ میں، ایک وینڈنگ مشین کی طرح، منطق پروگرام کی گئی ہوتی ہے۔ یہاں ایک سادہ مثال ہے کہ یہ وینڈنگ مشین کیسی نظر آئے گی اگر یہ Solidity میں لکھا ہوا ایک اسمارٹ کنٹریکٹ ہوتا:
1pragma solidity 0.8.7;23contract VendingMachine {45 // کنٹریکٹ کے اسٹیٹ ویری ایبلز کا اعلان کریں6 address public owner;7 mapping (address => uint) public cupcakeBalances;89 // جب 'VendingMachine' کنٹریکٹ ڈیپلائے ہوتا ہے:10 // 1. ڈیپلائے کرنے والے ایڈریس کو کنٹریکٹ کے مالک کے طور پر سیٹ کریں11 // 2. ڈیپلائے شدہ اسمارٹ کنٹریکٹ کے کپ کیک بیلنس کو 100 پر سیٹ کریں12 constructor() {13 owner = msg.sender;14 cupcakeBalances[address(this)] = 100;15 }1617 // مالک کو اسمارٹ کنٹریکٹ کے کپ کیک بیلنس کو بڑھانے کی اجازت دیں18 function refill(uint amount) public {19 require(msg.sender == owner, "صرف مالک ہی دوبارہ بھر سکتا ہے۔");20 cupcakeBalances[address(this)] += amount;21 }2223 // کسی کو بھی کپ کیک خریدنے کی اجازت دیں24 function purchase(uint amount) public payable {25 require(msg.value >= amount * 1 ether, "آپ کو فی کپ کیک کم از کم 1 ETH ادا کرنا ہوگا۔");26 require(cupcakeBalances[address(this)] >= amount, "اس خریداری کو مکمل کرنے کے لیے اسٹاک میں کافی کپ کیکس نہیں ہیں۔");27 cupcakeBalances[address(this)] -= amount;28 cupcakeBalances[msg.sender] += amount;29 }30}سب دکھائیںجس طرح ایک وینڈنگ مشین ایک وینڈر ملازم کی ضرورت کو ختم کرتی ہے، اسی طرح اسمارٹ کنٹریکٹس کئی صنعتوں میں بیچوالوں کی جگہ لے سکتے ہیں۔
بغیر اجازت کے
کوئی بھی اسمارٹ کنٹریکٹ لکھ سکتا ہے اور اسے نیٹ ورک پر ڈیپلائے کر سکتا ہے۔ آپ کو صرف ایک اسمارٹ کنٹریکٹ لینگویج میں کوڈ کرنا سیکھنے کی ضرورت ہے، اور اپنے کنٹریکٹ کو ڈیپلائے کرنے کے لیے کافی ETH ہونا چاہیے۔ ایک اسمارٹ کنٹریکٹ کو ڈیپلائے کرنا تکنیکی طور پر ایک ٹرانزیکشن ہے، لہذا آپ کو اسی طرح گیس ادا کرنے کی ضرورت ہے جس طرح آپ ایک سادہ ETH ٹرانسفر کے لیے گیس ادا کرتے ہیں۔ تاہم، کنٹریکٹ ڈیپلائیمنٹ کے لیے گیس کے اخراجات بہت زیادہ ہیں۔
Ethereum میں اسمارٹ کنٹریکٹس لکھنے کے لیے ڈیولپر-فرینڈلی زبانیں ہیں:
- Solidity
- Vyper
تاہم، انہیں ڈیپلائے کرنے سے پہلے کمپائل کیا جانا چاہیے تاکہ Ethereum کی ورچوئل مشین کنٹریکٹ کی تشریح اور اسے اسٹور کر سکے۔ کمپائلیشن پر مزید
کمپوزیبلٹی
اسمارٹ کنٹریکٹس Ethereum پر پبلک ہیں اور انہیں اوپن APIs کے طور پر سمجھا جا سکتا ہے۔ اس کا مطلب ہے کہ آپ اپنے اسمارٹ کنٹریکٹ میں دوسرے اسمارٹ کنٹریکٹس کو کال کر کے جو ممکن ہے اسے بہت حد تک بڑھا سکتے ہیں۔ کنٹریکٹس دوسرے کنٹریکٹس کو بھی ڈیپلائے کر سکتے ہیں۔
اسمارٹ کنٹریکٹ کمپوزیبلٹی کے بارے میں مزید جانیں۔
حدود
اسمارٹ کنٹریکٹس اکیلے "حقیقی دنیا" کے واقعات کے بارے میں معلومات حاصل نہیں کر سکتے کیونکہ وہ آف چین ذرائع سے ڈیٹا حاصل نہیں کر سکتے۔ اس کا مطلب ہے کہ وہ حقیقی دنیا کے واقعات پر ردعمل ظاہر نہیں کر سکتے۔ ایسا ڈیزائن کے مطابق ہے۔ بیرونی معلومات پر انحصار کرنا اتفاق رائے کو خطرے میں ڈال سکتا ہے، جو سیکیورٹی اور ڈی سینٹرلائزیشن کے لیے اہم ہے۔
تاہم، بلاک چین ایپلی کیشنز کے لیے یہ اہم ہے کہ وہ آف چین ڈیٹا استعمال کر سکیں۔ اس کا حل oracles ہیں جو ایسے ٹولز ہیں جو آف چین ڈیٹا حاصل کرتے ہیں اور اسے اسمارٹ کنٹریکٹس کے لیے دستیاب کراتے ہیں۔
اسمارٹ کنٹریکٹس کی ایک اور حد کنٹریکٹ کا زیادہ سے زیادہ سائز ہے۔ ایک اسمارٹ کنٹریکٹ زیادہ سے زیادہ 24KB کا ہو سکتا ہے ورنہ اس کی گیس ختم ہو جائے گی۔ The Diamond Pattern (opens in a new tab) کا استعمال کر کے اس سے بچا جا سکتا ہے۔
ملٹی سِگ کنٹریکٹس
ملٹی سِگ (متعدد-دستخط) کنٹریکٹس اسمارٹ کنٹریکٹ اکاؤنٹس ہیں جنہیں ٹرانزیکشن کو انجام دینے کے لیے متعدد درست دستخطوں کی ضرورت ہوتی ہے۔ یہ ان کنٹریکٹس کے لیے ناکامی کے واحد نکات سے بچنے کے لیے بہت مفید ہے جن میں بڑی مقدار میں ether یا دیگر ٹوکنز موجود ہوں۔ ملٹی سِگ کنٹریکٹ کے نفاذ اور کلیدی انتظام کی ذمہ داری کو متعدد پارٹیوں کے درمیان تقسیم کرتے ہیں اور ایک واحد پرائیویٹ کلید کے کھو جانے کو روکتے ہیں جس سے فنڈز کا ناقابل واپسی نقصان ہوتا ہے۔ ان وجوہات کی بناء پر، ملٹی سِگ کنٹریکٹس کو سادہ DAO گورننس کے لیے استعمال کیا جا سکتا ہے۔ ملٹی سِگز کو عمل میں لانے کے لیے M ممکنہ قابل قبول دستخطوں میں سے N دستخطوں کی ضرورت ہوتی ہے (جہاں N ≤ M، اور M > 1)۔ N = 3, M = 5 اور N = 4, M = 7 عام طور پر استعمال ہوتے ہیں۔ ایک 4/7 ملٹی سِگ کے لیے سات ممکنہ درست دستخطوں میں سے چار کی ضرورت ہوتی ہے۔ اس کا مطلب ہے کہ اگر تین دستخط کھو بھی جائیں تب بھی فنڈز بازیافت کیے جا سکتے ہیں۔ اس صورت میں، اس کا یہ بھی مطلب ہے کہ کلیدی ہولڈرز کی اکثریت کو متفق ہونا اور دستخط کرنا ہوگا تاکہ کنٹریکٹ عمل میں آ سکے۔
اسمارٹ کنٹریکٹ کے وسائل
OpenZeppelin Contracts - محفوظ اسمارٹ کنٹریکٹ ڈیولپمنٹ کے لیے لائبریری۔
- openzeppelin.com/contracts/ (opens in a new tab)
- GitHub (opens in a new tab)
- کمیونٹی فورم (opens in a new tab)