PeakeCoin'sino Update

https://geocities.ws/peakecoin/pek_casino/beta_games/

The Maryland-made casino runs right in your browser, logging in with Hive Keychain or WhaleVault.

🃏 Choose from over 15 games: Blackjack, Poker, Baccarat, Teen Patti, Casino War, and more.

🔐 Secure login via Keychain or WhaleVault 💰 PEK balance check auto-displays after sign-in 🔗 All games gated behind a 100 PEK minimum 🧾 Deposits accepted from MetaMask → Hive Engine bridge (swap.crypto)



<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>PeakeCoin'sino</title>

    <link href="https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap" rel="stylesheet">

    <link href="casino-theme.css" rel="stylesheet">

    <style>

        body {

            background: linear-gradient(135deg, #181818 0%, #232323 100%);

            color: #fff;

            font-family: 'Press Start 2P', monospace;

            margin: 0;

            min-height: 100vh;

        }

        .casino-container {

            max-width: 520px;

            margin: 60px auto;

            background: linear-gradient(135deg, #232323 60%, #2d1e2f 100%);

            border-radius: 20px;

            box-shadow: 0 0 40px #000a, 0 4px 32px #6c3483cc;

            padding: 36px 28px 32px 28px;

            text-align: center;

            border: 2px solid #6c3483;

        }

        .casino-title {

            font-size: 2.2em;

            margin-bottom: 28px;

            letter-spacing: 2px;

            color: #ffd700;

            text-shadow: 0 2px 8px #6c3483cc, 0 1px 0 #fff2;

        }

        .login-section {

            margin-bottom: 36px;

        }

        .game-list {

            margin-top: 28px;

        }

        .game-btn {

            display: block;

            width: 100%;

            margin: 14px 0;

            padding: 18px 0;

            font-size: 1.1em;

            background: linear-gradient(90deg, #6c3483 0%, #232323 100%);

            color: #fff;

            border: none;

            border-radius: 10px;

            cursor: pointer;

            box-shadow: 0 2px 8px #0006;

            transition: background 0.2s, transform 0.1s, box-shadow 0.2s;

            font-family: inherit;

            letter-spacing: 1px;

        }

        .game-btn:hover {

            background: linear-gradient(90deg, #8e44ad 0%, #232323 100%);

            color: #ffd700;

            transform: translateY(-2px) scale(1.03);

            box-shadow: 0 6px 16px #6c3483cc;

        }

        #casinoLoginError {

            color: #f55;

            margin-top: 10px;

            min-height: 18px;

        }

        #casinoBalanceDisplay {

            margin-bottom: 14px;

            font-size: 1.1em;

            color: #ffd700;

            text-shadow: 0 1px 4px #6c3483cc;

        }

        input[type="text"] {

            padding: 12px;

            width: 80%;

            margin-bottom: 14px;

            border-radius: 8px;

            border: 1.5px solid #6c3483;

            background: #181818;

            color: #fff;

            font-size: 1em;

            font-family: inherit;

            outline: none;

            box-shadow: 0 1px 6px #6c348344 inset;

            transition: border 0.2s, box-shadow 0.2s;

        }

        input[type="text"]:focus {

            border: 2px solid #ffd700;

            box-shadow: 0 2px 12px #ffd70044;

        }

        button[type="submit"] {

            padding: 12px 36px;

            border-radius: 8px;

            border: none;

            background: linear-gradient(90deg, #ffd700 0%, #6c3483 100%);

            color: #232323;

            font-size: 1.1em;

            font-family: inherit;

            font-weight: bold;

            cursor: pointer;

            box-shadow: 0 2px 8px #0006;

            transition: background 0.2s, color 0.2s, box-shadow 0.2s;

        }

        button[type="submit"]:hover {

            background: linear-gradient(90deg, #fff700 0%, #8e44ad 100%);

            color: #181818;

            box-shadow: 0 6px 16px #ffd70044;

        }

        .game-list > div {

            margin-bottom: 22px;

            color: #ffd700;

            text-shadow: 0 1px 4px #6c3483cc;

        }

        @media (max-width: 600px) {

            .casino-container {

                max-width: 98vw;

                padding: 18px 2vw 18px 2vw;

            }

            .casino-title {

                font-size: 1.2em;

            }

            .game-btn {

                font-size: 1em;

                padding: 12px 0;

            }

        }

    </style>

</head>

<body>

    <div class="casino-container">

        <div class="casino-title">PeakeCoin'sino</div>

        <div class="login-section" id="login-section">

            <form id="casinoLoginForm" autocomplete="off">

                <input type="text" id="casinoLoginInput" placeholder="Hive username" autocomplete="username" value="peakecoin.matic">

                <button type="submit" id="casinoLoginSubmit">Sign In with Hive</button>

                <div id="casinoLoginError"></div>

            </form>

        </div>

        <div class="game-list" id="game-list" style="display:none;">

            <div>Welcome, <span id="casinoUserDisplay"></span>!<br>Choose a game:</div>

            <button class="game-btn" id="go-blackjack">Blackjack</button>

            <button class="game-btn" id="go-poker">Poker</button>

            <button class="game-btn" id="go-baccarat">Baccarat</button>

            <button class="game-btn" id="go-teenpatti">Teen Patti</button>

            <button class="game-btn" id="go-andarbahar">Andar Bahar</button>

            <button class="game-btn" id="go-paigow">Pai Gow Poker</button>

            <button class="game-btn" id="go-reddog">Red Dog</button>

            <button class="game-btn" id="go-casinowar">Casino War</button>

            <button class="game-btn" id="go-caribbean">Caribbean Stud Poker</button>

            <button class="game-btn" id="go-threecard">Three Card Poker</button>

            <button class="game-btn" id="go-letitride">Let It Ride</button>

            <button class="game-btn" id="go-spanish21">Spanish 21</button>

            <button class="game-btn" id="go-pontoon">Pontoon</button>

            <button class="game-btn" id="go-faro">Faro</button>

            <button class="game-btn" id="go-chemin">Chemin de Fer</button>

            <button class="game-btn" id="go-liarspoker">Liar's Poker</button>

        </div>

    </div>

    <div style="text-align:center;margin-top:32px;font-size:1em;color:#ffd700;text-shadow:0 1px 4px #6c3483cc;">

        Need help or found a problem? <br>

        Contact us on Discord:<br>

        <a href="https://discord.com/channels/1371256077127122964/1378796217827328091" target="_blank" rel="noopener" style="color:#8e44ad;font-weight:bold;text-decoration:underline;">PeakeCoin Support Channel</a>

    </div>

    <div class="info-box" style="max-width:520px;margin:32px auto 0 auto;padding:18px 20px 16px 20px;background:#232323;border-radius:14px;border:2px solid #ffd700;color:#ffd700;text-align:left;font-size:1em;box-shadow:0 2px 12px #6c3483cc;">

        <b>How to Deposit PEK from MetaMask/EVM:</b><br>

        <ul style="margin:10px 0 0 18px;padding:0;font-size:0.98em;color:#ffd700;">

            <li>Send your PEK (or swap/wrapped PEK) from your EVM wallet to the <b>swap.crypto</b> bridge contract on Hive Engine's EVM chain.</li>

            <li>In the transaction memo, enter your <b>Hive username</b> (e.g., <b>peakecoin.matic</b>).</li>

            <li>After the bridge processes your deposit, your PEK will appear on Hive Engine and be available to play.</li>

            <li><b>Note:</b> Withdrawals and rewards are sent from <b>peakecoin.bnb</b> on Hive Engine. If a payout fails, it will be queued and reviewed.</li>

        </ul>

        <div style="margin-top:10px;font-size:0.95em;color:#ffd700;">All gameplay is provably fair and on-chain. For help, see our Discord support channel below.</div>

    </div>

    <script>

    // Simple CSP-compliant login and game select

    let casinoUser = null;

    let casinoBalance = null;

    const loginForm = document.getElementById('casinoLoginForm');

    const loginInput = document.getElementById('casinoLoginInput');

    const loginError = document.getElementById('casinoLoginError');

    const gameList = document.getElementById('game-list');

    const loginSection = document.getElementById('login-section');

    const userDisplay = document.getElementById('casinoUserDisplay');

    // Add balance display

    let balanceDisplay = document.createElement('div');

    balanceDisplay.id = 'casinoBalanceDisplay';

    balanceDisplay.style = 'margin-bottom:12px;font-size:1.1em;color:#ffd700;';

    gameList.insertBefore(balanceDisplay, gameList.firstChild);


    loginForm.addEventListener('submit', function(e) {

        e.preventDefault();

        const username = loginInput.value.trim();

        loginError.textContent = '';

        if (!username) {

            loginError.textContent = 'Enter your Hive username.';

            return;

        }

        // Helper: handle successful login

        function completeLogin(user) {

            casinoUser = user;

            loginSection.style.display = 'none';

            userDisplay.textContent = '@' + user;

            gameList.style.display = '';

            fetchPEKBalance(user);

            // Persist login for game pages

            try {

                localStorage.setItem('peakecoin_user', user);

            } catch (e) {}

        }

        // Helper: show error

        function showLoginError(msg) {

            loginError.textContent = msg;

        }

        // --- Hive Keychain ---

        if (window.hive_keychain) {

            function handleSignResponse(response, triedMemo) {

                console.log('[Keychain response]', response);

                const isValidSig = (sig) => {

                    return (

                        typeof sig === 'string' && (

                            sig.startsWith('SIG_') ||

                            (/^[0-9a-f]{128,132}$/i.test(sig))

                        )

                    );

                };

                if (response.success && isValidSig(response.result)) {

                    completeLogin(username);

                } else if (!triedMemo) {

                    // Try Memo key as fallback (capitalized)

                    window.hive_keychain.requestSignBuffer(

                        username,

                        'Sign in to PeakeCoin\'sino',

                        'Memo',

                        function(resp2) { handleSignResponse(resp2, true); }

                    );

                } else {

                    let errMsg = 'Hive Keychain sign-in failed or was rejected.';

                    if (response.error) errMsg += ' Error: ' + response.error;

                    if (typeof response.result === 'string' && !isValidSig(response.result)) {

                        if (/^[0-9a-f]{64}$/i.test(response.result)) {

                            errMsg += ' (This looks like a transaction ID, not a signature. Make sure the username is present and unlocked in your Hive Keychain extension.)';

                        } else {

                            errMsg += ' (No valid signature returned: ' + response.result + ')';

                        }

                    }

                    showLoginError(errMsg);

                }

            }

            window.hive_keychain.requestSignBuffer(

                username,

                'Sign in to PeakeCoin\'sino',

                'Posting',

                function(response) { handleSignResponse(response, false); }

            );

            return;

        }

        // --- WhaleVault ---

        if (window.WhaleVault || window.wv) {

            // WhaleVault uses custom events for signBuffer

            function whalevaultSignBuffer(user, message, cb) {

                const req = {

                    type: 'signBuffer',

                    username: user,

                    message: message,

                    method: 'posting',

                    sigType: 'K1',

                    appid: 'PeakeCoin',

                    reason: 'Casino Login',

                    request_id: Date.now()

                };

                function onWVResponse(event) {

                    if (event.data && event.data.type === 'wvResponse' && event.data.response && event.data.response.data && event.data.response.data.request_id === req.request_id) {

                        window.removeEventListener('message', onWVResponse);

                        cb(event.data.response);

                    }

                }

                window.addEventListener('message', onWVResponse);

                window.postMessage({ type: 'wvRequest', detail: req }, '*');

            }

            whalevaultSignBuffer(username, 'Sign in to PeakeCoin\'sino', function(response) {

                console.log('[WhaleVault response]', response);

                if (response.success && typeof response.result === 'string' && response.result.startsWith('SIG_')) {

                    completeLogin(username);

                } else {

                    let errMsg = 'WhaleVault sign-in failed or was rejected.';

                    if (response.error) errMsg += ' Error: ' + response.error;

                    if (typeof response.result === 'string' && !response.result.startsWith('SIG_')) {

                        if (/^[0-9a-f]{64}$/i.test(response.result)) {

                            errMsg += ' (This looks like a transaction ID, not a signature. Make sure the username is present and unlocked in your WhaleVault extension.)';

                        } else {

                            errMsg += ' (No valid signature returned: ' + response.result + ')';

                        }

                    }

                    showLoginError(errMsg);

                }

            });

            return;

        }

        // --- No wallet extension ---

        showLoginError('No supported Hive wallet extension (Hive Keychain or WhaleVault) found.');

    });

    // Prevent game selection if not logged in or balance too low

    function canPlay() {

        if (!casinoUser) {

            loginError.textContent = 'Please log in with Hive Keychain first.';

            return false;

        }

        if (parseFloat(casinoBalance) < 100) {

            loginError.textContent = 'You need at least 100 PEK to play.';

            return false;

        }

        return true;

    }

    // Fix navigation for static hosting: use relative paths from root

    function goToGame(gameDir) {

        try {

            localStorage.setItem('peakecoin_user', casinoUser);

        } catch (e) {}

        window.location.href = gameDir + '/index.html';

    }

    document.getElementById('go-blackjack').onclick = function() { if (canPlay()) goToGame('blackjack'); };

    document.getElementById('go-poker').onclick = function() { if (canPlay()) goToGame('poker'); };

    document.getElementById('go-baccarat').onclick = function() { if (canPlay()) goToGame('baccarat'); };

    document.getElementById('go-teenpatti').onclick = function() { if (canPlay()) goToGame('teenpatti'); };

    document.getElementById('go-andarbahar').onclick = function() { if (canPlay()) goToGame('andarbahar'); };

    document.getElementById('go-paigow').onclick = function() { if (canPlay()) goToGame('paigow'); };

    document.getElementById('go-reddog').onclick = function() { if (canPlay()) goToGame('reddog'); };

    document.getElementById('go-casinowar').onclick = function() { if (canPlay()) goToGame('casinowar'); };

    document.getElementById('go-caribbean').onclick = function() { if (canPlay()) goToGame('caribbean'); };

    document.getElementById('go-threecard').onclick = function() { if (canPlay()) goToGame('threecard'); };

    document.getElementById('go-letitride').onclick = function() { if (canPlay()) goToGame('letitride'); };

    document.getElementById('go-spanish21').onclick = function() { if (canPlay()) goToGame('spanish21'); };

    document.getElementById('go-pontoon').onclick = function() { if (canPlay()) goToGame('pontoon'); };

    document.getElementById('go-faro').onclick = function() { if (canPlay()) goToGame('faro'); };

    document.getElementById('go-chemin').onclick = function() { if (canPlay()) goToGame('chemin'); };

    document.getElementById('go-liarspoker').onclick = function() { if (canPlay()) goToGame('liarspoker'); };


    // Fetch PEK balance from Hive Engine

    function fetchPEKBalance(username) {

        // Hive Engine API endpoint

        const url = `https://api.hive-engine.com/rpc/contracts`;

        const reqBody = {

            jsonrpc: "2.0",

            id: 1,

            method: "find",

            params: {

                contract: "tokens",

                table: "balances",

                query: { account: username, symbol: "PEK" },

                limit: 1

            }

        };

        balanceDisplay.textContent = 'Loading PEK balance...';

        fetch(url, {

            method: 'POST',

            headers: { 'Content-Type': 'application/json' },

            body: JSON.stringify(reqBody)

        })

        .then(r => r.json())

        .then(data => {

            let bal = '0.000';

            if (data && data.result && data.result.length > 0 && data.result[0].balance) {

                bal = data.result[0].balance;

            }

            casinoBalance = bal;

            balanceDisplay.textContent = `PEK Balance: ${bal}`;

        })

        .catch(() => {

            balanceDisplay.textContent = 'PEK Balance: (error fetching)';

        });

    }

    </script>

</body>

</html>






This report was published via Actifit app (Android | iOS). Check out the original version here on actifit.io


20/06/2025
5988
Daily Activity



0
0
0.000
2 comments
avatar

Congratulations @strangedad! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)

You received more than 3500 upvotes.
Your next target is to reach 3750 upvotes.

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

0
0
0.000
avatar

Congrats on providing Proof of Activity via your Actifit report!

You have been rewarded 34.875 AFIT tokens for your effort in reaching 5988 activity, as well as your user rank and report quality!
You also received a 0.85% upvote via @actifit account.


Rewards Details

AFIT rewards and upvotes are based on your:
  • User rank: which depends on your delegated HP, accumulated AFIT tokens, rewarded post count, recent rewarded activity and owned AFITX.
  • Post score: which depends on your activity count, post content, post upvotes, quality comments, moderator review and user rank.

To improve your user rank, delegate more, pile up more AFIT and AFITX tokens, and post more.
To improve your post score, get to the max activity count, work on improving your post content, improve your user rank, engage with the community to get more upvotes and quality comments.

rulersig2.jpg
Chat with us on discord | Visit our website
Follow us on Twitter | Join us on Telegram
Download on playstore | Download on app store

Knowledge base:
FAQs | Whitepaper
How to signup | Maximize your rewards
Complete Actifit Tutorial
rulersig2.jpg
Support our efforts below by voting for:

0
0
0.000