Primeiro design de GAS da linguagem MOVE: Análise do método de cálculo de custo de GAS na cadeia
A versão inicial da linguagem MOVE foi originalmente planejada para funcionar em um ambiente sem GAS, portanto, não estava preparada para o mecanismo de GAS. Recentemente, uma equipe de uma cadeia pública projetou a primeira solução de GAS para a linguagem MOVE em sua blockchain, o que é considerado uma "tentativa de aventura".
Neste plano GAS, a equipe de elaboração expôs os princípios de design, o processo de implementação, o método de cálculo do GAS, o mecanismo de ajuste subsequente e expressou a sua disponibilidade para receber sugestões da comunidade.
A medição de GAS é um conceito básico em muitas blockchains, que define de forma abstrata a quantidade de recursos computacionais e de armazenamento necessários para executar e armazenar transações na cadeia. O esquema de GAS determina o custo de todas as operações executadas na cadeia, utilizado para calcular o gasto de GAS durante a execução da transação.
processo de implementação
Para uma execução eficaz, os processos na cadeia incluem:
Definir princípios de design
Preparar a estrutura de avaliação, determinando o preço de cada operação executada.
Estabelecer um sistema de medição de GAS e uma álgebra de GAS segura para MOVE
Importar a estrutura GAS upstream na cadeia
Tornar a estrutura GAS capaz de perceber o armazenamento
Otimizar ainda mais o plano de GAS
Princípios de design
O custo de 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.). Com a melhoria da tecnologia e dos processos, o custo de GAS deve diminuir em conformidade.
O GAS deve ser definido pela governança na cadeia e pode ser configurado de forma integrada.
O GAS pode prevenir ataques DoS a recursos fixos da rede e pode ser rapidamente ajustado através da governança com base nas condições da rede.
O preço do GAS deve refletir a visão de acelerar o crescimento e manter a popularidade da blockchain.
Incentivar a fazer escolhas excelentes no design, como priorizar a segurança, a modularidade e as afirmações.
método de cálculo do GAS
Os usuários devem especificar dois valores ao submeter uma transação:
Quantidade máxima de GAS: o número máximo de unidades de GAS que o usuário está disposto a pagar para executar a transação.
Preço unitário do GAS: calculado em octal por unidade de GAS, 1 octal = 0,00000001 token nativo.
Durante o processo de execução da transação, será cobrado:
Custo fixo: despesas básicas mais custos adicionais de grandes transações
Custo de execução: utilizado para executar instruções MOVE
Custo de leitura: o custo de ler dados do armazenamento persistente
Custo de escrita: o custo de gravar dados em armazenamento persistente
Taxa de transação final = Quantidade total de GAS consumido × Preço do GAS
Por exemplo, uma transação consome 670 unidades de GAS, o preço do GAS especificado pelo usuário é de 100 Octa/unidade, então a taxa final é 670 × 100 = 67000 Octa = 0.00067 token nativo.
Se o GAS se esgotar durante a execução da transação, o remetente será cobrado pelo máximo de GAS, e todas as alterações serão revertidas.
Detalhes do plano GAS
Configuração básica
O plano GAS inclui alguns 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 ordem de kilobytes. A publicação do módulo MOVE pode atingir vários kilobytes, enquanto um determinado framework está em torno de 100KB. Os módulos de usuário geralmente variam entre 4KB e 40KB. O tamanho inicial da transação foi definido para 32KB, sendo posteriormente ajustado para 64KB com base no feedback da comunidade, a fim de simplificar o desenvolvimento de aplicações.
Transações muito grandes podem aumentar os custos de largura de banda da rede e podem afetar o desempenho. Para equilibrar a escala e a acessibilidade, o pool de memórias pode ignorar transações muito grandes.
Unidade máxima 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. Isso é diferente da quantidade máxima de GAS especificada pelo usuário. Definir um valor muito alto pode causar problemas de desempenho, como ciclos infinitos. Atualmente, mesmo com a atualização do quadro em máxima escala, foi utilizado menos de 90% da unidade máxima de GAS (definida como 1.000.000).
Avaliação de custos de execução
A equipe utilizou uma estrutura de referência e a ferramenta de análise Valgrind para avaliar o custo de execução, obtendo o custo relativo das instruções MOVE e das funções nativas. Ao considerar exemplos de codificação que melhoram a robustez e a segurança do sistema, foi determinado o número final de instruções de máquina executadas.
Custo de armazenamento
O plano de armazenamento de GAS considera a largura de banda de acesso a dados, a capacidade de IOPS e o custo de armazenamento permanente. O acesso a qualquer item de estado envolve custos relacionados ao estado da blockchain de validação. A fórmula para calcular as taxas de armazenamento de GAS é:
Armazenar taxa de GAS = taxa do projeto + ( custo por byte × número de bytes )
Operações de leitura, criação e escrita
Leitura: a operação mais comum, calibrando os custos com base no IOPS do disco e na capacidade de largura de banda.
Criar: Adicionar novos itens ao armazenamento de estado, com o custo mais alto, calibrado de acordo com o espaço em disco da rede.
Escrever: atualizar itens existentes, o custo em bytes é o mesmo que a criação.
Os custos relacionados ao armazenamento são avaliados com base em cada transação, mesmo que o mesmo recurso seja lido/escrito várias vezes, apenas uma taxa é cobrada.
participação da comunidade
Como projeto comunitário, os membros podem:
Apontar as inconsistências no plano GAS
Apresentar preocupações e participar na discussão
Votar em propostas de governança relacionadas
ajuste de custo de GAS
A solução GAS, como armazenamento de configuração na cadeia, pode ser alterada através de propostas de governança. Foi projetada para ser escalável, permitindo atualizações através da governança. Com o avanço da tecnologia e o feedback dos usuários, os parâmetros GAS podem ser ajustados ao longo do tempo.
Alterações complexas na fórmula de GAS podem exigir a atualização do software dos nós e a distinção através de novas bandeiras de características de GAS. Isso requer uma ampla adoção da nova versão por parte dos operadores de nós e a aprovação do uso através de propostas de governança.
Trabalho Futuro
Como o primeiro framework GAS da linguagem MOVE, este design estabelece as bases para o trabalho futuro:
Reduzir os custos de execução: através da melhoria da eficiência do compilador e da máquina virtual.
Cálculo de GAS multidimensional: permite aos usuários especificar orçamentos separados para execução e armazenamento, alcançando uma definição de preço máximo de GAS mais granular.
Alívio da expansão de estado: explorar o conceito de TTL de cada projeto, eliminando automaticamente os itens de estado não acessados quando o TTL expira, para incentivar os desenvolvedores a limpar os dados na cadeia.
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.
16 Curtidas
Recompensa
16
5
Compartilhar
Comentário
0/400
GateUser-3824aa38
· 07-06 09:00
Economizar gás é tudo o que importa.
Ver originalResponder0
CascadingDipBuyer
· 07-06 08:56
bull啊 终于有人管gás了
Ver originalResponder0
GigaBrainAnon
· 07-06 08:54
Este gás está muito forte, tão caro que minhas pernas estão fraquejando.
Ver originalResponder0
ZkSnarker
· 07-06 08:53
bem, tecnicamente este modelo de gás é apenas zkvm com passos adicionais
Mecanismo GAS inovador da linguagem MOVE: Análise completa da solução de cobrança de recursos na cadeia
Primeiro design de GAS da linguagem MOVE: Análise do método de cálculo de custo de GAS na cadeia
A versão inicial da linguagem MOVE foi originalmente planejada para funcionar em um ambiente sem GAS, portanto, não estava preparada para o mecanismo de GAS. Recentemente, uma equipe de uma cadeia pública projetou a primeira solução de GAS para a linguagem MOVE em sua blockchain, o que é considerado uma "tentativa de aventura".
Neste plano GAS, a equipe de elaboração expôs os princípios de design, o processo de implementação, o método de cálculo do GAS, o mecanismo de ajuste subsequente e expressou a sua disponibilidade para receber sugestões da comunidade.
A medição de GAS é um conceito básico em muitas blockchains, que define de forma abstrata a quantidade de recursos computacionais e de armazenamento necessários para executar e armazenar transações na cadeia. O esquema de GAS determina o custo de todas as operações executadas na cadeia, utilizado para calcular o gasto de GAS durante a execução da transação.
processo de implementação
Para uma execução eficaz, os processos na cadeia incluem:
Princípios de design
O custo de 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.). Com a melhoria da tecnologia e dos processos, o custo de GAS deve diminuir em conformidade.
O GAS deve ser definido pela governança na cadeia e pode ser configurado de forma integrada.
O GAS pode prevenir ataques DoS a recursos fixos da rede e pode ser rapidamente ajustado através da governança com base nas condições da rede.
O preço do GAS deve refletir a visão de acelerar o crescimento e manter a popularidade da blockchain.
Incentivar a fazer escolhas excelentes no design, como priorizar a segurança, a modularidade e as afirmações.
método de cálculo do GAS
Os usuários devem especificar dois valores ao submeter uma transação:
Durante o processo de execução da transação, será cobrado:
Taxa de transação final = Quantidade total de GAS consumido × Preço do GAS
Por exemplo, uma transação consome 670 unidades de GAS, o preço do GAS especificado pelo usuário é de 100 Octa/unidade, então a taxa final é 670 × 100 = 67000 Octa = 0.00067 token nativo.
Se o GAS se esgotar durante a execução da transação, o remetente será cobrado pelo máximo de GAS, e todas as alterações serão revertidas.
Detalhes do plano GAS
O plano GAS inclui alguns 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 ordem de kilobytes. A publicação do módulo MOVE pode atingir vários kilobytes, enquanto um determinado framework está em torno de 100KB. Os módulos de usuário geralmente variam entre 4KB e 40KB. O tamanho inicial da transação foi definido para 32KB, sendo posteriormente ajustado para 64KB com base no feedback da comunidade, a fim de simplificar o desenvolvimento de aplicações.
Transações muito grandes podem aumentar os custos de largura de banda da rede e podem afetar o desempenho. Para equilibrar a escala e a acessibilidade, o pool de memórias pode ignorar transações muito grandes.
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. Isso é diferente da quantidade máxima de GAS especificada pelo usuário. Definir um valor muito alto pode causar problemas de desempenho, como ciclos infinitos. Atualmente, mesmo com a atualização do quadro em máxima escala, foi utilizado menos de 90% da unidade máxima de GAS (definida como 1.000.000).
A equipe utilizou uma estrutura de referência e a ferramenta de análise Valgrind para avaliar o custo de execução, obtendo o custo relativo das instruções MOVE e das funções nativas. Ao considerar exemplos de codificação que melhoram a robustez e a segurança do sistema, foi determinado o número final de instruções de máquina executadas.
O plano de armazenamento de GAS considera a largura de banda de acesso a dados, a capacidade de IOPS e o custo de armazenamento permanente. O acesso a qualquer item de estado envolve custos relacionados ao estado da blockchain de validação. A fórmula para calcular as taxas de armazenamento de GAS é:
Armazenar taxa de GAS = taxa do projeto + ( custo por byte × número de bytes )
Os custos relacionados ao armazenamento são avaliados com base em cada transação, mesmo que o mesmo recurso seja lido/escrito várias vezes, apenas uma taxa é cobrada.
participação da comunidade
Como projeto comunitário, os membros podem:
ajuste de custo de GAS
A solução GAS, como armazenamento de configuração na cadeia, pode ser alterada através de propostas de governança. Foi projetada para ser escalável, permitindo atualizações através da governança. Com o avanço da tecnologia e o feedback dos usuários, os parâmetros GAS podem ser ajustados ao longo do tempo.
Alterações complexas na fórmula de GAS podem exigir a atualização do software dos nós e a distinção através de novas bandeiras de características de GAS. Isso requer uma ampla adoção da nova versão por parte dos operadores de nós e a aprovação do uso através de propostas de governança.
Trabalho Futuro
Como o primeiro framework GAS da linguagem MOVE, este design estabelece as bases para o trabalho futuro:
Reduzir os custos de execução: através da melhoria da eficiência do compilador e da máquina virtual.
Cálculo de GAS multidimensional: permite aos usuários especificar orçamentos separados para execução e armazenamento, alcançando uma definição de preço máximo de GAS mais granular.
Alívio da expansão de estado: explorar o conceito de TTL de cada projeto, eliminando automaticamente os itens de estado não acessados quando o TTL expira, para incentivar os desenvolvedores a limpar os dados na cadeia.