כלי לזיהוי חוזים חכמים מטמורפיים של PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

כלי לזיהוי חוזים חכמים מטמורפיים

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

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

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

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

זיהוי חוזים חכמים מטמורפיים

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

    1. האם נעשה שימוש בקוד מטמורפי ידוע לפריסת החוזה? אם קוד בתים מטמורפי ידוע - הקוד הנמוך יותר, קריא מכונה וירטואלית, שחוזי Ethereum חכמים, הנכתבים בדרך כלל ב-Solidity, הופכים לאחר הידור - מופיע בעסקה לפריסת חוזה חכם נתון, זה דגל אדום מרכזי. בסעיפים הבאים, נדון בדוגמה אחת כזו לקוד בתים מטמורפי שפותח על ידי 0age. אזהרה חשובה: ישנן אינספור וריאציות של קוד בתים מטמורפי, מה שמקשה על זיהוי כל הזנים. עם זאת, באמצעות סריקה לאיתור מקרים ידועים, הגלאי מבטל פירות תלויים נמוך עבור תוקפים שרק מעתיקים ומדביקים דוגמאות קיימות.
    2. האם קוד החוזה החכם יכול להרוס את עצמו? כדי להחליף את הקוד בחוזה - שלב מרכזי ביצירת חוזה מטמורפי - מפתח צריך קודם כל למחוק קוד קיים. הדרך היחידה לעשות זאת היא באמצעות SELFDESTRUCT opcode, פקודה שעושה בדיוק מה שהיא נשמעת - היא מוחקת את כל הקוד והאחסון בכתובת חוזה נתונה. נוכחותו של קוד הרס עצמי בחוזה אינה מוכיחה שהוא מטמורפי; עם זאת, הוא מציע רמז לכך שהחוזה יכול להיות מטמורפי וכדאי לדעת, בכל מקרה, האם חוזים שאתה מסתמך עליהם יכולים לגרום לעצמם גרעין.
    3. האם החוזה החכם מתקשר לקוד ממקום אחר? אם החוזה החכם המדובר אינו יכול להרוס את עצמו ישירות, ייתכן שהוא עדיין יוכל למחוק את עצמו באמצעות ה- קוד DELEGATECALL. קוד זה מאפשר לחוזה חכם לטעון ולהוציא לפועל קוד שחי בתוך חוזה חכם אחר. גם אם החוזה החכם אינו מכיל את ה-Opcode SELFDESTRUCT, הוא יכול להשתמש ב-DELEGATECALL כדי לטעון קוד הרס עצמי ממקום אחר. בעוד שפונקציונליות DELEGATECALL אינה מציינת ישירות אם חוזה חכם הוא מטמורפי, זהו רמז אפשרי - ובעיית אבטחה פוטנציאלית - שכדאי לשים לב אליו. יש להזהיר כי לאינדיקטור זה יש פוטנציאל להעלות תוצאות חיוביות כוזבות רבות. 
    4. האם חוזה אחר פרס את החוזה הזה? ניתן לפרוס חוזים מטמורפיים רק על ידי חוזים חכמים אחרים. הסיבה לכך היא שחוזים מטמורפיים מופעלים על ידי opcode אחר, שמיש רק על ידי חוזים חכמים אחרים, הנקראים CREATE2. (אנחנו נדון ב-CREATE2 – איך זה עובד ולמה זה חשוב – יותר בסעיף מאוחר יותר.) תכונה זו היא אחד האינדיקטורים הפחות בולטים למטמורפיזם אפשרי; זהו תנאי מוקדם הכרחי אך לא מספיק. סריקה לאיתור תכונה זו עשויה להעלות תוצאות חיוביות כוזבות רבות - אבל זה מידע חשוב לדעת שכן הוא יכול לעורר חשדות ולספק סיבה לבחון חוזה עוד יותר, במיוחד אם החוזה החכם מכיל את ה-opcode המתואר בהמשך.
    5. האם חוזה הפריסה מכיל את ה-opcode CREATE2? כפי שהוזכר לעיל, פריסה באמצעות CREATE2 היא תנאי מוקדם חיוני למטמורפיזם. אם חוזה פריסה מכיל את ה-opcode CREATE2, זה עשוי להצביע על כך שהוא השתמש ב-CREATE2 כדי לפרוס את החוזה הנדון. אם המפיץ אכן השתמש ב-CREATE2 כדי לפרוס את החוזה האמור, אמנם זה לא אומר שהחוזה בהכרח מטמורפי, זה אומר שהוא יכול להיות מטמורפי וייתכן שיהיה חכם להמשיך בזהירות ולחקור לעומק. שוב, היזהרו מתוצאות חיוביות כוזבות: צור2 יש הרבה שימושים לגיטימיים, כולל חיזוק פתרונות קנה מידה "שכבה 2". ומקל על יצירת ארנקי חוזים חכמים שיכולים לשפר את web3 הצטרפות משתמשים ואפשרויות שחזור מרכזיות.
    6. האם הקוד השתנה? זהו התל הברור ביותר, אבל הוא יופיע רק לאחר שחוזה מטמורפי כבר השתנה. אם קוד ה-hash של החוזה החכם - מזהה קריפטוגרפי ייחודי - שונה ממה שהיה כאשר החוזה נפרס לראשונה, סביר להניח שהקוד הוסר, הוחלף או שונה. אם ה-hashs כבר לא תואמים, אז משהו בקוד השתנה והחוזה עשוי להיות מטמורפי. הדגל הזה הוא האינדיקטור הבטוח ביותר למטמורפיזם, אבל הוא לא יעזור לחזות או להקדים את השינוי מכיוון שהוא רק בודק שזה כבר קרה.

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

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

הנה איך מישהו עשוי להשתמש בחוזה חכם מטמורפי כחלק מהונאה. 

ראשית, שלב ההתקנה. התוקף פורס חוזה חכם בכתובת ספציפית בבלוקצ'יין באמצעות שני כלים: Bytecode מטמורפי ו-CREATE2 opcode. (נרחיב על שני המושגים הללו מאוחר יותר.) ה-bytecode המטמורפי עושה את מה ששמו מרמז ו"מורפים". כאן, זה משתנה ל-a הימור חוזה שבו משתמשים יכולים להטמיע אסימוני ERC-20. (שוב, נדון בפרטים של הטריק המורפינג הזה מאוחר יותר. הבטחה!)

לאחר מכן מגיע הפיתיון והמתג. משתמשים תמימים מחזיקים את האסימונים שלהם בחוזה הזה, כשהם מפתים את האפשרות להרוויח תשואה או הטבה אחרת. לאחר מכן התוקף מוחק את כל קוד ההימור וה"מצב" - אחסון בלוקצ'יין או זיכרון - בכתובת החוזה החכמה הזו באמצעות SELFDESTRUCT opcode נדון בסעיף הקודם. (יצוין כי האסימונים - הקיימים כחלק מחוזה ERC-20 נפרד - נמשכים, לא מושפעים מהחוזה שהושמד עצמי.)

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

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

כיצד CREATE2 פותח את האפשרות למטמורפיזם 

צור2 הוא שדרוג opcode, הציג את Ethereum בפברואר 2019, שמציע דרך חדשה לפרוס חוזים חכמים. 

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

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

באופן פרטני יותר, CREATE2 היא פונקציה המשלבת ומשלבת כמה אלמנטים. ראשית, הוא משלב את הכתובת של המפיסה (או השולח): החוזה החכם היוזם שפועל כהורה לזה שייווצר. לאחר מכן, הוא מוסיף מספר שרירותי שסופק על ידי השולח (או "מלח"), המאפשר למפתח לפרוס את אותו קוד לכתובות שונות (על ידי שינוי המלח) ומונע החלפת חוזים קיימים וזהים. לבסוף, הוא משתמש ב-keccak256 hash של קוד בתים של אתחול חוזה חכם ("init"), שהוא הזרע שהופך לחוזה חכם חדש. שילוב הגיבוב זה קובע כתובת Ethereum ולאחר מכן פורס את קוד הבתים הנתון לכתובת זו. כל עוד ה-bytecode נשאר זהה לחלוטין, CREATE2 תמיד יפרוס את קוד ה-byte הנתון לאותה כתובת בבלוקצ'יין.

כך נראית נוסחת CREATE2. (הערה: תבחין באלמנט נוסף, "0xFF", בדוגמה למטה. זהו רק שימוש קבוע של CREATE2 למנוע התנגשויות עם קוד ה-CREATE הקודם.)

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

איך חוזה מטמורפי עובד בפועל

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

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

כלי לזיהוי חוזים חכמים מטמורפיים של PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

בואו נדון בכל שלב, 1-7, בפירוט כדי להאיר את הפעולות בעבודה.

שלב 1: מפתח מניע הכל

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

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

שלב 2: המפעל פורס חוזה יישום

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

שלב 3: חנות המפעל כתובת חוזה יישום

לאחר פריסתו לבלוקצ'יין, חוזה היישום יתקיים בהכרח בכתובת בלוקצ'יין כלשהי. המפעל מאחסן את כתובת החוזה הזו בזיכרון שלו (לשימוש מאוחר יותר, בשלב 5). 

שלב 4: המפעל פורס חוזה Metamorphic

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

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

כלי לזיהוי חוזים חכמים מטמורפיים של PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

שלב 5: שאילתות קוד בתים מטמורפי מפעל כתובת חוזה יישום

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

שלב 6: קוד חוזה יישום מועתק לחוזה המטמורפי

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

שלב 7: לשטוף ולחזור על הפעולה

מפתח יכול לחזור על שלבים 1 עד 6 שוב ושוב ולהחליף את הקוד בחוזה המטמורפי במה שהוא אוהב באמצעות חוזה יישום חדש. כל מה שצריך הוא להשתמש בקוד ה-SELFDESTRUCT - או, בצורה ערמומית יותר, DELEGATECALL opcodes שבסופו של דבר מביאים ל-SELFDESTRUCT - כדי להסיר את הקוד הקיים מראש בחוזה המטמורפי. על ידי חזרה על המחזור עם קוד בייט חדש של חוזה יישום, החוזה המטמורפי יהיה, כמו קסם, מורף!

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

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

***

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

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

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

נתח חוזים חכמים עבור תכונות מטמורפיות באמצעות כלי הגלאי ולבקר GitHub ריפו במשך יותר

עורך: Robert Hackett @rhhackett

***

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

***

הדעות המובעות כאן הן אלה של אנשי AH Capital Management, LLC ("a16z") המצוטטות ואינן הדעות של a16z או החברות הקשורות לה. מידע מסוים הכלול כאן התקבל ממקורות צד שלישי, כולל מחברות פורטפוליו של קרנות המנוהלות על ידי a16z. למרות שנלקחה ממקורות האמינים כאמינים, a16z לא אימתה מידע כזה באופן עצמאי ואינה מציגה מצגים לגבי הדיוק המתמשך של המידע או התאמתו למצב נתון. בנוסף, תוכן זה עשוי לכלול פרסומות של צד שלישי; a16z לא סקרה פרסומות כאלה ואינה תומכת בתוכן פרסומי כלשהו הכלול בהן.

תוכן זה מסופק למטרות מידע בלבד, ואין להסתמך עליו כייעוץ משפטי, עסקי, השקעות או מס. עליך להתייעץ עם היועצים שלך באשר לעניינים אלה. הפניות לניירות ערך או לנכסים דיגיטליים כלשהם נועדו למטרות המחשה בלבד, ואינן מהוות המלצת השקעה או הצעה לספק שירותי ייעוץ השקעות. יתר על כן, תוכן זה אינו מכוון ואינו מיועד לשימוש על ידי משקיעים או משקיעים פוטנציאליים כלשהם, ואין להסתמך עליו בשום פנים ואופן בעת ​​קבלת החלטה להשקיע בקרן כלשהי המנוהלת על ידי a16z. (הצעה להשקעה בקרן a16z תתבצע רק על ידי מזכר ההנפקה הפרטית, הסכם המנוי ותיעוד רלוונטי אחר של כל קרן כזו ויש לקרוא אותה במלואה). המתוארים אינם מייצגים את כל ההשקעות בכלי רכב המנוהלים על ידי a16z, ואין כל ודאות שההשקעות יהיו רווחיות או שלהשקעות אחרות שיבוצעו בעתיד יהיו מאפיינים או תוצאות דומות. רשימה של השקעות שבוצעו על ידי קרנות המנוהלות על ידי אנדריסן הורוביץ (למעט השקעות שעבורן המנפיק לא נתן אישור ל-a16z לחשוף בפומבי וכן השקעות בלתי מוקדמות בנכסים דיגיטליים הנסחרים בבורסה) זמינה בכתובת https://a16z.com/investments /.

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

בול זמן:

עוד מ אנדריסן הורוביץ