MOVE inovou o design de GAS: Análise do método de cálculo do consumo de recursos na cadeia

robot
Geração do resumo em andamento

Primeiro design de GAS na linguagem MOVE: método de cálculo de gastos de GAS na cadeia

A última versão da linguagem MOVE foi originalmente planejada para funcionar sem GAS, portanto não estava preparada para um plano de GAS. Recentemente, o plano de GAS estabelecido para uma determinada cadeia pública é o primeiro design de GAS da linguagem MOVE, sendo chamado de "uma aventura".

Este plano de GAS esclarece os princípios, processos, métodos de cálculo, ajustes posteriores e a aceitação de sugestões da comunidade na elaboração do GAS.

A medição de GAS é um conceito fundamental em muitas blockchains, definindo a quantidade de recursos computacionais e de armazenamento necessários para executar e armazenar transações na cadeia. O plano de GAS determina o custo de todo o consumo de execução na cadeia, utilizado para calcular o gasto de GAS durante a execução de transações.

processo

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

  1. Princípios de definição
  2. Preparar o quadro de avaliação, determinar o preço de cada execução
  3. Estabelecer um sistema de medição de GAS e uma álgebra de GAS segura para MOVE
  4. Importar o framework GAS na cadeia
  5. Tornar o framework GAS consciente do armazenamento
  6. Refinar ainda mais o plano de GAS

princípio

Os princípios definidos incluem:

  1. O custo de operação deve estar diretamente relacionado com os recursos disponíveis na rede e deve diminuir à medida que a tecnologia avança.
  2. O GAS deve ser configurado pela governança na cadeia, podendo ser configurado sem interrupções.
  3. O GAS pode prevenir ataques DoS, podendo ser ajustado rapidamente de acordo com a situação da rede.
  4. O preço do GAS deve refletir a visão de crescimento acelerado e de manter a acessibilidade da blockchain.
  5. Incentivar boas escolhas no design, como priorizar segurança, modularidade, etc.

cálculo de GAS

O usuário deve especificar ao enviar uma transação:

  • Número máximo de GAS: O número máximo de unidades de GAS que o usuário está disposto a gastar para executar a transação.
  • Preço do GAS: calculado em octais por unidade de GAS, 1 octal = 0,00000001 APT

Durante o processo de execução da transação, serão cobrados:

  1. Custos fixos
  2. O custo de executar a instrução MOVE
  3. O custo de leitura de dados do armazenamento persistente
  4. Custo de escrever dados em armazenamento persistente

Taxa de transação final = Total de GAS consumido × Preço do GAS

Por exemplo, se a transação consumir 670 unidades de GAS, e o preço do GAS especificado pelo usuário for 100 Octa/unidade, então a taxa final será 670 × 100 = 67000 Octa = 0.00067 APT.

Se o GAS se esgotar durante a execução da transação, o remetente será cobrado pelo máximo de GAS, e as alterações feitas por essa transação serão revertidas.

Estabelecimento do plano GAS

  1. Configuração básica

O plano GAS inclui componentes que não estão relacionados a uma única operação, como o tamanho da transação e a unidade máxima de GAS.

  1. Escala de transação

A maioria dos tamanhos de transação está na faixa de quilobyte. O módulo MOVE pode ser publicado em até alguns quilobytes, enquanto um framework tem cerca de 100 KB. Os módulos de usuário geralmente variam entre 4 e 40 KB. O valor do tamanho da transação foi inicialmente definido em 32 KB, mas foi ajustado para 64 KB com base no feedback da comunidade.

Transações de grande escala aumentarão os custos de largura de banda da rede e poderão afetar o desempenho. O pool de memória pode ignorar transações de grande escala, portanto, é necessário encontrar um equilíbrio entre a escala máxima e a acessibilidade.

  1. Máximo de unidades de GAS

A unidade máxima de GAS definida no plano GAS determina o número máximo de operações que uma única transação pode executar. Definir um valor muito alto pode ter um impacto negativo no desempenho da blockchain. Testes mostraram que, mesmo com a maior atualização de estrutura realizada, foi utilizado menos de 90% da unidade máxima de GAS (, que está definida como 1.000.000).

  1. Executar

Através da construção de uma estrutura de referência e da utilização do Valgrind para analisar a MOVE VM, para avaliar os custos de execução. A saída é o código-fonte comentado, mostrando o número de instruções de máquina geradas por cada linha de código.

Com base nisso, estima-se de forma aproximada o custo relativo de todos os comandos MOVE e funções nativas. Note-se que existem alguns problemas com funções inline, que podem ser resolvidos através da soma de números.

Por fim, considerando exemplos de codificação que aumentam a robustez e a segurança do sistema, obtém-se o número de instruções de máquina executadas. Compare esse número com a armazenagem e a unidade máxima de GAS para determinar o valor atual no plano de GAS.

  1. Armazenamento

Ao acessar itens de estado do livro-razão ou dados, os nós fazem solicitações de leitura e escrita ao dispositivo de armazenamento. O número total de acessos a dados por segundo depende da largura de banda e da capacidade IOPS do dispositivo de armazenamento. O acesso a dados é um recurso escasso instantâneo que os usuários competem no mercado de taxas sob carga do sistema. O custo de ocupação do disco para a escrita de dados é permanente na cadeia.

Acessar e armazenar qualquer item de estado gera custos relacionados à estrutura de dados que verifica todo o estado da blockchain. Este custo está relacionado à cardinalidade dos diferentes itens de estado ($2^{256}$). Há também um custo proporcional ao tamanho de cada item.

As exceções descritas na próxima seção para a taxa de operação do item de estado ( são:

Armazenar a taxa de GAS = item_fee + )byte_fee × bytes(

) Ler, criar e escrever

O acesso aos itens de estado divide-se em três tipos: leitura, criação ou escrita. O acesso é cobrado com base na taxa de itens e na taxa de bytes.

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

A operação de criação adiciona novos itens ao armazenamento de estado, aumentando o custo da estrutura de dados de autenticação, tornando-se assim a mais cara. O custo de criação é calibrado com base no espaço em disco de referência disponível na rede.

As operações de escrita atualizam os itens existentes, não gerando custos adicionais na estrutura de dados de autenticação. No entanto, modificar uma entrada existente para um tamanho maior em bytes ainda pode ocupar espaço em disco, portanto, a cobrança pelos bytes nos itens atualizados é a mesma que a criação.

Os custos relacionados ao armazenamento são avaliados com base em cada transação: mesmo que um mesmo recurso seja lido/escrito várias vezes, é cobrada apenas uma vez a taxa.

Com base nas considerações acima, foram definidos 6 parâmetros de GAS que compõem o custo total:

  • per_item_read: calibrar com base nos IOPs
  • per_byte_read: calibrar com base na largura de banda real
  • per_item_create: Calibrar de acordo com o total de projetos alvo
  • per_byte_create: Calibrar ### por tamanho total alvo, cada projeto incluindo o primeiro 1KB (
  • per_item_write: igual a per_item_read
  • per_byte_write: igual a per_byte_create

) custo unitário de GAS estável

Cada operação e transação em si requer um custo fixo unitário em relação aos custos de armazenamento e execução, independentemente do valor de mercado em APT ou moeda fiduciária. O custo fixo de unidades de GAS ajuda a manter o plano de GAS inalterado e desvinculado do valor de mercado livre de APT. A escolha correta do número de casas decimais das unidades de GAS contribui para a estabilidade do plano de GAS. Tendo isso em mente, as unidades de GAS são representadas com uma precisão de aproximadamente 3 casas decimais. Assim, o custo de uma transação de transferência é de cerca de 700 unidades de GAS.

participação da comunidade

Os membros da comunidade podem:

  1. Identificar as incoerências do plano GAS
  2. Levantar preocupações e participar na discussão
  3. Votação sobre propostas de governança relacionadas ao GAS

ajuste de custo de GAS

O plano GAS é armazenado na cadeia como configuração e pode ser alterado através de propostas de governança, podendo adicionar novas instruções ou funcionalidades nativas sem costura.

O design do plano GAS é escalável, permitindo atualizações através de propostas de governação. Com melhorias contínuas e a incorporação de feedback dos utilizadores, os parâmetros do GAS podem ser ajustados ao longo do tempo.

Às vezes, a fórmula de GAS pode exigir alterações complexas. Essas fórmulas são geralmente codificadas em Rust e são diferenciadas através das características de GAS na cadeia. A atualização dessas fórmulas requer a atualização do software do nó, ampla adoção e aprovação do uso da nova versão de GAS através de propostas de governança.

Trabalho do futuro

Como o primeiro quadro de GAS viável do MOVE, as direções de trabalho futuras incluem:

  1. Reduzir os custos de execução: utilizar um modelo de GAS real para mostrar a eficiência do compilador e da máquina virtual, melhorando para reduzir os custos de execução

  2. Cálculo de GAS multidimensional: permite que os usuários especifiquem um orçamento separado para execução e armazenamento, evitando pagar preços elevados de GAS devido a problemas de qualidade do código.

  3. Aliviar o estado inchado: explorar o conceito de TTL de cada projeto, removendo itens de estado não visitados quando o TTL expira.

Ver original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Recompensa
  • 5
  • Compartilhar
Comentário
0/400
rugged_againvip
· 6h atrás
Falar sobre isso não é tão eficaz quanto dizer quanto é que o gás pode descer?
Ver originalResponder0
MetaverseMigrantvip
· 6h atrás
啧 esta gás pode ser ainda mais complicada?
Ver originalResponder0
NewDAOdreamervip
· 6h atrás
Cobrar de forma inversa é também a dor de toda a vida de um coder.
Ver originalResponder0
¯\_(ツ)_/¯vip
· 6h atrás
move verdadeiramente bull, complicou?
Ver originalResponder0
  • 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)