Design do primeiro custo de combustível da linguagem MOVE: como calcular o custo de combustível na cadeia?
A medição da taxa de combustível é um conceito fundamental em muitas blockchains, definindo o cálculo abstrato da quantidade de recursos computacionais e de armazenamento necessários para executar e armazenar transações na cadeia. O plano de taxas de combustível determina o custo total consumido por todas as execuções na cadeia, utilizado para calcular o gasto em taxas de combustível durante a execução de transações.
fluxo
Para uma execução eficaz, o processo na cadeia é:
definição de princípios;
preparar uma estrutura de avaliação para determinar o preço de cada execução;
para estabelecer um sistema de medição de taxas de combustível e álgebra de taxas de combustível seguras na cadeia;
Importar a estrutura de taxas de combustível a montante;
torna a estrutura de custo de combustível consciente de armazenamento;
Refinar ainda mais o plano de custos de combustível.
princípios
Os princípios definidos são:
O custo da operação deve estar diretamente relacionado aos recursos disponíveis na rede, como CPU, memória, rede, armazenamento I/O e uso de espaço, etc. (. Quando houver melhorias na tecnologia e nos processos, o custo do combustível deve diminuir.
A taxa de combustível deve ser definida pela governança na cadeia e pode ser configurada de forma contínua.
A taxa de combustível pode prevenir ataques DoS a conjuntos de recursos fixos na rede, podendo ser necessário ajustar rapidamente através de propostas de governança, dependendo da situação da rede.
O preço das taxas de combustível reflete o desejo de crescimento acelerado e de manter a blockchain acessível a todos.
Incentivar a fazer boas escolhas no design - por exemplo, priorizar a segurança, modularidade, afirmações e outros eventos.
) calcular taxa de combustível
Quando os usuários submetem uma transação, também devem especificar duas quantidades na transação:
Quantidade máxima de taxa de combustível: medida em unidades de taxa de combustível. Este é o número máximo de unidades de taxa de combustível que o usuário está disposto a gastar para executar a transação.
Preço do combustível: calculado em octal por unidade de combustível, onde 1 octal=0.00000001 APT###=$10^{-8}$(. Este é o preço do combustível que o usuário está disposto a pagar.
Durante a execução, serão cobradas taxas pela transação:
custos fixos, base fixa mais taxas adicionais para grandes transações.
custo de execução, utilizado para executar instruções MOVE.
Custo de leitura, utilizado para ler dados do armazenamento persistente.
custo de escrita, usado para gravar dados em armazenamento persistente.
A taxa final da transação pode ser calculada usando o total de unidades de taxa de combustível consumidas ) multiplicado pelo preço unitário da taxa de combustível. Por exemplo, se uma transação consumir 670 unidades de taxa de combustível, e o preço unitário da taxa de combustível especificado pelo usuário na transação for 100 Octa por unidade, então a taxa final da transação é 670 * 100 = 67000 Octa = 0.00067 APT.
Se uma transação esgotar o custo do gás durante a execução, o remetente será cobrado com base na quantidade máxima de gás, e todas as alterações feitas por essa transação serão revertidas.
( estabelecer um plano de taxa de combustível
1. Configuração básica
O plano de taxas de combustível tem vários componentes que não estão relacionados com os detalhes de uma única operação, incluindo o tamanho da transação e a unidade máxima de taxa de combustível ), que é diferente da quantidade máxima de taxa de combustível especificada pelo utilizador na transação ###.
2. Escala de transação
Para a maioria das transações, o tamanho da transação pode estar na ordem de milhares de bytes. No entanto, a publicação do módulo MOVE pode facilmente ter alguns milhares de bytes, enquanto o framework tem cerca de 100 KB. O tamanho da maioria dos módulos de usuários geralmente varia entre 4 KB e 40 KB. Inicialmente, definimos o valor do tamanho da transação em 32 KB, mas, com base na reação da comunidade, houve um pedido para fornecer mais espaço para simplificar o desenvolvimento de aplicativos, por isso ajustamos o tamanho da transação para 64 KB.
Transações de grande escala podem aumentar os custos de largura de banda de toda a rede e podem ter um impacto negativo no desempenho. Se for mal utilizado, o pool de memória pode ser incentivado a ignorar transações de maior escala, por isso a nossa abordagem é encontrar um equilíbrio entre o tamanho das transações de maior escala e a sua acessibilidade.
3. Unidade máxima de taxa de combustível
A unidade máxima da taxa de combustível definida no plano de taxas de combustível determina quantas operações podem ser executadas em uma transação. Atenção! Isso é diferente da quantidade máxima de taxa de combustível especificada pelo usuário na transação.
A unidade máxima de taxa de combustível do plano de taxa de combustível afeta diretamente por quanto tempo uma transação pode ser executada, definir isso muito alto pode resultar em impactos negativos no desempenho da blockchain. Por exemplo, o usuário pode esquecer de haver um incremento em um loop while, resultando em um loop infinito, que é um erro comum. Descobrimos que, mesmo após a maior atualização de estrutura, ainda estamos abaixo de 90% da unidade máxima de taxa de combustível do plano de taxa de combustível ( definida como 1.000.000).
4. Execução
Para avaliar o custo de execução, construímos uma estrutura de referência e usamos o Valgrind para analisar o MOVE VM ao executar essa estrutura. Sua saída é um conjunto de código-fonte comentado, que nos diz quantas instruções de máquina foram geradas por cada linha de código.
Com a ajuda da análise acima, estimamos de forma aproximada o custo relativo de todas as instruções MOVE e funções nativas. No entanto, notamos que este método apresenta alguns problemas com funções inline: elas não são automaticamente incluídas na contagem do chamador. Também vimos que isso ocorre apenas quando analisamos certas instruções MOVE, e podemos resolver esse problema somando os números.
Em seguida, ao considerar exemplos de codificação que melhoram a robustez e a segurança do sistema, a equipe chegou ao número final de instruções de máquina a serem executadas. Este número é ponderado em relação ao armazenamento e à unidade máxima de taxa de combustível, a fim de determinar seu valor atual no plano de taxas de combustível.
5. Armazenamento
Sempre que um nó acede a itens de estado de livro-razão ou dados armazenados em armazenamento persistente, ele emite uma leitura ou escrita para o dispositivo de armazenamento. O número total de acessos a dados por segundo depende da largura de banda do dispositivo de armazenamento e da capacidade de IOPS. Semelhante aos ciclos de CPU da parte de cálculo de tarifas de combustível, o acesso a dados é a escassez instantânea pela qual os usuários da blockchain competem no mercado de taxas durante a carga do sistema; além disso, o custo de ocupação do disco para a gravação de dados na cadeia é permanente. A equipe projetou o plano de tarifas de combustível de armazenamento considerando esses custos.
O acesso e armazenamento de qualquer item de estado gera custos relacionados à estrutura de dados árvore Merkle de medusa, que verifica o estado completo da blockchain. Este custo está relacionado à cardinalidade dos diferentes itens de estado ($2^{256}$). Há também um custo que é proporcional ao tamanho de cada item. Para operar em um item de estado, a taxa é (, exceto em casos excepcionais descritos na próxima seção ):
Taxa de armazenamento de combustível = item_fee + (byte_fee * bytes)
( Ler, criar e escrever
Qualquer acesso a um item de estado pertence a um dos seguintes três tipos: leitura, criação ou escrita. O acesso é cobrado por taxa de item e taxa de byte, conforme mostrado na equação acima.
A operação de leitura é a operação mais comum, e é limitada apenas pela escassez de recursos momentâneos. Assim, a taxa de leitura é calibrada com base nos custos de IOPS) de projeto de disco### e na capacidade de largura de banda das especificações de hardware de referência.
create é adicionar um novo item ao armazenamento de estado. Assim, create aumenta a estrutura de dados de autenticação, tornando tudo mais caro, portanto, o custo é o mais alto. A taxa de criação é calibrada com base no espaço de disco de referência que a rede possui. Portanto, encher o disco com o item (item_fee) e o byte (byte_fee) requer uma quantidade significativa de taxas de combustível.
As operações de escrita atualizam os itens existentes no armazenamento de estado. Assim, as operações de escrita não geram sobrecarga adicional na estrutura de dados de autenticação. No entanto, ao modificar os itens existentes para bytes maiores, ainda é possível danificar o disco. Portanto, cobramos a mesma taxa pelos bytes em itens atualizados como fazemos na criação.
Deve-se notar que os custos relacionados ao armazenamento são avaliados com base em cada transação: mesmo que você leia/escreva o mesmo recurso várias vezes, só precisa pagar uma vez.
Com base nas considerações acima, definimos 6 parâmetros de taxa de combustível, que constituem uma parte do custo total da taxa de combustível. Veja abaixo:
per_item_read: Corrigir de acordo com os IOPs
per_byte_read: Calibrar de acordo com a largura de banda real
per_item_create: Calibrar de acordo com o total do projeto alvo
per_byte_create: Calibrar de acordo com o tamanho total alvo - cada item contém o primeiro 1KB
per_item_write: igual a per_item_read
per_byte_write: igual a per_byte_create
( custo unitário estável de combustível
Independentemente do custo de execução das operações calculado em valor de mercado, seja em APT ou em moeda fiduciária, cada operação e transação em si requer um custo unitário fixo em relação aos custos de armazenamento e execução. O custo unitário fixo da taxa de combustível ajuda a manter o plano de taxas de combustível constante e desvinculado do valor de mercado livre do APT. Além disso, a escolha correta do número exato de casas decimais para a unidade de taxa de combustível ajuda a manter o plano de taxas de combustível constante. Tendo isso em mente, a equipe representa a unidade de taxa de combustível com uma precisão de aproximadamente 3 casas decimais. Portanto, o custo de uma transação de transferência é de aproximadamente 700 unidades de taxa de combustível.
) participação da comunidade
Mesmo que tenhamos investido uma grande quantidade de energia no plano de taxas de combustível, ainda está longe de ser perfeito. Como um projeto comunitário, os membros da comunidade podem escolher:
1### De acordo com a sua experiência, identifique os pontos irregulares no plano de taxas de combustível;
2### expresse suas preocupações sobre o plano de taxas de combustível e participe da discussão da comunidade.
vote na proposta de governança relacionada às taxas de combustível.
) Como ajustar o custo da taxa de combustível?
O plano de taxa de combustível é armazenado como uma configuração na cadeia, mas pode ser alterado através de propostas de governança, e novos comandos ou funcionalidades nativas podem ser adicionados de forma integrada.
O plano de taxas de combustível foi concebido para ser escalável, permitindo que seja atualizado através de propostas de governança. À medida que o Move VM continua a ser aprimorado e incorpora o feedback dos usuários, os parâmetros das taxas de combustível podem ser ajustados ao longo do tempo.
Às vezes, a fórmula de taxa de combustível pode precisar de alterações complexas que vão além da configuração na cadeia. Essas fórmulas de taxa de combustível são geralmente codificadas em Rust e diferenciadas por meio de sinais característicos de taxa de combustível na cadeia. Para atualizar essas fórmulas, é necessário atualizar o software do nó com a nova fórmula e diferenciá-lo com um sinal característico de taxa de combustível diferente. Em seguida, o software do nó deve ser lançado e amplamente adotado pelos operadores de nós; finalmente, uma proposta de governança deve ser publicada e aprovada para usar a nova versão da taxa de combustível.
) O trabalho do futuro
Este é o primeiro quadro viável de taxas de combustível para MOVE. Ele requer muitas modificações no MOVE VM e no Core. Esperamos que este trabalho abra caminho para trabalhos futuros:
1### reduzir custos de execução, ter um modelo real de taxas de combustível que mostre onde o compilador e a máquina virtual são eficientes, a equipe pode melhorar a maior parte disso para reduzir os custos de execução.
2### Cálculo de Taxas de Combustível Multidimensionais, permite que os usuários especifiquem orçamentos separados para execução e armazenamento. Assim, os usuários não precisam pagar preços elevados de taxas de combustível por tempos de execução longos devido a aplicativos com código mal escrito. Também permitirá uma definição mais granular do preço máximo das taxas de combustível para transações na cadeia.
3) alívio do estado volumoso, atualmente não há uma maneira simples de reduzir o conjunto de estados, além do contrato ) ou o usuário ) excluir explicitamente os itens. O pagamento do usuário para excluir dados pode criar oportunidades de arbitragem, onde o usuário cria armazenamento quando está barato e o exclui quando está caro. Adiar a resolução desse desafio pode enfraquecer a motivação dos desenvolvedores para excluir dados na cadeia. A equipe está explorando o conceito de TTL para cada projeto, que irá excluir itens de estado não acessados quando o TTL expirar.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
4 gostos
Recompensa
4
4
Republicar
Partilhar
Comentar
0/400
ImpermanentLossEnjoyer
· 11h atrás
Quem consegue suportar esses caros custos de combustível?
Ver originalResponder0
rekt_but_resilient
· 12h atrás
Até os cães sabem que o gás do move é absurdamente caro
Ver originalResponder0
0xSleepDeprived
· 12h atrás
move também está a precisar de dinheiro, difícil de aguentar.
Ver originalResponder0
EthSandwichHero
· 12h atrás
Só isso de combustível? Mundo crypto novato ficou chocado.
O mecanismo de taxa de combustível da linguagem MOVE: como calcular com precisão o custo de execução na cadeia
Design do primeiro custo de combustível da linguagem MOVE: como calcular o custo de combustível na cadeia?
A medição da taxa de combustível é um conceito fundamental em muitas blockchains, definindo o cálculo abstrato da quantidade de recursos computacionais e de armazenamento necessários para executar e armazenar transações na cadeia. O plano de taxas de combustível determina o custo total consumido por todas as execuções na cadeia, utilizado para calcular o gasto em taxas de combustível durante a execução de transações.
fluxo
Para uma execução eficaz, o processo na cadeia é:
definição de princípios;
preparar uma estrutura de avaliação para determinar o preço de cada execução;
para estabelecer um sistema de medição de taxas de combustível e álgebra de taxas de combustível seguras na cadeia;
Importar a estrutura de taxas de combustível a montante;
torna a estrutura de custo de combustível consciente de armazenamento;
Refinar ainda mais o plano de custos de combustível.
princípios
Os princípios definidos são:
O custo da operação deve estar diretamente relacionado aos recursos disponíveis na rede, como CPU, memória, rede, armazenamento I/O e uso de espaço, etc. (. Quando houver melhorias na tecnologia e nos processos, o custo do combustível deve diminuir.
A taxa de combustível deve ser definida pela governança na cadeia e pode ser configurada de forma contínua.
A taxa de combustível pode prevenir ataques DoS a conjuntos de recursos fixos na rede, podendo ser necessário ajustar rapidamente através de propostas de governança, dependendo da situação da rede.
O preço das taxas de combustível reflete o desejo de crescimento acelerado e de manter a blockchain acessível a todos.
Incentivar a fazer boas escolhas no design - por exemplo, priorizar a segurança, modularidade, afirmações e outros eventos.
) calcular taxa de combustível
Quando os usuários submetem uma transação, também devem especificar duas quantidades na transação:
Quantidade máxima de taxa de combustível: medida em unidades de taxa de combustível. Este é o número máximo de unidades de taxa de combustível que o usuário está disposto a gastar para executar a transação.
Preço do combustível: calculado em octal por unidade de combustível, onde 1 octal=0.00000001 APT###=$10^{-8}$(. Este é o preço do combustível que o usuário está disposto a pagar.
Durante a execução, serão cobradas taxas pela transação:
custos fixos, base fixa mais taxas adicionais para grandes transações.
custo de execução, utilizado para executar instruções MOVE.
Custo de leitura, utilizado para ler dados do armazenamento persistente.
custo de escrita, usado para gravar dados em armazenamento persistente.
A taxa final da transação pode ser calculada usando o total de unidades de taxa de combustível consumidas ) multiplicado pelo preço unitário da taxa de combustível. Por exemplo, se uma transação consumir 670 unidades de taxa de combustível, e o preço unitário da taxa de combustível especificado pelo usuário na transação for 100 Octa por unidade, então a taxa final da transação é 670 * 100 = 67000 Octa = 0.00067 APT.
Se uma transação esgotar o custo do gás durante a execução, o remetente será cobrado com base na quantidade máxima de gás, e todas as alterações feitas por essa transação serão revertidas.
( estabelecer um plano de taxa de combustível
1. Configuração básica
O plano de taxas de combustível tem vários componentes que não estão relacionados com os detalhes de uma única operação, incluindo o tamanho da transação e a unidade máxima de taxa de combustível ), que é diferente da quantidade máxima de taxa de combustível especificada pelo utilizador na transação ###.
2. Escala de transação
Para a maioria das transações, o tamanho da transação pode estar na ordem de milhares de bytes. No entanto, a publicação do módulo MOVE pode facilmente ter alguns milhares de bytes, enquanto o framework tem cerca de 100 KB. O tamanho da maioria dos módulos de usuários geralmente varia entre 4 KB e 40 KB. Inicialmente, definimos o valor do tamanho da transação em 32 KB, mas, com base na reação da comunidade, houve um pedido para fornecer mais espaço para simplificar o desenvolvimento de aplicativos, por isso ajustamos o tamanho da transação para 64 KB.
Transações de grande escala podem aumentar os custos de largura de banda de toda a rede e podem ter um impacto negativo no desempenho. Se for mal utilizado, o pool de memória pode ser incentivado a ignorar transações de maior escala, por isso a nossa abordagem é encontrar um equilíbrio entre o tamanho das transações de maior escala e a sua acessibilidade.
3. Unidade máxima de taxa de combustível
A unidade máxima da taxa de combustível definida no plano de taxas de combustível determina quantas operações podem ser executadas em uma transação. Atenção! Isso é diferente da quantidade máxima de taxa de combustível especificada pelo usuário na transação.
A unidade máxima de taxa de combustível do plano de taxa de combustível afeta diretamente por quanto tempo uma transação pode ser executada, definir isso muito alto pode resultar em impactos negativos no desempenho da blockchain. Por exemplo, o usuário pode esquecer de haver um incremento em um loop while, resultando em um loop infinito, que é um erro comum. Descobrimos que, mesmo após a maior atualização de estrutura, ainda estamos abaixo de 90% da unidade máxima de taxa de combustível do plano de taxa de combustível ( definida como 1.000.000).
4. Execução
Para avaliar o custo de execução, construímos uma estrutura de referência e usamos o Valgrind para analisar o MOVE VM ao executar essa estrutura. Sua saída é um conjunto de código-fonte comentado, que nos diz quantas instruções de máquina foram geradas por cada linha de código.
Com a ajuda da análise acima, estimamos de forma aproximada o custo relativo de todas as instruções MOVE e funções nativas. No entanto, notamos que este método apresenta alguns problemas com funções inline: elas não são automaticamente incluídas na contagem do chamador. Também vimos que isso ocorre apenas quando analisamos certas instruções MOVE, e podemos resolver esse problema somando os números.
Em seguida, ao considerar exemplos de codificação que melhoram a robustez e a segurança do sistema, a equipe chegou ao número final de instruções de máquina a serem executadas. Este número é ponderado em relação ao armazenamento e à unidade máxima de taxa de combustível, a fim de determinar seu valor atual no plano de taxas de combustível.
5. Armazenamento
Sempre que um nó acede a itens de estado de livro-razão ou dados armazenados em armazenamento persistente, ele emite uma leitura ou escrita para o dispositivo de armazenamento. O número total de acessos a dados por segundo depende da largura de banda do dispositivo de armazenamento e da capacidade de IOPS. Semelhante aos ciclos de CPU da parte de cálculo de tarifas de combustível, o acesso a dados é a escassez instantânea pela qual os usuários da blockchain competem no mercado de taxas durante a carga do sistema; além disso, o custo de ocupação do disco para a gravação de dados na cadeia é permanente. A equipe projetou o plano de tarifas de combustível de armazenamento considerando esses custos.
O acesso e armazenamento de qualquer item de estado gera custos relacionados à estrutura de dados árvore Merkle de medusa, que verifica o estado completo da blockchain. Este custo está relacionado à cardinalidade dos diferentes itens de estado ($2^{256}$). Há também um custo que é proporcional ao tamanho de cada item. Para operar em um item de estado, a taxa é (, exceto em casos excepcionais descritos na próxima seção ):
Taxa de armazenamento de combustível = item_fee + (byte_fee * bytes)
( Ler, criar e escrever
Qualquer acesso a um item de estado pertence a um dos seguintes três tipos: leitura, criação ou escrita. O acesso é cobrado por taxa de item e taxa de byte, conforme mostrado na equação acima.
A operação de leitura é a operação mais comum, e é limitada apenas pela escassez de recursos momentâneos. Assim, a taxa de leitura é calibrada com base nos custos de IOPS) de projeto de disco### e na capacidade de largura de banda das especificações de hardware de referência.
create é adicionar um novo item ao armazenamento de estado. Assim, create aumenta a estrutura de dados de autenticação, tornando tudo mais caro, portanto, o custo é o mais alto. A taxa de criação é calibrada com base no espaço de disco de referência que a rede possui. Portanto, encher o disco com o item (item_fee) e o byte (byte_fee) requer uma quantidade significativa de taxas de combustível.
As operações de escrita atualizam os itens existentes no armazenamento de estado. Assim, as operações de escrita não geram sobrecarga adicional na estrutura de dados de autenticação. No entanto, ao modificar os itens existentes para bytes maiores, ainda é possível danificar o disco. Portanto, cobramos a mesma taxa pelos bytes em itens atualizados como fazemos na criação.
Deve-se notar que os custos relacionados ao armazenamento são avaliados com base em cada transação: mesmo que você leia/escreva o mesmo recurso várias vezes, só precisa pagar uma vez.
Com base nas considerações acima, definimos 6 parâmetros de taxa de combustível, que constituem uma parte do custo total da taxa de combustível. Veja abaixo:
per_item_read: Corrigir de acordo com os IOPs
per_byte_read: Calibrar de acordo com a largura de banda real
per_item_create: Calibrar de acordo com o total do projeto alvo
per_byte_create: Calibrar de acordo com o tamanho total alvo - cada item contém o primeiro 1KB
per_item_write: igual a per_item_read
per_byte_write: igual a per_byte_create
( custo unitário estável de combustível
Independentemente do custo de execução das operações calculado em valor de mercado, seja em APT ou em moeda fiduciária, cada operação e transação em si requer um custo unitário fixo em relação aos custos de armazenamento e execução. O custo unitário fixo da taxa de combustível ajuda a manter o plano de taxas de combustível constante e desvinculado do valor de mercado livre do APT. Além disso, a escolha correta do número exato de casas decimais para a unidade de taxa de combustível ajuda a manter o plano de taxas de combustível constante. Tendo isso em mente, a equipe representa a unidade de taxa de combustível com uma precisão de aproximadamente 3 casas decimais. Portanto, o custo de uma transação de transferência é de aproximadamente 700 unidades de taxa de combustível.
) participação da comunidade
Mesmo que tenhamos investido uma grande quantidade de energia no plano de taxas de combustível, ainda está longe de ser perfeito. Como um projeto comunitário, os membros da comunidade podem escolher:
1### De acordo com a sua experiência, identifique os pontos irregulares no plano de taxas de combustível;
2### expresse suas preocupações sobre o plano de taxas de combustível e participe da discussão da comunidade.
) Como ajustar o custo da taxa de combustível?
O plano de taxa de combustível é armazenado como uma configuração na cadeia, mas pode ser alterado através de propostas de governança, e novos comandos ou funcionalidades nativas podem ser adicionados de forma integrada.
O plano de taxas de combustível foi concebido para ser escalável, permitindo que seja atualizado através de propostas de governança. À medida que o Move VM continua a ser aprimorado e incorpora o feedback dos usuários, os parâmetros das taxas de combustível podem ser ajustados ao longo do tempo.
Às vezes, a fórmula de taxa de combustível pode precisar de alterações complexas que vão além da configuração na cadeia. Essas fórmulas de taxa de combustível são geralmente codificadas em Rust e diferenciadas por meio de sinais característicos de taxa de combustível na cadeia. Para atualizar essas fórmulas, é necessário atualizar o software do nó com a nova fórmula e diferenciá-lo com um sinal característico de taxa de combustível diferente. Em seguida, o software do nó deve ser lançado e amplamente adotado pelos operadores de nós; finalmente, uma proposta de governança deve ser publicada e aprovada para usar a nova versão da taxa de combustível.
) O trabalho do futuro
Este é o primeiro quadro viável de taxas de combustível para MOVE. Ele requer muitas modificações no MOVE VM e no Core. Esperamos que este trabalho abra caminho para trabalhos futuros:
1### reduzir custos de execução, ter um modelo real de taxas de combustível que mostre onde o compilador e a máquina virtual são eficientes, a equipe pode melhorar a maior parte disso para reduzir os custos de execução.
2### Cálculo de Taxas de Combustível Multidimensionais, permite que os usuários especifiquem orçamentos separados para execução e armazenamento. Assim, os usuários não precisam pagar preços elevados de taxas de combustível por tempos de execução longos devido a aplicativos com código mal escrito. Também permitirá uma definição mais granular do preço máximo das taxas de combustível para transações na cadeia.
3) alívio do estado volumoso, atualmente não há uma maneira simples de reduzir o conjunto de estados, além do contrato ) ou o usuário ) excluir explicitamente os itens. O pagamento do usuário para excluir dados pode criar oportunidades de arbitragem, onde o usuário cria armazenamento quando está barato e o exclui quando está caro. Adiar a resolução desse desafio pode enfraquecer a motivação dos desenvolvedores para excluir dados na cadeia. A equipe está explorando o conceito de TTL para cada projeto, que irá excluir itens de estado não acessados quando o TTL expirar.