🎲YOLO Buy

With YOLO Buy, you can place a non-refundable bid for a fraction of an NFT's listed price for a chance to win that NFT. The more you bid, the better your odds of winning.

YOLO Buy Features

  • Each time you play, you earn progress toward a free spin

  • Even when you lose, you still win Tensor points based on the size of your bid

  • Odds as low as 1% and as high as 75% are available

  • The user who listed the NFT earns an extra 1.5% when it's purchased via YOLO Buy

  • If you win your YOLO Buy, but the NFT was purchased mid-roll, you win SOL equivalent to the NFT's price

How Does It Work?

YOLO Buy uses a commit-reveal scheme with a Verifiable Random Function, which means it is verifiably fair on-chain. The underlying math dictates that if you roll with 1% odds, you should win on average once every 100 rolls.

Advanced

In the commit phase, a randomness seed is hashed and stored on-chain.

In the reveal phase, that seed is used to compute the outcome and compared to the hash.

The exact code from the contract for calculating outcomeU64 is as follows:

    let secret_hash = hash(secret).to_bytes();
    require!(secret_hash == roll_state.secret_hash, TRollError::BadHash);

    let mut outcome_message = [0; 112];

    let (secret_bytes, user, user_nonce, roll_count, commit_slot) =
        mut_array_refs![&mut outcome_message, 32, 32, 32, 8, 8];

    *secret_bytes = *secret;
    *user = roll_state.user.to_bytes();
    *user_nonce = roll_state.user_nonce;
    *roll_count = roll_state.roll_count.to_le_bytes();
    *commit_slot = roll_state.commit_slot.to_le_bytes();

    let outcome_hash = hash(&outcome_message).to_bytes();
    let outcome_u64 = *bytemuck::from_bytes::<u64>(&outcome_hash[0..8]);

YOLO Buy is not available in all regions

Last updated