Tutorial Marlowe 3.0 (Parte 5)

5. Marlowe passo a passo

Marlowe tem cinco maneiras de construir contratos. Quatro deles – Pay, Let, If e When – constroem um contrato complexo a partir de contratos mais simples, e o quinto, Close, é um contrato simples. Em cada etapa da execução, além de retornar um novo contrato de estado e continuação, é possível que efeitos – pagamentos – e avisos também possam ser gerados.

Ao explicar esses contratos, também explicaremos os valores, observações e ações da Marlowe, que são usados ​​para fornecer informações e insumos externos a um contrato em andamento para controlar como ele evoluirá.

5.1 Pay

Um contrato de pagamento Pay a p t v cont fará um pagamento do valor v do token t da conta a para um beneficiário p, que será um dos participantes do contrato ou outra conta no contrato. Os avisos serão gerados se o valor v for negativo ou se não houver número suficiente na conta para efetuar o pagamento integral (mesmo se houver saldos positivos de outros tokens na conta). Nesse caso, é feito um pagamento parcial (de todo o dinheiro disponível). O contrato de continuação é o indicado no contrato: cont.

5.2 Close

Um contrato Close prevê que o contrato seja fechado (ou rescindido). A única ação executada é fornecer reembolsos aos proprietários das contas que contêm um saldo positivo. Isso é realizado uma conta por etapa, mas todas as contas serão reembolsadas em uma única transação.

Antes de discutir outras formas de contratos, precisamos descrever valores, observações e ações.

5.3 Valores, observações e ações

Os valores incluem algumas quantidades que mudam com o tempo, incluindo “o número do slot atual” [6], “o saldo atual de algum token em uma conta” e quaisquer escolhas que já foram feitas; nós chamamos esses valores de voláteis. Os valores também podem ser combinados usando adição, subtração e negação.

As observações são valores booleanos (podem assumir o estado de verdadeiro ou falso) derivados da comparação de valores e podem ser combinados usando os operadores booleanos padrão. Também é possível observar se alguma escolha foi feita (para uma determinada escolha identificada).

As observações terão um valor em cada etapa da execução. Por outro lado, as ações acontecem em pontos específicos durante a execução. Como observado anteriormente, as ações podem ser:

  • depositar dinheiro,
  • fazer uma escolha entre várias alternativas, ou
  • notificar um valor externo ou oráculo, como o preço atual de uma mercadoria em particular.

5.4 If

O condicional If obs cont1 cont2 continuará como cont1 ou cont2, dependendo do valor booleano da observação obs quando esta construção for executada.

5.5 When

Esse é o construtor mais complexo para contratos, com o formato When cases timeout cont. É um contrato que é acionado em ações, o que pode ou não ocorrer em um espaço específico: o que acontece quando várias ações acontecem é descrito pelos casos no contrato.

No contrato When os casos expiram, os casos da lista contêm uma coleção de casos. Cada caso tem o formato Case ac co, onde ac é uma ação e co uma continuação (outro contrato). Quando uma ação específica, por exemplo, ac, acontece, o estado é atualizado de acordo e o contrato continuará como a continuação correspondente co.

Para garantir que o contrato progrida eventualmente, quando o contrato When cases timeout cont atinge o tempo limite, o mesmo continuará com cont.

5.6 Let

Um contrato Let: let id val cont permite que um contrato nomeie um valor usando um identificador. Nesse caso, a expressão val é avaliada e armazenada com o nome id. O contrato continua com cont.

Além de nos permitir usar abreviações, esse mecanismo também significa que podemos capturar e salvar valores voláteis que podem estar mudando com o tempo, por exemplo: o preço atual do petróleo, ou o número do slot atual, em um ponto específico na execução do contrato, a ser usado posteriormente na execução do contrato.

[6] A apresentação aqui é uma simplificação da implementação concreta, na qual as transações são associadas a um intervalo de slots durante o qual é válido adicioná-las ao blockchain. A razão para isso é que, em geral, é difícil prever o slot preciso no qual uma transação será aceita para inclusão no blockchain; portanto, é mais robusto especificar um intervalo no qual a transação deve ser aceita. A visão apresentada aqui é uma simplificação, pois efetivamente consideramos apenas intervalos de comprimento um. Portanto, um contrato da Marlowe pode acessar os limites superior e inferior no intervalo atual do slot, em vez do valor específico do slot atual. A execução de um contrato pode, em algumas circunstâncias, levar a um “erro ambíguo no intervalo do slot”, mas não abordamos isso aqui.

Um comentário em “Tutorial Marlowe 3.0 (Parte 5)

Deixe um comentário

Crie um site como este com o WordPress.com
Comece agora