Created
September 5, 2023 02:18
-
-
Save EmaBord/a5efb71e71905e44665667c5bc215aae to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
contract SimpleContract { | |
// Variable de estado en almacenamiento (storage) | |
uint256 private storageData; | |
// Constante (valor que no cambia y es conocido en tiempo de compilación) | |
uint256 public constant CONSTANTE_VALOR = 123456; | |
// Valor asignado en el constructor que no cambia después (inmutable) | |
uint256 public immutable creationTimestamp; | |
// Constructor para inicializar el valor inmutable | |
constructor() { | |
creationTimestamp = block.timestamp; | |
} | |
// Función que utiliza parámetros calldata, memory y modifica storage | |
function setData(uint256 nuevoData, bytes calldata datosAdicionales) external { | |
uint256[] memory arrayMemory = new uint256[](3); | |
arrayMemory[0] = nuevoData; | |
arrayMemory[1] = storageData; | |
arrayMemory[2] = bytesToUint256(datosAdicionales); // Conversión simplificada, solo para propósitos de demostración. | |
storageData = arrayMemory[0] + arrayMemory[1] + arrayMemory[2]; | |
} | |
// Función que devuelve un valor desde el almacenamiento(storage) | |
function getData() external view returns (uint256) { | |
return storageData; | |
} | |
// Función helper para convertir bytes a uint256 (simplificada) | |
function bytesToUint256(bytes memory input) internal pure returns (uint256) { | |
uint256 output; | |
for (uint256 i = 0; i < input.length; i++) { | |
output = output << 8 | uint256(uint8(input[i])); | |
} | |
return output; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment