பிளாக்செயினில் டிஜிட்டல் கையொப்பத்தின் அடிப்படையில் ரேண்டம் ஆரக்கிள்

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

பிளாக்செயினில் டிஜிட்டல் கையொப்பத்தின் அடிப்படையில் ரேண்டம் ஆரக்கிள்

யோசனை

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

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

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

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

வெளிப்படையாக, அதன் தூய வடிவத்தில், அத்தகைய கையொப்பத்தை போலி-சீரற்ற எண்களின் ஆதாரமாகப் பயன்படுத்த முடியாது, ஏனெனில் இது தீர்மானிக்க முடியாதது, எனவே, ஆரக்கிள் மூலம் எளிதில் கையாள முடியும்.

ஆனால், அது மாறியது போல், அதை தீர்மானிப்பது உண்மையில் சாத்தியமாகும்.

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

சிறிது யோசித்து, உள்ளூர் ஆய்வாளர்களின் ஆதரவைப் பெற்ற பிறகு, VECRO வேலை திட்டம் பிறந்தது.

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

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

அத்தகைய திட்டத்தில், R எவ்வாறு சரி செய்யப்பட்டது என்பது முக்கியமில்லை; இது ஆரக்கிளின் பொறுப்பாகவே உள்ளது. S என்பது பயனரால் தனித்துவமாக தீர்மானிக்கப்படுவது முக்கியம், ஆனால் ஆரக்கிள் அதை வெளியிடும் வரை அதன் மதிப்பு தெரியவில்லை. நாம் விரும்பிய அனைத்தும்!

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

மொத்தத்தில், ஆரக்கிள் பயனர்களுக்கு இரண்டு செயல்பாடுகளை வழங்க வேண்டும்: துவக்கம், இது R மதிப்பை சரிசெய்கிறது, மற்றும் கையொப்பம், மதிப்பை S ஐ வழங்கும். இந்த நிலையில், R, S ஜோடி என்பது பயனர் செய்தியின் வழக்கமான சரிபார்க்கக்கூடிய கையொப்பமாகும். மதிப்பு R மற்றும் தன்னிச்சையான பயனர் தரவு.

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

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

Реализация

எனவே, இந்த திட்டத்தில் VECRO செயல்படுத்தப்பட்டது பயனர் மற்றும் ஆரக்கிள் இடையே பரிமாற்ற பரிவர்த்தனைகளைப் பயன்படுத்தி கோரிக்கை-பதில் பயன்முறையில் Waves blockchain இல். அதே நேரத்தில், ஆரக்கிள் கணக்கில் ஒரு ஸ்கிரிப்ட் நிறுவப்பட்டுள்ளது, இது மேலே விவரிக்கப்பட்ட தர்க்கத்திற்கு இணங்க கண்டிப்பாக வேலையைக் கட்டுப்படுத்துகிறது. ஆரக்கிள் பரிவர்த்தனைகள் சரிபார்க்கப்பட்டு, பயனர் தொடர்புகளின் முழுச் சங்கிலியும் மீட்டமைக்கப்படுகிறது. நான்கு பரிவர்த்தனைகளும் இறுதி மதிப்பைச் சரிபார்ப்பதில் ஈடுபட்டுள்ளன; ஸ்மார்ட் ஒப்பந்தம் அவற்றை ஒரு கண்டிப்பான சரிபார்ப்பு நூலுடன் இணைக்கிறது, அனைத்து மதிப்புகளையும் படிப்படியாகச் சரிபார்த்து, எந்த கையாளுதலுக்கும் இடமளிக்காது.

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

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

ஆரக்கிள் சேவையைப் பயன்படுத்த, நீங்கள் கண்டிப்பாக:

  • சரி R;
    • oracle alias init@vecrக்கு குறைந்தது 0.005 அலைகளை அனுப்பவும்;
    • ஆரக்கிளில் இருந்து பயனருக்கு 1 R-vecr டோக்கனை மாற்றும்போது இணைப்புப் புலத்தில் R-குறியீட்டைப் பெறவும்;
  • கையொப்பத்தைப் பெறுங்கள்;
    • random@vecr என்ற ஆரக்கிளுக்கு குறைந்தபட்சம் 0.005 அலைகளை அனுப்பவும், மேலும் இணைப்புப் புலத்தில் முன்பு பெற்ற R-குறியீடு மற்றும் கூடுதல் பயனர் தரவையும் குறிப்பிட வேண்டும்;
    • ஆரக்கிளில் இருந்து பயனருக்கு 1 S-vecr டோக்கனை மாற்றும்போது இணைப்புப் புலத்தில் S-குறியீட்டைப் பெறவும்;
  • போலி-ரேண்டம் எண்ணின் ஆதாரமாக S-குறியீட்டைப் பயன்படுத்தவும்.

தற்போதைய நடைமுறையின் நுணுக்கங்கள்:

  • ஆரக்கிளுக்கு அனுப்பப்படும் அலைகள், அதிகபட்சம் 1 அலைகள் வரை, பயனருக்குத் திரும்பப் பெறும் பரிவர்த்தனைக்கான கமிஷனாகப் பயன்படுத்தப்படுகின்றன;
  • R-குறியீடு என்பது 'R' எழுத்தின் பைட் மற்றும் 32-பைட் அடிப்படை58-குறியீடு செய்யப்பட்ட R மதிப்பின் இணைப்பாகும்;
  • இணைப்பில் R-குறியீடு முதலில் இருக்க வேண்டும், R-குறியீட்டிற்குப் பிறகு பயனர் தரவு வரும்;
  • S-குறியீடு என்பது 'S' என்ற எழுத்தின் பைட் மற்றும் S இன் 32-பைட் அடிப்படை58-குறியீடு செய்யப்பட்ட மதிப்பு ஆகியவற்றின் இணைப்பாகும்;
  • S என்பது மாடுலோ பிரிவின் விளைவாகும், எனவே நீங்கள் S ஐ முழு 256-பிட் சூடோராண்டம் எண்ணாகப் பயன்படுத்த முடியாது (இந்த எண்ணை அதிகபட்சமாக 252-பிட் சூடோராண்டம் எண்ணாகக் கருதலாம்);
  • எஸ்-கோட் ஹாஷை போலி-ரேண்டம் எண்ணாகப் பயன்படுத்துவது எளிமையான விருப்பமாகும்.

S-குறியீட்டைப் பெறுவதற்கான எடுத்துக்காட்டு:

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

கேள்விகளுக்கு பதிலளிப்பதற்கும் கருத்துகளை ஏற்றுக் கொள்வதற்கும் நான் மகிழ்ச்சியடைவேன், நன்றி.

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

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