WEB3DEV

Cover image for Construindo contratos inteligentes na blockchain Sui com o Sui Move: um guia abrangente
Adriano P. Araujo
Adriano P. Araujo

Posted on

Construindo contratos inteligentes na blockchain Sui com o Sui Move: um guia abrangente

Image description

À medida que a tecnologia blockchain continua a evoluir, mais e mais empresas estão explorando seu potencial para melhorar suas operações. Um dos principais recursos da tecnologia blockchain é a capacidade de executar contratos inteligentes, contratos de auto-execução com os termos do contrato entre comprador e vendedor sendo diretamente escritos em linhas de código. Esses contratos inteligentes foram projetados para automatizar a execução de contratos e otimizar o processo de negociação. A blockchain Sui, uma blockchain relativamente nova, está ganhando atenção como uma plataforma promissora para programação de contratos inteligentes devido à sua escalabilidade, segurança e facilidade de uso. Este artigo fornece um curso intensivo sobre programação de contratos inteligentes utilizando a blockchain Sui  com Sui Move.

O que é o Sui Move?

Sui Move é uma linguagem de programação projetada especificamente para a blockchain Sui. É uma linguagem de bytecode, o que significa que o código é compilado em um formato de baixo nível que pode ser executado pela máquina virtual Sui. O Sui Move foi projetado para ser simples, seguro e eficiente, tornando-o ideal para a construção de contratos inteligentes na blockchain Sui.

Criando o ambiente de desenvolvimento

Antes de começarmos a escrever contratos inteligentes com o Sui Move, precisamos configurar nosso ambiente de desenvolvimento. Aqui estão as etapas:

  1. Instale o Rust: O Sui Move foi construído sobre o Rust, por isso precisamos instalar o Rust primeiro. Você pode instalar o Rust seguindo as instruções no site da Rust.

  2. Instale o compilador Sui Move: Depois que o Rust estiver instalado, podemos instalar o compilador Sui Move. Você pode fazer isso executando o seguinte comando no seu terminal:


cargo install move-cli



Enter fullscreen mode Exit fullscreen mode

Este comando instalará o compilador Sui Move e suas ferramentas associadas.

  1. Configurar o cliente Sui Move: Para interagir com a blockchain Sui e implantar nossos contratos inteligentes, precisamos configurar o cliente Sui Move. Você pode fazer isso seguindo as instruções no repositório Sui Move GitHub.

Após configurar nosso ambiente de desenvolvimento, podemos começar a escrever contratos inteligentes com o Sui Move.

Introdução ao Sui Move

Antes de mergulhar na programação de contratos inteligentes com o Sui Move, é importante ter um entendimento básico dos conceitos de programação, como tipos de dados, variáveis e funções. Além disso, é recomendável ter alguma experiência com linguagens de programação como Python ou JavaScript.

Para começar o Sui Move, você precisará instalar a CLI da Sui (interface da linha de comando - Command Line Interface, no original) no seu computador. A Sui CLI é uma ferramenta que permite interagir com a blockchain Sui e implantar contratos inteligentes. Após instalar a Sui CLI, você pode criar um novo projeto Sui Move executando o seguinte comando no seu terminal:




sui new my-project



Enter fullscreen mode Exit fullscreen mode

Isso criará um novo projeto Sui Move em um diretório chamado “my-project”. Você pode navegar para este diretório e começar a escrever seus contratos inteligentes.

Tipos de dados no movimento Sui

O Sui Move suporta vários tipos de dados, incluindo números inteiros, booleanos, endereços e arrays. Aqui está uma breve visão geral de cada tipo de dados:

  • Inteiros: Inteiros são usados para representar valores numéricos. O Sui Move suporta números inteiros com sinal ou sem sinal, com tamanhos variando de 8 a 256 bits.

  • Booleanos: Os booleanos são usados para representar valores verdadeiros / falsos. Eles são comumente usados em declarações e loops condicionais.

  • Endereços: os endereços são usados para representar o identificador exclusivo de uma conta na blockchain Sui.

  • Arrays: os arrays são usadas para armazenar uma coleção de valores do mesmo tipo de dados. Eles podem ser de comprimento fixo ou dinâmicos.

Variáveis no Sui Move

Variáveis são usadas para armazenar valores de dados no Sui Move. Para declarar uma variável, você pode usar a palavra-chave “var”, seguida pelo nome da variável e pelo tipo de dados. Aqui está um exemplo:


var myInt: Int = 10



Enter fullscreen mode Exit fullscreen mode

Isso declara uma variável chamada “myInt” do tipo Inteiro, com um valor inicial de 10.

Funções no Sui Move 

As funções são usadas para executar uma tarefa específica em um contrato inteligente. Eles podem ser chamados de outras partes do contrato ou de fontes externas. Para definir uma função no Sui Move, você pode usar a palavra-chave “fun”, seguida pelo nome da função e seus  parâmetros. Aqui está um exemplo:


fun addNumbers(a: Int, b: Int): Int {

return a + b

}

Enter fullscreen mode Exit fullscreen mode

Isso define uma função chamada “addNumbers” que pega dois parâmetros inteiros e retorna sua soma.

Declarações de fluxo de controle no Sui Move

As instruções de fluxo de controle são usadas para controlar a execução de um contrato inteligente. O Sui Move suporta várias instruções de fluxo de controle, incluindo instruções if-else, loops e instruções de correspondência. Aqui está um exemplo de uma declaração if-else:


pub fun checkAge(age: Int): String {

    if (age < 18) {

        return "You are not old enough to vote."

    } else if (age >= 18 && age < 21) {

        return "You can vote, but cannot purchase alcohol."

    } else {

        return "You are old enough to vote and purchase alcohol."

    }

}

Enter fullscreen mode Exit fullscreen mode

No exemplo acima, definimos uma função pública checkAge que recebe um parâmetro age(idade, em português) como uma entrada. A função verifica o valor de age usando uma instrução if-else e retorna uma mensagem correspondente com base na condição.

Se o valor de age é menor do que 18, a função retorna a mensagem "Você não tem idade suficiente para votar." Se o valor de age está entre 18 e 21 (inclusivo), a função retorna a mensagem "Você pode votar, mas não pode comprar álcool." Se o valor de age é maior ou igual a 21, a função retorna a mensagem "Você tem idade suficiente para votar e comprar álcool."

Este é apenas um exemplo simples de como as declarações de fluxo de controle podem ser usadas no Sui Move para tomar decisões e controlar a execução de um contrato inteligente.

Além disso, o Sui Move fornece o conceito de controle de acesso através de tipos de recursos. Tipos de recursos são tipos especiais de objetos que podem ser definidos por um desenvolvedor em um contrato inteligente. Eles representam recursos externos com os quais o contrato inteligente interage, como arquivos ou outros contratos. Os tipos de recursos podem ser declarados como pub, permitindo assim o acesso externo ou priv, o que limitará o acesso ao contrato inteligente.

O exemplo a seguir demonstra o uso de tipos de recursos no Sui Move:


resource file: File {

    var contents: String

    init(_ contents: String) {

        self.contents = contents

    }

    pub fun read(): String {

        return self.contents

    }

    pub fun write(_ contents: String) {

        self.contents = contents

    }

}



pub contract MyContract {

    pub resource var myFile: @file

    pub fun readMyFile(): String {

        return myFile.read()

    }

    pub fun writeMyFile(_ contents: String) {

        myFile.write(contents)

    }

}

Enter fullscreen mode Exit fullscreen mode

Neste exemplo, um tipo de recurso file é definido para representar um arquivo com conteúdo. O contrato  MyContract tem uma variável de recurso myFile do tipo @file, que pode ser acessado externamente. As funções readMyFile() e writeMyFile(_ contents: String) permitem, respectivamente, ler e escrever o conteúdo de myFile.

O Sui Move também oferece a capacidade de definir eventos personalizados usando a palavra-chave event. Os eventos podem ser emitidos por um contrato inteligente para notificar partes externas de ações específicas ou alterações de estado. Os eventos podem incluir parâmetros para fornecer informações adicionais sobre o evento.

O exemplo a seguir demonstra o uso de eventos no Sui Move:


pub contract MyContract {

    event NewMessage(message: String)

    pub fun setMessage(_ message: String) {

        emit NewMessage(message: message)

    }

}

Enter fullscreen mode Exit fullscreen mode

Conclusão

Concluindo, o Sui Move é uma linguagem de programação poderosa e flexível para o desenvolvimento de contratos inteligentes na blockchain Sui. Sua sintaxe simples e ênfase na segurança o tornam uma escolha ideal para desenvolvedores que desejam criar aplicativos de blockchain robustos e seguros.

Neste curso intensivo, abordamos o básico da programação do Sui Move, incluindo tipos de dados, variáveis, funções, fluxo de controle, tipos de recursos e eventos. Com esse conhecimento, você poderá começar a criar seus próprios contratos inteligentes na blockchain Sui e explorar seu potencial para aplicativos descentralizados.

Como sempre, é importante ter em mente as características únicas da tecnologia blockchain, como imutabilidade, transparência e necessidade mínima de confiança, ao projetar e implementar contratos inteligentes. Com o devido cuidado e atenção à segurança e às melhores práticas, o Sui Move pode permitir que você crie aplicativos blockchain poderosos e inovadores que podem mudar o mundo.


Este artigo foi escrito por  Lea Lobanov e traduzido por Adriano P. de Araujo. O original em inglês pode ser encontrado aqui.

Top comments (0)