டைவ் இன் மூவ் - ஃபேஸ்புக்கின் லிப்ரா பிளாக்செயின் நிரலாக்க மொழி

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

அறிமுகம்

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

  1. மூவ் மெய்நிகர் கணினியில் நேரடியாக செயல்படுத்தக்கூடிய ஒரு பைட்கோட் மொழியாக இருந்தாலும், சாலிடிட்டி (Ethereum இன் ஸ்மார்ட் ஒப்பந்த மொழி) என்பது ஒரு EVM (Ethereum Virtual Machine) இல் செயல்படுத்தப்படுவதற்கு முன்பு முதலில் பைட்கோடில் தொகுக்கப்பட்ட ஒரு உயர் மட்ட மொழி ஆகும்.
  2. நகர்வை ஸ்மார்ட் ஒப்பந்தங்களை செயல்படுத்துவதற்கு மட்டுமல்லாமல், தனிப்பயன் பரிவர்த்தனைகளுக்கும் பயன்படுத்தலாம் (இதைப் பற்றி பின்னர் மேலும்), சாலிடிட்டி ஒரு ஸ்மார்ட் ஒப்பந்தம்-மட்டுமே மொழி.


INDEX புரோட்டோகால் திட்டக் குழுவால் மொழிபெயர்ப்பு மேற்கொள்ளப்பட்டது. நாங்கள் ஏற்கனவே மொழிபெயர்த்துள்ளோம் துலாம் திட்டத்தை விவரிக்கும் பெரிய பொருள், இப்போது நகர்த்தும் மொழியை இன்னும் கொஞ்சம் விரிவாகப் பார்க்க வேண்டிய நேரம் வந்துவிட்டது. ஹப்ரூசருடன் இணைந்து மொழிபெயர்ப்பு மேற்கொள்ளப்பட்டது கூல்சியு

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

டைவ் இன் மூவ் - ஃபேஸ்புக்கின் லிப்ரா பிளாக்செயின் நிரலாக்க மொழி

எடுத்துக்காட்டாக, பின்வரும் குறியீட்டு துண்டு ஒரு பிழையைத் தூண்டும்: நகர்த்தப்பட்ட மதிப்பு 'x' இன் பயன்பாடு. ரஸ்டில் குப்பை சேகரிப்பு இல்லாததே இதற்குக் காரணம். மாறிகள் நோக்கத்திற்கு வெளியே செல்லும்போது, ​​அவர்கள் குறிப்பிடும் நினைவகம் விடுவிக்கப்படும். எளிமையாகச் சொன்னால், தரவின் ஒரு "உரிமையாளர்" மட்டுமே இருக்க முடியும். இந்த எடுத்துக்காட்டில் x அசல் உரிமையாளர் பின்னர் y புதிய உரிமையாளராகிறது. இந்த நடத்தை பற்றி மேலும் வாசிக்க இங்கே.

திறந்த அமைப்புகளில் டிஜிட்டல் சொத்துக்களின் பிரதிநிதித்துவம்

டிஜிட்டல் முறையில் பிரதிநிதித்துவம் செய்ய கடினமாக இருக்கும் உடல் சொத்துகளின் இரண்டு பண்புகள் உள்ளன:

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

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

இந்த இரண்டு பண்புகளுக்கு நாங்கள் எவ்வாறு வந்தோம் என்பதை விளக்குவதற்கு, பின்வரும் வாக்கியங்களுடன் தொடங்குவோம்:

பரிந்துரை # 1: பற்றாக்குறை மற்றும் அணுகல் கட்டுப்பாடு இல்லாத எளிய விதி

டைவ் இன் மூவ் - ஃபேஸ்புக்கின் லிப்ரா பிளாக்செயின் நிரலாக்க மொழி

  • ஜி [கே]: = என் ஒரு விசையால் அணுகக்கூடிய எண்ணிற்கான புதுப்பிப்பைக் குறிக்கிறது К பிளாக்செயினின் உலகளாவிய நிலையில், ஒரு புதிய அர்த்தத்துடன் n.
  • பரிவர்த்தனை ⟨ஆலிஸ், 100⟩ ஆலிஸின் கணக்கு இருப்பை 100 ஆக அமைப்பது.

மேலே உள்ள தீர்வு பல முக்கிய சிக்கல்களைக் கொண்டுள்ளது:

  • வெறுமனே அனுப்புவதன் மூலம் ஆலிஸ் வரம்பற்ற நாணயங்களைப் பெறலாம் பரிவர்த்தனை ⟨ஆலிஸ், 100⟩.
  • ஆலிஸ் பாபிற்கு அனுப்பும் நாணயங்கள் பயனற்றவை, ஏனெனில் பாப் அதே நுட்பத்தைப் பயன்படுத்தி வரம்பற்ற நாணயங்களை அனுப்ப முடியும்.

பரிந்துரை # 2: பற்றாக்குறையை கணக்கில் எடுத்துக்கொள்வது

டைவ் இன் மூவ் - ஃபேஸ்புக்கின் லிப்ரா பிளாக்செயின் நிரலாக்க மொழி

இப்போது நாணயங்களின் எண்ணிக்கையை நிலைமையை கண்காணித்து வருகிறோம் Ka குறைந்தபட்சம் சமமாக இருந்தது n பரிமாற்ற பரிவர்த்தனைக்கு முன். இருப்பினும், இது பற்றாக்குறையின் சிக்கலை தீர்க்கும் அதே வேளையில், ஆலிஸின் நாணயங்களை யார் அனுப்ப முடியும் என்பது பற்றிய தகவல் இல்லை (இப்போதைக்கு, இதை யார் வேண்டுமானாலும் செய்யலாம், முக்கிய விஷயம் தொகையை கட்டுப்படுத்தும் விதியை மீறக்கூடாது).

முன்மொழிவு # 3: பற்றாக்குறை மற்றும் அணுகல் கட்டுப்பாடு ஆகியவற்றை இணைத்தல்

டைவ் இன் மூவ் - ஃபேஸ்புக்கின் லிப்ரா பிளாக்செயின் நிரலாக்க மொழி

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

பிளாக்செயின் நிரலாக்க மொழிகள்

தற்போதுள்ள பிளாக்செயின் மொழிகள் பின்வரும் சிக்கல்களை எதிர்கொள்கின்றன (அவை அனைத்தும் நகர்வில் தீர்க்கப்பட்டன (குறிப்பு: துரதிர்ஷ்டவசமாக, கட்டுரையின் ஆசிரியர் தனது ஒப்பீடுகளில் Ethereum ஐ மட்டுமே முறையிடுகிறார், எனவே அவற்றை இந்த சூழலில் மட்டுமே எடுத்துக்கொள்வது மதிப்பு. எடுத்துக்காட்டாக, பின்வரும் பெரும்பாலானவை EOS இல் தீர்க்கப்படுகின்றன.)):

சொத்துக்களின் மறைமுக பிரதிநிதித்துவம். ஒரு சொத்து முழு எண்ணைப் பயன்படுத்தி குறியாக்கம் செய்யப்படுகிறது, ஆனால் ஒரு முழு எண்ணானது ஒரு சொத்தைப் போன்றது அல்ல. உண்மையில், Bitcoin/Ether/<Any Coin> ஐக் குறிக்கும் வகை அல்லது மதிப்பு இல்லை! இது சொத்துக்களைப் பயன்படுத்தும் நிரல்களை எழுதுவது கடினமாகவும் பிழைகள் ஏற்படக்கூடியதாகவும் ஆக்குகிறது. சொத்துக்களை நடைமுறைகளுக்கு அனுப்புதல் அல்லது கட்டமைப்புகளில் சொத்துக்களை சேமிப்பது போன்ற வடிவங்களுக்கு மொழியின் சிறப்பு ஆதரவு தேவைப்படுகிறது.

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

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

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

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

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

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

மொழி வடிவமைப்பு அடிப்படைகளை நகர்த்தவும்

முதல் வரிசை ஆதாரங்கள்

உயர் மட்டத்தில், நகர்வு மொழியில் தொகுதிகள் / வளங்கள் / நடைமுறைகளுக்கு இடையிலான தொடர்பு வகுப்புகள் / பொருள்கள் மற்றும் OOP மொழிகளில் உள்ள முறைகளுக்கு இடையிலான உறவுக்கு மிகவும் ஒத்திருக்கிறது.
நகரும் தொகுதிகள் மற்ற பிளாக்செயின்களில் உள்ள ஸ்மார்ட் ஒப்பந்தங்களைப் போன்றது. தொகுதி அறிவிக்கப்பட்ட வளங்களை உருவாக்குதல், அழித்தல் மற்றும் புதுப்பிப்பதற்கான விதிகளை வரையறுக்கும் ஆதார வகைகள் மற்றும் நடைமுறைகளை அறிவிக்கிறது. ஆனால் இவை அனைத்தும் வெறும் மரபுகள் ("வாசகங்கள்”) நகர்வில். இந்த விஷயத்தை சிறிது நேரம் கழித்து விளக்குவோம்.

நெகிழ்வு

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

பாதுகாப்பு

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

சரிபார்ப்பு

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

மட்டுத்தன்மை

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

டைவ் இன் மூவ் - ஃபேஸ்புக்கின் லிப்ரா பிளாக்செயின் நிரலாக்க மொழி

கண்ணோட்டத்தை நகர்த்தவும்

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

பியர்-டு-பியர் கொடுப்பனவுகள்

டைவ் இன் மூவ் - ஃபேஸ்புக்கின் லிப்ரா பிளாக்செயின் நிரலாக்க மொழி

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

  • 0x0: தொகுதி சேமிக்கப்படும் கணக்கின் முகவரி
  • நாணய: தொகுதி பெயர்
  • நாணயம்: வள வகை
  • செயல்முறை மூலம் திரும்பப்பெற்ற நாணயம் மதிப்பு 0x0.Currency.Coin வகையின் வள மதிப்பு
  • நகர்வு (): மதிப்பை மீண்டும் பயன்படுத்த முடியாது
  • நகல் (): மதிப்பை பின்னர் பயன்படுத்தலாம்

குறியீட்டை அலசவும்: முதல் படியில், அனுப்புநர் பெயரிடப்பட்ட ஒரு செயல்முறையை அழைக்கிறார் அனுப்புநரிடமிருந்து விலக்கு இல் சேமிக்கப்பட்ட தொகுதியிலிருந்து 0x0 நாணயம். இரண்டாவது கட்டத்தில், நாணய வள மதிப்பை தொகுதியின் வைப்பு நடைமுறைக்கு நகர்த்துவதன் மூலம் அனுப்புநர் பெறுநருக்கு நிதியை மாற்றுகிறார். 0x0 நாணயம்.

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

குறிப்பிடுவதன் மூலம் நிதிகளின் மறுபயன்பாடு நகர்த்த (நாணயம்) இருமுறை . ஒரு வரியைச் சேர்த்தல் 0x0.Currency.deposit (நகல் (some_other_payee), Move (coin)) எடுத்துக்காட்டாக, மேலே உள்ளவை அனுப்புநரை இரண்டு முறை நாணயங்களை "செலவிட" அனுமதிக்கும் - முதல் முறையாக பணம் பெறுபவருடன், மற்றும் இரண்டாவது வேறு_பணம் பெறுபவர். இது ஒரு விரும்பத்தகாத நடத்தை, இது ஒரு உடல் சொத்துடன் சாத்தியமில்லை. அதிர்ஷ்டவசமாக, மூவ் இந்த திட்டத்தை நிராகரிக்கும்.

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

நாணய தொகுதி

டைவ் இன் மூவ் - ஃபேஸ்புக்கின் லிப்ரா பிளாக்செயின் நிரலாக்க மொழி

ஒவ்வொரு கணக்கிலும் 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.

நாணய வள அறிவிப்பு

டைவ் இன் மூவ் - ஃபேஸ்புக்கின் லிப்ரா பிளாக்செயின் நிரலாக்க மொழி
தொகுதி பெயரிடப்பட்டது நாணய மற்றும் ஒரு ஆதார வகை பெயரிடப்பட்டது நாணயம்

சில தருணங்கள்:

  • நாணயம் ஒரு வகை வகையை கொண்ட கட்டமைப்பாகும் u64 (64-பிட் கையொப்பமிடாத முழு எண்)
  • தொகுதி நடைமுறைகள் மட்டுமே நாணய வகையின் மதிப்புகளை உருவாக்கலாம் அல்லது அழிக்கலாம் நாணயம்.
  • மற்ற தொகுதிகள் மற்றும் ஸ்கிரிப்டுகள் தொகுதி வழங்கிய பொது நடைமுறைகள் மூலம் மட்டுமே மதிப்பு புலத்தை எழுத அல்லது குறிப்பிட முடியும்.

வைப்புத்தொகை விற்பனை

டைவ் இன் மூவ் - ஃபேஸ்புக்கின் லிப்ரா பிளாக்செயின் நிரலாக்க மொழி

இந்த செயல்முறை ஒரு ஆதாரத்தை ஏற்றுக்கொள்கிறது நாணயம் உள்ளீடாக மற்றும் வளத்துடன் அதை இணைக்கிறது நாணயம்பெறுநரின் கணக்கில் சேமிக்கப்படுகிறது:

  1. உள்ளீட்டு வள நாணயத்தை அழித்து அதன் மதிப்பை பதிவு செய்தல்.
  2. பெறுநரின் கணக்கில் சேமிக்கப்பட்டுள்ள தனித்துவமான நாணய ஆதாரத்திற்கான இணைப்பைப் பெறுதல்.
  3. செயல்முறையை அழைக்கும் போது அளவுருவில் அனுப்பப்பட்ட மதிப்பின் மூலம் நாணயங்களின் எண்ணிக்கையின் மதிப்பை மாற்றுதல்.

சில தருணங்கள்:

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

withdraw_from_sender ஐ செயல்படுத்துதல்

டைவ் இன் மூவ் - ஃபேஸ்புக்கின் லிப்ரா பிளாக்செயின் நிரலாக்க மொழி

இந்த நடைமுறை:

  1. தனித்துவமான ஆதாரத்திற்கான இணைப்பைப் பெறுகிறது நாணயம், அனுப்புநரின் கணக்கில் இணைக்கப்பட்டுள்ளது
  2. ஒரு வளத்தின் மதிப்பைக் குறைக்கிறது நாணயம் குறிப்பிட்ட தொகைக்கான இணைப்பு வழியாக
  3. ஒரு புதிய ஆதாரத்தை உருவாக்கி, திரும்பப் பெறுகிறது நாணயம் புதுப்பிக்கப்பட்ட இருப்புடன்.

சில தருணங்கள்:

  • வைப்பு யாராலும் ஏற்படலாம், ஆனால் அனுப்புநரிடமிருந்து விலக்கு அழைப்புக் கணக்கின் நாணயங்களுக்கு மட்டுமே அணுகல் உள்ளது
  • GetTxnSenderAdress இதற்கு ஒத்த msg. அனுப்புபவர் திடத்தில்
  • நிராகரிக்காமல் இதற்கு ஒத்த தேவைப்படும் திடத்தில். இந்த காசோலை தோல்வியுற்றால், பரிவர்த்தனை நிறுத்தப்பட்டு அனைத்து மாற்றங்களும் திரும்பப் பெறப்படும்.
  • பேக் இது டி வகையின் புதிய வளத்தை உருவாக்கும் உள்ளமைக்கப்பட்ட செயல்முறையாகும்.
  • அதே போல் திறக்கவும், பேக் ஆதாரம் விவரிக்கப்பட்டுள்ள தொகுதிக்குள் மட்டுமே அழைக்க முடியும் T

முடிவுக்கு

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

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

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