מושג מתחום התכנות המתאר הקצאת מצבורי שטחי זיכרון בעלי גודל אחיד בכדי להשיג יעילות ומהירות המאפיינים מערכות זמן אמת. התוכן במאמר זה מכוון לבעלי רקע בתחום המטבעות הדיגיטליים ו/או קריפטוגרפיה ו/או תכנות. במידה ואתם לא בטוחים הקליקו כאן לכל מה שכדאי לדעת קודם.

מאגר זיכרון בתחום המטבעות דיגיטליים (קריפטוגרפים) בבסיסו זהה אך כמו ברכיבים נוספים אחרים במערכת המטבע גם כאן נעשו התאמות ושינויים לרכיב חשוב מעין זה בכדי לשלבו בהצלחה כחלק מתהליך העיבוד המידע ברשת המטבע. עסקאות הממתינות לאישור (עסקאות שטרם נכללו בבלוק) מאוחסנות במאגר זיכרון של עסקאות, בשלב זה גם עסקאות לא חוקיות מזדון או סיבות אחרות כגון פרוטוקולים שלא מולאו כנדרש וכו' נכנסות גם כן לאותו המאגר, המגבלה היחידה היא שהעסקה חייבת להכיל קלט בהתאם לפרוטוקול. מאגר הזיכרון הוא התחנה הראשונה לכל עסקה בדרך לאישור סופי והוא כאמור משמש כמקום אחסון עד כניסה לבלוק. למשל, כאשר הבלוק "מלא" (מקסימום1 מגה בייט של מידע בפרוטוקול ה P2P ) או עסקאות שהיו בבלוק בפיצול הקצר והרשת לא המשיכה לעבד אותם, עסקאות שנדחו ע"י הכורה בגלל שלא צורפה אליהם עמלה (לכורים יש יכולת לקבוע סף כניסה לבלוקים שהם בונים) ועסקאות יתומות (קיים קלט אבל בכל זאת ישנה בעיה בפרוטוקול)[1], כל אלו בין היתר ימתינו במאגר הזיכרון עד לביצוע התהליך בהתאם לסטטוס שלהם (חוקי=כניסה לבלוק, לא חוקי=דחייה, יתום וכו'=דחייה וכו').

היכן נמצא מאגר הזיכרון?

לכל כורה מאגר זיכרון מובנה כחלק מן המערכת שלו. המאגר מכיל את כל אותן עסקאות המחכות לתורן. כלומר, או כניסה מוצלחת לבלוק שכרגע בתהליך בניה או ביטול/דחייה בגלל אי מילוי מוצלח לפרוטוקולים עד שלב זה. במידה ועסקה עברה את כל הבדיקות וכל הפרוטוקולים מולאו בהצלחה עליה לעבור בדיקה נוספת לפני שתוכל להיכנס לבלוק. תפקידה של בדיקה זו היא לבדוק את סכום העמלה שצורפה לעסקה והאם הוספת סכום זה לסה"כ העמלות שכבר מרכיבות את הבלוק הוא פחות משווי הנפקת המטבעות החדשים המצורפים לכול בלוק בזמן בנייתו. במילים אחרות, בדיקה זו נעשית בכדי להבטיח שהשווי הכולל של עסקת בסיס המטבעות (Coinbase) לא חורג מסה"כ העמלות המצורפות לעסקאות באותו הבלוק, כיום ברשת ביטקוין ערך עסקת בסיס הוא 25 מטבעות (אלו המטבעות החדשים המונפקים בכול בלוק) לכן סה"כ סכום העמלות מכל העסקאות בבלוק חייב להיות פחות מ 25 מטבעות [2].

תמצות העסקאות (SHA256). בכדי להיכנס לבלוק עסקה עוברת תהליך תמצות. לפני התהליך העסקה יכולה להראות כך:

01000000012a06ea98cd40ba2e3288262b28638cec5333c1456aaf5eedc8e9e
5a20f062bdf000000008a433044022030e2d23be31a903a3ad3de846b3bbe
8886c4a839e1aa2cf0d314b1d323f12d2a022039318fc3886a131e4ec2b138e6
543b03dd326ef3f12295d06e351e3c02010068014104e0ba531dc5d2ad13e2
138196ade1a23989088cfbeddc3886528412083f4bff2ebc19ce339f25a63056
b6026a269983fcf5383131440501b583bab30a3254b09effffffff01b02e052a
010000001936a9142dbde30815faee5bf221d6688ebad3e12f3b2b1a88ac00
000000

לאחר התמצות העסקה יכולה להראות כך:

2d94683fa2f8agge4a6f377d93b87i8680adf96b9c3e54733554b742f412f19aj

סדר יציאת העסקה ממאגר העסקאות

סדר היציאה מן המאגר לתוך בלוק נקבע באופן אוטומטי ומראש ע"י הכורים, מכיוון שהם אחראיים לעיבוד העסקאות יש להם את היכולת לקבוע חסמים והעדפות. עסקה שצורפה אליה עמלה גבוה תצא קודם מן המאגר שכן הכורים ירצו אותה כחלק מבניית הבלוק ומכיוון שניתן להגדיר חסמים הרבה כורים פשוט מתעלמים מעסקאות ללא עמלות או כאלו עם עמלות שלא עומדות בסף הכניסה שהם קבעו לכן בדרך כלל עסקאות אלו נמצאות הרבה יותר זמן במאגר הזיכרון, הבלוק מסודר מהגבוה לנמוך (מבחינת עמלות). יחד עם זאת ברגע שעסקה נכנסת לבלוק אין זה משנה אם היא כוללת עמלה או לא. תהליך העיבוד, הרישום ועדכון שרשרת הבלוקים הוא רגיל וללא התחשבות בסכום העסקה, בעמלה וכו'

פג תוקף לעסקה

לא חלק מפרוטוקול ביטקוין או כל מטבע אחר אבל תיאורטית אפשרי. כאשר מתבצעת עסקה נשלח רכיב המצביע על כך (בקוד עצמו רכיב זה נקרא (tx לכל צומת עיבוד (כורה). הכורים מאחסנים את העסקה בתוך מאגר הזיכרון שלהם ומודיעים על כך לשאר הרשת, אם לאחרים אין את אותה העסקה הם שולחים בקשה בכדי לקבל אותה ולהתעדכן וכך הלאה, זו הדרך להפיץ את המידע ברשת המטבע, בשלב כלשהו העסקה תהיה אצל כולם במאגר הזיכרון. כאשר משתמש סוגר את התוכנה ו/או כורה עושה את אותו הדבר כל הזיכרון נמחק ואתו כל העסקאות "שחיכו שם", כלומר כל העסקאות שלא עברו תהליך עיבוד, כל העסקאות שלא נכללו בתוך בלוק. בכדי שעסקה תעלם או תהיה "פג תוף" צריך שכל הצמתים והמשתמשים של המטבע יכבו את המחשב באותו הזמן ולאותו משך זמן…תאורטית זה אפשרי אבל מעשית ודאי שלא לכן כל עוד ישנו חשמל בעולם רשת המטבע בטוחה מהבחינה הזו. אגב, ברשת ביטקוין אין שום רכיב תלוי זמן לעסקה בפרוטוקול לכן אין שום דרך (למעט כאמור חשמל) שעסקה תהפוך לפג תוקף.

הערות

[1] ישנם מקומות שהם ההתייחסות לכל העסקאות שלא נכנסו לבלוק כיתומות, הדבר אינו נכון. עסקאות יתומות מתייחס לעסקאות עם בעיה בפרוטוקול, ספציפית בעיה בקלט (Input).

[2] מאגר יכול להתקיים גם אצל משתמשים "רגילים" ולא רק אצל כורים.