ūüáßūüá∑ Tutorial Marlowe 10/14

10. O Marlowe Playground

Este tutorial fornece uma visão geral do Marlowe Playground, uma ferramenta on-line que permite aos usuários criar, analisar, interagir e simular a operação de contratos Marlowe incorporados. Está disponível em https://alpha.marlowe.iohkdev.io.

10.1 Apresentando o Marlowe Playground

Para que o Marlowe seja utilizável na prática, os usuários precisam entender como os contratos se comportarão uma vez implantados no blockchain, mas sem fazer a implantação. Podemos fazer isso simulando seu comportamento fora da cadeia, percorrendo interativamente a avaliação de um contrato na ferramenta baseada em navegador, o Marlowe Playground, uma ferramenta da web que suporta a construção interativa, revisão e simulação de contratos inteligentes escritos em Marlowe.

O playground tem três guias de nível superior:

  • O Editor Haskell

  • O Simulador

  • Blockly, o editor visual

e olhamos para esses três por vez agora.

Usamos negrito para bot√Ķes e outros componentes a seguir.

10.2 O Editor Haskell: desenvolvendo contratos incorporados

O editor suporta o desenvolvimento de contratos da Marlowe, descritos em Haskell. Podemos usar o Haskell para tornar as defini√ß√Ķes do contrato mais leg√≠veis, usando as defini√ß√Ķes do Haskell para subcomponentes, abrevia√ß√Ķes e fun√ß√Ķes simples do modelo. A guia do editor Haskell √© mostrada na imagem a seguir.

A figura mostra que a ferramenta est√° no painel do editor Haskell (n√ļmero 1 no diagrama). A ferramenta cont√©m v√°rios exemplos de contratos e, neste caso, estamos analisando o contrato de ‚Äúcau√ß√£o‚ÄĚ (n√ļmero 2). Para descrever um contrato da Marlowe no editor, precisamos definir um contrato de valor de n√≠vel superior do tipo Contrato (n√ļmero 3); √© esse valor que √© convertido em Marlowe puro com o bot√£o Compilar (n√ļmero 4) e que podemos enviar para o simulador com o bot√£o de mesmo nome (n√ļmero 5).

10.3 Simulação de contratos Marlowe

A segunda guia no Marlowe Playground permite que os usuários simulem contratos Marlowe transação por transação. Normalmente, esses são contratos desenvolvidos no editor Haskell ou no Blockly, mas também podem ser inseridos e modificados no painel do editor aqui.

A guia de simula√ß√£o √© selecionada no lado esquerdo da tela (n√ļmero 1 na figura). No p√© deste lado da tela, e em todas as guias, est√° um link para o tutorial on-line para Marlowe (n√ļmero 2). O painel tamb√©m cont√©m v√°rios exemplos de contratos e estes s√£o selecionados acima da janela principal do editor (n√ļmero 3).

Os contratos no simulador podem ser transferidos para o editor visual do Blockly (bot√£o n√ļmero 4) e, se voc√™ tiver uma conta no GitHub, tamb√©m √© poss√≠vel salvar contratos que voc√™ desenvolve como GitHub (n√ļmero 5). Para fazer isso, fa√ßa login na sua conta usando o bot√£o Fazer login no canto superior direito da tela. Voc√™ ver√° bot√Ķes para permitir publicar ou salvar contratos como listas principais e carregar contratos no GitHub.

O bloco no p√© da janela (n√ļmero 6) fornece informa√ß√Ķes sobre o contrato atual e seu estado. A guia mostrada aqui fornecer√° informa√ß√Ķes sobre o estado de execu√ß√£o do contrato da Marlowe, incluindo os valores mantidos nas v√°rias contas do contrato, escolhas e pagamentos feitos, o n√ļmero do bloco atual e assim por diante. Outras guias d√£o acesso √† an√°lise est√°tica e seus resultados, al√©m de outros avisos e erros.

Ao simular um contrato, h√° duas etapas

  • As entradas s√£o escolhidas e fazem parte de

  • Transa√ß√Ķes que agregam um n√ļmero de entradas e pagamentos.

As entradas s√£o escolhidas (n√ļmero 7) entre as entradas relevantes no ponto espec√≠fico do contrato. Por relevante aqui, queremos dizer que essas s√£o as (√ļnicas) entradas que far√£o o contrato progredir nesta fase. Em outras palavras, a escolha da entrada √© ‚Äúinteligente‚ÄĚ. Uma entrada √© adicionada √† transa√ß√£o que est√° sendo constru√≠da, selecionando o bot√£o + (n√ļmero 7).

Depois que as entradas relevantes foram escolhidas, e elas aparecem aqui na caixa (n√ļmero 8), a transa√ß√£o pode ser adicionada √† cadeia selecionando Aplicar . Mas outros controles tamb√©m est√£o dispon√≠veis aqui:

  • O pr√≥ximo bloco avan√ßar√° o n√ļmero do bloco atual.

  • Desfazer desfaz a √ļltima a√ß√£o feita no simulador. Isso significa que podemos explorar um contrato interativamente, fazendo alguns movimentos, desfazendo alguns deles e depois seguindo em uma dire√ß√£o diferente.

  • Redefinir redefinir√° o contrato e seu estado de volta aos seus valores iniciais: o contrato completo e um estado vazio.

No canto inferior direito (n√ļmero 9), h√° uma caixa para informa√ß√Ķes contextuais de ajuda.

10.4 Contratos de construção com a Blockly

O playground fornece um mecanismo para criar e visualizar contratos em forma visual, e não em texto. Isso é dado pela terceira guia no playground.

A guia Blockly √© indicada no lado esquerdo (n√ļmero 1). Na parte principal da janela, um contrato √© exibido (n√ļmero 2). Os contratos constru√≠dos usando o editor visual podem ser transferidos para o simulador com o bot√£o Para c√≥digo (n√ļmero 3), e os elementos visuais para todos os diferentes tipos de Marlowe s√£o selecionados abaixo (n√ļmero 4). Se Contrato for selecionado, vemos

onde podemos ver vers√Ķes visuais dos cinco tipos diferentes de contrato (n√ļmero 1). Eles podem ser selecionados e movidos para a parte principal da janela e juntos para formar um contrato.

10.5 Executando uma simulação

Voltando à guia de simulação e selecionando o contrato de Custódia que vemos

Aqui, focamos no compositor de entradas, que em cada est√°gio mostra apenas os insumos que far√£o o contrato progredir. Nesse caso, exigimos que Alice deposite 450 Ada. Podemos fazer isso com o bot√£o + ao lado desta entrada. Depois de fazer isso, vemos

com a entrada como parte da transa√ß√£o a ser executada. Em seguida, podemos adicionar essa transa√ß√£o ao blockchain selecionando Apply , mas observe que tamb√©m podemos usar os outros controles para desfazer a √ļltima etapa (aqui para mover a entrada da transa√ß√£o), para redefinir para o estado inicial ou para mover para o pr√≥ximo bloco .

Assumindo que selecionamos Aplicar , vemos na parte inferior da tela que o depósito ocorreu

e isso permanece em vista se adicionarmos as escolhas de Alice e Bob à transação. Observe também que o estado atual do contrato é mostrado na parte principal da janela e, de fato, estamos aguardando neste estágio as escolhas de Alice e Bob.

Se Alice e Bob fizerem escolhas diferentes, e aplicarmos a transação, veremos

e, neste ponto da evolução do contrato, aguardamos a escolha de Carol para arbitrar o resultado.

10.6 Analisando um contrato

A análise estática de um contrato é realizada selecionando a guia Análise estática no painel no pé da página.

Clicar no bot√£o Analisar resulta no contrato atual no estado atual sendo analisado. O resultado √© dizer que o contrato passou em todos os testes ou explicar como ele falha e fornecer a sequ√™ncia de transa√ß√Ķes que levam ao erro. Como exerc√≠cio, tente isso com o contrato de Cust√≥dia, alterando o dep√≥sito inicial de Alice para algo menor que 450 Ada.

Exercício

Use o Marlowe Playground para interagir com o contrato de garantia nos v√°rios cen√°rios discutidos anteriormente, no tutorial sobre o uso do Marlowe.

Explore fazendo algumas altera√ß√Ķes no contrato e intera√ß√Ķes com esses contratos modificados.

Exercício

Use o Marlowe Playground para explorar os outros contratos apresentados: o contrato de incentivo ao depósito e o exemplo de financiamento coletivo.

2 Likes