Skip to content

Instantly share code, notes, and snippets.

@EmaBord
Created September 5, 2023 02:18
Show Gist options
  • Save EmaBord/a5efb71e71905e44665667c5bc215aae to your computer and use it in GitHub Desktop.
Save EmaBord/a5efb71e71905e44665667c5bc215aae to your computer and use it in GitHub Desktop.
// 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