Design inovador da taxa de combustível da linguagem MOVE: como é determinado o custo de cálculo na cadeia

Primeiro design da taxa de combustível da linguagem MOVE: como calcular o consumo na cadeia

A medição da taxa de combustível é um conceito básico 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 todos os custos consumidos durante a execução na cadeia, utilizado para calcular os gastos com taxas de combustível durante a execução das transações.

processo

Para uma execução eficaz, o processo na cadeia é:

  1. Definição de Princípios
  2. Preparar o quadro de avaliação, determinar o preço de cada execução
  3. Estabelecer um sistema de medição de taxas de combustível e uma álgebra de taxas de combustível seguras para MOVE
  4. Importar a estrutura de taxas de combustível upstream
  5. Fazer com que a estrutura de taxas de combustível tenha consciência de armazenamento
  6. Refinar ainda mais o plano de custos de combustível

princípios

Os princípios definidos são:

  1. O custo de operação deve estar diretamente relacionado com os recursos disponíveis na rede (, como CPU, memória, rede, armazenamento I/O e utilização de espaço, etc. Após melhorias tecnológicas e de processos, o custo do combustível deve diminuir.

  2. A taxa de combustível deve ser definida pela governança na cadeia e pode ser configurada sem interrupções.

  3. As taxas de combustível podem prevenir ataques DoS a recursos fixos da rede, podendo ser necessário ajustar rapidamente através de propostas de governança, dependendo da situação da rede.

  4. O preço das taxas de combustível reflete a visão de crescimento acelerado e de manutenção da popularidade da blockchain.

  5. Incentivar boas escolhas no design, como priorizar segurança, modularidade, eventos de afirmação, etc.

) calcular a taxa de combustível

Quando o usuário submete uma transação, deve especificar duas quantidades na transação:

Quantidade máxima de taxa de combustível: Medido 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 unitário do combustível: Calculado em octal por unidade de combustível, 1 octal=0.00000001 APT###=$10^{-8}$(. Este é o preço que o usuário está disposto a pagar pelo custo do combustível.

Durante a execução, a transação será cobrada:

  1. Custos fixos, base fixa mais as taxas adicionais de grandes transações.
  2. Custo de execução, utilizado para executar a instrução MOVE.
  3. Custo de leitura, utilizado para ler dados do armazenamento persistente.
  4. Custo de escrita, utilizado para armazenar dados em armazenamento persistente.

A taxa de transação final pode ser calculada multiplicando a quantidade total de taxas de combustível consumidas pelo preço por unidade da taxa de combustível. Por exemplo, se uma transação consumir 670 unidades de taxas de combustível e o preço por unidade da taxa de combustível especificado pelo usuário for 100 Octa, então a taxa de transação final é 670 * 100 = 67000 Octa = 0.00067 APT.

Se os custos de combustível se esgotarem durante a execução da transação, o remetente será cobrado com base na quantidade máxima de custos de combustível, e todas as alterações feitas pela transação serão revertidas.

) Estabelecer um plano de taxas 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 aos 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 usuário na transação (.

2. Escala de transação

A maioria dos tamanhos de transação pode estar na ordem de grandeza de quilobytes. 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 4KB e 40KB. Inicialmente, o valor do tamanho da transação foi definido como 32KB, mas, de acordo com as solicitações da comunidade por mais espaço para simplificar o desenvolvimento de aplicações, o tamanho da transação foi ajustado para 64KB.

Transações de grande escala podem aumentar os custos de largura de banda da rede, podendo ter um impacto negativo no desempenho. Se houver abuso, a pool de memórias pode ser incentivada a ignorar transações de maior escala, portanto, nossa abordagem é encontrar um equilíbrio entre o tamanho e a acessibilidade das transações de maior escala.

3. Unidade máxima da 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 quanto tempo uma transação pode ser executada. Definir um valor muito alto pode levar a um impacto negativo no desempenho da transação na cadeia. Por exemplo, os usuários podem esquecer de ter um incremento no loop while, resultando em um loop infinito, que é um erro comum. Mesmo após a maior atualização de estrutura, ainda é inferior a 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 os custos de execução, foi construído um quadro de referência e, ao executar esse quadro, utilizou-se o Valgrind para analisar o MOVE VM. A sua saída é um conjunto de código fonte comentado, que informa quantas instruções de máquina foram geradas por cada linha de código.

Com a ajuda da análise acima, foi feita uma estimativa grosseira do custo relativo de todos os comandos MOVE e funções nativas. No entanto, este método apresenta alguns problemas com funções inline: elas não são automaticamente incluídas na contagem do chamador. Também observamos que isso ocorre apenas ao analisar certos comandos MOVE, e pode ser resolvido somando os números.

Em seguida, ao considerar exemplos de codificação que aumentam a robustez e a segurança do sistema, a equipe chegou ao número final de instruções de máquina executadas. Esse número foi ponderado em relação ao armazenamento e à unidade máxima de taxa de combustível para determinar seus valores atuais no plano de taxas de combustível.

5. Armazenamento

Sempre que o estado do livro-razão armazenado no armazenamento permanente é acessado, os nós emitem uma leitura ou gravação para o dispositivo de armazenamento. O número total de acessos a dados por segundo depende da largura de banda e da capacidade de IOPS do dispositivo de armazenamento. Semelhante aos ciclos de CPU na parte de cálculo das taxas de combustível, o acesso a dados é uma escassez instantânea competitiva no mercado de taxas quando os usuários da blockchain estão sob carga do sistema; além disso, o custo de ocupação do disco para gravar dados na cadeia é permanente. A equipe projeta o plano de taxas de combustível de armazenamento considerando esses custos.

O acesso e armazenamento de quaisquer itens de estado gera custos relacionados à estrutura de dados que valida o estado completo da cadeia. Este custo está relacionado à cardinalidade de diferentes itens de estado ($2^{256}$). Há também um custo que é proporcional ao tamanho de cada item. Para operar um item de estado, a taxa é (, exceto nos casos excepcionais descritos na próxima seção ):

Custo 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 três tipos seguintes: leitura, criação ou escrita. O acesso é cobrado com base no custo do item e no custo em bytes, conforme mostrado na equação acima.

A operação de leitura é a mais comum, sendo limitada apenas pela escassez momentânea de recursos. Assim, o custo de leitura é calibrado com base na capacidade de largura de banda das especificações de hardware de referência e nos custos de itens de disco IOPS) e ###.

create é adicionar um novo item ao armazenamento de estado. Assim, create aumenta a estrutura de dados de autenticação, tornando tudo mais caro e, portanto, o custo mais alto. O custo de criação é calibrado com base no espaço em disco de referência que a rede possui. Portanto, preencher 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 itens existentes para bytes maiores, ainda é possível comprometer o disco. Portanto, cobramos os mesmos custos pelos bytes nos 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 os mesmos recursos sejam lidos/escritos várias vezes, apenas uma taxa precisa ser paga.

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: corrigido 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 - o primeiro 1KB incluído em cada item 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 de como o custo de execução das operações é calculado em termos do valor de mercado de APT ou moeda fiduciária, cada operação e a própria transação requerem um custo fixo em unidades em relação aos custos de armazenamento e execução. O custo fixo das unidades de taxa de combustível ajuda a manter o plano de taxas de combustível consistente e desvinculado do valor de mercado livre de APT. Além disso, a escolha correta do número de casas decimais para as unidades de taxa de combustível ajuda a manter o plano de taxas de combustível consistente. Tendo isso em mente, a equipe expressa as unidades de taxa de combustível com uma precisão de cerca de 3 casas decimais. Assim, o custo de uma transação de transferência é de aproximadamente 700 unidades de taxa de combustível.

) participação da comunidade

Mesmo com muito esforço investido no plano de tarifas de combustível, ainda está longe de ser perfeito. Como um projeto comunitário, os membros da comunidade podem escolher:

  1. Com base na experiência, identificar os pontos irracionais no plano de custos de combustível.
  2. Expresse preocupações sobre o plano de taxas de combustível e participe da discussão da comunidade
  3. Votar nas propostas de governança relacionadas às taxas de combustível

Como ajustar os custos de taxa de combustível?

O plano de taxas 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 funções nativas podem ser adicionados sem problemas.

O plano de taxas de combustível foi projetado para ser escalável, permitindo a sua atualização através de propostas de governança. À medida que o MOVE VM continua a melhorar e a incorporar 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 exigir alterações complexas que vão além da configuração na cadeia. Essas fórmulas de taxa de combustível são normalmente codificadas em Rust e distinguidas por meio de uma bandeira de característica 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 distinguir com uma bandeira de característica de taxa de combustível diferente. Em seguida, o software do nó deve ser publicado e amplamente adotado pelos operadores de nós, e, por fim, uma proposta de governança deve ser publicada e aprovada para que a nova versão da taxa de combustível possa ser utilizada.

O trabalho futuro

Este é o primeiro quadro viável de taxas de combustível para o MOVE. Exige muitas modificações na MOVE VM e no Core. Esperamos que este trabalho pavimente o caminho para trabalhos futuros:

1### reduzir os custos de execução, ter um modelo de custo de combustível real 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 Multidimensional, 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 longos tempos de execução devido a aplicativos mal codificados. Também permitirá uma definição mais granular do preço máximo das taxas de combustível para transações na cadeia.

3) aliviar o estado volumoso, atualmente não há uma maneira simples de reduzir o conjunto de estados, exceto o contrato ) ou o usuário ) excluindo explicitamente as coisas. Pagar para excluir dados pode criar oportunidades de arbitragem, onde os usuários criam armazenamento quando está barato e o excluem quando está caro. Adiar a resolução deste desafio pode reduzir a motivação dos desenvolvedores para excluir dados na cadeia. A equipe está explorando o conceito de TTL para cada projeto, que excluirá itens de estado não acessados quando o TTL expirar.

MOVE6.47%
Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • 9
  • Compartilhar
Comentário
0/400
SatoshiLegendvip
· 07-18 12:03
A segurança na cadeia é o fundamental. O cálculo da taxa de combustível é, na essência, uma reabstração da distribuição de recursos.
Ver originalResponder0
LayoffMinervip
· 07-18 04:42
move não é familiar, apenas veja a imagem e divirta-se
Ver originalResponder0
ZkSnarkervip
· 07-18 00:42
tecnicamente é apenas álgebra com etapas extras... para ser sincero, precisa de melhorar nas abstrações de custo fr
Ver originalResponder0
wrekt_but_learningvip
· 07-16 22:19
Taxa de combustível complexa, estou exausto.
Ver originalResponder0
LightningSentryvip
· 07-15 20:58
move又Ser enganado por idiotas
Ver originalResponder0
ZenZKPlayervip
· 07-15 20:56
Este gás é um buraco negro
Ver originalResponder0
InfraVibesvip
· 07-15 20:55
Está muito complicado, não? Primeiro, explique como se calcula isso.
Ver originalResponder0
GmGnSleepervip
· 07-15 20:52
move é ótimo!
Ver originalResponder0
GasFeeCriervip
· 07-15 20:40
move realmente ainda é cobrado
Ver originalResponder0
Ver projetos
  • Marcar
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)