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
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:
propietario
ysaldos
para almacenar la dirección del propietario del contrato y los saldos de tokens de todas las direcciones, respectivamente.constructor
función que establece el suministro inicial de tokens y los asigna al propietario del contrato.transferencia
función que permite a los usuarios transferir tokens a otras cuentas. Utiliza el requerir
declaración para asegurar que el remitente tiene suficientes tokens para transferir.balanceOf
función que devuelve el saldo del token de una cuenta especificada.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ón
El contrato permite a los usuarios votar por uno de varios candidatos llamando al votarPorCandidato
función. El contrato lleva un registro de la cantidad de votos recibidos por cada candidato utilizando un votosRecibidos
mapeo, donde la clave es el nombre del candidato y el valor es el número de votos. LaLista de candidatos
La variable almacena la lista de candidatos válidos. totalVotesFor
La función se puede llamar para verificar el número de votos que ha recibido un candidato específico, y el Candidato válido
La 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.
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
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:
propietario
ysaldos
para almacenar la dirección del propietario del contrato y los saldos de tokens de todas las direcciones, respectivamente.constructor
función que establece el suministro inicial de tokens y los asigna al propietario del contrato.transferencia
función que permite a los usuarios transferir tokens a otras cuentas. Utiliza el requerir
declaración para asegurar que el remitente tiene suficientes tokens para transferir.balanceOf
función que devuelve el saldo del token de una cuenta especificada.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ón
El contrato permite a los usuarios votar por uno de varios candidatos llamando al votarPorCandidato
función. El contrato lleva un registro de la cantidad de votos recibidos por cada candidato utilizando un votosRecibidos
mapeo, donde la clave es el nombre del candidato y el valor es el número de votos. LaLista de candidatos
La variable almacena la lista de candidatos válidos. totalVotesFor
La función se puede llamar para verificar el número de votos que ha recibido un candidato específico, y el Candidato válido
La 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.