ūüáßūüá∑ 4/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/

4. O modelo Marlowe

Marlowe foi projetado para apoiar a execu√ß√£o de contratos financeiros no blockchain e, especificamente, para trabalhar no blockchain Cardano. Os contratos s√£o constru√≠dos reunindo um pequeno n√ļmero de constru√ß√Ķes que, em combina√ß√£o, podem ser usadas para descrever muitos tipos diferentes de contratos financeiros.

Antes de descrever essas constru√ß√Ķes, precisamos examinar nossa abordagem geral para modelar contratos em Marlowe e o contexto em que os contratos da Marlowe s√£o executados, o blockchain Cardano. Ao fazer isso, tamb√©m apresentamos algumas das terminologias que usaremos, indicando defini√ß√Ķes em it√°lico .

4.1 Contratos

Os contratos em Marlowe s√£o executados dentro do blockchain, mas precisam interagir com o mundo fora do mesmo. As partes do contrato, a quem tamb√©m chamamos de participantes , podem se envolver em v√°rias a√ß√Ķes : podem ser solicitadas a depositar dinheiro ou a escolher entre v√°rias alternativas. Uma notifica√ß√£o de um valor externo (tamb√©m chamado de valor oracle ‚Äď ou or√°culo), como o pre√ßo atual de uma mercadoria em particular, √© a outra forma poss√≠vel de entrada [3].

A execução de um contrato também produzirá efeitos externos, efetuando pagamentos às partes no contrato.

Contas

O modelo da Marlowe permite a construção de um contrato para controlar dinheiro em várias contas separadas: isso permite um controle mais explícito de como o dinheiro flui no contrato. Cada conta é de propriedade de uma parte específica do contrato e essa parte recebe um reembolso de quaisquer fundos restantes na conta quando o contrato é fechado [4]. Essas contas são locais , pois só existem durante a execução do contrato e, durante esse período, são acessíveis apenas pelas partes no contrato.

Etapas e Estados

Os contratos da Marlowe descrevem uma série de etapas , geralmente descrevendo a primeira etapa, juntamente com outro (sub-) contrato que descreve o que fazer em seguida. Por exemplo, o contrato Pay a p t v cont diz “efetue um pagamento de valor v do token t para a parte p a partir da conta a e siga o contrato cont“. Chamamos cont de continuação do contrato.

Ao executar um contrato, precisamos acompanhar o contrato atual : depois de dar um passo no exemplo acima, o contrato atual √© a continua√ß√£o, cont. Tamb√©m temos que acompanhar algumas outras informa√ß√Ķes, como a quantidade armazenada em cada conta: chamamos essas informa√ß√Ķes de estado: isso tamb√©m potencialmente muda a cada etapa. Uma etapa tamb√©m pode ver uma a√ß√£o ocorrendo, como dinheiro sendo depositado ou um efeito sendo produzido, por exemplo, um pagamento.

4.2 Blockchain

Embora a Marlowe seja projetado para trabalhar com blockchains em geral [5], alguns detalhes de como ele interage com o blockchain s√£o relevantes ao descrever a sem√Ęntica e a implementa√ß√£o da Marlowe.

Um blockchain baseada em UTxO √© uma cadeia de blocos, cada um dos quais cont√©m uma cole√ß√£o de transa√ß√Ķes . Cada transa√ß√£o tem um conjunto de entradas e sa√≠das, e o blockchain √© constru√≠do ao vincular sa√≠das de transa√ß√£o n√£o gastas (UTxO) √†s entradas de uma nova transa√ß√£o. No m√°ximo, um bloco pode ser gerado em cada slot , com 20 segundos de dura√ß√£o.

Os mecanismos pelos quais esses blocos s√£o gerados e por quem n√£o s√£o relevantes aqui, mas os contratos ser√£o expressos em termos de n√ļmero de slots , contados a partir do bloco inicial (‚Äúgenesis‚ÄĚ) do blockchain.

UTxO e as carteiras

O valor do blockchain reside no UTxO, que √© protegido criptograficamente por uma chave privada mantida pelo propriet√°rio. Essas chaves podem ser usadas para resgatar as sa√≠das e, assim, us√°-las como entradas para novas transa√ß√Ķes, o que pode ser visto como gasto do valor nas entradas. Os usu√°rios normalmente armazenam suas chaves privadas e os valores anexados a elas em uma carteira criptograficamente segura.

√Č atrav√©s de suas carteiras que os usu√°rios podem interagir com contratos inteligentes ‚Äď incluindo contratos da Marlowe ‚Äď em execu√ß√£o no blockchain. Os dep√≥sitos s√£o feitos das carteiras dos usu√°rios e os pagamentos recebidos por eles. Observe, no entanto, que essas s√£o definitivamente a√ß√Ķes fora da cadeia que precisam ser controladas pelo c√≥digo em execu√ß√£o na carteira do usu√°rio: elas n√£o podem ser executadas pelo pr√≥prio contrato da Marlowe por si s√≥.

Valor

Nos exemplos anteriores, sempre que um Valor ( Value ) era necessário, usamos Ada exclusivamente. Isso faz muito sentido, já que Ada é a moeda fundamental suportada por Cardano.

No entanto, o Plutus oferece um conceito mais geral de valor , suportando tokens fungíveis, não fungíveis e mistos personalizados

O que é um valor no Plutus?

Os tipos CurrencySymbol e TokenName são simples invólucros em torno de ByteString.

Essa noção de valor abrange Ada, tokens fungíveis (pense em moedas), tokens não fungíveis (um token personalizado que não é intercambiável com outros tokens) e casos mistos mais exóticos:

  • Ada possui a Bytestring vazia como CurrencySymbol e TokenName.

  • Um token fung√≠vel √© representado por um CurrencySymbol para o qual existe exatamente um TokenSymbol que pode ter uma quantidade inteira n√£o negativa arbitr√°ria (da qual Ada √© um caso especial).

  • Uma classe de tokens n√£o fung√≠veis √© um CurrencySymbol com v√°rios TokenNames, cada um em quantidade de um. Cada um desses nomes corresponde a um token n√£o fung√≠vel exclusivo.

  • Tokens mistos s√£o aqueles com v√°rios TokenNames e quantidades maiores que um.

Cardano e Plutus fornecem uma maneira simples de introduzir uma nova moeda, implementando-a usando scripts de pol√≠tica monet√°ria . Isso efetivamente incorpora os padr√Ķes Ethereum ERC-20 / ERC-721 como valores primitivos em Cardano.

4.3 Executando um contrato Marlowe

Em cada slot, um contrato Marlowe em execução receberá uma lista de entradas em ordem. O contrato é executado avaliando-o passo a passo até que não possa mais ser alterado sem processar nenhuma entrada, uma condição que chamamos de quiescente . A primeira entrada é então processada e, em seguida, o contrato é repetido novamente até a sua quiescência, e esse processo é repetido até que todas as entradas sejam processadas. A cada passo, o contato atual e o estado serão alterados, algumas entradas podem ser processadas e os pagamentos serão feitos.

Reunir isso nos d√° uma transa√ß√£o , como mostrado no diagrama abaixo, e essas informa√ß√Ķes s√£o adicionadas ao blockchain. O que fazemos a seguir √© descrever em detalhes como s√£o os contratos da Marlowe e como s√£o avaliados passo a passo.

Construindo a transação

[3] Podemos pensar em oracles (or√°culos) como um tipo de participante no contrato; Dentro dessa perspectiva as notifica√ß√Ķes s√£o como escolhas tomadas por esse participante.

[4] Um modelo totalmente ‚Äúfung√≠vel‚ÄĚ √© suportado por um contrato com uma √ļnica conta e com aloca√ß√£o expl√≠cita de quaisquer fundos restantes na rescis√£o do contrato.

[5] Na verdade, Marlowe poderia ser modificado para funcionar fora do blockchain ou para trabalhar em um blockchain permissionado também.

2 Likes