Monero blockchain பற்றிய தொடர்களை நாங்கள் தொடர்கிறோம், இன்றைய கட்டுரை RingCT (ரிங் கான்ஃபிடன்ஷியல் பரிவர்த்தனைகள்) நெறிமுறையில் கவனம் செலுத்துகிறது, இது ரகசிய பரிவர்த்தனைகள் மற்றும் புதிய மோதிர கையொப்பங்களை அறிமுகப்படுத்துகிறது. துரதிர்ஷ்டவசமாக, இது எவ்வாறு செயல்படுகிறது என்பது பற்றி இணையத்தில் சிறிய தகவல்கள் உள்ளன, மேலும் இந்த இடைவெளியை நிரப்ப முயற்சித்தோம்.
நெட்வொர்க் இந்த நெறிமுறையைப் பயன்படுத்தி பரிமாற்றத் தொகையை எவ்வாறு மறைக்கிறது, கிளாசிக் கிரிப்டோனோட் ரிங் கையொப்பங்களை ஏன் கைவிட்டது மற்றும் இந்த தொழில்நுட்பம் எவ்வாறு மேலும் வளரும் என்பதைப் பற்றி பேசுவோம்.
இந்த நெறிமுறை மோனெரோவில் உள்ள மிகவும் சிக்கலான தொழில்நுட்பங்களில் ஒன்றாக இருப்பதால், வாசகருக்கு இந்த பிளாக்செயினின் வடிவமைப்பு பற்றிய அடிப்படை அறிவும் நீள்வட்ட வளைவு குறியாக்கவியலின் தேர்ச்சி அறிவும் தேவைப்படும் (இந்த அறிவை துலக்குவதற்கு, நீங்கள் எங்கள் முதல் அத்தியாயங்களைப் படிக்கலாம். பற்றி முந்தைய கட்டுரை
RingCT நெறிமுறை
கிரிப்டோனோட் நாணயங்கள் மீதான சாத்தியமான தாக்குதல்களில் ஒன்று, அனுப்பப்பட்ட பரிவர்த்தனையின் அளவு மற்றும் நேரத்தைப் பற்றிய அறிவின் அடிப்படையில் பிளாக்செயின் பகுப்பாய்வு ஆகும். இது அனுமதிக்கிறது
தொகையை மறைக்கும் யோசனை புதியதல்ல என்பது கவனிக்கத்தக்கது. பிட்காயின் கோர் டெவலப்பர் கிரெக் மேக்ஸ்வெல் அதை முதலில் விவரித்தவர்களில் ஒருவர்
மற்றவற்றுடன், நெறிமுறை தூசி வெளியீடுகளைக் கலப்பதில் உள்ள சிக்கல்களிலிருந்து விடுபட உதவுகிறது - ஒரு சிறிய அளவு வெளியீடுகள் (வழக்கமாக பரிவர்த்தனைகளிலிருந்து மாற்றத்தின் வடிவத்தில் பெறப்படுகின்றன), அவை மதிப்புள்ளதை விட அதிகமான சிக்கல்களை உருவாக்கியது.
ஜனவரி 2017 இல், Monero நெட்வொர்க்கின் கடினமான முட்கரண்டி நடந்தது, இது ரகசிய பரிவர்த்தனைகளை விருப்பமாக பயன்படுத்த அனுமதிக்கிறது. ஏற்கனவே அதே ஆண்டு செப்டம்பரில், பதிப்பு 6 ஹார்ட் ஃபோர்க் மூலம், அத்தகைய பரிவர்த்தனைகள் நெட்வொர்க்கில் மட்டுமே அனுமதிக்கப்பட்டன.
RingCT ஒரே நேரத்தில் பல வழிமுறைகளைப் பயன்படுத்துகிறது: பல அடுக்கு இணைக்கப்பட்ட தன்னிச்சையான அநாமதேய குழு கையொப்பங்கள் (மல்டிலேயர்டு இணைக்கக்கூடிய தன்னிச்சையான அநாமதேய குழு கையொப்பம், இனி MLSAG என குறிப்பிடப்படுகிறது), ஒரு அர்ப்பணிப்பு திட்டம் (Pedersen Commitments) மற்றும் வரம்பு சான்றுகள் (இந்த வார்த்தைக்கு ரஷ்ய மொழியில் நிறுவப்பட்ட மொழிபெயர்ப்பு இல்லை) .
RingCT நெறிமுறை இரண்டு வகையான அநாமதேய பரிவர்த்தனைகளை அறிமுகப்படுத்துகிறது: எளிய மற்றும் முழு. ஒரு பரிவர்த்தனை ஒன்றுக்கு மேற்பட்ட உள்ளீடுகளைப் பயன்படுத்தும் போது பணப்பையை முதலில் உருவாக்குகிறது, இரண்டாவது - எதிர் சூழ்நிலையில். பரிவர்த்தனை தொகைகளின் சரிபார்ப்பு மற்றும் MLSAG கையொப்பத்துடன் கையொப்பமிடப்பட்ட தரவு ஆகியவற்றில் அவை வேறுபடுகின்றன (இதைப் பற்றி மேலும் கீழே பேசுவோம்). மேலும், முழு வகையிலான பரிவர்த்தனைகளை எத்தனை உள்ளீடுகள் மூலம் உருவாக்க முடியும், எந்த அடிப்படை வேறுபாடும் இல்லை. புத்தகத்தில்
MLSAG கையெழுத்து
கையொப்பமிடப்பட்ட பரிவர்த்தனை உள்ளீடுகள் என்ன என்பதை நினைவில் கொள்வோம். ஒவ்வொரு பரிவர்த்தனையும் சில நிதிகளை செலவழித்து உருவாக்குகிறது. பரிவர்த்தனை வெளியீடுகளை உருவாக்குவதன் மூலம் நிதி உருவாக்கம் நிகழ்கிறது (ஒரு நேரடி ஒப்புமை பில்கள்), மற்றும் பரிவர்த்தனை செலவிடும் வெளியீடு (எல்லாவற்றிற்கும் மேலாக, நிஜ வாழ்க்கையில் நாம் ரூபாய் நோட்டுகளை செலவிடுகிறோம்) உள்ளீடாக மாறும் (கவனமாக இருங்கள், குழப்பமடைவது மிகவும் எளிதானது. இங்கே).
ஒரு உள்ளீடு பல வெளியீடுகளைக் குறிப்பிடுகிறது, ஆனால் ஒன்றை மட்டுமே செலவிடுகிறது, இதனால் மொழிபெயர்ப்பு வரலாற்றை பகுப்பாய்வு செய்வதை கடினமாக்குவதற்கு "புகைத்திரை" உருவாக்கப்படுகிறது. ஒரு பரிவர்த்தனை ஒன்றுக்கு மேற்பட்ட உள்ளீடுகளைக் கொண்டிருந்தால், அத்தகைய கட்டமைப்பை மேட்ரிக்ஸாகக் குறிப்பிடலாம், அங்கு வரிசைகள் உள்ளீடுகளாகவும், நெடுவரிசைகள் கலப்பு வெளியீடுகளாகவும் இருக்கும். பரிவர்த்தனை அதன் வெளியீடுகளைச் சரியாகச் செலவிடுகிறது என்பதை நெட்வொர்க்கிற்கு நிரூபிக்க (அவற்றின் ரகசிய விசைகள் தெரியும்), உள்ளீடுகள் ஒரு மோதிர கையொப்பத்துடன் கையொப்பமிடப்படுகின்றன. அத்தகைய கையொப்பம், கையொப்பமிட்டவருக்கு எந்தவொரு நெடுவரிசையின் அனைத்து உறுப்புகளுக்கும் ரகசிய விசைகள் தெரியும் என்று உத்தரவாதம் அளிக்கிறது.
ரகசிய பரிவர்த்தனைகள் இனி கிளாசிக் ஒன்றைப் பயன்படுத்தாது
அவை பல அடுக்குகள் என்று அழைக்கப்படுகின்றன, ஏனெனில் அவை ஒரே நேரத்தில் பல உள்ளீடுகளில் கையொப்பமிடப்படுகின்றன, அவை ஒவ்வொன்றும் பலவற்றுடன் கலக்கப்படுகின்றன, அதாவது ஒரு மேட்ரிக்ஸ் கையொப்பமிடப்பட்டுள்ளது, ஒரு வரிசையில் அல்ல. நாம் பின்னர் பார்ப்போம், இது கையொப்ப அளவை சேமிக்க உதவுகிறது.
2 உண்மையான வெளியீடுகளைச் செலவழித்து, பிளாக்செயினில் இருந்து m - 1 ரேண்டம் ஒன்றைப் பயன்படுத்தி கலக்கும் பரிவர்த்தனையின் உதாரணத்தைப் பயன்படுத்தி, மோதிரக் கையொப்பம் எவ்வாறு உருவாகிறது என்பதைப் பார்ப்போம். நாம் செலவிடும் வெளியீடுகளின் பொது விசைகளைக் குறிப்போம்
, மற்றும் அதற்கேற்ப அவர்களுக்கான முக்கிய படங்கள்: இவ்வாறு, நாம் அளவு மேட்ரிக்ஸைப் பெறுகிறோம் 2 x மீ. முதலில், ஒவ்வொரு ஜோடி வெளியீடுகளுக்கும் சவால்கள் என்று அழைக்கப்படுவதைக் கணக்கிட வேண்டும்:
வெளியீடுகளுடன் கணக்கீடுகளைத் தொடங்குகிறோம், அவற்றின் பொது விசைகளைப் பயன்படுத்தி நாங்கள் செலவிடுகிறோம்:மற்றும் சீரற்ற எண்கள்இதன் விளைவாக, பின்வரும் மதிப்புகளைப் பெறுகிறோம்:
, சவாலைக் கணக்கிடப் பயன்படுத்துகிறோம்
அடுத்த ஜோடி வெளியீடுகள் (எங்கே எதை மாற்றுகிறோம் என்பதைப் புரிந்துகொள்வதை எளிதாக்க, இந்த மதிப்புகளை வெவ்வேறு வண்ணங்களில் முன்னிலைப்படுத்தியுள்ளோம்). பின்வரும் அனைத்து மதிப்புகளும் முதல் விளக்கத்தில் கொடுக்கப்பட்ட சூத்திரங்களைப் பயன்படுத்தி ஒரு வட்டத்தில் கணக்கிடப்படுகின்றன. கணக்கிட வேண்டிய கடைசி விஷயம் ஒரு ஜோடி உண்மையான வெளியீடுகளுக்கான சவாலாகும்.
நாம் பார்க்கிறபடி, உண்மையான வெளியீடுகளைத் தவிர அனைத்து நெடுவரிசைகளும் தோராயமாக உருவாக்கப்பட்ட எண்களைப் பயன்படுத்துகின்றன. ஐந்து π- நெடுவரிசை எங்களுக்கும் அவை தேவைப்படும். மாற்றுவோம்களில்:
கையொப்பமே இந்த மதிப்புகள் அனைத்தின் டூப்பிள் ஆகும்:
இந்தத் தரவு பின்னர் ஒரு பரிவர்த்தனையாக எழுதப்படுகிறது.
நாம் பார்க்கிறபடி, MLSAG ஒரே ஒரு சவாலை மட்டுமே கொண்டுள்ளது c0, இது கையொப்பத்தின் அளவை சேமிக்க உங்களை அனுமதிக்கிறது (இதற்கு ஏற்கனவே நிறைய இடம் தேவைப்படுகிறது). மேலும், எந்த இன்ஸ்பெக்டரும், தரவைப் பயன்படுத்தி, c1,..., cm மதிப்புகளை மீட்டமைத்து அதை சரிபார்க்கிறது. இதனால், எங்கள் மோதிரம் மூடப்பட்டு கையொப்பம் சரிபார்க்கப்பட்டது.
முழு வகை RingCT பரிவர்த்தனைகளுக்கு, கலப்பு வெளியீடுகளுடன் மேட்ரிக்ஸில் மேலும் ஒரு வரி சேர்க்கப்படுகிறது, ஆனால் இதைப் பற்றி கீழே பேசுவோம்.
பெடர்சன் உறுதிமொழிகள்
மோனெரோ கமிட்மென்ட்கள், இடமாற்றங்களின் அளவை மறைக்க மற்றும் மிகவும் பொதுவான விருப்பத்தைப் பயன்படுத்துகின்றன - பெடர்சன் உறுதிப்பாடுகள். மூலம், ஒரு சுவாரஸ்யமான உண்மை - முதலில் டெவலப்பர்கள் சாதாரண கலவை மூலம் அளவுகளை மறைக்க முன்மொழிந்தனர், அதாவது, நிச்சயமற்ற தன்மையை அறிமுகப்படுத்துவதற்காக தன்னிச்சையான அளவுகளுக்கான வெளியீடுகளைச் சேர்ப்பது, ஆனால் அவர்கள் கடமைகளுக்கு மாறினார்கள் (அவர்கள் சேமித்தது உண்மையல்ல. பரிவர்த்தனை அளவு, நாம் கீழே பார்ப்போம்).
பொதுவாக, அர்ப்பணிப்பு இதுபோல் தெரிகிறது:
எங்கே C - அர்ப்பணிப்பின் அர்த்தம், a - மறைக்கப்பட்ட தொகை, H நீள்வட்ட வளைவில் ஒரு நிலையான புள்ளி (கூடுதல் ஜெனரேட்டர்), மற்றும் x - ஒருவித தன்னிச்சையான முகமூடி, தோராயமாக உருவாக்கப்பட்ட மறைக்கும் காரணி. அர்ப்பணிப்பின் மதிப்பை மூன்றாம் தரப்பினரால் யூகிக்க முடியாத வகையில் இங்கு முகமூடி தேவைப்படுகிறது.
ஒரு புதிய வெளியீடு உருவாக்கப்படும்போது, பணப்பையானது அதற்கான அர்ப்பணிப்பைக் கணக்கிடுகிறது, செலவழிக்கும்போது, பரிவர்த்தனையின் வகையைப் பொறுத்து, தலைமுறையின் போது கணக்கிடப்பட்ட மதிப்பை அல்லது மீண்டும் கணக்கிடுகிறது.
RingCT எளிமையானது
எளிமையான RingCT பரிவர்த்தனைகளின் விஷயத்தில், பரிவர்த்தனை உள்ளீடுகளின் அளவிற்கு சமமான அளவு வெளியீடுகளை உருவாக்குவதை உறுதி செய்வதற்காக (மெல்லிய காற்றில் இருந்து பணத்தை உற்பத்தி செய்யவில்லை), முதல் மற்றும் இரண்டாவது கடமைகளின் கூட்டுத்தொகை அவசியம். அவை ஒரே மாதிரியாக இருக்கும், அதாவது:
அர்ப்பணிப்பு கமிஷன்கள் இதை சற்று வித்தியாசமாக கருதுகின்றன - முகமூடி இல்லாமல்:
அங்கு a - கமிஷன் தொகை, அது பொதுவில் கிடைக்கும்.
இந்த அணுகுமுறையானது, நம்பியிருக்கும் தரப்பினருக்கு வெளிப்படுத்தாமல், அதே அளவுகளை நாங்கள் பயன்படுத்துகிறோம் என்பதை நிரூபிக்க அனுமதிக்கிறது.
விஷயங்களை தெளிவுபடுத்த, ஒரு உதாரணத்தைப் பார்ப்போம். ஒரு பரிவர்த்தனை 10 மற்றும் 5 XMR இன் இரண்டு வெளியீடுகளை (அதாவது அவை உள்ளீடுகளாக மாறும்) செலவழிக்கிறது மற்றும் 12 XMR மதிப்புள்ள மூன்று வெளியீடுகளை உருவாக்குகிறது: 3, 4 மற்றும் 5 XMR. அதே நேரத்தில், அவர் 3 எக்ஸ்எம்ஆர் கமிஷனை செலுத்துகிறார். இவ்வாறு, செலவழிக்கப்பட்ட பணத்தின் அளவு மற்றும் உருவாக்கப்பட்ட தொகை மற்றும் கமிஷன் 15 XMR க்கு சமம். கடமைகளைக் கணக்கிட முயற்சிப்போம் மற்றும் அவற்றின் அளவுகளில் உள்ள வித்தியாசத்தைப் பார்ப்போம் (கணிதத்தை நினைவில் கொள்ளுங்கள்):
சமன்பாடு ஒன்றிணைவதற்கு, உள்ளீடு மற்றும் வெளியீட்டு முகமூடிகளின் தொகைகள் ஒரே மாதிரியாக இருக்க வேண்டும் என்பதை இங்கே காண்கிறோம். இதைச் செய்ய, பணப்பை தோராயமாக உருவாக்கப்படுகிறது x1, y1, y2 மற்றும் y3, மற்றும் மீதமுள்ளவை x2 இவ்வாறு கணக்கிடுகிறது:
இந்த முகமூடிகளைப் பயன்படுத்தி, எந்தச் சரிபார்ப்பாளரிடமும், நாம் செலவழித்ததை விட அதிகமான நிதியை நாங்கள் உருவாக்கவில்லை என்பதைத் தொகையை வெளியிடாமல் நிரூபிக்க முடியும். அசல், சரியா?
RingCT நிரம்பியது
முழு RingCT பரிவர்த்தனைகளில், பரிமாற்றத் தொகையைச் சரிபார்ப்பது இன்னும் கொஞ்சம் சிக்கலானது. இந்த பரிவர்த்தனைகளில், வாலட் உள்ளீடுகளுக்கான பொறுப்புகளை மீண்டும் கணக்கிடாது, ஆனால் அவை உருவாக்கப்பட்ட போது கணக்கிடப்பட்டவற்றைப் பயன்படுத்துகிறது. இந்த வழக்கில், நாம் இனி பூஜ்ஜியத்திற்கு சமமான தொகைகளில் வேறுபாட்டைப் பெற மாட்டோம் என்று கருத வேண்டும், மாறாக:
இது z - உள்ளீடு மற்றும் வெளியீடு முகமூடிகளுக்கு இடையிலான வேறுபாடு. நாம் கருத்தில் கொண்டால் zG பொது விசையாக (இது நடைமுறையில் உள்ளது), பின்னர் z தனிப்பட்ட விசை ஆகும். எனவே, பொது மற்றும் தொடர்புடைய தனிப்பட்ட விசைகளை நாங்கள் அறிவோம். இந்தத் தரவைக் கையில் வைத்துக்கொண்டு, MLSAG ரிங் கையொப்பத்தில், வெளியீடுகளின் பொது விசைகளுடன் இதைப் பயன்படுத்தலாம்:
எனவே, சரியான மோதிர கையொப்பமானது, நெடுவரிசைகளில் ஒன்றின் அனைத்து தனிப்பட்ட விசைகளையும் நாம் அறிந்திருப்பதை உறுதி செய்யும், மேலும் பரிவர்த்தனை செலவழித்ததை விட அதிக நிதியை உருவாக்கவில்லை என்றால், கடைசி வரிசையில் உள்ள தனிப்பட்ட விசையை மட்டுமே நாம் அறிய முடியும். சொல்லப்போனால், "கமிட்மெண்ட்களின் அளவுகளில் உள்ள வேறுபாடு ஏன் பூஜ்ஜியத்திற்கு வழிவகுக்கவில்லை" என்ற கேள்விக்கான பதில் இங்கே உள்ளது - என்றால் zG = 0, பின்னர் உண்மையான வெளியீடுகளுடன் நெடுவரிசையை விரிவுபடுத்துவோம்.
நிதியைப் பெறுபவருக்கு எவ்வளவு பணம் அனுப்பப்பட்டது என்பது எப்படித் தெரியும்? இங்கே எல்லாம் எளிது - பரிவர்த்தனையை அனுப்புபவர் மற்றும் பெறுநர் பரிமாற்ற விசைகளை டிஃபி-ஹெல்மேன் நெறிமுறையைப் பயன்படுத்தி, பரிவர்த்தனை விசை மற்றும் பெறுநரின் பார்வை விசையைப் பயன்படுத்தி பகிரப்பட்ட ரகசியத்தைக் கணக்கிடுங்கள். பரிமாற்றத்தின் சிறப்புப் புலங்களில், இந்தப் பகிரப்பட்ட விசையுடன் குறியாக்கம் செய்யப்பட்ட வெளியீட்டுத் தொகைகளைப் பற்றிய தரவை அனுப்புபவர் எழுதுகிறார்.
வரம்பு சான்றுகள்
கமிட்மெண்ட்களில் உள்ள தொகையாக எதிர்மறை எண்ணைப் பயன்படுத்தினால் என்ன நடக்கும்? இது கூடுதல் நாணயங்களை உருவாக்க வழிவகுக்கும்! இந்த விளைவு ஏற்றுக்கொள்ள முடியாதது, எனவே நாம் பயன்படுத்தும் அளவுகள் எதிர்மறையானவை அல்ல என்று உத்தரவாதம் அளிக்க வேண்டும் (இந்த அளவுகளை வெளிப்படுத்தாமல், நிச்சயமாக, இல்லையெனில் இவ்வளவு வேலை மற்றும் அனைத்தும் வீணாகிவிடும்). வேறு வார்த்தைகளில் கூறுவதானால், தொகை இடைவெளியில் உள்ளது என்பதை நாம் நிரூபிக்க வேண்டும் [0, 2n - 1].
இதைச் செய்ய, ஒவ்வொரு வெளியீட்டின் கூட்டுத்தொகை பைனரி இலக்கங்களாகப் பிரிக்கப்பட்டு, ஒவ்வொரு இலக்கத்திற்கும் தனித்தனியாகக் கணக்கிடப்படும். இது எப்படி நடக்கிறது என்பதை ஒரு உதாரணத்துடன் பார்ப்பது நல்லது.
நமது தொகைகள் சிறியதாகவும், 4 பிட்களாகவும் (நடைமுறையில் இது 64 பிட்கள்) பொருந்தும் என்று வைத்துக்கொள்வோம், மேலும் 5 XMR மதிப்புள்ள வெளியீட்டை உருவாக்குவோம். ஒவ்வொரு வகைக்கான பொறுப்புகளையும் முழுத் தொகைக்கான மொத்த உறுதிப்பாட்டையும் நாங்கள் கணக்கிடுகிறோம்:
அடுத்து, ஒவ்வொரு அர்ப்பணிப்பும் ஒரு பினாமியுடன் கலக்கப்படுகிறது (Ci-2iH) 2015 இல் கிரெக் மேக்ஸ்வெல் முன்மொழியப்பட்ட பொரோமியோ மோதிர கையொப்பத்துடன் (மற்றொரு மோதிர கையொப்பம்) ஜோடியாக கையொப்பமிடப்பட்டது (நீங்கள் அதைப் பற்றி மேலும் படிக்கலாம்
ஒன்றாக எடுத்துக்கொண்டால், இது வரம்பு ஆதாரம் என்று அழைக்கப்படுகிறது மற்றும் வரம்பில் உள்ள அளவுகளை அர்ப்பணிப்புகள் பயன்படுத்துவதை உறுதிசெய்ய உங்களை அனுமதிக்கிறது [0, 2n - 1].
அடுத்து என்ன?
தற்போதைய செயலாக்கத்தில், வரம்புச் சான்றுகள் அதிக இடத்தை எடுத்துக் கொள்கின்றன - ஒரு வெளியீட்டிற்கு 6176 பைட்டுகள். இது பெரிய பரிவர்த்தனைகளுக்கு வழிவகுக்கிறது, எனவே அதிக கட்டணங்கள். Monero பரிவர்த்தனையின் அளவைக் குறைக்க, டெவலப்பர்கள் Borromeo கையொப்பங்களுக்குப் பதிலாக குண்டு துளைக்காதவற்றை அறிமுகப்படுத்துகின்றனர் - இது பிட்வைஸ் கமிட்மென்ட்கள் இல்லாத வரம்புச் சான்று பொறிமுறையாகும்.
உங்கள் கேள்விகளைக் கேளுங்கள், கிரிப்டோகரன்சி துறையில் உள்ள தொழில்நுட்பங்களைப் பற்றிய புதிய கட்டுரைகளுக்கான தலைப்புகளைப் பரிந்துரைக்கவும், மேலும் எங்கள் குழுவிற்கு குழுசேரவும்
ஆதாரம்: www.habr.com