Publicidade

O Evangelho de Satoshi Nakamoto – Cap. 33 vers. 13

Por Leonardo Broering Jahn

Boa noite povo!

Dando continuidade à tradução da obra “A Formal Language for Analyzing Contracts”, da qual hoje vemos a décima terceira parte. No versículo último vimos a parte 12.

CONTINUA APÓS A PUBLICIDADE

Nota Técnica – Uma Sintaxe Legível por Computador

Aqui está uma especificação formal da gramática da linguagem em “Backus-Naur Form” (BNF). A especificação é para uma versão planejada e legível por computador da linguagem e existem algumas pequenas diferenças, como o uso de colchetes {} em vez de guias para indicar o aninhamento. O BNF é usado para definir o que os linguistas chamam de “gramáticas sem contexto”. Também é usado, como aqui, para definir a sintaxe dos idiomas que os computadores também podem interpretar e executar. Também incluo mais algumas discussões sobre os significados das palavras e estruturas, especialmente sobre como o computador pode interpretá-las. Como você pode ver, essa é uma linguagem em evolução, um trabalho em andamento com muitos problemas não resolvidos. Suas sugestões para alterar ou adicionar mais tipos de termos contratuais ao nosso idioma são bem-vindas.

agent = Holder | Counterparty
    ## faz com que o contrato pareça diferente em cada lado

CONTINUA APÓS A PUBLICIDADE

period = (startTime,finishTime)
# period é a janela dentro da qual o desempenho deve ser
# executado, por exemplo uma opção europeia deve ser exercida
# entre o início e o fim do dia útil em que
# expira.

[for periodIterator “{” …periodIterator.next… “}”] [then … periodIterator.next…]*
# direitos executados em ordem temporal.
# sequência de períodos usados como entradas para a sequência de eventos withinPeriod(p).
# isso pode ser, mais geralmente, um iterador de eventos? mas os períodos têm
# uma ordem natural, enquanto outros tipos de eventos podem ocorrer em qualquer ordem.
# cada periodIterator.next gera um evento capturado pelo
# próximo tempral event (withinPeriod() se o iterador gerar
# períodos, aftertime() ou beforeTime() se gerar horas)
# *down [baixo]* do *for [para]*. O “lançamento” implícito ocorre em periodIterator.next
# para que ainda possamos vê-lo, apenas por pouco, como propagando
# o “lançamento”.
# (isso é diferente da semântica normal de eventos em que lançamentos
# propagam *up [para cima]* na árvore de análise) – devo alterá-lo para *up [cima]*
# e reescrever o código do iterador de agendamento acima? mas me confunde
# e talvez o comutador a colocá-lo *outside [fora]* do loop

event = choiceOf(agent) | withinPeriod(period) |
    performed(right)  | breachedPerformance(right) |
    threshold(amount,threshold) | afterTime(time) | beforeTime(time)

CONTINUA APÓS A PUBLICIDADE

right = throw event at [ contract | right] | passEvent([right | contract])
# gera um evento a ser capturado pelo contrato ou direito especificado.
# se contrato ou direito não for especificado, o primeiro when(event) parente
# é acionado.

right = throw event at [ contract | right] | passEvent([right | contract])
# gera um evento a ser capturado pelo contrato ou direito especificado.
# se contrato ou direito não for especificado, o primeiro when(event) parente
# é acionado.

# apenas use when withinPeriod (whenWritten, time)
# right = doBefore time {right}

CONTINUA APÓS A PUBLICIDADE

# semanticamente equivalente:
# Holder right = O Counterparty obligation

right = getTitle(property)
# transferir título da propriedade do devedor para o credor
# consulte http://nakamotoinstitute.org/secure-property-titles/

right = null

CONTINUA APÓS A PUBLICIDADE

Parte 13 terminada, no próximo a décima quarta. Abraços!

Compartilhe este artigo
@leonardobjahn Natural de Florianópolis, SC 27 anos Evangelista Bitcoin Graduando Administração na UFSC Professor particular e tradutor de Inglês
Sair da versão mobile