Bem-vindo à Lição 3! Nesta lição, nos concentraremos na aplicação dos conceitos e da sintaxe que aprendemos nas lições anteriores para desenvolver contratos inteligentes Ethereum usando Vyper com o Remix IDE. Estaremos criando, implantando e interagindo com contratos inteligentes simples, proporcionando a você experiência prática com Vyper e Ethereum. O primeiro contrato será um contrato simples de armazenamento de dados, enquanto o segundo simulará um sistema básico de votação.
O primeiro contrato que implantaremos é o SimpleStorage
. Este contrato, como o nome sugere, é um contrato simples de armazenamento de dados que armazena um único número. SimpleStorage
consiste em uma variável storedData
e duas funções, set
e get
. A função set
permite que um usuário armazene um número, e a função get
permite que qualquer pessoa recupere esse número.
Seguiremos as etapas para implantar e interagir com o contrato SimpleStorage
no blockchain Ethereum. A implantação de um contrato no blockchain Ethereum é o processo de transmissão do bytecode e ABI do contrato para a rede Ethereum, de onde ele pode ser chamado e executado. Depois que um contrato é implantado, ele recebe um endereço exclusivo no qual pode ser contatado.
Aqui está o código para SimpleStorage
:
Python
# @title SimpleStorage
storageData: int128
@external
def set(x: int128):
self.storedData = x
@external
def get() -> int128:
return self.storedData
Neste contrato, definimos uma variável inteira pública storedData
, uma função pública set(x: int128)
para definir o valor de storedData
, e uma função constante pública get() -> int128
para recuperar o valor atual de storedData
.
Aqui está um guia passo a passo sobre como implantar este contrato usando Remix:
Abra seu navegador e navegue até Remix Ethereum IDE.
Ative o plug-in Vyper
Mude o ambiente para Injected Web3
na seção Deploy & Run Transactions
. Isso conectará o Remix à sua carteira MetaMask.
Na seção File Explorer
, clique no ícone +
para criar um novo arquivo. Nomeie-o como SimpleStorage.vy
.
Cole o código do contrato SimpleStorage
neste novo arquivo.
Agora vá para a guia VyperCompile
e selecione o contrato SimpleStorage
.
Mude para a guia Deploy & Run Transactions
e clique no botão Deploy
.
MetaMask abrirá um pop-up de confirmação da transação. Confirme a transação.
Depois que a transação for confirmada, você verá o contrato SimpleStorage
implantado na seção Deployed Contracts
.
Agora você pode interagir com o contrato. Por exemplo, para armazenar um número, insira o número na função set
e clique em transact
. Para recuperar o número armazenado, clique em get
.
Depois de começarmos a usar SimpleStorage
, passaremos para algo um pouco mais complexo: SimpleVoting
. O contrato SimpleVoting
simulará um sistema de votação simples. Teremos uma lista de candidatos, cada um representado como uma string. Os usuários poderão votar nesses candidatos e acompanharemos o número de votos que cada candidato recebeu. O contrato fornecerá funções para adicionar um candidato, votar em um candidato e obter o total de votos recebidos por um candidato.
O contrato SimpleVoting
é um pouco mais complexo que SimpleStorage
. No SimpleVoting
teremos uma lista de candidatos, cada um representado por uma string.
Aqui está o código para SimpleVoting
:
Python
# Vyper Voting Contract
# Declare uma variável de estado `votes` como um HashMap para armazenar os votos de cada candidato.
votos: HashMap[bytes32, uint256]
@external
def vote(candidato: bytes32):
"""
Vote em um candidato.
Argumentos:
candidato: bytes32 - O identificador do candidato no qual votar.
"""
# Aumenta a contagem de votos para o candidato especificado.
auto.votos[candidato] += 1
@external
@view
def get_votes(candidate: bytes32) -> uint256:
"""
Obtenha o número total de votos para um candidato.
Argumentos:
candidato: bytes32 - O identificador do candidato para o qual recuperar votos.
Retorna:
uint256 – O número total de votos que o candidato recebeu.
"""
retorno self.votes[candidato]
Este contrato é bastante básico, sem precauções contra votação dupla ou não autorizada. Na prática, seria necessário incluir procedimentos para evitar estas dificuldades, tais como o recenseamento eleitoral e uma verificação para garantir que cada endereço só pode votar uma vez.
Você criou uma base sólida para programação blockchain com Vyper ao concluir este curso. Agora você tem um conhecimento sólido de Ethereum, contratos inteligentes e como criá-los no Remix IDE com Vyper. Esse entendimento abre um mundo de oportunidades para o desenvolvimento de aplicações descentralizadas e a participação no ecossistema blockchain.
Para aprimorar ainda mais suas habilidades e conhecimentos, considere explorar as seguintes áreas:
Programação avançada de Solidity: Solidity é outra linguagem de programação popular para contratos inteligentes Ethereum. Learning Solidity ampliará sua capacidade de trabalhar com contratos existentes e contribuir com a comunidade Ethereum. Confira nosso curso aqui: [inserir link do curso Solidity quando estiver online]
Desenvolvimento de aplicativos descentralizados (DApp): aprofunde-se na construção de aplicativos descentralizados completos, combinando contratos inteligentes com desenvolvimento front-end usando estruturas como Web3.js, React ou Vue.js. Isso permitirá que você crie interfaces de usuário interativas que interagem com seus contratos inteligentes.
Segurança e auditoria: explore as práticas recomendadas para proteger contratos inteligentes e realizar auditorias de código completas. Compreender as vulnerabilidades potenciais e mitigar os riscos garantirá a confiabilidade e a segurança dos seus contratos inteligentes.
Interoperabilidade Blockchain: Investigue a integração de diferentes redes e protocolos blockchain. Aprenda sobre a comunicação entre cadeias e o desenvolvimento de contratos inteligentes interoperáveis que podem interagir com vários blockchains.
Lembre-se de que a tecnologia blockchain está em constante evolução e é crucial manter-se atualizado com os avanços mais recentes. Envolva-se com a comunidade blockchain, participe ativamente em discussões e explore novos conceitos e tecnologias para se manter informado e atualizado.
Bem-vindo à Lição 3! Nesta lição, nos concentraremos na aplicação dos conceitos e da sintaxe que aprendemos nas lições anteriores para desenvolver contratos inteligentes Ethereum usando Vyper com o Remix IDE. Estaremos criando, implantando e interagindo com contratos inteligentes simples, proporcionando a você experiência prática com Vyper e Ethereum. O primeiro contrato será um contrato simples de armazenamento de dados, enquanto o segundo simulará um sistema básico de votação.
O primeiro contrato que implantaremos é o SimpleStorage
. Este contrato, como o nome sugere, é um contrato simples de armazenamento de dados que armazena um único número. SimpleStorage
consiste em uma variável storedData
e duas funções, set
e get
. A função set
permite que um usuário armazene um número, e a função get
permite que qualquer pessoa recupere esse número.
Seguiremos as etapas para implantar e interagir com o contrato SimpleStorage
no blockchain Ethereum. A implantação de um contrato no blockchain Ethereum é o processo de transmissão do bytecode e ABI do contrato para a rede Ethereum, de onde ele pode ser chamado e executado. Depois que um contrato é implantado, ele recebe um endereço exclusivo no qual pode ser contatado.
Aqui está o código para SimpleStorage
:
Python
# @title SimpleStorage
storageData: int128
@external
def set(x: int128):
self.storedData = x
@external
def get() -> int128:
return self.storedData
Neste contrato, definimos uma variável inteira pública storedData
, uma função pública set(x: int128)
para definir o valor de storedData
, e uma função constante pública get() -> int128
para recuperar o valor atual de storedData
.
Aqui está um guia passo a passo sobre como implantar este contrato usando Remix:
Abra seu navegador e navegue até Remix Ethereum IDE.
Ative o plug-in Vyper
Mude o ambiente para Injected Web3
na seção Deploy & Run Transactions
. Isso conectará o Remix à sua carteira MetaMask.
Na seção File Explorer
, clique no ícone +
para criar um novo arquivo. Nomeie-o como SimpleStorage.vy
.
Cole o código do contrato SimpleStorage
neste novo arquivo.
Agora vá para a guia VyperCompile
e selecione o contrato SimpleStorage
.
Mude para a guia Deploy & Run Transactions
e clique no botão Deploy
.
MetaMask abrirá um pop-up de confirmação da transação. Confirme a transação.
Depois que a transação for confirmada, você verá o contrato SimpleStorage
implantado na seção Deployed Contracts
.
Agora você pode interagir com o contrato. Por exemplo, para armazenar um número, insira o número na função set
e clique em transact
. Para recuperar o número armazenado, clique em get
.
Depois de começarmos a usar SimpleStorage
, passaremos para algo um pouco mais complexo: SimpleVoting
. O contrato SimpleVoting
simulará um sistema de votação simples. Teremos uma lista de candidatos, cada um representado como uma string. Os usuários poderão votar nesses candidatos e acompanharemos o número de votos que cada candidato recebeu. O contrato fornecerá funções para adicionar um candidato, votar em um candidato e obter o total de votos recebidos por um candidato.
O contrato SimpleVoting
é um pouco mais complexo que SimpleStorage
. No SimpleVoting
teremos uma lista de candidatos, cada um representado por uma string.
Aqui está o código para SimpleVoting
:
Python
# Vyper Voting Contract
# Declare uma variável de estado `votes` como um HashMap para armazenar os votos de cada candidato.
votos: HashMap[bytes32, uint256]
@external
def vote(candidato: bytes32):
"""
Vote em um candidato.
Argumentos:
candidato: bytes32 - O identificador do candidato no qual votar.
"""
# Aumenta a contagem de votos para o candidato especificado.
auto.votos[candidato] += 1
@external
@view
def get_votes(candidate: bytes32) -> uint256:
"""
Obtenha o número total de votos para um candidato.
Argumentos:
candidato: bytes32 - O identificador do candidato para o qual recuperar votos.
Retorna:
uint256 – O número total de votos que o candidato recebeu.
"""
retorno self.votes[candidato]
Este contrato é bastante básico, sem precauções contra votação dupla ou não autorizada. Na prática, seria necessário incluir procedimentos para evitar estas dificuldades, tais como o recenseamento eleitoral e uma verificação para garantir que cada endereço só pode votar uma vez.
Você criou uma base sólida para programação blockchain com Vyper ao concluir este curso. Agora você tem um conhecimento sólido de Ethereum, contratos inteligentes e como criá-los no Remix IDE com Vyper. Esse entendimento abre um mundo de oportunidades para o desenvolvimento de aplicações descentralizadas e a participação no ecossistema blockchain.
Para aprimorar ainda mais suas habilidades e conhecimentos, considere explorar as seguintes áreas:
Programação avançada de Solidity: Solidity é outra linguagem de programação popular para contratos inteligentes Ethereum. Learning Solidity ampliará sua capacidade de trabalhar com contratos existentes e contribuir com a comunidade Ethereum. Confira nosso curso aqui: [inserir link do curso Solidity quando estiver online]
Desenvolvimento de aplicativos descentralizados (DApp): aprofunde-se na construção de aplicativos descentralizados completos, combinando contratos inteligentes com desenvolvimento front-end usando estruturas como Web3.js, React ou Vue.js. Isso permitirá que você crie interfaces de usuário interativas que interagem com seus contratos inteligentes.
Segurança e auditoria: explore as práticas recomendadas para proteger contratos inteligentes e realizar auditorias de código completas. Compreender as vulnerabilidades potenciais e mitigar os riscos garantirá a confiabilidade e a segurança dos seus contratos inteligentes.
Interoperabilidade Blockchain: Investigue a integração de diferentes redes e protocolos blockchain. Aprenda sobre a comunicação entre cadeias e o desenvolvimento de contratos inteligentes interoperáveis que podem interagir com vários blockchains.
Lembre-se de que a tecnologia blockchain está em constante evolução e é crucial manter-se atualizado com os avanços mais recentes. Envolva-se com a comunidade blockchain, participe ativamente em discussões e explore novos conceitos e tecnologias para se manter informado e atualizado.