பிணைய அடுக்கு
எத்திரியம் என்பது ஆயிரக்கணக்கான கணுக்களைக் கொண்ட ஒரு சக-முனைய பிணையம் ஆகும், இவை தரப்படுத்தப்பட்ட நெறிமுறைகளைப் பயன்படுத்தி ஒன்றோடொன்று தொடர்பு கொள்ள வேண்டும். "பிணைய அடுக்கு" என்பது அந்தக் கணுக்கள் ஒன்றையொன்று கண்டறியவும் தகவல்களைப் பரிமாறிக் கொள்ளவும் அனுமதிக்கும் நெறிமுறைகளின் தொகுப்பாகும். இதில் பிணையம் முழுவதும் தகவல்களைப் "பரப்புதல்" (ஒன்றிலிருந்து பலவற்றுக்கான தொடர்பு) மற்றும் குறிப்பிட்ட கணுக்களுக்கு இடையே கோரிக்கைகள் மற்றும் பதில்களைப் பரிமாறிக் கொள்வது (ஒன்றிலிருந்து ஒன்றுக்கான தொடர்பு) ஆகியவை அடங்கும். சரியான தகவல்களை அனுப்புவதையும் பெறுவதையும் உறுதிசெய்ய ஒவ்வொரு கணுவும் குறிப்பிட்ட பிணைய விதிகளுக்குக் கட்டுப்பட வேண்டும்.
கிளையண்ட் மென்பொருளில் இரண்டு பகுதிகள் உள்ளன (செயலாக்கக் கிளையண்ட்கள் மற்றும் ஒருமித்த கிளையன்ட்கள்), ஒவ்வொன்றும் அதற்கென தனித்துவமான பிணைய அடுக்கைக் கொண்டுள்ளன. மற்ற எத்திரியம் கணுக்களுடன் தொடர்புகொள்வதோடு, செயலாக்கக் கிளையண்ட்களும் ஒருமித்த கிளையன்ட்களும் தங்களுக்குள்ளும் தொடர்பு கொள்ள வேண்டும். இந்தப் பக்கம் இந்தத் தொடர்பைச் சாத்தியமாக்கும் நெறிமுறைகள் பற்றிய அறிமுக விளக்கத்தை அளிக்கிறது.
செயலாக்கக் கிளையண்ட்கள் செயலாக்க அடுக்கு சக-முனைய பிணையத்தின் வழியாகப் பரிவர்த்தனைகளைப் பரப்புகின்றன. இதற்கு அங்கீகரிக்கப்பட்ட சகக்கணுக்களுக்கு இடையே மறைகுறியாக்கப்பட்ட தொடர்பு தேவைப்படுகிறது. ஒரு தொகுதியை முன்மொழிய ஒரு சரிபார்ப்பான் தேர்ந்தெடுக்கப்படும்போது, கணுவின் உள்ளூர் பரிவர்த்தனைத் தொகுப்பிலிருந்து பரிவர்த்தனைகள் உள்ளூர் RPC இணைப்பு வழியாக ஒருமித்த கிளையன்ட்களுக்கு அனுப்பப்படும், அவை பீக்கன் தொகுதிகளாகத் தொகுக்கப்படும். பின்னர் ஒருமித்த கிளையன்ட்கள் பீக்கன் தொகுதிகளைத் தங்கள் p2p பிணையம் முழுவதும் பரப்பும். இதற்கு இரண்டு தனித்தனி p2p பிணையங்கள் தேவை: ஒன்று பரிவர்த்தனைப் பரவலுக்காகச் செயலாக்கக் கிளையண்ட்களை இணைக்கிறது, மற்றொன்று தொகுதிப் பரவலுக்காக ஒருமித்த கிளையன்ட்களை இணைக்கிறது.
முன்நிபந்தனைகள்
இந்தப் பக்கத்தைப் புரிந்துகொள்ள எத்திரியம் கணுக்கள் மற்றும் கிளையண்ட்கள் பற்றிய சில அறிவைக் கொண்டிருப்பது உதவியாக இருக்கும்.
செயலாக்க அடுக்கு
செயலாக்க அடுக்கின் பிணைய நெறிமுறைகள் இரண்டு அடுக்குகளாகப் பிரிக்கப்பட்டுள்ளன:
-
கண்டறிதல் அடுக்கு: UDP-இன் மேல் கட்டமைக்கப்பட்டுள்ளது மற்றும் இணைக்க வேண்டிய சகக்கணுக்களைக் கண்டறிய ஒரு புதிய கணுவை அனுமதிக்கிறது
-
devp2p அடுக்கு: TCP-இன் மேல் அமர்ந்திருக்கிறது மற்றும் தகவல்களைப் பரிமாறிக் கொள்ளக் கணுக்களுக்கு உதவுகிறது
இரண்டு அடுக்குகளும் இணையாகச் செயல்படுகின்றன. கண்டறிதல் அடுக்கு புதிய பிணையப் பங்கேற்பாளர்களைப் பிணையத்திற்குள் கொண்டுவருகிறது, மேலும் devp2p அடுக்கு அவர்களின் தொடர்புகளைச் சாத்தியமாக்குகிறது.
கண்டறிதல்
கண்டறிதல் என்பது பிணையத்தில் உள்ள மற்ற கணுக்களைக் கண்டறியும் செயல்முறையாகும். இது ஒரு சிறிய அளவிலான தொடக்க முனைகளைப் பயன்படுத்தித் தொடங்கப்படுகிறது (கிளையண்ட்டில் முகவரிகள் ஹார்ட்கோட் (opens in a new tab) செய்யப்பட்ட கணுக்கள், இதனால் அவற்றை உடனடியாகக் கண்டறிந்து கிளையண்ட்டைச் சகக்கணுக்களுடன் இணைக்க முடியும்). இந்தத் தொடக்க முனைகள் ஒரு புதிய கணுவைச் சகக்கணுக்களின் குழுவிற்கு அறிமுகப்படுத்த மட்டுமே உள்ளன - இதுவே அவற்றின் ஒரே நோக்கமாகும், சங்கிலியை ஒத்திசைத்தல் போன்ற சாதாரண கிளையண்ட் பணிகளில் அவை பங்கேற்பதில்லை, மேலும் ஒரு கிளையண்ட் முதன்முதலில் தொடங்கப்படும்போது மட்டுமே அவை பயன்படுத்தப்படுகின்றன.
கணு-தொடக்க முனை தொடர்புகளுக்குப் பயன்படுத்தப்படும் நெறிமுறை Kademlia (opens in a new tab)-இன் மாற்றியமைக்கப்பட்ட வடிவமாகும், இது கணுக்களின் பட்டியல்களைப் பகிர ஒரு பகிர்ந்தளிக்கப்பட்ட ஹாஷ் அட்டவணையைப் (opens in a new tab) பயன்படுத்துகிறது. ஒவ்வொரு கணுவும் அதன் நெருக்கமான சகக்கணுக்களுடன் இணைக்கத் தேவையான தகவல்களைக் கொண்ட இந்த அட்டவணையின் ஒரு பதிப்பைக் கொண்டுள்ளது. இந்த 'நெருக்கம்' புவியியல் ரீதியானது அல்ல - தூரம் என்பது கணுவின் ஐடியின் ஒற்றுமையால் வரையறுக்கப்படுகிறது. பாதுகாப்பு அம்சமாக ஒவ்வொரு கணுவின் அட்டவணையும் தொடர்ந்து புதுப்பிக்கப்படுகிறது. எடுத்துக்காட்டாக, discv5 (opens in a new tab)-இல், கண்டறிதல் நெறிமுறைக் கணுக்கள் கிளையண்ட் ஆதரிக்கும் துணை நெறிமுறைகளைக் காண்பிக்கும் 'விளம்பரங்களை' அனுப்பவும் முடியும், இது சகக்கணுக்கள் தொடர்புகொள்ளப் பயன்படுத்தக்கூடிய நெறிமுறைகளைப் பற்றிப் பேரம் பேச அனுமதிக்கிறது.
கண்டறிதல் PING-PONG விளையாட்டுடன் தொடங்குகிறது. ஒரு வெற்றிகரமான PING-PONG புதிய கணுவை ஒரு தொடக்க முனையுடன் "பிணைக்கிறது". பிணையத்தில் நுழையும் புதிய கணுவின் இருப்பைப் பற்றித் தொடக்க முனைக்கு எச்சரிக்கும் ஆரம்பச் செய்தி PING ஆகும். இந்த PING புதிய கணு, தொடக்க முனை மற்றும் காலாவதி நேர முத்திரை பற்றிய ஹாஷ் செய்யப்பட்ட தகவல்களை உள்ளடக்கியது. தொடக்க முனை PING-ஐப் பெற்று, PING ஹாஷைக் கொண்ட PONG-ஐ வழங்குகிறது. PING மற்றும் PONG ஹாஷ்கள் பொருந்தினால், புதிய கணுவிற்கும் தொடக்க முனைக்கும் இடையிலான இணைப்பு சரிபார்க்கப்பட்டு அவை "பிணைக்கப்பட்டுள்ளன" என்று கூறப்படுகிறது.
பிணைக்கப்பட்டவுடன், புதிய கணு தொடக்க முனைக்கு ஒரு FIND-NEIGHBOURS கோரிக்கையை அனுப்ப முடியும். தொடக்க முனை வழங்கும் தரவுகளில் புதிய கணு இணைக்கக்கூடிய சகக்கணுக்களின் பட்டியல் அடங்கும். கணுக்கள் பிணைக்கப்படவில்லை என்றால், FIND-NEIGHBOURS கோரிக்கை தோல்வியடையும், எனவே புதிய கணுவால் பிணையத்தில் நுழைய முடியாது.
புதிய கணு தொடக்க முனையிலிருந்து அண்டை கணுக்களின் பட்டியலைப் பெற்றவுடன், அது அவை ஒவ்வொன்றுடனும் PING-PONG பரிமாற்றத்தைத் தொடங்குகிறது. வெற்றிகரமான PING-PONG-கள் புதிய கணுவை அதன் அண்டை கணுக்களுடன் பிணைத்து, செய்திப் பரிமாற்றத்தைச் சாத்தியமாக்குகின்றன.
கிளையண்ட்டைத் தொடங்கு --> தொடக்க முனையுடன் இணை --> தொடக்க முனையுடன் பிணை --> அண்டை கணுக்களைக் கண்டறி --> அண்டை கணுக்களுடன் பிணை
செயலாக்கக் கிளையண்ட்கள் தற்போது Discv4 (opens in a new tab) கண்டறிதல் நெறிமுறையைப் பயன்படுத்துகின்றன, மேலும் discv5 (opens in a new tab) நெறிமுறைக்கு மாறுவதற்கான தீவிர முயற்சி நடந்து வருகிறது.
ENR: எத்திரியம் கணுப் பதிவுகள்
எத்திரியம் கணுப் பதிவு (ENR) என்பது மூன்று அடிப்படை கூறுகளைக் கொண்ட ஒரு பொருளாகும்: ஒரு கையொப்பம் (ஏற்றுக்கொள்ளப்பட்ட அடையாளத் திட்டத்தின்படி உருவாக்கப்பட்ட பதிவு உள்ளடக்கங்களின் ஹாஷ்), பதிவில் ஏற்படும் மாற்றங்களைக் கண்காணிக்கும் ஒரு வரிசை எண் மற்றும் விசை:மதிப்பு ஜோடிகளின் தன்னிச்சையான பட்டியல். இது புதிய சகக்கணுக்களுக்கு இடையே அடையாளத் தகவல்களை எளிதாகப் பரிமாறிக் கொள்ள அனுமதிக்கும் எதிர்காலத்திற்கு ஏற்ற வடிவமைப்பாகும், மேலும் இது எத்திரியம் கணுக்களுக்கான விருப்பமான பிணைய முகவரி வடிவமைப்பாகும்.
கண்டறிதல் ஏன் UDP-இல் கட்டமைக்கப்பட்டுள்ளது?
UDP எந்தப் பிழை சரிபார்ப்பையும், தோல்வியுற்ற பாக்கெட்டுகளை மீண்டும் அனுப்புவதையும் அல்லது இணைப்புகளை மாறும் வகையில் திறப்பதையும் மூடுவதையும் ஆதரிக்காது - அதற்குப் பதிலாக அது வெற்றிகரமாகப் பெறப்பட்டதா என்பதைப் பொருட்படுத்தாமல், இலக்கை நோக்கித் தகவல்களின் தொடர்ச்சியான ஓட்டத்தை அனுப்புகிறது. இந்தக் குறைந்தபட்சச் செயல்பாடு குறைந்தபட்சச் சுமையாகவும் மாறுகிறது, இதனால் இந்த வகையான இணைப்பு மிகவும் வேகமாக இருக்கும். கண்டறிதலுக்கு, ஒரு கணு ஒரு சகக்கணுவுடன் முறையான இணைப்பை ஏற்படுத்துவதற்காகத் தனது இருப்பை வெளிப்படுத்த விரும்பும் போது, UDP போதுமானது. இருப்பினும், பிணைய அடுக்கின் மற்ற பகுதிகளுக்கு, UDP நோக்கத்திற்குப் பொருந்தாது. கணுக்களுக்கு இடையிலான தகவல் பரிமாற்றம் மிகவும் சிக்கலானது, எனவே மீண்டும் அனுப்புதல், பிழை சரிபார்த்தல் போன்றவற்றை ஆதரிக்கக்கூடிய முழுமையான அம்சங்களைக் கொண்ட நெறிமுறை தேவைப்படுகிறது. TCP-உடன் தொடர்புடைய கூடுதல் சுமை கூடுதல் செயல்பாட்டிற்கு மதிப்புள்ளது. எனவே, P2P அடுக்கின் பெரும்பகுதி TCP வழியாகச் செயல்படுகிறது.
devp2p
devp2p என்பது சக-முனைய பிணையத்தை நிறுவவும் பராமரிக்கவும் எத்திரியம் செயல்படுத்தும் நெறிமுறைகளின் முழுமையான அடுக்காகும். புதிய கணுக்கள் பிணையத்தில் நுழைந்த பிறகு, அவற்றின் தொடர்புகள் devp2p (opens in a new tab) அடுக்கில் உள்ள நெறிமுறைகளால் நிர்வகிக்கப்படுகின்றன. இவை அனைத்தும் TCP-இன் மேல் அமர்ந்திருக்கின்றன மற்றும் RLPx போக்குவரத்து நெறிமுறை, கம்பி நெறிமுறை (wire protocol) மற்றும் பல துணை நெறிமுறைகளை உள்ளடக்கியுள்ளன. RLPx (opens in a new tab) என்பது கணுக்களுக்கு இடையிலான அமர்வுகளைத் தொடங்குதல், அங்கீகரித்தல் மற்றும் பராமரித்தல் ஆகியவற்றை நிர்வகிக்கும் நெறிமுறையாகும். RLPx செய்திகளை RLP (Recursive Length Prefix) ஐப் பயன்படுத்தி குறியாக்குகிறது, இது கணுக்களுக்கு இடையே அனுப்புவதற்கான குறைந்தபட்ச கட்டமைப்பில் தரவைக் குறியாக்கம் செய்வதற்கான மிகவும் இட-திறனுள்ள முறையாகும்.
இரண்டு கணுக்களுக்கு இடையிலான RLPx அமர்வு ஆரம்பக் கிரிப்டோகிராஃபிக் கைகுலுக்கலுடன் தொடங்குகிறது. இதில் கணு ஒரு அங்கீகாரச் செய்தியை அனுப்புகிறது, அது பின்னர் சகக்கணுவால் சரிபார்க்கப்படுகிறது. வெற்றிகரமான சரிபார்ப்பின் போது, சகக்கணு தொடக்கக் கணுவிற்குத் திரும்ப ஒரு அங்கீகார-ஒப்புதல் செய்தியை உருவாக்குகிறது. இது கணுக்கள் தனிப்பட்ட முறையிலும் பாதுகாப்பாகவும் தொடர்புகொள்ள உதவும் ஒரு விசை-பரிமாற்றச் செயல்முறையாகும். ஒரு வெற்றிகரமான கிரிப்டோகிராஃபிக் கைகுலுக்கல் பின்னர் இரண்டு கணுக்களையும் ஒன்றோடொன்று "கம்பியில் (on the wire)" ஒரு "hello" செய்தியை அனுப்பத் தூண்டுகிறது. hello செய்திகளின் வெற்றிகரமான பரிமாற்றத்தால் கம்பி நெறிமுறை தொடங்கப்படுகிறது.
hello செய்திகள் பின்வருவனவற்றைக் கொண்டுள்ளன:
- நெறிமுறைப் பதிப்பு
- கிளையண்ட் ஐடி
- போர்ட்
- கணு ஐடி
- ஆதரிக்கப்படும் துணை நெறிமுறைகளின் பட்டியல்
வெற்றிகரமான தொடர்புக்குத் தேவையான தகவல் இதுவாகும், ஏனெனில் இது இரண்டு கணுக்களுக்கும் இடையே என்ன திறன்கள் பகிரப்படுகின்றன என்பதை வரையறுக்கிறது மற்றும் தொடர்பை உள்ளமைக்கிறது. துணை நெறிமுறைப் பேரம் பேசும் செயல்முறை உள்ளது, அங்கு ஒவ்வொரு கணுவும் ஆதரிக்கும் துணை நெறிமுறைகளின் பட்டியல்கள் ஒப்பிடப்படுகின்றன மற்றும் இரண்டு கணுக்களுக்கும் பொதுவானவை அமர்வில் பயன்படுத்தப்படலாம்.
hello செய்திகளுடன், கம்பி நெறிமுறை ஒரு "disconnect" செய்தியையும் அனுப்ப முடியும், இது இணைப்பு மூடப்படும் என்று ஒரு சகக்கணுவுக்கு எச்சரிக்கை அளிக்கிறது. கம்பி நெறிமுறையில் PING மற்றும் PONG செய்திகளும் அடங்கும், அவை அமர்வைத் திறந்து வைக்க அவ்வப்போது அனுப்பப்படுகின்றன. எனவே RLPx மற்றும் கம்பி நெறிமுறைப் பரிமாற்றங்கள் கணுக்களுக்கு இடையிலான தகவல்தொடர்புக்கான அடித்தளங்களை நிறுவுகின்றன, ஒரு குறிப்பிட்ட துணை நெறிமுறையின்படி பயனுள்ள தகவல்களைப் பரிமாறிக் கொள்வதற்கான சாரக்கட்டுகளை வழங்குகின்றன.
துணை நெறிமுறைகள்
கம்பி நெறிமுறை
சகக்கணுக்கள் இணைக்கப்பட்டு, RLPx அமர்வு தொடங்கப்பட்டவுடன், சகக்கணுக்கள் எவ்வாறு தொடர்புகொள்கின்றன என்பதைக் கம்பி நெறிமுறை வரையறுக்கிறது. ஆரம்பத்தில், கம்பி நெறிமுறை மூன்று முக்கிய பணிகளை வரையறுத்தது: சங்கிலி ஒத்திசைவு, தொகுதிப் பரவல் மற்றும் பரிவர்த்தனைப் பரிமாற்றம். இருப்பினும், எத்திரியம் உரிமைச் சான்றுக்கு (PoS) மாறியவுடன், தொகுதிப் பரவல் மற்றும் சங்கிலி ஒத்திசைவு ஆகியவை கருத்தொருமிப்பு அடுக்கின் ஒரு பகுதியாக மாறின. பரிவர்த்தனைப் பரிமாற்றம் இன்னும் செயலாக்கக் கிளையண்ட்களின் வரம்பிற்குள் உள்ளது. பரிவர்த்தனைப் பரிமாற்றம் என்பது கணுக்களுக்கு இடையே நிலுவையில் உள்ள பரிவர்த்தனைகளைப் பரிமாறிக் கொள்வதைக் குறிக்கிறது, இதனால் தொகுதி உருவாக்குபவர்கள் அடுத்த தொகுதியில் சேர்ப்பதற்கு அவற்றில் சிலவற்றைத் தேர்ந்தெடுக்கலாம். இந்தப் பணிகள் பற்றிய விரிவான தகவல்கள் இங்கே (opens in a new tab) கிடைக்கின்றன. இந்தத் துணை நெறிமுறைகளை ஆதரிக்கும் கிளையண்ட்கள் அவற்றை ஜேசன்-ஆர்பிசி வழியாக வெளிப்படுத்துகின்றன.
les (இலகுரக எத்திரியம் துணை நெறிமுறை)
இது இலகுரக கிளையண்ட்களை ஒத்திசைப்பதற்கான குறைந்தபட்ச நெறிமுறையாகும். பாரம்பரியமாக இந்த நெறிமுறை அரிதாகவே பயன்படுத்தப்படுகிறது, ஏனெனில் முழு கணுக்கள் ஊக்கமளிக்கப்படாமல் இலகுரக கிளையண்ட்களுக்குத் தரவை வழங்க வேண்டும். செயலாக்கக் கிளையண்ட்களின் இயல்புநிலை நடத்தை les வழியாக இலகுரக கிளையண்ட் தரவை வழங்குவது அல்ல. மேலும் தகவல்கள் les விவரக்குறிப்பில் (opens in a new tab) கிடைக்கின்றன.
Snap
snap நெறிமுறை (opens in a new tab) என்பது ஒரு விருப்ப நீட்டிப்பாகும், இது சமீபத்திய நிலைகளின் ஸ்னாப்ஷாட்களைப் பரிமாறிக் கொள்ளச் சகக்கணுக்களை அனுமதிக்கிறது, இடைநிலை மெர்க்கல் ட்ரை (Merkle trie) கணுக்களைப் பதிவிறக்காமலேயே கணக்கு மற்றும் சேமிப்பகத் தரவைச் சரிபார்க்கச் சகக்கணுக்களை அனுமதிக்கிறது.
Wit (சான்று நெறிமுறை)
சான்று நெறிமுறை (opens in a new tab) என்பது ஒரு விருப்ப நீட்டிப்பாகும், இது சகக்கணுக்களுக்கு இடையே நிலைச் சான்றுகளைப் பரிமாறிக் கொள்ள உதவுகிறது, சங்கிலியின் முனைக்குக் கிளையண்ட்களை ஒத்திசைக்க உதவுகிறது.
Whisper
Whisper என்பது தொகுதிச்சங்கிலியில் எந்தத் தகவலையும் எழுதாமல் சகக்கணுக்களுக்கு இடையே பாதுகாப்பான செய்தியிடலை வழங்குவதை நோக்கமாகக் கொண்ட ஒரு நெறிமுறையாகும். இது devp2p கம்பி நெறிமுறையின் ஒரு பகுதியாக இருந்தது, ஆனால் இப்போது கைவிடப்பட்டுள்ளது. இதே போன்ற நோக்கங்களுடன் பிற தொடர்புடைய திட்டங்கள் (opens in a new tab) உள்ளன.
கருத்தொருமிப்பு அடுக்கு
ஒருமித்த கிளையன்ட்கள் வேறுபட்ட விவரக்குறிப்புடன் தனிச் சக-முனைய பிணையத்தில் பங்கேற்கின்றன. ஒருமித்த கிளையன்ட்கள் தொகுதிப் பரவலில் பங்கேற்க வேண்டும், இதனால் அவை சகக்கணுக்களிடமிருந்து புதிய தொகுதிகளைப் பெறலாம் மற்றும் தொகுதி முன்மொழிபவராகத் தங்கள் முறை வரும்போது அவற்றைப் பரப்பலாம். செயலாக்க அடுக்கைப் போலவே, இதற்கும் முதலில் ஒரு கண்டறிதல் நெறிமுறை தேவைப்படுகிறது, இதனால் ஒரு கணு சகக்கணுக்களைக் கண்டறியலாம் மற்றும் தொகுதிகள், சான்றளிப்புகள் போன்றவற்றைப் பரிமாறிக் கொள்வதற்கான பாதுகாப்பான அமர்வுகளை நிறுவலாம்.
கண்டறிதல்
செயலாக்கக் கிளையண்ட்களைப் போலவே, ஒருமித்த கிளையன்ட்களும் சகக்கணுக்களைக் கண்டறிய UDP வழியாக discv5 (opens in a new tab)-ஐப் பயன்படுத்துகின்றன. discv5-இன் கருத்தொருமிப்பு அடுக்குச் செயலாக்கம் செயலாக்கக் கிளையண்ட்களிலிருந்து வேறுபடுகிறது, இதில் discv5-ஐ libp2p (opens in a new tab) அடுக்குடன் இணைக்கும் ஒரு அடாப்டர் அடங்கும், இது devp2p-ஐக் கைவிடுகிறது. செயலாக்க அடுக்கின் RLPx அமர்வுகள் libp2p-இன் noise பாதுகாப்பான சேனல் கைகுலுக்கலுக்கு ஆதரவாகக் கைவிடப்படுகின்றன.
ENR-கள்
ஒருமித்த கணுக்களுக்கான ENR-இல் கணுவின் பொது விசை, IP முகவரி, UDP மற்றும் TCP போர்ட்கள் மற்றும் இரண்டு கருத்தொருமிப்பு-குறிப்பிட்ட புலங்கள் அடங்கும்: சான்றளிப்பு சப்நெட் பிட்ஃபீல்ட் மற்றும் eth2 விசை. முந்தையது குறிப்பிட்ட சான்றளிப்புப் பரவல் துணைப் பிணையங்களில் பங்கேற்கும் சகக்கணுக்களைக் கணுக்கள் கண்டறிவதை எளிதாக்குகிறது. eth2 விசை கணு எந்த எத்திரியம் கவைப் பதிப்பைப் பயன்படுத்துகிறது என்பது பற்றிய தகவலைக் கொண்டுள்ளது, சகக்கணுக்கள் சரியான எத்திரியத்துடன் இணைக்கப்படுவதை உறுதிசெய்கிறது.
libp2p
கண்டறிதலுக்குப் பிந்தைய அனைத்துத் தொடர்புகளையும் libp2p அடுக்கு ஆதரிக்கிறது. கிளையண்ட்கள் தங்கள் ENR-இல் வரையறுக்கப்பட்டுள்ளபடி IPv4 மற்றும்/அல்லது IPv6-இல் டயல் செய்யலாம் மற்றும் கேட்கலாம். libp2p அடுக்கில் உள்ள நெறிமுறைகளைப் பரவல் மற்றும் கோரிக்கை/பதில் (req/resp) களங்களாகப் பிரிக்கலாம்.
பரவல்
பரவல் களத்தில் பிணையம் முழுவதும் வேகமாகப் பரவ வேண்டிய அனைத்துத் தகவல்களும் அடங்கும். இதில் பீக்கன் தொகுதிகள், சான்றுகள், சான்றளிப்புகள், வெளியேற்றங்கள் மற்றும் அபராதங்கள் (slashings) ஆகியவை அடங்கும். இது libp2p gossipsub v1-ஐப் பயன்படுத்திப் பரப்பப்படுகிறது மற்றும் பெறவும் அனுப்பவும் வேண்டிய பரவல் சுமைகளின் அதிகபட்ச அளவு உட்பட ஒவ்வொரு கணுவிலும் உள்ளூரில் சேமிக்கப்படும் பல்வேறு மீத்தரவுகளைச் சார்ந்துள்ளது. பரவல் களம் பற்றிய விரிவான தகவல்கள் இங்கே (opens in a new tab) கிடைக்கின்றன.
கோரிக்கை-பதில்
கோரிக்கை-பதில் களத்தில் கிளையண்ட்கள் தங்கள் சகக்கணுக்களிடமிருந்து குறிப்பிட்ட தகவலைக் கோருவதற்கான நெறிமுறைகள் உள்ளன. சில ரூட் ஹாஷ்களுடன் பொருந்தக்கூடிய அல்லது ஸ்லாட்டுகளின் வரம்பிற்குள் உள்ள குறிப்பிட்ட பீக்கன் தொகுதிகளைக் கோருவது எடுத்துக்காட்டுகளில் அடங்கும். பதில்கள் எப்போதும் snappy-சுருக்கப்பட்ட SSZ குறியாக்கம் செய்யப்பட்ட பைட்டுகளாகவே வழங்கப்படுகின்றன.
ஒருமித்த கிளையன்ட் RLP-ஐ விட SSZ-ஐ ஏன் விரும்புகிறது?
SSZ என்பது எளிய வரிசைப்படுத்தலைக் (simple serialization) குறிக்கிறது. இது நிலையான ஆஃப்செட்களைப் பயன்படுத்துகிறது, இது முழு கட்டமைப்பையும் குறிவிலக்காமல் குறியாக்கம் செய்யப்பட்ட செய்தியின் தனிப்பட்ட பகுதிகளைக் குறிவிலக்குவதை எளிதாக்குகிறது, இது ஒருமித்த கிளையன்ட்டிற்கு மிகவும் பயனுள்ளதாக இருக்கும், ஏனெனில் இது குறியாக்கம் செய்யப்பட்ட செய்திகளிலிருந்து குறிப்பிட்ட தகவல்களைத் திறமையாகப் பெற முடியும். இது மெர்க்கல் நெறிமுறைகளுடன் ஒருங்கிணைக்கக் குறிப்பாக வடிவமைக்கப்பட்டுள்ளது, மெர்க்கலைசேஷனுக்கான (Merkleization) தொடர்புடைய திறன் மேம்பாடுகளுடன். கருத்தொருமிப்பு அடுக்கில் உள்ள அனைத்து ஹாஷ்களும் மெர்க்கல் ரூட்கள் என்பதால், இது ஒரு குறிப்பிடத்தக்க மேம்பாட்டைச் சேர்க்கிறது. SSZ மதிப்புகளின் தனித்துவமான பிரதிநிதித்துவங்களுக்கும் உத்தரவாதம் அளிக்கிறது.
செயலாக்க மற்றும் ஒருமித்த கிளையன்ட்களை இணைத்தல்
ஒருமித்த மற்றும் செயலாக்கக் கிளையண்ட்கள் இரண்டும் இணையாக இயங்குகின்றன. அவை இணைக்கப்பட வேண்டும், இதனால் ஒருமித்த கிளையன்ட் செயலாக்கக் கிளையண்ட்டிற்கு வழிமுறைகளை வழங்க முடியும், மேலும் செயலாக்கக் கிளையண்ட் பீக்கன் தொகுதிகளில் சேர்ப்பதற்காகப் பரிவர்த்தனைகளின் தொகுப்புகளை ஒருமித்த கிளையன்ட்டிற்கு அனுப்ப முடியும். இரண்டு கிளையண்ட்களுக்கும் இடையிலான தொடர்பை உள்ளூர் RPC இணைப்பைப் பயன்படுத்தி அடையலாம். 'Engine-API' (opens in a new tab) எனப்படும் API இரண்டு கிளையண்ட்களுக்கும் இடையே அனுப்பப்படும் வழிமுறைகளை வரையறுக்கிறது. இரண்டு கிளையண்ட்களும் ஒரே பிணைய அடையாளத்தின் பின்னால் அமர்ந்திருப்பதால், அவை ஒரு ENR-ஐப் (எத்திரியம் கணுப் பதிவு) பகிர்ந்து கொள்கின்றன, இது ஒவ்வொரு கிளையண்ட்டிற்கும் (எத்1 விசை மற்றும் எத்2 விசை) தனித்தனி விசையைக் கொண்டுள்ளது.
கட்டுப்பாட்டு ஓட்டத்தின் சுருக்கம் கீழே காட்டப்பட்டுள்ளது, அடைப்புக்குறிக்குள் தொடர்புடைய பிணைய அடுக்கு உள்ளது.
ஒருமித்த கிளையன்ட் தொகுதி உற்பத்தியாளராக இல்லாதபோது:
- ஒருமித்த கிளையன்ட் தொகுதிப் பரவல் நெறிமுறை (கருத்தொருமிப்பு p2p) வழியாக ஒரு தொகுதியைப் பெறுகிறது
- ஒருமித்த கிளையன்ட் தொகுதியை முன்கூட்டியே சரிபார்க்கிறது, அதாவது, சரியான மீத்தரவுகளுடன் சரியான அனுப்புநரிடமிருந்து அது வந்ததா என்பதை உறுதிசெய்கிறது
- தொகுதியில் உள்ள பரிவர்த்தனைகள் செயலாக்க அடுக்கிற்குச் செயலாக்கச் சுமையாக அனுப்பப்படுகின்றன (உள்ளூர் RPC இணைப்பு)
- செயலாக்க அடுக்கு பரிவர்த்தனைகளைச் செயல்படுத்துகிறது மற்றும் தொகுதித் தலைப்பில் உள்ள நிலையைச் சரிபார்க்கிறது (அதாவது, ஹாஷ்கள் பொருந்துகிறதா எனச் சரிபார்க்கிறது)
- செயலாக்க அடுக்கு சரிபார்ப்புத் தரவைக் கருத்தொருமிப்பு அடுக்கிற்குத் திருப்பி அனுப்புகிறது, தொகுதி இப்போது சரிபார்க்கப்பட்டதாகக் கருதப்படுகிறது (உள்ளூர் RPC இணைப்பு)
- கருத்தொருமிப்பு அடுக்குத் தொகுதியைத் தனது சொந்தத் தொகுதிச்சங்கிலியின் தலையில் சேர்க்கிறது மற்றும் அதற்குச் சான்றளிக்கிறது, பிணையம் முழுவதும் சான்றளிப்பைப் பரப்புகிறது (கருத்தொருமிப்பு p2p)
ஒருமித்த கிளையன்ட் தொகுதி உற்பத்தியாளராக இருக்கும்போது:
- ஒருமித்த கிளையன்ட் அடுத்த தொகுதி உற்பத்தியாளர் என்ற அறிவிப்பைப் பெறுகிறது (கருத்தொருமிப்பு p2p)
- கருத்தொருமிப்பு அடுக்குச் செயலாக்கக் கிளையண்ட்டில்
create blockமுறையை அழைக்கிறது (உள்ளூர் RPC) - செயலாக்க அடுக்கு பரிவர்த்தனைப் பரவல் நெறிமுறையால் (செயலாக்க p2p) நிரப்பப்பட்ட பரிவர்த்தனை மெம்பூலை அணுகுகிறது
- செயலாக்கக் கிளையண்ட் பரிவர்த்தனைகளை ஒரு தொகுதியாகத் தொகுக்கிறது, பரிவர்த்தனைகளைச் செயல்படுத்துகிறது மற்றும் ஒரு தொகுதி ஹாஷை உருவாக்குகிறது
- ஒருமித்த கிளையன்ட் செயலாக்கக் கிளையண்ட்டிலிருந்து பரிவர்த்தனைகள் மற்றும் தொகுதி ஹாஷைப் பெற்று அவற்றை பீக்கன் தொகுதியில் சேர்க்கிறது (உள்ளூர் RPC)
- ஒருமித்த கிளையன்ட் தொகுதிப் பரவல் நெறிமுறை வழியாகத் தொகுதியைப் பரப்புகிறது (கருத்தொருமிப்பு p2p)
- மற்ற கிளையண்ட்கள் தொகுதிப் பரவல் நெறிமுறை வழியாக முன்மொழியப்பட்ட தொகுதியைப் பெறுகின்றன மற்றும் மேலே விவரிக்கப்பட்டுள்ளபடி சரிபார்க்கின்றன (கருத்தொருமிப்பு p2p)
போதுமான சரிபார்ப்பான்களால் தொகுதி சான்றளிக்கப்பட்டவுடன், அது சங்கிலியின் தலையில் சேர்க்கப்பட்டு, நியாயப்படுத்தப்பட்டு, இறுதியில் இறுதியாக்கப்படுகிறது.
ஒருமித்த மற்றும் செயலாக்கக் கிளையண்ட்களுக்கான பிணைய அடுக்கு வரைபடம், ethresear.ch (opens in a new tab) இலிருந்து
மேலும் படிக்க
devp2p (opens in a new tab) libp2p (opens in a new tab) கருத்தொருமிப்பு அடுக்கு பிணைய விவரக்குறிப்புகள் (opens in a new tab) kademlia முதல் discv5 வரை (opens in a new tab) kademlia கட்டுரை (opens in a new tab) எத்திரியம் p2p அறிமுகம் (opens in a new tab) எத்1/எத்2 உறவு (opens in a new tab) ஒருங்கிணைப்பு மற்றும் எத்2 கிளையண்ட் விவரங்கள் காணொளி (opens in a new tab)

