pragma solidity ^0.4.25; contract contratoDeVentas { address public propietario; uint256 public fechaDeActualizacion; string public descripcion; uint public precio; bool public aLaVenta = true; string public estadoActual; event eventoEstadoActual(string _msg, address user, uint amount, uint256 time); constructor (string memory _descripcion, uint _precio) public payable { propietario = msg.sender; fechaDeActualizacion = block.timestamp; descripcion = _descripcion; precio = _precio; emit eventoEstadoActual('Artículo a la venta:', msg.sender, msg.value, block.timestamp); estadoActual = 'Artículo a la venta.'; } function comprar() public payable { if(msg.value >= precio && aLaVenta == true) { propietario.transfer(address(this).balance); propietario = msg.sender; aLaVenta = false; emit eventoEstadoActual('Artículo comprado y retirado de la venta', msg.sender, msg.value, block.timestamp); estadoActual = 'Artículo comprado y retirado de la venta.'; } else { revert(); } fechaDeActualizacion = block.timestamp; } function actualizarPrecio(uint _precio) public soloPropietario { precio = _precio; emit eventoEstadoActual('Precio actualizado', msg.sender, precio, block.timestamp); estadoActual = 'Artículo a la venta.'; } function modificarDescripcion (string memory _descripcion) public soloPropietario { descripcion = _descripcion; emit eventoEstadoActual('Descripción modificada.', msg.sender, 0, block.timestamp); estadoActual = 'Descripción modificada.'; } function ponerALaVenta() public soloPropietario { aLaVenta = true; emit eventoEstadoActual('Artículo a la venta.', msg.sender, 0, block.timestamp); estadoActual = 'Artículo a la venta.'; } function retirarDeLaVenta()public soloPropietario { aLaVenta = false; emit eventoEstadoActual('Artículo retirado de la venta.', msg.sender, 0, block.timestamp); estadoActual = 'Artículo retirado de la venta.'; } modifier soloPropietario { fechaDeActualizacion = block.timestamp; if (msg.sender != propietario) { revert(); } else { _; } } }
0.4.25