Dive into Move - Facebook کی Libra blockchain پروگرامنگ زبان

اگلا ، ہم تفصیل سے غور کریں گے کہ موو لینگویج کی اہم خصوصیات اور اسمارٹ کنٹریکٹ کے لیے پہلے سے مقبول زبان کے ساتھ اس کے کلیدی اختلافات کیا ہیں - سالڈیٹی (ایتھریم پلیٹ فارم پر)۔ یہ مواد دستیاب 26 صفحات کے وائٹ پیپر کے مطالعے پر مبنی ہے۔

تعارف

موو ایک قابل عمل بائیک کوڈ زبان ہے جو صارف کے لین دین اور سمارٹ معاہدوں کو انجام دینے کے لیے استعمال ہوتی ہے۔ براہ کرم دو نکات نوٹ کریں:

  1. اگرچہ موو ایک بائیکوڈ زبان ہے جو براہ راست موو ورچوئل مشین پر چلائی جا سکتی ہے ، سالیڈیٹی (ایتھریم کی سمارٹ کنٹریکٹ لینگویج) ایک اعلی درجے کی زبان ہے جو ای وی ایم (ایتھریم ورچوئل مشین) پر عملدرآمد سے پہلے بائیک کوڈ میں مرتب کی جاتی ہے۔
  2. موو کا استعمال نہ صرف سمارٹ کنٹریکٹ پر عمل درآمد کے لیے کیا جا سکتا ہے بلکہ اپنی مرضی کے لین دین کے لیے بھی کیا جا سکتا ہے


ترجمہ INDEX پروٹوکول پروجیکٹ ٹیم نے کیا۔ ہم پہلے ہی ترجمہ کر چکے ہیں۔ لیبرا پروجیکٹ کو بیان کرنے والا بڑا مواد، اب وقت آگیا ہے کہ موو لینگویج کو تھوڑی اور تفصیل سے دیکھیں۔ ترجمہ Habrauser کے ساتھ مشترکہ طور پر کیا گیا تھا کولسیو

موو کی ایک اہم خصوصیت لکیری منطق کی بنیاد پر سیمنٹکس کے ساتھ حسب ضرورت وسائل کی اقسام کی وضاحت کرنے کی صلاحیت ہے: کسی وسیلہ کو کبھی بھی کاپی یا واضح طور پر حذف نہیں کیا جا سکتا، صرف منتقل کیا جا سکتا ہے۔ عملی طور پر، یہ زنگ زبان کی صلاحیتوں سے ملتا جلتا ہے۔ زنگ میں اقدار ایک وقت میں صرف ایک نام کو تفویض کی جاسکتی ہیں۔ کسی مختلف نام کو قدر تفویض کرنے سے یہ پچھلے نام کے تحت دستیاب نہیں ہوتا ہے۔

Dive into Move - Facebook کی Libra blockchain پروگرامنگ زبان

مثال کے طور پر ، درج ذیل کوڈ کا ٹکڑا ایک غلطی پھینک دے گا: منتقل شدہ قیمت 'x' کا استعمال۔ اس کی وجہ یہ ہے کہ زنگ میں کچرا جمع نہیں ہوتا ہے۔ جب متغیرات دائرہ کار سے باہر چلے جاتے ہیں ، جس میموری کا وہ حوالہ دیتے ہیں وہ بھی آزاد ہوجاتا ہے۔ سیدھے الفاظ میں ، ڈیٹا کا صرف ایک "مالک" ہو سکتا ہے۔ اس مثال میں۔ x اصل مالک ہے اور پھر y نیا مالک بن جاتا ہے۔ اس رویے کے بارے میں یہاں مزید پڑھیں.

کھلے نظام میں ڈیجیٹل اثاثوں کی نمائندگی

جسمانی اثاثوں کی دو خصوصیات ہیں جن کی ڈیجیٹل نمائندگی کرنا مشکل ہے:

  • نایاب (قلت ، اصل میں قلت) نظام میں اثاثوں کی تعداد (اخراج) کو کنٹرول کرنا ہوگا۔ موجودہ اثاثوں کی نقل کو ممنوع قرار دیا جانا چاہیے ، اور نئے بنانا ایک مراعات یافتہ آپریشن ہے۔
  • رسائی کنٹرول... سسٹم کے شرکاء کو رسائی کنٹرول پالیسیوں کا استعمال کرتے ہوئے اثاثوں کی حفاظت کرنے کے قابل ہونا چاہیے۔

یہ دو خصوصیات ، جو جسمانی اثاثوں کے لیے قدرتی ہیں ، ڈیجیٹل اشیاء کے لیے لازمی طور پر نافذ ہونی چاہئیں اگر ہم ان کو اثاثہ سمجھنا چاہتے ہیں۔ مثال کے طور پر ، ایک نایاب دھات کی قدرتی کمی ہوتی ہے ، اور صرف آپ کو اس تک رسائی حاصل ہوتی ہے (مثال کے طور پر اسے اپنے ہاتھوں میں تھام کر) اور آپ اسے بیچ سکتے ہیں یا خرچ کر سکتے ہیں۔

یہ واضح کرنے کے لیے کہ ہم ان دو جائیدادوں پر کیسے پہنچے ، آئیے درج ذیل جملوں سے شروع کریں:

تجویز # 1: قلت اور رسائی کنٹرول کے بغیر آسان ترین اصول۔

Dive into Move - Facebook کی Libra blockchain پروگرامنگ زبان

  • G [K]: = n۔ ایک کلید کے ذریعے قابل رسائی نمبر کی تازہ کاری کو ظاہر کرتا ہے۔ К بلاک چین کی عالمی حالت میں ، ایک نئے معنی کے ساتھ۔ n.
  • لین دین - ایلس ، 100⟩ اس کا مطلب ہے کہ ایلس کے اکاؤنٹ کا بیلنس 100 پر رکھنا۔

مندرجہ بالا حل میں کئی بڑے مسائل ہیں:

  • ایلس صرف بھیج کر لامحدود سکے حاصل کر سکتی ہے۔ لین دین - ایلس ، 100⟩
  • ایلس نے باب کو جو سکے بھیجے وہ بیکار ہیں ، کیونکہ باب اسی تکنیک کا استعمال کرتے ہوئے خود کو لامحدود تعداد میں سکے بھیج سکتا ہے۔

تجویز # 2: خسارے کو مدنظر رکھتے ہوئے۔

Dive into Move - Facebook کی Libra blockchain پروگرامنگ زبان

اب ہم صورت حال کی نگرانی کر رہے ہیں تاکہ سکے کی تعداد۔ Ka کم از کم برابر تھا n ٹرانزیکشن ٹرانزیکشن سے پہلے تاہم ، جبکہ یہ قلت کا مسئلہ حل کرتا ہے ، اس کے بارے میں کوئی معلومات نہیں ہے کہ ایلس کے سکے کون بھیج سکتا ہے (فی الحال ، کوئی بھی ایسا کرسکتا ہے ، بنیادی بات یہ ہے کہ رقم کو محدود کرنے کے اصول کو نہ توڑا جائے)۔

تجویز # 3: کمی اور رسائی کنٹرول کا امتزاج۔

Dive into Move - Facebook کی Libra blockchain پروگرامنگ زبان

ہم اس مسئلے کو ڈیجیٹل دستخطی طریقہ کار سے حل کرتے ہیں۔ verify_sig بیلنس چیک کرنے سے پہلے ، جس کا مطلب ہے کہ ایلس ٹرانزیکشن پر دستخط کرنے اور اس بات کی تصدیق کرنے کے لیے اپنی نجی چابی استعمال کرتی ہے کہ وہ اپنے سکوں کی مالک ہے۔

بلاک چین پروگرامنگ زبانیں

موجودہ بلاکچین زبانوں کو درج ذیل مسائل کا سامنا ہے (ان سب کو موو میں حل کیا گیا تھا (نوٹ: بدقسمتی سے ، مضمون کا مصنف صرف اپنے موازنہ میں ایتھریم سے اپیل کرتا ہے ، لہذا ان کو صرف اس تناظر میں لینا ضروری ہے۔ مثال کے طور پر ، مندرجہ ذیل میں سے بیشتر کو EOS میں بھی حل کیا گیا ہے۔)):

اثاثوں کی بالواسطہ نمائندگی۔. ایک اثاثہ ایک عدد کا استعمال کرتے ہوئے انکوڈ کیا جاتا ہے، لیکن ایک عدد ایک اثاثہ جیسا نہیں ہوتا ہے۔ درحقیقت، Bitcoin/Ether/<Any Coin> کی نمائندگی کرنے والی کوئی قسم یا قدر نہیں ہے! اس سے ایسے پروگرام لکھنا مشکل ہو جاتا ہے جو اثاثوں کا استعمال کرتے ہیں اور غلطی کا شکار ہوتے ہیں۔ طریقہ کار میں اثاثوں کو منتقل کرنے یا ڈھانچے میں اثاثوں کو ذخیرہ کرنے جیسے نمونوں کو زبان سے خصوصی تعاون کی ضرورت ہوتی ہے۔

خسارہ قابل توسیع نہیں ہے۔... زبان صرف ایک قلیل اثاثہ کی نمائندگی کرتی ہے۔ اس کے علاوہ ، قلت کے خلاف علاج براہ راست زبان کے الفاظ میں سختی سے منسلک ہیں۔ ڈویلپر ، اگر وہ اپنی مرضی کے مطابق اثاثہ بنانا چاہتا ہے ، تو اسے اپنے آپ کو وسائل کے تمام پہلوؤں کو احتیاط سے کنٹرول کرنا ہوگا۔ یہ بالکل ایتھریم سمارٹ معاہدوں کے مسائل ہیں۔

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

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

یہ Ethereum پر بھی درست ہے، جہاں سمارٹ معاہدوں میں رسائی کنٹرول کے لیے مقامی خفیہ نگاری کی حمایت نہیں ہوتی ہے۔ ڈویلپرز کو دستی طور پر رسائی کنٹرول سیٹ کرنا چاہیے، مثال کے طور پر، OnlyOwner موڈیفائر کا استعمال کرتے ہوئے۔

اگرچہ میں Ethereum کا ایک بڑا پرستار ہوں، مجھے یقین ہے کہ اثاثوں کی خصوصیات کو حفاظتی مقاصد کے لیے زبان کے ذریعے مقامی طور پر سپورٹ کیا جانا چاہیے۔ خاص طور پر، ایتھر کو سمارٹ کنٹریکٹ میں منتقل کرنے میں ڈائنامک ڈسپیچ شامل ہے، جس نے کیڑے کی ایک نئی کلاس متعارف کرائی ہے جسے دوبارہ داخلے کے خطرات کے نام سے جانا جاتا ہے۔ یہاں ڈائنامک ڈسپیچ کا مطلب یہ ہے کہ کوڈ کی ایگزیکیوشن لاجک کا تعین کمپائل ٹائم (سٹیٹک) کے بجائے رن ٹائم (متحرک) پر کیا جائے گا۔

اس طرح، سالیڈیٹی میں، جب معاہدہ A معاہدہ B میں کسی فنکشن کو کال کرتا ہے، تو معاہدہ B ایسا کوڈ چلا سکتا ہے جو معاہدہ A کے ڈویلپر کے ذریعہ نہیں تھا، جس کے نتیجے میں دوبارہ داخلے کے خطرات (معاہدہ A اتفاقیہ طور پر اکاؤنٹ بیلنس کی کٹوتی سے پہلے رقم نکالنے کے لیے معاہدہ B کے طور پر کام کرتا ہے)۔

زبان کے ڈیزائن کے بنیادی اصولوں کو منتقل کریں۔

فرسٹ آرڈر کے وسائل۔

ایک اعلی سطح پر ، موو زبان میں ماڈیولز / وسائل / طریقہ کار کے درمیان تعامل OOP زبانوں میں کلاسوں / اشیاء اور طریقوں کے مابین تعلقات سے بہت ملتا جلتا ہے۔
موو ماڈیول دیگر بلاکچینز میں سمارٹ معاہدوں کی طرح ہیں۔ ماڈیول وسائل کی اقسام اور طریقہ کار کا اعلان کرتا ہے جو کہ اعلان شدہ وسائل بنانے ، تباہ کرنے اور اپ ڈیٹ کرنے کے قوانین کی وضاحت کرتا ہے۔ لیکن یہ سب محض کنونشن ہیں ("گندگی") حرکت میں۔ ہم تھوڑی دیر بعد اس نکتے کی وضاحت کریں گے۔

لچک۔

حرکت اسکرپٹنگ کے ذریعے لیبرا میں لچک پیدا کرتی ہے۔ لیبرا میں ہر لین دین میں ایک اسکرپٹ شامل ہوتا ہے، جو بنیادی طور پر لین دین کا بنیادی طریقہ کار ہے۔ اسکرپٹ یا تو ایک مخصوص کارروائی انجام دے سکتا ہے، مثال کے طور پر، وصول کنندگان کی ایک مخصوص فہرست کو ادائیگی، یا دوسرے وسائل کو دوبارہ استعمال کر سکتا ہے - مثال کے طور پر، کسی ایسے طریقہ کار کو کال کرکے جس میں عمومی منطق کی وضاحت کی گئی ہو۔ یہی وجہ ہے کہ موو ٹرانزیکشن اسکرپٹ زیادہ لچک پیش کرتے ہیں۔ ایک اسکرپٹ ایک وقتی اور دہرائے جانے والے دونوں طرز عمل کا استعمال کر سکتا ہے، جب کہ ایتھریم صرف دہرائی جانے والی اسکرپٹس پر عمل درآمد کر سکتا ہے (سمارٹ معاہدے کے طریقہ کار پر ایک طریقہ کو کہتے ہیں)۔ اسے "دوبارہ استعمال کے قابل" کہنے کی وجہ یہ ہے کہ ایک سمارٹ کنٹریکٹ کے افعال کو متعدد بار انجام دیا جا سکتا ہے۔ (نوٹ: یہاں بات بہت باریک ہے۔ ایک طرف، Bitcoin میں pseudo-bytecode کی شکل میں لین دین کے اسکرپٹ بھی موجود ہیں۔ دوسری طرف، جیسا کہ میں اسے سمجھتا ہوں، Move اس زبان کو، حقیقت میں، ایک مکمل سمارٹ کنٹریکٹ لینگویج کی سطح تک پھیلاتا ہے۔).

سیکورٹی

موو ایگزیکیوٹیبل فارمیٹ بائیک کوڈ ہے، جو کہ ایک طرف اسمبلی لینگویج سے اعلیٰ سطح کی زبان ہے، لیکن سورس کوڈ سے نچلی سطح کی ہے۔ بائٹ کوڈ تصدیق کنندہ کا استعمال کرتے ہوئے وسائل، اقسام اور میموری کی حفاظت کے لیے رن ٹائم (آن-چین) میں چیک کیا جاتا ہے، اور پھر مترجم کے ذریعے عمل میں لایا جاتا ہے۔ یہ نقطہ نظر Move کو سورس کوڈ کی سیکیورٹی فراہم کرنے کی اجازت دیتا ہے، لیکن تالیف کے عمل اور سسٹم میں کمپائلر کو شامل کرنے کی ضرورت کے بغیر۔ بائیک کوڈ زبان کو منتقل کرنا واقعی ایک اچھا حل ہے۔ اسے سورس سے مرتب کرنے کی ضرورت نہیں ہے، جیسا کہ سولیڈیٹی کا معاملہ ہے، اور کمپائلر انفراسٹرکچر پر ممکنہ ناکامیوں یا حملوں کے بارے میں فکر کرنے کی ضرورت نہیں ہے۔

تصدیق

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

ماڈیولریٹی

موو ماڈیول ڈیٹا تجرید فراہم کرتے ہیں اور وسائل پر اہم آپریشن کو مقامی بناتے ہیں۔ ماڈیول کے ذریعہ فراہم کردہ انکپسولیشن ، موو ٹائپ سسٹم کے ذریعہ فراہم کردہ تحفظ کے ساتھ مل کر ، اس بات کو یقینی بناتا ہے کہ ماڈیول کی اقسام پر مقرر کردہ خصوصیات کو ماڈیول کے باہر کوڈ کے ذریعے خلاف ورزی نہیں کی جا سکتی۔ یہ ایک سوچا سمجھا تجریدی ڈیزائن ہے ، جس کا مطلب ہے کہ معاہدے کے اندر موجود ڈیٹا کو معاہدے کے دائرہ کار میں ہی تبدیل کیا جاسکتا ہے ، لیکن بیرونی طور پر نہیں۔

Dive into Move - Facebook کی Libra blockchain پروگرامنگ زبان

جائزہ منتقل کریں۔

ٹرانزیکشن اسکرپٹ کی مثال ظاہر کرتی ہے کہ ماڈیول کے باہر ایک پروگرامر کی جانب سے بدنیتی پر مبنی یا لاپرواہ اقدامات ماڈیول کے وسائل کی حفاظت سے سمجھوتہ نہیں کر سکتے۔ اگلا ، ہم مثالیں دیکھیں گے کہ لیبرا بلاکچین کو پروگرام کرنے کے لیے ماڈیولز ، وسائل اور طریقہ کار کس طرح استعمال ہوتے ہیں۔

پیر ٹو پیر ادائیگی۔

Dive into Move - Facebook کی Libra blockchain پروگرامنگ زبان

رقم میں مخصوص سکوں کی تعداد بھیجنے والے کے بیلنس سے وصول کنندہ کو منتقل کر دی جائے گی۔
یہاں کچھ نئی چیزیں ہیں (سرخ رنگ میں نمایاں کردہ):

  • 0x0: اکاؤنٹ کا پتہ جہاں ماڈیول محفوظ ہے۔
  • کرنسی: ماڈیول کا نام
  • سکے: وسائل کی قسم
  • طریقہ کار کے ذریعے واپس کی گئی سکوں کی قیمت 0x0.Currency.Coin قسم کی وسائل کی قیمت ہے۔
  • اقدام (): ویلیو کو دوبارہ استعمال نہیں کیا جا سکتا۔
  • کاپی (): قدر بعد میں استعمال کی جا سکتی ہے۔

کوڈ کی تجزیہ کریں: پہلے مرحلے میں ، بھیجنے والے کو ایک طریقہ کار کہا جاتا ہے۔ واپس بھیجنے والے سے ذخیرہ شدہ ماڈیول سے 0x0. کرنسی. دوسرے مرحلے میں، بھیجنے والا سکے کے وسائل کی قیمت کو ماڈیول کے جمع کرنے کے طریقہ کار میں منتقل کر کے وصول کنندہ کو رقوم منتقل کرتا ہے۔ 0x0. کرنسی.

یہاں کوڈ میں غلطیوں کی تین مثالیں ہیں جنہیں چیک کے ذریعے مسترد کر دیا جائے گا۔
کال تبدیل کرکے ڈپلیکیٹ فنڈز۔ منتقل (سکے) پر کاپی (سکے). وسائل صرف منتقل کیے جا سکتے ہیں۔ وسائل کی مقدار کو نقل کرنے کی کوشش کرنا (مثال کے طور پر، کال کرکے کاپی (سکے) مندرجہ بالا مثال میں) بائٹ کوڈ چیک کرتے وقت غلطی ہوگی۔

فنڈز کا دوبارہ استعمال واضح کر کے۔ منتقل (سکے) دو بار . ایک لائن شامل کرنا 0x0.Currency.deposit (کاپی (some_other_payee)، منتقل کریں (سکہ) مثال کے طور پر، اوپر بھیجنے والے کو سکے دو بار "خرچ" کرنے کی اجازت دے گا - پہلی بار وصول کنندہ کے ساتھ، اور دوسری بار کچھ_دوسرے_ادا کرنے والے. یہ ایک ناپسندیدہ سلوک ہے جو جسمانی اثاثہ کے ساتھ ممکن نہیں ہے۔ خوش قسمتی سے، Move اس پروگرام کو مسترد کر دے گا۔

انکار کی وجہ سے فنڈز کا نقصان منتقل (سکے). اگر آپ وسائل کو منتقل نہیں کرتے ہیں (مثال کے طور پر، پر مشتمل لائن کو حذف کرکے منتقل (سکے))، بائیک کوڈ کی توثیق کی غلطی پھینک دی جائے گی۔ یہ موو پروگرامرز کو فنڈز کے حادثاتی یا نقصان دہ نقصان سے بچاتا ہے۔

کرنسی ماڈیول

Dive into Move - Facebook کی Libra blockchain پروگرامنگ زبان

ہر اکاؤنٹ میں 0 یا زیادہ ماڈیولز (مستطیل کے طور پر دکھایا گیا ہے) اور ایک یا زیادہ وسائل کی قدریں (سلنڈر کے طور پر دکھائی گئی ہیں) پر مشتمل ہو سکتا ہے۔ مثال کے طور پر، پر ایک اکاؤنٹ 0x0 ماڈیول پر مشتمل ہے۔ 0x0. کرنسی اور وسائل کی قسم کی قدر 0x0.Currency.Coin. ایڈریس پر اکاؤنٹ 0x1 دو وسائل اور ایک ماڈیول ہے؛ ایڈریس پر اکاؤنٹ 0x2 دو ماڈیولز اور ایک ریسورس ویلیو ہے۔

کچھ لمحات:

  • لین دین کا اسکرپٹ جوہری ہے - یا تو اسے مکمل طور پر انجام دیا جاتا ہے یا بالکل نہیں۔
  • ماڈیول کوڈ کا ایک طویل المیعاد ٹکڑا ہے جو عالمی سطح پر قابل رسائی ہے۔
  • عالمی ریاست کو ایک ہیش ٹیبل کے طور پر تشکیل دیا گیا ہے، جہاں کلید اکاؤنٹ کا پتہ ہے۔
  • اکاؤنٹس میں دی گئی قسم کی ایک سے زیادہ وسائل کی قدر نہیں ہوسکتی ہے اور نہ ہی دیئے گئے نام کے ساتھ ایک سے زیادہ ماڈیول (اکاؤنٹ پر 0x0 اضافی وسائل پر مشتمل نہیں ہو سکتا 0x0.Currency.Coin یا کسی اور ماڈیول کا نام کرنسی)
  • اعلان کردہ ماڈیول کا پتہ اس قسم کا حصہ ہے (0x0.Currency.Coin и 0x1.Currency.Coin الگ الگ قسمیں ہیں جو ایک دوسرے کے ساتھ استعمال نہیں ہوسکتی ہیں)
  • پروگرامرز اپنے حسب ضرورت وسائل کی وضاحت کر کے اس قسم کے وسائل کی متعدد مثالوں کو اکاؤنٹ میں محفوظ کر سکتے ہیں۔وسائل TwoCoins {c1: 0x0.Currency.Coin, c2: 0x0.Currency.Coin})
  • آپ کسی وسیلہ کو اس کے نام سے بغیر تنازعات کے حوالہ دے سکتے ہیں، مثال کے طور پر آپ دو وسائل کا استعمال کرتے ہوئے حوالہ دے سکتے ہیں۔ TwoCoins.c1 и TwoCoins.c2.

سکے کے وسائل کا اعلان

Dive into Move - Facebook کی Libra blockchain پروگرامنگ زبان
ماڈیول کا نام دیا گیا۔ کرنسی اور ایک وسائل کی قسم کا نام دیا گیا ہے۔ سکے

کچھ لمحات:

  • سکے قسم کے ایک فیلڈ کے ساتھ ایک ڈھانچہ ہے۔ u64 (64 بٹ غیر دستخط شدہ عدد)
  • صرف ماڈیول کے طریقہ کار کرنسی قسم کی اقدار کو تخلیق یا تباہ کر سکتا ہے۔ سکے.
  • دیگر ماڈیولز اور اسکرپٹ صرف ماڈیول کے ذریعہ فراہم کردہ عوامی طریقہ کار کے ذریعے ویلیو فیلڈ کو لکھ یا حوالہ دے سکتے ہیں۔

ڈپازٹ کی فروخت

Dive into Move - Facebook کی Libra blockchain پروگرامنگ زبان

یہ طریقہ کار ایک وسائل کو قبول کرتا ہے۔ سکے بطور ان پٹ اور اسے وسائل کے ساتھ جوڑتا ہے۔ سکےوصول کنندہ کے اکاؤنٹ میں محفوظ:

  1. ان پٹ ریسورس سکے کو تباہ کرنا اور اس کی قیمت کو ریکارڈ کرنا۔
  2. وصول کنندہ کے اکاؤنٹ میں ذخیرہ شدہ سکے کے منفرد وسائل کا لنک وصول کرنا۔
  3. طریقہ کار کو کال کرتے وقت پیرامیٹر میں پاس کی گئی قدر کے حساب سے سکے کی تعداد کی قدر کو تبدیل کرنا۔

کچھ لمحات:

  • پیک کھولیں، بورو گلوبل - بلٹ ان طریقہ کار
  • پیک کھولیں۔ T قسم کے وسائل کو حذف کرنے کا یہ واحد طریقہ ہے۔ طریقہ کار ایک وسیلہ کو بطور ان پٹ لیتا ہے، اسے تباہ کر دیتا ہے، اور وسائل کے شعبوں سے وابستہ قدر واپس کرتا ہے۔
  • ادھار گلوبل ایک ایڈریس کو بطور ان پٹ لیتا ہے اور اس ایڈریس کے ذریعہ شائع شدہ (ملکیت) T کی ایک منفرد مثال کا حوالہ دیتا ہے۔
  • &mut سکے یہ وسائل کا ایک لنک ہے۔ سکے

بھیجنے والے سے واپس لینے کا عمل

Dive into Move - Facebook کی Libra blockchain پروگرامنگ زبان

یہ طریقہ کار:

  1. ایک منفرد وسائل کا لنک ملتا ہے۔ سکے، بھیجنے والے کے اکاؤنٹ سے منسلک
  2. وسائل کی قدر کو کم کرتا ہے۔ سکے مخصوص رقم کے لیے لنک کے ذریعے
  3. ایک نیا وسیلہ بناتا اور واپس کرتا ہے۔ سکے تازہ ترین بیلنس کے ساتھ۔

کچھ لمحات:

  • جمع کسی کی وجہ سے ہو سکتا ہے، لیکن واپس بھیجنے والے سے صرف کالنگ اکاؤنٹ کے سکوں تک رسائی ہے۔
  • GetTxnSenderAddress کی طرح msg.sender استحکام میں
  • RejectUnless کی طرح کی ضرورت استحکام میں اگر یہ چیک ناکام ہو جاتا ہے، تو لین دین روک دیا جاتا ہے اور تمام تبدیلیاں واپس کر دی جاتی ہیں۔
  • پیک یہ ایک بلٹ ان طریقہ کار بھی ہے جو T قسم کا ایک نیا وسیلہ بناتا ہے۔
  • اس کے ساتھ ساتھ پیک کھولیں۔, پیک صرف ماڈیول کے اندر بلایا جا سکتا ہے جہاں وسیلہ بیان کیا گیا ہو۔ T

حاصل يہ ہوا

ہم نے Move زبان کی اہم خصوصیات کا جائزہ لیا، اس کا موازنہ Ethereum سے کیا، اور اسکرپٹ کے بنیادی نحو سے بھی واقف ہو گئے۔ آخر میں، میں چیک آؤٹ کرنے کی انتہائی سفارش کرتا ہوں۔ اصل سفید کاغذ. اس میں پروگرامنگ لینگویج ڈیزائن کے اصولوں کے ساتھ ساتھ بہت سے مفید لنکس کے حوالے سے بہت سی تفصیل شامل ہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں