מכריזה על ארנק MultiChain החדש PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

מכריז על ארנק ה- MultiChain החדש

צעד חשוב קדימה לביצועים ומדרגיות

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

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

בצד החזק, החלטה זו עזרה לנו להגיע לשוק במהירות, לעומת קידוד צומת blockchain מאפס. למרות ההבדלים הרבים בין מחסומי החסימה הציבורית והפרטית, הם חולקים כמות גדולה של בסיס משותף טכני, כולל פרוטוקול עמיתים לעמית, מבנה טרנזקציה וחסימה, יצירת ואימות חתימות דיגיטליות, כללי הסכמה, ניהול מפתחות והצורך ב API של צומת. זיוף מביטקוין Core איפשר לנו למנף את הבשלות שלה ולהתמקד במה שמ MultiChain מוסיף לרשתות חסימות - תצורה, הרשאה ותמיכה בנכסים מקוריים. כתוצאה מכך הצלחנו לשחרר את האלפא הראשון ביוני 2015, 6 חודשים בלבד לאחר שהתחלנו בפיתוח.

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

הארנק של ביטקוין Core

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

אז מה רע בארנק שירשנו מ- Bitcoin Core? למעשה, שלושה דברים:

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

התוצאה היא שכאשר מאוחסנים כ- 20,000 עסקאות, הארנק של ביטקוין Core מאט משמעותית. אחרי 200,000 לערך, זה למעשה נעצר. חמור מכך, מכיוון שחסימה של MultiChain מאפשרת עד 8 מגה בייט של מטא נתונים בכל עסקה (לעומת 80 בתים של ביטקוין), דרישות הזיכרון של הארנק יכולות להתנפח במהירות אפילו עם מספר קטן של עסקאות.

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

הארנק החדש של MultiChain

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

במה שונה הארנק החדש? אם יש לך ניסיון במאגרי מידע, התשובות עשויות להיות ברורות:

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

במילים אחרות, בנינו מחדש את הארנק בתוך הצומת כך שהוא מונע כהלכה באמצעות מסד נתונים (באמצעות רמה DB), במקום להסתמך על מבנה תמים בזיכרון שלא ניתן לחפש ביעילות. באופן לא מפתיע, ההבדל (שנמדד ב- Intel Core i3.4 7 GHz) הוא דרמטי למדי:

תפוקת הארנק של MultiChain

שימוש בזיכרון

הגרפים מראים כי ברגע שהארנק הישן מכיל 250,000 עסקאות, קצב השליחה שלו יורד ל -3 טקס / שניה והוא מוסיף 600 מגה בייט לזיכרון הצומת. לעומת זאת, הארנק החדש מקיים מעל 100 טקס לשנייה ומוסיף רק 90 מגה בייט. הפסקנו לבדוק את הארנק הישן בשלב זה, אבל אפילו עם 6-8 מיליון עסקאות מאוחסנות, הארנק החדש ממשיך לשלוח מעל 100 טקס שניות לשנייה, והוא מגיע לכדי 250 מגה-בייט של זיכרון RAM המשמש (בגלל זיכרון מטמון בבסיס הנתונים).

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

כדי לחזור ולהדגיש, כל המספרים הללו מתייחסים לקצב בו הצומת יכול ליצור, לשלוח ולאחסן עסקאות בארנקו המקומי, ולא לתפוקתו מבחינת עיבוד עסקאות שנוצרו על ידי אחרים. עבור תפוקת רשת כללית, MultiChain יכול כעת לעבד 200 עד 800 טקס / שניות, תלוי בחומרה עליה היא פועלת. (היו ספקנים לגבי כל תוכנת blockchain שמבטיחה מספרים כמו 100,000 טקס שניה / שניה בחומרה רגילה, מכיוון שצוואר הבקבוק הוא אימות חתימה דיגיטלית, שלוקח זמן אמיתי לבצע. אם צמתים אינם מאמתים חתימות עסקאות בודדות, אי אפשר להשתמש ב- blockchain על פני אמון גבולות, מה שהופך אותו לא טוב יותר ממסד נתונים מבוזר רגיל.)

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

אנא פרסם הערות ב LinkedIn.

תוספת טכנית

החל מ- MultiChain alpha 22, אתה יכול לאמת איזו גרסה של הארנק פועלת כעת על ידי בחינת ה- walletdbversion שדה של getinfo or getwalletinfo שיחות API. ערך של 1 פירושו ארנק ה- Core Core המקורי, ו- 2 פירושו ארנק ה- MultiChain החדש.

אם תריץ את הגרסה החדשה של MultiChain ברשת קיימת, היא לא תעבור מייד לארנק החדש. ניתן לשדרג את הארנק על ידי עצירת הצומת ואז הפעלה מחדש multichaind עם הפרמטרים -walletdbversion=2 –rescan. אתה יכול לשדרג לאחור באופן דומה באמצעות –walletdbversion=1 –rescan.

כברירת מחדל, כשאתה מפעיל צומת בשרשרת חדשה, הוא ישתמש אוטומטית בארנק החדש. אתה יכול לשנות זאת על ידי הפעלה multichaind לראשונה עם הפרמטר –walletdbversion=1.

עם הארנק החדש, הכל ממשקי API של MultiChain לעבוד בדיוק כמו קודם, למעט ממשקי ה- API הישנים לשאילת העסקה getreceivedbyaddress, listreceivedbyaddress ו listtransactions (להשתמש listwallettransactions or listaddresstransactions במקום). בנוסף, הארנק החדש אינו תומך בשיחות ופרמטרים של API הנוגעים למנגנון ה"חשבונות "של ביטקוין קור אשר מיושם בצורה לא נכונה, ולעולם לא נתמך כראוי על ידי MultiChain. שיחות אלה מושבתות בבטחה באמצעות הודעת שגיאה.

מקור: https://www.multichain.com/blog/2016/07/ הכרזת-the-new-multichain-wallet/

בול זמן:

עוד מ רב-שרשראות