BitNotíciasBitNotícias
  • Últimas Notícias
  • Mercado
  • Regulação
  • Web3
  • Onde Investir
    • Criptomoedas Promissoras
    • Criptomoedas com Potencial
    • Memecoins
    • Inteligência Artificial
  • Guias
    • Passo a Passo para Iniciantes
    • Melhores Corretoras de Criptomoedas
    • Melhores Carteiras de Criptomoedas
    • Melhores Cartões Cripto
    • Comprar Criptomoedas
  • Análises
    • Cartões
    • Carteiras
    • Corretoras
Você está lendo: O Evangelho de Satoshi Nakamoto – Cap. 33 vers. 11
Compartilhe
BitNotíciasBitNotícias
Pesquise:
  • Últimas Notícias
  • Mercado
  • Regulação
  • Web3
  • Onde Investir
    • Criptomoedas Promissoras
    • Criptomoedas com Potencial
    • Memecoins
    • Inteligência Artificial
  • Guias
    • Passo a Passo para Iniciantes
    • Melhores Corretoras de Criptomoedas
    • Melhores Carteiras de Criptomoedas
    • Melhores Cartões Cripto
    • Comprar Criptomoedas
  • Análises
    • Cartões
    • Carteiras
    • Corretoras
BitNotícias nas Redes:
© 2019 – 2024 BitNotícias. Todos os direitos reservado
BitNotícias > Notícias > O Evangelho de Satoshi Nakamoto – Cap. 33 vers. 11
Notícias

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

Por Leonardo Broering Jahn
Atualizado em: 17/01/2025
Compartilhe
Compartilhe

Boa noite povo!

Continuando com a décima primeira parte da tradução de “A Formal Language for Analyzing Contracts”. No último versículo vimos a décima.

CONTINUA APÓS A PUBLICIDADE

Máquinas de Conexão

Mostrando ainda mais a flexibilidade de nossa linguagem, podemos adicionar sensores e efetores, acrescentando “inteligência” a nossos contratos e aumentando a aplicação legal com restrições tecnológicas.

Primeiro, esboçamos uma especificação para o comportamento de contrato de uma máquina de venda automática:

sellCandy(candyPrice = $0.90) =
    variable moneyAmount = $0.00
    then
        # coins also fall into a temporary till tempTill
    when (nickel)
        add(moneyAmount, $0.05)
    when (dime)
        add(moneyAmount, $0.10)
    when (quarter)
        add(moneyAmount, $0.25)
    when (moneyReturn)
        dropCoins(tempTill, returnTill)
        with moneyAmount = $0.00
    when threshold(moneyAmount, candyPrice)
        when (nickel | dime | quarter)
            redirectNewCoinsTo(returnTill)
        also display(“ready to dispense — please select candy”)
        then when (candySelection)
          dropCandy(candyRacks, candySelection)
          with dropCoins(tempTill, permTill)
          with moneyAmount = $0.00
    continue

CONTINUA APÓS A PUBLICIDADE

Introduzimos aqui um novo recurso de linguagem, uma variável de estado. Nossa variável de estado moneyAmount gera um evento ao ultrapassar o limite de preço de doces de $0,90. Observe que nickel [moeda de 5 centavos], dime [moeda de 10 centavos], etc. são objetos físicos reais que os sensores (gerando eventos “nickel“, “dime” etc.) detectam e tratam separadamente – não são apenas quantias abstratas de dinheiro.

Variáveis de estado podem ser problemáticas e devem ser evitadas, a menos que seja absolutamente necessário, como aqui. Esta é relativamente inofensiva porque o slot de moedas tende a forçar as moedas a entrar uma de cada vez, de modo que não há duas cláusulas tentando alterar a variável de estado ao mesmo tempo. Mesmo se fossem, a operação de adição é o que os matemáticos chamam de “comutativo”, o que significa que não importa em que ordem é feita. Mas se a operação na variável de estado fosse mais complicada ou envolvesse certos outros tipos de operações, não saberíamos se seria comutativo. A ordem em que os eventos ocorreram e alteraram a variável de estado pode importar muito, e poderíamos ter grandes problemas. Portanto, evite variáveis de estado sempre que possível.

Para simplificar, deixamos de fazer troco- nossa máquina precisa ter um desses sinais que você vê às vezes, “somente troco exato”. Se o cliente coloca uma moeda que empurra o valor de, por exemplo, $0,80 a $1,05 – lamento, a máquina o come. Se o cliente colocar US $ 0,90 (ou mais) e adicionar mais moedas, no entanto, a máquina retornará automaticamente as moedas extras. A máquina também retornará tudo o que foi colocado no caixa, se o cliente mudar de idéia e decidir não comprar o doce. Exercício para o leitor: verifique por si mesmo que as descrições de comportamento acima estão corretas conforme o código é escrito.

CONTINUA APÓS A PUBLICIDADE

RedirectNewCoinsTo(returnTill) faz com que outras moedas caiam na rampa de retorno em vez de no sensor que aciona os eventos acima. O leitor deve aqui imaginar como é o mecanismo, pois parte do comportamento é “codificada” em seu mecaninismo, e não explicitamente nesta afirmação.

Pense nos contratos e direitos aninhados como uma árvore invertida – uma hierarquia de cláusulas aninhadas. Os eventos se propagam de cima das “folhas” da árvore em direção à “raiz” no topo. Eles são pegos pelo primeiro evento when que encontram para aquele evento. Nesse caso, uma vez inserida a cláusula when threshold(), a cláusula when (nickel | dime | quarter) substitui as cláusulas when (nickel) e assim por diante acima delas.

Como uma perpetuidade, nossa máquina de venda automática não tem horário ou condição agendada para a execução – portanto, temos uma instrução continue para substituir o implícito then terminate na última linha.

CONTINUA APÓS A PUBLICIDADE

Infelizmente, nem eu nem os fabricantes de máquinas de doces do mundo real temos nenhum código para resolver o caso em que os doces ficam presos na máquina.

Terminada a décima primeira. No versículo seguinte: parte 12. Ricas bençãos!

CONTINUA APÓS A PUBLICIDADE
Fairshake lidera financiamento político com foco em cripto nas eleições dos Estados Unidos
MARA aposta em rendimento com Bitcoin ao adquirir participação na Two Prime
Standard Chartered lança negociação direta de Bitcoin e Ether para investidores institucionais
Arcadia Finance sofre ataque hacker e perde mais de US$ 3 milhões em criptomoedas
Paxos e OKX firmam parceria para expandir uso global do USDG
TagsEvangelhoSatoshi Nakamoto
Compartilhe este artigo
Facebook Whatsapp Whatsapp Telegram Copiar Link
PorLeonardo Broering Jahn
@leonardobjahn Natural de Florianópolis, SC 27 anos Evangelista Bitcoin Graduando Administração na UFSC Professor particular e tradutor de Inglês
Publicidade

Últimas Notícias

SharpLink vira referência com o maior estoque de Ethereum do setor
SharpLink vira referência com o maior estoque de Ethereum do setor
2 min
BONK pode disparar 37% após saída de US$ 16 milhões em tokens exchanges
BONK pode disparar 37% após saída de US$ 16 milhões em tokens exchanges
3 min
Stellar (XLM) salta 72% com stablecoin do PayPal
Stellar (XLM) salta 72% com stablecoin do PayPal
3 min

Destaque

  • Últimas Notícias
  • Mercado
  • Regulação
  • Tecnologia
  • Web3
  • Eventos

Reviews

  • Cartões
  • Wallets
  • Exchanges

Guias

  • Investir Agora
  • Comprar Criptomoedas
  • Melhores Corretoras
  • Carteira de Criptomoedas
  • Cartões de Criptomoedas
  • Glossário

Tudo Sobre

  • Bitcoin
  • Ethereum
  • Polygon
  • Solana
  • Mineração
  • Web3

Sobre Nós

  • MediaKit
  • Quem Somos
  • Política Editorial
  • Política de Privacidade
  • Política de Cookies
  • Contato
Cookie Settings
BitNotícias nas Redes:
© 2019 – 2024 BitNotícias. Todos os direitos reservado
Welcome Back!

Sign in to your account

Username or Email Address
Password

Lost your password?