எத்திரியம் மெய்நிகர் இயந்திரம் (EVM)
எத்திரியம் மெய்நிகர் இயந்திரம் (EVM) என்பது அனைத்து எத்திரியம் முனைகளிலும் (nodes) குறியீட்டை நிலையாகவும் பாதுகாப்பாகவும் செயல்படுத்தும் ஒரு பரவலாக்கப்பட்ட மெய்நிகர் சூழலாகும். திறன் ஒப்பந்தங்களைச் செயல்படுத்த முனைகள் EVM-ஐ இயக்குகின்றன, செயல்பாடுகளுக்குத் தேவையான கணக்கீட்டு முயற்சியை அளவிட "எரிவாயுவை" பயன்படுத்துகின்றன, இதன் மூலம் திறமையான வள ஒதுக்கீடு மற்றும் பிணையப் பாதுகாப்பை உறுதி செய்கின்றன.
முன்நிபந்தனைகள்
EVM-ஐப் புரிந்துகொள்ள கணினி அறிவியலில் உள்ள பொதுவான கலைச்சொற்களான பைட்டுகள் (bytes) (புதிய தாவலில் திறக்கப்படும்), நினைவகம் (memory) (புதிய தாவலில் திறக்கப்படும்) மற்றும் ஸ்டேக் (stack) (புதிய தாவலில் திறக்கப்படும்) போன்றவற்றின் அடிப்படைப் பரிச்சயம் அவசியம். ஹாஷ் செயல்பாடுகள் (புதிய தாவலில் திறக்கப்படும்) மற்றும் மெர்க்கல் மரம் (புதிய தாவலில் திறக்கப்படும்) போன்ற குறியாக்கவியல்/தொகுதிச்சங்கிலி கருத்துகளைப் பற்றி அறிந்திருப்பதும் உதவியாக இருக்கும்.
பேரேட்டிலிருந்து நிலை இயந்திரத்திற்கு
குறியாக்கவியலின் அடிப்படை கருவிகளைப் பயன்படுத்தி பரவலாக்கப்பட்ட நாணயத்தை சாத்தியமாக்கும் பிட்காயின் போன்ற தொகுதிச்சங்கிலிகளை விவரிக்க 'பகிர்ந்தளிக்கப்பட்ட பேரேடு' (distributed ledger) என்ற ஒப்புமை பெரும்பாலும் பயன்படுத்தப்படுகிறது. பேரேட்டை மாற்றுவதற்கு ஒருவர் என்ன செய்ய முடியும் மற்றும் என்ன செய்ய முடியாது என்பதைக் கட்டுப்படுத்தும் விதிகளின் தொகுப்பைக் கடைப்பிடிக்க வேண்டிய செயல்பாடுகளின் பதிவை இந்தப் பேரேடு பராமரிக்கிறது. எடுத்துக்காட்டாக, ஒரு பிட்காயின் முகவரி முன்பு பெற்றதை விட அதிகமான பிட்காயினைச் செலவிட முடியாது. இந்த விதிகள் பிட்காயின் மற்றும் பல தொகுதிச்சங்கிலிகளில் உள்ள அனைத்து பரிவர்த்தனைகளுக்கும் அடிப்படையாக அமைகின்றன.
எத்திரியம் ஏறக்குறைய அதே உள்ளுணர்வு விதிகளைப் பின்பற்றும் அதன் சொந்த மறைக்குறியீட்டு நாணயத்தைக் (ஈதர்) கொண்டிருந்தாலும், இது மிகவும் சக்திவாய்ந்த செயல்பாட்டையும் செயல்படுத்துகிறது: திறன் ஒப்பந்தங்கள். இந்த மிகவும் சிக்கலான அம்சத்திற்கு, மிகவும் நுட்பமான ஒப்புமை தேவைப்படுகிறது. பகிர்ந்தளிக்கப்பட்ட பேரேட்டிற்குப் பதிலாக, எத்திரியம் என்பது ஒரு பகிர்ந்தளிக்கப்பட்ட நிலை இயந்திரம் (state machine) (புதிய தாவலில் திறக்கப்படும்) ஆகும். எத்திரியத்தின் நிலை என்பது ஒரு பெரிய தரவுக் கட்டமைப்பாகும், இது அனைத்து கணக்குகள் மற்றும் நிலுவைகளை மட்டுமல்லாமல், முன் வரையறுக்கப்பட்ட விதிகளின்படி தொகுதியிலிருந்து தொகுதிக்கு மாறக்கூடிய மற்றும் தன்னிச்சையான இயந்திரக் குறியீட்டைச் செயல்படுத்தக்கூடிய ஒரு இயந்திர நிலையையும் (machine state) கொண்டுள்ளது. தொகுதியிலிருந்து தொகுதிக்கு நிலையை மாற்றுவதற்கான குறிப்பிட்ட விதிகள் EVM-ஆல் வரையறுக்கப்படுகின்றன.
Ethereum EVM illustrated (புதிய தாவலில் திறக்கப்படும்)-லிருந்து தழுவப்பட்ட வரைபடம்
எத்திரியம் நிலை மாற்றச் செயல்பாடு
EVM ஒரு கணிதச் செயல்பாட்டைப் போலவே செயல்படுகிறது: ஒரு உள்ளீடு கொடுக்கப்பட்டால், அது ஒரு உறுதியான வெளியீட்டை உருவாக்குகிறது. எனவே எத்திரியத்தை ஒரு நிலை மாற்றச் செயல்பாட்டைக் (state transition function) கொண்டிருப்பதாக முறையாக விவரிப்பது மிகவும் உதவியாக இருக்கும்:
Y(S, T)= S'
ஒரு பழைய செல்லுபடியாகும் நிலை (S) மற்றும் புதிய செல்லுபடியாகும் பரிவர்த்தனைகளின் தொகுப்பு (T) கொடுக்கப்பட்டால், எத்திரியம் நிலை மாற்றச் செயல்பாடு Y(S, T) ஒரு புதிய செல்லுபடியாகும் வெளியீட்டு நிலையை S' உருவாக்குகிறது.
நிலை
எத்திரியத்தின் சூழலில், நிலை என்பது மாற்றியமைக்கப்பட்ட மெர்க்கல் பாட்ரிசியா ட்ரை எனப்படும் ஒரு பிரம்மாண்டமான தரவுக் கட்டமைப்பாகும், இது அனைத்து கணக்குகளையும் ஹாஷ்களால் இணைத்து, தொகுதிச்சங்கிலியில் சேமிக்கப்பட்டுள்ள ஒற்றை மூல ஹாஷாகக் குறைக்கக்கூடிய வகையில் வைத்திருக்கிறது.
பரிவர்த்தனைகள்
பரிவர்த்தனைகள் என்பது கணக்குகளிலிருந்து வரும் குறியாக்கவியல் ரீதியாக கையொப்பமிடப்பட்ட வழிமுறைகளாகும். பரிவர்த்தனைகளில் இரண்டு வகைகள் உள்ளன: செய்தி அழைப்புகளை (message calls) விளைவிப்பவை மற்றும் ஒப்பந்த உருவாக்கத்தை விளைவிப்பவை.
ஒப்பந்த உருவாக்கம் என்பது தொகுக்கப்பட்ட திறன் ஒப்பந்த பைட் குறியீட்டைக் கொண்ட புதிய ஒப்பந்தக் கணக்கை உருவாக்குகிறது. வேறொரு கணக்கு அந்த ஒப்பந்தத்திற்கு ஒரு செய்தி அழைப்பைச் செய்யும்போதெல்லாம், அது அதன் பைட் குறியீட்டைச் செயல்படுத்துகிறது.
EVM வழிமுறைகள்
EVM 1024 உருப்படிகள் ஆழம் கொண்ட ஒரு ஸ்டேக் இயந்திரமாக (stack machine) (புதிய தாவலில் திறக்கப்படும்) செயல்படுகிறது. ஒவ்வொரு உருப்படியும் 256-பிட் சொல்லாகும், இது 256-பிட் குறியாக்கவியலுடன் (கெக்காக்-256 ஹாஷ்கள் அல்லது secp256k1 கையொப்பங்கள் போன்றவை) பயன்படுத்துவதை எளிதாக்குவதற்காகத் தேர்ந்தெடுக்கப்பட்டது.
செயல்பாட்டின் போது, EVM ஒரு தற்காலிக நினைவகத்தை (சொல்-முகவரியிடப்பட்ட பைட் வரிசையாக) பராமரிக்கிறது, இது பரிவர்த்தனைகளுக்கு இடையில் நிலைத்திருக்காது.
தற்காலிக சேமிப்பகம்
தற்காலிக சேமிப்பகம் (Transient storage) என்பது TSTORE மற்றும் TLOAD செயல்பாட்டுக் குறியீடுகள் மூலம் அணுகப்படும் ஒரு பரிவர்த்தனைக்கான திறவுகோல்-மதிப்பு (key-value) சேமிப்பகமாகும். இது ஒரே பரிவர்த்தனையின் போது அனைத்து உள் அழைப்புகளிலும் நிலைத்திருக்கும், ஆனால் பரிவர்த்தனையின் முடிவில் அழிக்கப்படும். நினைவகத்தைப் போலல்லாமல், தற்காலிக சேமிப்பகம் செயலாக்கச் சட்டகத்திற்குப் பதிலாக EVM நிலையின் ஒரு பகுதியாக வடிவமைக்கப்பட்டுள்ளது, இருப்பினும் இது உலகளாவிய நிலையில் (global state) சமர்ப்பிக்கப்படுவதில்லை. ஒரு பரிவர்த்தனையின் போது உள் அழைப்புகள் முழுவதும் எரிவாயு-திறனுள்ள தற்காலிக நிலைப் பகிர்வை தற்காலிக சேமிப்பகம் செயல்படுத்துகிறது.
சேமிப்பகம்
ஒப்பந்தங்கள் ஒரு மெர்க்கல் பாட்ரிசியா சேமிப்பக ட்ரையைக் (சொல்-முகவரியிடக்கூடிய சொல் வரிசையாக) கொண்டுள்ளன, இது குறிப்பிட்ட கணக்குடன் தொடர்புடையது மற்றும் உலகளாவிய நிலையின் ஒரு பகுதியாகும். இந்த நிலையான சேமிப்பகம் தற்காலிக சேமிப்பகத்திலிருந்து வேறுபடுகிறது, இது ஒரு பரிவர்த்தனையின் காலத்திற்கு மட்டுமே கிடைக்கும் மற்றும் கணக்கின் நிலையான சேமிப்பக ட்ரையின் ஒரு பகுதியாக அமையாது.
செயல்பாட்டுக் குறியீடுகள்
தொகுக்கப்பட்ட திறன் ஒப்பந்த பைட் குறியீடு பல EVM செயல்பாட்டுக் குறியீடுகளாக செயல்படுகிறது, இவை XOR, AND, ADD, SUB போன்ற நிலையான ஸ்டேக் செயல்பாடுகளைச் செய்கின்றன. EVM ஆனது ADDRESS, BALANCE, BLOCKHASH போன்ற பல தொகுதிச்சங்கிலி-குறிப்பிட்ட ஸ்டேக் செயல்பாடுகளையும் செயல்படுத்துகிறது. செயல்பாட்டுக் குறியீடு தொகுப்பில் TSTORE மற்றும் TLOAD ஆகியவையும் அடங்கும், இவை தற்காலிக சேமிப்பகத்திற்கான அணுகலை வழங்குகின்றன.
Ethereum EVM illustrated (புதிய தாவலில் திறக்கப்படும்)-லிருந்து தழுவப்பட்ட வரைபடங்கள்
EVM செயலாக்கங்கள்
EVM-இன் அனைத்து செயலாக்கங்களும் எத்திரியம் மஞ்சள் அறிக்கையில் விவரிக்கப்பட்டுள்ள விவரக்குறிப்பைக் கடைப்பிடிக்க வேண்டும்.
எத்திரியத்தின் பத்து வருட வரலாற்றில், EVM பல திருத்தங்களுக்கு உட்பட்டுள்ளது, மேலும் பல்வேறு நிரலாக்க மொழிகளில் EVM-இன் பல செயலாக்கங்கள் உள்ளன.
எத்திரியம் செயலாக்க கிளையண்டுகள் ஒரு EVM செயலாக்கத்தை உள்ளடக்கியுள்ளன. கூடுதலாக, பல தனித்த செயலாக்கங்கள் உள்ளன, அவற்றுள்:
- Py-EVM (புதிய தாவலில் திறக்கப்படும்) - Python
- evmone (புதிய தாவலில் திறக்கப்படும்) - C++
- ethereumjs-vm (புதிய தாவலில் திறக்கப்படும்) - JavaScript
- revm (புதிய தாவலில் திறக்கப்படும்) - Rust
மேலும் படிக்க
- எத்திரியம் மஞ்சள் அறிக்கை (புதிய தாவலில் திறக்கப்படும்)
- ஜெல்லோபேப்பர் (Jellopaper) அல்லது KEVM: K-இல் EVM-இன் சொற்பொருள் (புதிய தாவலில் திறக்கப்படும்)
- தி பீஜ்பேப்பர் (The Beigepaper) (புதிய தாவலில் திறக்கப்படும்)
- எத்திரியம் மெய்நிகர் இயந்திர செயல்பாட்டுக் குறியீடுகள் (புதிய தாவலில் திறக்கப்படும்)
- எத்திரியம் மெய்நிகர் இயந்திர செயல்பாட்டுக் குறியீடுகள் ஊடாடும் குறிப்பு (புதிய தாவலில் திறக்கப்படும்)
- Solidity ஆவணத்தில் ஒரு சிறிய அறிமுகம் (புதிய தாவலில் திறக்கப்படும்)
- மாஸ்டரிங் எத்திரியம் - எத்திரியம் மெய்நிகர் இயந்திரம் (புதிய தாவலில் திறக்கப்படும்)
தொடர்புடைய தலைப்புகள்
பயிற்சிகள்: எத்திரியம் மெய்நிகர் இயந்திரம் (EVM) / எத்திரியத்தில் செயல்பாட்டுக் குறியீடுகள்
- மஞ்சள் அறிக்கையின் EVM விவரக்குறிப்புகளைப் புரிந்துகொள்வது – எத்திரியம் மஞ்சள் அறிக்கையிலிருந்து முறையான EVM விவரக்குறிப்பின் வழிகாட்டப்பட்ட ஒத்திகை.
- ஒரு ஒப்பந்தத்தை ரிவர்ஸ் இன்ஜினியரிங் செய்தல் – EVM செயல்பாட்டுக் குறியீடுகளைப் பயன்படுத்தி தொகுக்கப்பட்ட திறன் ஒப்பந்தத்தை எவ்வாறு ரிவர்ஸ் இன்ஜினியரிங் செய்வது.