اسمارٹ کانٹریکٹس کا تعارف
صفحہ کی آخری اپ ڈیٹ: 25 فروری، 2026
اسمارٹ کانٹریکٹ کیا ہے؟
ایک "اسمارٹ کانٹریکٹ" محض ایک پروگرام ہے جو Ethereum بلاک چین پر چلتا ہے۔ یہ کوڈ (اس کے فنکشنز) اور ڈیٹا (اس کی اسٹیٹ) کا مجموعہ ہے جو Ethereum بلاک چین پر ایک مخصوص ایڈریس پر موجود ہوتا ہے۔
اسمارٹ کانٹریکٹس Ethereum account کی ایک قسم ہیں۔ اس کا مطلب ہے کہ ان کا ایک بیلنس ہوتا ہے اور وہ ٹرانزیکشنز کا ہدف بن سکتے ہیں۔ تاہم، انہیں کسی صارف کے ذریعے کنٹرول نہیں کیا جاتا، بلکہ انہیں نیٹ ورک پر ڈیپلائے کیا جاتا ہے اور وہ پروگرام کے مطابق چلتے ہیں۔ پھر صارف کے اکاؤنٹس اسمارٹ کانٹریکٹ پر بیان کردہ فنکشن کو انجام دینے والی ٹرانزیکشنز جمع کر کے اسمارٹ کانٹریکٹ کے ساتھ تعامل کر سکتے ہیں۔ اسمارٹ کانٹریکٹس ایک عام کانٹریکٹ کی طرح اصول وضع کر سکتے ہیں، اور کوڈ کے ذریعے انہیں خود بخود نافذ کر سکتے ہیں۔ اسمارٹ کانٹریکٹس کو بائی ڈیفالٹ حذف نہیں کیا جا سکتا، اور ان کے ساتھ تعاملات ناقابل واپسی ہوتے ہیں۔
پیشگی شرائط
اگر آپ نے ابھی شروعات کی ہے یا کم تکنیکی تعارف کی تلاش میں ہیں، تو ہم اپنے اسمارٹ کانٹریکٹس کا تعارف کی تجویز کرتے ہیں۔
اسمارٹ کانٹریکٹس کی دنیا میں قدم رکھنے سے پہلے یقینی بنائیں کہ آپ نے اکاؤنٹس، ٹرانزیکشنز اور Ethereum virtual machine کے بارے میں پڑھ لیا ہے۔
ایک ڈیجیٹل وینڈنگ مشین
شاید اسمارٹ کانٹریکٹ کے لیے بہترین استعارہ ایک وینڈنگ مشین ہے، جیسا کہ Nick Szabo (opens in a new tab) نے بیان کیا ہے۔ درست ان پٹس کے ساتھ، ایک مخصوص آؤٹ پٹ کی ضمانت دی جاتی ہے۔
وینڈنگ مشین سے اسنیک حاصل کرنے کے لیے:
1money + snack selection = snack dispensedیہ لاجک وینڈنگ مشین میں پروگرام کی گئی ہے۔
ایک اسمارٹ کانٹریکٹ میں، وینڈنگ مشین کی طرح، لاجک پروگرام کی گئی ہوتی ہے۔ یہاں ایک سادہ سی مثال ہے کہ اگر یہ وینڈنگ مشین 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, "Only the owner can refill.");20 cupcakeBalances[address(this)] += amount;21 }2223 // ہر کسی کو کپ کیک خریدنے کی اجازت دیں24 function purchase(uint amount) public payable {25 require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");26 require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");27 cupcakeBalances[address(this)] -= amount;28 cupcakeBalances[msg.sender] += amount;29 }30}سب دکھائیںجس طرح ایک وینڈنگ مشین وینڈر کے ملازم کی ضرورت کو ختم کر دیتی ہے، اسی طرح اسمارٹ کانٹریکٹس بہت سی صنعتوں میں درمیانی افراد (intermediaries) کی جگہ لے سکتے ہیں۔
پرمیشن لیس (Permissionless)
کوئی بھی شخص اسمارٹ کانٹریکٹ لکھ سکتا ہے اور اسے نیٹ ورک پر ڈیپلائے کر سکتا ہے۔ آپ کو بس اسمارٹ کانٹریکٹ کی زبان میں کوڈ کرنا سیکھنے کی ضرورت ہے، اور اپنا کانٹریکٹ ڈیپلائے کرنے کے لیے کافی ETH ہونا چاہیے۔ اسمارٹ کانٹریکٹ کو ڈیپلائے کرنا تکنیکی طور پر ایک ٹرانزیکشن ہے، اس لیے آپ کو اسی طرح گیس (gas) ادا کرنے کی ضرورت ہوتی ہے جس طرح آپ کو ایک سادہ ETH ٹرانسفر کے لیے گیس ادا کرنی پڑتی ہے۔ تاہم، کانٹریکٹ ڈیپلائمنٹ کے لیے گیس کی لاگت بہت زیادہ ہوتی ہے۔
Ethereum میں اسمارٹ کانٹریکٹس لکھنے کے لیے ڈیولپر کے لیے سازگار زبانیں موجود ہیں:
- Solidity
- Vyper
تاہم، انہیں ڈیپلائے کرنے سے پہلے کمپائل کیا جانا چاہیے تاکہ Ethereum کی ورچوئل مشین کانٹریکٹ کی تشریح کر سکے اور اسے اسٹور کر سکے۔ کمپائلیشن کے بارے میں مزید
کمپوزایبلٹی (Composability)
اسمارٹ کانٹریکٹس Ethereum پر عوامی (public) ہوتے ہیں اور انہیں اوپن APIs کے طور پر سمجھا جا سکتا ہے۔ اس کا مطلب ہے کہ آپ اپنے اسمارٹ کانٹریکٹ میں دوسرے اسمارٹ کانٹریکٹس کو کال کر سکتے ہیں تاکہ جو کچھ ممکن ہے اسے بہت حد تک بڑھایا جا سکے۔ کانٹریکٹس یہاں تک کہ دوسرے کانٹریکٹس کو بھی ڈیپلائے کر سکتے ہیں۔
اسمارٹ کانٹریکٹ کمپوزایبلٹی کے بارے میں مزید جانیں۔
حدود
اسمارٹ کانٹریکٹس اکیلے "حقیقی دنیا" کے واقعات کے بارے میں معلومات حاصل نہیں کر سکتے کیونکہ وہ آف چین (offchain) ذرائع سے ڈیٹا بازیافت نہیں کر سکتے۔ اس کا مطلب ہے کہ وہ حقیقی دنیا کے واقعات پر ردعمل ظاہر نہیں کر سکتے۔ یہ ڈیزائن کا حصہ ہے۔ بیرونی معلومات پر انحصار کرنا اتفاق رائے (consensus) کو خطرے میں ڈال سکتا ہے، جو سیکیورٹی اور ڈی سینٹرلائزیشن کے لیے اہم ہے۔
تاہم، بلاک چین ایپلی کیشنز کے لیے آف چین ڈیٹا استعمال کرنے کے قابل ہونا اہم ہے۔ اس کا حل اوریکلز (oracles) ہیں جو ایسے ٹولز ہیں جو آف چین ڈیٹا کو حاصل کرتے ہیں اور اسے اسمارٹ کانٹریکٹس کے لیے دستیاب بناتے ہیں۔
اسمارٹ کانٹریکٹس کی ایک اور حد کانٹریکٹ کا زیادہ سے زیادہ سائز ہے۔ ایک اسمارٹ کانٹریکٹ زیادہ سے زیادہ 24KB کا ہو سکتا ہے ورنہ اس کی گیس ختم ہو جائے گی۔ اس مسئلے کو The Diamond Pattern (opens in a new tab) کا استعمال کر کے حل کیا جا سکتا ہے۔
ملٹی سگ (Multisig) کانٹریکٹس
ملٹی سگ (متعدد دستخط والے) کانٹریکٹس ایسے اسمارٹ کانٹریکٹ اکاؤنٹس ہیں جنہیں ٹرانزیکشن کو انجام دینے کے لیے متعدد درست دستخطوں کی ضرورت ہوتی ہے۔ یہ ان کانٹریکٹس کے لیے ناکامی کے واحد مقامات (single points of failure) سے بچنے کے لیے بہت مفید ہے جن میں کافی مقدار میں 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)
مزید مطالعہ
- Coinbase: اسمارٹ کانٹریکٹ کیا ہے؟ (opens in a new tab)
- Chainlink: اسمارٹ کانٹریکٹ کیا ہے؟ (opens in a new tab)
- ویڈیو: سادہ الفاظ میں وضاحت - اسمارٹ کانٹریکٹس (opens in a new tab)
- Cyfrin Updraft: Web3 سیکھنے اور آڈیٹنگ کا پلیٹ فارم (opens in a new tab)
ٹیوٹوریلز: Ethereum پر اسمارٹ کانٹریکٹ کے دستخط (EIP-1271)
- EIP-1271: اسمارٹ کانٹریکٹ کے دستخطوں پر دستخط کرنا اور ان کی تصدیق کرنا – EIP-1271 کس طرح اسمارٹ کانٹریکٹس کو دستخطوں کی تصدیق کرنے کے قابل بناتا ہے، Safe کے نفاذ کے ایک واک تھرو کے ساتھ۔