Урок 3

Escribir un contrato inteligente básico

Las variables, funciones y modificadores son componentes esenciales en los contratos inteligentes de Solidity. Solidity tiene dos tipos de variables: variables de estado y variables locales.

En esta sección, discutiremos el proceso de escribir un contrato inteligente básico usando Solidity. Cubriremos componentes esenciales como variables, funciones y modificadores. Luego, recorreremos un ejemplo de implementación de un contrato de token simple.

Variables, funciones y modificadores

  • VariablesEn Solidity, hay dos tipos de variables: variables de estado y variables locales. Las variables de estado se almacenan permanentemente en la cadena de bloques, mientras que las variables locales son temporales y existen solo dentro del alcance de una función.
  • FuncionesLas funciones son los bloques de construcción de los contratos inteligentes. Se utilizan para realizar tareas específicas, como crear transacciones y ejecutar lógica personalizada. Las funciones pueden tener parámetros de entrada y valores de retorno, lo que permite una mayor personalización y flexibilidad.
  • Modificadores: Los modificadores son únicos en Solidity y se utilizan para modificar el comportamiento de una función. Pueden mejorar la legibilidad y la capacidad de gestión del código, y se pueden utilizar para autenticar los valores entrantes o ejecutar condicionalmente una función llamada.

Ejemplo 1: Implementación de un contrato de token simple

Creemos un contrato de token simple usando Solidity. Este contrato permitirá a los usuarios transferir tokens entre cuentas y verificar el saldo de tokens de cualquier cuenta.

TypeScriptpragma solidez ^0.8.0;contrato SimpleToken {    // Declarar variables de estado    dirección pública propietaria;    asignación(dirección => uint256) públicas saldos;    // Inicializar el contrato del token    constructor(uint256 suministroInicial) {        propietaria = msg.sender;        saldos[propietaria] = suministroInicial;    }    // Función para transferir tokens    función transferir(dirección a, uint256 cantidad) pública {        require(saldos[msg.sender] >= cantidad, "Saldo insuficiente");        saldos[msg.sender] -= cantidad;        saldos[a] += cantidad;    }    // Función para verificar el saldo del token de una cuenta    función balanceOf(dirección cuenta) pública vista devuelve (uint256) {        return saldos[cuenta];    }}

En este contrato, tenemos:

  • Variables de estadopropietarioysaldospara almacenar la dirección del propietario del contrato y los saldos de tokens de todas las direcciones, respectivamente.
  • Una constructorfunción que establece el suministro inicial de tokens y los asigna al propietario del contrato.
  • Un transferenciafunción que permite a los usuarios transferir tokens a otras cuentas. Utiliza el requerirdeclaración para asegurar que el remitente tiene suficientes tokens para transferir.
  • Una balanceOffunción que devuelve el saldo del token de una cuenta especificada.
  • Este contrato básico de token demuestra cómo usar variables, funciones y modificadores en Solidity para crear un contrato inteligente simple y funcional.

Ejemplo2: Implementación de un sistema de votación simple

pragma solidity ^0.8.0;contrato SistemaDeVotacion {    mapeo (bytes32 => uint256) public votesReceived;    bytes32[] public candidateList;    constructor(bytes32[] memory candidateNames) {        candidateList = candidateNames;    }    función voteForCandidate(bytes32 candidate) public {        require(validCandidate(candidate), "Candidato inválido.");        votesReceived[candidate] += 1;    }    función totalVotesFor(bytes32 candidate) public view returns (uint256) {        require(validCandidate(candidate), "Candidato inválido.");        return votesReceived[candidate];    }    función validCandidate(bytes32 candidate) public view returns (bool) {        for (uint256 i = 0; i < candidateList.length; i++) {            if (candidateList[i] == candidate) {                return true;            }        }        return false;    }}

En este ejemplo, el Sistema de votaciónEl contrato permite a los usuarios votar por uno de varios candidatos llamando al votarPorCandidatofunción. El contrato lleva un registro de la cantidad de votos recibidos por cada candidato utilizando un votosRecibidosmapeo, donde la clave es el nombre del candidato y el valor es el número de votos. LaLista de candidatosLa variable almacena la lista de candidatos válidos. totalVotesForLa función se puede llamar para verificar el número de votos que ha recibido un candidato específico, y el Candidato válidoLa función comprueba si un candidato es válido. Este es un ejemplo simple de cómo Solidity puede ser utilizado para construir aplicaciones descentralizadas con lógica compleja.

Aspectos destacados
Las variables, funciones y modificadores son componentes esenciales en contratos inteligentes de Solidity.
Solidity tiene dos tipos de variables: variables de estado y variables locales.
Las funciones se utilizan para realizar tareas y pueden tener parámetros de entrada y valores de retorno.
Los modificadores se utilizan para modificar el comportamiento de una función y mejorar la legibilidad y la facilidad de gestión del código.
El contrato SimpleToken permite a los usuarios transferir tokens y verificar saldos de tokens.
El contrato de SimpleToken muestra el uso de variables de estado, una función constructora y funciones como transfer y balanceOf.
El contrato VotingSystem permite a los usuarios votar por candidatos y hacer un seguimiento de los recuentos de votos.
El contrato VotingSystem muestra el uso de mapeos, matrices y funciones como voteForCandidate, totalVotesFor y validCandidate.

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.
Каталог
Урок 3

Escribir un contrato inteligente básico

Las variables, funciones y modificadores son componentes esenciales en los contratos inteligentes de Solidity. Solidity tiene dos tipos de variables: variables de estado y variables locales.

En esta sección, discutiremos el proceso de escribir un contrato inteligente básico usando Solidity. Cubriremos componentes esenciales como variables, funciones y modificadores. Luego, recorreremos un ejemplo de implementación de un contrato de token simple.

Variables, funciones y modificadores

  • VariablesEn Solidity, hay dos tipos de variables: variables de estado y variables locales. Las variables de estado se almacenan permanentemente en la cadena de bloques, mientras que las variables locales son temporales y existen solo dentro del alcance de una función.
  • FuncionesLas funciones son los bloques de construcción de los contratos inteligentes. Se utilizan para realizar tareas específicas, como crear transacciones y ejecutar lógica personalizada. Las funciones pueden tener parámetros de entrada y valores de retorno, lo que permite una mayor personalización y flexibilidad.
  • Modificadores: Los modificadores son únicos en Solidity y se utilizan para modificar el comportamiento de una función. Pueden mejorar la legibilidad y la capacidad de gestión del código, y se pueden utilizar para autenticar los valores entrantes o ejecutar condicionalmente una función llamada.

Ejemplo 1: Implementación de un contrato de token simple

Creemos un contrato de token simple usando Solidity. Este contrato permitirá a los usuarios transferir tokens entre cuentas y verificar el saldo de tokens de cualquier cuenta.

TypeScriptpragma solidez ^0.8.0;contrato SimpleToken {    // Declarar variables de estado    dirección pública propietaria;    asignación(dirección => uint256) públicas saldos;    // Inicializar el contrato del token    constructor(uint256 suministroInicial) {        propietaria = msg.sender;        saldos[propietaria] = suministroInicial;    }    // Función para transferir tokens    función transferir(dirección a, uint256 cantidad) pública {        require(saldos[msg.sender] >= cantidad, "Saldo insuficiente");        saldos[msg.sender] -= cantidad;        saldos[a] += cantidad;    }    // Función para verificar el saldo del token de una cuenta    función balanceOf(dirección cuenta) pública vista devuelve (uint256) {        return saldos[cuenta];    }}

En este contrato, tenemos:

  • Variables de estadopropietarioysaldospara almacenar la dirección del propietario del contrato y los saldos de tokens de todas las direcciones, respectivamente.
  • Una constructorfunción que establece el suministro inicial de tokens y los asigna al propietario del contrato.
  • Un transferenciafunción que permite a los usuarios transferir tokens a otras cuentas. Utiliza el requerirdeclaración para asegurar que el remitente tiene suficientes tokens para transferir.
  • Una balanceOffunción que devuelve el saldo del token de una cuenta especificada.
  • Este contrato básico de token demuestra cómo usar variables, funciones y modificadores en Solidity para crear un contrato inteligente simple y funcional.

Ejemplo2: Implementación de un sistema de votación simple

pragma solidity ^0.8.0;contrato SistemaDeVotacion {    mapeo (bytes32 => uint256) public votesReceived;    bytes32[] public candidateList;    constructor(bytes32[] memory candidateNames) {        candidateList = candidateNames;    }    función voteForCandidate(bytes32 candidate) public {        require(validCandidate(candidate), "Candidato inválido.");        votesReceived[candidate] += 1;    }    función totalVotesFor(bytes32 candidate) public view returns (uint256) {        require(validCandidate(candidate), "Candidato inválido.");        return votesReceived[candidate];    }    función validCandidate(bytes32 candidate) public view returns (bool) {        for (uint256 i = 0; i < candidateList.length; i++) {            if (candidateList[i] == candidate) {                return true;            }        }        return false;    }}

En este ejemplo, el Sistema de votaciónEl contrato permite a los usuarios votar por uno de varios candidatos llamando al votarPorCandidatofunción. El contrato lleva un registro de la cantidad de votos recibidos por cada candidato utilizando un votosRecibidosmapeo, donde la clave es el nombre del candidato y el valor es el número de votos. LaLista de candidatosLa variable almacena la lista de candidatos válidos. totalVotesForLa función se puede llamar para verificar el número de votos que ha recibido un candidato específico, y el Candidato válidoLa función comprueba si un candidato es válido. Este es un ejemplo simple de cómo Solidity puede ser utilizado para construir aplicaciones descentralizadas con lógica compleja.

Aspectos destacados
Las variables, funciones y modificadores son componentes esenciales en contratos inteligentes de Solidity.
Solidity tiene dos tipos de variables: variables de estado y variables locales.
Las funciones se utilizan para realizar tareas y pueden tener parámetros de entrada y valores de retorno.
Los modificadores se utilizan para modificar el comportamiento de una función y mejorar la legibilidad y la facilidad de gestión del código.
El contrato SimpleToken permite a los usuarios transferir tokens y verificar saldos de tokens.
El contrato de SimpleToken muestra el uso de variables de estado, una función constructora y funciones como transfer y balanceOf.
El contrato VotingSystem permite a los usuarios votar por candidatos y hacer un seguimiento de los recuentos de votos.
El contrato VotingSystem muestra el uso de mapeos, matrices y funciones como voteForCandidate, totalVotesFor y validCandidate.

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.