אורדינלס – לכל ביטקוין יש מספר שנתנו לו כוריו

בפברואר האחרון (2023) קייסי רודארמור (Casey Rodarmor) שלח הודעה לרשימת התפוצה במייל "bitcoin-dev" עם טיוטה של תקן חדש עבור אפליקציות ביטקוין בשם ordinals.
התקן הזה לא דורש אף שינוי קוד עבור צמתי ביטקוין, הוא מאפשר שיטה אחידה עבור ארנקי ביטקוין ובלוק אקספלוררים לתת מספר לכל סטושי שנוצר אי פעם, ולעקוב לראות באיזה כתובת נמצא מטבע ספציפי.

לפני שנצלול לעומק לאיך כל זה עובד, בואו נעשה ריענון קצר על איך נראות טרנזקציות ברשת הביטקוין.

טרנזקציות ביטקוין

לכל טרנזקציית ביטקוין יש שתי רשימות, רשימה של קלט (מאיפה הגיעו הביטקוין)
ורשימה של פלט (לאן הביטקוין יעבור).
רשימת הקלט מכילה למעשה פלטים של טרנזקציות קודמות שעדיין לא היו קלט באף טרנזקציה
(הם מכונים UTXO – Unspent Transaction Output כלומר פלטים של טרנזקציות שעדיין לא נוצלו).
ברוב המקרים כל המטבעות בקלט של הטרנזקציה מקורם באותו הארנק
אחד המקרים בהם ארנקי ביטקוין משתמשים בכמה UTXO בקלט זה כדי להעביר סכום שגדול
מכמות הביטקוין שיש בutxo בודד.

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

בנוסף לטרנזקציות הרגילות, בכל בלוק יש טרנקציית קוינבייס (coinbase) אחת,
שהיא הטרנזקציה הראשונה בבלוק שבה רשימת הקלט ריקה, ככה בעצם נוצרים מטבעות חדשים ברשת,
הכורים מייצרים מטבעות שאין להם היסטוריה.
כמות המטבעות שלכורה מותר לשים בפלט של הטרנזקציה הזו, היא הסכום של "הפרס עבור הבלוק הנוכחי"
ועמלות מטרנזקציות שנכללו בבלוק.
גובה הפרס התחיל ב50 ביטקוין לבלוק והוא נחצה אחרי כל 210,000 בלוקים (שהם בערך 4 שנים)

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

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

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

ב2012 פרסם יו"ר איגוד הביטקוין הישראלי, מני רוזנפלד, מאמר בשם "Overview of Colored Coins"
ובמאמר התייחס לעובדה שאפשר לעקוב אחרי מטבעות ביטקוין, ולתת להם "צבע".
כלומר ניתן להבדיל בין מטבעות שנמצאים בכתובת אחת ומטבעות שנמצאים בכתובת אחרת, וכאשר מעבירים מטבעות ב"צבע" מסוים מכתובת אחת לאחרת, אפשר להסיק שאלו אותם המטבעות שהיו קודם בכתובת הקודמת.
במאמר פירט מני כמה שימושים אפשריים למטבעות ביטקוין עם סימון מיוחד.

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

אז מה הם האורדינלס (ordinals)?

האורדינלס זו בעצם שיטה לצביעת ביטקוינים, כלומר היכולת להבדיל בין ביטקוינים בכתובות שונות.
נזכיר שביטקוין אחד הוא 100 מיליון סטושי, ובעצם רשת הביטקוין מתייחסת לסטושי כיחידה שעוברת בטרנזקציות ולא לביטקוינים שלמים.
קודם הבאנו את הדוגמה של קמח או חול, באורדינלס יותר נכון לחשוב על חבילות קלפים שעל כל קלף כתוב מספר מ0 עד 2,099,999,999,999,999 (21 מיליון כפול 100 מיליון פחות 1)

בשביל להסביר את שיטת הצביעה של האורדינלס נדמיין מערכת בלוקצ'יין פשוטה יותר, בה אין כמות סופית של מטבעות, ובכל בלוק נוצרים 100 מטבעות חדשים ואין עמלות.
בבלוק הראשון, מייצרים 100 קלפים עם המספרים 0 עד 99, בבלוק השני עוד 100 קלפים עם המספרים בין 100 ל199 וכן הלאה.

את הקלפים מחלקים לפי הסדר מהקלף הראשון בקלט לקלף האחרון (FIFO – First in first out)
ההעברה של קלפים מהקלט לפלט מתבצעת באופן הבא: לוקחים את כל הקלפים שנמצאים בכל אחת מחבילות הקלפים שנמצאות בקלט, ושומרים על הסדר בו הן נמצאות. ואז מחלקים אותן קלף אחד כל פעם לפי הסדר לפלט.

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

רשימת הקלטים:

  1. פלט קודם עם הקלפים 203-299 (סה"כ 97 קלפים)
  2. פלט קודם עם הקלפים 1500 עד 1589 (סה"כ 90 קלפים)

רשימת הפלטים

  1. 20 קלפים לכתובת א'
  2. 30 קלפים לכתובת ב'
  3. 7 קלפים לכתובת ג'
  4. 60 קלפים לכתובת ד'
  5. 70 קלפים לכתובת ה'

 

חלוקת הקלפים תיראה כך:

  1. בכתובת א' יהיו הקלפים 203-222
  2. בכתובת ב' יהיו הקלפים 223-252
  3. בכתובת ג' יהיו הקלפים 253-259
  4. בכתובת ד' יהיו הקלפים 260-299 ואחריהם הקלפים 1500-1519
  5. בכתובת ה' יהיו הקלפים 1520-1589

 

כזכור רשימת הקלט בטרנזקציית קוינבייס ריקה וטרנזקציות קוינבייס מייצרות מטבעות חדשים ברשת.
לכן בטרנזקציות האלה מייצרים בעצם קלפים חדשים.
לדוגמה אם בטרנזקציית הקוינבייס של הבלוק השלישי יש רק פלט אחד, נאמר שהפלט הזה מכיל 100 קלפים מקלף מספר 200 עד 299 ואם בטרנזקצייה הזו יש שני פלטים, אחד של 3 מטבעות והשני של 97 מטבעות, הפלט הראשון יקבל את קלפים 200-202 והפלט השני יקבל את קלפים 203-299.

לאורך הזמן הקלפים מתערבבים, ויכולים להיווצר מצבים בהם יש לנו חבילות קלפים שמכילות קלפים בסדר שונה מהסדר שבו נוצרו.
לדוגמה יכול להיות UTXO שיש בו חבילת קלפים שנראית כך:
350-360
223-252
2222-2345

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

בUTXO שנוצר מכריית ביטקוין נוצרים אורדינלס חדשים לפי גובה הבלוק.
כך בבלוק הראשון של ביטקוין מ2009 נוצרו כל האורדינלים מ0 ועד 4,999,999,999 בUTXO שנוצר מטרנזקציות אחרות.
האורדינלס מגיעים מתוך אחד מהפלטים שהיו בקלט של הטרנזקציה כאשר יש להתייחס אל השארית, כלומר: האורדינלס שלא נשלחו לאף אחד מהפלטים בטרנזקציה, כאילו הן היו קלט בטרנזקציית הcoinbase ולכן נשלחו לכורה.

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

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

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

בנוסף לארנק, הוסיף קייסי אתר בו אפשר לראות את כל החריטות (inscriptions) – שיטה להעלות קבצים לבלוקצ'יין ולשייך אותם לאורדינל ספציפי.
וככה נוצר שוק של אנשים שיוצרים קונים ומוכרים NFT שנמצאים על רשת הביטקוין.

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

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