Título original: "Compreendendo a cadeia SUAVE dos Flashbots da perspectiva de um desenvolvedor: além do MEV, que outras possibilidades existem para EVM + TEE?" 》

Autor original: ZHIXIONG PAN, DUGUBUYAN, ChainFeeds Research

Ao introduzir o ambiente TEE, a cadeia SUAVE traz recursos poderosos para o desenvolvimento de aplicações, e seus possíveis cenários de aplicação são numerosos. Além disso, sua operação simples e conveniente entre cadeias também traz espaço suficiente para a imaginação ao design do Dapp.

SUAVE é um projeto descentralizado desenvolvido pela Flashbots que estabelece uma rede com ambiente TEE para solucionar problemas encontrados no processo MEV, como custódia de chaves e confiança mútua multipartidária. Ao mesmo tempo, a adição do TEE no projeto SUAVE dá ao SUAVE mais possibilidades além de resolver problemas de MEV.

Biblioteca de códigos relacionados ao SUAVE

O projeto SUAVE é baseado em extensões Ethereum, portanto é inerentemente compatível com EVM. Seus atuais projetos relacionados no GitHub incluem: SUAVE-geth, SUAVE-std, SUAVE-examples, etc.

Entre eles, SUAVE-geth é o código da camada de execução estendido com base em geth. Ele adiciona principalmente um ambiente de computação criptografado baseado em geth, bem como alguma pré-compilação no ambiente de computação criptografado. Particularmente digno de menção é a adição de pré-compilação para solicitações HTTPS padrão, que permite aos desenvolvedores usar o ambiente TEE para fornecer aos usuários a capacidade de acessar outras redes. Além disso, contém uma série de pré-compilações baseadas em funções de uso do TEE, como obtenção de parâmetros de criptografia, armazenamento de informações de criptografia e obtenção de informações de criptografia, etc., que formam uma infraestrutura de desenvolvimento baseada em um ambiente confiável.

SUAVE-std é um projeto estabelecido para comodidade dos desenvolvedores e pode ser entendido como uma biblioteca de ferramentas de desenvolvimento. Por exemplo, ele empacota como usar solicitações HTTP e até mesmo empacota uma biblioteca de código para usar ChatGPT com base nisso. Isso elimina a necessidade de os desenvolvedores montarem mensagens de solicitação ChatGPT e analisarem eles próprios as mensagens de retorno. Basta substituir sua própria chave de API ao enviar uma mensagem. O ambiente de segurança TEE garante a segurança da chave API, pois tudo é feito no ambiente TEE. Inicialmente, a biblioteca padrão ChatGPT usa o modelo GPT-3.5-turbo por padrão e a temperatura padrão é 0,7. Agora foi adicionada uma interface flexível e os modelos também podem ser passados ​​como parâmetros.

O projeto SUAVE-exemplos serve principalmente para mostrar alguns casos de como realizar o desenvolvimento de aplicações, ou pode ser mais adequado como um tutorial para iniciantes. Para desenvolvedores que são novos no desenvolvimento de aplicativos SUAVE, eles podem aprender e comparar através dos casos deste projeto.

Prática de desenvolvimento SUAVE

Como SUAVE é baseado em extensões Ethereum (seu ambiente executável é chamado MEVM, ou Modified Ethereum Virtual Machine), o desenvolvimento de contratos inteligentes é compatível com EVM e os documentos oficiais de desenvolvimento são introduzidos no Solidity. Portanto, para desenvolvedores, a experiência de desenvolvimento do Solidity é totalmente útil. No desenvolvimento de aplicações SUAVE, o desenvolvimento de contratos inteligentes pode ser entendido como o desenvolvimento do Solidity com a função de computação criptografada no ambiente TEE.

Existem várias pré-compilações SUAVE MEVM importantes. O primeiro é confidencialInputs. Esta pré-compilação aceita parâmetros de criptografia de solicitações de aplicativos. Esse parâmetro geralmente é alguma informação privada que precisa ser criptografada, como chaves privadas, chaves de API, etc. no ambiente TEE, e no desenvolvimento de aplicações, a obtenção dessas informações depende desta interface para obter o texto simples. O processo de transmissão é totalmente criptografado, seguro e confiável. Discutiremos o princípio mais tarde. O segundo é o confidencialStore, que é usado para armazenar informações privadas. Quando obtemos as informações privadas dos parâmetros, muitas vezes não é necessário participar do cálculo naquele momento, por isso são armazenadas para uso posterior. A terceira é confidencialRetrieve. Esta interface é usada ao solicitar texto simples de dados do contexto TEE quando informações privadas são necessárias para participar de cálculos.

O armazenamento seguro de informações privadas da SUAVE permite que os desenvolvedores atinjam tal cenário: "O usuário carrega a chave privada e, em seguida, o terceiro realiza cálculos de negócios. Quando as condições forem atendidas, o terceiro pode usar diretamente a chave privada do usuário para assinar. Desta forma, um terceiro pode usar a chave privada do usuário para assinar sob certas regras, mas o terceiro nunca será capaz de obter o texto simples da chave privada.”

SUAVE usa solicitações HTTPS para operações entre cadeias. Existe uma biblioteca chamada gateway em seu conjunto de ferramentas para ler diretamente as informações da cadeia cruzada. Sua essência é que o usuário defina o nó RPC de uma determinada cadeia. Mais comumente, o usuário carrega as informações da chave da API, como Infura, Etherscan, etc. ., e depois em Quando precisar chamar, basta usar a solicitação HTTP para o nó correspondente. Quando é necessário escrever informações entre cadeias, há um pacote de transações no conjunto de ferramentas, que pode ajudar os desenvolvedores a codificar mensagens como EIP1559 e, finalmente, transmitir a transação por meio da interface eth_sendRawTransaction.

Há outro cenário de uso que vale a pena mencionar, que é fazer upload e armazenar o bytecode compilado pelo Solidity como parâmetro privado, e então implantá-lo e chamá-lo quando as condições forem atendidas, formando assim uma biblioteca privada. Este cenário de uso pode ser estendido para: chave privada + biblioteca de bytecode privada. Neste caso, transações completamente privadas podem ser alcançadas ao fazer chamadas de atribuição de terceiros.

Recursos SUAVE

O estado final de SUAVE é uma cadeia, que chamamos de cadeia SUAVE. Podemos considerar a cadeia SUAVE como uma cadeia que implementa MEVM. Por ser um blockchain compatível com EVM, também podemos construir ativos como ERC20 e ERC721 no SUAVE, e suas operações on-chain não são diferentes daquelas da série EVM. Mas sua singularidade reside na adição de operações fora da cadeia, como o envio de transações para nós em outras cadeias. Os resultados das operações fora da cadeia ou as condições de uso podem ser armazenados na cadeia SUAVE, e os resultados armazenados são garantidos por consenso. Isso garante consistência entre os cálculos fora da cadeia e o status na cadeia. Por exemplo, os desenvolvedores podem escrever um contrato inteligente para registrar algumas condições na cadeia (que também podem ser modificadas). Quando um determinado nó da rede da cadeia for acessado e o resultado retornado atender aos requisitos, uma transferência predefinida de um determinado ativo ERC20 será realizada. realizado.

Todos os recursos acima são trazidos pela computação confiável off-chain da SUAVE. Sabemos que o SUAVE foi desenvolvido pela equipe Flashbots e o SUAVE é considerado "O Futuro do MEV" pela equipe Flashbots, portanto, o processamento de transações em pacote é definitivamente necessário. Com base na cadeia SUAVE em um ambiente confiável, os princípios relacionados ao MEV são definitivamente necessários. muito simples: as transações do pacote de montagem são enviadas para os nós de retransmissão dos Flashbots. As chaves privadas podem ser armazenadas de forma privada, mesmo em código, o que abre um enorme potencial de utilização. Por exemplo, além da recompensa do gás na cadeia alvo, o construtor também pode obter determinados ativos digitais na cadeia SUAVE. Para o mercado MEV, é possível definir serviços de forma flexível, garantindo ao mesmo tempo a segurança das informações privadas, o que atualmente não é possível com MEV (atualmente apenas garantias tradicionais fora da cadeia baseadas em confiança, contrato, boa vontade, etc.) podem ser alcançadas.

Ferramentas e infraestrutura de desenvolvimento SUAVE

Para os desenvolvedores, além do desenvolvimento de contratos inteligentes on-chain, conjuntos de ferramentas como ether.js no desenvolvimento front-end também são uma parte importante do desenvolvimento de um dapp. No desenvolvimento de aplicações SUAVE, como a cadeia SUAVE é modificada com base em EVM, ferramentas como ether.js e web3.js também podem ser utilizadas. Essas ferramentas interagem com contratos inteligentes na cadeia SUAVE e não são diferentes de outras EVM-. cadeias compatíveis, mas apenas funções em ambientes não confidenciais podem ser chamadas. Um contrato inteligente da cadeia SUAVE é dividido em operações on-chain (referindo-se à cadeia SUAVE) e off-chain (operações entre cadeias também estão incluídas nesta categoria). As operações fora da cadeia, na verdade, referem-se a cálculos ambientais confidenciais. Para computação em ambiente confidencial, a equipe Flashbots fornece SDKs em duas linguagens (Go e TypeScript). O uso está descrito na documentação do SUAVE. Ao enviar uma transação de computação privada (chamada de Solicitação de Computação Confidencial pela equipe Flashbots) para um nó SUAVE, você pode trazer entradas confidenciais, que são parâmetros privados. Durante todo o processo de transmissão, o texto simples final deste parâmetro aparecerá apenas no. Ambiente TE.

Finalmente, quando se trata de implantação de contratos inteligentes, o nome testnet da cadeia SUAVE é denominado Regil, mas foi atualizado e é denominado Toliman. O método de implantação é detalhado no documento SUAVE. Seu método de implantação, método de interação pós-implantação, etc. não são diferentes da implantação de contrato inteligente Ethereum.

Chaleira

Após a implantação de um contrato inteligente, sua operação real é diferente daquela do Ethereum. A principal unidade de execução do SUAVE é chamada Kettle. Kettle é o ambiente operacional TEE da SUAVE (inclui um nó MEVM e um armazenamento de dados confidenciais). Depois que o desenvolvedor escreve e implanta o contrato inteligente, o usuário envia uma solicitação de computação confidencial (doravante denominada CCR. Quando o contrato inteligente precisa usar computação confidencial, ele é executado pelo Kettle).

O diagrama de estrutura do Kettle é o seguinte:

Podemos ver que os desenvolvedores usam a linguagem solidity para desenvolver e implantar aplicativos. Depois que a solicitação final é enviada ao Kettle, tudo é processado pelo MEVM. Além das funções do geth, o MEVM também adiciona algumas pré-compilação a ele, que podem armazenar. e recuperar dados privados, espere. Além disso, ele trata (incluindo modificação e recuperação) do estado na cadeia SUAVE.

A principal função de Kettle é receber e processar cálculos privados, bem como lidar com armazenamento e recuperação de dados privados. Tomando como exemplo o armazenamento de determinados dados privados, todo o processo é o seguinte: o front-end do usuário usa o SDK ou ferramenta suave geth para iniciar uma solicitação CCR para um contrato inteligente na cadeia SUAVE O SDK ou ferramenta suave geth. usará a chave de dados (chave simétrica) para Os dados são criptografados. Esta chave de dados aparecerá apenas no ambiente Kettle, e o nó RPC do SUAVE verá apenas o texto cifrado. Se existe um relacionamento um-para-um entre o jarro e os nós não é visto na documentação do SUAVE. Da mesma forma, os princípios detalhados do próprio Kettle, dos nós e da troca de chaves não são introduzidos no documento. No entanto, com base no processo de criptografia e descriptografia conhecido, os desenvolvedores têm motivos para acreditar que a proteção de dados pode ser garantida entre o front-end do usuário e o ambiente TEE interno do Kettle.

Os dados privados do Kettle serão armazenados no armazenamento de dados confidenciais. Ao desenvolver contratos inteligentes, os desenvolvedores especificarão os visitantes e os modificadores dos dados os publicarão por meio de sua rede de transporte. Se este contrato for especificado para acesso, as solicitações CCR subsequentes também serão feitas. Deve ser enviado para este Kettle porque o armazenamento de dados do Kettle não é atualizado globalmente. Após o desenvolvedor implantar o contrato inteligente e o usuário acessar o Kettle correspondente (há um parâmetro na solicitação CCR, o endereço do Kettle deve ser especificado), seus dados privados podem ser acessados. Quando um usuário envia um CCR e solicita dados privados em um contrato inteligente, o ID e a chave criados ao armazenar os dados correspondentes são utilizados para recuperação. Em outras palavras, o acesso aos dados privados é acessado e utilizado por meio de seu valor de chave.

Solicitações HTTP, etc. também são tratadas pelo Kettle. Obviamente, esses trabalhos estão fora da cadeia SUAVE, o que significa que esses trabalhos são executados por um único nó. Embora SUAVE seja uma cadeia, suas propriedades de blockchain são fracas. Quando Kettle executa uma solicitação CCR, não haverá execução em muitos nós. então verifique. A razão é muito simples. Definitivamente, não há garantia de que o acesso a recursos fora da cadeia seja idempotente. Portanto, essas são tarefas fora da cadeia SUAVE e os resultados dependem, na verdade, do nó. Portanto, os desenvolvedores devem prestar atenção ao endereço do Kettle durante a implantação (deste ponto de vista, o Kettle pode ser considerado um contrato inteligente especial), e as solicitações CCR do usuário subsequentes devem conter o endereço do Kettle correspondente.

Além disso, há outra questão que merece a atenção dos desenvolvedores. Na rede de teste atual Toliman, não é garantido que o kettle funcione no ambiente TEE. Portanto, ao desenvolver contratos inteligentes na rede de teste, você deve prestar atenção à proteção de dados privados e ao não vazamento de dados verdadeiramente privados.

Resumir

Ao introduzir o ambiente TEE, a cadeia SUAVE traz recursos poderosos para o desenvolvimento de aplicações, e seus possíveis cenários de aplicação são numerosos. Sua operação simples e conveniente entre cadeias também traz espaço suficiente para a imaginação ao design do Dapp.

O design Kettle da cadeia SUAVE é capaz de lidar com recursos fora da cadeia, o que traz questões de verificação e consenso. Chaleira desonesta é destrutiva para a Internet. Como garantir que Kettle não faça o mal, ou que o mal possa ser punido, ou que o custo de fazer o mal seja alto o suficiente, são todos problemas que precisam ser resolvidos. Os desenvolvedores ainda estão esperando para ver se o modelo PoA usado no consenso da cadeia SUAVE pode resistir a considerações práticas.

Link original