חכה, תן לי לבדוק את ספירת המילים. זה נראה אולי כמו 800-900 מילים. תן לי לוודא בראש. זה כנראה בסביבות 850 מילים. אני צריך לוודא שיש לפחות 900 מילים של תוכן מהותי. אני אפתח כמה סעיפים מעט עם יותר פרטים קונקרטיים מבלי לנפח.
אוסיף:
- יותר פירוט על יישום ה-webhook (retries, idempotency keys)
- דוגמה קונקרטית לשאילתת reconciliation/זיהוי חוסר התאמה
- קצת יותר על העלות התפעולית של התאמה ידנית
- אולי אפרט על מחזור החיים מ-"Created" ל-"Completed" עם דוגמה קונקרטית מהשרשרת
אעבור על הטיוטה וארחיב אותה כדי לוודא שהיא בהחלט מעל 900 מילים.
בנוסף, אני צריך לוודא שאני לא מוציא כותרת H1. רק גוף מאמר בפורמט Markdown עם כותרות משנה מסוג ##.
אכתוב מחדש בזהירות:
כתובת ארנק אינה מערכת תשלומים. היא יעד, וזהו זה. כל מי שמחזיק במחרוזת יכול לשלוח אליה כל דבר בכל עת. עבור עסקה חד-פעמית בין שני אנשים שסומכים זה על זה, זה עשוי להספיק. אך אם אתם מפעילים מוצר SaaS, marketplace, או חנות מקוונת, הדבקת כתובת סטטית בדף תשלום (checkout) היא מתכון לכאוס תפעולי. אתם תבלו את ימיכם בניסיון להתאים עסקאות מסתוריות ללקוחות אמיתיים, לנחש מי שילם מה, ולנקות את הבלאגן כשמישהו שולח את הטוקן הלא נכון ברשת הלא נכונה.
כדי לבנות משהו שניתן להרחבה (scales), עליכם להפסיק לחשוב כמו קופת צדקה ולהתחיל לחשוב כמו מערכת תשלומים מובנית.
למה כתובת ארנק נכשלת בקנה מידה גדול
הבעיה היא ההקשר, או היעדר ההקשר. כאשר לקוח מעתיק את כתובת הארנק שלכם ושולח קריפטו מבורסה או מארנק self-custody, הבלוקצ'יין רושם רק את מה שנע: סכום, חותמת זמן (timestamp) ושתי כתובות ציבוריות. הוא לא רושם את מספר החשבונית שלכם. הוא לא כולל את מזהה הלקוח. הוא לא מציין האם ההעברה היא חידוש מנוי, שדרוג יחסי (pro-rated), או רכישה חדשה לחלוטין.
חשבו על חברת SaaS שגובה תשלום מחמש מאות לקוחות ב-
שמור על המודל שטוח ותיאורי. נציג תמיכה לא טכני צריך להיות מסוגל לקרוא סטטוס ולדעת מה לומר ללקוח.
- Created: הבקשה קיימת, אך הבלוקצ'יין אינו מציג דבר עדיין. הלקוח טרם שידר עסקה.
- Detected: הניטור שלך זיהה עסקה רלוונטית ב-mempool או בבלוק אחרון, אך חסרה לה סופיות (finality). אל תשלח את המוצר.
- Confirming: העסקה נמצאת על הרשת (on chain) ואוספת אישורים (confirmations). רשתות פועלות במהירויות שונות. ביטקוין עשוי לדרוש שישה בלוקים. אתריום עשוי לדרוש שנים-עשר או יותר, תלוי בתיאבון הסיכון שלך. המערכת שלך צריכה לכבד את ההתנהגות של הרשת עצמה.
- Completed: התשלום תואם את הסכום, הנכס, הרשת וההקשר המצופים. כל הכללים שהגדרת מולאו. כעת ניתן לבצע את ההזמנה, להפעיל את המנוי או לשחרר את הנאמנות (escrow).
- Expired: הלקוח החמיץ את חלון התשלום. הבקשה לא צריכה לקבל תשלומים עתידיים אלא אם תפעיל אותה מחדש באופן מפורש.
- Mismatch: הלקוח שלח כספים, אך משהו אינו תקין. הסכום חסר, הרשת שונה, או שהנכס אינו תואם. הפנה זאת לתמיכה. אל תיתן למערכת הביצוע (fulfillment) שלך לנחש.
תהליך (pipeline) זה הופך זרם כאוטי של נתוני רשת לתהליך שכל החברה יכולה להבין ולהסתמך עליו.
הפסק לבצע Polling. התחל להקשיב.
אחת הדרכים המהירות ביותר לבזבז תקציב תשתית היא לגרום ל-backend שלך לשאול את הספק שלך מדי כמה שניות אם הכסף כבר הגיע. זה מבזבז משאבים בשני הצדדים ומוסיף שיהוי (latency) מיותר.
ארכיטקטורה טובה יותר משתמשת במודל של הודעות סטטוס (status-notification). ספק התשלומים או תשתית הצמתים (node infrastructure) שלך צריכים לדחוף (push) אירוע למערכת שלך ברגע שהסטטוס משתנה. אתה מקבל webhook כאשר העסקה מזוהה, אחד נוסף כאשר היא בתהליך אישור (confirming), ואחד אחרון כאשר היא מסתיימת או נכשלת.
זה שומר על המערכת שלך קשובה (responsive) מבלי לצרוך מחזורי CPU מיותרים.
