Knoppia

Wiki de Informática y otras historias

Herramientas de usuario

Herramientas del sitio


bc:solidity

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
bc:solidity [2024/09/18 14:49] thejuanvisubc:solidity [2024/09/25 14:04] (actual) thejuanvisu
Línea 148: Línea 148:
 </code> </code>
  
-Las funciones son siempre públicas de forma predeterminadas lo cual no es muy seguro contra ataques, por lo que se suele recomendar marcarlas como "private".+Las funciones son siempre públicas de forma predeterminadas lo cual no es muy seguro contra ataques, por lo que se suele recomendar marcarlas como "private". Las funciones pueden contener alguno de los siguientes modificadores: 
 +  * pure: prohíbe el acceso o modificación del estado 
 +  * view: deshabilita cualquier modificación de estado 
 +  * payable: permite el pago de Ether (ETH) con una llamada 
 +  * virtual: este modificador permite cambiar el comportamiento de la función o contratos derivados 
 +  * override: Esta función cambia el comportamiento de otra función o contrato.
  
  
 ==== Funciones útiles ==== ==== Funciones útiles ====
 +=== Devolver variables y valores ===
 +<code c>
 +String dato = "dato"
 +function decirDato() public returns (string memory){
 +  return dato;
 +}
 +</code>
  
 +=== Modificadores ===
 +<code c>
 +  function _MultiplicacionIntegers(uint x, uint y) private pure returns (uint){
 +    return x*y;
 +  }
 +</code>
 +
 +
 +==== Hashing ====
 +Una función hash asigna una entrada a una identificación única determinista. cualquier modificación en dicha entrada modificará el valor hash. Sirve para generar números pseudoaleatorios. Ethereum tiene las siguientes funciones hash:
 +  * SHA-256
 +  * RIPEMD-160
 +  * keccak256
 +
 +Se puede llamar a estas funciones hash de la siguiente forma:
 +<code>
 +  keccak256(abi.encodePacked("nombre"));
 +</code>
 +
 +==== Evetos ====
 +Permiten que el Smart Contract reporte que algo ha sucedido en la blockchain al front end de su aplicación. Un evento se puede implementar de la siguiente forma:
 +<code>
 +event IntegerAdded(uint x, uint y, uint result);
 +function add(uint _x, uint _y) public returns (uint){
 +  uint result = _x + _y;
 +  emit IntegersAdded(_x, _y, result);
 +  return result;
 +}
 +</code>
 +
 +==== Mapas ====
 +Tipos de datos complejos similares a las hashtables. En el siguiente ejemplo se puede ver como se alamcena un uint con el saldo de un usuario. El tipo de datos address almacena la clave y uint el valor.
 +<code>
 +mapping(address => uint) public saldo;
 +</code>
 +
 +==== Variables especiales y funciones ====
 +msg.sender(address): se refiere al remitente del mensaje que invocó la función actual. Se puede utilizar para actualizar un mapping:
 +
 +<code>
 +contract NumeroFavorito {
 +  mapping(address=>uint) numeroFavorito;
 +  
 +  function establecerNumero(uint _numero) public{
 +    numeroFavorito[msg.sender] = _myNumber;
 +  }
 +  
 +  function CualEsMiNumeroFavorito() public view returns (uint){
 +    return numeroFavorito[msg.sender];
 +  }
 +}
 +</code>
 +
 +==== Estructuras de control ====
 +  * if-else
 +  * while
 +  * do-while
 +  * for
 +
 +<code>
 +if(x<1){
 +  return 0;
 +} else if (x=0){
 +  return 1;
 +} else{
 +  return 2;
 +}
 +</code>
  
 ===== Hola Mundo en un Smart Contract ===== ===== Hola Mundo en un Smart Contract =====
Línea 167: Línea 247:
 </code> </code>
 Tras eso iremos a la pestaña de solidity compiler y le daremos a compile: Tras eso iremos a la pestaña de solidity compiler y le daremos a compile:
 +<wrap column 100%>
 {{:bc:pasted:20240918-135604.png}} {{:bc:pasted:20240918-135604.png}}
 +</wrap>
 Después nos movemos a la pestaña de Deploy and Run Transactions y le damos a deploy: Después nos movemos a la pestaña de Deploy and Run Transactions y le damos a deploy:
 +<wrap column 100%>
 {{:bc:pasted:20240918-135912.png}} {{:bc:pasted:20240918-135912.png}}
 +</wrap>
 Finalmente podemos ir a la pestaña de Deployed Contracts, seleccionar el contrato que acabamos de enviar y pulsar en el botón greet para ver e mensaje; Finalmente podemos ir a la pestaña de Deployed Contracts, seleccionar el contrato que acabamos de enviar y pulsar en el botón greet para ver e mensaje;
 +<wrap column 100%>
 {{:bc:pasted:20240918-140206.png}} {{:bc:pasted:20240918-140206.png}}
 +</wrap>
 +
 +
bc/solidity.1726670993.txt.gz · Última modificación: 2024/09/18 14:49 por thejuanvisu