Dive into Move - Facebook جي Libra blockchain پروگرامنگ ٻولي

ا ،يون ، اسان تفصيل سان غور ڪنداسون بنيادي characteristicsالھيون منتقل ڪرڻ جي andوليءَ ۾ ۽ ڪھڙا آھن ان جا اھم فرق anotherئي سان ، ا already ۾ ئي مقبول smartولي سمارٽ sيڪن لاءِ - سالميت (Ethereum پليٽ فارم تي). مواد موجود آھي آن لائين 26 صفحن تي موجود وائيٽ پيپر جي مطالعي تي.

تعارف

موو هڪ قابل عمل بائيٽ ڪوڊ ٻولي آهي جيڪا استعمال ڪندڙ ٽرانزيڪشن ۽ سمارٽ معاهدن تي عمل ڪرڻ لاءِ استعمال ٿيندي آهي. مهرباني ڪري ٻه نقطا نوٽ ڪريو:

  1. حالانڪه موو هڪ بائٽ ڪوڊ languageولي آهي جيڪا س directlyو سنئون هلائي سگهجي ٿي موو ورچوئل مشين تي ، ساليڊٽي (Ethereum جي سمارٽ ڪانٽريڪٽ languageولي) هڪ اعليٰ سطح جي thatولي آهي جيڪا پهرين مرتب ڪئي وئي آهي بائٽ ڪوڊ تي اي وي ايم تي عمل ڪرڻ کان ا ((Ethereum ورچوئل مشين).
  2. حرڪت استعمال ٿي سگھي ٿي نه ر smartو سمارٽ معاهدن کي لا implementو ڪرڻ لاءِ ، پر ڪسٽم ٽرانزيڪشنز لاءِ به (و thisيڪ ھن تي بعد ۾) ، جڏھن ته سولائيڊٽي آھي ر smartو سمارٽ معاهدي جي languageولي.


ترجمو INDEX پروٽوڪول پروجيڪٽ ٽيم پاران ڪيو ويو. اسان اڳ ۾ ئي ترجمو ڪيو آهي لبرا پروجيڪٽ کي بيان ڪرڻ لاءِ وڏو مواد، ھاڻي اھو وقت آھي موو ٻولي کي ٿورو وڌيڪ تفصيل سان ڏسڻ جو. ترجمو Habrauser سان گڏجي ڪيو ويو کولسيو

Move جي هڪ اهم خصوصيت اها آهي ته حسب ضرورت وسيلن جي قسمن کي بيان ڪرڻ جي صلاحيت لڪير منطق جي بنياد تي سيمينٽڪس سان: هڪ وسيلو ڪڏهن به نقل نه ٿو ڪري سگهجي يا ظاهري طور تي ڊاهي، صرف منتقل ڪيو ويو. فنڪشنل طور، هي زنگ ٻوليء جي صلاحيتن سان ملندڙ جلندڙ آهي. مورچا ۾ قيمتون صرف هڪ وقت ۾ هڪ نالي تي مقرر ڪري سگھجن ٿيون. ھڪ قدر کي مختلف نالي تي تفويض ڪرڻ ان کي پوئين نالي جي تحت غير دستياب بڻائي ٿو.

Dive into Move - Facebook جي Libra blockchain پروگرامنگ ٻولي

مثال طور ، ھي code ڏنل ڪوڊ سنيپٽ ا throwليندو ھڪڙي غلطي: منتقل ٿيل قيمت جو استعمال 'x'. اھو انھيءَ ڪري آھي جو اتي زنگ ۾ ڪو گند ڪچرو گڏ ناھي. جڏھن متغير دائري کان goاھر ھوندا آھن ، ياداشت جنھن جو اھي حوالو ڏيندا آھن اھو پڻ آزاد ڪيو ويندو آھي. سادي لفظن ۾ ، اتي ر onlyو ھڪڙو ٿي سگھي ٿو ”مالڪ“ ڊيٽا جو. ھن مثال ۾ x اصل مالڪ آھي ۽ پوءِ y نئون مالڪ بڻجي ٿو. هن رويي بابت وڌيڪ پڙهو هتي.

کليل نظام ۾ ڊجيٽل اثاثن جي نمائندگي

اتي آھن جسماني اثاثن جون propertiesه خاصيتون جيڪي مشڪل آھن ڊجيٽل طور تي نمائندگي ڪرڻ لاءِ:

  • وضاحت (قلت ، اصل ۾ قلت). سسٽم ۾ اثاثن جو تعداد (اخراج) ڪنٽرول ٿيڻ گھرجي. موجوده اثاثن جي نقل کي لازمي طور تي منع ڪيو وي ، ۽ نوان پيدا ڪرڻ هڪ امتيازي آپريشن آهي.
  • رسائي جو ڪنٽرول... سسٽم حصو و mustندڙ لازمي طور تي اثاثن جي حفاظت ڪري سگھندا آھن رسائي ڪنٽرول پاليسين استعمال ڪندي.

ھي characteristicsه خاصيتون ، جيڪي فطري اثاثن لاءِ قدرتي آھن ، لازمي طور تي ڊجيٽل شين لاءِ لا implementedو ڪيون و ifن جيڪڏھن اسان انھن کي اثاثا سمجھڻ گھرون ٿا. مثال طور ، هڪ نادر metalاتو وٽ قدرتي قلت آهي ، ۽ صرف توهان کي ان تائين رسائي آهي (ان کي توهان جي هٿن ۾ رکندي ، مثال طور) ۽ توهان وڪرو ڪري سگهو ٿا يا خرچ ڪري سگهو ٿا.

بيان ڪرڻ لاءِ ته اسان ڪيئن پھتا آھيون انھن propertiesن خاصيتن تي ، اچو ته شروع ڪريون ھي followingين جملن سان.

تجويز # 1: آسان ترين اصول بغير گھٽتائي ۽ رسائي ڪنٽرول

Dive into Move - Facebook جي Libra blockchain پروگرامنگ ٻولي

  • جي [ڪ]: = ن ھڪڙي اپ ڊيٽ کي ظاھر ڪري ٿو ھڪڙي ڪنجي تائين پھچڻ واري نمبر ڏانھن К blockchain جي عالمي حالت ۾ ، نئين معنيٰ سان n.
  • ٽرانزيڪشن - ايلس ، 100⟩ مطلب سيٽ ڪرڻ ايلس جو اڪائونٽ بيلنس 100.

مٿي ڏنل حل ۾ ڪيترائي اھم مسئلا آھن:

  • ايلس حاصل ڪري سگھي ٿو لامحدود تعداد ۾ سڪا موڪلڻ سان ٽرانزيڪشن - ايلس ، 100⟩.
  • سڪا ايلس موڪلي ٿي باب کي ، بي فائدا آھن ، جيئن باب پاڻ کي موڪلي سگھي ٿو لامحدود تعداد ۾ سڪا سا usingي ٽيڪنڪ استعمال ڪندي.

تجويز # 2: خساري کي مدنظر رکندي

Dive into Move - Facebook جي Libra blockchain پروگرامنگ ٻولي

ھاڻي اسان صورتحال جي نگراني ڪري رھيا آھيون ته جيئن سکن جو تعداد Ka گهٽ ۾ گهٽ برابر هئي n منتقلي ٽرانزيڪشن کان ا. بهرحال ، جڏهن ته اهو حل ڪري ٿو قلت جو مسئلو ، اتي ڪابه isاڻ ناهي ته ڪير موڪلي سگهي ٿو ايلس جا سڪا (هينئر تائين ، هر ڪو اهو ڪري سگهي ٿو ، بنيادي شيءِ ناهي ته رقم کي محدود ڪرڻ جي اصول جي violaڪڙي ڪري).

تجويز # 3: گڏيل کوٽ ۽ رسائي ڪنٽرول

Dive into Move - Facebook جي Libra blockchain پروگرامنگ ٻولي

اسان ھن مسئلي کي ڊجيٽل دستخطي ميکانيزم سان حل ڪريون ٿا verify_sig بيلنس چيڪ ڪرڻ کان پھريائين ، جنھن جو مطلب آھي ته ايلس پنھنجي نجي چا keyي استعمال ڪري ٿي ٽرانزيڪشن تي دستخط ڪرڻ لاءِ ۽ تصديق ڪري ٿي ته ھوءَ آھي ان جي سکن جي مالڪ.

Blockchain پروگرامنگ وليون

موجوده blockchain languagesوليون ھي faceين مسئلن کي منھن ڏين ٿيون (انھن س ofني کي حل ڪيو ويو منتقل ۾ (نوٽ: بدقسمتيءَ سان ، مضمون جو مصنف ر appeو اپيل ٿو ڪري Ethereum کي پنھنجي مقابلي ۾ ، تنھنڪري اھو انھن کي و worthڻ جي قابل آھي رو ان حوالي سان. مثال طور ، ھي theين مان گھڻا پڻ EOS ۾ حل ٿيل آھن.))

اثاثن جي اڻ سي نمائندگي. هڪ اثاثو هڪ عدد استعمال ڪندي انڪوڊ ڪيو ويو آهي، پر هڪ عدد هڪ اثاثو جي برابر ناهي. حقيقت ۾، Bitcoin/Ether/<Any Coin> جي نمائندگي ڪندڙ ڪو به قسم يا قدر ناهي! اهو لکڻ جي پروگرامن کي ٺاهيندو آهي جيڪي اثاثن کي استعمال ڪن ٿا ڏکيو ۽ غلطي جو شڪار. نمونن جهڙوڪ اثاثن کي پروسيس کان/ مان منتقل ڪرڻ يا اڏاوتن ۾ اثاثن کي محفوظ ڪرڻ لاءِ ٻولي جي خاص مدد جي ضرورت آهي.

خساري و expandائڻ جي قابل ناهي... representsولي نمائندگي ڪري ٿي ر oneو ھڪڙي گھٽ اثاثي جي. ان کان علاوه ، قلت جي خلاف علاج سختي سان س directlyو سنئون theوليءَ جي ئي معنائن ۾ آھن. ڊولپر ، جيڪڏھن اھو چاھي ٿو ته ھڪڙو ڪسٽم اثاثو ،اھي ، لازمي طور تي پاڻ کي وسيلن جي س aspectsني پهلوئن تي ڪنٽرول ڪري. اهي آهن بلڪل مسئلا Ethereum سمارٽ يڪن جا.

استعمال ڪندڙ پنھنجي اثاثن کي جاري ڪن ٿا ، ERC-20 ٽوڪن ، انٽيگرز استعمال ڪندي bothئي قدر ۽ ڪل سپلائي جو تعين ڪرڻ لاءِ. جڏهن به نوان ٽوڪن createdاهيا ون ٿا ، سمارٽ ڪانٽريڪٽ ڪوڊ لازمي طور تي تصديق ڪري ٿو اخراج جي ضابطن جي تعميل جي. ان کان علاوه ، اثاثن جي اڻ سي طرح پيش ڪرڻ ، ڪن حالتن ۾ ، سنگين غلطين ڏانھن - نقل ، doubleيڻو خرچ يا اثاثن جو مڪمل نقصان.

لچڪدار رسائي ڪنٽرول جي کوٽ... ر accessو استعمال جي ڪنٽرول واري پاليسي ا use استعمال ۾ آھي ھڪڙي دستخطي اسڪيم غير متناسب ڪرپٽ گرافي استعمال ڪندي. قلت جي حفاظت وانگر ، رسائي ڪنٽرول جون پاليسيون deeplyوليءَ جي اصطلاحن ۾ تمام گھڻيون جڙيل آهن. پر extendوليءَ کي ڪيئن و extendايو و programي ته جيئن پروگرامرن کي اجازت ڏني و theirي ته اھي پنھنجي پنھنجي رسائي ڪنٽرول پاليسين کي بيان ڪن اڪثر اڪثر ھڪڙو مشڪل ڪم آھي.

اهو Ethereum تي پڻ صحيح آهي، جتي سمارٽ معاهدن وٽ رسائي ڪنٽرول لاءِ اصلي ڪرپٽوگرافي جي مدد نه هوندي آهي. ڊولپرز کي دستي طور تي رسائي ڪنٽرول مقرر ڪرڻ گهرجي، مثال طور، صرف مالڪ تبديل ڪندڙ استعمال ڪندي.

جيتوڻيڪ مان Ethereum جو هڪ وڏو پرستار آهيان، مان سمجهان ٿو ته اثاثن جي ملڪيتن کي مقامي طور تي سيڪيورٽي مقصدن لاء ٻولي جي حمايت ڪئي وڃي. خاص طور تي، Ether کي هڪ سمارٽ معاهدي ۾ منتقل ڪرڻ ۾ متحرڪ ترسيل شامل آهي، جنهن کي متعارف ڪرايو ويو آهي بگ جي نئين طبقي کي ٻيهر داخل ٿيڻ واري خطرن جي نالي سان سڃاتو وڃي ٿو. Dynamic dispatch جو مطلب آهي ته ڪوڊ جي execution logic جو تعين ڪيو ويندو رن ٽائم (متحرڪ) بجاءِ compile time (static) تي.

اهڙيءَ طرح، سوليڊٽي ۾، جڏهن ڪانٽريڪٽ A ڪانٽريڪٽ B ۾ هڪ فنڪشن کي سڏي ٿو، ڪانٽريڪٽ B شايد ڪوڊ هلائي سگهي ٿو جيڪو ڪانٽريڪٽ A جي ڊولپر طرفان نه هو، جنهن جو نتيجو ٿي سگهي ٿو ٻيهر داخل ٿيڻ جا خطرا (معاهدو A اتفاقي طور تي ڪم ڪري ٿو B جي طور تي پئسا ڪڍڻ لاءِ ان کان اڳ جو اڪائونٽ بيلنس اصل ۾ ڪٽيا وڃن).

ٻولي ڊيزائن جي بنيادي اصولن کي منتقل ڪريو

فرسٽ آرڊر وسيلا

هڪ اعليٰ سطح تي ، موڊ /وليءَ ۾ ماڊلز / وسيلن / طريقيڪار جي وچ ۾ رابطو بلڪل سا similarيو آھي طبقن / شين ۽ OOP inولين جي طريقن جي وچ ۾ تعلق سان.
منتقل ماڊلز سا similarيا آھن سمارٽ sيڪن ۾ otherين بلاڪچينز ۾. ماڊل اعلان ڪري ٿو وسيلن جا قسم ۽ طريقا جيڪي بيان ڪن ٿا creatingاھڻ ، تباھ ڪرڻ ، ۽ اپڊيٽ ڪرڻ جي ضابطن جو اعلان ڪيل وسيلا. پر ھي س just ر justو ڪنوينشن آھن (“جهڙا") منتقل ۾. اسان بيان ڪنداسين ھن نقطي کي ٿوري دير کان پوءِ.

سکيائي

منتقل ڪريو اسڪرپٽنگ ذريعي لبرا ۾ لچڪ وڌائي ٿو. Libra ۾ هر ٽرانزيڪشن ۾ هڪ اسڪرپٽ شامل آهي، جيڪو بنيادي طور تي ٽرانزيڪشن جو بنيادي طريقو آهي. اسڪرپٽ يا ته هڪ مخصوص عمل انجام ڏئي سگهي ٿي، مثال طور، وصول ڪندڙن جي مخصوص فهرست کي ادائگي، يا ٻين وسيلن کي ٻيهر استعمال ڪرڻ - مثال طور، هڪ طريقيڪار کي ڪال ڪندي جنهن ۾ عام منطق بيان ڪيل آهي. اهو ئي سبب آهي ته منتقلي ٽرانزيڪشن اسڪرپٽ پيش ڪن ٿا وڌيڪ لچڪدار. هڪ اسڪرپٽ ٻنهي کي استعمال ڪري سگهي ٿو هڪ دفعي ۽ ورجائڻ واري رويي کي، جڏهن ته Ethereum صرف ورجائي سگهڻ واري اسڪرپٽ تي عمل ڪري سگهي ٿو (هڪ طريقي کي سمارٽ معاهدي جي طريقي تي سڏين ٿا). ان جو سبب ان کي "ٻيهر استعمال لائق" سڏيو ويندو آهي ڇاڪاڻ ته سمارٽ معاهدي جا ڪم ڪيترائي ڀيرا ڪيا ويندا. (نوٽ: هتي جو نقطو تمام سادو آهي. هڪ طرف، pseudo-bytecode جي صورت ۾ ٽرانزيڪشن اسڪرپٽ پڻ Bitcoin ۾ موجود آهن. ٻئي طرف، جيئن مان سمجهان ٿو، منتقلي هن ٻولي کي وڌائي ٿي، حقيقت ۾، هڪ مڪمل سمارٽ معاهدي واري ٻولي جي سطح تائين.).

حفاظت

Move executable format bytecode آهي، جيڪو هڪ طرف، اسيمبليءَ جي ٻولي کان اعليٰ سطحي ٻولي آهي، پر سورس ڪوڊ کان هيٺين سطح تي. بائيٽ ڪوڊ کي رن-ٽائم (آن-چين) ۾ وسيلن، قسمن ۽ ميموري جي حفاظت لاءِ بائيٽ ڪوڊ تصديق ڪندڙ استعمال ڪندي چيڪ ڪيو ويندو آهي، ۽ پوءِ ان کي مترجم طرفان عمل ۾ آندو ويندو آهي. اهو طريقو منتقل ڪرڻ جي اجازت ڏئي ٿو ماخذ ڪوڊ جي سيڪيورٽي فراهم ڪرڻ جي، پر تاليف جي عمل جي بغير ۽ سسٽم ۾ هڪ مرتب شامل ڪرڻ جي ضرورت آهي. بائيٽ ڪوڊ ٻولي کي منتقل ڪرڻ هڪ واقعي سٺو حل آهي. ان کي ماخذ کان مرتب ڪرڻ جي ضرورت ناهي، جيئن سوليٽيٽي جي صورت ۾ آهي، ۽ ممڪن ناڪامين جي باري ۾ پريشان ٿيڻ جي ڪا ضرورت ناهي يا مرتب ڪندڙ انفراسٽرڪچر تي حملن.

تصديق ڪندڙ

اسان جو مقصد ممڪن طور تي آسان طور تي چيڪ ڪرڻ جو مقصد آهي، ڇاڪاڻ ته اهو سڀ ڪجهه آن لائين ڪيو ويو آهي (نوٽ: آن لائن ، ھر عمل جي عملدرآمد جي دوران ، تنھنڪري ڪنھن به دير جي ڪري س networkو نيٽ ورڪ سست ٿي وي ٿو)، جڏهن ته، شروعاتي طور تي ٻولي ڊيزائن آف-چين جامد تصديق جا اوزار استعمال ڪرڻ لاءِ تيار آهي. جيتوڻيڪ اهو وڌيڪ ترجيح آهي، في الحال تصديق جي اوزار جي ترقي (هڪ الڳ ٽول کٽ جي طور تي) مستقبل لاء ملتوي ڪيو ويو آهي، ۽ هاڻي صرف رن-ٽائم (آن-چين) ۾ متحرڪ تصديق جي حمايت ڪئي وئي آهي.

مودالي

منتقل ماڊلز ڊيٽا تجزيو مهيا ڪن ٿا ۽ وسيلن تي نازڪ عملن کي مقامي ڪن ٿا. ماڊيول پاران مهيا ڪيل ان ڪيپسيوليشن ، موو ٽائيپ سسٽم پاران مهيا ڪيل تحفظ سان گڏ ، يقيني بڻائي ٿي ته ماڊل جي قسمن تي مقرر ڪيل پراڊڪٽس ماڊيول کان codeاهر ڪوڊ جي tedڪڙي نٿا ڪري سگھن. ھي ھڪڙي چ wellي طرح thoughtاھيل تجريدي ڊيزائن آھي ، مطلب ته ڊيٽا ھڪڙي معاهدي ۾ ر onlyو تبديل ٿي سگھي ٿي معاهدي جي دائري ۾ ، پر notاھران نه.

Dive into Move - Facebook جي Libra blockchain پروگرامنگ ٻولي

نظرثاني منتقل ڪريو

ٽرانزيڪشن اسڪرپٽ مثال ظاھر ڪري ٿو ته بدسلوڪي يا لاپرواھي وارو عمل ڪنھن پروگرامر جي ماڊول کان cannotاھر ماڊلز جي وسيلن جي حفاظت سان سمجھوتو نٿو ڪري سگھي. ا ،يون ، اسان مثالن تي نظر وجهنداسين ته ماڊلز ، وسيلا ۽ طريقا ڪيئن استعمال ٿين ٿا پروگرام ڪرڻ لاءِ Libra blockchain کي.

پير صاحب کان پير جي ادائيگي

Dive into Move - Facebook جي Libra blockchain پروگرامنگ ٻولي

رقم ۾ بيان ڪيل سکن جو تعداد موڪليندڙ جي بيلنس مان وصول ڪندڙ ڏانهن منتقل ڪيو ويندو.
هتي ڪجھ نيون شيون آهن (ڳاڙهي ۾ نمايان ٿيل):

  • 0x0: اڪائونٽ جو پتو جتي ماڊيول محفوظ ٿيل آھي
  • ڪرنسي: ماڊل نالو
  • پئسو: وسيلن جو قسم
  • پئسن جي قيمت واپس ڪئي وئي طريقيڪار ذريعي آھي ھڪڙي وسيلن جي قسم جي قسم 0x0.Currency.Coin
  • منتقل (): قدر usedيھر استعمال نٿو ڪري سگھجي
  • ڪاپي (): قدر بعد ۾ استعمال ڪري سگھجي ٿو

ڪوڊ پارس ڪريو: پھرين قدم ۾ ، موڪليندڙ سڏي ٿو ھڪڙي طريقيڪار نالي ڪ_ڻ_ مان_ موڪليندڙ ذخيرو ٿيل ماڊيول مان 0x0. ڪرنسي. ٻئي قدم ۾، موڪليندڙ پئسن کي وصول ڪندڙ کي منتقل ڪري ٿو پئسن جي وسيلن جي قيمت کي ماڊل جي جمع ڪرڻ جي طريقيڪار ۾ منتقل ڪندي 0x0. ڪرنسي.

هتي ڪوڊ ۾ غلطين جا ٽي مثال آهن جيڪي چيڪن ذريعي رد ڪيا ويندا.
ڪال کي تبديل ڪندي ڊپليڪٽ فنڊ حرڪت (سڪو) تي ڪاپي (سڪو). وسيلن کي صرف منتقل ڪري سگهجي ٿو. هڪ وسيلن جي مقدار کي نقل ڪرڻ جي ڪوشش ڪري رهيو آهي (مثال طور، ڪال ڪندي ڪاپي (سڪو) مٿي ڏنل مثال ۾) نتيجو ٿيندو ھڪڙي غلطي جي نتيجي ۾ بائيٽ ڪوڊ چيڪ ڪرڻ دوران.

وضاحت ڪندي فنڊن جو useيهر استعمال حرڪت (سڪو) ٻه دفعا . لائن شامل ڪرڻ 0x0.Currency.deposit (ڪاپي (some_other_payee)، منتقل ڪريو (سڪو) مثال طور، مٿي موڪليندڙ کي اجازت ڏيندو ته سکن کي ٻه ڀيرا ”خرچ“ ڪري - پهريون ڀيرو ادا ڪندڙ سان، ۽ ٻيو ڪجھ_ٻيو_ ادا ڪندڙ. اهو هڪ ناپسنديده رويي آهي جيڪو جسماني اثاثن سان ممڪن ناهي. خوش قسمت، منتقل هن پروگرام کي رد ڪندو.

انڪار جي ڪري پئسن جو نقصان حرڪت (سڪو). جيڪڏهن توهان وسيلن کي منتقل نه ڪيو (مثال طور، لائن کي حذف ڪندي حرڪت (سڪو))، هڪ bytecode تصديق جي غلطي اڇلائي ويندي. هي موو پروگرامرز کي فنڊن جي حادثاتي يا بدسلوڪي نقصان کان بچائي ٿو.

ڪرنسي ماڊل

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 پروگرامنگ ٻولي
نالي ماڊل ڪرنسي ۽ هڪ وسيلن جي قسم جو نالو پئسو

نازڪ لمحات:

  • پئسو ھڪڙي قسم جي ھڪڙي فيلڊ سان ھڪڙي جوڙجڪ آھي اوڪس اينيمڪس (64-bit غير دستخط ٿيل عدد)
  • صرف ماڊل جي طريقيڪار ڪرنسي قسم جي قدر ٺاهي يا تباهه ڪري سگهي ٿي پئسو.
  • ٻيا ماڊل ۽ اسڪرپٽ صرف ماڊل طرفان مهيا ڪيل عوامي طريقيڪار ذريعي قيمت فيلڊ کي لکي يا حوالي ڪري سگھن ٿا.

جمع جو وڪرو

Dive into Move - Facebook جي Libra blockchain پروگرامنگ ٻولي

اهو عمل هڪ وسيلو قبول ڪري ٿو پئسو ان پٽ جي طور تي ۽ ان کي وسيلن سان گڏ ڪري ٿو پئسووصول ڪندڙ جي اڪائونٽ ۾ ذخيرو ٿيل:

  1. ان پٽ وسيلن کي تباهه ڪرڻ ۽ ان جي قيمت کي رڪارڊ ڪرڻ.
  2. وصول ڪندڙ جي اڪائونٽ ۾ ذخيرو ٿيل هڪ منفرد Coin وسيلن جي لنڪ حاصل ڪرڻ.
  3. سڪن جي تعداد جي قدر کي تبديل ڪندي پيرا ميٽر ۾ پاس ڪيل قدر طرفان جڏهن پروسيس کي ڪال ڪيو وڃي.

نازڪ لمحات:

  • کوليو، قرض گلوبل - تعمير ٿيل طريقا
  • اُپاءُ T قسم جي وسيلن کي ختم ڪرڻ جو اهو واحد طريقو آهي. اهو طريقو هڪ وسيلو کي ان پٽ طور وٺي ٿو، ان کي تباهه ڪري ٿو، ۽ وسيلن جي فيلڊ سان لاڳاپيل قدر واپس ڪري ٿو.
  • قرض گلوبل ان پٽ جي طور تي هڪ ايڊريس وٺي ٿو ۽ انهي ايڊريس طرفان شايع ٿيل T جي هڪ منفرد مثال جو حوالو ڏئي ٿو (ملڪيت)
  • & mut Coin هي وسيلن جي هڪ لنڪ آهي پئسو

ڪڍڻ_from_sender جو نفاذ

Dive into Move - Facebook جي Libra blockchain پروگرامنگ ٻولي

هن عمل:

  1. هڪ منفرد وسيلن جي لنڪ حاصل ڪري ٿي پئسو، موڪليندڙ جي اڪائونٽ سان ڳنڍيل
  2. وسيلن جي قيمت گھٽائي ٿي پئسو ڏنل رقم لاءِ لنڪ ذريعي
  3. نئون وسيلو ٺاهي ۽ واپس ڪري ٿو پئسو اپڊيٽ بيلنس سان.

نازڪ لمحات:

  • جمع ڪنهن به سبب ٿي سگهي ٿو، پر ڪ_ڻ_ مان_ موڪليندڙ صرف ڪالنگ اڪائونٽ جي سڪن تائين رسائي آهي
  • GetTxnSenderAddress جهڙو msg.sender استحڪام ۾
  • رد ڪرڻ بغير جهڙو گهربل استحڪام ۾. جيڪڏهن هي چيڪ ناڪام ٿئي ٿو، ٽرانزيڪشن کي روڪيو ويندو آهي ۽ سڀ تبديليون واپس ڦري وينديون آهن.
  • پيٽ اهو پڻ هڪ تعمير ٿيل طريقو آهي جيڪو ٽائپ جو هڪ نئون ذريعو ٺاهي ٿو.
  • اهڙي طرح اُپاءُ, پيٽ صرف ماڊل جي اندر سڏيو وڃي ٿو جتي وسيلن کي بيان ڪيو ويو آهي T

ٿڪل

اسان Move ٻولي جي مکيه خاصيتن کي جانچيو، ان جي مقابلي ۾ Ethereum سان، ۽ پڻ اسڪرپٽ جي بنيادي نحو سان واقف ٿي ويا. آخرڪار، مان تمام گهڻو سفارش ڪريان ٿو چڪاس ڪريو اصل اڇو پيپر. ان ۾ پروگرامنگ ٻولي جي ڊيزائن جي اصولن جي حوالي سان تمام گھڻي تفصيل سان گڏو گڏ ڪيترائي مفيد لنڪس شامل آھن.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو