Faça você mesmo sua Criptomoeda de "vaquinha", que recebe valores de qualquer pessoa, que todos podem consultar o saldo, e que apenas o organizador pode sacar.
pragma solidity ^0.6.0;
contract SimpleContract {
// O endereço do criador do contrato será o único que poderá sacar os fundos
address public owner;
// O saldo atual do contrato
uint public balance;
// Construtor que define o endereço do criador do contrato como o proprietário
constructor() public {
owner = msg.sender;
}
// Função para receber fundos
function deposit() public payable {
// Aumenta o saldo do contrato com o valor enviado na chamada da função
balance += msg.value;
}
// Função para sacar fundos
function withdraw() public {
// Verifica se o endereço que está chamando a função é o proprietário do contrato
require(msg.sender == owner, "Apenas o proprietário pode sacar os fundos");
// Envia o saldo atual para o endereço do proprietário e zera o saldo do contrato
owner.transfer(balance);
balance = 0;
}
// Função para consultar o saldo atual do contrato
function getBalance() public view returns (uint) {
return balance;
}
}
Esse contrato possui três funções públicas: deposit para receber fundos, withdraw para sacar os fundos e getBalance para consultar o saldo atual. O contrato também possui uma variável pública balance que armazena o saldo atual e uma variável pública owner que armazena o endereço do criador do contrato.
A função deposit simplesmente aumenta o saldo do contrato com o valor enviado na chamada da função. A função withdraw envia o saldo atual para o endereço do proprietário e zera o saldo do contrato. A função getBalance simplesmente retorna o saldo atual do contrato.
Observe que a função withdraw verifica se o endereço que está chamando a função é o proprietário do contrato antes de permitir que os fundos sejam sacados. Isso garante que apenas o proprietário do contrato tenha acesso aos fundos.
Espero que isso ajude! Qualquer dúvida adicional, não hesite em perguntar.