අපි Monero blockchain පිළිබඳ අපගේ මාලාව දිගටම කරගෙන යන අතර, අද ලිපිය රහස්ය ගනුදෙනු සහ නව මුද්ද අත්සන් හඳුන්වා දෙන RingCT (Ring Confidential Transactions) ප්රොටෝකෝලය කෙරෙහි අවධානය යොමු කරනු ඇත. අවාසනාවකට මෙන්, එය ක්රියා කරන ආකාරය පිළිබඳ අන්තර්ජාලයේ කුඩා තොරතුරු ඇති අතර, අපි මෙම පරතරය පිරවීමට උත්සාහ කළෙමු.
මෙම ප්රොටෝකෝලය භාවිතයෙන් ජාලය හුවමාරු ප්රමාණයන් සඟවන්නේ කෙසේද, ඔවුන් සම්භාව්ය ක්රිප්ටෝනෝට් මුද්ද අත්සන් අත්හැරියේ ඇයි සහ මෙම තාක්ෂණය තවදුරටත් වර්ධනය වන්නේ කෙසේද යන්න ගැන අපි කතා කරමු.
මෙම ප්රොටෝකෝලය Monero හි වඩාත් සංකීර්ණ තාක්ෂණයන්ගෙන් එකක් වන බැවින්, පාඨකයාට මෙම blockchain හි සැලසුම පිළිබඳ මූලික දැනුමක් සහ ඉලිප්සීය වක්ර ගුප්ත ලේඛන විද්යාව පිළිබඳ දැනුමක් අවශ්ය වනු ඇත (මෙම දැනුම ඉහළ නැංවීමට, ඔබට අපගේ පළමු පරිච්ඡේද කියවිය හැකිය. ගැන පෙර ලිපිය
RingCT ප්රොටෝකෝලය
ක්රිප්ටෝනෝට් මුදල්වලට එල්ල විය හැකි ප්රහාරවලින් එකක් වන්නේ යවන ලද ගනුදෙනුවේ ප්රමාණය හා වේලාව පිළිබඳ දැනුම මත පදනම් වූ බ්ලොක්චේන් විශ්ලේෂණයයි. මෙය ඉඩ දෙයි
මුදල් සැඟවීමේ අදහස අලුත් දෙයක් නොවන බව සඳහන් කිරීම වටී. Bitcoin Core සංවර්ධක Greg Maxwell ඔහුගේ එය විස්තර කළ පළමු අයගෙන් කෙනෙකි
වෙනත් දේ අතර, ප්රොටෝකෝලය දූවිලි ප්රතිදානයන් මිශ්ර කිරීමේ ගැටළු වලින් මිදීමට උපකාරී වේ - කුඩා ප්රමාණයක ප්රතිදානයන් (සාමාන්යයෙන් ගනුදෙනු වලින් වෙනස් වීමේ ස්වරූපයෙන් ලැබේ), එමඟින් ඒවා වටිනවාට වඩා වැඩි ගැටළු නිර්මාණය විය.
2017 ජනවාරි මාසයේදී, රහස්ය ගනුදෙනු විකල්ප ලෙස භාවිතා කිරීමට ඉඩ සලසමින් Monero ජාලයේ දැඩි දෙබලක සිදු විය. දැනටමත් එම වසරේ සැප්තැම්බර් මාසයේදී, දෘඪ දෙබලක 6 අනුවාදය සමඟ, එවැනි ගනුදෙනු ජාලයට අවසර දී ඇති එකම ඒවා බවට පත්විය.
RingCT එකවර යාන්ත්රණ කිහිපයක් භාවිතා කරයි: බහු ස්ථර සම්බන්ධිත ස්වයංසිද්ධ නිර්නාමික කණ්ඩායම් අත්සන් (Multilayered Linkable Spontaneous Anonymous Group Signature, මෙතැන් සිට MLSAG ලෙස හැඳින්වේ), කැපවීම් යෝජනා ක්රමයක් (Pedersen Commitments) සහ පරාස සාක්ෂි (මෙම පදයට රුසියානු භාෂාවට ස්ථාපිත පරිවර්තනයක් නොමැත) .
RingCT ප්රොටෝකෝලය නිර්නාමික ගනුදෙනු වර්ග දෙකක් හඳුන්වා දෙයි: සරල සහ සම්පූර්ණ. ගනුදෙනුවක් එක් ආදානයකට වඩා භාවිතා කරන විට මුදල් පසුම්බිය පළමුවැන්න ජනනය කරයි, දෙවැන්න - ප්රතිවිරුද්ධ තත්වයේදී. ඒවා ගනුදෙනු ප්රමාණයන් වලංගු කිරීමේදී සහ MLSAG අත්සනකින් අත්සන් කර ඇති දත්තවල වෙනස් වේ (අපි මේ ගැන වැඩි විස්තර පහතින් කතා කරමු). එපමනක් නොව, සම්පූර්ණ ආකාරයේ ගනුදෙනු ඕනෑම යෙදවුම් ගණනකින් ජනනය කළ හැක, මූලික වෙනසක් නොමැත. පොතේ
MLSAG අත්සන
අත්සන් කරන ලද ගනුදෙනු යෙදවුම් මොනවාදැයි අපි මතක තබා ගනිමු. සෑම ගනුදෙනුවක්ම යම් අරමුදල් වියදම් කර ජනනය කරයි. අරමුදල් උත්පාදනය සිදු වන්නේ ගනුදෙනු ප්රතිදානයන් නිර්මාණය කිරීමෙනි (සෘජු සාදෘශ්යයක් බිල්පත් වේ), සහ ගනුදෙනුව වැය කරන ප්රතිදානය (සියල්ලට පසු, සැබෑ ජීවිතයේ අපි මුදල් නෝට්ටු වියදම් කරමු) ආදානය බවට පත් වේ (ප්රවේශම් වන්න, ව්යාකූල වීම ඉතා පහසුය. මෙතන).
ආදානයක් බහු ප්රතිදානයන් යොමු කරයි, නමුත් එකක් පමණක් වැය කරයි, පරිවර්තන ඉතිහාසය විශ්ලේෂණය කිරීමට අපහසු වන පරිදි “දුම් තිරයක්” නිර්මාණය කරයි. ගනුදෙනුවකට ආදාන එකකට වඩා තිබේ නම්, එවැනි ව්යුහයක් අනුකෘතියක් ලෙස නිරූපණය කළ හැකිය, එහිදී පේළි ආදාන වන අතර තීරු මිශ්ර ප්රතිදානය වේ. ගනුදෙනුව එහි නිමැවුම් හරියටම වැය කරන බව ජාලයට ඔප්පු කිරීම සඳහා (ඔවුන්ගේ රහස් යතුරු දනී), යෙදවුම් මුද්ද අත්සනකින් අත්සන් කර ඇත. එවැනි අත්සනක් මඟින් ඕනෑම තීරුවක සියලුම අංග සඳහා රහස් යතුරු අත්සන් කරන්නා දැන සිටි බව සහතික කරයි.
රහස්ය ගනුදෙනු තවදුරටත් සම්භාව්ය ඒවා භාවිතා නොකරයි
ඒවා බහු ස්ථර ලෙස හඳුන්වනු ලබන්නේ ඔවුන් එකවර යෙදවුම් කිහිපයක් අත්සන් කරන බැවින්, ඒ සෑම එකක්ම තවත් කිහිපයක් සමඟ මිශ්ර කර ඇති බැවිනි, එනම් අනුකෘතියක් අත්සන් කර ඇති අතර එක් පේළියක් නොවේ. අපි පසුව දකින පරිදි, මෙය අත්සන ප්රමාණය සුරැකීමට උපකාරී වේ.
සැබෑ ප්රතිදානයන් 2 ක් වැය කර මිශ්ර කිරීම සඳහා බ්ලොක්චේන් වෙතින් අහඹු ලෙස m - 1 භාවිතා කරන ගනුදෙනුවක උදාහරණය භාවිතා කරමින් මුද්ද අත්සනක් සෑදෙන්නේ කෙසේදැයි බලමු. අපි වියදම් කරන නිමැවුම් වල පොදු යතුරු අපි දක්වන්නෙමු
, සහ ඒ අනුව ඔවුන් සඳහා ප්රධාන රූප: මේ අනුව, අපි ප්රමාණයේ අනුකෘතියක් ලබා ගනිමු 2 x මීටර්. පළමුව, අපි එක් එක් නිමැවුම් යුගල සඳහා ඊනියා අභියෝග ගණනය කළ යුතුය:
අපි ඒවායේ පොදු යතුරු භාවිතයෙන් වියදම් කරන ප්රතිදානයන් සමඟ ගණනය කිරීම් ආරම්භ කරමු:සහ අහඹු සංඛ්යාප්රතිඵලයක් වශයෙන්, අපි පහත අගයන් ලබා ගනිමු:
, අපි අභියෝගය ගණනය කිරීමට භාවිතා කරන
ඊළඟ නිමැවුම් යුගලය (අපි ආදේශ කරන්නේ කුමක්ද යන්න තේරුම් ගැනීම පහසු කිරීම සඳහා, අපි මෙම අගයන් විවිධ වර්ණවලින් ඉස්මතු කර ඇත). පහත දැක්වෙන සියලුම අගයන් පළමු නිදර්ශනයේ දක්වා ඇති සූත්ර භාවිතා කරමින් රවුමක ගණනය කෙරේ. ගණනය කළ යුතු අවසාන දෙය නම් සැබෑ ප්රතිදානයන් යුගලයකට ඇති අභියෝගයයි.
අපට පෙනෙන පරිදි, සැබෑ ප්රතිදාන අඩංගු තීරුව හැර අනෙකුත් සියලුම තීරු අහඹු ලෙස ජනනය කරන ලද සංඛ්යා භාවිතා කරයි. සඳහා π- තීරුව අපට ඒවා ද අවශ්ය වනු ඇත. පරිවර්තනය කරමුs තුළ:
අත්සන යනු මෙම සියලු අගයන්හි ටිපල් එකකි:
මෙම දත්ත පසුව ගනුදෙනුවකට ලියා ඇත.
අපට පෙනෙන පරිදි, MLSAG හි අඩංගු වන්නේ එක් අභියෝගයක් පමණි c0, ඔබට අත්සන ප්රමාණය ඉතිරි කර ගැනීමට ඉඩ සලසයි (එය දැනටමත් විශාල ඉඩ ප්රමාණයක් අවශ්ය වේ). තවද, ඕනෑම පරීක්ෂකයෙක්, දත්ත භාවිතා කරයි, c1,..., cm අගයන් ප්රතිසාධනය කර එය පරීක්ෂා කරයි. මේ අනුව, අපගේ මුද්ද වසා ඇති අතර අත්සන තහවුරු කර ඇත.
සම්පූර්ණ වර්ගයේ RingCT ගනුදෙනු සඳහා, මිශ්ර ප්රතිදානයන් සහිත matrix වෙත තවත් එක් රේඛාවක් එකතු කරනු ලැබේ, නමුත් අපි මේ ගැන පහත කතා කරමු.
පේඩර්සන් කැපවීම්
මාරුවීම් ප්රමාණය සැඟවීමට සහ වඩාත් පොදු විකල්පය භාවිතා කිරීමට Monero කැපවීම් භාවිතා කරයි - Pedersen කැපවීම්. මාර්ගය වන විට, සිත්ගන්නා කරුණක් - මුලදී සංවර්ධකයින් යෝජනා කළේ සාමාන්ය මිශ්රණයකින් ප්රමාණය සැඟවීමට, එනම් අවිනිශ්චිතතාවය හඳුන්වා දීම සඳහා අත්තනෝමතික ප්රමාණයන් සඳහා ප්රතිදානයන් එකතු කිරීම, නමුත් පසුව ඔවුන් කැපවීම් වලට මාරු විය (එය ඔවුන් ඉතිරි කළ කරුණක් නොවේ. ගනුදෙනු ප්රමාණය, අපි පහත බලන්නෙමු).
පොදුවේ ගත් කල, කැපවීම මේ වගේ ය:
කොහෙද? C - කැපවීමේ අර්ථයම, a - සැඟවුණු මුදල, H යනු ඉලිප්සීය වක්රයේ (අතිරේක උත්පාදක) ස්ථාවර ලක්ෂ්යයකි, සහ x — යම් ආකාරයක අත්තනෝමතික වෙස් මුහුණක්, අහඹු ලෙස ජනනය කරන සැඟවුණු සාධකයකි. තුන්වන පාර්ශ්වයකට කැපවීමේ වටිනාකම සරලව අනුමාන කිරීමට නොහැකි වන පරිදි වෙස් මුහුණ අවශ්ය වේ.
නව නිමැවුමක් උත්පාදනය කරන විට, මුදල් පසුම්බිය ඒ සඳහා කැපවීම ගණනය කරන අතර, වියදම් කරන විට, එය උත්පාදනය කිරීමේදී ගණනය කළ අගය හෝ එය නැවත ගණනය කරයි, ගනුදෙනු වර්ගය අනුව.
RingCT සරලයි
සරල RingCT ගනුදෙනු වලදී, ගනුදෙනුව යෙදවුම් ප්රමාණයට සමාන ප්රමාණයකින් ප්රතිදානයන් නිර්මාණය කර ඇති බව සහතික කිරීම සඳහා (සිහින් වාතයෙන් මුදල් නිපදවා නැත), පළමු හා දෙවන කැපවීම්වල එකතුව අවශ්ය වේ. ඒවා සමාන වේ, එනම්:
කැපවීම් කොමිෂන් සභා එය ටිකක් වෙනස් ලෙස සලකයි - වෙස් මුහුණක් නොමැතිව:
කොහෙද a - කොමිස් මුදල, එය ප්රසිද්ධියේ ලබා ගත හැකිය.
මෙම ප්රවේශය අපට හෙළිදරව් නොකර එකම ප්රමාණයන් භාවිතා කරන බව විශ්වාස කරන පාර්ශ්වයට ඔප්පු කිරීමට අපට ඉඩ සලසයි.
දේවල් පැහැදිලි කිරීම සඳහා, අපි උදාහරණයක් දෙස බලමු. ගනුදෙනුවක් 10 සහ 5 XMR හි ප්රතිදානයන් දෙකක් (එනම් ඒවා ආදාන බවට පත් වන බව) සහ 12 XMR: 3, 4 සහ 5 XMR වටිනාකමින් යුත් ප්රතිදානයන් තුනක් ජනනය කරයි යැයි සිතමු. ඒ සමගම, ඔහු XMR 3 ක කොමිස් මුදලක් ගෙවයි. මේ අනුව, වියදම් කළ මුදල සහ උත්පාදනය කළ මුදල සහ කොමිස් මුදල 15 XMR ට සමාන වේ. අපි කැපවීම් ගණනය කිරීමට උත්සාහ කරමු සහ ඒවායේ ප්රමාණයේ වෙනස දෙස බලමු (ගණිතය මතක තබා ගන්න):
මෙහිදී අපට පෙනෙන්නේ සමීකරණය අභිසාරී වීමට නම්, අපට ආදාන සහ ප්රතිදාන ආවරණවල එකතුව සමාන විය යුතු බවයි. මෙය සිදු කිරීම සඳහා, මුදල් පසුම්බිය අහඹු ලෙස ජනනය කරයි x1, y1, y2 සහ y3, සහ ඉතිරි x2 මේ ආකාරයට ගණනය කරයි:
මෙම වෙස් මුහුණු භාවිතා කිරීමෙන්, ප්රමාණය හෙළි නොකර, අප වියදම් කරන ප්රමාණයට වඩා වැඩි අරමුදල් අප විසින් උත්පාදනය නොකරන බව ඕනෑම සත්යාපනය කරන්නෙකුට ඔප්පු කළ හැක. ඔරිජිනල් නේද?
RingCT පිරී ඇත
සම්පූර්ණ RingCT ගනුදෙනු වලදී, හුවමාරු මුදල පරීක්ෂා කිරීම ටිකක් සංකීර්ණ වේ. මෙම ගනුදෙනු වලදී, මුදල් පසුම්බිය ආදාන සඳහා වන බැඳීම් නැවත ගණනය නොකරයි, නමුත් ඒවා උත්පාදනය කරන විට ගණනය කළ ඒවා භාවිතා කරයි. මෙම අවස්ථාවෙහිදී, අපට තවදුරටත් ශුන්යයට සමාන ඓක්යවල වෙනස නොලැබෙන බව උපකල්පනය කළ යුතුය, නමුත් ඒ වෙනුවට:
එය z - ආදාන සහ ප්රතිදාන ආවරණ අතර වෙනස. අපි සලකා බලන්නේ නම් zG පොදු යතුරක් ලෙස (එය තථ්ය වේ), එවිට z පුද්ගලික යතුර වේ. මේ අනුව, අපි පොදු සහ අනුරූප පුද්ගලික යතුරු දනිමු. මෙම දත්ත අතැතිව, අපට එය MLSAG මුද්ද අත්සනෙහි මිශ්ර කර ඇති ප්රතිදානවල පොදු යතුරු සමඟ භාවිතා කළ හැක:
මේ අනුව, වලංගු මුද්ද අත්සනක් මඟින් එක් තීරුවක සියලුම පුද්ගලික යතුරු අප දන්නා බව සහතික කරනු ඇති අතර, ගනුදෙනුව වියදම් කරන මුදලට වඩා වැඩි මුදලක් උත්පාදනය නොකරන්නේ නම් පමණක් අවසාන පේළියේ ඇති පුද්ගලික යතුර අපට දැනගත හැකිය. මාර්ගය වන විට, “කැපවීම් ප්රමාණයේ වෙනස ශුන්යයට නොයන්නේ ඇයි” යන ප්රශ්නයට පිළිතුර මෙන්න - නම් zG = 0, එවිට අපි සැබෑ ප්රතිදානයන් සමඟ තීරුව පුළුල් කරන්නෙමු.
අරමුදල් ලබන්නා ඔහුට කොපමණ මුදලක් එවා ඇත්දැයි දන්නේ කෙසේද? මෙහි සෑම දෙයක්ම සරලයි - ගනුදෙනුව යවන්නා සහ ලබන්නාගේ හුවමාරු යතුරු Diffie-Hellman ප්රොටෝකෝලය භාවිතා කරමින්, ගනුදෙනු යතුර සහ ලබන්නාගේ දර්ශන යතුර භාවිතා කර හවුල් රහස ගණනය කරන්න. යවන්නා ගනුදෙනුවේ විශේෂ ක්ෂේත්රවල මෙම හවුල් යතුර සමඟ සංකේතනය කර ඇති ප්රතිදාන ප්රමාණයන් පිළිබඳ දත්ත ලියයි.
පරාසයක සාක්ෂි
ඔබ කැපවීම්වල ප්රමාණය ලෙස සෘණ අංකයක් භාවිත කළහොත් කුමක් සිදුවේද? මෙය අතිරේක කාසි උත්පාදනය කිරීමට හේතු විය හැක! මෙම ප්රති result ලය පිළිගත නොහැකි ය, එබැවින් අප භාවිතා කරන ප්රමාණයන් සෘණ නොවන බව සහතික කළ යුතුය (මෙම ප්රමාණයන් හෙළිදරව් නොකර, ඇත්ත වශයෙන්ම, එසේ නොමැතිනම් බොහෝ වැඩ ඇති අතර සියල්ල නිෂ්ඵල වේ). වෙනත් වචන වලින් කිවහොත්, එකතුව පරතරය තුළ බව අපි ඔප්පු කළ යුතුය [0, 2n - 1].
මෙය සිදු කිරීම සඳහා, එක් එක් ප්රතිදානයේ එකතුව ද්විමය ඉලක්කම් වලට බෙදා ඇති අතර එක් එක් ඉලක්කම් සඳහා කැපවීම වෙන වෙනම ගණනය කෙරේ. උදාහරණයක් සමඟ මෙය සිදුවන්නේ කෙසේදැයි බැලීම වඩා හොඳය.
අපි හිතමු අපේ ප්රමාණය කුඩා වන අතර බිටු 4කට ගැලපේ (ප්රායෝගිකව මෙය බිටු 64කි), අපි XMR 5ක් වටිනා ප්රතිදානයක් නිර්මාණය කරමු. අපි එක් එක් කාණ්ඩය සඳහා කැපවීම් සහ සම්පූර්ණ මුදල සඳහා සම්පූර්ණ කැපවීම ගණනය කරමු:
ඊළඟට, සෑම කැපවීමක්ම ආදේශකයක් සමඟ මිශ්ර වේ (Ci-2iH) සහ 2015 දී Greg Maxwell විසින් යෝජනා කරන ලද Borromeo මුද්ද අත්සන (තවත් මුද්ද අත්සන) සමඟ යුගල වශයෙන් අත්සන් කර ඇත (ඔබට ඒ ගැන වැඩිදුර කියවිය හැක
එකට ගත් විට, මෙය පරාස සාධනය ලෙස හඳුන්වනු ලබන අතර කැපවීම් පරාසය තුළ ප්රමාණ භාවිතා කරන බව සහතික කිරීමට ඔබට ඉඩ සලසයි [0, 2n - 1].
ඊළඟට කුමක්ද?
වත්මන් ක්රියාත්මක කිරීමේදී, පරාස සාක්ෂි විශාල ඉඩක් ගනී - ප්රතිදානයකට බයිට් 6176. මෙය විශාල ගනුදෙනු වලට තුඩු දෙන අතර එබැවින් ඉහළ ගාස්තු. Monero ගනුදෙනුවක ප්රමාණය අඩු කිරීම සඳහා, සංවර්ධකයින් Borromeo අත්සන් වෙනුවට වෙඩි නොවදින යන්ත්ර හඳුන්වා දෙයි - බිට්වයිස් කැපවීම් නොමැතිව පරාසයක ඔප්පු කිරීමේ යාන්ත්රණයකි.
ඔබේ ප්රශ්න අසන්න, ක්රිප්ටෝ මුදල් ක්ෂේත්රයේ තාක්ෂණයන් පිළිබඳ නව ලිපි සඳහා මාතෘකා යෝජනා කරන්න, සහ අපගේ කණ්ඩායමට දායක වන්න
මූලාශ්රය: www.habr.com