הגדרת קבלת תשלומי אתריום: ארנק HD וניטור

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

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

הגדרת קליטת את'ר: היכן נשברת זרימת התשלומים

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

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

אם מסלול כזה אינו מתואר, התמיכה פותרת כל מקרה מחדש, וחלק מההעברות הופכות לתשלומים אבודים: הכסף נגבה, ההזמנה לא הופעלה. קטגוריה נפרדת — אישורי עסקאות: זיכוי עם הופעת ההעברה ברשת יוצר התראות שווא, והמתנה ארוכה מדי משאירה את ההזמנה תלויה.

כאן נדרשת לא «אמינות מקסימלית», אלא מדיניות מפורשת: כמה אישורים אנו מחשיבים למספיקים, מה עושים עם העברה שהגיעה מאוחר יותר, וכיצד מסמנים תשלום חלקי. הגדרת קליטת את'ר ב-Ethereum מתחילה בהפרדה של תרחישים אלה — כתובת נפרדת לכל חשבונית, כללים לגבי מועדים והתאמה אוטומטית במקום ידנית. להלן — כיצד זה נסגר ברמת השירות.

מה נותנת קליטת את'ר אוטומטית

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

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

זמן הזיכוי מפסיק להיות תלוי במי שתורן על הדוח. אירוע מהרשת נכנס למערכת החשבונאית בתוך דקות, ולא לאחר בדיקה ידנית בבוקר; תקבולים בלילה ובסופי שבוע מטופלים באותו סדר כמו תקבולים ביום.

סף האישורים מוגדר בהתאם לסיכון: פחות — מוציאים את ההזמנה מהר יותר, יותר — עמידות גבוהה יותר לחזרה של השרשרת.

בנפרד מוסר סוג של כשלים שמקורם בעיבוד ידני: העברה שהוחמצה, זיכוי כפול, תשלום ללא שיוך ללקוח, קישור אבוד בין «סכום — הזמנה». התאמת פעולות מתבצעת מתוך דוח מהבלוקצ'יין, ולכן פער מזוהה מיד ונסגר לפני שהלקוח כותב לתמיכה.

חשבונאות התשלומים מתנהלת במרשם אחיד: כתובת, האש של ההעברה, סכום באת'ר, שער ברגע האישור, סטטוס ומספר אישורים. המרשם מיוצא להנהלת חשבונות ולחיוב, והיתרה בכל כתובת נראית בסיכום אחד — אין עוד צורך באיחוד גיליונות ידני.

מצבי קליטת תשלומים: מכתובת אחת ועד ארנק HD

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

סכימת קליטה מתי מתאימה מגבלות הסכימה
כתובת משותפת אחת תקבולים בודדים, קל לפרק את הזרימה ידנית תשלומים מלקוחות שונים מתערבבים, לא ניתן להתאים העברה להזמנה, לא ניתן להפריד יתרה
כתובת ייעודית ללקוח מספר קטן של צדדים, נדרשת חשבונאות אישית כתובות נשמרות ומוקצות ידנית, עם גידול הבסיס גדלה השגרה, יש להגן על מפתחות בנפרד
מאגר כתובות מארנק HD הפקדות המוניות, יש להנפיק כתובת אוטומטית נדרש ניטור רשת ושליטה במדד הכתובות, מפתח מאסטר — נקודת כשל, טעות במדד שוברת שחזור
קליטה דרך שומר חיצוני לא רוצים להחזיק מפתחות משלהם תלות בשירות זר, עיכובים ומגבלות במשיכה, חלק מהלוגיקה מחוץ לשליטתנו

מה לבחור בפועל

עבור זיכויים המוניים בדרך כלל בוחרים בארנק HD: מאגר הכתובות נגזר דטרמיניסטית ממפתח מאסטר אחד, ולכן הגיבוי נשאר אחד, והשחזור אינו תלוי במספר הלקוחות. המחיר לכך — משמעת ניטור: בלי התחשבות בעומק האישורים ובעיבוד חוזר של בלוקים, קל לספור זיכוי פעמיים או להחמיץ אותו.

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

כיצד אנו פורסים קליטת תשלומים: שלבי העבודה

כל תשלום באת'ר — זה לא «להפעיל ארנק», אלא מסלול מוסכם: כתובת המשויכת לבקשה, אישורים ברשת, זיכוי במערכת החשבונאית ונוהל ברור למקרה שהעסקה נתקעה או בלוק התגלגל לאחור. העבודה מתבצעת בשלבים קבועים — כך בכל שלב רואים מה כבר נבדק ומה עדיין לא.

  1. ביקורת סכימת התשלומים. מנתחים כיצד הכסף מגיע כעת: כיצד כתובות מותאמות לבקשות, היכן פעולות נעשות ידנית, אילו אירועים בכלל נרשמים בלוג. התוצאה — מפת תנועת הכספים ורשימת סיכונים: nonce אבודים, זיכויים כפולים, העברות תקועות שלא טופלו.
  2. תכנון הקליטה. בוחרים מודל כתובות — ארנק משותף, כתובת הפקדה נפרדת לכל בקשה או ארנק HD עם מדד הנפקה ייחודי. קובעים באיזה מספר אישורים התשלום נחשב סופי וכיצד מטפלים בהחלפת עסקה.
  3. הגדרת תשתית. מרימים צופה בלוקים, מגדירים תור אירועים ומקור נתונים גיבוי, מפרידים בין ארנק חם לתשלומים לבין אחסון קר של עיקר הכספים.
  4. חיבור למערכת החשבונאית. כתובת, אירוע ורשומה במסד נתונים מקושרים לפי מפתח אידמפוטנטי: מסירה חוזרת של אירוע אינה יוצרת זיכוי שני. מגדירים התאמה — היא מתכנסת מדי יום עם מצב הרשת.
  5. הרצות בדיקה. מריצים תרחישים ברשת בדיקה ובסכומים קטנים ברשת הראשית: תשלום חסר, תשלום יתר, החזרת בלוק, עסקה תקועה, תשלום לאחר פקיעת החשבונית.
  6. מסירה לתחזוקה. מוסרים סכימת זרימות, קונפיגורציות, נוהל תגובה לאירועים ולוח מחוונים עם יתרה, השהיית אישורים ומספר פעולות לא מותאמות. בהמשך — תמיכה ושכלולים ממוקדים.

קונפיגורציות, הרשאות ונהלים: מה נשאר אצלכם

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

  • קונפיגורציית קליטה — תיאורי שירותי הנפקת כתובות, פרמטרי חיבור לצמתי הרשת, ספי אישורים ומגבלות לעסקה אחת. לפי קבצים אלה הפריסה משוחזרת בסביבה נקייה.
  • סכימת תנועת כספים — המסלול מהתקבול לכתובת הלקוח ועד זיכוי לחשבון הצבירה: היכן כתובות ביניים, באיזה רגע נרשם האישור, כיצד מטפלים בהחזרים ובתשלומי חסר.
  • מטריצת הרשאות — מי מהעובדים יכול מה: הנפקת כתובות, חתימה על תשלומים, צפייה ביתרות, עריכת כללי ניטור. התפקידים מופרדים, מפתחות של מעגלים שונים אינם חופפים.
  • תיעוד — תיאור השירותים, פורמטים של התראות על תקבולים, הוראות לפעולות ידניות וניתוח כשלים אופייניים עם נקודות בדיקה.
  • נוהל תחזוקה — מה לעשות במקרה של אירוע שהוחמץ, עסקה תקועה או אי-התאמה בהתאמה: מי מגיב, באילו מועדים, לפי איזה מסלול הסלמה.
  • נוהל רוטציה ושחזור — כיצד מוחלפים מפתחות חתימה, כיצד מרימים שירות מגיבוי, מה לעשות בחשד לפגיעה באבטחה.
  • התאמה יומית — נוהל השוואת יתרות כתובות מול רשומות פנימיות ותבנית דוח שלפיה הפער נראה לפני תקלה.

מקרה בוחן: זרימת תשלומים של שירות לפני ואחרי ההטמעה

מה היה לפני

קליטת התשלומים הייתה תלויה בארנק משותף אחד, וכל העברה נכנסת התאימה המפעיל ידנית לבקשה. התאמת מנה ארכה 40–50 דקות, בימי שיא עשו אותה פעמיים, והיא עדיין פיגרה אחרי הזרימה.

חלק מהתקבולים נתקעו: כאשר סכומים של שני לקוחות תאמו, הבדיקה נדחתה עד למכתב אישור, והלקוח בינתיים ראה חשבונית לא משולמת.

מה שינו

הוקצה מאגר כתובות: לכל בקשה מונפקת כתובת נפרדת, והקישור «כתובת → בקשה» נמצא במסד נתונים, ולכן ההתאמה מפסיקה להיות תלויה בסכום ההעברה.

הניטור רשום לבלוקים של Ethereum, ממתין למספר האישורים הנדרש ושולח אירוע לחיוב באמצעות וובהוק עם מפתח אידמפוטנטי — מסירה חוזרת אינה יוצרת זיכוי כפול.

מה נהיה

שיעור התשלומים הדורשים התערבות ידנית ירד מ-12% ל-1% — מדובר בהעברות שנויות במחלוקת ובהחזרים. זמן הזיכוי לאחר אישורים התקצר מ-3–4 שעות ל-5–15 דקות, תקבולים תקועים כמעט נעלמו: האירוע מגיע פעם אחת עם שיוך חד-משמעי לבקשה. השעות שהתפנו אצל המפעיל עברו לטיפול בפניות לקוחות, ולא להתאמת דוחות.

מה לעשות אם התשלום כבר מגיע לכתובת קבועה אחת?

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

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

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

ההפרדה עובדת כך: כל כתובת במאגר נגזרת מסודר כללי לפי מספר סידורי, ולכן כל המאגר משוחזר מביטוי גיבוי אחד, והתקבול משויך באופן חד-משמעי לחשבונית ללא בדיקה ידנית. הזרימה הישנה מסומנת לפי מספרי חשבוניות וחלונות זמן, וההתאמה נסגרת אוטומטית.

הסיכונים במעבר נסגרים גם הם מראש. העיקרי — אובדן היסטוריה: אם מכבים כתובת קבועה לפני שהחשבוניות האחרונות נסגרות, התקבולים יפסיקו להיות מקושרים להזמנות. השני — זיכוי כפול בעת העברת מפתחות.

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

שאלות טכניות שנשאלות לפני תחילת העבודה

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

כמה אישורים להמתין עד לזיכוי?

הסף הוא פרמטר קונפיגורציה, ולא קבוע בקוד. מתחילים מערך שאחריו הבלוק כמעט אינו נבנה מחדש: הזיכוי אורך מספר דקות בעבודה תקינה של הרשת. עבור סכומים גדולים הסף גבוה יותר, עבור קטנים — נמוך יותר, כדי לא לעכב את האספקה.

התשלום הגיע לאחר פקיעת החשבונית — מה איתו?

העסקה כבר בבלוק, אי אפשר לבטל אותה. הניטור מתעד את ההעברה ומעביר את הבקשה לסטטוס «תשלום באיחור»: הלקוח מחליט אם לזכות לפי השער העדכני או לבצע החזר תשלום. התרחיש אוטומטי ואינו דורש בדיקה ידנית.

מה יקרה בארגון מחדש של השרשרת?

עבור כל זיכוי אנו שומרים את גובה הבלוק ואת ההאש. אם הענף מתגלגל לאחור, הסטטוס חוזר ל«ממתין לאישור» ומשוחזר כאשר העסקה שוב נכנסת לשרשרת הראשית. תקבולי רפאים ביתרה לא נשארים.

היכן נשמרים המפתחות הפרטיים?

בשרת האפליקציה — רק החלק הציבורי, הדרוש ליצירת כתובות. החתימה מועברת לשומר מפתחות חיצוני, ומשיכת כספים דורשת תפקיד נפרד. פגיעה בחלק הווב אינה נותנת גישה לכספים.

מה יישאר אם הצוות יתחלף?

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

נדון בסכימת התשלומים שלכם ובסדר ההטמעה

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

  • סכימת זיכוי: כתובת אחת ללקוח, ארנק HD עם הנפקה לפי מדד או חשבון נפרד לכל תשלום.
  • רשת ונכס: מעגל עבודה, סביבת בדיקה לניפוי שגיאות, האם נדרשת קליטת טוקנים בנוסף לאת'ר עצמו.
  • מקור נתונים על בלוקים: צומת משלכם, ספק חיצוני או שניהם עם מעבר בעת כשל.
  • לאן נכתב המצב: מסד חשבונאי, שירות פנימי, משרד אחורי — וכיצד מועברים אישורי הזיכוי.
  • דרישות לאישורים: כמה בלוקים להמתין עד לזיכוי, האם נדרש ניתוח אוטומטי של ארגון מחדש בשרשרת.
  • אחסון מפתחות: היכן נמצא ה-seed, למי יש גישה, האם יש מודול חומרה או שירות חתימה חיצוני.
  • ניטור: לאן נשלחות התראות על עסקאות תקועות ומחסור בכספים בכתובות משיכה.

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