Ceremonia de configuración confiable en cadena PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Ceremonia de configuración de confianza en cadena

La ceremonia de instalación de confianza es uno de los dolores, y emociones, de las comunidades criptográficas. El objetivo de una ceremonia es generar claves criptográficas confiables para proteger billeteras criptográficas, protocolos de cadena de bloques o sistemas de prueba de conocimiento cero. Estos procedimientos (a veces extravagantes) son con frecuencia la raíz de la confianza para la seguridad de un proyecto determinado y, por lo tanto, es extremadamente importante hacerlo bien.

Los proyectos de cadena de bloques llevan a cabo ceremonias de numerosas formas creativas, con sopletes, polvo radiactivo y aviones, pero todos comparten algo en común: todos involucran a un coordinador centralizado. Con este trabajo demostramos cómo descentralizar el proceso reemplazando el coordinador centralizado con un contrato inteligente. Además, estamos abriendo una biblioteca que le permite a cualquier persona realizar una ceremonia de este tipo, conocida por los practicantes de criptografía como un Kate-Zaverucha-Goldberg (KZG) o ceremonia de “poderes de tau” – en la cadena Ethereum. ¡Cualquiera puede participar simplemente pagando las tarifas de transacción!

Nuestro enfoque descentralizado tiene limitaciones, pero sigue siendo útil. Debido a las limitaciones actuales de datos en la cadena, el tamaño de los parámetros criptográficos debe ser breve, es decir, no más de 64 KB. Pero el número de participantes no tiene límite y las personas pueden seguir enviando contribuciones a perpetuidad. Las aplicaciones para estos parámetros cortos incluyen pequeños SNARK de conocimiento cero, muestreo de disponibilidad de datosy Árboles verdes.

Historia y mecánica de la ceremonia de instalación de confianza

En una ceremonia típica de instalación de confianza, un grupo de participantes generará en colaboración un conjunto de parámetros criptográficos. Cada parte participante utiliza información secreta, generada localmente, para generar datos que ayuden a crear estos parámetros. Las configuraciones adecuadas aseguran que los secretos no se filtren, que los secretos solo se usen según lo designado por el protocolo y que estos secretos se destruyan por completo al final de la ceremonia. Siempre que al menos una de las partes en la ceremonia se comporte con honestidad, no se comprometa y destruya su secreto local, todo el montaje puede considerarse seguro. (Por supuesto, eso suponiendo que las matemáticas sean correctas y que el código no tenga errores).

Algunas de las ceremonias más destacadas fueron dirigido por Zcash, un proyecto de cadena de bloques orientado a la privacidad. Los participantes en estas ceremonias generaron parámetros públicos diseñados para permitir a los usuarios de Zcash construir y verificar transacciones criptográficas privadas. Seis participantes llevaron a cabo la primera ceremonia de Zcash, Sprout, en 2016. Dos años después, el criptoinvestigador Ariel Gabizon, ahora científico jefe de Azteca, encontró un error devastador en el diseño de la ceremonia que fue heredado de un trabajo de investigacion fundacional. La vulnerabilidad podría haber permitido a los atacantes crear monedas Zcash ilimitadas sin ser detectados. El equipo de Zcash mantuvo la vulnerabilidad en secreto durante siete meses hasta que una actualización del sistema, Sapling, en cuya ceremonia participaron 90 participantes, abordó el problema. Si bien un ataque basado en el agujero de seguridad no habría afectado la privacidad de las transacciones de los usuarios, la perspectiva de una falsificación infinita socavó la premisa de seguridad de Zcash. (Es teóricamente imposible saber si se produjo un ataque.)

Otro ejemplo notable de una configuración confiable es el ceremonia perpetua de "poderes de tau" diseñado principalmente para Semáforo, una tecnología de preservación de la privacidad para la señalización anónima en Ethereum. La configuración usó una curva elíptica BN254 y hasta ahora ha tenido 71 participantes. Otros proyectos destacados usaron más tarde esta configuración para realizar sus propias ceremonias en la parte superior, que incluyen Tornado.Efectivo (recientemente sancionado por el gobierno de EE.UU.), hermez red, y Loopring. Azteca realizó una ceremonia similar en una curva elíptica BLS12_381 con 176 participantes para zkSync, una solución de escalado de Ethereum de "capa dos" que utiliza acumulaciones de conocimiento cero. Filecoin, un protocolo de almacenamiento de datos descentralizado, realizó una ceremonia con 19 y 33 participantes, en la primera y segunda fase respectivamente, bifurcando el repositorio original. Celo, una cadena de bloques de capa 1, también realizó una ceremonia para su cliente ligero Plumo.

Las ceremonias perpetuas no tienen límite en el número de participantes. En otras palabras, en lugar de confiar en otras personas para que lleven a cabo una ceremonia de instalación de confianza, CUALQUIERA puede participar con el grado de seguridad que le satisfaga. Un único participante de confianza garantiza la seguridad de todos los parámetros resultantes; la cadena es tan fuerte como su eslabón más fuerte. Las ceremonias perpetuas pueden ejecutarse, como su nombre lo indica, a perpetuidad, como era la premisa de la ceremonia original de los poderes de tau. Dicho esto, los proyectos a menudo deciden una hora de inicio y finalización concreta para sus ceremonias, de esa manera pueden incorporar los parámetros resultantes en sus protocolos y no tienen que preocuparse por actualizarlos continuamente.

Ethereum planea realizar una ceremonia de configuración de confianza más pequeña para los próximos Fragmentación ProtoDank y DankSharding actualizaciones Esas dos actualizaciones aumentarán la cantidad de datos que la cadena Ethereum proporciona a los clientes para su almacenamiento. Estos datos tendrán una caducidad de sugerido 30 a 60 días. la ceremonia es en desarrollo activo, y es planificado para funcionar durante seis semanas a principios del próximo año. (Ver kzg-ceremonia-especificaciones para obtener más detalles). Se perfila como la ceremonia de instalación confiable más grande para blockchains ejecutada hasta ahora.

La paranoia es una virtud cuando se trata de ceremonias de preparación confiables. Si el hardware o el software de una máquina se ve comprometido, eso puede socavar la seguridad de los secretos que genera. Los ataques furtivos de canal lateral que filtran secretos también pueden ser difíciles de descartar. Un teléfono puede espiar las operaciones de una computadora al grabación de ondas de sonido de vibraciones de la CPU, por ejemplo. En la práctica, dado que es inmensamente difícil eliminar todos los posibles ataques de canal lateral, incluidos los que aún están por descubrir o divulgar, incluso hay propuestas para volar máquinas al espacio para realizar ceremonias allí.

Por ahora, el libro de jugadas para los participantes serios de la ceremonia suele ser el siguiente. Compre una máquina nueva (hardware no contaminado). Haga un espacio de aire quitando todas las tarjetas de red (para evitar que los secretos locales salgan de la máquina). Haga funcionar la máquina en una jaula de Faraday en una ubicación remota no revelada (para frustrar a los posibles fisgones). Sembrar el generador de secretos pseudoaleatorios con mucha entropía y datos difíciles de replicar, como pulsaciones de teclas aleatorias o archivos de video (para que los secretos sean difíciles de descifrar). Y finalmente, destruye la máquina, junto con cualquier rastro de los secretos, quemándolo todo hasta convertirlo en cenizas. 😀

Coordinación de ceremonias de instalación de confianza

Aquí hay una selección divertida de citas de algunos participantes anteriores de la ceremonia de instalación de confianza:

  • "…el soplete se utilizó para calentar metódicamente la electrónica completamente pieza por pieza hasta que todo quedó ennegrecido…"- Peter Todd en destruir físicamente los secretos locales.
  • “Aquí tengo un trozo de tela que tiene polvo de grafito [del] núcleo del reactor [de Chernobyl]... Cuentas cada cuatro pulsos [de un contador Geiger conectado a un microcontrolador] y comparas el intervalo de tiempo entre el pulso uno y dos y el intervalo de tiempo entre el pulso tres y cuatro y si es mayor obtienes un cero, si es menor obtienes un uno”. “…estamos a punto de subirnos a este avión y generar nuestros números aleatorios…” - Ryan Pierce y Andrew Miller sobre la generación secreta.

La ceremonia de los poderes de tau de Zcash ronda 41 involucró un avión. Captura de pantalla: vídeo de YouTube

  • "El vendedor dijo que tenían 13 [computadoras]. Le pregunté si podíamos elegir uno de los 13. Me preguntó si había algo que estaba buscando en particular (confundido porque todos son iguales) y le dije que solo quería elegir uno al azar. Dijo que no podía dejarnos entrar en el almacén trasero. Le pregunté si traería dos de ellos para que pudiéramos elegir uno de los dos. Sacó dos en un carro de mano. Jerry seleccionó una de las dos computadoras y la llevamos a la caja registradora para verificar."- Peter Van Valkenburgh en conseguir una nueva máquina.
  • "Las primeras horas de la ceremonia se realizaron en una jaula de Faraday improvisada hecha de papel de aluminio y film transparente. Saqué la computadora portátil de la jaula de Faraday porque tenía poca ventilación y se estaba calentando al tacto."- Koh Wei Jie en la protección del canal lateral.
  • ".. realizó una parte de la ceremonia en las montañas sin vecinos."- Michael Lapinski en la protección del canal lateral.
  • "Opté por usar video del entorno para generar suficiente entropía."- Muhd Amrullah en la generación de valores aleatorios.
Ceremonia de configuración confiable en cadena PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Za Wilcox, hermano del cofundador de Zcash, Zooko Wilcox, destruye una computadora utilizada para generar números aleatorios para una ceremonia de confianza en 2016. Foto: Morgen Peck

Todas estas ceremonias dependían de un coordinador centralizado. El coordinador es un servidor individual o privado o alguna otra entidad que se encarga de registrar y ordenar a los participantes, actuar como retransmisor enviando información del participante anterior al siguiente y mantener un registro centralizado de todas las comunicaciones con fines de auditoría. Por lo general, el coordinador también está a cargo de poner el registro a disposición del público a perpetuidad; por supuesto yoCon un sistema centralizado, siempre existe la posibilidad de que los datos se pierdan o se administren incorrectamente. (Perpetual-powers-of-tau, por ejemplo, se almacena en Microsoft Azure y Github).

Nos pareció irónico que los proyectos criptográficos deban basarse en ceremonias de configuración centralizadas y confiables cuando la descentralización es un principio fundamental del espíritu criptográfico. ¡Así que decidimos demostrar la viabilidad de realizar una pequeña ceremonia para los poderes perpetuos de tau directamente en la cadena de bloques de Ethereum! La configuración es totalmente descentralizada, sin permisos, resistente a la censura y es segura siempre que uno solo de los participantes sea honesto [ver renuncias]. Participar en la ceremonia cuesta solo de 292,600 a 17,760,000 de gas (alrededor de $7 a $400 a precios actuales), dependiendo del tamaño de los parámetros resultantes deseados (en este caso entre 8 y 1024 potencias de tau). (Consulte la tabla a continuación para conocer los costos concretos; entraremos en más detalles sobre estos cálculos más adelante en la publicación).

Ceremonia de configuración confiable en cadena PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

¡Hasta ahora, le recomendamos que no use el código para nada que no sea con fines experimentales! Agradeceríamos mucho que cualquier persona que encuentre algún problema con el código nos lo informe. Nos encantaría recopilar comentarios y auditorías de nuestro enfoque.

Entendiendo la KZG o ceremonia de los 'poderes de tau'

Exploremos una de las configuraciones confiables más populares, que se conoce como KZG, o ceremonia de "poderes de tau". Crédito al cofundador de Ethereum, Vitalik Buterin, cuyo publicación de blog sobre configuraciones confiables informado nuestras ideas en esta sección. La configuración genera las codificaciones de los poderes de tau, llamados así porque "tau" es la variable utilizada para expresar los secretos generados por los participantes:

pp = [[𝜏]1, [𝜏2]1, [𝜏3]1, …, [𝜏n]1; [𝜏]2, [𝜏2]2, …, [𝜏k]2]

Para algunas aplicaciones (por ejemplo, Groth16, un popular esquema de prueba de zkSNARK diseñado por Jens Groth en 2016), esta primera fase de la configuración es seguida por una segunda fase, una ceremonia de computación multipartita (MPC), que genera parámetros para un circuito SNARK específico. . Sin embargo, nuestro trabajo se centra únicamente en la fase uno. Esta primera fase, la generación de las potencias de tau, ya es útil como componente fundamental para los SNARK universales (p. ej., PLONK y SONIC), así como para otras aplicaciones criptográficas, como compromisos KZG, Árboles verdes y muestreo de disponibilidad de datos (DAS). Generalmente, los parámetros universales de SNARK deben ser muy grandes para que puedan admitir circuitos grandes y útiles. Los circuitos que contienen más puertas son generalmente más útiles ya que pueden capturar grandes cálculos; el número de potencias de tau corresponde aproximadamente al número de puertas en el circuito. Entonces, una configuración típica será de tamaño |pp| = ~40 GB y capaz de admitir circuitos con ~228 puertas Dadas las limitaciones actuales de Ethereum, sería inviable poner parámetros tan grandes en la cadena, pero es factible ejecutar en la cadena una ceremonia de configuración confiable más pequeña útil para pequeños circuitos SNARK, árboles Verkle o DAS.

La Fundación Ethereum planea ejecutar varias más pequeñas ceremonias para potencias de tau de tamaño 200 KB a 1.5 MB. Si bien las ceremonias más grandes pueden parecer mejores, dado que los parámetros más grandes pueden crear circuitos SNARK más útiles, de hecho, más grande no siempre es mejor. ¡Ciertas aplicaciones, como DAS, necesitan específicamente una más pequeña! [La razón es muy técnica, pero si tienes curiosidad, es porque una configuración con n potencias (en G1) solo habilita compromisos KZG para polinomios de grado ≤ n, lo cual es crucial para garantizar que el polinomio debajo del compromiso KZG se pueda reconstruir a partir de cualquier n evaluaciones. Esta propiedad permite el muestreo de disponibilidad de datos: cada vez que se obtienen con éxito (muestreadas) t evaluaciones aleatorias del polinomio, se garantiza que el polinomio se puede reconstruir por completo con probabilidad t/n. Si desea obtener más información sobre DAS, consulte esta publicación de Buterin en el foro de investigación de Ethereum.]

Diseñamos un contrato inteligente que se puede implementar en la cadena de bloques de Ethereum para ejecutar una ceremonia de configuración confiable. El contrato almacena los parámetros públicos, los poderes de tau, completamente en la cadena y recopila la participación a través de las transacciones de los usuarios.

Un nuevo participante lee primero esos parámetros:

pp0 = ([𝜏]1, [𝜏2]1, [𝜏3]1, …, [𝜏n]1; [𝜏]2, [𝜏2]2, …, [𝜏k]2),

luego muestrea un secreto aleatorio 𝜏' y calcula los parámetros actualizados:

pp1 = ([𝜏𝜏']1, [(𝜏𝜏')2]1, [(𝜏𝜏')3]1, …, [(𝜏𝜏')n]1; [𝜏𝜏']2, [(𝜏𝜏')2]2, …, [(𝜏𝜏')k]2),

y los publica en cadena con una prueba que demuestra tres cosas:

  1. Conocimiento de registro discreto.: el participante sabe 𝜏'. (Una prueba de que la última contribución a la ceremonia de instalación de confianza se basa en el trabajo de todos los participantes anteriores).
  2. Bien formado de los pp1: los elementos de hecho codifican poderes incrementales. (Una validación de la buena formación de la contribución de un nuevo participante a la ceremonia).
  3. La actualización no se borra: 𝜏' ≠ 0. (Una defensa contra los atacantes que intentan socavar el sistema eliminando el trabajo anterior de todos los participantes).

El contrato inteligente verifica la prueba y, si es correcta, actualiza los parámetros públicos que almacena. Puede encontrar más detalles sobre las matemáticas y el razonamiento detrás de ellas en el repo.

Cálculo de los costos de gasolina

El principal desafío de ejecutar la configuración en cadena es hacer que la ceremonia de configuración confiable sea lo más eficiente posible. Idealmente, enviar una contribución no costaría más de ~$50. (Los proyectos grandes podrían subsidiar la gasolina para los contribuyentes, en cuyo caso es más fácil imaginar que cientos de participantes gasten $ 100 cada uno). A continuación, damos más detalles sobre las partes más caras de la configuración. ¡Los costos de gas más bajos reducirían el costo de las contribuciones y permitirían la construcción de parámetros más largos (más potencias tau y circuitos SNARK más grandes)!

Nuestra configuración funciona para la curva elíptica BN254 (también conocida como BN256, BN128 y alt_bn128), que admite los siguientes contratos precompilados en Ethereum:

  • ECADD permite agregar dos puntos de curva elíptica, es decir, calcular [𝛼+𝛽]1 de [𝛼]1 y [𝛽]1: costo de la gasolina 150
  • ECMULT permite que los puntos de la curva elíptica se multipliquen por un escalar, es decir, calcular [a*𝛼]1 de a y [𝛼]1: costo de la gasolina 6,000
  • ECPAIR permite verificar un producto de pares de curvas elípticas, es decir, calcular e([𝛼1]1, [𝛽1]2)* … *e([𝛼1]1, [𝛽1]2) = 1 lo que equivale a comprobar que 𝛼1*𝛽1+ … + 𝛼k*𝛽k = 0: costo del gas 34,000 * k + 45,000

¿Podría Ethereum habilitar BLS12_381 (como se propone en EIP-2537), nuestro contrato de instalación también podría funcionar fácilmente para esta otra curva.

Estimemos el costo de la gasolina para actualizar la configuración a ([𝜏]1, [𝜏2]1, [𝜏3]1, …, [𝜏n]1; [𝜏]2):

  1. Costo de gas de verificación de la prueba. Cada participante actualiza la configuración y envía una prueba con tres componentes como se describe anteriormente. Los componentes 1 y 3 de la prueba, "conocimiento del registro discreto" y "actualización que no se borra", son muy baratos de verificar. El desafío está en verificar el componente 2, “bien formado de los pp1”, en cadena. Requiere una gran multiplicación multiescalar (MSM) y dos emparejamientos:
    e(𝆆0[ 1 ]1 + 𝝆1[𝜏]1 + 𝝆2[𝜏2]1 + … + 𝝆n-1[𝜏n-2]1, [𝜏]2) = e([𝜏]1 + 𝝆1[𝜏2]1 + … + 𝝆n-1[𝜏n-1]1, [1]2),
    donde 𝝆0,…,𝆆n-1 son escalares muestreados pseudoaleatoriamente. En términos de contratos inteligentes precompilados, se necesitaría:
    (2n-4) x ECADD + (2n-4) x ECMULT + ECPAIRk = 2 = (2n-4) x 6,150 + 113,000 XNUMX gas.
  2. Costo de gas de almacenamiento de datos. Cada participante también almacena la actualización en la cadena como datos de llamadas (68 gas por byte) que representan n*64*68 gas. (Una nota para aquellos familiarizados con la criptografía de curva elíptica: el almacenamiento de puntos comprimidos haría que la descompresión dominara el costo total según nuestras mediciones para n=256).

Esto nos lleva a la siguiente tabla que estima los costos de gas que deberían informar futuras optimizaciones:

Ceremonia de configuración confiable en cadena PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Estamos explorando soluciones para reducir el costo de la gasolina, ¡así que esté atento!

Biblioteca de código abierto: evm-powers-of-tau

Hemos abierto nuestro repositorio de ceremonia de poderes de tau basado en EVM en github.com/a16z/evm-poderes-de-tau. Realizar una ceremonia con nuestra estrategia es fácil y transparente:

  1. Implementar el contrato de almacenamiento y verificación (contracts/KZG.sol)
  2. Un colaborador lee los parámetros de la ceremonia de los datos de llamadas de transacciones anteriores
  3. El contribuyente genera un secreto localmente, calcula los parámetros actualizados
  4. El contribuyente genera su prueba: pi1, pi2
  5. El contribuyente envía los parámetros actualizados a través de KZG.potUpdate() al contrato inteligente implementado en la cadena de bloques pública
  6. El contrato inteligente verificará la validez de la actualización, revirtiendo en el caso de un envío mal formado
  7. Múltiples contribuyentes pueden ejecutar los pasos 2-5 a perpetuidad, cada uno aumentando la seguridad de la ceremonia
  8. Cada vez que un desarrollador confía en la cantidad y la calidad de los envíos, puede consultar la cadena de bloques para obtener los parámetros actuales y usar estos valores como sus claves criptográficas.

Nuestro repositorio usa arkworks-rs para calcular los pasos dos y tres (el cálculo del óxido se puede encontrar en src/pot_update.rs), pero es posible que los usuarios deseen escribir los suyos propios. El flujo completo de envío de actualizaciones se puede encontrar en la prueba de integración en pruebas/integration_test.rs.

Tenga en cuenta que hemos optado por utilizar calldata para almacenar parámetros actualizados de potencias de tau en la cadena, ya que es varios órdenes de magnitud más económico que el almacenamiento. Puede encontrar una consulta basada en ethers-rs para estos datos en src/consulta.rs.

Finalmente, las pruebas y ecuaciones detalladas se pueden encontrar en el informe técnico en informe técnico/principal.pdf.

Trabajo futuro

Antes de que esta ceremonia de configuración de confianza pueda usarse en producción, recomendamos primero realizar una auditoría exhaustiva tanto de las pruebas matemáticas como de la implementación de muestra.

Tal como se implementó, el costo de transacción de actualizar la ceremonia crece linealmente con el tamaño de la configuración. Para la mayoría de las aplicaciones (SNARK, DAS) nos gustaría una configuración de n >= 256, que actualmente cuesta $73 por actualización. 

Podríamos lograr un crecimiento del costo de verificación sublineal con una prueba STARK del cálculo de actualización válido y un compromiso de vector con los valores actualizados. Esta construcción también eliminaría la dependencia de las precompilaciones Ethereum L1 BN254, lo que permitiría el uso de la curva BLS12-381 más popular.

Todas las estrategias de ceremonia tienen compensaciones. Creemos que esta construcción es sólida y tiene grandes propiedades comprobables de resistencia a la censura. Pero nuevamente, advertimos contra el uso de este método hasta que se realice más trabajo para verificar la solidez de nuestro enfoque.

AGRADECIMIENTOS

  • Dan Boneh: por comentarios útiles en las primeras etapas de este trabajo
  • Joe Bonneau – por aclarar la exposición en la primera versión del informe técnico
  • William Borgeaud – para discusión sobre BLS dentro de TurboPlonk / Plonky2
  • Mary Maller - para reflexiones sobre la mecánica general del enfoque

Editor: Robert Hackett @rhhackett

***

Las opiniones expresadas aquí son las del personal individual de AH Capital Management, LLC ("a16z") citado y no son las opiniones de a16z o sus afiliados. Cierta información contenida aquí se ha obtenido de fuentes de terceros, incluso de compañías de cartera de fondos administrados por a16z. Si bien se tomó de fuentes que se consideran confiables, a16z no ha verificado de forma independiente dicha información y no hace declaraciones sobre la precisión actual o duradera de la información o su idoneidad para una situación determinada. Además, este contenido puede incluir anuncios de terceros; a16z no ha revisado dichos anuncios y no respalda ningún contenido publicitario incluido en ellos.

Este contenido se proporciona solo con fines informativos y no debe considerarse como asesoramiento legal, comercial, de inversión o fiscal. Debe consultar a sus propios asesores sobre estos asuntos. Las referencias a cualquier valor o activo digital son solo para fines ilustrativos y no constituyen una recomendación de inversión ni una oferta para proporcionar servicios de asesoramiento de inversión. Además, este contenido no está dirigido ni destinado a ser utilizado por ningún inversionista o posible inversionista, y bajo ninguna circunstancia se puede confiar en él al tomar una decisión de invertir en cualquier fondo administrado por a16z. (Una oferta para invertir en un fondo a16z se realizará solo mediante el memorando de colocación privada, el acuerdo de suscripción y otra documentación relevante de dicho fondo y debe leerse en su totalidad). Cualquier inversión o compañía de cartera mencionada, referida o descritos no son representativos de todas las inversiones en vehículos administrados por a16z, y no puede garantizarse que las inversiones serán rentables o que otras inversiones realizadas en el futuro tendrán características o resultados similares. Una lista de inversiones realizadas por fondos administrados por Andreessen Horowitz (excluyendo inversiones para las cuales el emisor no ha otorgado permiso para que a16z divulgue públicamente, así como inversiones no anunciadas en activos digitales que cotizan en bolsa) está disponible en https://a16z.com/investments /.

Los cuadros y gráficos proporcionados en el interior tienen únicamente fines informativos y no se debe confiar en ellos al tomar cualquier decisión de inversión. El rendimiento pasado no es indicativo de resultados futuros. El contenido habla sólo a partir de la fecha indicada. Todas las proyecciones, estimaciones, pronósticos, objetivos, perspectivas y/u opiniones expresadas en estos materiales están sujetas a cambios sin previo aviso y pueden diferir o ser contrarias a las opiniones expresadas por otros. Consulte https://a16z.com/disclosures para obtener información adicional importante.

Sello de tiempo:

Mas de Andreessen Horowitz