מה נשבר בארנק החם של הבורסה בעומס שיא
הארנק החם של הבורסה הוא המעגל היחיד שבו חתימת טרנזקציות ומשיכת כספים פועלות באופן סינכרוני עם בקשת הלקוח. בעומס יציב הוא נראה אמין: התור ריק, החתימות מסתיימות בשניות, היתרות מתאמות.
צוואר הבקבוק של משיכת הכספים מתגלה בשיא — בעת משיכה המונית או תנודה חדה בשוק, כשבדקה אחת מגיע נפח המחושב לשעה שלמה.
הראשון שנכנע הוא צומת החתימה. אם המפתחות חיים בעותק אחד של מודול חומרה או בתהליך אחד, כשל של צומת החתימה עוצר את כל המשיכה — לא פעולות בודדות, אלא את התור כולו.
ניסיונות חוזרים עם השהיה לא מצילים כאן: זמן ההמתנה גדל, המפעילים מתחילים לפרק ידנית את העומסים, ואישורים ידניים אוכלים את יתרת תפוקת המערכת.
בהמשך מתפצל החשבונאות. החיוב במסד הנתונים טרם אושר ברשת, טרנזקציה תקועה תופסת מקום בתור וחוסמת את הבאות — הכתובת אינה יכולה לחתום פעולה חדשה עם אותו מונה. פעולות כאלה מזרזים בהחלפה לפי עמלה או מסירים ידנית, ובזמן הזה המשיכה עומדת, והיתרות נדרשות להתאמה בנפרד ממצב הרשת.
עומס שיא על המשיכה חושף את העיקר: מגבלות, ניסיונות חוזרים והגנה מפני שליחה כפולה כמעט תמיד מכוונים לזרימה ממוצעת, ולא לתרחיש הגרוע ביותר. אנו מפרקים כיצד זה נסגר — הפרדת מעגלי חתימה, תור עמיד בכשלים והתדרדרות צפויה מראש במקום עצירה.
האפקט של מעגל חתימה מנוהל: מהירות, מגבלות, כשלים
מעגל חתימה מנוהל נבחן לא בהצהרה, אלא בסט מדידות על מעגל בדיקה ומעגל ייצור. להלן רשימה שלפיה אנו מקבלים את העבודה: כל סעיף או מאושר בלוג ובמדד, או נחשב כלא סגור.
| בדיקה | מצב רצוי | כיצד מאשרים |
|---|---|---|
| זמן מעבר המשיכה | הבקשה מגיעה לשידור ברשת בתוך חלון השירות | מדידה מקבלת הבקשה ועד שליחת הטרנזקציה החתומה |
| שיעור החתימות האוטומטיות | רוב הבקשות נסגרות ללא מפעיל, חתימה ידנית — רק מעל הסף | יחס החתימות האוטומטיות למספר הכולל בחלון זמן |
| מגבלות על משיכה | ספי נכס, כתובת ותקופה פועלים לפני החתימה | יומן הפעלות ובקשות שנדחו |
| סוג הכשל | חתימה שגויה, החלפת כתובת וחזרה על טרנזקציה אינם עוברים | בדיקות שליליות במעגל הבדיקה וניתוח תקלות |
| השבתת משיכת הכספים | בעת כשל של צומת החתימה המשיכה נמשכת | ניתוק הצומת תחת עומס ומדידת ההשהיה |
המפתחות נשמרים במודול חומרה מסוג YubiHSM — חשיפה של צומת אחד אינה מאפשרת להרכיב חתימה. התנהגות בעת כשל של צומת נבדקת בנפרד: המעגל החלופי קולט את הזרימה, השהיית המשיכה נמדדת בשניות, ותור הבקשות אינו הולך לאיבוד.
את המדידות אנו מתעדים בדוח הקבלה, כדי שניתן יהיה לבדוק מחדש את המגבלות ואת סוגי הכשל לאחר כל שינוי בסכמה.
המעגל החם: מצבי חתימה ואחסון מפתחות
הארנק החם פועל תחת עומס: תור משיכות, חתימה אוטומטית, מגבלות על כתובת הנמען. מפתח השוכן כולו בתהליך אחד על שרת הבורסה הוא נקודת כשל יחידה: חשיפה של תהליך זה מוסרת לתוקף את כל המלאי ומאפסת את כל סכמת ההרשאות.
לכן המעגל נבנה כך שאף צומת לא יחזיק את המפתח כולו, וניתן יהיה להחמיר את מצב החתימה בלי לעצור את עיבוד הבקשות.
הסכמות שלהלן נבדלות זו מזו במיקום שבו חי חומר המפתח ובמספר הצדדים הבלתי תלויים המשתתפים בהרכבת החתימה. הפרדת חלקי חתימה בסכמת סף (MPC) סוגרת את הסיכון של נקודת כשל יחידה: החתימה נבנית מחלקים, והמפתח במקום אחד אינו קיים לעולם.
| אפשרות | מתי מתאימה | מגבלות |
|---|---|---|
| הפרדת חלקי חתימה | זרימת משיכות אוטומטיות ללא נקודת חשיפה יחידה | ביקורת ושחזור מורכבים יותר, נדרש מתאם לסשנים של חתימה |
| אחסון מפתחות חיצוני | נדרשת מקוריות מאושרת של המפתח והפרדת תפקידי המהנדסים | השהיית רשת בכל חתימה, מגבלת פעולות, נדרש מודול חלופי |
| מעגל ריבוי חתימות | את החיוב מאשרים כמה צדדים בלתי תלויים — גזברות ובקרת סיכונים | משקל הטרנזקציה גדל, נדרשת תמיכה מצד הרשת |
| צומת מבודד | פעולות גדולות ומלאי, שבהם המהירות אינה קריטית | הליך העברה ידני, אינו עומד בזרימת המשיכות האוטומטיות |
| סכמה היברידית | סוגים שונים של פעולות עם דרישות שונות למהירות | יותר צמתים ותקנות בתחזוקה |
בפועל נוטים לרוב לבחור בהיברידי: הפרדת חלקי חתימה מחזיקה את הזרימה המהירה, אחסון חיצוני מאשר את מקוריות המפתח, וצומת מבודד סוגר פעולות גדולות. מצב החתימה מוחלף לפי ספי נפח, ולא ידנית.
שלבי העבודה: מביקורת הזרימות ועד מסירת התקנות
את העבודה על הארנק החם של הבורסה אנו מבצעים ברצף קבוע: תחילה מבינים כיצד הכסף באמת נע במערכת, ורק אחר כך כותבים קוד. אם מתחילים מההגדרה, סכמת אחסון המפתחות מתקבעת באקראי — ונאלצים לעצב אותה מחדש תחת עומס, כשעל החשבונות מונחים כספים חיים.
- ביקורת זרימות. בוחנים כיצד בקשת משיכה עוברת מהממשק החיצוני ועד לחתימה: אלו תורים, ניסיונות חוזרים, היכן אפשרית שליחה כפולה, מי יוזם את הטרנזקציה ולפי פקודת מי היא יוצאת לרשת.
- מיפוי מלאי מפתחות. מתעדים אילו מפתחות קיימים, היכן הם נמצאים, למי יש גישה, אלו כפילויות ופתרונות "זמניים" נותרו אחרי השקות מהירות.
- תכנון הסכמה. מפרידים תפקידים: שכבה חמה עם מגבלות יומיות על משיכות אוטומטיות, מעגלי ביניים וקור לסכומים גדולים, קוורום חתימות.
- הגדרה ובידוד. מרכיבים מעגלים, סוגרים הרשאות לפי עקרון ההרשאה המינימלית, מפעילים רישום יומן של כל פעולה עם חתימה, מגדירים רוטציה.
- בדיקת עומס. מריצים תרחישי שיא: כיצד מתנהג תור הבקשות בעת משיכות המוניות, מה קורה בעת כשל של צומת החתימה.
- תוכנית נסיגה. מתארים ומתרגלים בתרגילים: מעבר למצב קר, ביטול הרשאות, החלפת מפתח שנחשף, שחזור מגיבויים.
- מסירת התקנות. מוסרים תיעוד, מטריצת תפקידים, הנחיות למשמרת תורנית ומבצעים הדרכת צוות, כדי שהארנק יופעל לפי כללים ולא מהזיכרון.
תיעוד, סכמות מפתחות ותקנות שחזור
התיעוד של הארנק החם של הבורסה אינו דוח לשמור על המדף, אלא מעגל עבודה: לפיו מקבלת המשמרת התורנית החלטות כשהחשבון נמדד בדקות. אנו מוסרים אותו כחלק מהתוצאה, ולא כנספח לשחרור, ומחזיקים אותו במאגר של הלקוח, כדי שהעדכון ייעשה יחד עם הקוד ולא כמסמך נפרד שמתיישן בהכרח.
- סכמת מפתחות — היכן נוצר חומר המפתח, היכן נשמר ואיזה רכיב פונה אליו; בנפרד מסומנים נתיבים שאסור שיהיו במעגל החם, ונקודות שבהן החתימה עוברת לרכיב חיצוני.
- מטריצת הרשאות — אילו תפקידים ובאיזה מנגנון אישור יכולים ליזום חתימה, לשנות מגבלות, להוסיף כתובות לרשימה הלבנה; לכל תפקיד מצוין סדר האישור והאיסור על פעולה יחידנית.
- תקנון רוטציה — לפי אלו אירועים מונפקים מחדש המפתחות (החלפה מתוכננת, עזיבת עובד, חשד לחשיפה), מי מפעיל את ההליך וכיצד מאמתים שהמפתחות החדשים התקבלו לפני ביטול הישנים.
- הנחיית שחזור — החזרה שלב-אחר-שלב של החתימה למעגל החלופי, כולל בדיקת שלמות הגיבויים וחתימת בקרה של טרנזקציית בדיקה לפני החזרה למצב עבודה.
- נוהל ניתוח תקלות — מה מתועד אוטומטית, אילו אירועים מפעילים את התורן, באיזה רגע עוצרים את התשלומים וכיצד מתועדת הכרונולוגיה לניתוח בהמשך.
- תיעוד המעגל — סכמת הפריסה, רשימת התלויות החיצוניות וגבולות האחריות בין הצוות שלנו לשירות התפעול של הלקוח.
- יומן שינויים — כל תיקון של מדיניות ומגבלות עם ציון העילה, המחבר והתאריך, כדי שניתן יהיה לשחזר את ההחלטה גם כעבור חודשים.
סט כזה מסיר את הסיכון העיקרי בתפעול: כשהמעגל עובד, התיעוד אינו נחוץ, וכשהוא מפסיק — מאוחר מדי לשחזר את ההיגיון לפי הקוד. תארו את המשימה — נחזור עם הערכה ותוכנית.
מקרה בוחן: עיבוד מחדש של מעגל החתימה ומגבלות המשיכות
בורסה עם מסחר ספוט וזרימה של משיכות קטנות החזיקה את החתימה באותו שירות שבו היה גם תור הבקשות: המפתחות שכנו לצד המטפל, והפעלה מחדש של התהליך סיכנה חתימה כפולה. להלן — מה היה לפני עיבוד המעגל מחדש, מה שינו וכיצד בדקו את התוצאה.
לפני: חתימה בתהליך משותף
זמן החתימה הממוצע עמד על כ-40 שניות — הבקשה חיכתה להתפנות התהליך החותם, ובשיאים התור גדל פי כמה. לא היה מזהה אידמפוטנטי: לאחר הפעלה מחדש הטרנזקציה נחתמה פעם שנייה, ומקרים כאלה טופלו ידנית. שיעור המשיכות האוטומטיות לא עלה על 38% — כל מה שמעל מגבלת ברירת המחדל עבר למפעיל.
אחרי: מעגל מבודד ומגבלות תלת-שכבתיות
החתימה הועברה למעגל נפרד על מודול חומרה Ledger Enterprise: המפתח אינו יוצא מהמכשיר, ושירות המשיכה רק יוצר את הבקשה. לכל טרנזקציה הוקצה מזהה — בקשה חוזרת עם אותו מזהה אינה נחתמת. המגבלות פוזרו לשלוש שכבות: כתובת הנמען, הלקוח, המחזור היומי של הפלטפורמה.
זמן החתימה הצטמצם מכ-40 ל-2-3 שניות, שיעור המשיכות האוטומטיות — מ-38% ל-92%. סירובים בגלל מגבלות וחתימות כפולות חדלו להיווצר: בתקופת התצפית לא נרשם אף כפילות.
בדיקה לאחר ההטמעה
בשבועות הראשונים המעגל החדש פעל במצב צל — חתימות נאספו במקביל לישנות, כל אחת הושוותה לפי האש של הטרנזקציה ולפי רשומות יומן הביקורת. לאחר המעבר הרצנו מדידות בקרה של השהיות תחת עומס ורגרסיה על חתימה כפולה; לא נמצאו אי-התאמות עם התקן.
במה נבדל מעגל החתימה מאחסון קר?
אלו אינם שני פתרונות מתחרים, אלא שני מעגלים עם משימות שונות. מעגל החתימה משרת את הזרימה התפעולית: משיכות משתמשים, איחוד פיקדונות, חיזוק נזילות — כל מה שצריך להתבצע בתוך שניות ודקות. אחסון קר מחזיק את עיקר הנכסים ומתחבר לעבודה רק כאשר המעגל החם מיצה את המגבלה.
הגבול ביניהם נקבע לפי חלוקת הכספים, ולא לפי נוחות. חלקם במעגל החם נמדד לפי שיא המשיכות היומי: אם הזרימה היוצאת בשיא נכנסת בתוך מלאי המפתחות והאישורים, המעגל מתמודד בעצמו ואינו חוסם את התור.
תדירות המשיכות חשובה כאן מהנפח הכולל — בורסה עם משיכות גדולות נדירות ובורסה עם זרם מתמיד של טרנזקציות קטנות דורשות מלאי שונה.
סף המשיכה הוא הכלל המרכזי: טרנזקציה מעל הסף אינה נחתמת אוטומטית, אלא עוברת לסכמה עם כמה חתימות מפעילים או מבוצעת מהמעגל הקר. את הסף מצמידים למשיכה המקסימלית הצפויה ולפרופיל הסיכון, ולא לערך הממוצע — אחרת המשיכה הראשונה שאינה טיפוסית נתקלת בסירוב ובעיבוד ידני ברגע הכי לא מתאים.
הזרמת המעגל החם מתוכננת מראש: העברות באצוות לפי לוח זמנים או בהגעה לסימן התחתון, עם עיגול לגדלים שבהם עלויות הרשת אינן אוכלות את משמעות הפעולה. מעגל חתימה חלופי נדרש למקרה של אי-זמינות של הראשי: סט מפתחות שני ונתיב משיכה בלתי תלוי, כדי שעצירה של צומת אחד לא תשתק את התשלומים.
ההחלטה מתקבלת לפי מדדים: פיזור המשיכות לפי גודל, שיא יומי ושעתי, שיעור הפניות לאחסון הקר. השורה התחתונה המעשית — המהירות בתוך המגבלה מובטחת בידי מעגל החתימה, וכל מה שמעל הסף או מחוץ ללוח השיא עובר למלאי הקר.
ספקות לגבי מפתחות, מגבלות ועמידות בכשלים
החששות בנוגע לארנק החם נוגעים לא לסכמת החתימה עצמה, אלא לאופן שבו היא תעבור תקלה ותשתלב במעגל הקיים. להלן — ניתוח הספקות שעולים לרוב לפני תחילת העבודה.
האם ניתן לשפר את המעגל הקיים באופן חלקי?
כן, אם משיכת הכספים תבודד מאחורי שירות חותם נפרד. חשבונאות היתרות, המגבלות ותור הטרנזקציות נשארים במקומם, והעבודה עם המפתחות עוברת למודול נפרד. היקף שיפור חלקי כזה דורש פחות זמן ומאפשר להרחיב את בדיקות החתימה באופן איטרטיבי, בלי לגעת בליבת החשבונאות.
מה יקרה בעת חשיפה של מפתח אחד?
המפתחות מופרדים לפי ייעוד: נפרדים למשיכה חמה, נפרדים להעברות פנימיות. חשיפה של אחד אינה פותחת גישה לשאר — מגבלות יומיות ומגבלות כתובת מצמצמות את הנזק, ורוטציית המפתח מתבצעת לפי התקנון, בלי לעצור את המשיכה. טרנזקציות שנחתמו במפתח שבוטל נחסמות לפי היומן.
כיצד המעגל שורד כשל של צומת ובמה מאושרת תקינות החתימות?
החתימה נבנית לפי קוורום: נפילה של צומת אחד אינה חוסמת את המשיכה, ההחלטה מתקבלת ברוב. התור ומוני החזרות נשמרים מחוץ לצומת, ולכן לאחר הפעלה מחדש המעגל ממשיך מאותה טרנזקציה ואינו משכפל חיובים. תקינות החתימות מאושרת בסט בדיקות: התאמה לכתובת, הזנה חוזרת, סירוב בעת מפתח שגוי או חריגה ממגבלה.
נדון במשימה: מה לשלוח להערכה ולתוכנית
כדי לחזור עם הערכת עבודות ותוכנית הטמעה, ולא עם ניסוחים כלליים, דרושים נתוני רקע על הסכמה הנוכחית שלכם. חלק מהסעיפים נסגור בשיחה אחת, את השאר נבהיר תוך כדי — שלחו כפי שזה, כולל סכמות ותצורות.
- רשתות ונכסים ביעד: כמה בלוקצ'יינים, נכסים מקוריים ומטוקנים, האם נדרשים חוזים חכמים, סטייקינג ותשלומים במקביל למספר רב של כתובות.
- נתוני עומס: תדירות שיא של משיכות, נפח טרנזקציות יומי, מספר כתובות משתמשים, השהיה מותרת מהבקשה ועד החתימה.
- סכמת המפתחות הנוכחית: היכן המפתחות נמצאים כעת, מה במעגל החם, הביניים והקר, האם מופעל מודול חומרה להגנה, האם בשימוש חתימת סף או ריבוי חתימות.
- סדר ייזום החתימה: מי יוצר את הבקשה, כיצד מאושרים חיובים גדולים, אילו מגבלות על משיכה וכיצד מופרדות הרשאות המפעילים.
- תשתית: שרתים משלכם או ענן, דרישות תחום שיפוט ובידוד, קיום מעגל חלופי ונוהל שחזור.
- אינטגרציות: כיצד שירותים פנימיים מעבירים בקשת משיכה, מה כבר נעשה בבדיקות תאימות, מגבלות ותיעוד יומן של פעולות.
- מה כואב כעת: חתימות ידניות, השהיות, כשלי שירות, הערות ביקורת — מקרים קונקרטיים עוזרים לסדר עדיפויות בתוכנית השלבים.
- מועדי ההשקה ודרישות הרגולטור, אם כבר נקבעו.
תארו את המשימה — נחזור עם הערכת עבודות, סכמת הגנת מפתחות ותוכנית שלבי ההטמעה.







