Разработка игры Coinflip на блокчейне
Coinflip — простейшая ставочная механика: угадать орёл или решка. 50/50 шанс, выигрыш чуть меньше 2x (house edge ~2%). Реализация на блокчейне занимает несколько дней, но требует правильного verifiable randomness.
Smart contract
contract BlockchainCoinflip is VRFConsumerBaseV2Plus {
uint256 public houseEdge = 200; // 2%
struct Flip {
address player;
uint256 amount;
bool guessHeads;
}
mapping(uint256 => Flip) public flips;
function flip(bool guessHeads) external payable returns (uint256 requestId) {
require(msg.value >= 0.001 ether && msg.value <= getMaxBet());
requestId = _requestVRF();
flips[requestId] = Flip(msg.sender, msg.value, guessHeads);
}
function fulfillRandomWords(uint256 requestId, uint256[] calldata randomWords)
internal override
{
Flip memory f = flips[requestId];
delete flips[requestId];
bool isHeads = randomWords[0] % 2 == 0;
bool win = isHeads == f.guessHeads;
if (win) {
uint256 payout = f.amount * (10000 - houseEdge) / 5000;
payable(f.player).transfer(payout);
}
emit FlipResult(requestId, f.player, isHeads, win, win ? f.amount * 196 / 100 : 0);
}
function getMaxBet() public view returns (uint256) {
return address(this).balance / 100;
}
}
PvP вариант (игрок против игрока): первый игрок создаёт challenge с bet, второй принимает, VRF определяет winner, winner gets both bets minus fee. Это убирает house bankroll requirement — казино зарабатывает только комиссию.
Разработка Coinflip смарт-контракт + frontend — 1-2 недели. PvP вариант добавляет неделю для challenge/accept механики.







