ביטקוין: מערכת מטבעות אלקטרוניים Pair to Pair.
סאטושי נקמוטו -
satoshin@gmx.com -
http://www.bitcoin.org(מתרגמים: בנקבב, גרונדילו, מקילה)
סיכום. מערכת כסף אלקטרונית עממית-לעמית-עמיתים תאפשר לבצע תשלומים מקוונים ישירות מגורם שלישי למשנהו מבלי לעבור דרך מוסד פיננסי. חתימות דיגיטליות מציעות פיתרון כזה, אך מאבדות את העניין כשצריך צד שלישי מהימן כדי למנוע תשלום כפול. אנו מציעים פיתרון לבעיית התשלום הכפול באמצעות רשת עמיתים לעמית. זמן הרשת חותמת עסקאות באמצעות פונקציית hash המתרגמת אותן לשרשרת רציפה של הוכחות עבודה (טביעות אצבע), ויוצרת רשומה שלא ניתן לשנותה מבלי לבצע מחדש את הוכחת העבודה. השרשרת הארוכה ביותר (של טביעות אצבעות) משמשת לא רק כהוכחה להתקדמות האירועים שנצפו, אלא גם כהוכחה לכך שהיא מגיעה מהקבוצה הגדולה ביותר של כוח המחשוב. כל עוד רוב כוח המחשוב (CPU) נשלט על ידי צמתים שאינם משתפים פעולה כדי לתקוף את הרשת, הם יפיקו את השרשרת הארוכה ביותר וישיגו ביצועים טובים יותר. הרשת עצמה דורשת רק מבנה מופחת. ההודעות משודרות במקרה הטוב וצמתים יכולים לעזוב או להצטרף לרשת כרצונם, ולקבל את ההוכחה הארוכה ביותר על שרשרת העבודה עם חזרתם כהוכחה למה שקרה במהלך היעדרותם.
1. מבוא
המסחר באינטרנט כיום תלוי כמעט אך ורק במוסדות פיננסיים הפועלים כצדדים שלישיים מהימנים לעיבוד תשלומים אלקטרוניים. למרות שמערכת זו עובדת טוב למדי עבור מרבית העסקאות, היא עדיין סובלת מהחולשות הגלומות במודל מבוסס האמון שלה. עסקאות בלתי הפיכות לחלוטין אינן אפשריות באמת, מכיוון שמוסדות פיננסיים חייבים לנהל גישור בסכסוך. עלות תיווך זו מגדילה את עלויות העסקה, מגבילה בפועל את גודל המינימום של עסקה ומונעת אפשרות לבצע עסקאות זולות קטנות. אי האפשרות לקיים תשלומים לא הפיכים עבור שירותים שאינם הפיכים מייצרת עלות גבוהה עוד יותר. עם היכולת להפוך פעולות, הצורך באמון גובר. סוחרים צריכים להיזהר מהלקוחות שלהם ולהטריד אותם לקבלת מידע רב יותר מהנדרש. מידה מסוימת של הונאה מתקבלת כבלתי נמנעת. ניתן להימנע מכל עלויות התשלום ואי הוודאות הללו על ידי שימוש במטבע פיזי, אך לא קיים שום מנגנון לבצע תשלומים באמצעות מערכת תקשורת מבלי להשתמש בצד ג 'מהימן.
מה שאנו זקוקים לו הוא מערכת תשלומים אלקטרונית המבוססת על עדויות קריפטוגרפיות במקום מודל מבוסס אמון, שתאפשר לשני גורמים המעוניינים לבצע פעולות ישירות מבלי לפנות לפנייה לצד שלישי מהימן. עסקאות שאי אפשר לבטל באמצעות מחשב היו מגנות על המוכרים מפני הונאות אפשריות, ובקלות ניתן יהיה ליישם מערכת חשבון נאמנות כדי להגן על הקונים. במסמך זה אנו מציעים פיתרון לבעיית ההוצאה הכפולה באמצעות שרת עם חותמת זמן המופץ במצב עמיתים לעמית כדי ליצור הוכחות ממוחשבות לסדר הכרונולוגי של העסקאות. המערכת מאובטחת כל עוד צמתים כנים ביחד שולטים בכוח מחשוב יותר מקבוצה של צמתים המשתפים פעולה כדי לבצע פיגוע.
2. עסקאות
אנו מגדירים חלק אלקטרוני כשרשרת חתימות דיגיטליות. כל בעל מעביר יצירה זו לאחרת על ידי חתימה דיגיטלית על חותם של העסקה הקודמת, כמו גם את המפתח הציבורי של הבעלים החדש והוספתם לסוף היצירה. כל נהנה יכול לבחון את החתימות כדי לאמת את שרשרת הבעלות.
נייר לבן 1
הבעיה היא כמובן שהנהנה אינו יכול לוודא שאחד הבעלים הקודמים לא ביצע "הוצאה כפולה" על החלק. פיתרון נפוץ הוא להציג רשות מהימנה מרכזית, או מנטה, שתאמת כל עסקה כדי להימנע מ"הוצאה כפולה ". לאחר כל עסקה, יש להחזיר את המטבעות ל- Hôtel des Monnaies, היוצר אחת חדשה, ורק מטבעות היישר מה Hôtel des Monnaies נחשבים שלא הושקעו פעמיים. הבעיה עם הפיתרון הזה היא שגורלה של המערכת המוניטרית כולה מונח על החברה שמנהלת את המנטה, ושכל עסקה צריכה לעבור אותם, כמו בנק.
אנו זקוקים לשיטה כדי שהמוטב יוכל לדעת אם הבעלים הקודמים לא חתמו על עסקאות קודמות. לשם כך, העסקה הישנה ביותר חייבת להיות זו שחוזרת, איננו צריכים לדאוג לנסיונות הבאים להוציא את המטבע הכפול. הדרך היחידה לאשר את היעדר עסקה קודמת היא להיות מודע לכל העסקאות. במודל מבוסס על מנטה, האחרון היה מודע לכל העסקאות ולכן החליט איזו מהן הגיעה ראשונה. כדי לעשות זאת גם ללא צד שלישי, יש להודיע בפומבי על עסקאות [1], ואנחנו צריכים מערכת שכל המשתתפים יסכימו על היסטוריה יחידה של סדר קבלת העסקאות. . הנהנה זקוק להוכחה שבכל אחת מהעסקות, רוב הצמתים מסכימים שזה היה הראשון שהתקבל.
3. שרת חותמת זמן
הבסיס לפיתרון המוצע הוא שרת חותמת זמן. שרת חותמת זמן לוקח את טביעת האצבע של קבוצה של אלמנטים של חותמת זמן ומפרסם טביעת אצבע זו, כמו פרסומת בעיתון או הודעה על forum Usenet [2-5]. חותמת הזמן מוכיחה כי הנתונים היו קיימים, על מנת להילקח בחשבון בחותם. כל חותמת זמן כוללת את חותמת הזמן הקודמת בטביעת האצבע שלה, ויוצרת שרשרת שכל אחד מהם מרכיב חדש מאשר את הקודמות.
נייר לבן 2
4. הוכחת עבודה
כדי ליישם שרת חותמת זמן המופץ ברשת עמיתים לעמית, יש צורך להשתמש במערכת המבוססת על הוכחות עבודה כמו זו של מערכת Hashcash של Adam Back [6], ולא על יומן או הודעה על forum Usenet. הוכחת העבודה מחייבת לחפש ערך כזה שטביעת האצבע שלה, המחושבת למשל באמצעות SHA-256, מתחילה במספר מסוים של ביטים ב 0. העבודה הנדרשת תלויה באופן אקספוננציאלי במספר הביטים ב- 0 הנדרש, ויכולה תוקף על ידי ביצוע חישוב טביעות אצבע יחיד.
עבור רשת ביול הזמן שלנו, אנו מיישמים את הוכחת העבודה על ידי הגדלת משתנה בבלוק עד שנמצא ערך שנותן חותם עם מספיק ביטים ב -0. לאחר שנעשה מאמץ החישוב הנדרש בכדי להשיג את הוכחת העבודה, לא ניתן עוד לשנות את החסימה מבלי לחזור על מאמץ חישוב זה. כאשר חסומות חסומות חדשות אחריו, מאמץ החישוב הנדרש לשינוי בלוק כולל את כל מאמצי החישוב הנחוצים לשינוי כל הבלוקים הבאים.
נייר לבן 3
הוכחת העבודה פותרת את בעיית בחירת הייצוג של ההצבעה. אם הרוב היה מבוסס על קולות שהוקצו באמצעות כתובת IP, ההצבעה יכולה להיות סוטה על ידי מישהו המסוגל למסור לעצמו הרבה כתובות. הוכחת העבודה מבוססת למעשה על כוח המחשוב (מעבד, קול). את החלטת הרוב מיוצג הרשת הארוכה ביותר, זו שהצריכה את ההוכחה ביותר לחישובי העבודה. אם רוב כוח המחשוב של הרשת נשלט על ידי צמתים כנים, השרשרת הלגיטימית מתקדמת הכי מהר ומרחיקה רשתות מתחרות. על מנת לשנות חסימה ישנה, תוקף יצטרך לחשב מחדש את הוכחות העבודה עבור החסימה שהשתנה וכל החסימות שלאחר מכן, כדי לפצות ולעבור את העבודה שמספקת צמתים כנים. נראה אחר כך שההסתברות שתוקף עם פחות כוח מחשוב יכול להדביק יורד באופן אקספוננציאלי עם כל חסימה חדשה שנוספה.
על מנת לפצות על השיפור בכוח המחשוב של החומרה והעניין המשתנה בצמתים ברשת, הקושי בהוכחת העבודה נקבע על ידי ממוצע מספר החוסמים שיימצאו בשעה. אם נוצרים חסימות אלה מהר מדי, הקושי גדל.
5. רשת
השלבים המיושמים להפעלת הרשת הם כדלקמן:
עסקאות חדשות משודרות לכל הצמתים.
כל צומת מקבץ את העסקאות החדשות בבלוק.
כל צומת פועל כדי לפתור את הוכחת העבודה על החסימה שלו.
כאשר צומת מוצא הוכחת עבודה, הוא משדר את הבלוק הזה לכל הצמתים.
הצמתים מקבלים את החסימה רק אם כל העסקאות שהיא מכילה בתוקף ולא הוצאו כבר.
הצמתים מבטאים את קבלת החסימה על ידי עבודה על חסימה חדשה בשרשרת, כאשר החסימה החדשה הזו כטביעת רגל קודמת היא זו של הבלוק המקובל.
הצמתים רואים תמיד את השרשרת הארוכה ביותר כשרשרת הלגיטימית, ופועלים להרחבתה. אם שני צמתים משדרים שתי גרסאות שונות של החסימה הבאה בו זמנית, חלק מהצמתים יקבלו האחד או השני קודם. במצב זה, כל אחד עובד על החסימה שהתקבלה קודם, אך שומר על הענף השני למקרה שהוא יהפוך להיות הארוך ביותר. קישור זה יופר כאשר תמצא ההוכחה הבאה לעבודה וסניף אחד הופך ארוך יותר מהשני; הצמתים שעבדו אז על הסניף השני ישתנו לזמן הכי ארוך.
הפצות של עסקאות חדשות אינן צריכות להגיע לכל הצמתים. מהרגע שהם מגיעים למספיק קשרים הם ימצאו את עצמם בתוך בלוק תוך זמן קצר. שידורי חסימות סובלים את אובדן ההודעות. אם צומת לא מקבל חסימה, הוא יבקש אותו בעת קבלת החסימה הבאה, כאשר הוא מבין שהוא חסר חסימת אחת.
6. תמריץ
על פי המוסכמה, העסקה הראשונה של בלוק היא עסקה מיוחדת היוצרת חלק חדש השייך ליוצר הבלוק. זה מעודד צמתים להשתתף ברשת ומאפשר חלוקה ראשונית של כסף, מכיוון שאין סמכות ריכוזית לעשות זאת. תוספת קבועה זו של סכום כסף קבוע מקבילה למאמץ שעושים הכורים להוסיף זהב למחזור. במקרה שלנו המאמץ מורכב מכוח מחשוב וזמן.
ניתן לממן את התמריץ גם באמצעות דמי עסקה. אם ערך היציאה של עסקה נמוך מערך הכניסה שלה, ההפרש תואם את דמי העסקה שמתווספים לערך התמריץ של הבלוק המכיל עסקה זו. ברגע שכמות הכסף שנקבעה מראש נכנסה למחזור, התמריץ עשוי לעבור למימון כולו על בסיס עלויות עסקה, ולא לגרום לאינפלציה.
התמריץ יכול לעודד קשרים להישאר כנים. אם לתוקף חמדן יש אמצעים להשיג יותר כוח מחשוב מכל הצמתים הכנים, הוא יכול לבחור בין הונאת אנשים על ידי גביית תשלומים, או שימוש בכוחו לייצור כסף חדש. עליו למצוא את זה יותר מעניין לשחק את המשחק, שדווקא מעדיף אותו כיוון שמאז הוא ייצר יותר כסף חדש מכל הצמתים האחרים, במקום לערער את המערכת ואת ערך עושרו שלו.
7. חסוך שטח דיסק
ברגע שהעסקה האחרונה עבור חלק קבורה תחת מספיק בלוקים, ניתן למחוק עסקאות בעבר כדי לחסוך שטח בדיסק. כדי לאפשר זאת מבלי לפסול את טביעת הרגל של החסימה, העסקאות מסוכמות בעץ מרקל [7] [2] [5], שרק השורש כלול בטביעת הרגל של החסימה. ניתן לדחוס בלוקים ישנים על ידי חיתוך ענפים מהעץ. אין צורך לאחסן רשמים ביניים.
כותרת חסימת ללא עסקה שוקלת כ- 80 בתים. אם נניח שהבלוקים נוצרים כל 10 דקות, זה מייצג 80 בתים * 6 * 24 * 365 = 4.2MB לשנה. בשנת 2008 נמכרו מערכות מחשבים עם נפח זיכרון RAM של 2 ג'יגה-בתים בממוצע, וכפי שחוק מור צופה צמיחה של 1.2 ג'יגה-בייט לשנה, לכן אחסון לא אמור להיות בעיה, גם אם כולם - יש לשמור כותרות חסימות ב- RAM.
8. אימות תשלום פשוט
אפשר לאמת תשלומים ללא הפעלת צומת מלאה ברשת. משתמש צריך רק לשמור עותק של כותרות שרשרת הראיות הארוכות ביותר, אותן הוא יכול לעבור באמצעות שאילתות בצמתים ברשת עד שהוא יהיה מרוצה מכך יש לך את השרשרת הארוכה ביותר, ואז אחזור את הענף מעץ מרקל הקושר את העסקה עם הבלוק בו חותמת הזמן. המשתמש לא יכול לאמת את העסקה בעצמו, אך על ידי קשירתו במקומה בשרשרת, הוא יכול לראות שצומת רשת קיבל אותה, והחימה הבאה מאשרת עוד יותר את קבלת הרשת.
כיוון שכך, האימות הוא אמין כל עוד צמתים כנים שולטים ברשת, אך הם פגיעים יותר אם הרשת נפגעת על ידי תוקף עם יותר כוח מחשוב. למרות שצמתים ברשת יכולים לאמת את העסקאות עצמן, השיטה הפשוטה יכולה להיות שולל על ידי עסקאות שזייפו התוקף, כל עוד יש לתוקף אמצעים לחרוג מכוח המחשוב של הרשת. אסטרטגיה להגן על עצמך מפני התקפה כזו יכולה להיות קבלת התראות מצמתים ברשת כאשר הם מגלים חסימה לא חוקית, ומבקשים מתוכנת המשתמש להוריד את החסימה המלאה ועסקאות חשודות כדי לבדוק אם אין עקביות. חברות שמקבלות תשלומים תכופים בהחלט יהנו מהפעלת הצמתים שלהן לצורך אבטחה עצמאית יותר ואימות מהיר יותר.
9. שילוב ופיצול ערך
אמנם ניתן לעבד את המטבעות בנפרד, אך לא יהיה מעשי לייצר עסקה שונה עבור כל אגורה במהלך העברה. כדי לאפשר שילוב ופיצול כסף, עסקאות כוללות תשומות ותפוקות מרובות. בדרך כלל יש רשומה אחת מעסקה גדולה קודמת, או כמה רשומות המשלבות סכומים נמוכים יותר, ומקסימום שתי יציאות: האחת לתשלום, והשנייה להחזרת החליפין, אם היא קיימת, ל המשדר.
יש לציין כי פיזור, כאשר עסקה תלויה במספר עסקאות, ועסקאות אלה עצמן תלויות בעסקאות רבות נוספות, אינה מהווה בעיה. לעולם אין צורך לאחזר את ההיסטוריה המלאה של עסקה.
10. סודיות
המערכת הבנקאית המסורתית מבטיחה רמה מסוימת של סודיות על ידי הגבלת הגישה למידע לצדדים הנוגעים בדבר ולצד ג 'מהימן. הצורך בפרסום כל העסקאות אינו כולל שיטה זו, אך ניתן להשיג סודיות על ידי הפרעה של זרימת המידע לרמה אחרת: על ידי שמירת מפתחות ציבוריים אנונימיים. אפשר לראות שמישהו שולח סכום מסוים למישהו אחר, אך ללא קשר לאנשים. זה דומה לרמת המידע הקיים בשווקי הבורסה, כאשר התאריך והסכום של כל סחר, ה"קורס ", הוא ציבורי, אך מבלי לחשוף את זהות הצדדים.
כמחסום נוסף, ניתן להשתמש בצמד מפתחות חדש לכל עסקה, כדי להימנע מקישור לבעלים משותף. קשר מסוים הוא עם זאת בלתי נמנע בגלל עסקאות מרובות-כניסות, אשר בהכרח חושפות כי הרשומות שלהם היו בבעלות של אותו בעל. האירוע החשש הוא שאם נחשף הבעלים של אחד המפתחות, הקישורים מאפשרים חשיפה של עסקאות אחרות של אותו בעל.
11. חישובים
שקול את המקרה של תוקף שמנסה לייצר שרשרת אלטרנטיבית מהר יותר מהשרשרת הלגיטימית. גם אם הצליח, היא לא תשאיר את המערכת חשופה לשינויים שרירותיים, כמו יצירת כסף מאוויר, או הקצאת כסף שמעולם לא היה שייך לתוקף. צמתים אינם מקבלים עסקאות לא חוקיות כתשלום, וצמתים כנים לעולם לא יקבלו חסימה המכילה אחת מהעסקאות הללו. תוקף יכול לשנות רק אחת מהעסקאות שלו בכדי להחזיר את הכסף שהוציא זה עתה.
את המירוץ בין השרשרת הלגיטימית לשרשרת התוקף ניתן לאפיין כהליכה אקראית בינארית. אירוע ההצלחה הוא הארכת השרשרת הלגיטימית, הגדלת המוביל שלה ב- +1, ואירוע הכישלון הוא התארכות שרשרת התוקף, וצמצום העיכוב שלה ב- -1.
הסבירות שתוקף יתעדכן מקביל לבעיית ההריסות של השחקן. דמיין שחקן עם נקודות זכות בלתי מוגבלות, החל בשלילה, ויכול לשחק מספר אינסופי של משחקים כדי לנסות להגיע לנקודת השבירה. ההסתברות שהוא יצליח, או שתוקף יצליח לתפוס את השרשרת הלגיטימית, מחושבת כדלקמן [8]:
p = הסתברות שצומת ישר ימצא את החסימה הבאה
q = הסתברות שהתוקף ימצא את החסימה הבאה
qz = הסתברות שהתוקף יצליח לתפוס את השרשרת עם חסימות עיכוב של z
בהתחשב בהשערה שלנו p> q, ההסתברות פוחתת באופן אקספוננציאלי בהתאם למספר הבלוקים שעל התוקף לתפוס. עם הסיכויים נגדו, אם אין לו רצף מזל בשלב מוקדם, הסיכויים שלו הופכים קלושים ככל שהוא ייפול מאחור.
אנו מעוניינים כעת בזמן שמקבל העסקה החדשה צריך להמתין לפני שיובטח מספיק כי המנפיק לא יוכל לשנות את העסקה. אנו מניחים שהמקור הוא תוקף שרוצה לגרום למקבל להאמין ששולמו לו זמן מסוים, ואז רוצה לשנות את העסקה כדי להחזיר את כספי העסקה לאחר איחור מסוים. הנמען יקבל התראה כשזה יקרה, אך השולח מקווה שיהיה מאוחר מדי.
הנמען מייצר זוג מפתחות חדש ונותן את המפתח הציבורי לשולח זמן קצר לפני החתימה. זה מונע מהמשדר להכין blockchain מראש על ידי עבודה עליו עד שהוא משיג התקדמות מספקת, וכי הוא מבצע את העסקה באותה עת. לאחר הוצאת העסקה, המנפיק הלא ישר מתחיל לעבוד על שרשרת אלטרנטיבית המכילה גרסה שונה של העסקה.
הנמען ממתין עד שנוספה העסקה לחסימה ועד שנוספו חסימות z בעקבותיה. הוא לא יודע מה בדיוק התקדמות התוקף, אך בהנחה שהחסימות הלגיטימיות לקחו את הזמן הממוצע הצפוי לכל בלוק שייווצר, ההתקדמות הפוטנציאלית של התוקף היא חלוקת פויסון בעל ערך כצפוי:
כדי להשיג את ההסתברות שהתוקף עדיין יכול להדביק, אנו מכפילים את צפיפות הפויסון עבור כל כמות התקדמות שהוא הצליח להשיג לפי ההסתברות שהוא תופס מנקודה זו:
על ידי סידור מחדש כדי להימנע מלהמשיך לנצח ...
הומר לקוד C ...
#לִכלוֹל
Double AttackerSuccessProbability (q כפול, int z)
{
p כפול = 1.0 - ש ';
lambda כפול = z * (q / p);
סכום כפול = 1.0;
int i,k;
עבור (k = 0; k <= z; k ++)
{
דגים כפולים = exp (-למבדה);
עבור (i = 1; i <= k; i ++)
דגים * = lambda / i;
סכום - = דגים * (1 - כוח (q / p, z - k));
}
סכום החזר;
}
על ידי ביצוע כמה בדיקות, אנו מבחינים כי ההסתברות פוחתת באופן אקספוננציאלי לפי z:
ש = 0.1
z = 0p = 1.0000000
z = 1p = 0.2045873
z = 2p = 0.0509779
z = 3p = 0.0131722
z = 4p = 0.0034552
z = 5p = 0.0009137
z = 6p = 0.0002428
z = 7p = 0.0000647
z = 8p = 0.0000173
z = 9p = 0.0000046
z = 10 p = 0.0000012
ש = 0.3
z = 0p = 1.0000000
z = 5p = 0.1773523
z = 10 p = 0.0416605
z = 15 p = 0.0101008
z = 20 p = 0.0024804
z = 25 p = 0.0006132
z = 30 p = 0.0001522
z = 35 p = 0.0000379
z = 40 p = 0.0000095
z = 45 p = 0.0000024
z = 50 p = 0.0000006
פתרונות ל- P פחות מ- 0.1% ...
P <0.001
ש = 0.10 z = 5
ש = 0.15 z = 8
ש = 0.20 z = 11
ש = 0.25 z = 15
ש = 0.30 z = 24
ש = 0.35 z = 41
ש = 0.40 z = 89
ש = 0.45 z = 340
12. סיכום
הצענו מערכת עסקאות אלקטרונית שאינה מבוססת על אמון. התחלנו עם המסגרת הרגילה של חלקים המיוצרים עם חתימות דיגיטליות, המספקת שליטת בעלות חזקה, אך נותרה לא שלמה ללא דרך למנוע הוצאות כפולות. כדי לפתור בעיה זו, הצענו רשת עמיתים לעמית המשתמשת בהוכחות עבודה כדי לרשום יומן עסקאות ציבורי, אשר הופך במהירות לא ניתן לחישוב אם צמתים כנים שולטים ברוב כוח המחשוב. הרשת חזקה בגלל הפשטות הבלתי מובנית שלה. הצמתים עובדים יחד עם מעט מאוד תיאום. הם לא צריכים לאמת, מכיוון שהודעות לא נשלחות לנמען מסוים, והן נדרשות להעביר רק במקרה הטוב. הצמתים יכולים לצאת ולהצטרף לרשת כרצונם, ולקבל את הוכחת שרשרת העבודה כהוכחה למה שקרה במהלך היעדרותם. הם מצביעים על ידי שימוש בכוח המחשוב שלהם, על ידי הבעת הסכמתם לגבי בלוקים תקפים תוך שהם פועלים להרחבתם, ועל ידי דחיית הבלוקים הלא חוקיים על ידי סירוב לעבוד עליהם. ניתן ליישם את כל הכללים והתמריצים הנדרשים באמצעות מנגנון הסכמה זה.
הפניות
[1] וו. דאי, "ב-כסף"
http://www.weidai.com/bmoney.txt 1998.
[2] ה. מסיאס, XS Avila, ו- J.-J. Quisquater, "תכנון של שירות חותמת זמן מאובטח עם דרישות אמון מינימליות", בסימפוזיון ה -20 לתורת המידע בבנלוקס, מאי 1999.
[3] ש 'הבר, WS Stornetta, "איך חותמת זמן על מסמך דיגיטלי", בכתב העת לקריפטולוגיה, כרך ג', מספר 3, עמודים 2-99, 111.
[4] ד. באייר, ש. הבר, WS Stornetta, "שיפור היעילות והאמינות של חותמת זמן דיגיטלית", ברצפים II: שיטות בתקשורת, אבטחה ומדעי המחשב, עמודים 329-334, 1993.
[5] ש 'הבר, WS Stornetta, "שמות מאובטחים למיתרי ביט", בהמשך לוועידת ACM הרביעית בנושא אבטחת מחשבים ותקשורת, עמודים 4-28, אפריל 35.
[6] א. חזרה, "השקש - אמצעי נגד שלילת שירות".
http://www.hashcash.org/papers/hashcash.pdf 2002.
[7] RC Merkle, "פרוטוקולים למערכות קריפטו-מערכות ציבוריות," בפרוק. יום עיון 1980 בנושא אבטחה ופרטיות, IEEE Society Computer, עמודים 122-133, אפריל 1980.
[8] וו. פלר, "מבוא לתורת ההסתברות ויישומיה", 1957.