Creando una dApp de Lotería con Solidity

in Steem Venezuela3 years ago

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.

#solidity #smartcontract #ERC20 #ERC721