Creando una dApp de Lotería con Solidity
En el día de hoy voy a crear un Smart Contract que tendrá como función hacer una lotería dónde las personas para entrar a la lotería deberán pagar un monto en Ethers . Ese monto se acumulará en el balance del contrato y cuando el dueño o manager del Smart Contract le de a un botón digamos transferir al ganador se le enviará el balance total de este Smart contract.el ganador se eligiera mediante un número aleatorio.
Procedemos a crear el Smart Contract
Código aquí abajo:
pragma solidity ^0.8.0;
contract Lottery{
address public owner;
address[] public participants;
bool public isCreated;
uint public minimumAmountToParticipate;
modifier onlyOwner(){
requiere(msg.sender == owner);
_;
}
constructor(){
owner=msg.sender;
}
function create(uint minimum) public onlyOwner{
require(!isCreated);
minimumAmountToParticipate=minimum;
isCreated=true;
}
function enter() public payable {
require(isCreated);
require(msg.value>minimumAmountToParticipate);
participants.push(msg.sender);
}
function random() private returns(uint){
return uint(keccak256(block.difficulty, block.timestamp, participants)) % participants.length;
}
function pickWinner() public onlyOwner{
require(isCreated);
uint index = random();
payable(participants [index]).transfer(address(this).balance);
participants = new address[ ] (0);
isCreated=false;
}
}
Con eso hemos finalizado nuestro contrato inteligente jeje.