Avatar
zk-BTC ⚑
6259db72febb72d436266013eb43c5ad7a754665ec5376924bc9957a6a47d515
doriannakamoto.sats selfsovereignty.sats 7 years R&D in Bitcoin. Selfsovereignty Advocate, #bitcoin Founder of https://zk-BTC.com

Validity rollups that can achieve settlement on Bitcoin’s consensus layer without modification to Bitcoin. If possible , are you feeling this? Asking for a legitimate reason Kob! Lmk πŸ™

Validity rollups L2 on Bitcoin the uses the consensus for settlement not just data availability. πŸ’­ thoughts?πŸ€” πŸ‘‡

#btc #bitcoin #selfsovereignty #ordinals

GMGMGMGMGMGMGMGMGMGMGMGMGM!β˜•οΈ

Good night early birds ⚑️🌜#gnnostr #nostr

Some pretty incredible developments occurring as we speak. Being built to anchor the security and censorship resistance of #bitcoin! πŸ”₯πŸ’ͺ

https://twitter.com/Cryptskii/status/1633566456154673156?t=FW1V_mnRwJgzM8vabI_VwA&s=19

🧡5/5

That’s on the reserved end. If you consider #Bitcoin doing a 2x from here you can double those figures For I nice 240x in gains from here. Did I mention polygon and syscoin are partners?

🧡3/5

basically,

where

@0xPolygon

is to

@ethereum

in terms of market cap.

@syscoin

should rightfully have the same ratio in market cap relative to #Bitcoin in place of #ETH as it provides the same enhancement of features and performance but slightly better in accordance. πŸ‘‡

🧡2/5 #zkrollup are on #bitcoin and work better there and any dapp on #ETH can be launched on bitcoin using syscoins #evm or NEVM as they call it.

@syscoin

is a sleeping giant. One of, if not the most secure network other than Bitcoin itself. Thanks to merge mining. Mine BTC and SYS πŸ‘Œ πŸ‘‡

🧡1/5

@bns

.BTC names are on #bitcoin not Stacks. They just registered using Stacks. Im even using my .BTC for my lightning address

@lightning

and my #Nostr public key.

@jack

and

@saylor

both using

@damusapp

see everyone soon πŸ‘‹ when you guys get up to speed πŸ”₯πŸš€ oh and πŸ‘‡

is anyone else here paying attention to #syscoin?

pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol";

contract BitcoinWorldCurrencyGuess {

// Address of the NFT collection

address public nftCollection;

// Mapping of NFT token IDs to boolean values indicating whether a guess has been made

mapping(uint256 => bool) public guessMade;

// Mapping of dates to number of guesses made for that date

mapping(uint256 => uint256) public dateToGuesses;

// Total number of guesses allowed

uint256 public totalGuesses;

// ETH amount locked up in the contract from the mint of the NFT token

uint256 public lockedETH;

// Address of the oracle providing the Bitcoin/USD exchange rate

address public oracle;

// Aggregator interface for the Bitcoin/USD exchange rate

AggregatorV3Interface internal priceFeed;

// Uniswap V2 router contract address

address public uniswapRouter;

// Address of the wrapped Bitcoin contract

address public wbtcAddress;

// Event emitted when a guess is made for an NFT

event GuessMade(address indexed guesser, uint256 indexed tokenId, uint256 guessDate);

// Event emitted when the correct date is verified and the ETH is swapped for WBTC and distributed to the winner(s)

event WinnerSelected(address indexed winner, uint256 indexed winningDate, uint256 wbtcAmount);

constructor(address _nftCollection, uint256 _totalGuesses, uint256 _lockedETH, address _oracle, address _uniswapRouter, address _wbtcAddress) {

nftCollection = _nftCollection;

totalGuesses = _totalGuesses;

lockedETH = _lockedETH;

oracle = _oracle;

priceFeed = AggregatorV3Interface(oracle);

uniswapRouter = _uniswapRouter;

wbtcAddress = _wbtcAddress;

}

// Function to make a guess for an NFT

function makeGuess(uint256 _tokenId, uint256 _guessDate) public {

require(msg.sender == ownerOf(_tokenId), "BitcoinWorldCurrencyGuess: sender is not owner of NFT");

require(!guessMade[_tokenId], "BitcoinWorldCurrencyGuess: guess already made for NFT");

require(dateToGuesses[_guessDate] < totalGuesses, "BitcoinWorldCurrencyGuess: too many guesses for that date");

// Record the guess for the NFT and the date

guessMade[_tokenId] = true;

dateToGuesses[_guessDate]++;

// Emit GuessMade event

emit GuessMade(msg.sender, _tokenId, _guessDate);

}

// Function to select the winner(s), swap ETH for WBTC, and distribute the WBTC to the winner(s)

function selectWinner() public {

require(isBitcoinWorldCurrency(), "BitcoinWorldCurrencyGuess: Bitcoin is not the world currency yet");

// Calculate the winning date and the number of winners

uint256 winningDate;

uint256 maxGuesses = 0;

uint256 numWinners = 0;

for (uint256 i = 0; i < totalGuesses; i++) {

if (dateToGuesses[i] > maxGuesses) {

winningDate = i;