Curso de Introducción a Solidity

Curso de Introducción a Solidity

Sebastián Leonardo Perez

Sebastián Leonardo Perez

Variables y tipos de datos

4/21
Recursos

Aportes 16

Preguntas 14

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Tipos de datos

  • int | uint <8-256>: Son números enteros, que pueden ser sin signo o con signo, y que pueden tener una capacidad de 8 a 256 bits.
  • bool: Verdadero o flaso
  • address: Guarda direcciones de ETH de 160 bits (20 bytes), y puede tener métodos extra como .transfer o .balance
  • string: Cadena de texto
  • bytes<8-256>: Cadena de bytes

Tipos de variables

  • Variables locales: Son aquellas que ocurren durante la ejecución. En la EVM es la parte correspondiente a memoria volátil
  • Variables de estado: Son variables que se almacenan en la parte de la ROM de la EVM. Es memoria persistente

Variables globales

  • msg: Toda transacción es un mensaje firmado. En este objeto vienen los datos de dicho mensaje (sender, value, etc.)
  • tx: Represena la transacción, es distitna respecto a msg porque cosas como el sender van variando conforme se concatenan llamadas entre contratos
  • block: Información respecto al bloque

Para aprender más sobre las buenas prácticas, a la hora de nombrar variables, funciones, etc., viene perfecto conocer la Guía de Estilo de Solidity: 😃

https://docs.soliditylang.org/en/v0.8.10/style-guide.html

Cuando te enteraste que Platzi lanzó cursos de Solidity :

Poner especial atención a la primer propiedad de block, ya que esa información irá cambiando a lo largo del tiempo y no siempre seremos capaces de recuperarla (por lo que no deberíamos depender de este dato en particular para alguna operación).

  • blockhash(uint blockNumber) returns (bytes32): hash of the given block when blocknumber is one of the 256 most recent blocks; otherwise returns zero
  • block.basefee (uint): current block’s base fee (EIP-3198 and EIP-1559)
  • block.chainid (uint): current chain id
  • block.coinbase (address payable): current block miner’s address
  • block.difficulty (uint): current block difficulty
  • block.gaslimit (uint): current block gaslimit
  • block.number (uint): current block number
  • block.timestamp (uint): current block timestamp as seconds since unix epoch
  • gasleft() returns (uint256): remaining gas
  • msg.data (bytes calldata): complete calldata
  • msg.sender (address): sender of the message (current call)
  • msg.sig (bytes4): first four bytes of the calldata (i.e. function identifier)
  • msg.value (uint): number of wei sent with the message
  • tx.gasprice (uint): gas price of the transaction
  • tx.origin (address): sender of the transaction (full call chain)

//SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract Estructura {

int cantidad;
uint cantidadSinSigno;
address direccion;
bool firmado;

constructor (bool estaFirmado) {
direccion = msg.sender;
firmado =estaFirmado;
}

La forma en que declara variables de CamelCase , en especifico
LowerCamelCase

<unit cantidad**S**in**S**igno> 

Diferencias ente "LOCAL VARIABLES & STATE VARIABLES"

SIGNIFICADO DE "Valor BOOLEANO o Variable de tipo BOOLEANA"

Solidity NO tiene soporte para número decimales.

Aqui la versión actualizada de la guia de estilos de solidity.
La recomiendo, asi se van familiarizando más con la terminología en inglés que gobierna el mundo de la programación. Éxitos!!.
https://docs.soliditylang.org/en/v0.8.12/style-guide.html

pragma solidity >=0.7.0 <0.9.0;

contract Estructura  {

	int cantidad;
	uint cantidadSinSigno;
	address direccion;
	bool firmado;
	constructor(bool estaFirmado) {
		direccion = msg.sender;
		firmado = estaFirmado;
	}
}

Al momento de seguir este curso el compilador de Remix no me permite usar otra versión que no sea ^0.5.16

Los balances no tiene sentido que sean negativos creo que esto depende. Fuera del mundo crypto es muy comun. Ahora quizas no este permitido, pero en un futuro por ahi si.