سلام هر!
وڌيڪ تازو، Waves Labs
اسان DAO ڪيس چونڊيو ڇاڪاڻ ته
اسان هڪ سادي مثال سان شروع ڪيو
اچو ته هن مثال تي نظر رکون، فرضن جي جانچ ڪريو ۽ ڪجهه بيچيني کي ڏسو:
اچو ته اسان وٽ Alice - dApp Owner
بوب ۽ ڪوپر ايلس پارٽنر آهن، ايلس-BC DAO جا گڏيل باني
نيلي هڪ ڪاروبار مالڪ آهي جنهن کي فنانسنگ جي ضرورت آهي
بئنڪ - ھڪڙي بئنڪ جيڪا ٽوڪن ورهائي ٿي
اسٽيج 1. بيلنس جي شروعات
ويز ٽيسٽ نيٽ ورڪ تي ٽوڪن حاصل ڪرڻ لاءِ، توھان کي رابطو ڪرڻو پوندو
توهان IDE ۾ پتو ڳولي سگهو ٿا توهان جي اڪائونٽ جي تفصيل کي کولڻ سان.
اسان بينڪ 10 WAVES کي اجاگر ڪيو. پوء اسان چيڪ ڪريون ٿا ته اهي بلاڪ ۽ ٽرانزيڪشن برائوزر ذريعي پهچي ويا آهن:
ھاڻي اچو ته بئنڪ مان ٽوڪن ورهايون باقي شرڪت ڪندڙن ۾. (نوٽ: ويز نيٽ ورڪ تي سڀئي ٽرانزيڪشن مفت نه آهن، تنهنڪري سڀني شرڪت ڪندڙن لاء ٽرانزيڪشن ڪرڻ لاء گهٽ ۾ گهٽ مثبت توازن گهربل آهي).
1 WAVES = 100000000 يونٽ (wavelets)، ڇاڪاڻ ته رقم صرف انٽيجر ٿي سگهي ٿي
0.01 WAVES (ٽرانزيڪشن فيس) = 1000000
بئنڪ -> [3 WAVES] -> ايلس، ٽرانسفر ٽرانزيڪشن ذريعي (قسم: 4).
اسان چيڪ ڪريون ٿا ته env.SEED جنهن مان ٽرانزيڪشن سائن ڪيا ويا آهن اسان جي بئنڪ سان ملن ٿا:

جيڪڏهن توهان وٽ هڪ ملندڙ ٻج جو جملو نه آهي، بس ان کي مٽايو اڪائونٽس ٽيب ۾ ۽ ٻيهر چيڪ ڪريو.
ان کان پوء، اسان 3 WAVES ايلس جي منتقلي لاء هڪ ٽرانزيڪشن ٺاهي، اعلان ۽ سائن ان ڪندا آهيون.
توھان پڻ ڳولي سگھوٿا ايلس جي ڊيٽا env.accounts variable ذريعي. نمبرنگ 0 کان شروع ٿئي ٿي، تنهنڪري ايلس env.accounts آهي[1].
broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))
نتيجو پڻ برائوزر ۾ ڏسي سگھجي ٿو، ان جي لنڪ اسان کي فوري طور تي عمل ڪرڻ کان پوء واپس ڪئي ويندي
اسان پڪ ڪريون ٿا ته ايلس جو بيلنس 3 WAVES ذريعي ڀريو ويو آهي، ۽ بينڪ بيلنس 10 - 3 - 0.01 = 0.699 تي رهي ٿو.
اسان Boob ۽ Cooper 3 WAVES هر هڪ کي موڪليندا آهيون، ۽ Neli، Xena ۽ Mark 0.2 WAVES هر هڪ کي ساڳيءَ طرح.
(نوٽ: اسان ھڪڙي ھڪڙي ڪردار جي غلطي ڪئي ۽ نيلي 0.02 WAVES موڪليو. محتاط رھو!)
broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))
سڀني شرڪت ڪندڙن جي بيلنس کي ڀرڻ کان پوء، اسان ڏسون ٿا:
اسٽيج 2. هڪ dApp اڪائونٽ ٺاهيو
اسان اتفاق ڪيو ته ايلس ڊي سينٽرلائيز ايپليڪيشن جي خالق ۽ مالڪ هوندي.
اڪائونٽس ڏانھن وڃو، ان کي سيٽ ڪريو SEED ۽ چيڪ ڪريو env.SEED ايلس سان ملن ٿا.
اچو ته ايلس جي اڪائونٽ تي آسان ترين ممڪن اسڪرپٽ (معاهدو) انسٽال ڪرڻ جي ڪوشش ڪريون.
Waves ۾ سمارٽ رابطا اڳڪٿيون آهن جيڪي منع ڪن ٿيون يا ڪنهن به قسم جي ٻاهرئين ٽرانزيڪشن کي ڪجهه حالتن هيٺ ٿيڻ جي اجازت ڏين ٿيون. هن حالت ۾، هي حالت هميشه آهي. معاهدو ڪوڊ صحيح آهي. ڪال ڊيپلو ().
في سيٽ اسڪرپٽ ٽرانزيڪشن 1400000/100000000 = 0.014 WAVES. ايلس وٽ 2.986 واهون آهن هن جي بيلنس تي.
اچو ته هاڻي ايلس اڪائونٽ تي وڌيڪ پيچيده سمارٽ معاهدي منطق کي نصب ڪرڻ جي ڪوشش ڪريو، جنهن ۾ بيان ڪيل آهي
Ride4Dapps ھاڻي شامل آھي 2 نون تشريح جا قسم:
- @Callable(i) - هڪ پيٽرولر جي طور تي وٺندو آهي i، ڊيٽا بابت جنهن اڪائونٽ کي سڏيو / دستخط ڪيو ٽرانزيڪشن. اھو ھن فنڪشن جو نتيجو آھي جيڪو dApp اڪائونٽ جي حالت ۾ تبديلي کي طئي ڪري ٿو. ٻيا اڪائونٽ ٽرانزيڪشن ٺاهي سگهن ٿا ۽ هن تشريح سان ڪم ڪري سگهن ٿا ۽ dApp اڪائونٽ جي حالت کي تبديل ڪري سگهن ٿا.
- @Verifier(tx) - ٽرانزيڪشن جي تصديق ڪندڙ ٽرانزيڪشن tx پيٽرولر سان. RIDE کان اڳڪٿي منطق سان ملندڙ جلندڙ آهي. اهو هن اظهار ۾ آهي ته توهان dApp اڪائونٽ تي سمارٽ معاهدي جي منطق ۾ وڌيڪ تبديلين جي اجازت يا منع ڪري سگهو ٿا.
اچو ته ڪريون ڊي اي پي سڀني شرڪت ڪندڙن لاءِ هڪ عام پرس جي طور تي اڪائونٽ.
چيڪ ڪرڻ لاءِ ته ڪهڙو معاهدو في الحال توهان جي اڪائونٽ تي فعال آهي، توهان بلاڪ ايڪسپلورر ۾ سمارٽ ڪانٽريڪٽ جو بنيادي 64 ڪوڊ ڪاپي ڪري سگهو ٿا ۽ ان کي ڊيڪمپائلر استعمال ڪندي سڃاڻي سگهو ٿا (
اسان پڪ ڪريون ٿا ته سمارٽ معاهدي جو منطق ان سان ملندو آهي جيڪو اسان توقع ڪريون ٿا.
ايلس وٽ 2.972 واهون آهن هن جي بيلنس تي.
هي ڊي ايپ انهي ڳالهه تي نظر رکي ٿي ته هر شرڪت ڪندڙ هڪ ميکانيزم ذريعي عام فنڊ ۾ ڪيترو حصو ڏئي ٿو ڊيٽا ٽرانزيڪشن — DataEntry (currentKey, newAmount)، جتي ڪرنٽ ڪيئي اهو اڪائونٽ آهي جيڪو ڊپازٽ فنڪشن کي سڏي ٿو، ۽ نئين رقم آهي ٻيهر ڀريل بيلنس جي قيمت.
بوب ۽ ڪوپر 1 WAVES سان گڏ dApp اڪائونٽ ۾ پنهنجون جمع ڪرايو.
اسان غلطي ڪريون ٿا ۽ ٽرانزيڪشن ذريعي نه وڃو. ان کان پوء، ان حقيقت جي باوجود ته اسان کي يقين هو ته اسان باب جي طرفان هڪ ٽرانزيڪشن ڪري رهيا هئاسين، اسان انڊيڪس ۾ غلطي ڪئي ۽ هڪ بينڪ اڪائونٽ جو اشارو ڏنو جنهن ۾ سمارٽ معاهدو ناهي. اهو هتي هڪ اهم نقطو ياد رکڻ جي قابل آهي - ٽرانزيڪشن شروع ڪرڻ جي ناڪام ڪوششن لاء هڪ فيس آهي هٽائي نٿو سگهجي! ايلس وٽ 2.972 واهون آهن هن جي بيلنس تي. باب کي 3 موج آهن.
باب 1 WAVES dApp اڪائونٽ ڏانهن موڪليو.
broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))
باب وٽ 1.99 وايون باقي آهن. اھو آھي، باب ادا ڪيو 0.01 WAVES ڪميشن
ايلس وٽ هن جي بيلنس تي 2.972 WAVES هئا، هاڻي اهو 3.972 آهي. ايلس اڪائونٽ تي هڪ ٽرانزيڪشن پڻ رجسٽر ڪئي وئي، پر ڊي ايپ اڪائونٽ (ايلس) کان ڪو به ڪميشن چارج نه ڪيو ويو.
ڪوپر کان پوءِ اڪائونٽ به ڀرجي ويو، ايلس جو بيلنس 4.972 WAVES بڻجي ويو.
توھان معلوم ڪري سگھو ٿا ته ڪنھن جي مالڪ آھي عام والٽ ۾ ڪيتريون WAVES بلاڪ ايڪسپلورر ۾ ڊيٽا ٽيب ۾.
ڪوپر جنرل والٽ تي 1 WAVES جي رقم ڇڏڻ بابت پنهنجو ذهن تبديل ڪيو ۽ اڌ لاڳاپو واپس وٺڻ جو فيصلو ڪيو. هن کي ڪرڻ لاء، هن کي واپسي جي فنڪشن کي سڏڻ گهرجي.
بهرحال، اسان ٻيهر غلط هئاسين، ڇاڪاڻ ته واپسي جي فنڪشن مڪمل طور تي مختلف پيٽرولر ۽ هڪ مختلف دستخط آهي. جڏهن توهان RIDE4DAPPS تي سمارٽ معاهدو ٺاهيو ٿا توهان کي هن نقطي تي ڌيان ڏيڻ گهرجي
ڪوپر وٽ هاڻي 2.48 ويز آهن ان جي بيلنس شيٽ تي. ان جي مطابق، 3 وايون - 1 - 0.01، ۽ پوء + 0.5 - 0.01. ان مطابق، هر ڪال جمع ڪرڻ ۽ ڪڍڻ جي قيمت 0.01 WAVES. نتيجي طور، dApps مالڪن جي جدول ۾ داخلائون ھيٺ ڏنل تبديل ٿي ويون.
باب پڻ فيصلو ڪيو ته ڪجهه پئسا واپس وٺڻ جو گڏيل پرس مان، پر هڪ غلطي ڪئي ۽ 1.5 WAVES ڪڍڻ جي ڪوشش ڪئي.
بهرحال، سمارٽ معاهدو هن صورتحال لاء هڪ چيڪ ڪيو هو.
Xena هڪ اسڪيمر آهي، هن مجموعي اڪائونٽ مان 1 WAVES ڪڍڻ جي ڪوشش ڪئي.
اهو پڻ هن لاء ڪم نه ڪيو.
ايندڙ حصي ۾، اسان وڌيڪ پيچيده مسئلن تي نظر ڪنداسين ايلس ڊي ايپ اڪائونٽ جي خرابي سان لاڳاپيل.
جو ذريعو: www.habr.com