Một công cụ để phát hiện các hợp đồng thông minh biến chất Thông minh dữ liệu PlatoBlockchain. Tìm kiếm dọc. Ái.

Một công cụ để phát hiện các hợp đồng thông minh biến hình

Một giả định bảo mật quan trọng của Ethereum là mã hợp đồng thông minh là bất biến và do đó không thể thay đổi khi nó được triển khai trên blockchain. Trên thực tế, một số hợp đồng thông minh có thể thay đổi - ngay cả sau khi chúng đã được triển khai. Với một vài thủ thuật thông minh, bạn có thể tạo các hợp đồng thông minh biến hình “sự biến hình”Vào thứ gì đó khác - và bằng cách hiểu điều gì làm cho chúng trở nên khả thi, bạn có thể phát hiện ra chúng.

Các hợp đồng thông minh biến hình có thể thay đổi, có nghĩa là các nhà phát triển có thể thay đổi mã bên trong chúng. Những hợp đồng thông minh này gây ra rủi ro nghiêm trọng cho người dùng web3, những người đặt niềm tin vào mã mà họ mong đợi sẽ chạy với tính nhất quán tuyệt đối, đặc biệt là khi những kẻ xấu có thể khai thác khả năng thay đổi hình dạng này. Hãy tưởng tượng một kẻ tấn công sử dụng kỹ thuật này để "trải thảm" những người đang đặt mã thông báo vào một hợp đồng thông minh mà họ không nhận ra là biến chất. Các cuộc tấn công dựa trên cơ sở này và các cơ sở tương tự có thể trang bị cho những kẻ lừa đảo làm mồi cho mọi người và nói chung làm suy yếu lòng tin vào lời hứa đầy đủ của các hệ thống phi tập trung.

Để phân tích xem một hợp đồng thông minh có chứa các thuộc tính biến hình hay không, Tôi đã xây dựng một đơn giản Trình phát hiện hợp đồng biến chất (lấy cảm hứng và xây dựng dựa trên tác phẩm gốc của Thợ khắc Jason, 0 tuổiloại khác). Bất kỳ ai cũng có thể sử dụng công cụ này để kiểm tra xem một hợp đồng nhất định có biểu hiện những dấu hiệu đỏ có thể chỉ ra khả năng biến chất hay không. Phương pháp này không dễ bị đánh lừa: chỉ vì hợp đồng thông minh hiển thị một lá cờ, không có nghĩa là nó nhất thiết phải biến hình; và chỉ vì nó không, không có nghĩa là nó an toàn. Người kiểm tra chỉ đưa ra một đánh giá ban đầu nhanh chóng rằng một hợp đồng Might được biến chất dựa trên các chỉ số có thể. 

Người dùng Web3 nên tự làm quen với các mối đe dọa do các hợp đồng biến hình gây ra để họ có thể đề phòng và tránh các cuộc tấn công có thể xảy ra. Ví và công cụ lập chỉ mục blockchain có thể trợ giúp bằng cách cảnh báo người dùng trước khi họ tương tác với một hợp đồng thông minh có thể chứa các thuộc tính biến hình. Công cụ này nhằm giúp giáo dục mọi người về mối đe dọa tiềm tàng này… và phòng thủ chống lại nó.

Phát hiện hợp đồng thông minh biến hình

Sản phẩm Trình phát hiện hợp đồng biến chất Tôi đã xây dựng các bản phân tích sáu thuộc tính có thể cho biết liệu hợp đồng thông minh có biến hình hay không.

    1. Mã biến hình đã biết có được sử dụng để triển khai hợp đồng không? Nếu mã bytecode biến hình đã biết - mã cấp thấp hơn, máy ảo có thể đọc được mà các hợp đồng thông minh Ethereum, thường được viết bằng Solidity, biến thành sau khi được biên dịch - hiển thị trong một giao dịch để triển khai một hợp đồng thông minh nhất định, thì đó là một dấu hiệu đỏ lớn. Trong các phần tiếp theo, chúng ta sẽ thảo luận về một ví dụ về mã bytecode biến hình được phát triển bởi 0age. Một lưu ý quan trọng: Có vô số biến thể tiềm ẩn của mã bytecode biến hình, khiến việc phát hiện tất cả các giống trở nên khó khăn. Tuy nhiên, bằng cách quét các ví dụ nổi tiếng, máy dò sẽ loại bỏ hiệu quả thấp đối với những kẻ tấn công chỉ đang sao chép và dán các ví dụ hiện có.
    2. Mã hợp đồng thông minh có thể tự hủy không? Để thay thế mã trong hợp đồng - bước quan trọng trong việc tạo hợp đồng biến hình - trước tiên nhà phát triển cần xóa mã đã tồn tại trước đó. Cách duy nhất để làm điều này là sử dụng Mã opcode SELFDESTRUCT, một lệnh hoạt động chính xác như âm thanh của nó - nó xóa tất cả mã và bộ nhớ tại một địa chỉ hợp đồng nhất định. Sự hiện diện của mã tự hủy trong hợp đồng không chứng minh rằng nó là biến chất; tuy nhiên, nó cung cấp một manh mối rằng hợp đồng Might hãy biến hóa và dù sao thì cũng đáng để biết, liệu các hợp đồng bạn đang dựa vào có thể tự phá hủy hay không.
    3. Hợp đồng thông minh có gọi mã từ nơi khác không? Nếu hợp đồng thông minh được đề cập không thể tự hủy trực tiếp, nó vẫn có thể tự xóa bằng cách sử dụng Mã lựa chọn DELEGATECALL. Mã opcode này cho phép một hợp đồng thông minh tự động tải và thực thi mã nằm bên trong một hợp đồng thông minh khác. Ngay cả khi hợp đồng thông minh không chứa opcode SELFDESTRUCT, nó có thể sử dụng DELEGATECALL để tải mã tự hủy từ một nơi khác. Mặc dù chức năng DELEGATECALL không trực tiếp cho biết hợp đồng thông minh có bị biến hình hay không, nhưng đó là một manh mối có thể xảy ra - và vấn đề bảo mật tiềm ẩn - điều đáng lưu ý. Hãy cảnh báo rằng chỉ báo này có khả năng làm tăng nhiều kết quả dương tính giả. 
    4. Hợp đồng khác có triển khai hợp đồng này không? Các hợp đồng biến hình có thể được triển khai có thể bằng các hợp đồng thông minh khác. Điều này là do các hợp đồng biến hình được kích hoạt bởi một opcode khác, chỉ có thể sử dụng bởi các hợp đồng thông minh khác, được gọi là CREATE2. (Chúng ta sẽ thảo luận về CREATE2 - cách nó hoạt động và tại sao nó lại quan trọng - nhiều hơn ở phần sau.) Đặc điểm này là một trong những dấu hiệu ít dễ thấy nhất về khả năng biến chất; đó là điều kiện tiên quyết cần nhưng không đủ. Việc quét đặc điểm này có khả năng làm phát sinh nhiều kết quả dương tính giả - nhưng đó là thông tin có giá trị cần biết vì nó có thể gây nghi ngờ và cung cấp lý do để xem xét kỹ hợp đồng hơn nữa, đặc biệt nếu hợp đồng thông minh có chứa opcode được mô tả tiếp theo.
    5. Hợp đồng người triển khai có chứa opcode CREATE2 không? Như đã đề cập ở trên, việc triển khai thông qua CREATE2 là điều kiện tiên quyết cần thiết cho quá trình biến hình. Nếu hợp đồng người triển khai chứa opcode CREATE2, điều đó có thể cho thấy rằng nó đã sử dụng CREATE2 để triển khai hợp đồng được đề cập. Nếu người triển khai thực sự đã sử dụng CREATE2 để triển khai hợp đồng nói trên, mặc dù điều đó không có nghĩa là hợp đồng nhất thiết phải biến hình, nhưng điều đó có nghĩa là nó Might bị biến chất và có thể là khôn ngoan nếu tiến hành một cách thận trọng và điều tra thêm. Một lần nữa, hãy cẩn thận với những kết quả dương tính giả: TẠO2 có rất nhiều sử dụng hợp pháp, bao gồm cả tăng cường Giải pháp mở rộng quy mô “Lớp 2” và giúp việc tạo ví hợp đồng thông minh có thể cải thiện web3 dễ dàng hơn gia nhập người dùng và các tùy chọn khôi phục chính.
    6. Mã có thay đổi không? Đây là điều rõ ràng nhất, nhưng nó sẽ chỉ hiển thị sau khi một hợp đồng biến thái đã biến hình. Nếu mã băm của hợp đồng thông minh - một định danh mã hóa, duy nhất - khác với khi hợp đồng được triển khai ban đầu, thì có khả năng mã đã bị xóa, thay thế hoặc thay đổi. Nếu các hàm băm không còn khớp nữa, thì điều gì đó về mã đã thay đổi và hợp đồng có thể bị biến chất. Cờ này là chỉ báo chắc chắn nhất về sự biến chất, nhưng nó sẽ không giúp dự đoán hoặc báo trước cho sự biến hình vì nó chỉ kiểm tra xem nó đã xảy ra hay chưa.

Ngoài việc xây dựng một công cụ dòng lệnh đơn giản cho Công cụ phát hiện hợp đồng biến hình, tôi đã xây dựng một số hợp đồng thông minh ví dụ minh họa kịch bản đặt cược hợp đồng biến hình lừa đảo, mà tôi mô tả trong phần tiếp theo. Tất cả mã có sẵn trong này Kho GitHub

Làm thế nào một kẻ độc hại có thể sử dụng các hợp đồng biến chất để ăn cắp tiền của mọi người

Đây là cách ai đó có thể sử dụng hợp đồng thông minh biến hình như một phần của trò lừa đảo. 

Đầu tiên là giai đoạn thiết lập. Kẻ tấn công triển khai một hợp đồng thông minh tại một địa chỉ cụ thể trên blockchain bằng cách sử dụng hai công cụ: mã bytecode biến hình và mã opcode CREATE2. (Chúng tôi sẽ mở rộng về cả hai khái niệm này sau.) Mã bytecode biến hình sau đó thực hiện những gì tên của nó gợi ý và “biến hình”. Ở đây, nó thay đổi thành một hợp đồng đặt cọc nơi người dùng có thể đặt cược mã thông báo ERC-20. (Một lần nữa, chúng ta sẽ thảo luận chi tiết về thủ thuật biến hình này sau. Xin hứa!)

Tiếp theo đến mồi và chuyển đổi. Người dùng không nghi ngờ gì đã đặt mã thông báo của họ vào hợp đồng này, bị thu hút bởi khả năng kiếm được lợi nhuận hoặc một số đặc quyền khác. Sau đó, kẻ tấn công sẽ xóa tất cả mã đặt cược và "trạng thái" - bộ nhớ hoặc lưu trữ chuỗi khối - tại địa chỉ hợp đồng thông minh này bằng cách sử dụng Mã opcode SELFDESTRUCT đã thảo luận trong phần trước. (Cần lưu ý rằng các mã thông báo - tồn tại như một phần của hợp đồng ERC-20 riêng biệt - vẫn tồn tại, không bị ảnh hưởng bởi hợp đồng tự hủy.)

Cuối cùng là phần kéo thảm. Kẻ tấn công sử dụng lại cùng một mã bytecode biến hình được sử dụng trong giai đoạn thiết lập để “triển khai lại” một hợp đồng mới. Hợp đồng mới này triển khai đến cùng một địa chỉ gần đây bị bỏ trống bởi hợp đồng tự hủy. Tuy nhiên, lần này, bytecode “morphs” (một lần nữa, chúng tôi sẽ giải thích cách sau) thành một hợp đồng độc hại có thể đánh cắp tất cả các mã thông báo được đặt tại địa chỉ hợp đồng. Hoàn thành trò gian lận. 

Những rủi ro mà các hợp đồng thông minh biến hình gây ra hiện đã rõ ràng. Nhưng bạn vẫn có thể tự hỏi, thủ thuật biến hình này thực sự hoạt động như thế nào? Để hiểu điều đó, bạn phải thăm dò sâu hơn, đến mức bytecode. 

Cách CREATE2 mở ra khả năng biến chất 

TẠO2 là một bản nâng cấp opcode, giới thiệu với Ethereum vào tháng 2019 năm XNUMX, cung cấp một cách mới để triển khai hợp đồng thông minh. 

CREATE2 cho phép các nhà phát triển kiểm soát nhiều hơn việc triển khai các hợp đồng thông minh của họ so với những gì họ có trước đây. Opcode CREATE ban đầu khiến các nhà phát triển khó kiểm soát địa chỉ đích cho một hợp đồng thông minh sắp được triển khai. Với CREATE2, mọi người có thể kiểm soát và biết trước địa chỉ của một hợp đồng thông minh cụ thể, trước khi thực sự triển khai nó vào blockchain. Kiến thức trước này - cộng với một số thủ thuật thông minh - là những gì cho phép mọi người tạo ra các hợp đồng thông minh biến hình. 

CREATE2 có thể dự đoán tương lai như thế nào? Tính toán của opcode là xác định: miễn là các đầu vào không thay đổi, địa chỉ được xác định bởi CREATE2 sẽ không thay đổi. (Ngay cả những thay đổi nhỏ nhất cũng sẽ khiến việc triển khai diễn ra ở một nơi khác.)

Nói một cách chi tiết hơn, CREATE2 là một hàm kết hợp và băm một số phần tử lại với nhau. Đầu tiên, nó kết hợp địa chỉ của người triển khai (hoặc người gửi): hợp đồng thông minh khởi tạo hoạt động như cha mẹ của hợp đồng sẽ được tạo. Tiếp theo, nó thêm một số tùy ý do người gửi cung cấp (hoặc "muối"), cho phép nhà phát triển triển khai cùng một mã đến các địa chỉ khác nhau (bằng cách thay đổi muối) và ngăn ghi đè các hợp đồng giống hệt nhau hiện có. Cuối cùng, nó sử dụng hàm băm keccak256 của một số mã bytecode khởi tạo hợp đồng thông minh (“init”), là hạt giống biến thành một hợp đồng thông minh mới. Sự kết hợp băm cùng nhau này xác định một địa chỉ Ethereum và sau đó triển khai mã bytecode đã cho cho địa chỉ đó. Miễn là mã bytecode vẫn hoàn toàn giống nhau, CREATE2 sẽ luôn triển khai mã bytecode đã cho đến cùng một địa chỉ trên blockchain.

Đây là công thức CREATE2 trông như thế nào. (Lưu ý: bạn sẽ nhận thấy một phần tử khác, “0xFF” trong ví dụ bên dưới. Đây chỉ là một CREATE2 liên tục sử dụng để ngăn ngừa va chạm với opcode CREATE trước đó.)

Bây giờ chúng ta có một cách để triển khai mã đến một địa chỉ xác định, làm cách nào để thay đổi mã ở cùng một địa chỉ? Lúc đầu, điều này có vẻ là không thể. Nếu bạn muốn triển khai mã mới bằng cách sử dụng CREATE2, mã bytecode phải thay đổi và do đó, CREATE2 sẽ triển khai đến một địa chỉ khác. Nhưng điều gì sẽ xảy ra nếu một nhà phát triển xây dựng mã bytecode theo cách mà nó có thể “biến đổi” thành mã khác khi CREATE2 triển khai hợp đồng thông minh?

Cách hợp đồng biến hình thực sự hoạt động

Công thức để biến một hợp đồng thông minh thành một hợp đồng biến hình đòi hỏi tổng cộng ba hợp đồng thông minh, mỗi hợp đồng đóng một vai trò duy nhất.

Một trong những thành phần cần thiết này là Nhà máy Hợp đồng Biến chất, bộ não của hoạt động. “Nhà máy” này chịu trách nhiệm triển khai Hợp đồng biến hình cũng như một hợp đồng thông minh khác được gọi là Hợp đồng triển khai, được đặt tên như vậy vì mã của nó cuối cùng được thực hiện bên trong Hợp đồng biến hình. Một vũ đạo tinh vi giữa ba hợp đồng này dẫn đến sự biến chất, như được mô tả trong sơ đồ dưới đây.

Một công cụ để phát hiện các hợp đồng thông minh biến chất Thông minh dữ liệu PlatoBlockchain. Tìm kiếm dọc. Ái.

Hãy thảo luận chi tiết từng bước, 1-7, để làm sáng tỏ các thao tác tại nơi làm việc.

Bước 1: Nhà phát triển thiết lập mọi thứ trong chuyển động

Một lập trình viên thiết kế một số mã hợp đồng thông minh - mã bytecode của Hợp đồng Thực thi - cuối cùng sẽ kết thúc trong Hợp đồng biến hình. Nhà phát triển gửi mã này đến Nhà máy hợp đồng biến hình, một hợp đồng thông minh có mục đích chính là triển khai các hợp đồng thông minh khác. Hành động này đặt toàn bộ quá trình tạo Hợp đồng biến hình trong chuyển động.

Mọi thứ sau đó là kết quả của bước đầu tiên này. Thật, Từ bước 1 đến bước 6 xảy ra trong một giao dịch nguyên tử trên blockchain, có nghĩa là gần như tất cả cùng một lúc. Các bước này có thể được lặp đi lặp lại nhiều lần, ad infinitum, để thay thế mã bên trong Hợp đồng biến hình và giữ cho nó liên tục biến hình.

Bước 2: Nhà máy triển khai Hợp đồng thực hiện

Hợp đồng đầu tiên mà Nhà máy triển khai là Hợp đồng thực hiện, trong đó có mã thực hiện. (Sáng tạo, chúng tôi biết.) Hãy coi Hợp đồng thực hiện như một bến xếp hàng, hoặc điểm tham chiếu, chứa một số mã trước khi nó vận chuyển đến điểm đến cuối cùng, trong trường hợp này, sẽ nằm trong Hợp đồng biến hình. 

Bước 3: Nhà máy đặt cửa hàng Địa chỉ thực hiện Hợp đồng

Sau khi triển khai vào blockchain, Hợp đồng triển khai nhất thiết sẽ tồn tại ở một số địa chỉ blockchain. Nhà máy lưu trữ địa chỉ hợp đồng này trong bộ nhớ của chính nó (sẽ được sử dụng sau này, ở Bước 5). 

Bước 4: Nhà máy triển khai Hợp đồng biến hình

Nhà máy triển khai Hợp đồng biến hình bằng cách sử dụng CREATE2 và mã bytecode biến hình. Bạn có thể tìm thấy hướng dẫn kỹ thuật, chuyên sâu về cách hoạt động của mã bytecode biến hình tại đây, nhưng đủ để nói rằng khi bytecode biến hình thực thi, nó sẽ sao chép mã từ một số vị trí trên chuỗi khác - trong trường hợp này là từ Hợp đồng triển khai - vào Hợp đồng biến hình. Như chúng ta đã nói trong phần trước, vì CREATE2 là xác định - miễn là cùng một người gửi, muối và mã bytecode được sử dụng - thì địa chỉ Hợp đồng biến hình vẫn giữ nguyên cho dù các bước này được lặp lại bao nhiêu lần.

Dưới đây là một ví dụ về mã bytecode biến hình trông như thế nào, từ repo biến chất bởi 0age. Đây chỉ là một ví dụ về mã bytecode biến hình - tồn tại vô số biến thể tiềm ẩn, làm phức tạp rất nhiều việc phát hiện các hợp đồng biến hình.

Một công cụ để phát hiện các hợp đồng thông minh biến chất Thông minh dữ liệu PlatoBlockchain. Tìm kiếm dọc. Ái.

Bước 5: Nhà máy truy vấn mã bytecode biến hình để biết địa chỉ Hợp đồng thực hiện

Bytecode biến hình yêu cầu Nhà máy cung cấp địa chỉ Hợp đồng triển khai (như được lưu trữ trong Bước 3). Không quan trọng nếu địa chỉ của Hợp đồng thực hiện thay đổi miễn là mã bytecode biến hình yêu cầu địa chỉ vẫn giữ nguyên. Thật vậy, nếu sau này nhà phát triển triển khai Hợp đồng triển khai mới - chẳng hạn như một hợp đồng độc hại được thiết kế để đánh cắp mã thông báo - thì nó sẽ nhất thiết phải triển khai tại một địa chỉ blockchain khác, theo Bước 2. Điều này không ảnh hưởng đến việc tạo Hợp đồng biến hình.

Bước 6: Mã hợp đồng triển khai được sao chép vào Hợp đồng biến hình

Sử dụng địa chỉ blockchain đã học ở Bước 5, mã bytecode biến hình định vị mã trong Hợp đồng triển khai và sao chép mã đó vào bộ nhớ cục bộ của Hợp đồng biến hình. Đây là cách Hợp đồng biến hình thay đổi hình dạng: bằng cách sao chép mã từ Hợp đồng thực hiện. 

Bước 7: Rửa sạch và lặp lại

Một nhà phát triển có thể lặp đi lặp lại các Bước từ 1 đến 6 và thay thế mã trong Hợp đồng biến hình bằng bất cứ thứ gì họ thích bằng một Hợp đồng triển khai mới. Tất cả những gì cần thiết là sử dụng opcode SELFDESTRUCT - hoặc rõ ràng hơn là opcode DELEGATECALL dẫn đến cuối cùng là SELFDESTRUCT - để xóa mã đã tồn tại từ trước trong Hợp đồng biến hình. Bằng cách lặp lại chu kỳ với mã bytecode của Hợp đồng Thực hiện mới, Hợp đồng Biến hình sẽ, giống như phép thuật, hình thái!

Sử dụng kỹ thuật này để tạo các hợp đồng biến hình, một nhà phát triển thông minh có thể liên tục thay đổi nền tảng dưới chân người dùng web3. Hãy xem xét lại, ví dụ, kịch bản lừa đảo một lần nữa. Trước tiên, một nhà phát triển có thể triển khai Hợp đồng triển khai với mã đặt cọc mã thông báo, thông qua đường dẫn mạch được mô tả trong đồ họa và được xây dựng trong các bước ở trên, sẽ kết thúc trong Hợp đồng biến hình. Kẻ lừa đảo sau đó có thể tự hủy mã này và thay thế nó bằng cách triển khai Hợp đồng triển khai mới có chứa mã thông báo-Trộm cắp Mã. 

Bất cứ điều gì được triển khai trong Hợp đồng thực hiện cuối cùng sẽ kết thúc trong Hợp đồng biến hình. Đó là bản chất của thủ thuật. 

***

Các hợp đồng thông minh biến hình phá vỡ hợp đồng xã hội web3 ngầm rằng những gì bạn thấy là những gì bạn nhận được. Tương tự như cách trò chơi vỏ sò sử dụng ba chiếc cốc chuyển động để giấu một quả bóng, sự tác động lẫn nhau của ba hợp đồng trong việc tạo ra một hợp đồng biến hình khiến cho việc tuân theo chức năng thực sự của hợp đồng trở nên khó khăn. Trò chơi vỏ sò là một sự so sánh đặc biệt phù hợp vì những kẻ lừa bịp tự tin thường sẽ sử dụng kỹ thuật đánh bài và định hướng sai để đảm bảo họ giành chiến thắng. Trong phiên bản web3, những người viết hợp đồng biến hình tương tự có thể làm cho “quả bóng” - mã thực hiện - biến mất (đọc là: tự hủy) và họ có thể thay thế nó bằng bất cứ thứ gì họ thích.

Sự tồn tại của các hợp đồng biến hình có nghĩa là người dùng web3 có thể tham gia vào các hợp đồng có thể thay đổi theo ý muốn - đó là lý do tại sao mối đe dọa này rất quan trọng để hiểu và phòng thủ. Trình phát hiện hợp đồng biến chất của tôi chỉ cung cấp một bước đầu tiên để xác định các hợp đồng biến chất bằng tay nghề mà họ sử dụng. Có một số cách máy dò có thể được cải tiến trong tương lai. Ví dụ: bằng cách kiểm tra đệ quy Nhà máy (hoặc hợp đồng người triển khai) đã tạo Hợp đồng biến hình, người ta có thể xem liệu Nhà máy có tự biến hình hay không. Tính năng này sẽ là một bổ sung hữu ích cho phiên bản nâng cấp 2 của Máy dò.

Cần phải nhắc lại một lần nữa: Công cụ dò tìm này không phải là công cụ chống đánh lừa. Những lá cờ mà nó bắt được không phải là tất cả các dấu hiệu cho thấy tiềm năng biến chất, nhưng chúng cung cấp manh mối. Việc xác định những lá cờ này chỉ là bước khởi đầu cho một cuộc điều tra kỹ lưỡng hơn. Đó là lý do tại sao chúng tôi mở rộng Trình phát hiện để tìm kiếm các cờ có thể dễ dàng tạo ra các kết quả dương tính giả, như sự hiện diện của mã opcode CREATE2 hoặc DELEGATECALL. Nếu bạn có đề xuất để cải thiện công cụ hoặc muốn xây dựng hoặc thêm vào công việc ban đầu này, hãy liên hệ với tôi tại .

Phân tích các hợp đồng thông minh cho các đặc điểm biến hình sử dụng công cụ Detector và tham quan Repo GitHub để biết thêm

Biên tập viên: Robert Hackett @rhhackett

***

Lời cảm ơn: Tôi muốn gửi lời cảm ơn KHỔNG LỒ và cảm ơn Robert Hackett, Eddy Lazzarin, Sam Ragsdale, Riyaz Faizullabhoy, Noah Citron, Mason Hall và Daejun Park vì những phản hồi và lời khuyên có giá trị trong việc làm cho bài đăng và công cụ này đi vào cuộc sống. 

***

Các quan điểm được trình bày ở đây là quan điểm của từng nhân viên AH Capital Management, LLC (“a16z”) được trích dẫn và không phải là quan điểm của a16z hoặc các chi nhánh của nó. Một số thông tin trong đây đã được lấy từ các nguồn của bên thứ ba, bao gồm từ các công ty danh mục đầu tư của các quỹ do a16z quản lý. Mặc dù được lấy từ các nguồn được cho là đáng tin cậy, a16z đã không xác minh độc lập thông tin đó và không đưa ra tuyên bố nào về tính chính xác lâu dài của thông tin hoặc tính thích hợp của nó đối với một tình huống nhất định. Ngoài ra, nội dung này có thể bao gồm các quảng cáo của bên thứ ba; a16z đã không xem xét các quảng cáo đó và không xác nhận bất kỳ nội dung quảng cáo nào có trong đó.

Nội dung này chỉ được cung cấp cho mục đích thông tin và không được dựa vào như lời khuyên về pháp lý, kinh doanh, đầu tư hoặc thuế. Bạn nên tham khảo ý kiến ​​của các cố vấn của riêng mình về những vấn đề đó. Các tham chiếu đến bất kỳ chứng khoán hoặc tài sản kỹ thuật số nào chỉ dành cho mục đích minh họa và không cấu thành khuyến nghị đầu tư hoặc đề nghị cung cấp dịch vụ tư vấn đầu tư. Hơn nữa, nội dung này không hướng đến cũng như không nhằm mục đích sử dụng cho bất kỳ nhà đầu tư hoặc nhà đầu tư tiềm năng nào và không được dựa vào bất kỳ trường hợp nào khi đưa ra quyết định đầu tư vào bất kỳ quỹ nào do a16z quản lý. (Đề nghị đầu tư vào quỹ a16z sẽ chỉ được thực hiện bởi bản ghi nhớ phát hành riêng lẻ, thỏa thuận đăng ký và các tài liệu liên quan khác về bất kỳ quỹ nào như vậy và phải được đọc toàn bộ.) Bất kỳ khoản đầu tư hoặc công ty danh mục đầu tư nào được đề cập, đề cập đến, hoặc được mô tả không phải là đại diện cho tất cả các khoản đầu tư vào xe do a16z quản lý và không thể đảm bảo rằng các khoản đầu tư sẽ sinh lời hoặc các khoản đầu tư khác được thực hiện trong tương lai sẽ có các đặc điểm hoặc kết quả tương tự. Danh sách các khoản đầu tư được thực hiện bởi các quỹ do Andreessen Horowitz quản lý (không bao gồm các khoản đầu tư mà tổ chức phát hành không cho phép a16z tiết lộ công khai cũng như các khoản đầu tư không thông báo vào tài sản kỹ thuật số được giao dịch công khai) có tại https://a16z.com/investments /.

Các biểu đồ và đồ thị được cung cấp bên trong chỉ nhằm mục đích cung cấp thông tin và không nên dựa vào khi đưa ra bất kỳ quyết định đầu tư nào. Hiệu suất trong quá khứ không cho thấy kết quả trong tương lai. Nội dung chỉ nói kể từ ngày được chỉ định. Mọi dự đoán, ước tính, dự báo, mục tiêu, triển vọng và / hoặc ý kiến ​​thể hiện trong các tài liệu này có thể thay đổi mà không cần báo trước và có thể khác hoặc trái ngược với ý kiến ​​của người khác. Vui lòng xem https://a16z.com/disclosures để biết thêm thông tin quan trọng.

Dấu thời gian:

Thêm từ Andreessen Horowitz