📐Criando um projeto com ink!
Ink! é uma Linguagem Específica de Domínio Incorporada (EDSL, na sigla em inglês) que você pode usar para escrever contratos inteligentes baseados em WebAssembly na linguagem de programação Rust.
ink! é apenas Rust padrão em um formato de "contrato" bem definido com macros de atributo #[ink(…)]
. Essas macros de atributo informam ao ink! o que as diferentes partes do seu contrato inteligente Rust representam e, em última análise, permitem que o ink! faça toda a mágica necessária para criar bytecode Wasm compatível com Substrate!
Use a CLI do ink! para gerar um contrato inteligente inicial com algum código básico.
Certifique-se de estar no diretório de trabalho e, em seguida, execute o seguinte comando:
cargo contract new flipper
Este comando criará uma nova pasta de projeto chamada flipper
com o seguinte conteúdo:
flipper
└─ lib.rs <-- Contract Source Code
└─ Cargo.toml <-- Rust Dependencies and ink! Configuration
└─ .gitignore
Código Fonte do Contrato
O CLI do ink! gera automaticamente o código fonte para o contrato "Flipper", que é um dos contratos "inteligentes" mais simples que você pode construir. Você pode dar uma olhada no código fonte aqui: Flipper Example Source Code.
The Flipper contract is nothing more than a bool
which gets flipped from true
to false
through the flip()
function.
O contrato Flipper é apenas um valor bool
que é invertido de true
para false
através da função flip()
.
Testando seu Contrato
Você verá na parte inferior do código-fonte que existem casos de teste simples que verificam a funcionalidade do contrato. Podemos testar rapidamente se este código está funcionando conforme o esperado usando o ambiente de teste off-chain fornecido pelo ink!.
Dentro da pasta do seu projeto, execute o seguinte comando:
cargo test
O resultado deve ser a conclusão bem-sucedida do teste.
$ cargo test
running 2 tests
test flipper::tests::it_works ... ok
test flipper::tests::default_works ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Agora que estamos confiantes de que as coisas estão funcionando, podemos realmente compilar este contrato para Wasm no próximo passo.
Last updated
Was this helpful?