Overflow é uma DSL (Linguagem Específica de Domínio) escrita em Go, projetada para ser utilizada com Cadence 1.0, facilitando testes e execução de scripts ou transações na blockchain Flow. Suas principais aplicações incluem:
- Propósitos de demonstração: Ideal para demonstrar funcionalidades do Flow.
- Testes de integração: Permite testar combinações de scripts e transações.
- Execução de tarefas em lote: Automatiza operações repetitivas.
-
Criação do Projeto
- Primeiro, crie um diretório para o projeto e instale o módulo
overflow
:
sh Copiar código mkdir test-overflow && cd test-overflow flow init go mod init example.com/test-overflow go get github.com/bjartek/overflow/v2
- Crie um arquivo de tarefas:
sh Copiar código touch tasks/main.go
- Primeiro, crie um diretório para o projeto e instale o módulo
-
Importação e Uso
- No arquivo criado, importe
overflow
:
go Copiar código package main import ( . "github.com/bjartek/overflow/v2" ) func main() { o := Overflow() // Executando uma transação o.Tx("nome_da_transacao", SignProposeAndPayAs("bob"), Arg("nome", "bob")).Print() // Executando um script o.Script("nome_do_script", Arg("nome", "bob")).Print() }
- Execute o script:
sh Copiar código go run ./tasks/main.go
- No arquivo criado, importe
- Builder Pattern: Usa um padrão de construção em Go para todas as interações, facilitando a reutilização de código.
- Multi-Sign: Suporta várias combinações de autorização, onde diferentes contas podem ser
proposer
,payer
eauthorizer
. - Execução em Memória: Permite executar o emulador em memória, implantar contratos, criar stakeholders, e rodar interações sem necessidade de persistência.
- Suporte a Eventos: A DSL inclui a capacidade de buscar eventos e armazenar progresso opcionalmente, integrando-se a indexadores ou serviços de notificação.
- Interações em Módulo NPM: Todas as interações podem ser transformadas em um módulo NPM, para que possam ser utilizadas no frontend.
- Testes com Cobertura de Código: Suporta uma instância compartilhada em testes para coletar cobertura de código e fazer rollback de operações, permitindo realizar testes com segurança.
- Consulte o exemplo standalone em flow-nft-overflow, que inclui uma demonstração interativa e testes unitários de um contrato NFT.
- Exemplos comuns de uso incluem execução de scripts, transações e tarefas de integração que combinam scripts e transações.
- Ordem Alfabética: Contas criadas no emulador local são sempre geradas em ordem alfabética. Por isso, recomenda-se nomear as contas, como
admin
,bob
,charlie
, etc. - Estrutura de Arquivos: Em testes de integração, certifique-se de que os arquivos
flow.json
, contratos e scripts estejam nas pastas corretas para garantir que o resolvedor de caminhos funcione apropriadamente.
- Verifique outros projetos que usam o Overflow aqui.
- Perguntas podem ser direcionadas ao @bjartek no Discord do Overflow: Link para o Discord.
Algumas variáveis que podem ser utilizadas:
OVERFLOW_ENV
: Define o ambiente para rodar (emulator|embedded|testnet|mainnet|testing
).OVERFLOW_CONTINUE
: Impede o Overflow de implantar contratos e contas no emulador.OVERFLOW_LOGGING
: Define o nível de logging de 0 a 4.
Essa versão oferece uma descrição detalhada, didática e organizada para você inserir no Notion, facilitando o entendimento e uso do Overflow, principalmente para desenvolvedores que desejam testar ou demonstrar funcionalidades na blockchain Flow.