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

Para acompanhar essa s√©rie de conte√ļdos fique de olho no blog Educa√ß√£o Cardano

Conte√ļdo original no site https://alpha.marlowe.iohkdev.io/tutorial/

2. Introdução a Marlowe

Este tutorial fornece uma visão geral das ideias por trás da Marlowe, como uma linguagem de domínio específico incorporada ao Haskell. Ele também introduz compromissos e tempos limites, que são fundamentais para o funcionamento da Marlowe no contexto do blockchain.

2.1. Linguagens de programação e linguagens de domínio específico

Os primeiros computadores foram programados em ‚Äúc√≥digo de m√°quina‚ÄĚ. Cada tipo de sistema tinha um c√≥digo diferente, e esses c√≥digos eram de baixo n√≠vel e inexpressivos: os programas eram longas sequ√™ncias de instru√ß√Ķes muito simples, incompreens√≠veis para quem n√£o os tivesse escrito. Atualmente, podemos usar linguagens de n√≠vel superior como C, Java e Haskell para programar sistemas. Os mesmos idiomas podem ser usados ‚Äč‚Äčem m√°quinas amplamente diferentes, e a estrutura dos programas reflete o que eles fazem. No blockchain, seus equivalentes s√£o linguagens como Plutus, Solidity e Simplicity. Essas linguagens de n√≠vel superior s√£o de uso geral ‚Äď elas podem ser usadas para resolver todos os tipos de problemas diferentes ‚Äď mas as solu√ß√Ķes que elas expressam ainda s√£o programas e ainda exigem habilidades de programa√ß√£o para us√°-las efetivamente.

Por outro lado, Marlowe é uma linguagem de domínio específico (DSL), projetada para ser utilizada por alguém especialista em um campo específico, em vez de exigir habilidades de programação para usá-lo. No caso de Marlowe, o domínio é o campo dos contratos financeiros.

O uso de uma DSL tem muitas vantagens além do uso por não programadores:

-Podemos garantir que certos tipos de programas ruins nem possam ser gravados, projetando essas possibilidades fora do idioma. Ao fazer isso, podemos ter como objetivo evitar algumas das vulnerabilidades imprevistas que foram um problema para os blockchains existentes.

-Também podemos verificar com mais facilidade se os programas têm as propriedades que desejamos: por exemplo, no caso de um contrato da Marlowe, podemos garantir que o contrato nunca falhe ao efetuar o pagamento que deveria.

-Por ser uma DSL, podemos criar ferramentas para fins especiais para ajudar as pessoas a escrever programas no idioma. No caso de Marlowe, podemos imitar como um contrato se comportar√° antes de ser executado de verdade na blockchain; isso nos ajuda a garantir que o contrato que escrevemos esteja cumprindo o seu objetivo.

Marlowe tamb√©m √© uma DSL incorporada , hospedado na linguagem de programa√ß√£o Haskell. Embora seja poss√≠vel usar o Marlowe ‚Äúpuro‚ÄĚ, se desejar, a incorpora√ß√£o em uma linguagem de uso geral permite que os redatores de contratos explorem seletivamente os recursos do Haskell ao escrever contratos do Marlowe, facilitando a leitura, apoiando a reutiliza√ß√£o e assim por diante.

2.2. Marlowe em poucas palavras

Marlowe √© modelado em DSLs de contratos financeiros popularizados na √ļltima d√©cada por acad√™micos e empresas como a LexiFi, que fornece software de contratos no setor financeiro. No desenvolvimento da Marlowe, adaptamos essas linguagens para trabalhar com o blockchain. Marlowe √© implementada na camada de liquida√ß√£o (SL) da blockchain Cardano, mas poderia igualmente ser implementado na Ethereum / Solidity ou em outras plataformas blockchain; nesse aspecto, √© ‚Äúindependente de plataforma‚ÄĚ, assim como linguagens de programa√ß√£o modernas como Java e C ++. A ferramenta de emulador online Marlowe Playground permite experimentar, desenvolver, simular e analisar contratos da Marlowe no seu navegador da web, sem precisar instalar nenhum software.

Como √© um contrato da Marlowe? Ele √© constru√≠do combinando um pequeno n√ļmero de blocos de constru√ß√£o que descrevem o pagamento, a observa√ß√£o de algo no ‚Äúmundo real‚ÄĚ, aguardando at√© que uma determinada condi√ß√£o se torne verdadeira e assim por diante.

2.3. Tempos limite, depósitos e compromissos

A diferen√ßa entre as abordagens n√£o relacionadas ao blockchain √© a maneira como garantimos que o contrato seja seguido. Isso significa n√£o apenas que as instru√ß√Ķes do contrato n√£o sejam desobedecidas ‚Äď ‚Äú nada de ruim acontece ‚ÄĚ ‚Äď mas tamb√©m que os participantes participem e n√£o saiam mais cedo, deixando o dinheiro trancado no contrato para sempre: ‚Äú coisas boas realmente acontecem ‚ÄĚ. Fazemos isso usando os tempos limite .

Um contrato pode solicitar que um participante fa√ßa um dep√≥sito de alguns fundos, mas obviamente o contrato n√£o pode realmente for√ßar um participante a fazer um dep√≥sito. Em vez disso, o contrato pode esperar um per√≠odo de tempo para que o participante se comprometa com o contrato: quando esse per√≠odo expirar, o contrato seguir√° algumas instru√ß√Ķes alternativas. Isso evita que um participante interrompa um contrato ao n√£o participar, garantindo que ‚Äúas coisas aconte√ßam‚ÄĚ.

Todas as constru√ß√Ķes da Marlowe que requerem participa√ß√£o do usu√°rio ‚Äď incluindo dep√≥sitos e op√ß√Ķes de usu√°rio ‚Äď s√£o protegidas por tempos limite. Por causa disso, √© f√°cil ver que o compromisso assumido por um participante de um contrato √© finito : podemos prever quando o contrato n√£o ter√° mais nada a fazer ‚Äď quando pode ser fechado ‚Äď nesse ponto, quaisquer fundos n√£o gastos deixados no contrato s√£o reembolsados aos participantes e o contrato para ou termina . Portanto, quaisquer fundos colocados no contrato por um participante n√£o podem ser bloqueados para sempre : nesse momento, o compromisso termina efetivamente.

Al√©m disso, √© f√°cil para n√≥s lermos , a partir do contrato, quando o mesmo termina, chamamos isso de vida √ļtil do contrato: todos os participantes poder√£o, portanto, descobrir essa vida √ļtil antes de participar do contrato.

Em nosso modelo, um contrato em execu√ß√£o n√£o pode for√ßar um dep√≥sito ou uma escolha a acontecer: tudo o que pode fazer √© solicitar um dep√≥sito ou uma escolha a um participante. Em outras palavras, para essas a√ß√Ķes, n√£o pode ‚Äú empurrar ‚Äú, mas pode ‚Äú puxar ‚Äú. Por outro lado, ele pode efetuar pagamentos automaticamente; portanto, alguns aspectos de um contrato da Marlowe podem ‚Äúfor√ßar‚ÄĚ para que algumas coisas aconte√ßam, por exemplo, assegurando que um pagamento seja feito a um participante construindo uma sa√≠da de transa√ß√£o apropriada.

2.4. Marlowe em ação

Estamos trabalhando em um lançamento de produção da Marlowe no blockchain Cardano no início de 2020. A partir de hoje, você poderá explorar a Marlowe por você mesmo, baixando-o e usando diretamente a implementação Haskell, ou usando a ferramenta de simulação on-line Marlowe Playground; estes são abordados nos tutoriais subsequentes. Eles também abrangerão os detalhes de Marlowe, apresentarão uma série de exemplos e examinarão mais profundamente as ferramentas para Marlowe.

Nos próximos seis meses, aprimoraremos o design da linguagem e desenvolveremos um conjunto de modelos para instrumentos financeiros populares. Como Marlowe é uma DSL, podemos descobrir como os contratos da Marlowe se comportarão sem executá-los: isso significa que podemos fornecer diagnósticos valiosos para os participantes em potencial antes que eles se comprometam com um contrato, usando análise estática . Também podemos usar ferramentas lógicas para provar formalmente as propriedades dos contratos da Marlowe, oferecendo aos usuários o mais alto nível de garantia de que seus contratos se comportam conforme o esperado.

2.5. Onde descobrir mais

Esse tutorial contempla a √ļltima vers√£o da Marlowe, enquanto todos os outros, exceto o primeiro, contempla a Marlowe 1.3, que √© bastante similar √† Marlowe 3.0 em conceito, mas diferente de v√°rias maneiras.

O repositório github da Marlowe

O artigo da Marlowe

Video da Marlowe do PlutusFest, Dezembro 2018

2 Likes

Muito bom!

Temos um grupo técnico Telegram: https://t.me/adalabs
Também temos um grupo social no Telegram: https://t.me/AdaBrasil

Tínhamos um projeto de ensinar Smart Contracts na UFES. Mas teve algumas dificuldades burocráticas. Iríamos começar por esta parte.

Bacana esse material ser traduzido. Est√°vamos estruturando o projeto no Trello.

Muito boa a iniciativa.