Do papel para a rede: como a teoria do leilão informa as implementações de contratos inteligentes PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Do papel para a cadeia: como a teoria do leilão informa as implementações de contratos inteligentes

Os leilões são onipresentes em criptomoedas. A partir de Maker leilões de garantias, para Flashbots' leilões de blockspace de lance selado e leilões de NFT em OpenSea, os leilões são adequados para uma ampla gama de situações em que é necessária a descoberta de preços, liquidez ou alocação de recursos escassos, tanto dentro quanto fora da cadeia. 

No entanto, justaposto ao vasto (e crescente) corpo de pesquisa acadêmica sobre leilões, fica claro que apenas arranhamos a superfície do que esses mecanismos podem oferecer na cadeia - por exemplo, otimização de privacidade, eficiência, excedente e outros objetivos-chave do projeto. Dada a “explosão cambriana” de designs de criadores de mercado automatizados (AMM) após Curve e Sushiswap em 2020 – e a explosão simultânea de blockchains de terceira geração – é plausível (inevitável, talvez) que os leilões on-chain estejam maduros para um aumento evolutivo semelhante . 

Enquanto os formatos de leilão já foram adotados livremente (e limitados pelos) limites técnicos das blockchains, agora estamos começando a ver mais designs inovadores adaptados especialmente para blockchains. Seguindo a tradição de projeto de mercado, este post faz parte de uma série que visa preencher a lacuna entre a teoria e a prática do leilão: Como os princípios teóricos podem informar as decisões de implementação? E como as implementações on-chain, por sua vez, podem informar novas direções da pesquisa teórica? Embora a teoria possa nos guiar em direção a um determinado projeto de leilão, um detalhe de implementação aparentemente inócuo pode ser interessante para analisar com uma lente teórica. 

Começamos comparando os quatro tipos de leilões canônicos ao longo de três eixos: revelação de informações, estratégia de licitação e considerações de implementação na cadeia. Em seguida, vamos nos concentrar especificamente nos formatos de lances selados, aprofundar as sutilezas de implementação que os tornaram relativamente inexplorados na cadeia e apresentar nosso implementação de Solidity de código aberto de um leilão de Vickrey — que esperamos que outros possam usar como referência e base para novas experiências. 

Mas primeiro, uma breve cartilha sobre formatos de leilão

Anteriormente, cobrimos o design de leilões - em formatos tradicionais e aplicados e adaptados a blockchains - em grande detalhe em um recente Podcast com o parceiro de pesquisa de criptografia a16z (e professor da Harvard Business School) Scott Kominers e o chefe de pesquisa de criptomoedas da a16z (e professor da Universidade de Columbia) Tim Roughgarden. Com base em sua experiência em consultoria de protocolos de criptografia, eles fornecem uma visão geral dos tipos de leilões e do design de incentivos, tanto na teoria quanto na prática - incluindo as nuances de preços de compensação de mercado e guerras de gás (que abordamos na parte dois desta série em andamento sobre design de leilão para web3).

Mas para definir um contexto rápido para a implementação abaixo: a teoria dos leilões historicamente se concentrou em quatro tipos de leilão, primeiro taxonomizado por William Vickrey em 1961 e aqui descrito no contexto de um leilão de um único bem.

Um instantâneo de designs de leilão disponíveis fora da cadeia. Fonte: Wikipedia

  • Inglês (preço ascendente): em um leilão inglês ou de preço ascendente, o leiloeiro abre os lances com um preço de reserva (mínimo) e os licitantes colocam lances cada vez mais altos até que reste apenas um licitante disposto a pagar o preço atual, ponto em que o último licitante ganha. Este é o formato de leilão mais comumente retratado na cultura popular e na mídia, muitas vezes no contexto da venda de antiguidades, obras de arte ou gemas sem cortes
  • Neerlandês (preço descendente): Em um leilão holandês ou de preço descendente, o preço de abertura diminui de acordo com um cronograma prescrito. Em um leilão holandês, o primeiro a licitar é o vencedor e o leilão termina instantaneamente. Historicamente, as versões de várias unidades dos leilões holandeses costumam ser usadas para vender grandes quantidades de mercadorias com prazo de validade limitado, tais como flores cortadas, peixe ou tabaco. Mais recentemente, o Tesouro dos EUA introduziu o uso de leilões holandeses para títulos (1974), e o IPO do Google em 2004 (infame) vendeu suas ações em leilão holandês.
  • Primeiro preço de lance selado: Cada licitante apresenta uma oferta lacrada (por exemplo, em um envelope lacrado) ao leiloeiro. Uma vez que todos os lances são enviados, o leiloeiro os lê em particular e anuncia o vencedor (o maior lance). O vencedor então paga o valor que eles oferecem. Os leilões de primeiro preço com lances selados são frequentemente usados ​​em bens imóveis quando uma propriedade atrai o interesse de vários compradores. 
  • Segundo preço de lance selado (O "Leilão de Vickrey”): O leilão homônimo de Vickrey é o mesmo que o leilão de primeiro preço de lance selado, exceto que o vencedor neste tipo de leilão paga o valor do segundo-maior lance. Apesar de ter propriedades teóricas interessantes, o leilão de Vickrey raramente é visto on-chain (em parte devido à dificuldade de implementação de lances selados).

Esses quatro tipos de leilão têm propriedades e dinâmicas diferentes que são ainda mais complicadas quando traduzidas para implementações de contrato inteligente (e que detalharemos mais adiante).

Comparando tipos de leilão por revelação de informações

Uma das formas mais naturais de caracterizar cada tipo de leilão é visibilidade do lance (aberto vs lance selado). Mesmo com todo o resto igual, a mudança na visibilidade do lance pode ter um impacto profundo na dinâmica e no resultado de um leilão.

Os leilões ingleses e holandeses são clamor aberto leilões, o que significa que os preços são anunciados verbalmente à medida que sobem ou descem, e os lances (incluindo seus valores) são públicos para todos os potenciais compradores. Os leilões de lances fechados, no entanto, podem empregar alguns tipos diferentes de privacidade:

  • Eventualmente público: todos os lances são revelados publicamente após o término do leilão
  • Preço público: apenas o preço vencedor é revelado, e não outros lances
  • Totalmente privado: nada é revelado publicamente sobre os lances ou preço vencedor

Essas suposições sobre a visibilidade dos lances significam que os leilões também diferem em termos de revelação de informações; diferentes formatos de leilão revelam diferentes quantidades de informações sobre as avaliações dos licitantes (geralmente um limite superior ou inferior) em diferentes estágios do processo. Em um leilão inglês, fazer um lance efetivamente estabelece um limite inferior na avaliação desse licitante. Em um leilão holandês, por outro lado, o preço atual pode ser interpretado como um limite superior nas avaliações de todos os licitantes. Os leilões de lances selados revelam informações somente após o término do leilão, se for o caso. 

Vale a pena notar que os leilões holandeses podem assumir qualidades de leilões abertos e selados. Os leilões holandeses de item único têm propriedades de privacidade semelhantes aos leilões de lance selado de preço público (já que o primeiro lances vencedores, todos os outros lances mais baixos são mantidos privados). Mas, como veremos mais adiante, essas propriedades mudam significativamente quando os leilões holandeses são realizados on-chain. 

Valores comuns e privados

Examinando as vendas de privado e valor comum bens em leilões de lance aberto e lance selado pode fornecer outra lente para comparar esses formatos. Em um leilão de venda de bem de valor comum, o item tem algum valor intrínseco que é compartilhado entre todos os licitantes, mas os licitantes podem ter informações diferentes ou incompletas sobre esse valor. Em economista comportamental ganhador do prêmio Nobel de Richard Thaler exemplo canônico de valor comum, um pote de moedas está em leilão; nenhum dos licitantes sabe o valor exato contido na jarra, mas cada um tem sua própria estimativa. Em um leilão de venda de um bem de valor privado, cada licitante tem um valor individual para o item leiloado, independente de seus pares. Para tirar exemplos da web3, um NFT comprado puramente para diversão pessoal (sem intenção de revenda ou expectativa de utilidade futura) é um bem de valor privado, enquanto a garantia de um cofre do Maker liquidado é um bem de valor comum.

Enquanto isso, os autores de outro papel Ao analisar os dados dos leilões de madeira, descobriu-se que os leilões de lances fechados “atraem mais pequenos licitantes, transferem a alocação para esses licitantes e também podem gerar receita mais alta” em comparação com seus concorrentes de lances abertos. Notavelmente, os autores descobriram que esses resultados podem ser contabilizados por um modelo de valor privado (onde os valores privados variam com base nas idiossincrasias dos leilões de madeira, como “diferenças nos custos do licitante e arranjos contratuais”), omitindo totalmente os valores comuns de seu modelo. Isso sugere que um vendedor pode se beneficiar ao escolher um leilão de lance selado para vendas em que os licitantes têm motivações, contextos ou usos diferentes para o item leiloado.

Os leilões em inglês podem ser úteis em ambientes onde valores comuns dominar e a descoberta de preços é um objetivo – como mencionado, os licitantes aprendem como os outros estão avaliando o item à medida que os lances chegam e podem ajustar sua estratégia de acordo. Em um estudo de leilões reversos em mercados de trabalho online, os autores descobriram que, enquanto os leilões de lances selados atraíam mais lances, os leilões de lances abertos resultavam em um preço melhor para esses compradores (ou um excedente maior do comprador). A análise sugere que as diferenças “dependem em grande parte da importância relativa do componente de valor comum (versus valor privado) dos serviços de TI leiloados”. Em outras palavras, o formato de lance aberto permite que os licitantes recalibrem dinamicamente sua compreensão de quanto vale o serviço, o que geralmente não é claro no início do leilão.

Na prática, os leilões normalmente exibem uma combinação de características comuns e de valor privado. A interação entre as características desses bens e como (e quando) as informações são reveladas pelo formato do leilão tem efeitos complexos na estratégia de lances. Isso nos leva à pergunta: podemos formalizar a noção de uma estratégia de licitação “simples” (não preciso pensar muito sobre como você pode licitar); e existem leilões onde tais estratégias são ótimas?

Comparação de tipos de leilão por estratégia de lances

Dos quatro tipos de leilões canônicos, um que esteve visivelmente ausente de nossa análise até agora é o leilão de Vickrey. Um leitor atento pode desconfiar da regra de pagamento do leilão de Vickrey: o vencedor paga o segundo lance mais alto em vez do que eles próprios licitam. Isso pode parecer contra-intuitivo no início, mas os leilões ingleses acabam se resolvendo de maneira semelhante. Um leilão inglês termina com o lance mais baixo que nenhum outro licitante está disposto a atender; o vencedor não tem motivos para dar mais lances, mesmo que sua própria avaliação seja muito maior. Na verdade, os leilões ingleses e de Vickrey compartilham uma boa vantagem teórica sobre os leilões de primeiro preço holandeses e de lance selado: compatibilidade de incentivos de estratégia dominante (DSIC). 

Em um nível alto, isso significa que a estratégia de maximização de utilidade de cada licitante é simplesmente oferecer o que eles realmente acreditam que o item leiloado vale (em um leilão de valor comum, este é apenas o valor esperado do item, condicionado às informações do licitante). . Para um mergulho mais profundo, estes notas de aula servem como uma excelente cartilha.

Em um leilão de primeiro preço, não existe essa estratégia de lances dominante. Os licitantes precisam Sombra (ou reduzir) seus lances para serem inferiores à sua avaliação para obter utilidade positiva. Exatamente o quanto eles podem se safar enquanto ainda superam os outros participantes é um jogo Bayesiano. Um leilão holandês é estrategicamente semelhante. Para obter utilidade positiva, um licitante deve esperar até que o preço caia abaixo de sua avaliação, mas quanto tempo esperar após esse limite é outro jogo Bayesiano. Talvez mais surpreendentemente, a receita esperada para todos os quatro tipos de leilão é o mesmo (sob certas suposições; veja Teorema 1). 

Apesar das vantagens teóricas dos leilões de Vickrey, eles são um tanto incomuns na prática. Dentro O Adorável, Mas Solitário Leilão Vickrey, os economistas Lawrence Ausubel e Paul Milgrom fornecem várias explicações de por que esse pode ser o caso. Os autores observam que, apesar de serem estrategicamente equivalentes, os leilões ingleses são intuitivamente mais fáceis para os licitantes raciocinarem do que os leilões de Vickrey. Essa intuição é formalizada em Obviamente Mecanismos à Prova de Estratégia, o que mostra que os leilões ingleses não são apenas DSIC, mas licitar com verdade é “obviamente dominante”. 

Para fornecer um exemplo do mundo real, o Google anunciou no ano passado, o AdSense - um programa em que os anunciantes fazem lances por espaço de anúncio no conteúdo - passaria de leilões de segundo preço para leilões de primeiro preço, citando simplicidade e alinhamento com o restante do ecossistema de publicidade digital. Além dessas considerações de usabilidade, plataformas como o AdSense assumem uma posição de confiança ao realizar leilões de segundo preço: ao superestimar o segundo lance mais alto, um leiloeiro desonesto poderia extrair mais pagamento do vencedor. 

Embora essas preocupações tenham retardado a adoção, o leilão de Vickrey pode encontrar novos casos de uso quando estendido a novos ambientes. As blockchains públicas, em particular, fornecem uma plataforma credível e neutra que pode ajudar a contornar problemas como o leiloeiro desonesto. Isso, juntamente com a diversidade de possíveis aplicativos on-chain, sugere que os contratos inteligentes podem fornecer um teste excepcionalmente eficaz para o mecanismo de leilão de Vickrey.

Comparação de tipos de leilão por meio de considerações de implementação

Trazer leilões on-chain às vezes pode representar novos desafios, em relação às contrapartes fora da cadeia. Nas seções a seguir, exploraremos o cenário atual dos leilões on-chain e as considerações de implementação para cada tipo de leilão. 

Leilões de inglês on-chain

A maioria dos leilões on-chain encontrados na natureza hoje se enquadram na categoria de lance aberto (ou seja, inglês ou holandês). Isso inclui leilões OpenSea de preço ascendente, leilões de garantia Maker e o contrato Zora Auction House. 

Sob o capô do OpenSea, os lances são mensagens off-chain que codificam o valor do lance, assinado pelo licitante. À medida que os compradores em potencial fazem seus lances, a interface do usuário do OpenSea mostra os valores dos lances ao vendedor e aos licitantes em potencial. Nos leilões de garantia Maker e Zora, no entanto, os licitantes enviam uma transação para indicar seu lance; em seguida, a transação de oferta deposita em caução a garantia do licitante em um contrato de leilão. Em virtude de ser uma transação não ofuscada na cadeia, o lance é inerentemente aberto - qualquer um pode ver o que seus colegas licitantes estão oferecendo observando as transações recebidas no contrato de leilão (no mempool público ou à medida que são incluídos na cadeia ). 

No geral, a dinâmica do leilão em inglês permanece relativamente intacta quando traduzida em um contrato inteligente. Uma diferença notável é que as ofertas on-chain incorrem em um custo de gás, que é fixado no valor da oferta de fato. À medida que os preços do gás flutuam durante o período de licitação de um leilão, um licitante que de outra forma teria a oferta mais alta pode ser temporariamente precificado por altas taxas de gás.

Leilões holandeses em cadeia

Os leilões holandeses on-chain tiveram uma tração significativa, desde a facilitação NFT vendas para reequilibrar Conjuntos de tokens (e variantes de desova como Leilões de Duções Graduais e VGDAs de taxa variável). Essa popularidade é por um bom motivo – um simples leilão holandês é relativamente fácil de implementar como um contrato inteligente e requer apenas duas transações na cadeia (uma para criar o leilão, uma para o primeiro e único lance). Mais importante, ele não bloqueia os fundos dos licitantes, ao contrário de outros leilões com lances on-chain.   

A dinâmica dos leilões holandeses off-chain depende de que os lances sejam efetivamente instantâneos. Um leilão holandês de um único item termina assim que um lance é anunciado e nenhum outro lance pode ser feito. Quando realizado na cadeia, no entanto, há um intervalo de tempo entre o momento em que o lance é transmitido e o momento em que é incluído na cadeia, o que pode ter algumas consequências inesperadas. Se o primeiro lance for transmitido para o mempool público (em oposição a um pool de transações privado como flashbots), pode dar início a um guerra de gás, com outros potenciais compradores transmitindo lances com preços de gás cada vez mais altos. Como resultado, o preço ajustado ao gás pode subir repentinamente à medida que o preço fora da cadeia, ascendente-price leilão para pedidos de transação eclipsa o próprio leilão holandês. 

A natureza dependente do tempo do mecanismo de preço decrescente também traz outras desvantagens. Assumindo uma função de decaimento de preço contínuo, um licitante deve estar online exatamente quando necessário para colocar um lance a um preço específico ou configurar um bot (por exemplo, usando Rede Gelato) para licitar por eles. O congestionamento da rede que coincide acidentalmente (ou maliciosamente) com a transmissão do primeiro lance pode reduzir o preço final estabelecido em detrimento da receita do vendedor. Pior ainda, um ataque de negação de serviço (DoS) pode custar ao legítimo vencedor o leilão. 

Leilões de lances selados na cadeia, demonstrados por uma nova implementação de código aberto

As plataformas que utilizam lances fora da cadeia (por exemplo, OpenSea) poderiam facilmente implementar leilões de lances selados, mas exigiriam confiar em um leiloeiro para (a) não revelar nenhum lance, (b) não censurar nenhum lance e (c) determinar corretamente o resultado do leilão. Idealmente, um contrato inteligente sem confiança facilitar o leilão, preservando algum grau de privacidade do lance. 

Para demonstrar, abrimos o código-fonte de uma implementação Solidity de um leilão de lance selado com garantia excessiva em github.com/a16z/auction-zoo, como um leilão de Vickrey de item único (ERC721) com lances denominados em ETH. Abordamos a implementação com três requisitos em mente para um contrato inteligente de leilão de lance selado: 

  1. Privacidade: Os valores dos lances devem permanecer privados, o que significa que os observadores não podem inferir os valores enquanto os lances estão em andamento. Permitimos algum vazamento de informações (por exemplo, revelando que uma oferta está em algum intervalo grande), mas deve haver um grau razoável de ambiguidade. 
  2. Resistência à censura: Isso normalmente pode ser feito postando lances na cadeia.
  3. Compromisso de lance: Um comprador em potencial não pode desistir de seu lance. O licitante vencedor deve ser bloqueado para pagar o preço estabelecido e, da mesma forma, o vendedor deve ser bloqueado para vender o item ao licitante mais alto (possivelmente sujeito a um preço de reserva).

Primeiro precisamos resolver a questão da postagem privado licitações on-chain, de acordo com os dois primeiros requisitos. Um esquema de confirmação-revelação se presta a lances “eventualmente públicos” (quando os valores dos lances são revelados após o término do leilão). Em vez de licitar abertamente, os compradores em potencial podem fornecer um compromisso de hash de sua oferta para o contrato de leilão durante o período de licitação designado. Mais tarde, após o término do período de licitação, cada comprador em potencial revela o lance com o qual se comprometeu. Quando os lances são revelados, o contrato inteligente pode determinar o vencedor. Em nossa implementação, os compromissos de hash são calculados como keccak256(abi.encode(nonce, bidValue)) e passou para o commitBid função. Para eficiência de gás, armazenamos apenas os 20 bytes superiores desse hash. Quando o período de lances termina, os usuários ligam para o revealBid e o contrato cheques que o fornecido nonce e bidValue corresponder ao compromisso armazenado.

Do papel para a rede: como a teoria do leilão informa as implementações de contratos inteligentes PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Lembre-se de beber água e embalar suas variáveis ​​de armazenamento.

Descobrimos um pouco mais de complexidade ao passar para o terceiro requisito. Para garantir que os vencedores paguem, o contrato inteligente deve bloquear os lances. Poderíamos exigir que os licitantes enviem ETH para garantir seus lances junto com cada compromisso - observe que o commitBid função é pagável e registros quanto ETH o usuário bloqueou — mas o ETH anexado a essas transações é público e impossível de ofuscar; em lances “bloqueando”, perdemos a privacidade.

Felizmente, há uma maneira fácil de apoiar nosso espantalho: permitir (e encorajar) os licitantes a supergarantir seus lances, ou seja, bloquear mais ETH do que o próprio valor do lance exige. Com os lances potencialmente supercolateralizados, um observador só pode aprender um limite superior do valor de um lance. Observe que nosso commitBid função permite que o usuário bloqueie qualquer quantidade de ETH com sua transação; qualquer excesso fica devolvida ao vencedor no final do leilão (e um lance será ignoradas se é paragarantido).

Infelizmente, essa solução rápida vem com uma desvantagem: a supercolateralização cria uma troca direta entre privacidade e eficiência de capital. O custo de oportunidade de bloquear uma grande quantidade de capital pode superar a privacidade marginal, e os licitantes com restrição de capital estão em desvantagem. 

Dito isso, o design supercolateralizado serve como uma linha de base útil à medida que continuamos a explorar diferentes abordagens. Uma evolução dessa implementação pode ser particularmente útil em configurações em que um usuário pode fazer lances em um grande número de leilões e as garantias podem ser reutilizadas para cada um. Nesse caso, seria natural que a garantia fosse muito maior do que o lance em qualquer leilão.

**

Podemos encontrar soluções on-chain ainda melhores? Embora a supercolateralização possa ser apropriada para alguns cenários, a troca entre eficiência de capital e privacidade da oferta pode apresentar aos licitantes uma decisão difícil: bloquear mais capital para uma privacidade mais forte ou sacrificar alguma privacidade para liberar capital para uso em outro lugar. Mas como os leilões on-chain continuam a proliferar e se basear em trabalhos anteriores, esperamos que os designers de leilões tenham muito mais formatos e implementações para escolher com base nas trocas que estão dispostos a fazer. 

Na próxima parte desta série, mergulhamos ainda mais no espaço do design e consideramos a questão: podemos garantir uma privacidade forte sem excesso de garantias? Este repositório continuará a servir como uma referência prática para as ideias que discutimos ao longo da série e fornecerá uma base para uma exploração ainda maior. Esperamos que você acompanhe, bifurque e experimente mais implementações à medida que forem adicionadas.

Agradecimentos: Obrigado a Joe Bonneau, Scott Kominers, Sonal Choksi e Tim Roughgarden pelo feedback inestimável sobre este post; e Noah Citron, Sam Ragsdale e Matt Gleason pela revisão do código. Agradecimentos especiais a Stephanie Zinn pela edição.

**
As opiniões expressas aqui são as do pessoal individual da AH Capital Management, LLC (“a16z”) citadas e não são as opiniões da a16z ou de suas afiliadas. Certas informações aqui contidas foram obtidas de fontes de terceiros, inclusive de empresas do portfólio de fundos administrados pela a16z. Embora retiradas de fontes consideradas confiáveis, a16z não verificou essas informações de forma independente e não faz representações sobre a precisão atual ou duradoura das informações ou sua adequação a uma determinada situação. Além disso, esse conteúdo pode incluir anúncios de terceiros; a16z não revisou tais anúncios e não endossa nenhum conteúdo de publicidade neles contido.

Este conteúdo é fornecido apenas para fins informativos e não deve ser considerado como aconselhamento jurídico, comercial, de investimento ou fiscal. Você deve consultar seus próprios conselheiros sobre esses assuntos. As referências a quaisquer valores mobiliários ou ativos digitais são apenas para fins ilustrativos e não constituem uma recomendação de investimento ou oferta para fornecer serviços de consultoria de investimento. Além disso, este conteúdo não é direcionado nem destinado ao uso por quaisquer investidores ou potenciais investidores, e não pode, em nenhuma circunstância, ser invocado ao tomar uma decisão de investir em qualquer fundo administrado pela a16z. (Uma oferta para investir em um fundo a16z será feita apenas pelo memorando de colocação privada, contrato de subscrição e outra documentação relevante de tal fundo e deve ser lida na íntegra.) Quaisquer investimentos ou empresas de portfólio mencionados, referidos ou descritos não são representativos de todos os investimentos em veículos administrados pela a16z, e não pode haver garantia de que os investimentos serão rentáveis ​​ou que outros investimentos realizados no futuro terão características ou resultados semelhantes. Uma lista de investimentos feitos por fundos administrados por Andreessen Horowitz (excluindo investimentos para os quais o emissor não deu permissão para a a16z divulgar publicamente, bem como investimentos não anunciados em ativos digitais negociados publicamente) está disponível em https://a16z.com/investments /.

Os gráficos e gráficos fornecidos são apenas para fins informativos e não devem ser considerados ao tomar qualquer decisão de investimento. O desempenho passado não é indicativo de resultados futuros. O conteúdo fala apenas a partir da data indicada. Quaisquer projeções, estimativas, previsões, metas, perspectivas e/ou opiniões expressas nestes materiais estão sujeitas a alterações sem aviso prévio e podem diferir ou ser contrárias às opiniões expressas por outros. Consulte https://a16z.com/disclosures para obter informações adicionais importantes

Carimbo de hora:

Mais de Andreessen Horowitz