RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

அனைவருக்கும் வணக்கம்!

மிக சமீபத்தில், Waves Labs அறிவிக்கப்பட்டது டெவலப்பர்களுக்கான போட்டி, பரவலாக்கப்பட்ட பயன்பாடுகளுக்கான RIDE ஸ்மார்ட் ஒப்பந்த மொழி நீட்டிப்பை வெளியிடுவதற்கு அர்ப்பணிக்கப்பட்ட Ride4Dapps சோதனை நெட்வொர்க்கில்!

நாங்கள் DAO வழக்கைத் தேர்ந்தெடுத்தோம் துணிகரம் சமூக செயல்பாடுகளுடன் dApps ஐ உருவாக்க திட்டமிட்டுள்ளது: வாக்களிப்பு, நிதி திரட்டுதல், நம்பிக்கை மேலாண்மை போன்றவை.
நாங்கள் ஒரு எளிய உதாரணத்துடன் தொடங்கினோம் கேள்வி பதில் அமர்வுகள் மற்றும் உள்ளே ரைடு ஐடிஇ - உடன் உதாரணம் பகிரப்பட்ட பணப்பை.

இந்த எடுத்துக்காட்டைப் பார்ப்போம், கருதுகோள்களைச் சோதித்து சில வினோதங்களைப் பார்ப்போம்:

எங்களுக்கு Alice - dApp உரிமையாளர் இருக்கட்டும்
பூப் மற்றும் கூப்பர் ஆலிஸ் பார்ட்னர்கள், ஆலிஸ்-பிசி டிஏஓவின் இணை நிறுவனர்கள்
நெலி ஒரு வணிக உரிமையாளர், அவருக்கு நிதி தேவை
வங்கி - டோக்கன்களை விநியோகிக்கும் வங்கி

நிலை 1. நிலுவைகளின் துவக்கம்

அலைகள் சோதனை நெட்வொர்க்கில் டோக்கன்களைப் பெற, நீங்கள் தொடர்பு கொள்ள வேண்டும் குழாய் மற்றும் டோக்கன்களை அனுப்ப வேண்டிய முகவரியைக் குறிப்பிடவும்.
உங்கள் கணக்கு விவரங்களைத் திறப்பதன் மூலம் IDE இல் முகவரியைக் கண்டறியலாம்.
வங்கி 10 அலைகளை நாங்கள் முன்னிலைப்படுத்துகிறோம். பிளாக் மற்றும் பரிவர்த்தனை உலாவி மூலம் அவை வந்தன என்பதை நாங்கள் சரிபார்க்கிறோம்: விமர்சகர்

இப்போது மீதமுள்ள பங்கேற்பாளர்களுக்கு வங்கியிலிருந்து டோக்கன்களை விநியோகிப்போம். (குறிப்புகள்: அலைகள் நெட்வொர்க்கில் உள்ள அனைத்து பரிவர்த்தனைகளும் இலவசம் அல்ல, எனவே அனைத்து பங்கேற்பாளர்களும் பரிவர்த்தனைகளைச் செய்ய குறைந்தபட்ச நேர்மறை இருப்பு தேவை).

1 அலைகள் = 100000000 அலகுகள் (அலைகள்), ஏனெனில் தொகைகள் முழு எண்ணாக மட்டுமே இருக்க முடியும்
0.01 அலைகள் (பரிவர்த்தனை கட்டணம்) = 1000000

வங்கி -> [3 அலைகள்] -> ஆலிஸ், பரிமாற்ற பரிவர்த்தனை வழியாக (வகை: 4).

பரிவர்த்தனைகள் கையொப்பமிடப்பட்ட env.SEED எங்கள் வங்கியுடன் பொருந்துகிறதா என்பதை நாங்கள் சரிபார்க்கிறோம்:
RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

உங்களிடம் பொருந்தக்கூடிய விதை சொற்றொடர் இல்லையெனில், கணக்குகள் தாவலில் அதை மாற்றி மீண்டும் சரிபார்க்கவும்.
இதற்குப் பிறகு, 3 அலைகள் ஆலிஸின் பரிமாற்றத்திற்கான பரிவர்த்தனையை உருவாக்கி, அறிவிக்கிறோம் மற்றும் கையொப்பமிடுகிறோம்.
env.accounts மாறி மூலம் ஆலிஸின் தரவையும் நீங்கள் கண்டறியலாம். எண்ணிடுதல் 0 இலிருந்து தொடங்குகிறது, எனவே ஆலிஸ் env.accounts[1].
RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

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

முடிவை உலாவியிலும் காணலாம், செயல்படுத்தப்பட்ட உடனேயே அதற்கான இணைப்பு எங்களுக்குத் திருப்பித் தரப்படும் பரிவர்த்தனைகள்.

ஆலிஸின் இருப்பு 3 அலைகளால் நிரப்பப்படுவதையும், வங்கி இருப்பு 10 - 3 - 0.01 = 0.699 ஆக இருப்பதையும் உறுதிசெய்கிறோம்.
RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

நாங்கள் பூப் மற்றும் கூப்பர் 3 அலைகளை ஒவ்வொன்றும், நெலி, செனா மற்றும் மார்க் 0.2 அலைகளையும் அதே வழியில் அனுப்புகிறோம்.
(குறிப்புகள்: நாங்கள் ஒரு எழுத்துப் பிழையைச் செய்து, நெலி 0.02 அலைகளை அனுப்பினோம். கவனமாக இருங்கள்!)

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

அனைத்து பங்கேற்பாளர்களின் நிலுவைகளை நிரப்பிய பிறகு, நாங்கள் பார்க்கிறோம்:
RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

நிலை 2. dApp கணக்கை உருவாக்கவும்

பரவலாக்கப்பட்ட பயன்பாட்டின் படைப்பாளர் மற்றும் உரிமையாளராக ஆலிஸ் இருப்பார் என்பதை நாங்கள் ஒப்புக்கொண்டோம்.
கணக்குகளுக்குச் சென்று, அதை SEED என அமைத்து, env.SEED ஆலிஸுடன் பொருந்துகிறது என்பதைச் சரிபார்க்கவும்.

ஆலிஸின் கணக்கில் எளிமையான ஸ்கிரிப்டை (ஒப்பந்தம்) நிறுவ முயற்சிப்போம்.
அலைகளில் உள்ள ஸ்மார்ட் தொடர்புகள் என்பது சில நிபந்தனைகளின் கீழ் வெளிச்செல்லும் எந்த வகையான பரிவர்த்தனையையும் தடைசெய்யும் அல்லது அனுமதிக்கும் முன்னறிவிப்புகள் ஆகும். இந்த வழக்கில், இந்த நிலை எப்போதும் உள்ளது. ஒப்பந்தக் குறியீடு உண்மை. அழைப்பு வரிசைப்படுத்து().

RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

ஒரு செட்ஸ்கிரிப்ட் பரிவர்த்தனைக்கான கட்டணம் 1400000/100000000 = 0.014 அலைகள். ஆலிஸின் இருப்பில் 2.986 அலைகள் உள்ளன.

இப்போது விவரிக்கப்பட்டுள்ள ஆலிஸ் கணக்கில் மிகவும் சிக்கலான ஸ்மார்ட் ஒப்பந்த தர்க்கத்தை நிறுவ முயற்சிப்போம் உதாரணமாக

Ride4Dapps இப்போது 2 புதிய சிறுகுறிப்பு வகைகள் உள்ளன:

  1. @Callable(i) — பரிவர்த்தனைக்கு எந்தக் கணக்கு அழைக்கப்பட்டது/கையொப்பமிடப்பட்டது என்பது பற்றிய தரவு i அளவுருவாக எடுத்துக்கொள்கிறது. இந்தச் செயல்பாட்டின் விளைவுதான் dApp கணக்கின் நிலை மாற்றத்தை தீர்மானிக்கிறது. பிற கணக்குகள் இந்த சிறுகுறிப்பு மூலம் பரிவர்த்தனைகளை உருவாக்கலாம் மற்றும் செயல்பாடுகளைச் செய்யலாம் மற்றும் dApp கணக்கின் நிலையை மாற்றலாம்.
  2. @Verifier(tx) - பரிவர்த்தனை tx அளவுருவுடன் பரிவர்த்தனை சரிபார்ப்பு. RIDE இலிருந்து முன்கணிப்பு தர்க்கத்திற்கு ஒத்திருக்கிறது. இந்த வெளிப்பாட்டில்தான் dApp கணக்கில் ஸ்மார்ட் ஒப்பந்தங்களின் தர்க்கத்தில் மேலும் மாற்றங்களை அனுமதிக்கலாம் அல்லது தடை செய்யலாம்.

செய்வோம் dApp அனைத்து பங்கேற்பாளர்களுக்கும் பொதுவான பணப்பையாக கணக்கு.
RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

உங்கள் கணக்கில் எந்த ஒப்பந்தம் தற்போது செயலில் உள்ளது என்பதைச் சரிபார்க்க, பிளாக் எக்ஸ்ப்ளோரரில் உள்ள ஸ்மார்ட் ஒப்பந்தத்தின் அடிப்படை64 குறியீட்டை நகலெடுத்து, டிகம்பைலரைப் பயன்படுத்தி அதை அடையாளம் காணலாம் (உதாரணமாக)
RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)
RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)
RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

ஸ்மார்ட் ஒப்பந்தத்தின் தர்க்கம் நாம் எதிர்பார்ப்பதுடன் பொருந்துகிறது என்பதை உறுதிசெய்கிறோம்.
ஆலிஸின் இருப்பில் 2.972 அலைகள் உள்ளன.

ஒவ்வொரு பங்கேற்பாளரும் ஒரு பொறிமுறையின் மூலம் பொது நிதிக்கு எவ்வளவு பங்களிக்கிறார்கள் என்பதை இந்த dApp கண்காணிக்கும் தரவு பரிவர்த்தனை - டேட்டாஎன்ட்ரி(தற்போதைய விசை, புதிய தொகை), தற்போதைய கீ என்பது வைப்புச் செயல்பாட்டை அழைக்கும் கணக்கு, மேலும் புதிய தொகை என்பது நிரப்பப்பட்ட இருப்பின் மதிப்பு.

பூப் மற்றும் கூப்பர் 1 அலைகள் மூலம் dApp கணக்கில் டெபாசிட் செய்கிறார்கள்.
RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

நாங்கள் தவறு செய்கிறோம், பரிவர்த்தனை நடக்காது. பாப் சார்பாக நாங்கள் பரிவர்த்தனை செய்கிறோம் என்று உறுதியாக நம்பிய போதிலும், குறியீட்டில் தவறு செய்து, ஸ்மார்ட் ஒப்பந்தம் இல்லாத வங்கிக் கணக்கைக் குறிப்பிட்டோம். இங்கே ஒரு முக்கியமான விஷயத்தைக் குறிப்பிடுவது மதிப்பு - பரிவர்த்தனைகளைத் தொடங்க தோல்வியுற்ற முயற்சிகளுக்கு கட்டணம் உள்ளது அகற்ற முடியாது! ஆலிஸின் இருப்பில் 2.972 அலைகள் உள்ளன. பாப்பில் 3 அலைகள் உள்ளன.

பாப் 1 அலைகளை 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 அலைகள் இருந்தன, இப்போது அது 3.972. ஆலிஸ் கணக்கிலும் ஒரு பரிவர்த்தனை பதிவு செய்யப்பட்டது, ஆனால் dApp கணக்கிலிருந்து (Alice) கமிஷன் எதுவும் வசூலிக்கப்படவில்லை.
கூப்பரும் கணக்கை நிரப்பிய பிறகு, ஆலிஸின் இருப்பு 4.972 அலைகள் ஆனது.

RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

தரவுத் தாவலில் உள்ள பிளாக் எக்ஸ்ப்ளோரரில் உள்ள பொதுவான பணப்பையில் எத்தனை அலைகள் யாருடையது என்பதை நீங்கள் கண்டுபிடிக்கலாம்.

கூப்பர் பொது பணப்பையில் 1 அலைகளின் அளவை விட்டுவிடுவது பற்றி தனது எண்ணத்தை மாற்றிக்கொண்டார் மற்றும் உறவில் பாதியை திரும்பப் பெற முடிவு செய்தார். இதைச் செய்ய, அவர் திரும்பப் பெறுதல் செயல்பாட்டை அழைக்க வேண்டும்.

RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

இருப்பினும், திரும்பப் பெறுதல் செயல்பாடு முற்றிலும் வேறுபட்ட அளவுருக்கள் மற்றும் வேறுபட்ட கையொப்பத்தைக் கொண்டிருப்பதால், நாங்கள் மீண்டும் தவறு செய்தோம். RIDE4DAPPS இல் ஸ்மார்ட் கான்ட்ராக்ட்களை வடிவமைக்கும் போது, ​​இந்தக் கட்டத்தில் கவனம் செலுத்த வேண்டும்

RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

கூப்பர் இப்போது அதன் இருப்புநிலைக் குறிப்பில் 2.48 அலைகளைக் கொண்டுள்ளது. அதன்படி, 3 அலைகள் - 1 - 0.01, பின்னர் + 0.5 - 0.01. அதன்படி, டெபாசிட் செய்வதற்கும் திரும்பப் பெறுவதற்கும் ஒவ்வொரு அழைப்புக்கும் 0.01 அலைகள் செலவாகும். இதன் விளைவாக, dApps உரிமையாளர்கள் அட்டவணையில் உள்ளீடுகள் பின்வருமாறு மாற்றப்பட்டன.

RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

பாப் பகிரப்பட்ட பணப்பையிலிருந்து சிறிது பணத்தை எடுக்க முடிவு செய்தார், ஆனால் தவறு செய்து 1.5 அலைகளை திரும்பப் பெற முயன்றார்.

RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

இருப்பினும், ஸ்மார்ட் ஒப்பந்தத்தில் இந்த நிலைமைக்கான காசோலை இருந்தது.

Xena ஒரு மோசடி செய்பவர், அவர் மொத்த கணக்கில் இருந்து 1 WAVES ஐ எடுக்க முயன்றார்.

RIDE மற்றும் RIDE4DAPPS இல் Waves ஸ்மார்ட் ஒப்பந்தங்களை எழுத கற்றுக்கொள்வது. பகுதி 1 (பல பயனர் பணப்பை)

அவளுக்கும் அது பலிக்கவில்லை.

அடுத்த பகுதியில், Alice dApp கணக்கின் குறைபாடு தொடர்பான சிக்கலான சிக்கல்களைப் பார்ப்போம்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்