O que são Contratos Inteligentes?

Blockchain One
5 min readDec 2, 2021

A expressão “contrato inteligente” ou “smart contract” foi formalizada por Nick Szabo na década de 90 [1]. Em resumo, um contrato inteligente é um protocolo de transação computadorizado ou informatizado que executa os termos de um contrato [2]. Os objetivos gerais do projeto de um contrato inteligente são satisfazer condições contratuais comuns, tais como: condições de pagamento, ônus e confidencialidade; minimizar exceções maliciosas e acidentais; e minimizar a necessidade de intermediários confiáveis. Objetivos econômicos também incluem a redução de perdas por fraude, custos com arbitragens e fiscalizações, e demais custos de transação [2].

Pode-se considerar como outra definição de contratos inteligentes um ou mais programas implantados como dados no livro razão da blockchain e executados em transações da blockchain [3]. Os contratos inteligentes podem conter e transferir ativos digitais gerenciados pela blockchain e podem invocar outros contratos inteligentes. O código de contrato inteligente é determinístico e imutável depois de implantado.

Na blockchain, os contratos inteligentes tomam a forma de scripts, armazenados com um endereçamento exclusivo na própria blockchain [2][4]. Aciona-se um contrato inteligente endereçando uma transação para ele. Desse modo, o contrato inteligente é executado de maneira independente e automática de maneira prescrita em todos os nós da rede, conforme os dados incluídos na transação. Isto significa que na blockchain, em cada nó habilitado por contrato inteligente, está executando uma máquina virtual e que a rede blockchain atua como uma máquina virtual distribuída [4]. Contratos inteligentes possibilitam que computações de propósito geral ocorram na cadeia.

Contratos inteligentes podem ser utilizados para administrar a propriedade de ativos representados por criptomoedas ou por implementações de tokens digitais usando um contrato inteligente [3]. Embora os contratos inteligentes nem sempre sejam utilizados para contratos legais, algumas vezes eles podem automatizar ou monitorar a execução de partes de contratos legais. Contratos inteligentes também podem implementar jogos, apostas ou loterias. Adicionalmente, eles podem definir um protocolo de interação entre diferentes partes, como em um processo de negócios colaborativos entre empresas, podendo oferecer suporte a diversas outras situações ou casos de uso.

Exemplos de Contratos Inteligentes

Diversas plataformas de blockchain possibilitam o desenvolvimento de contratos inteligentes, nas mais variadas linguagens de programação.

A Ethereum possibilita a criação de contratos inteligentes, sendo o código exemplo a seguir um contrato inteligente escrito na linguagem de programação Solidity, apenas para leitura e escrita de um tipo de dado simples.

pragma solidity ^0.4.0; /* linguagem que está sendo utilizada (solidity) e versão que vai compilar o contrato */

//Esse contrato inteligente tem a função de armazenar na blockchain um número

contract Loteria { // definição do contrato e o nome do mesmo

uint numeroSorteado; // definição do tipo de dado que vai ser armazenado e o nome de variável

function set(uint enviado) public { // função que armazena o número enviado na variável em uma variável de estado global

numeroSorteado = enviado;

}

function get() public view returns (uint) { // função que retorna o que está armazenado na variável de estado global

return numeroSorteado;

}

}

O Hyperledger também permite o desenvolvimento de contratos inteligentes. O código exemplo a seguir ilustra um contrato inteligente escrito na linguagem de programação GO. Há mais detalhes neste código apenas para ilustrar utilização de bibliotecas e estruturas de dados.

package main

// importando bibliotecas

import (

“encoding/json”

“fmt”

“github.com/hyperledger/fabric-chaincode-go/shim”

sc “github.com/hyperledger/fabric-protos-go/peer”

“github.com/hyperledger/fabric/common/flogging”

“strings”

)

type SmartContract struct {

}

// Definição da estrutura que será armazenada por meio de transações de escrita

type DataSet struct {

login string `json:”login”`

id string `json:”id”`

hash_doc string `json:”hash_doc”`

}

// Inicialização

func (s *SmartContract) Init(APIstub shim.ChaincodeStubInterface) sc.Response {

return shim.Success(nil)

}

// Seleção da função do contrato inteligente, ou seja, como o parâmetro é repassado à interface ChaincodeStubInterface possibilitando o acesso e a modificação do razão

func (s *SmartContract) Invoke(APIstub shim.ChaincodeStubInterface) sc.Response {

// Recupera a função que está sendo chamada e os argumentos

function, args := APIstub.GetFunctionAndParameters()

switch function {

case “create”:

return s.create(APIstub, args)

case “query”:

return s.query(APIstub, args)

default:

return shim.Error(“Not Found”)

}

}

// Inserção de dados

func (s *SmartContract) create(APIstub shim.ChaincodeStubInterface, args []string) sc.Response {

// Construção da Struct

var dataSet = DataSet{login: args[1], id: args[2], hash_doc: args[3]}

// Codificação da Struct

bytes_d, _ := json.Marshal(dataSet)

// Atualização do estado da cadeia de blocos com o novo conjunto de dados

APIstub.PutState(args[0], bytes_d)

return shim.Success(bytes_d)

}

func (s *SmartContract) query(APIstub shim.ChaincodeStubInterface, args []string) sc.Response {

// Recupera o estado do razão a partir do id da transação

bytes_d, _ := APIstub.GetState(args[0])

ds := DataSet{}

// Decodifica o resultado da operação de leitura

json.Unmarshal(bytes_d, &ds)

return shim.Success(bytes_d)

}

func main() {

err := shim.Start(new(SmartContract))

if err != nil {

fmt.Printf(“Error: %s”, err)

}

}

Considerações Finais

Uma das principais características de um contrato inteligente é que ele possui uma maneira de fazer cumprir ou executar cláusulas contratuais por conta própria. Até o surgimento da blockchain, isso era tecnologicamente inviável [5]. Nesse cenário, a Ethereum foi uma tecnologia blockchain pioneira na inclusão de contratos inteligentes [5][6].

Além disso, os contratos da vida real geralmente possuem cláusulas ou condições que não são quantificáveis [7]. Nesse contexto, ainda há muito trabalho a ser realizado no sentido de modelar as condições dos contratos em contratos inteligentes, de forma que sejam apresentáveis e quantificáveis para uma máquina executá-los. Assim, a blockchain acabou sendo um plataforma ideal para oferecer suporte a contratos inteligentes [5], possibilitando a combinação de contratos executados automaticamente em um ambiente confiável sem controle centralizado, prometendo mudar a maneira como os negócios atuais são feitos [7].

[1] GREVE, F.; SAMPAIO, L.; ABIJAUDE, J.; COUTINHO, A. A.; BRITO, I.; QUEIROZ, S. Blockchain e a revolução do consenso sob demanda. In: Minicursos do Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos. Porto Alegre, RS: Sociedade Brasileira de Computação, 2018.

[2] Szabo, N. (1997). Formalizing and securing relationships on public networks. First Monday, 2(9).

http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html.

[3] Xu X., Weber I., Staples M. (2019) Blockchain in Software Architecture. In: Architecture for Blockchain Applications. Springer, Cham. https://doi.org/10.1007/978-3-030-03035-3_5.

[4] K. Christidis and M. Devetsikiotis, “Blockchains and Smart Contracts for the Internet of Things” in IEEE Access, vol. 4, pp. 2292–2303, 2016, doi: 10.1109/ACCESS.2016.2566339.

[5] SOUSA, Jeffson C.; PINHEIRO, Billy A.; C., Elder Bruno Evaristo; ABELÉM, Antônio J. G. Solução Autônoma de Auditoria de Acordos de Nível de Serviço para Fatiamento de Recursos em Multi-Mercados Baseada em Blockchain. In: WORKSHOP EM BLOCKCHAIN: TEORIA, TECNOLOGIAS E APLICAÇÕES (WBLOCKCHAIN), 4, 2021, Uberlândia. 2021. p. 80–93.

[6] V. Buterin, Ethereum white paper, 2013. https://github.com/ethereum/wiki/wiki/White-Paper.

[7] Reyna, A., Martín, C., Chen, J., Soler, E., and Díaz, M. (2018). On blockchain and its integration with iot. challenges and opportunities. Future Generation Computer Systems, 88:173–190.

--

--

Blockchain One

Se você acredita que a revolução blockchain pode alavancar o seu negócio, nós temos as Ferramentas, os Processos e as Estratégias que irão te ajudar