Contratos Inteligentes para o Povo

This page is machine-translated.
Alex Chepurnoy

19 de outubro de 2018

Muitas notícias relacionadas a blockchain atualmente estão nos dizendo que um banco X ou uma corporação Y
vão usar uma "blockchain" para "reduzir custos". Basicamente, isso significa que apenas mais uma palavra da moda é
considerada pelos grandes banqueiros como apenas mais uma ferramenta para extrair valor de todos os lugares de forma mais eficiente,
e também para economizar em cortes de postos de trabalho.

Enquanto evito dizer qualquer coisa sobre "a visão de Satoshi" (nada além de especulações poderia ser encontrado lá após
seu êxodo), uma visão ampla que testemunhei nos primeiros anos em torno de fóruns online é que uma criptomoeda
deveria fornecer ferramentas para enriquecer as pessoas comuns por trás de seus pequenos negócios, que não estão muito acima de fazer o básico, não o grande capital financeiro despersonalizado. As ferramentas de
uma criptomoeda, aos olhos da visão original da comunidade, deveriam permitir que as pessoas realizassem atividades econômicas independentemente do tamanho do negócio, localização geográfica, taxas de juros definidas por grandes jogadores, e assim por diante.
As ferramentas deveriam permitir que as pessoas fizessem contratos (não contratos em papel, mas contratos digitais, autoexecutáveis e razoavelmente inteligentes) independentemente das diferenças em jurisdições, tradições, práticas comerciais seguidas, etc.

Espero que o Ergo seja útil aqui. Milhares de pequenas cooperativas e empreendedores individuais são mais importantes para o crescimento saudável e sustentável da riqueza ao redor do mundo do que algumas corporações que escondem lucros em paraísos fiscais.

Como exemplo, vamos considerar uma federação cooperativa (como Radical Routes) disposta a fornecer ajuda financeira a um empreendedor a milhares de quilômetros de distância (digamos, em Rojava).

Precisamos assumir alguns detalhes agora. Em primeiro lugar, suponha que existem quatro cooperativas na rede. Elas bloqueiam coletivamente 10.000 Ergs (em partes iguais, então 2.500 Ergs cada) em um contrato, que diz o seguinte:

  1. As cooperativas estão associadas a chaves públicas pubkeyA, pubkeyB, pubkeyC, pubkeyD. O empreendedor está associado a uma chave pública businessKey.
  2. As cooperativas estão bloqueando dinheiro em uma moeda protegida por um contrato de financiamento, depois fazendo a devida diligência e votando se devem financiar o empreendedor ou não. Todo o fundo do contrato (10.000 Ergs) vai para o empreendedor se 3 votos de 4 forem a favor. Tecnicamente, a votação é feita via assinatura de limiar de 3 de 4. Se a votação não for bem-sucedida (3 de 4 assinaturas não forem coletadas) antes do número do bloco 1.000, qualquer cooperativa (na verdade, qualquer um) pode enviar uma transação de retirada, que retorna 2.500 Ergs (no mínimo) para cada cooperativa. Além disso, o contrato de financiamento também será chamado de contrato de votação.
  3. Os investimentos podem ser gastos em três objetivos, com alguns limites rigorosos. Ou seja, o empreendedor deve gastar pelo menos 5.000 Ergs em equipamentos, pelo menos 2.000 Ergs na construção de um edifício necessário, outros fundos o empreendedor pode gastar arbitrariamente.
  4. Para ter certeza de que o dinheiro do equipamento será gasto em equipamentos, a federação cooperativa está usando chaves públicas de vendedores de equipamentos conhecidos na área do empreendedor. Por exemplo, considere que existem vendedores de equipamentos com chaves públicas pubkeyTool1, pubkeyTool2, pubkeyTool3, pubkeyTool4 na área. Tecnicamente, a transferência é organizada como uma assinatura coletiva de um vendedor de equipamentos (portanto, assinatura em anel do anel de vendedores de equipamentos E assinatura do empreendedor)
  5. Da mesma forma, suponha que existem 3 construtores na área que a federação cooperativa está reconhecendo, associados às chaves públicas pubkeyConstr1, pubkeyConstr2, e pubkeyConstr3.
  6. Semelhante ao contrato de votação, se os contratos de equipamentos e construção não forem co-assinados antes do número do bloco 5000, as cooperativas da federação poderão retirar fundos.

Existem diferentes maneiras de definir contratos no Ergo. Um script na linguagem de baixo nível, ErgoTree, descreve uma (única) condição lógica sobre se uma moeda pode ser gasta de acordo com isso, e também uma prova de gasto fornecida por uma transação de gasto. Internamente, a condição é representada como uma árvore de sintaxe tipada, daí o nome. A estrutura nos permite fazer análise de custo antecipada, etc. A linguagem de nível superior chamada ErgoScript permite ter uma descrição mais tradicional e legível, usar variáveis e dividir a lógica em sub-rotinas.

Vamos começar com o contrato principal definido em (1-3) acima:

{
 val votingSuccess  = atLeast(3, Array(pubkeyA, pubkeyB, pubkeyC, pubkeyD))
 val properSpending = OUTPUTS(0).value >= 5000L &&
                      blake2b256(OUTPUTS(0).propositionBytes) == spendingContract1Hash &&
                      OUTPUTS(1).value >= 2000L &&
                      blake2b256(OUTPUTS(1).propositionBytes) == spendingContract2Hash

 val withdrawCondition = HEIGHT >= 1000L &&
                         OUTPUTS(0).value >= 2500L && OUTPUTS(0).propositionBytes == pubkeyA.propBytes &&
                         OUTPUTS(1).value >= 2500L && OUTPUTS(1).propositionBytes == pubkeyB.propBytes &&
                         OUTPUTS(2).value >= 2500L && OUTPUTS(2).propositionBytes == pubkeyC.propBytes &&
                         OUTPUTS(3).value >= 2500L && OUTPUTS(3).propositionBytes == pubkeyD.propBytes 

 (votingSuccess && properSpending) || withdrawCondition
}

Este script em ErgoScript deve ser compilado em uma árvore de sintaxe (que será escrita na blockchain em uma forma serializada) vinculando-o a valores concretos para variáveis (pubkeyA, pubkeyB, pubkeyC, pubkeyD, spendingContract1Hash, spendingContract2Hash). spendingContract1Hash é um hash do script de gasto de equipamentos (serializado) que será fornecido abaixo, spendingContract2Hash é um hash do script de gasto de construção.

O script de gasto de equipamentos está abaixo:

{
 val spendingSuccess = (pubkeyTool1 || pubkeyTool2 || pubkeyTool3 || pubkeyTool4) && businessKey

 val withdrawCondition = HEIGHT > 5000L &&
                         OUTPUTS(0).value >= 1250L && OUTPUTS(0).propositionBytes == pubkeyA.propBytes &&
                         OUTPUTS(1).value >= 1250L && OUTPUTS(1).propositionBytes == pubkeyB.propBytes &&
                         OUTPUTS(2).value >= 1250L && OUTPUTS(2).propositionBytes == pubkeyC.propBytes &&
                         OUTPUTS(3).value >= 1250L && OUTPUTS(3).propositionBytes == pubkeyD.propBytes 

 spendingSuccess || withdrawCondition
}

E o script de construção é:

{
 val spendingSuccess = (pubkeyConstr1 || pubkeyConstr2 || pubkeyConstr3) && businessKey

 val withdrawCondition = HEIGHT > 5000L &&
                         OUTPUTS(0).value >= 500L && OUTPUTS(0).propositionBytes == pubkeyA.propBytes &&
                         OUTPUTS(1).value >= 500L && OUTPUTS(1).propositionBytes == pubkeyB.propBytes &&
                         OUTPUTS(2).value >= 500L && OUTPUTS(2).propositionBytes == pubkeyC.propBytes &&
                         OUTPUTS(3).value >= 500L && OUTPUTS(3).propositionBytes == pubkeyD.propBytes 

 spendingSuccess || withdrawCondition
}

Agora suponha que a federação cooperativa criou uma moeda protegida pelo contrato de votação. Abaixo está como o empreendedor pode fazer seu negócio:

  1. Criar uma transação que consome a moeda e cria pelo menos três moedas, uma com o contrato de gasto de equipamentos, outra com o contrato de gasto de construção, a terceira criando uma moeda protegida pela chave pública do empreendedor.
  2. Enviar a transação para as cooperativas, esperar que a transação com a entrada assinada por limiar seja publicada na blockchain.
  3. Considerar um contrato com um vendedor de equipamentos, co-assinar uma transação de gasto.
  4. Considerar um contrato com um construtor, co-assinar uma transação de gasto.

O empreendedor pode facilmente fugir sem fazer nenhum negócio, mas com não mais que 3.000 Ergs. Isso pode ser corrigido, por exemplo, esse dinheiro poderia ser torná-lo gastável apenas após o número do bloco 5.000, e antes disso o dinheiro poderia ser retirado pelas cooperativas. Para gastos de equipamentos e construção, o empreendedor está trabalhando junto com algum, presumivelmente já respeitável, negócio. Assim, o investidor está reduzindo seus riscos.

Você pode encontrar código e exemplos de transações online. Por favor, note que temos mais exemplos de esquemas de assinatura complexos, contratos de múltiplas etapas (com caminhos de execução em andamento revelando, como MAST no Bitcoin, mas com ciclos permitidos), oráculos, crowdfunding e assim por diante. Por favor, verifique nosso repositório de exemplos.

Share post

Ergo Infrastructure DAO: Descentralizando a Espinha Dorsal do Ecossistema Ergo

Ergo Infrastructure DAO: Descentralizando a Espinha Dorsal do Ecossistema Ergo

A missão da Ergo sempre foi enraizada na descentralização, não apenas na camada de consenso, mas em toda a pilha.

Ergo Platform

13 de agosto de 2025

Mew Finance: Um Conjunto de Ferramentas DeFi Divertido para o Ecossistema Ergo

Mew Finance: Um Conjunto de Ferramentas DeFi Divertido para o Ecossistema Ergo

Mew Finance é um conjunto de aplicativos descentralizados na Blockchain Ergo.

Ergo Platform

12 de agosto de 2025

Lithos: Descentralizando a Mineração com Pools On-Chain

Lithos: Descentralizando a Mineração com Pools On-Chain

Lithos é um novo protocolo projetado para reformular como os pools de mineração funcionam, movendo-os para on-chain, dando aos min.

Ergo Platform

24 de julho de 2025

Sigma 6.0: Um Ergo Mais Inteligente e Flexível

Sigma 6.0: Um Ergo Mais Inteligente e Flexível

Sigma 6.0 é uma grande atualização proposta para a blockchain Ergo.

Ergo Platform

23 de julho de 2025

Moldando o Futuro de Rosen: Uma Chamada da Comunidade sobre Cinco Propostas Chave do Tesouro

Moldando o Futuro de Rosen: Uma Chamada da Comunidade sobre Cinco Propostas Chave do Tesouro

O co-fundador da Rosen, Armeanio, apresentou cinco novas propostas ao Tesouro de Rosen.

Ergo Platform

9 de julho de 2025

UTXO Estendido da Ergo e a Ascensão da Inteligência Econômica Artificial

UTXO Estendido da Ergo e a Ascensão da Inteligência Econômica Artificial

Uma Visão Prática para Agentes Econômicos Autônomos Agentes econômicos autônomos na blockchain da Ergo realizam trabalho útil em .

Ergo Platform

12 de maio de 2025

ErgoHACK X: Inteligência Artificial na Blockchain Ergo

ErgoHACK X: Inteligência Artificial na Blockchain Ergo

Celebrando uma Década de Inovação Descentralizada Participe do 10º aniversário do ErgoHACK e esteja na vanguarda da revolução da I.

Ergo Platform

10 de abril de 2025

Ergo Pulse com Charles Hoskinson

Ergo Pulse com Charles Hoskinson

“Quando olhamos para as coisas que Alex tem feito, a equipe tem feito e a comunidade tem feito, eles são logicamente consistentes .

Plataforma Ergo

13 de abril de 2022

Mais novo mercado de NFTs em Ergo está ganhando a atenção dos Ergonautas

Mais novo mercado de NFTs em Ergo está ganhando a atenção dos Ergonautas

Em Outubro de 2020, NFTs na blockchain Ergo foram lançados.

Plataforma Ergo

7 de abril de 2022

NIPoPoWs em Ergo: Inovações em Blockchain

NIPoPoWs em Ergo: Inovações em Blockchain

A blockchain Ergo está rapidamente se tornando conhecida dentro do espaço cripto como uma líder em desenvolvimento e inovação em b.

Plataforma Ergo

1 de abril de 2022

Prova de Trabalho, Energia e Ergo

Prova de Trabalho, Energia e Ergo

Introdução Prova de Trabalho (PoW, em Inglês) foi descrita no artigo original de Bitcoin como sendo composta de duas partes.

Plataforma Ergo

29 de março de 2022

Armazenando Ergo: SAFEW

Armazenando Ergo: SAFEW

Neste artigo, continuamos nossa série de guias para configurar e usar uma das muitas novas carteiras Ergo.

Plataforma Ergo

25 de março de 2022

Minerando Ergo no Windows

Minerando Ergo no Windows

Minerar Ergo como parte de uma pool de mineração é fácil, particularmente no Windows.

Plataforma Ergo

17 de março de 2022

What is a DAO (Decentralized Autonomous Organization)?

What is a DAO (Decentralized Autonomous Organization)?

Introduction A decentralized autonomous organization (DAO) is a new type of cooperative.

Ergo Platform

15 de março de 2022

Instruções: Cunhando um Token Não-Fungível (NFT) na Blockchain Ergo

Instruções: Cunhando um Token Não-Fungível (NFT) na Blockchain Ergo

O que é um NFT? Qualquer unidade de uma moeda corrente, como por exemplo o dólar estadunidense, é indistinguível de qualquer outr.

Plataforma Ergo

8 de março de 2022

Blockchain e a Motivação para Ergo

Blockchain e a Motivação para Ergo

Desde o nascimento de Bitcoin, tecnologia blockchain tem sofrido enormes avanços.

Plataforma Ergo

3 de março de 2022

Resultados do ErgoHack III

Resultados do ErgoHack III

Após um bem-sucedido ErgoHack III, o júri tomou sua decisão final! Há tantos projetos maravilhosos que participaram neste último.

Fundação Ergo

1 de março de 2022

A Adoção de Moedas Estáveis está no Horizonte?

A Adoção de Moedas Estáveis está no Horizonte?

Hoje, moedas estáveis lastreadas ao dólar americano (USD) somam quase U$185 bilhões de valor de mercado - um aumento de 500% des.

Plataforma Ergo

24 de fevereiro de 2022

DeFi em Ergo: Taxas usando Tokens Personalizados

DeFi em Ergo: Taxas usando Tokens Personalizados

Moedas de infraestrutura são importantes pois precisamos delas para pagas taxas de transações quando usamos sistemas financeiros.

Plataforma Ergo

22 de fevereiro de 2022

Explicativo Ergo: Aluguel de Armazenamento

Explicativo Ergo: Aluguel de Armazenamento

Resumo do Artigo: Aluguel de Armazenamento é uma taxa por armazenamento de longo prazo na blockchain Ergo.

Plataforma Ergo

18 de fevereiro de 2022

Uma Introdução a Privacidade e Segurança em Blockchain

Uma Introdução a Privacidade e Segurança em Blockchain

Depois que o primeiro artigo científico emergiu na internet em 2008, a tecnologia blockchain evoluiu tremendamente.

Plataforma Ergo

17 de fevereiro de 2022