Secret Deep Dive: Desbloqueando o Streaming Web3 com NFTs Secretos
Secret Network
Mergulhamos profundamente na tecnologia por trás do lançamento do filme KillRoy Was Here de Kevin Smith — o primeiro longa-metragem mintado como um NFT, garantido pela Secret Network!
O Secret Deep Dive de hoje foi escrito por Tovi Levis, engenheiro de software sênior do SCRT Labs.
Olá para a comunidade secret!
Hoje vamos dar uma olhada no aspecto secreto por trás de KillRoy Was Here — o primeiro longa-metragem da NFT já mintado. Foi um privilégio para nós fazer parceria com Kevin Smith e desbloquear uma nova experiência inovadora para os usuários.
Na Secret Network, temos orgulho de ser pioneiros em soluções inovadoras e explorar tecnologias de ponta. Ao mesmo tempo, queremos garantir que a experiência do usuário seja da mais alta qualidade possível — talvez até rivalizando com as plataformas Web2. Era importante para nós que o lançamento do KillRoy Was Here estabelecesse o padrão para o que é possível com NFTs Secretos e NFTs em geral!
Para isso, decidimos abordar duas questões técnicas principais que achamos que tornariam a experiência digna do primeiro lançamento de um longa-metragem usando a tecnologia blockchain:
- Os titulares de NFT podem transmitir o filme
- Ser capaz de assistir ao filme em dispositivos móveis
Nesta postagem do blog, compartilharei os detalhes técnicos de como alcançamos cada um desses objetivos.
Streaming de vídeo usando um NFT secreto
O primeiro objetivo era reproduzir o vídeo criptografado diretamente no site, em vez de baixá-lo e descriptografá-lo offline.
Para isso, usamos o protocolo HLS (HTTP Live Streaming) que é padrão da indústria para streaming de vídeo, que também possui suporte nativo para reprodução de vídeos criptografados. Em poucas palavras, o formato HLS contém um arquivo de manifesto (arquivo m3u8) que descreve uma lista de arquivos de vídeo e sua duração. Cada arquivo de vídeo é um pequeno pedaço de todo o vídeo (codificado em H.264), que opcionalmente pode ser criptografado com AES-128-CBC (ou SAMPLE-AES para criptografia de conteúdo parcial).
Aqui está um exemplo de um arquivo m3u8:
Como você pode ver, a maneira como esse tipo de criptografia deve ser usado é fornecendo o link para a chave de criptografia no próprio arquivo de manifesto. Infelizmente, parece que os criadores da especificação HLS não consideraram as chaves de criptografia armazenadas em NFTs secretas. Não importa! Significa apenas que precisamos de alguma forma quebrar esse link para que o jogador possa obter a chave de criptografia dos metadados privados dentro do NFT Secreto.
Essencialmente, se quisermos injetar uma chave dinâmica nesse arquivo, temos duas abordagens. A primeira seria baixar o arquivo m3u8, modificá-lo no navegador e fornecê-lo ao player de vídeo de sua escolha. A segunda seria substituir a chave após o m3u8 ser carregado no player, mas logo antes de cada segmento de vídeo H.264 ser buscado e reproduzido.
Examinamos um dos players de vídeo de navegador de código aberto mais populares — Video.js. Felizmente para nós, descobrimos que esse player nos permitiu “sequestrar” cada solicitação HTTP que o player faz antes da solicitação, verificar se contém uma string conhecida e substituí-la por uma nova. Isso nos permitiu adotar a última abordagem que descrevemos acima: substituímos o URI da chave de criptografia no arquivo de manifesto por “key://0.key” e verificamos se podemos detectá-lo:
O URI que substituímos é um servidor de eco, cujo objetivo é simplesmente ecoar a chave de criptografia (além de verificar e decodificá-la) e devolvê-la ao player. Uma implementação ingênua seria:
Isso é feito por HTTPS para mantê-lo seguro de ponta a ponta. Você pode encontrar um exemplo completo dessa implementação no repositório do GitHub:
https://github.com/scrtlabs/mobile-video-example
Visualizando conteúdo secreto no celular
O segundo objetivo era de alguma forma permitir que os detentores de NFT visualizassem seu conteúdo exclusivo em seus dispositivos móveis.
Infelizmente, neste momento atual, a Secret Network não tem suporte total para um aplicativo de carteira móvel que permita suporte a aplicativos web3 prontos para uso e, portanto, precisamos ser criativos.
Secret.js (nosso SDK Javascript de primeira parte) pode funcionar em um dispositivo móvel e pode nos fornecer as ferramentas de que precisamos. Faremos uso criativo do mecanismo de Permissão. (Permissões são blobs assinados que podem ser usados para compartilhar algo. Leia mais sobre isso em nossa documentação.)
Primeiro, pegamos a licença que foi assinada na versão desktop com o Keplr e geramos um código QR a partir dela. Em seguida, no lado móvel, criamos uma página dedicada a ele e usamos secret.js para gerar uma carteira temporária no dispositivo.
Por fim, o usuário é solicitado a escanear o código QR do desktop para que possamos usar a permissão gerada para consultar as NFTs dos usuários e extrair os dados privados para poder transmitir os vídeos no dispositivo móvel (usando os mesmos métodos descritos acima) .
Este método parece funcionar sem problemas em dispositivos iOS e Android. A única ressalva foi que o iOS não suporta nosso “hack HLS”, pois não possui suporte a MSE.
Portanto, apenas no iOS, usamos o player de vídeo nativo (que suporta HLS) e fornecemos uma fonte que modificamos e servimos como “data:application/x-mpegurl;base64,[data]”. Acontece também que essa interface de usuário nativa do player móvel funciona muito bem e não precisamos usar um player de terceiros diferente (obrigado Apple!).
Com esses desafios técnicos resolvidos, voltamos nossa atenção para outros aspectos-chave da experiência do usuário — por exemplo, garantir que os usuários possam obter facilmente seu primeiro SCRT e participar do Mint. (Ficamos orgulhosos de fazer parceria com a Crypto.com como parte desse esforço!) Tentamos garantir que cada parte do UX fosse o melhor possível e, no processo, aprendemos muito sobre quais outras melhorias fundamentais poderiam ser feito para a rede, suas ferramentas e seus recursos.
Os detentores de NFT secretos usam seus PFPs para desbloquear o próprio filme KillRoy Was Here!
Indo mais fundo
No SCRT Labs, estamos constantemente tentando inovar em tudo — desde privacidade L1 para contratos inteligentes até aplicativos secretos de última geração. Adotamos uma abordagem profundamente pragmática em tudo o que construímos, porque nos preocupamos em impulsionar a adoção no mundo real por milhões de usuários. (Se você está curioso sobre nossa abordagem no nível blockchain, confira nossa série de posts recentes sobre privacidade na Web3!)
https://scrt.network/blog/beyond-zk-guide-to-web3-privacy-part-1
Pensamos profundamente sobre esses problemas há anos, e a Secret Network tem orgulho de continuar liderando a demanda por computação segura no espaço blockchain. Se essas ideias lhe interessam — e se você está convencido de sua importância — junte-se a nós na construção de soluções e tecnologias que podem nos ajudar a proteger a web descentralizada e dimensionar a Web3!
Se você é um desenvolvedor de aplicativos e deseja criar coisas legais como a experiência de streaming KillRoy Was Here, confira nossos recursos de desenvolvimento aqui. (Secret usa Rust!) Você deve verificar especialmente nosso novo Guia de Introdução.
Se você é alguém apaixonado por garantir que os usuários da Web3 tenham as proteções de privacidade de dados que eles precisam e merecem, considere se tornar um Agente Secreto! É nossa missão garantir que a web descentralizada que estamos construindo seja realmente capacitada — e acessível a todos. Da conscientização e educação ao crescimento internacional e relações universitárias, há muitas maneiras de ajudar a contribuir para a expansão do ecossistema Secret e a disponibilidade global de tecnologias de privacidade na Web3.
Confira o programa Agentes Secretos e junte-se a uma das melhores e mais comprometidas comunidades em todo o espaço blockchain!
Obrigado por ler este Secret Deep Dive. Avante e para cima!
Dúvidas e caso queira se envolver no projeto da Secret Network, junte-se a nossas redes:
Telegram Secret em português: https://t.me/secret_portuguese
Canal Youtube Secret Network em português: https://www.youtube.com/c/SecretNetworkHubPTBR
Twitter Secret português: https://twitter.com/scrt_portuguese
Instagram: https://www.instagram.com/secretportuguese/
Discord: https://discord.gg/Ug5yx3MN