pulldeck deck · –
last pull

No card pulled yet. The first pull lands on the first full hour after $PULLDECK is live.

CA not live yet gmgn
deck 1 0 $PULLDECK on the deck opens at launch

    The deck opens the minute $PULLDECK is live. Card #01 is the first move.

    $PULLDECK

    Laid now: a 1-in-1 shot.

    How a card gets pulled

    1. Lay a card. One stake, 5,000 to 500,000 $PULLDECK. Its odds are its share of the deck. Lay as many as you like.
    2. The deck closes on the hour. The closing transaction fixes a pull block three blocks ahead, a block nobody has seen yet. The next deck opens in the same transaction.
    3. The hash pulls one card. Weighted by stake. The pulled card takes its own stake back plus every other card's, less 3% of the others. Under three cards, everyone is refunded whole.

    A worked pull

    cardstakerunsodds
    #0140,0000 – 39,99940%
    #0225,00040,000 – 64,99925%
    #0310,00065,000 – 74,99910%
    #0425,00075,000 – 99,99925%

    The deck holds 100,000. The pull block's hash gives a roll of 61,204, which lands in card #02's run. Card #02 takes its 25,000 back plus the other 75,000, less 3% of that 75,000 (2,250): 97,750. The other three cards were, technically, generous.

    Redo any pull yourself

    roll = keccak256(abi.encodePacked(
             blockhash(pullBlock), deckId, cards, total
           )) % total

    Every input is public: the pull block, the deck number, the card count and the deck total (in the coin's smallest units) are on the tape and in the contract's events, and the block hash is on the explorer. Walk the cards in order, adding stakes; the first card whose running total passes the roll is the pulled card. If the hash ever ages out before the pull, the deck is resealed to a fresh future block. Nobody, the keeper included, picks a card.