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:
Princípios de definição
Preparar o quadro de avaliação, determinar o preço de cada execução
Estabelecer um sistema de medição de GAS e uma álgebra de GAS segura para MOVE
Importar o framework GAS na cadeia
Tornar o framework GAS consciente do armazenamento
Refinar ainda mais o plano de GAS
princípio
Os princípios definidos incluem:
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.
O GAS deve ser configurado pela governança na cadeia, podendo ser configurado sem interrupções.
O GAS pode prevenir ataques DoS, podendo ser ajustado rapidamente de acordo com a situação da rede.
O preço do GAS deve refletir a visão de crescimento acelerado e de manter a acessibilidade da blockchain.
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:
Custos fixos
O custo de executar a instrução MOVE
O custo de leitura de dados do armazenamento persistente
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
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.
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.
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).
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.
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:
Identificar as incoerências do plano GAS
Levantar preocupações e participar na discussão
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:
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
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.
Aliviar o estado inchado: explorar o conceito de TTL de cada projeto, removendo itens de estado não visitados quando o TTL expira.
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.
6 Curtidas
Recompensa
6
5
Compartilhar
Comentário
0/400
rugged_again
· 6h atrás
Falar sobre isso não é tão eficaz quanto dizer quanto é que o gás pode descer?
Ver originalResponder0
MetaverseMigrant
· 6h atrás
啧 esta gás pode ser ainda mais complicada?
Ver originalResponder0
NewDAOdreamer
· 6h atrás
Cobrar de forma inversa é também a dor de toda a vida de um coder.
MOVE inovou o design de GAS: Análise do método de cálculo do consumo de recursos na cadeia
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:
princípio
Os princípios definidos incluem:
cálculo de GAS
O usuário deve especificar ao enviar uma transação:
Durante o processo de execução da transação, serão cobrados:
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
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.
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.
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).
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.
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:
) 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:
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:
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
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.
Aliviar o estado inchado: explorar o conceito de TTL de cada projeto, removendo itens de estado não visitados quando o TTL expira.