מתקדם שיעור 5 4 דקות קריאה

GPU, ASIC וההבדל בין 2^40 ל-2^70

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

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

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

שישה עשר אלף ידיים קטנות עושות יחד מה ששישה עשר ידיים גדולות לא עושות.

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

עכשיו השאלה שכולם שואלים: ומה עם ASIC? אם יש שבב ייעודי לכרייה, למה לא לחיפוש מפתחות?

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

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

התבנית עולה הון ומשמשת לחלק אחד בלבד.

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

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

שלושה שלבים למעלה, אותו מסלול כבר לא אותו מסלול.

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

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