RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

سلام هر!

وڌيڪ تازو، Waves Labs اعلان ڪيو ڊولپرز لاءِ مقابلو RIDE سمارٽ ڪانٽريڪٽ لينگويج ايڪسٽينشن کي جاري ڪرڻ لاءِ وقف ڪيو ويو غير مرڪزي ايپليڪيشنن لاءِ Ride4Dapps ٽيسٽ نيٽ ورڪ ۾!

اسان DAO ڪيس چونڊيو ڇاڪاڻ ته وينچري سماجي ڪمن سان گڏ dApps کي ترقي ڪرڻ جو منصوبو: ووٽنگ، فنڊ گڏ ڪرڻ، اعتماد جو انتظام، وغيره.
اسان هڪ سادي مثال سان شروع ڪيو سوال ۽ جواب سيشن ۽ اندر سواري IDE - مثال سان گڏيل پرس.

اچو ته هن مثال تي نظر رکون، فرضن جي جانچ ڪريو ۽ ڪجهه بيچيني کي ڏسو:

اچو ته اسان وٽ Alice - dApp Owner
بوب ۽ ڪوپر ايلس پارٽنر آهن، ايلس-BC DAO جا گڏيل باني
نيلي هڪ ڪاروبار مالڪ آهي جنهن کي فنانسنگ جي ضرورت آهي
بئنڪ - ھڪڙي بئنڪ جيڪا ٽوڪن ورهائي ٿي

اسٽيج 1. بيلنس جي شروعات

ويز ٽيسٽ نيٽ ورڪ تي ٽوڪن حاصل ڪرڻ لاءِ، توھان کي رابطو ڪرڻو پوندو غلط ۽ پتو ڏيکاريو جنهن تي ٽوڪن موڪلڻ لاء.
توهان IDE ۾ پتو ڳولي سگهو ٿا توهان جي اڪائونٽ جي تفصيل کي کولڻ سان.
اسان بينڪ 10 WAVES کي اجاگر ڪيو. پوء اسان چيڪ ڪريون ٿا ته اهي بلاڪ ۽ ٽرانزيڪشن برائوزر ذريعي پهچي ويا آهن: نظرثاني ڪندڙ

ھاڻي اچو ته بئنڪ مان ٽوڪن ورهايون باقي شرڪت ڪندڙن ۾. (نوٽ: ويز نيٽ ورڪ تي سڀئي ٽرانزيڪشن مفت نه آهن، تنهنڪري سڀني شرڪت ڪندڙن لاء ٽرانزيڪشن ڪرڻ لاء گهٽ ۾ گهٽ مثبت توازن گهربل آهي).

1 WAVES = 100000000 يونٽ (wavelets)، ڇاڪاڻ ته رقم صرف انٽيجر ٿي سگهي ٿي
0.01 WAVES (ٽرانزيڪشن فيس) = 1000000

بئنڪ -> [3 WAVES] -> ايلس، ٽرانسفر ٽرانزيڪشن ذريعي (قسم: 4).

اسان چيڪ ڪريون ٿا ته env.SEED جنهن مان ٽرانزيڪشن سائن ڪيا ويا آهن اسان جي بئنڪ سان ملن ٿا:
RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

جيڪڏهن توهان وٽ هڪ ملندڙ ٻج جو جملو نه آهي، بس ان کي مٽايو اڪائونٽس ٽيب ۾ ۽ ٻيهر چيڪ ڪريو.
ان کان پوء، اسان 3 WAVES ايلس جي منتقلي لاء هڪ ٽرانزيڪشن ٺاهي، اعلان ۽ سائن ان ڪندا آهيون.
توھان پڻ ڳولي سگھوٿا ايلس جي ڊيٽا env.accounts variable ذريعي. نمبرنگ 0 کان شروع ٿئي ٿي، تنهنڪري ايلس env.accounts آهي[1].
RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))

نتيجو پڻ برائوزر ۾ ڏسي سگھجي ٿو، ان جي لنڪ اسان کي فوري طور تي عمل ڪرڻ کان پوء واپس ڪئي ويندي ٽرانزيڪشن.

اسان پڪ ڪريون ٿا ته ايلس جو بيلنس 3 WAVES ذريعي ڀريو ويو آهي، ۽ بينڪ بيلنس 10 - 3 - 0.01 = 0.699 تي رهي ٿو.
RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

اسان Boob ۽ Cooper 3 WAVES هر هڪ کي موڪليندا آهيون، ۽ Neli، Xena ۽ Mark 0.2 WAVES هر هڪ کي ساڳيءَ طرح.
(نوٽ: اسان ھڪڙي ھڪڙي ڪردار جي غلطي ڪئي ۽ نيلي 0.02 WAVES موڪليو. محتاط رھو!)

broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))

سڀني شرڪت ڪندڙن جي بيلنس کي ڀرڻ کان پوء، اسان ڏسون ٿا:
RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

اسٽيج 2. هڪ dApp اڪائونٽ ٺاهيو

اسان اتفاق ڪيو ته ايلس ڊي سينٽرلائيز ايپليڪيشن جي خالق ۽ مالڪ هوندي.
اڪائونٽس ڏانھن وڃو، ان کي سيٽ ڪريو SEED ۽ چيڪ ڪريو env.SEED ايلس سان ملن ٿا.

اچو ته ايلس جي اڪائونٽ تي آسان ترين ممڪن اسڪرپٽ (معاهدو) انسٽال ڪرڻ جي ڪوشش ڪريون.
Waves ۾ سمارٽ رابطا اڳڪٿيون آهن جيڪي منع ڪن ٿيون يا ڪنهن به قسم جي ٻاهرئين ٽرانزيڪشن کي ڪجهه حالتن هيٺ ٿيڻ جي اجازت ڏين ٿيون. هن حالت ۾، هي حالت هميشه آهي. معاهدو ڪوڊ صحيح آهي. ڪال ڊيپلو ().

RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

في سيٽ اسڪرپٽ ٽرانزيڪشن 1400000/100000000 = 0.014 WAVES. ايلس وٽ 2.986 واهون آهن هن جي بيلنس تي.

اچو ته هاڻي ايلس اڪائونٽ تي وڌيڪ پيچيده سمارٽ معاهدي منطق کي نصب ڪرڻ جي ڪوشش ڪريو، جنهن ۾ بيان ڪيل آهي مثال

Ride4Dapps ھاڻي شامل آھي 2 نون تشريح جا قسم:

  1. @Callable(i) - هڪ پيٽرولر جي طور تي وٺندو آهي i، ڊيٽا بابت جنهن اڪائونٽ کي سڏيو / دستخط ڪيو ٽرانزيڪشن. اھو ھن فنڪشن جو نتيجو آھي جيڪو dApp اڪائونٽ جي حالت ۾ تبديلي کي طئي ڪري ٿو. ٻيا اڪائونٽ ٽرانزيڪشن ٺاهي سگهن ٿا ۽ هن تشريح سان ڪم ڪري سگهن ٿا ۽ dApp اڪائونٽ جي حالت کي تبديل ڪري سگهن ٿا.
  2. @Verifier(tx) - ٽرانزيڪشن جي تصديق ڪندڙ ٽرانزيڪشن tx پيٽرولر سان. RIDE کان اڳڪٿي منطق سان ملندڙ جلندڙ آهي. اهو هن اظهار ۾ آهي ته توهان dApp اڪائونٽ تي سمارٽ معاهدي جي منطق ۾ وڌيڪ تبديلين جي اجازت يا منع ڪري سگهو ٿا.

اچو ته ڪريون ڊي اي پي سڀني شرڪت ڪندڙن لاءِ هڪ عام پرس جي طور تي اڪائونٽ.
RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

چيڪ ڪرڻ لاءِ ته ڪهڙو معاهدو في الحال توهان جي اڪائونٽ تي فعال آهي، توهان بلاڪ ايڪسپلورر ۾ سمارٽ ڪانٽريڪٽ جو بنيادي 64 ڪوڊ ڪاپي ڪري سگهو ٿا ۽ ان کي ڊيڪمپائلر استعمال ڪندي سڃاڻي سگهو ٿا (مثال طور)
RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)
RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)
RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

اسان پڪ ڪريون ٿا ته سمارٽ معاهدي جو منطق ان سان ملندو آهي جيڪو اسان توقع ڪريون ٿا.
ايلس وٽ 2.972 واهون آهن هن جي بيلنس تي.

هي ڊي ايپ انهي ڳالهه تي نظر رکي ٿي ته هر شرڪت ڪندڙ هڪ ميکانيزم ذريعي عام فنڊ ۾ ڪيترو حصو ڏئي ٿو ڊيٽا ٽرانزيڪشن — DataEntry (currentKey, newAmount)، جتي ڪرنٽ ڪيئي اهو اڪائونٽ آهي جيڪو ڊپازٽ فنڪشن کي سڏي ٿو، ۽ نئين رقم آهي ٻيهر ڀريل بيلنس جي قيمت.

بوب ۽ ڪوپر 1 WAVES سان گڏ dApp اڪائونٽ ۾ پنهنجون جمع ڪرايو.
RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

اسان غلطي ڪريون ٿا ۽ ٽرانزيڪشن ذريعي نه وڃو. ان کان پوء، ان حقيقت جي باوجود ته اسان کي يقين هو ته اسان باب جي طرفان هڪ ٽرانزيڪشن ڪري رهيا هئاسين، اسان انڊيڪس ۾ غلطي ڪئي ۽ هڪ بينڪ اڪائونٽ جو اشارو ڏنو جنهن ۾ سمارٽ معاهدو ناهي. اهو هتي هڪ اهم نقطو ياد رکڻ جي قابل آهي - ٽرانزيڪشن شروع ڪرڻ جي ناڪام ڪوششن لاء هڪ فيس آهي هٽائي نٿو سگهجي! ايلس وٽ 2.972 واهون آهن هن جي بيلنس تي. باب کي 3 موج آهن.

باب 1 WAVES dApp اڪائونٽ ڏانهن موڪليو.

broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))

RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

باب وٽ 1.99 وايون باقي آهن. اھو آھي، باب ادا ڪيو 0.01 WAVES ڪميشن

RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

ايلس وٽ هن جي بيلنس تي 2.972 WAVES هئا، هاڻي اهو 3.972 آهي. ايلس اڪائونٽ تي هڪ ٽرانزيڪشن پڻ رجسٽر ڪئي وئي، پر ڊي ايپ اڪائونٽ (ايلس) کان ڪو به ڪميشن چارج نه ڪيو ويو.
ڪوپر کان پوءِ اڪائونٽ به ڀرجي ويو، ايلس جو بيلنس 4.972 WAVES بڻجي ويو.

RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

توھان معلوم ڪري سگھو ٿا ته ڪنھن جي مالڪ آھي عام والٽ ۾ ڪيتريون WAVES بلاڪ ايڪسپلورر ۾ ڊيٽا ٽيب ۾.

ڪوپر جنرل والٽ تي 1 WAVES جي رقم ڇڏڻ بابت پنهنجو ذهن تبديل ڪيو ۽ اڌ لاڳاپو واپس وٺڻ جو فيصلو ڪيو. هن کي ڪرڻ لاء، هن کي واپسي جي فنڪشن کي سڏڻ گهرجي.

RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

بهرحال، اسان ٻيهر غلط هئاسين، ڇاڪاڻ ته واپسي جي فنڪشن مڪمل طور تي مختلف پيٽرولر ۽ هڪ مختلف دستخط آهي. جڏهن توهان RIDE4DAPPS تي سمارٽ معاهدو ٺاهيو ٿا توهان کي هن نقطي تي ڌيان ڏيڻ گهرجي

RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

ڪوپر وٽ هاڻي 2.48 ويز آهن ان جي بيلنس شيٽ تي. ان جي مطابق، 3 وايون - 1 - 0.01، ۽ پوء + 0.5 - 0.01. ان مطابق، هر ڪال جمع ڪرڻ ۽ ڪڍڻ جي قيمت 0.01 WAVES. نتيجي طور، dApps مالڪن جي جدول ۾ داخلائون ھيٺ ڏنل تبديل ٿي ويون.

RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

باب پڻ فيصلو ڪيو ته ڪجهه پئسا واپس وٺڻ جو گڏيل پرس مان، پر هڪ غلطي ڪئي ۽ 1.5 WAVES ڪڍڻ جي ڪوشش ڪئي.

RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

بهرحال، سمارٽ معاهدو هن صورتحال لاء هڪ چيڪ ڪيو هو.

Xena هڪ اسڪيمر آهي، هن مجموعي اڪائونٽ مان 1 WAVES ڪڍڻ جي ڪوشش ڪئي.

RIDE ۽ RIDE4DAPPS تي Waves سمارٽ ڪانٽريڪٽ لکڻ سکڻ. حصو 1 (ملٽي يوزر والٽ)

اهو پڻ هن لاء ڪم نه ڪيو.

ايندڙ حصي ۾، اسان وڌيڪ پيچيده مسئلن تي نظر ڪنداسين ايلس ڊي ايپ اڪائونٽ جي خرابي سان لاڳاپيل.

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

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