RingCT: כך Monero מסתירה את סכומי העסקאות
RingCT: כך Monero מסתירה את סכומי העסקאות
פתחו כל סייר בלוקים של Bitcoin ותוכלו לקרוא את הסכום המדויק של כל עסקה שבוצעה אי פעם — עד לסטושי האחרון. הקלידו כתובת, ותראו מיד את היתרה שלה, מאיפה הגיעו המטבעות ולאן הם הלכו. השקיפות הזו אינה תקלה אלא בחירה תכנונית, וזו בדיוק הסיבה שמשכורת בודדת, תרומה אחת או הפקדה רשלנית אחת יכולות לחשוף את הזהות מאחורי ארנק שלם. Monero נוקטת בעמדה ההפוכה: על גבי שרשרת הבלוקים שלה, הסכום עצמו מוסתר. הטכנולוגיה שמאפשרת זאת נקראת RingCT — קיצור של Ring Confidential Transactions.
RingCT היא הסיבה שעסקת Monero מופיעה בפנקס הציבורי כהתחייבות קריפטוגרפית במקום כמספר קריא. היא עלתה לאוויר בינואר 2017, הפכה לחובה עבור כל העסקאות עוד באותה שנה, וכל XMR שאתם שולחים דרך ארנק — או רוכשים דרך שירות ללא חשבון כמו MoneroSwapper — מוגן באמצעותה. המאמר הזה מפרק לגורמים את מה ש-RingCT עושה בפועל: המתמטיקה שמאפשרת לרשת לאמת עסקה מבלי לראות את הסכומים, האופן שבו הטכנולוגיה התפתחה דרך Bulletproofs ו-Bulletproofs+, ולאן היא צועדת בהמשך עם FCMP++.
למה הסתרת הסכום באמת חשובה
פרטיות על שרשרת בלוקים אינה תכונה אחת; אלה שלוש בעיות שצריך לפתור בו-זמנית. השאירו אחת מהן חשופה, ושתי האחרות ידלפו דרכה. Monero תוקפת את שלושתן, ו-RingCT אחראית על השלישית.
- מי שלח: מטופל על ידי חתימות טבעת (ring signatures), שחותמות על עסקה בשם קבוצה של מוציאים פוטנציאליים, כך שצופה מהצד אינו יכול לדעת איזה קלט הוא האמיתי.
- מי קיבל: מטופל על ידי טכנולוגיית כתובות חמקן (stealth addresses), שמייצרת כתובת חד-פעמית ייחודית עבור כל תשלום, כך שכספים לעולם אינם נוחתים על כתובת ציבורית שניתן לעשות בה שימוש חוזר.
- כמה נשלח: מטופל על ידי RingCT, שמצפינה את הסכום בתוך התחייבות פדרסן (Pedersen commitment) ובו-זמנית עדיין מאפשרת לכל צומת ברשת לוודא שהמאזן מאוזן.
לפני ש-RingCT הגיעה לעולם, Monero כבר הסתירה את השולח והמקבל אך השאירה את הסכומים גלויים לחלוטין. כדי להשיג ולו מעט פרטיות סכומים, הפרוטוקול אילץ את העסקאות להתפצל ליחידות קבועות מראש — תחשבו על 0.01, 0.1, 1, 10 — בערך כמו שהייתם משלמים על משהו במטבעות מדויקים. השיטה הזו הדליפה כמות מפתיעה של מידע. קבוצת המסיחים הסבירים עבור פלט של 7.3 XMR קטנה בהרבה מהקבוצה עבור פלט מוסתר, פשוט כי המסיחים היו חייבים להתאים ליחידה הקבועה. סכומים גלויים גם איפשרו לאנליסטים לקשר עסקאות זו לזו על ידי מעקב אחר ערכים זהים לאורך השרשרת.
סכומים חסויים סוגרים את הפרצה הזו. ברגע שהערך מוצפן, כל פלט נראה זהה במבנהו לכל פלט אחר — וזהו היסוד של פטריוּת (fungibility), התכונה שלפיה יחידת XMR אחת ניתנת להחלפה בכל יחידה אחרת, ללא היסטוריה "מזוהמת" שסוחר או בורסה יוכלו לסרב לה. החשיבות של זה רק גדלה משנה לשנה. אחרי ש-Binance הסירה את XMR ממסחר בתחילת 2024, וכמה בורסות אירופיות הלכו בעקבותיה, הטיעון בזכות מטבע שאי אפשר לסנן או לרשום ברשימה שחורה את היחידות הבודדות שלו רק התחזק.
מה RingCT באמת ואיך היא עובדת
החצי של ה-"CT" ב-RingCT — Confidential Transactions — הוא החלק שמסתיר סכומים, והוא נשען על פיסת קריפטוגרפיה שנקראת התחייבות פדרסן. החצי של ה-"Ring" קושר את הסתרת הסכום הזו לתוך מנגנון חתימות הטבעת הקיים של Monero, כך שגם השולח נשאר אנונימי. הכי קל להבין כשמפרקים את שני הרעיונות בנפרד.
התחייבויות פדרסן: להצפין מספר ועדיין לעשות עליו חשבון
התחייבות היא דרך לנעול ערך כך שלא תוכלו לשנותו בדיעבד, מבלי לחשוף מהו. התחייבות פדרסן לסכום נראית כך: C = xG + aH, כאשר a הוא הסכום האמיתי, x הוא סוד אקראי שנקרא גורם הסוואה (blinding factor), ו-G ו-H הן נקודות קבועות על עקום אליפטי. גורם ההסוואה הוא מה שהופך את ההתחייבות לאטומה: בלעדיו, שני פלטים בעלי אותו ערך היו מייצרים התחייבויות שנראות שונה לחלוטין, כך שאי אפשר לזהות שהם שווים.
התכונה הקסומה היא שההתחייבויות הללו חיבוריות, או הומומורפיות. חברו את ההתחייבויות של כל הקלטים בעסקה, חברו את ההתחייבויות של כל הפלטים בתוספת העמלה, ואם הסכומים האמיתיים מאוזנים — שני הסכומים הם התחייבות לאותו ערך כולל. השולח מסדר את גורמי ההסוואה כך שקלטים פחות פלטים שווים להתחייבות לאפס. כל צומת ברשת יכול לבדוק את המשוואה הזו — ולוודא שלא נוצרו ולא הושמדו מטבעות — מבלי ללמוד אי פעם ולו סכום בודד בעסקה.
כל הטריק של RingCT הוא שהרשת יכולה להוכיח שהמאזן מדויק עד לסטושי, ובו-זמנית להיות חסרת יכולת מתמטית לקרוא ולו שורה בודדת מתוך החשבון.
הוכחות טווח: מניעת יצירת מטבעות יש מאין
למאזן ההומומורפי יש פרצה מסוכנת אחת. מכיוון שהסכומים מוסתרים, שולח זדוני יכול לנסות להתחייב לסכום שלילי — שבזכות אריתמטיקה מודולרית היה "מתגלגל" ונהפך למספר חיובי עצום, ומאפשר לו להמציא XMR משום מקום. כדי למנוע זאת, כל פלט חסוי נשלח בלוויית הוכחת טווח (range proof): ערובה קריפטוגרפית לכך שהסכום שהתחייבו אליו יושב בתוך טווח חוקי — בין אפס לבין 2⁶⁴ — מבלי לחשוף היכן בתוך הטווח הזה הוא נמצא.
הוכחות הטווח הן המקום שבו שכן רוב הנפח והעלות של RingCT, וגם המקום שבו התרחשו השיפורים הגדולים ביותר. המימוש המקורי מ-2017 השתמש בחתימות טבעת בורומיאניות (Borromean), שהיו נכונות אך מסורבלות: עסקה טיפוסית עם שני פלטים נשאה כ-13 קילובייט של נתוני הוכחת טווח, מה שהפך את עסקאות Monero לגדולות ואת העמלות לגבוהות יחסית. החלפת המנגנון הזה הייתה סיפור האופטימיזציה המרכזי של הפרוטוקול מאז ועד היום.
האבולוציה של RingCT: Bulletproofs, Bulletproofs+ ו-CLSAG
RingCT אינה דבר קבוע — היא תוכננה מחדש כמה פעמים דרך ה-hard forks של Monero, שמתרחשים בערך פעמיים בשנה, ובכל פעם הפכה קטנה ומהירה יותר תוך שמירה על אותן ערובות פרטיות. השדרוגים המרכזיים:
| שדרוג | הופעל | מה השתנה |
|---|---|---|
| RingCT (Borromean) | ינואר 2017, חובה מספטמבר 2017 | הציג סכומים מוסתרים באמצעות התחייבויות פדרסן והוכחות טווח בורומיאניות. |
| Bulletproofs | אוקטובר 2018 | החליף את ההוכחות הבורומיאניות; קיצץ את הוכחת הטווח של עסקה דו-פלטית מ-~13 ק"ב ל-~2.5 ק"ב, צמצם את גודל העסקה הכולל ב-~80% ואת העמלות ב-95% ומעלה. |
| CLSAG | אוקטובר 2020 | החליף את חתימות הטבעת מסוג MLSAG; חתימות קטנות בכ-25% ואימות מהיר יותר באופן ניכר. |
| Bulletproofs+ | אוגוסט 2022 | שכלל את Bulletproofs לקיצוץ נוסף בגודל ולאימות מהיר יותר; אותו fork הגדיל את גודל הטבעת ל-16 והוסיף תגיות צפייה (view tags). |
Bulletproofs, שהושק ב-hard fork של אוקטובר 2018, היה נקודת המפנה. המעבר להוכחת טווח בגודל לוגריתמי גרם לנתונים המצורפים לכל עסקה לקרוס, והעמלה החציונית צנחה מדולרים לשברי סנט. זהו השינוי הבודד שאחראי יותר מכל אחר לכך ש-Monero זול לשימוש כיום. Bulletproofs+ באוגוסט 2022 סחט שוליים נוספים והאיץ את האימות — מה שחשוב, כי כל צומת חייב לבדוק כל הוכחה.
צד חתימות הטבעת התפתח במקביל. CLSAG (ראשי תיבות של Concise Linkable Spontaneous Anonymous Group signatures) החליף את מבנה ה-MLSAG הישן באוקטובר 2020, והפך את רכיב הסתרת השולח לקטן ומהיר לאימות בכרבע. אותו fork מאוגוסט 2022 שהביא את Bulletproofs+ גם העלה את גודל הטבעת מ-11 ל-16 — כלומר כל פלט שמוצא כעת מוסתר בין 15 מסיחים במקום 10 — והציג את תגיות הצפייה, אופטימיזציה קטנה שמאפשרת לארנקים לדלג על רוב העבודה כשהם סורקים את השרשרת בחיפוש אחר כספים נכנסים.
איך נבנית עסקת RingCT, צעד אחר צעד
כדאי לראות איך החלקים מתחברים כשהארנק שלכם שולח XMR. שום דבר מזה אינו דורש פעולה מצידכם — הארנק עושה את הכול בשנייה-שתיים — אך הבנת הרצף מפזרת את המסתורין סביב מה שבאמת נמצא על השרשרת.
- בחירת הקלט האמיתי והמסיחים. הארנק בוחר את הפלט שאתם באמת מוציאים, ושולף 15 פלטים אמיתיים נוספים מהשרשרת כדי לשמש כמסיחים, ויוצר טבעת של 16 מקורות סבירים.
- יצירת דמות מפתח (key image). דמות מפתח ייחודית נגזרת מהפלט האמיתי. זה מה שמאפשר לרשת לזהות הוצאה כפולה, ובכל זאת אי אפשר לקשר אותה בחזרה לאיזה חבר בטבעת היא שייכת.
- יצירת פלטי חמקן. עבור כל נמען, הארנק מחשב כתובת חמקן חד-פעמית, כך שלא ניתן לקשר את התשלום לכתובת הציבורית של המקבל.
- התחייבות לסכומים. כל סכום פלט עטוף בהתחייבות פדרסן עם גורם הסוואה אקראי, וגורמי ההסוואה מאוזנים כך שקלטים פחות פלטים פחות עמלה מתחייבים לאפס.
- צירוף הוכחות הטווח. הוכחת טווח מסוג Bulletproofs+ נוצרת עבור כל פלט, ומוכיחה שהסכום המוסתר אינו שלילי ונמצא בטווח.
- חתימה ב-CLSAG ושידור. חתימת הטבעת CLSAG מאשרת את ההוצאה בשם הטבעת כולה, והעסקה מועברת הלאה — מופצת דרך Dandelion++ כדי לטשטש את כתובת ה-IP המקורית עוד לפני שהיא מגיעה ל-mempool הציבורי.
התוצאה שנוחתת על שרשרת הבלוקים אינה מכילה שולח קריא, מקבל קריא או סכום קריא — רק התחייבויות, הוכחות וטבעת של אפשרויות — ובכל זאת היא ניתנת לאימות מלא על ידי כל צומת.
מה עסקאות חסויות אומרות עבורכם בפועל
התמורה המעשית של RingCT היא פטריוּת ועמידות בפני מעקב, והיא צצה במצבים קונקרטיים. קחו לדוגמה פרילנסר ישראלי שמקבל תשלום בקריפטו. על שרשרת שקופה, כל לקוח יכול לראות את היתרה המלאה של הארנק ואת כל שאר התשלומים שהוא קיבל אי פעם; כתובת אחת שנחשפה מסגירה את הכול. ב-Monero, התשלום הנכנס הוא פלט חמקן עם סכום מוסתר — הלקוח אינו לומד דבר מעבר לעסקה ששלח בעצמו.
זה גם משנה את האופן שבו "ניתוח שרשרת" פועל נגדכם. חברות שמוכרות פורנזיקה של בלוקצ'יין בנו את העסק שלהן על אשכול כתובות ומעקב אחר סכומים. RingCT מסירה את אות הסכום לחלוטין, חתימות הטבעת מעכירות את המקור, וכתובות החמקן שוברות את הקשר ליעד. אין יתרה לחפש ואין שובל כספי נקי לעקוב אחריו — וזו בדיוק הסיבה שאיתור מטבעות פרטיות נותר בעיה לא פתורה ולא מוצר מדף.
זו גם הסיבה שאופן הרכישה משנה. אם תקנו XMR בזירה נתונה למעקב כבד שקושרת את זהותכם לפלט ספציפי על השרשרת, יצרתם נקודת התחלה ידועה גם אם השרשרת עצמה פרטית. שימוש בשירות החלפה כמו MoneroSwapper, שאינו מנהל חשבון ואינו דורש מסמכי זיהוי, שומר על הקפיצה הראשונה הזו נקייה — כך שהחיסיון ש-RingCT מספקת על השרשרת אינו נשחק בגלל שובל נייר מחוץ לשרשרת. שום דבר מזה אינו ייעוץ מס — בישראל, רשות המסים עדיין מתייחסת למימוש מטבעות קריפטו כאל אירוע מס החייב במס רווחי הון, ללא קשר לכמה השרשרת פרטית — אבל זה כן אומר שהרשת עצמה אינה משדרת את מצבכם הכספי לכל מי שיש לו סייר בלוקים.
לאן RingCT צועדת הלאה: FCMP++
הסתרת הסכום של RingCT איתנה כסלע, אך לאנונימיות השולח שלה יש תקרה תיאורטית: טבעת של 16 פירושה שההוצאה האמיתית היא אחת מ-16 מועמדות, וניתוח סטטיסטי יכול מדי פעם לכרסם בסיכויים האלה. התשובה של Monero, שנמצאת בפיתוח פעיל לאורך 2025 ו-2026, היא FCMP++ — הוכחות חברוּת על כל השרשרת (full-chain membership proofs). במקום להסתיר הוצאה בין 15 מסיחים, FCMP++ תסתיר אותה בין כל פלט כשיר שאי פעם התקיים על השרשרת, ותרחיב את קבוצת האנונימיות מ-16 לעשרות מיליונים.
חשוב להבין: FCMP++ מחליפה את רכיב חתימת הטבעת, לא את רכיב העסקה החסויה. התחייבויות פדרסן והוכחות הטווח של Bulletproofs+ שמסתירות סכומים נשארות במקומן; מה שמשתנה הוא האופן שבו מוכיחים חברוּת בקבוצת הפלטים הניתנים להוצאה. רחוק יותר באופק, פרוטוקול העסקאות Seraphis ושיטת הכתובות Jamtis תוכננו להיבנות על היסוד הזה. הלקח למשתמשים פשוט: פרטיות הסכומים באמצעות RingCT היא חלק בשל ומיושב ב-Monero, והפרוטוקול ממשיך לחזק את החלקים שסביבה.
שאלות נפוצות
מה RingCT באמת מסתירה?
RingCT מסתירה את הסכום של עסקת Monero. היא מצפינה כל ערך בתוך התחייבות פדרסן, כך שהמספר לעולם אינו נכתב בטקסט גלוי על שרשרת הבלוקים, ובו-זמנית עדיין מאפשרת לכל צומת לאמת שהקלטים שווים לפלטים בתוספת העמלה. השולח והמקבל מוסתרים על ידי מנגנונים נפרדים — חתימות טבעת וכתובות חמקן — ש-RingCT עובדת לצידם.
אם הסכומים מוסתרים, איך הרשת מונעת מטבעות מזויפים?
שני אמצעי הגנה. התכונה ההומומורפית של התחייבויות פדרסן מאפשרת לצמתים לוודא שהקלטים והפלטים המוסתרים מתאזנים לאפס, כך שאין יצירה או השמדה של ערך. ובנוסף, הוכחת טווח שמצורפת לכל פלט מבטיחה שהסכום שהתחייבו אליו אינו שלילי ונמצא בטווח חוקי, וחוסמת את טריק הגלישה שסכומים שליליים מוסתרים היו מאפשרים אחרת.
מה ההבדל בין RingCT לחתימות טבעת?
הן פותרות בעיות שונות ולעיתים קרובות מתבלבלים ביניהן כי השמות חופפים. חתימות טבעת מסתירות מי שלח עסקה על ידי חתימה בשם קבוצה של מוציאים פוטנציאליים. RingCT מסתירה כמה נשלח באמצעות התחייבויות חסויות. RingCT משלבת את השתיים כך ששתי ההגנות חלות על אותה עסקה.
האם Bulletproofs החליף את RingCT?
לא. Bulletproofs ו-Bulletproofs+ הם שדרוגים בתוך RingCT — ספציפית לרכיב הוכחת הטווח. הם החליפו את הוכחות הטווח הבורומיאניות הישנות והמסורבלות, וקיצצו את גודל העסקה בכ-80% ואת העמלות בלמעלה מ-90%, אך מסגרת RingCT הכוללת והסכומים המוסתרים שלה נותרו זהים.
האם RingCT תוסר כש-FCMP++ תושק?
לא. FCMP++ עתידה להחליף את חתימות הטבעת של Monero בהוכחות חברוּת על כל השרשרת, ולהגדיל באופן דרמטי את קבוצת אנונימיות השולח. מנגנון הסכום החסוי — התחייבויות פדרסן והוכחות הטווח של Bulletproofs+ — צפוי להישאר. במילים אחרות, FCMP++ מחזקת את פרטיות השולח מבלי לבטל את פרטיות הסכום ש-RingCT מספקת.
סיכום
RingCT היא סוסת העבודה השקטה של הפרטיות ב-Monero: היא הופכת כל סכום על השרשרת להתחייבות שהרשת יכולה לאמת אך איש אינו יכול לקרוא, וכל זאת בעוד הוכחות הטווח שומרות על ההיצע ישר. בשילוב עם חתימות הטבעת שמסתירות את השולח וכתובות החמקן שמסתירות את המקבל, זו הסיבה שפלט Monero נראה זהה לכל פלט אחר ואי אפשר לסנן אותו, לרשום אותו ברשימה שחורה או לעקוב אחריו לפי ערך. דרך Bulletproofs, Bulletproofs+ ו-CLSAG הוא רק נעשה זול ומהיר יותר, ועם FCMP++ באופק הפרטיות שסביבו רק ממשיכה להתעמק. אם אתם רוצים מטבעות שנושאים את ההגנה הזו מהרגע שאתם מקבלים אותם, תוכלו לקנות Monero באנונימיות דרך MoneroSwapper ולתת ל-RingCT לעשות את השאר ברגע שתבצעו עסקה.
🌍 קרא בשפה