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

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

הוא גם לא רואה שום דבר מחוץ לעסקה. הוא לא יודע את התאריך של היום לפי השעון, לא מתייעץ במחיר, לא שומר זיכרון בין עסקה לעסקה. כל מה שהוא מחליט, הוא מחליט עם מה שנמצא לפניו.
בתוך המגבלות האלה, יש יותר ממה שנראה. Script דורש כמה חתימות, וכך קיים ה-multisig מהשיעור הקודם. Script נועל מטבע עד תאריך או עד שמספר בלוקים יעבור — ה-OP_CHECKLOCKTIMEVERIFY, שנוסף ב-2015, הוא ממש הכספת עם שעון של הבנקים מהמאה ה-19, כתוב בתוכנה. ו-Script נועל מטבע מאחורי סוד, ומשחרר אותו למי שחושף את הנתון שמייצר hash מסוים, מנגנון שתומך בכל רשת Lightning.

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