Compare commits
2 commits
1dae3f8944
...
9331926d49
| Author | SHA1 | Date | |
|---|---|---|---|
| 9331926d49 | |||
| 3f8b48083d |
153 changed files with 31176 additions and 0 deletions
28
config/settings.yml
Normal file
28
config/settings.yml
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
# General Scraper Settings
|
||||||
|
debug:
|
||||||
|
save_html_js: true # Set to true for debugging, false for production
|
||||||
|
headless_mode:
|
||||||
|
js: false # Set to false to run Playwright in visible mode for JS debugging
|
||||||
|
html: false # Not used yet, but we can use Playwright for HTML later if needed
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
scraper:
|
||||||
|
user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
|
||||||
|
request_timeout: 10 # Timeout in seconds
|
||||||
|
retry_attempts: 3 # Number of retries on failure
|
||||||
|
|
||||||
|
# Database Settings
|
||||||
|
database:
|
||||||
|
data_path: "data/data.db"
|
||||||
|
logs_path: "data/logs.db"
|
||||||
|
|
||||||
|
# API Keys (Optional - Can be filled later)
|
||||||
|
api_keys:
|
||||||
|
twitter: "YOUR_TWITTER_API_KEY"
|
||||||
|
discord: "YOUR_DISCORD_BOT_TOKEN"
|
||||||
|
|
||||||
|
# Logging Settings
|
||||||
|
logging:
|
||||||
|
level: "INFO" # Options: DEBUG, INFO, WARNING, ERROR
|
||||||
|
file: "data/scraper.log"
|
||||||
199
config/sites.yml
Normal file
199
config/sites.yml
Normal file
|
|
@ -0,0 +1,199 @@
|
||||||
|
tokens:
|
||||||
|
- name: "Bitcoin"
|
||||||
|
url: "https://bitcoin.org"
|
||||||
|
|
||||||
|
- name: "Ethereum"
|
||||||
|
url: "https://ethereum.org"
|
||||||
|
|
||||||
|
- name: "Tether"
|
||||||
|
url: "https://tether.to"
|
||||||
|
|
||||||
|
- name: "Binance Coin"
|
||||||
|
url: "https://www.binance.com"
|
||||||
|
|
||||||
|
- name: "Cardano"
|
||||||
|
url: "https://cardano.org"
|
||||||
|
|
||||||
|
- name: "Solana"
|
||||||
|
url: "https://solana.com"
|
||||||
|
|
||||||
|
- name: "XRP"
|
||||||
|
url: "https://ripple.com/xrp"
|
||||||
|
|
||||||
|
- name: "Polkadot"
|
||||||
|
url: "https://polkadot.network"
|
||||||
|
|
||||||
|
- name: "Dogecoin"
|
||||||
|
url: "https://dogecoin.com"
|
||||||
|
|
||||||
|
- name: "USD Coin"
|
||||||
|
url: "https://www.centre.io/usdc"
|
||||||
|
|
||||||
|
- name: "Uniswap"
|
||||||
|
url: "https://uniswap.org"
|
||||||
|
|
||||||
|
- name: "Litecoin"
|
||||||
|
url: "https://litecoin.org"
|
||||||
|
|
||||||
|
- name: "Chainlink"
|
||||||
|
url: "https://chain.link"
|
||||||
|
|
||||||
|
- name: "Bitcoin Cash"
|
||||||
|
url: "https://bitcoincash.org"
|
||||||
|
|
||||||
|
- name: "Stellar"
|
||||||
|
url: "https://www.stellar.org"
|
||||||
|
|
||||||
|
- name: "VeChain"
|
||||||
|
url: "https://www.vechain.org"
|
||||||
|
|
||||||
|
- name: "Filecoin"
|
||||||
|
url: "https://filecoin.io"
|
||||||
|
|
||||||
|
- name: "TRON"
|
||||||
|
url: "https://tron.network"
|
||||||
|
|
||||||
|
- name: "Wrapped Bitcoin"
|
||||||
|
url: "https://wbtc.network"
|
||||||
|
|
||||||
|
- name: "Ethereum Classic"
|
||||||
|
url: "https://ethereumclassic.org"
|
||||||
|
|
||||||
|
- name: "Theta"
|
||||||
|
url: "https://www.thetatoken.org"
|
||||||
|
|
||||||
|
- name: "Monero"
|
||||||
|
url: "https://www.getmonero.org"
|
||||||
|
|
||||||
|
- name: "EOS"
|
||||||
|
url: "https://eos.io"
|
||||||
|
|
||||||
|
- name: "PancakeSwap"
|
||||||
|
url: "https://pancakeswap.finance"
|
||||||
|
|
||||||
|
- name: "Aave"
|
||||||
|
url: "https://aave.com"
|
||||||
|
|
||||||
|
- name: "Cosmos"
|
||||||
|
url: "https://cosmos.network"
|
||||||
|
|
||||||
|
- name: "Algorand"
|
||||||
|
url: "https://www.algorand.co"
|
||||||
|
|
||||||
|
- name: "Kusama"
|
||||||
|
url: "https://kusama.network"
|
||||||
|
|
||||||
|
- name: "Tezos"
|
||||||
|
url: "https://tezos.com"
|
||||||
|
|
||||||
|
- name: "Avalanche"
|
||||||
|
url: "https://avax.network"
|
||||||
|
|
||||||
|
- name: "NEO"
|
||||||
|
url: "https://neo.org"
|
||||||
|
|
||||||
|
- name: "Dai"
|
||||||
|
url: "https://makerdao.com"
|
||||||
|
|
||||||
|
- name: "Elrond"
|
||||||
|
url: "https://elrond.com"
|
||||||
|
|
||||||
|
- name: "SushiSwap"
|
||||||
|
url: "https://sushi.com"
|
||||||
|
|
||||||
|
- name: "Zcash"
|
||||||
|
url: "https://z.cash"
|
||||||
|
|
||||||
|
- name: "Dash"
|
||||||
|
url: "https://www.dash.org"
|
||||||
|
|
||||||
|
- name: "Compound"
|
||||||
|
url: "https://compound.finance"
|
||||||
|
|
||||||
|
- name: "Maker"
|
||||||
|
url: "https://makerdao.com"
|
||||||
|
|
||||||
|
- name: "Synthetix"
|
||||||
|
url: "https://synthetix.io"
|
||||||
|
|
||||||
|
- name: "Huobi Token"
|
||||||
|
url: "https://www.huobi.com"
|
||||||
|
|
||||||
|
- name: "BitTorrent"
|
||||||
|
url: "https://www.bt.io"
|
||||||
|
|
||||||
|
- name: "Chiliz"
|
||||||
|
url: "https://www.chiliz.com"
|
||||||
|
|
||||||
|
- name: "Decentraland"
|
||||||
|
url: "https://decentraland.org"
|
||||||
|
|
||||||
|
- name: "Zilliqa"
|
||||||
|
url: "https://www.zilliqa.com"
|
||||||
|
|
||||||
|
- name: "NEM"
|
||||||
|
url: "https://nem.io"
|
||||||
|
|
||||||
|
- name: "Celsius"
|
||||||
|
url: "https://celsius.network"
|
||||||
|
|
||||||
|
- name: "Holo"
|
||||||
|
url: "https://holochain.org"
|
||||||
|
|
||||||
|
- name: "Qtum"
|
||||||
|
url: "https://qtum.org"
|
||||||
|
|
||||||
|
- name: "Ontology"
|
||||||
|
url: "https://ont.io"
|
||||||
|
|
||||||
|
- name: "ICON"
|
||||||
|
url: "https://icon.foundation"
|
||||||
|
|
||||||
|
- name: "0x"
|
||||||
|
url: "https://0x.org"
|
||||||
|
|
||||||
|
- name: "Basic Attention Token"
|
||||||
|
url: "https://basicattentiontoken.org"
|
||||||
|
|
||||||
|
- name: "Siacoin"
|
||||||
|
url: "https://sia.tech"
|
||||||
|
|
||||||
|
- name: "Bitcoin SV"
|
||||||
|
url: "https://bitcoinsv.com"
|
||||||
|
|
||||||
|
- name: "CoinMarketCap"
|
||||||
|
url: "https://coinmarketcap.com"
|
||||||
|
|
||||||
|
- name: "Binance"
|
||||||
|
url: "https://www.binance.com"
|
||||||
|
|
||||||
|
- name: "KuCoin"
|
||||||
|
url: "https://www.kucoin.com"
|
||||||
|
|
||||||
|
- name: "OKX"
|
||||||
|
url: "https://www.okx.com"
|
||||||
|
|
||||||
|
- name: "Bitfinex"
|
||||||
|
url: "https://www.bitfinex.com"
|
||||||
|
|
||||||
|
- name: "Bittrex"
|
||||||
|
url: "https://global.bittrex.com"
|
||||||
|
|
||||||
|
- name: "Polkadot"
|
||||||
|
url: "https://polkadot.network"
|
||||||
|
|
||||||
|
- name: "Chainlink"
|
||||||
|
url: "https://chain.link"
|
||||||
|
|
||||||
|
- name: "Stellar"
|
||||||
|
url: "https://www.stellar.org"
|
||||||
|
|
||||||
|
- name: "USD Coin"
|
||||||
|
url: "https://www.centre.io/usdc"
|
||||||
|
|
||||||
|
- name: "Wrapped Bitcoin"
|
||||||
|
url: "https://wbtc.network"
|
||||||
|
|
||||||
|
nfts:
|
||||||
|
- name: "CoinMarketCap Upcoming NFTs"
|
||||||
|
url: "https://coinmarketcap.com/nft/upcoming/"
|
||||||
BIN
data/data.db
Normal file
BIN
data/data.db
Normal file
Binary file not shown.
BIN
data/logs.db
Normal file
BIN
data/logs.db
Normal file
Binary file not shown.
8
data/pytorch_dataset/0x_org.json
Normal file
8
data/pytorch_dataset/0x_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Developers\u00e2\u0080\u0099 one-stop shop to enable faster crypto trading, better prices, and superior UX. Get started now at 0x.org.",
|
||||||
|
"symbol": "\u00c2",
|
||||||
|
"price": "USD",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/aave_com.json
Normal file
8
data/pytorch_dataset/aave_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Aave is an Open Source Protocol to create Non-Custodial Liquidity Markets to earn interest on supplying and borrowing assets with a variable interest rate. The protocol is designed for easy integration into your products and services.",
|
||||||
|
"symbol": "GHO",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/avax_network.json
Normal file
8
data/pytorch_dataset/avax_network.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Avalanche is a smart contracts platform that scales infinitely and regularly finalizes transactions in less than one second. Build anything you want, any way you want, on the eco-friendly blockchain designed for Web3 developers.",
|
||||||
|
"symbol": "DAO",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/basicattentiontoken_org.json
Normal file
8
data/pytorch_dataset/basicattentiontoken_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "A new token to value user attention on the Internet.",
|
||||||
|
"symbol": "BAT",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/bitcoin_org.json
Normal file
8
data/pytorch_dataset/bitcoin_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Bitcoin is an innovative payment network and a new kind of money. Find all you need to know and get started with Bitcoin on bitcoin.org.",
|
||||||
|
"symbol": "P2P",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/bitcoincash_org.json
Normal file
8
data/pytorch_dataset/bitcoincash_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Bitcoin Cash brings sound money to the world. Merchants and users are empowered with low fees and reliable confirmations. The future shines brightly with unrestricted growth, global adoption, permissionless innovation, and decentralized development.",
|
||||||
|
"symbol": "BR",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/bitcoinsv_com.json
Normal file
8
data/pytorch_dataset/bitcoinsv_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Bitcoin SV is Fast, Scalable, Environmentally-efficient and Regulation-friendly. It is Bitcoin exactly as envisioned in Satoshi Nakamoto\u00e2\u0080\u0099s Bitcoin White Paper.",
|
||||||
|
"symbol": "SV",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/cardano_org.json
Normal file
8
data/pytorch_dataset/cardano_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "An open platform designed to empower billions without economic identity by offering decentralized applications for managing identity, value, and governance.",
|
||||||
|
"symbol": "A",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/celsius_network.json
Normal file
8
data/pytorch_dataset/celsius_network.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "N/A",
|
||||||
|
"symbol": "US",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/chain_link.json
Normal file
8
data/pytorch_dataset/chain_link.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Major financial institutions and top DeFi protocols use Chainlink to power next-generation applications for banking, asset management, and other major sectors.",
|
||||||
|
"symbol": "VRF",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/coinmarketcap_com.json
Normal file
8
data/pytorch_dataset/coinmarketcap_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Top cryptocurrency prices and charts, listed by market capitalization. Free access to current and historic data for Bitcoin and thousands of altcoins.",
|
||||||
|
"symbol": "NFT",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/coinmarketcap_com_nft_upcoming.json
Normal file
8
data/pytorch_dataset/coinmarketcap_com_nft_upcoming.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Discover the NFT collections that will soon be listed for sale, including the day and time of their listing and the blockchain they will be hosted on.",
|
||||||
|
"symbol": "NFT",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/compound_finance.json
Normal file
8
data/pytorch_dataset/compound_finance.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Compound is an algorithmic, autonomous interest rate protocol built for developers, to unlock a universe of open financial applications.",
|
||||||
|
"symbol": "N/A",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/cosmos_network.json
Normal file
8
data/pytorch_dataset/cosmos_network.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Cosmos is an ever-expanding ecosystem of interoperable and sovereign blockchain apps and services, built for a decentralized future.",
|
||||||
|
"symbol": "N/A",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/decentraland_org.json
Normal file
8
data/pytorch_dataset/decentraland_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Decentraland is a social virtual world where you can connect, explore, and create.\n\nMeet new friends, join events, and make memories\u2014no matter where you are. Whether exploring the open, community-built landscape, partying on the dancefloor, or watching a binary sunset on the beach, Decentraland is where people from everywhere come together.",
|
||||||
|
"symbol": "NAME",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/dogecoin_com.json
Normal file
8
data/pytorch_dataset/dogecoin_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "An open-source peer-to-peer digital currency, favoured by Shiba Inus worldwide",
|
||||||
|
"symbol": "FAQ",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/elrond_com.json
Normal file
8
data/pytorch_dataset/elrond_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "MultiversX is a distributed blockchain network for next-gen applications. Decentralized via 3000+ nodes, scalable through sharding, fast, secure & green.",
|
||||||
|
"symbol": "X",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/eos_io.json
Normal file
8
data/pytorch_dataset/eos_io.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "EOSIO is an open-source blockchain platform that helps developers, investors, and businesses build with confidence.",
|
||||||
|
"symbol": "EOSIO",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/ethereum_org.json
Normal file
8
data/pytorch_dataset/ethereum_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Ethereum is a global, decentralized platform for money and new kinds of applications. On Ethereum, you can write code that controls money, and build applications accessible anywhere in the world.",
|
||||||
|
"symbol": "ETH",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/ethereumclassic_org.json
Normal file
8
data/pytorch_dataset/ethereumclassic_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "A decentralized computing platform that runs smart contracts: applications that run exactly as programmed without downtime, censorship or third party interference",
|
||||||
|
"symbol": "ETC",
|
||||||
|
"price": "USD",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/filecoin_io.json
Normal file
8
data/pytorch_dataset/filecoin_io.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Filecoin is making the web more secure and efficient with a decentralized data storage marketplace, protocol, and cryptocurrency.",
|
||||||
|
"symbol": "A",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/global_bittrex_com.json
Normal file
8
data/pytorch_dataset/global_bittrex_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Bittrex",
|
||||||
|
"symbol": "N/A",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/holochain_org.json
Normal file
8
data/pytorch_dataset/holochain_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Holochain delivers beyond the promises of blockchain by providing a lightweight, secure and versatile framework for everyday distributed apps.",
|
||||||
|
"symbol": "P2P",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/icon_foundation.json
Normal file
8
data/pytorch_dataset/icon_foundation.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "The ICON Foundation is a non-profit organization supporting the open development of bridging infrastructure to connect all blockchains.",
|
||||||
|
"symbol": "ICON",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/kusama_network.json
Normal file
8
data/pytorch_dataset/kusama_network.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Kusama is a scalable multi-chain network for radical innovation and early stage Polkadot deployments. Expect Chaos. No promises.",
|
||||||
|
"symbol": "KSM",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/litecoin_org.json
Normal file
8
data/pytorch_dataset/litecoin_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Litecoin is a cryptocurrency that enables instant payments to anyone in the world and that can be efficiently mined with consumer-grade hardware.",
|
||||||
|
"symbol": "P2P",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/makerdao_com.json
Normal file
8
data/pytorch_dataset/makerdao_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "MakerDAO enables the generation of Dai, the world\u00e2\u0080\u0099s first unbiased currency and leading decentralized stablecoin.",
|
||||||
|
"symbol": "N/A",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/nem_io.json
Normal file
8
data/pytorch_dataset/nem_io.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Technical Documentation for Developers and Average Users.",
|
||||||
|
"symbol": "NEM",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/neo_org.json
Normal file
8
data/pytorch_dataset/neo_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Neo is an open-source, community driven platform that is leveraging the intrinsic advantages of blockchain technology to realize the optimized digital world of the future.",
|
||||||
|
"symbol": "NEO",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/ont_io.json
Normal file
8
data/pytorch_dataset/ont_io.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Bringing trust, privacy, and security to Web3 through decentralized identity and data solutions.",
|
||||||
|
"symbol": "10M",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/pancakeswap_finance.json
Normal file
8
data/pytorch_dataset/pancakeswap_finance.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Trade, earn, and own crypto on the all-in-one multichain DEX",
|
||||||
|
"symbol": "N/A",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/polkadot_network.json
Normal file
8
data/pytorch_dataset/polkadot_network.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Defy the possibilities with Polkadot\u2019s interoperable multi-chain network. Explore the future of true decentralization.",
|
||||||
|
"symbol": "A",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/qtum_org.json
Normal file
8
data/pytorch_dataset/qtum_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Qtum",
|
||||||
|
"symbol": "QTUM",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/ripple_com_xrp.json
Normal file
8
data/pytorch_dataset/ripple_com_xrp.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "XRP enables fast and reliable options for businesses to drive blockchain-based applications and global payments. Discover the power of the digital asset XRP.",
|
||||||
|
"symbol": "XRP",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/sia_tech.json
Normal file
8
data/pytorch_dataset/sia_tech.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Cryptography has unleashed the latent power of the Internet by enabling interactions between mutually-distrusting parties. Sia [sigh-uh] harnesses this power to create a trustless cloud storage marketplace, allowing buyers and sellers to transact directly. No intermediaries, no borders, no vendor lock-in, no spying, no throttling, no walled gardens; it's a return to the Internet we once knew. The future is making a comeback.",
|
||||||
|
"symbol": "TB",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/solana_com.json
Normal file
8
data/pytorch_dataset/solana_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Fast. Decentralized. Scalable. Energy efficient. Solana can power thousands of transactions per second.",
|
||||||
|
"symbol": "U.S.",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/sushi_com.json
Normal file
8
data/pytorch_dataset/sushi_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Trade crypto effortlessly with SushiSwap, supporting over 30 chains and featuring a powerful aggregator for the best rates across DeFi.",
|
||||||
|
"symbol": "NEW",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/synthetix_io.json
Normal file
8
data/pytorch_dataset/synthetix_io.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Synthetix provides liquidity for permissionless derivatives like perpetual futures, options, parimutuel markets, and more across EVM chains. Powering the next generation of permissionless protocols.",
|
||||||
|
"symbol": "OP",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/tether_to.json
Normal file
8
data/pytorch_dataset/tether_to.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Tether \u00e2\u0080\u0093 Official Home of Tether",
|
||||||
|
"symbol": "N/A",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/tezos_com.json
Normal file
8
data/pytorch_dataset/tezos_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Tezos is an open-source platform for assets and applications backed by a global community of validators, researchers, and builders.",
|
||||||
|
"symbol": "XTZ",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/tron_network.json
Normal file
8
data/pytorch_dataset/tron_network.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "TRON is an ambitious project dedicated to building the infrastructure for a truly decentralized Internet. The TRON Protocol, one of the largest blockchain based operating systems in the world, offers scalable, high-availability and high-throughput support that underlies all the decentralized applications in the TRON ecosystem.",
|
||||||
|
"symbol": "TRON",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/uniswap_org.json
Normal file
8
data/pytorch_dataset/uniswap_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Swap or provide liquidity on the Uniswap Protocol",
|
||||||
|
"symbol": "N/A",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/wbtc_network.json
Normal file
8
data/pytorch_dataset/wbtc_network.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Wrapped Bitcoin ( WBTC ) an ERC20 token backed 1:1 with Bitcoin",
|
||||||
|
"symbol": "WBTC",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_algorand_co.json
Normal file
8
data/pytorch_dataset/www_algorand_co.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Welcome to Algorand! Discover resources to learn about the technology, to get started building dApps, to connect with the ecosystem and community, and more.",
|
||||||
|
"symbol": "SDK",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_binance_com.json
Normal file
8
data/pytorch_dataset/www_binance_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Binance, the largest crypto exchange by trading volume, serves 250M+ users in 180+ countries. With 350+ listed altcoins, it is the world's leading crypto exchange.",
|
||||||
|
"symbol": "USERS",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_bitfinex_com.json
Normal file
8
data/pytorch_dataset/www_bitfinex_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Bitfinex is the longest-running and most liquid major cryptocurrency exchange. Founded in 2012, it has become the go-to platform for traders & institutional investors.",
|
||||||
|
"symbol": "UNUS",
|
||||||
|
"price": "USD",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_bt_io.json
Normal file
8
data/pytorch_dataset/www_bt_io.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "An Era of Connecting All Chains.",
|
||||||
|
"symbol": "N/A",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_centre_io_usdc.json
Normal file
8
data/pytorch_dataset/www_centre_io_usdc.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Get access to USDC, a digital dollar that can be redeemed 1:1 for US dollars. Use USDC for crypto trading, cross border payments, global dollar savings accounts, remittances and more. USDC is issued by Circle.",
|
||||||
|
"symbol": "USDC",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_chiliz_com.json
Normal file
8
data/pytorch_dataset/www_chiliz_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Chiliz Chain is the world's only sports focused blockchain. Web3 partner to 70+ elite sports teams. Stop scrolling. Start building.",
|
||||||
|
"symbol": "DEX",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_dash_org.json
Normal file
8
data/pytorch_dataset/www_dash_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Dash gives you the freedom to move your money any way you want. Dash moves money anywhere, to anyone, instantly, for less than a cent.",
|
||||||
|
"symbol": "\u00ce\u0095\u00ce",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_getmonero_org.json
Normal file
8
data/pytorch_dataset/www_getmonero_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Monero, a digital currency that is secure, private, and untraceable",
|
||||||
|
"symbol": "FAQ",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_huobi_com.json
Normal file
8
data/pytorch_dataset/www_huobi_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Buy BTC, ETH, HT, and more on HTX, a leading crypto exchange. HTX is one of the world\u00e2\u0080\u0099s biggest Bitcoin exchanges and altcoin crypto exchanges.",
|
||||||
|
"symbol": "HTX",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_kucoin_com.json
Normal file
8
data/pytorch_dataset/www_kucoin_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "KuCoin is a secure cryptocurrency exchange that allows you to buy, sell, and trade Bitcoin, Ethereum, and 700+ altcoins. The leader in driving Web 3.0 adoption.",
|
||||||
|
"symbol": "APK",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_okx_com.json
Normal file
8
data/pytorch_dataset/www_okx_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Buy BTC, ETH, XRP and more on OKX, a leading crypto exchange \u2013 explore Web3, invest in DeFi and NFTs. Register now and experience the future of finance.",
|
||||||
|
"symbol": "OKX",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_stellar_org.json
Normal file
8
data/pytorch_dataset/www_stellar_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Stellar Network: Discover an open-source blockchain platform equipped for DeFi with a secure smart contract platform, fast and affordable payments and enterprise-grade asset tokenization. Join our vibrant ecosystem of developers, entrepreneurs, and enterprises to pioneer the future of blockchain technology",
|
||||||
|
"symbol": "81K+",
|
||||||
|
"price": "$",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_thetatoken_org.json
Normal file
8
data/pytorch_dataset/www_thetatoken_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Theta Network",
|
||||||
|
"symbol": "N/A",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_vechain_org.json
Normal file
8
data/pytorch_dataset/www_vechain_org.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Discover VeChainThor blockchain: Sustainable, fast, scalable, secure, and EVM-compatible. Join us in leading the future of Web3.",
|
||||||
|
"symbol": "UFC",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/www_zilliqa_com.json
Normal file
8
data/pytorch_dataset/www_zilliqa_com.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Zilliqa",
|
||||||
|
"symbol": "A",
|
||||||
|
"price": "N/A",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
8
data/pytorch_dataset/z_cash.json
Normal file
8
data/pytorch_dataset/z_cash.json
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "The first cryptocurrency to develop zero-knowledge encryption for private peer-to-peer payments. Use Zcash Learn Zcash Current price (USD) $ 0 Outstanding\u2026",
|
||||||
|
"symbol": "I",
|
||||||
|
"price": "USD",
|
||||||
|
"market_cap": "N/A"
|
||||||
|
}
|
||||||
|
]
|
||||||
3
readme.md
Normal file
3
readme.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Crypto_Scraper
|
||||||
|
|
||||||
|
A crypto scraper bot that logs crypto asset prices
|
||||||
0
requirements.txt
Normal file
0
requirements.txt
Normal file
0
src/databases/__init__.py
Normal file
0
src/databases/__init__.py
Normal file
BIN
src/databases/__pycache__/__init__.cpython-313.pyc
Normal file
BIN
src/databases/__pycache__/__init__.cpython-313.pyc
Normal file
Binary file not shown.
BIN
src/databases/__pycache__/data.cpython-313.pyc
Normal file
BIN
src/databases/__pycache__/data.cpython-313.pyc
Normal file
Binary file not shown.
BIN
src/databases/__pycache__/logs.cpython-313.pyc
Normal file
BIN
src/databases/__pycache__/logs.cpython-313.pyc
Normal file
Binary file not shown.
148
src/databases/data.py
Normal file
148
src/databases/data.py
Normal file
|
|
@ -0,0 +1,148 @@
|
||||||
|
import os
|
||||||
|
import sqlite3 # SQLite module
|
||||||
|
import csv
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
class Datadb:
|
||||||
|
"""
|
||||||
|
SQLite database handler for storing airdrop information, tokens, and NFTs.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, db_name="data.db"):
|
||||||
|
"""Initialize the database connection and ensure tables exist."""
|
||||||
|
db_folder = "data" # Ensure the 'data' directory exists
|
||||||
|
os.makedirs(db_folder, exist_ok=True)
|
||||||
|
self.db_name = os.path.join(db_folder, db_name)
|
||||||
|
self.create_tables() # ✅ Ensure tables are created upon initialization
|
||||||
|
|
||||||
|
def execute_query(self, query, params=(), commit=False, fetch=False):
|
||||||
|
"""Execute a query safely with optional commit and fetch."""
|
||||||
|
with sqlite3.connect(self.db_name) as conn:
|
||||||
|
cursor = conn.cursor()
|
||||||
|
cursor.execute(query, params)
|
||||||
|
if commit:
|
||||||
|
conn.commit()
|
||||||
|
if fetch:
|
||||||
|
return cursor.fetchall()
|
||||||
|
|
||||||
|
def create_tables(self):
|
||||||
|
"""Create the necessary tables if they do not exist."""
|
||||||
|
# ✅ Create 'airdrops' table
|
||||||
|
self.execute_query("""
|
||||||
|
CREATE TABLE IF NOT EXISTS airdrops (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
source TEXT NOT NULL,
|
||||||
|
name TEXT UNIQUE NOT NULL,
|
||||||
|
claim_link TEXT,
|
||||||
|
mint_date TEXT,
|
||||||
|
mint_price TEXT,
|
||||||
|
discord TEXT,
|
||||||
|
twitter TEXT,
|
||||||
|
website TEXT,
|
||||||
|
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||||
|
ai_confidence REAL
|
||||||
|
)
|
||||||
|
""", commit=True)
|
||||||
|
|
||||||
|
# ✅ Create 'tokens' table
|
||||||
|
self.execute_query("""
|
||||||
|
CREATE TABLE IF NOT EXISTS tokens (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
name TEXT UNIQUE NOT NULL,
|
||||||
|
symbol TEXT UNIQUE NOT NULL,
|
||||||
|
contract_address TEXT UNIQUE,
|
||||||
|
market_cap REAL,
|
||||||
|
token_price REAL,
|
||||||
|
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
|
||||||
|
)
|
||||||
|
""", commit=True)
|
||||||
|
|
||||||
|
# ✅ Create 'nfts' table
|
||||||
|
self.execute_query("""
|
||||||
|
CREATE TABLE IF NOT EXISTS nfts (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
name TEXT UNIQUE NOT NULL,
|
||||||
|
collection TEXT NOT NULL,
|
||||||
|
mint_price TEXT,
|
||||||
|
mint_date TEXT,
|
||||||
|
blockchain TEXT,
|
||||||
|
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
|
||||||
|
)
|
||||||
|
""", commit=True)
|
||||||
|
|
||||||
|
print("✅ All required tables created (if they didn't exist).")
|
||||||
|
|
||||||
|
def insert_airdrop(self, source, name, claim_link, mint_date, mint_price, discord, twitter, website, ai_confidence):
|
||||||
|
"""Insert a new airdrop entry into the database only if it doesn't already exist."""
|
||||||
|
existing_entry = self.execute_query(
|
||||||
|
"SELECT id FROM airdrops WHERE name = ? AND source = ?",
|
||||||
|
(name, source),
|
||||||
|
fetch=True
|
||||||
|
)
|
||||||
|
|
||||||
|
if existing_entry:
|
||||||
|
print(f"⚠️ Airdrop '{name}' already exists. Skipping insertion.")
|
||||||
|
else:
|
||||||
|
self.execute_query("""
|
||||||
|
INSERT INTO airdrops (source, name, claim_link, mint_date, mint_price, discord, twitter, website, ai_confidence)
|
||||||
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||||
|
""", (source, name, claim_link, mint_date, mint_price, discord, twitter, website, ai_confidence), commit=True)
|
||||||
|
print(f"✅ Airdrop '{name}' inserted successfully.")
|
||||||
|
|
||||||
|
def entry_exists(self, table, column, value):
|
||||||
|
"""Check if a specific entry exists in a given table and column."""
|
||||||
|
query = f"SELECT COUNT(*) FROM {table} WHERE {column} = ?"
|
||||||
|
result = self.execute_query(query, (value,), fetch=True)
|
||||||
|
return result[0][0] > 0 # Returns True if entry exists, False otherwise
|
||||||
|
|
||||||
|
def export_to_csv(self, table_name, filename):
|
||||||
|
"""Export all table data to a CSV file."""
|
||||||
|
rows = self.execute_query(f"SELECT * FROM {table_name}", fetch=True)
|
||||||
|
|
||||||
|
if not rows:
|
||||||
|
print(f"⚠️ No data found in {table_name}. Skipping CSV export.")
|
||||||
|
return
|
||||||
|
|
||||||
|
headers = [description[0] for description in self.execute_query(f"PRAGMA table_info({table_name})", fetch=True)]
|
||||||
|
|
||||||
|
with open(filename, mode="w", newline="", encoding="utf-8") as file:
|
||||||
|
writer = csv.writer(file)
|
||||||
|
writer.writerow(headers)
|
||||||
|
writer.writerows(rows)
|
||||||
|
|
||||||
|
print(f"✅ {table_name} data exported to {filename}")
|
||||||
|
|
||||||
|
def export_to_json(self, table_name, filename):
|
||||||
|
"""Export all table data to a JSON file."""
|
||||||
|
rows = self.execute_query(f"SELECT * FROM {table_name}", fetch=True)
|
||||||
|
|
||||||
|
if not rows:
|
||||||
|
print(f"⚠️ No data found in {table_name}. Skipping JSON export.")
|
||||||
|
return
|
||||||
|
|
||||||
|
headers = [description[0] for description in self.execute_query(f"PRAGMA table_info({table_name})", fetch=True)]
|
||||||
|
|
||||||
|
data = [dict(zip(headers, row)) for row in rows]
|
||||||
|
|
||||||
|
with open(filename, mode="w", encoding="utf-8") as file:
|
||||||
|
json.dump(data, file, indent=4)
|
||||||
|
|
||||||
|
print(f"✅ {table_name} data exported to {filename}")
|
||||||
|
|
||||||
|
# ✅ Initialize database when the script is run directly
|
||||||
|
if __name__ == "__main__":
|
||||||
|
db = Datadb()
|
||||||
|
db.create_tables()
|
||||||
|
|
||||||
|
print("\n🔍 Checking Stored Airdrops:")
|
||||||
|
db.export_to_csv("airdrops", "airdrops.csv")
|
||||||
|
db.export_to_json("airdrops", "airdrops.json")
|
||||||
|
|
||||||
|
print("\n🔍 Checking Stored Tokens:")
|
||||||
|
db.export_to_csv("tokens", "tokens.csv")
|
||||||
|
db.export_to_json("tokens", "tokens.json")
|
||||||
|
|
||||||
|
print("\n🔍 Checking Stored NFTs:")
|
||||||
|
db.export_to_csv("nfts", "nfts.csv")
|
||||||
|
db.export_to_json("nfts", "nfts.json")
|
||||||
104
src/databases/logs.py
Normal file
104
src/databases/logs.py
Normal file
|
|
@ -0,0 +1,104 @@
|
||||||
|
import os
|
||||||
|
import sqlite3 # SQLite module
|
||||||
|
import datetime
|
||||||
|
from .data import Datadb # Corrected import
|
||||||
|
|
||||||
|
class Logsdb:
|
||||||
|
"""
|
||||||
|
Database to store scraper logs.
|
||||||
|
"""
|
||||||
|
def __init__(self, db_name="logs.db"): # Updated db name
|
||||||
|
db_folder = "data" # Set the database folder
|
||||||
|
os.makedirs(db_folder, exist_ok=True)
|
||||||
|
self.db_name = os.path.join(db_folder, db_name)
|
||||||
|
self.create_table()
|
||||||
|
|
||||||
|
def log(self, message):
|
||||||
|
"""Logs a message into the database with the correct timestamp."""
|
||||||
|
local_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
print(f"{local_time} {message}") # ✅ Print log for debugging
|
||||||
|
with sqlite3.connect(self.db_name) as conn:
|
||||||
|
cursor = conn.cursor()
|
||||||
|
cursor.execute("INSERT INTO logs (timestamp, message) VALUES (?, ?)", (local_time, message))
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
def log_message(self, message):
|
||||||
|
"""
|
||||||
|
Log a message into the database with the correct local timestamp.
|
||||||
|
"""
|
||||||
|
local_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") # ✅ Get local system time
|
||||||
|
print(f"{local_time} {message}") # ✅ Debug output
|
||||||
|
self.execute_query("INSERT INTO logs (timestamp, message) VALUES (?, ?)", (local_time, message), commit=True)
|
||||||
|
|
||||||
|
def execute_query(self, query, params=(), commit=False, fetch=False):
|
||||||
|
with sqlite3.connect(self.db_name) as conn:
|
||||||
|
cursor = conn.cursor()
|
||||||
|
cursor.execute(query, params)
|
||||||
|
if commit:
|
||||||
|
conn.commit()
|
||||||
|
if fetch:
|
||||||
|
return cursor.fetchall()
|
||||||
|
|
||||||
|
def create_table(self):
|
||||||
|
"""
|
||||||
|
Create the logs table if it does not exist.
|
||||||
|
"""
|
||||||
|
self.execute_query("""
|
||||||
|
CREATE TABLE IF NOT EXISTS logs (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
timestamp TEXT NOT NULL,
|
||||||
|
message TEXT NOT NULL
|
||||||
|
)
|
||||||
|
""", commit=True)
|
||||||
|
|
||||||
|
# ✅ Initialize databases **AFTER ensuring the table exists**
|
||||||
|
airdrop_db = Datadb() # Corrected class name
|
||||||
|
log_db = Logsdb()
|
||||||
|
log_db.log_message("🚀 [INFO] Scraper logs database initialized.")
|
||||||
|
|
||||||
|
def scrape_site(url, keywords=["airdrop", "claim", "mint"]):
|
||||||
|
"""
|
||||||
|
Scrapes a given site and stores data in the database.
|
||||||
|
Logs AI Agent decisions and behavior as well.
|
||||||
|
"""
|
||||||
|
log_db.log_message(f"🌐 [INFO] Starting scrape for {url}")
|
||||||
|
try:
|
||||||
|
log_db.log_message(f"🤖 [AI] Pre-scanning website structure for {url}")
|
||||||
|
ai_decision = "Static Scraping Chosen"
|
||||||
|
log_db.log_message(f"🤖 [AI] Decision: {ai_decision}")
|
||||||
|
|
||||||
|
log_db.log_message(f"🔍 [AI] Validating extracted data from {url}")
|
||||||
|
validation_passed = True # Simulated result
|
||||||
|
|
||||||
|
if validation_passed:
|
||||||
|
log_db.log_message(f"✅ [AI] Data validation successful for {url}")
|
||||||
|
else:
|
||||||
|
log_db.log_message(f"⚠️ [AI] Data validation failed, triggering re-scrape for {url}")
|
||||||
|
scrape_site(url) # Recursive re-run
|
||||||
|
return
|
||||||
|
|
||||||
|
# Simulated scraping logic
|
||||||
|
extracted_data = [
|
||||||
|
{"name": "Example Airdrop", "claim_link": url, "mint_date": "2025-02-18", "mint_price": "Free",
|
||||||
|
"discord": "N/A", "twitter": "N/A", "website": url, "ai_confidence": 0.9}
|
||||||
|
]
|
||||||
|
|
||||||
|
log_db.log_message(f"📊 [AI] Extracted {len(extracted_data)} potential entries")
|
||||||
|
|
||||||
|
for data in extracted_data:
|
||||||
|
airdrop_db.insert_airdrop(
|
||||||
|
source=url, name=data["name"], claim_link=data["claim_link"], mint_date=data["mint_date"],
|
||||||
|
mint_price=data["mint_price"], discord=data["discord"], twitter=data["twitter"],
|
||||||
|
website=data["website"], ai_confidence=data["ai_confidence"]
|
||||||
|
)
|
||||||
|
log_db.log_message(f"✅ [SUCCESS] Inserted airdrop: {data['name']}")
|
||||||
|
except Exception as e:
|
||||||
|
log_db.log_message(f"❌ [ERROR] Failed to scrape {url}: {e}")
|
||||||
|
log_db.log_message(f"🛠️ [AI] Manual intervention required for {url}")
|
||||||
|
finally:
|
||||||
|
log_db.log_message(f"🏁 [INFO] Scraping complete for {url}")
|
||||||
|
|
||||||
|
# ✅ Start logging **AFTER ensuring everything is set up**
|
||||||
|
log_db.log_message("🚀 [INFO] Scraping Airdrops...")
|
||||||
|
scrape_site("https://example.com/airdrop")
|
||||||
|
log_db.log_message("✅ [INFO] Scraping Done")
|
||||||
0
src/main.py
Normal file
0
src/main.py
Normal file
120
src/orchestrator.py
Normal file
120
src/orchestrator.py
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
import os
|
||||||
|
import sqlite3
|
||||||
|
import yaml
|
||||||
|
from databases.logs import Logsdb
|
||||||
|
from databases.data import Datadb
|
||||||
|
|
||||||
|
class Orchestrator:
|
||||||
|
"""Ensures databases and configs are initialized before the scraper runs."""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.data_db_path = "data/data.db"
|
||||||
|
self.logs_db_path = "data/logs.db"
|
||||||
|
self.config_path = "config/settings.yml"
|
||||||
|
self.sites_path = "config/sites.yml"
|
||||||
|
|
||||||
|
# Initialize logs database for logging
|
||||||
|
self.logs_db = Logsdb()
|
||||||
|
|
||||||
|
def check_and_create_databases(self):
|
||||||
|
"""Ensures that both data.db and logs.db exist."""
|
||||||
|
os.makedirs("data", exist_ok=True) # Ensure data folder exists
|
||||||
|
|
||||||
|
if not os.path.exists(self.data_db_path):
|
||||||
|
self.logs_db.log("⚠️ [WARNING] data.db not found. Creating new database...")
|
||||||
|
Datadb().initialize()
|
||||||
|
self.logs_db.log("✅ [INFO] data.db initialized successfully.")
|
||||||
|
|
||||||
|
if not os.path.exists(self.logs_db_path):
|
||||||
|
self.logs_db.log("⚠️ [WARNING] logs.db not found. Creating new database...")
|
||||||
|
Logsdb().initialize()
|
||||||
|
self.logs_db.log("✅ [INFO] logs.db initialized successfully.")
|
||||||
|
|
||||||
|
def check_database_tables(self):
|
||||||
|
"""Ensures required tables exist in the database."""
|
||||||
|
conn = sqlite3.connect(self.data_db_path)
|
||||||
|
cursor = conn.cursor()
|
||||||
|
required_tables = ["tokens", "nfts", "logs"]
|
||||||
|
|
||||||
|
for table in required_tables:
|
||||||
|
cursor.execute(f"SELECT name FROM sqlite_master WHERE type='table' AND name='{table}';")
|
||||||
|
if not cursor.fetchone():
|
||||||
|
self.logs_db.log(f"❌ [ERROR] Missing required table: {table} in data.db")
|
||||||
|
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def create_sample_config_files(self):
|
||||||
|
"""Creates sample settings.yml and sites.yml if they are missing."""
|
||||||
|
os.makedirs("config", exist_ok=True) # Ensure config folder exists
|
||||||
|
|
||||||
|
# Sample settings.yml
|
||||||
|
default_settings = {
|
||||||
|
"scraper": {
|
||||||
|
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
|
||||||
|
"request_timeout": 10,
|
||||||
|
"retry_attempts": 3
|
||||||
|
},
|
||||||
|
"database": {
|
||||||
|
"data_path": "data/data.db",
|
||||||
|
"logs_path": "data/logs.db"
|
||||||
|
},
|
||||||
|
"api_keys": {
|
||||||
|
"twitter": "YOUR_TWITTER_API_KEY",
|
||||||
|
"discord": "YOUR_DISCORD_BOT_TOKEN"
|
||||||
|
},
|
||||||
|
"logging": {
|
||||||
|
"level": "INFO",
|
||||||
|
"file": "data/scraper.log"
|
||||||
|
},
|
||||||
|
"debug": {
|
||||||
|
"save_html_js": True # Set to True for debugging, False for production
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if not os.path.exists(self.config_path):
|
||||||
|
with open(self.config_path, "w") as f:
|
||||||
|
yaml.dump(default_settings, f, default_flow_style=False)
|
||||||
|
self.logs_db.log("📝 [INFO] Created sample settings.yml")
|
||||||
|
|
||||||
|
# Sample sites.yml
|
||||||
|
default_sites = {
|
||||||
|
"airdrops": [
|
||||||
|
{"name": "Airdrops.io", "url": "https://airdrops.io/latest/"},
|
||||||
|
{"name": "CoinMarketCap Recently Added", "url": "https://coinmarketcap.com/new/"},
|
||||||
|
{"name": "CoinMarketCap Upcoming Tokens", "url": "https://coinmarketcap.com/upcoming/"},
|
||||||
|
{"name": "CoinMarketCap Upcoming NFTs", "url": "https://coinmarketcap.com/nft/upcoming/"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
if not os.path.exists(self.sites_path):
|
||||||
|
with open(self.sites_path, "w") as f:
|
||||||
|
yaml.dump(default_sites, f, default_flow_style=False)
|
||||||
|
self.logs_db.log("📝 [INFO] Created sample sites.yml")
|
||||||
|
|
||||||
|
def validate_config_files(self):
|
||||||
|
"""Ensures that settings.yml and sites.yml are properly formatted."""
|
||||||
|
for file in [self.config_path, self.sites_path]:
|
||||||
|
if not os.path.exists(file):
|
||||||
|
self.logs_db.log(f"❌ [ERROR] Missing required config file: {file}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open(file, "r") as f:
|
||||||
|
yaml.safe_load(f) # Attempt to parse YAML file
|
||||||
|
self.logs_db.log(f"✅ [INFO] Successfully loaded {file}")
|
||||||
|
except yaml.YAMLError as e:
|
||||||
|
self.logs_db.log(f"❌ [ERROR] Invalid YAML format in {file}: {e}")
|
||||||
|
|
||||||
|
def run_checks(self):
|
||||||
|
"""Runs all integrity checks before the scraper starts."""
|
||||||
|
self.logs_db.log("🚀 [INFO] Running startup integrity checks...")
|
||||||
|
self.check_and_create_databases()
|
||||||
|
self.check_database_tables()
|
||||||
|
self.create_sample_config_files()
|
||||||
|
self.validate_config_files()
|
||||||
|
self.logs_db.log("✅ [INFO] All checks completed successfully.")
|
||||||
|
|
||||||
|
# ✅ Run the orchestrator when script is executed
|
||||||
|
if __name__ == "__main__":
|
||||||
|
orchestrator = Orchestrator()
|
||||||
|
orchestrator.run_checks()
|
||||||
0
src/scraper/__init__.py
Normal file
0
src/scraper/__init__.py
Normal file
BIN
src/scraper/__pycache__/__init__.cpython-313.pyc
Normal file
BIN
src/scraper/__pycache__/__init__.cpython-313.pyc
Normal file
Binary file not shown.
BIN
src/scraper/__pycache__/fetcher.cpython-313.pyc
Normal file
BIN
src/scraper/__pycache__/fetcher.cpython-313.pyc
Normal file
Binary file not shown.
BIN
src/scraper/__pycache__/html.cpython-313.pyc
Normal file
BIN
src/scraper/__pycache__/html.cpython-313.pyc
Normal file
Binary file not shown.
BIN
src/scraper/__pycache__/js.cpython-313.pyc
Normal file
BIN
src/scraper/__pycache__/js.cpython-313.pyc
Normal file
Binary file not shown.
BIN
src/scraper/__pycache__/parser.cpython-313.pyc
Normal file
BIN
src/scraper/__pycache__/parser.cpython-313.pyc
Normal file
Binary file not shown.
0
src/scraper/analyser.py
Normal file
0
src/scraper/analyser.py
Normal file
0
src/scraper/base.py
Normal file
0
src/scraper/base.py
Normal file
0
src/scraper/discord.py
Normal file
0
src/scraper/discord.py
Normal file
56
src/scraper/fetcher.py
Normal file
56
src/scraper/fetcher.py
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
import yaml
|
||||||
|
from scraper.html import fetch_html
|
||||||
|
from scraper.js import fetch_js
|
||||||
|
from scraper.parser import parse_html
|
||||||
|
|
||||||
|
class Fetcher:
|
||||||
|
def __init__(self, sites_config="config/sites.yml"):
|
||||||
|
self.sites = self.load_yaml(sites_config)
|
||||||
|
|
||||||
|
def load_yaml(self, file_path):
|
||||||
|
"""Loads YAML and normalizes site names (lowercase, underscores)."""
|
||||||
|
with open(file_path, "r") as file:
|
||||||
|
data = yaml.safe_load(file)
|
||||||
|
|
||||||
|
# Convert names: "Airdrops.io" → "airdrops_io"
|
||||||
|
self.sites_dict = {
|
||||||
|
site["name"].lower().replace(" ", "_").replace(".", ""): site["url"]
|
||||||
|
for category in data.values() for site in category
|
||||||
|
}
|
||||||
|
|
||||||
|
print(f"Loaded sites: {self.sites_dict}") # Debugging line
|
||||||
|
return self.sites_dict
|
||||||
|
|
||||||
|
def fetch(self, site_name, debug=False):
|
||||||
|
"""Fetches data from a given site using a normalized name."""
|
||||||
|
site_name = site_name.lower().replace(" ", "_").replace(".", "") # Normalize input
|
||||||
|
url = self.sites.get(site_name)
|
||||||
|
|
||||||
|
if not url:
|
||||||
|
raise ValueError(f"Site '{site_name}' not found in sites.yml")
|
||||||
|
|
||||||
|
return fetch_js(url, debug) if "coinmarketcap" in url else fetch_html(url, debug)
|
||||||
|
|
||||||
|
def fetch_and_parse(self, site_name):
|
||||||
|
"""Fetch data from a live site and parse it immediately (production mode)."""
|
||||||
|
print(f"🚀 Fetching live data from: {site_name}")
|
||||||
|
|
||||||
|
# Normalize site name (convert to lowercase & replace spaces)
|
||||||
|
normalized_name = site_name.lower().replace(" ", "_").replace(".", "")
|
||||||
|
|
||||||
|
url = self.sites.get(normalized_name)
|
||||||
|
|
||||||
|
if not url:
|
||||||
|
raise ValueError(f"❌ Site '{site_name}' not found in sites.yml")
|
||||||
|
|
||||||
|
print(f"🔍 DEBUG: Fetching URL: {url}")
|
||||||
|
|
||||||
|
html_content = fetch_js(url) if "coinmarketcap" in url else fetch_html(url)
|
||||||
|
parsed_data = parse_html(html_content)
|
||||||
|
|
||||||
|
print(f"✅ Extracted Data: {parsed_data}")
|
||||||
|
return parsed_data
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
40
src/scraper/html.py
Normal file
40
src/scraper/html.py
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
import requests
|
||||||
|
import yaml
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Load settings
|
||||||
|
with open("config/settings.yml", "r") as file:
|
||||||
|
settings = yaml.safe_load(file)
|
||||||
|
HEADLESS_MODE_HTML = settings["debug"]["headless_mode"].get("html", True) # Default to True
|
||||||
|
|
||||||
|
def fetch_html(url, debug=False):
|
||||||
|
"""Fetches static HTML pages using requests (no Playwright needed yet)."""
|
||||||
|
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0"})
|
||||||
|
response.raise_for_status()
|
||||||
|
content = response.text
|
||||||
|
|
||||||
|
if debug:
|
||||||
|
save_debug_file(url, content, "html")
|
||||||
|
|
||||||
|
return content
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
def save_debug_file(site_name, content, file_type):
|
||||||
|
"""Saves fetched content for debugging, ensuring a clean filename."""
|
||||||
|
safe_name = (
|
||||||
|
site_name.replace("https://", "")
|
||||||
|
.replace("http://", "")
|
||||||
|
.replace("/", "_")
|
||||||
|
.replace(".", "_") # Normalize periods
|
||||||
|
.rstrip("_") # Remove trailing underscores
|
||||||
|
)
|
||||||
|
|
||||||
|
file_path = f"tests/{safe_name}.{file_type}"
|
||||||
|
|
||||||
|
with open(file_path, "w", encoding="utf-8") as f:
|
||||||
|
f.write(content)
|
||||||
|
|
||||||
|
print(f"✅ Debug file saved: {file_path}")
|
||||||
|
|
||||||
|
|
||||||
156
src/scraper/js.py
Normal file
156
src/scraper/js.py
Normal file
|
|
@ -0,0 +1,156 @@
|
||||||
|
import yaml
|
||||||
|
from playwright.sync_api import sync_playwright
|
||||||
|
import nltk
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
from nltk.tokenize import word_tokenize
|
||||||
|
nltk.download("punkt_tab")
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Load settings
|
||||||
|
with open("config/settings.yml", "r") as file:
|
||||||
|
settings = yaml.safe_load(file)
|
||||||
|
HEADLESS_MODE_JS = settings["debug"]["headless_mode"].get("js", True) # Default to True
|
||||||
|
|
||||||
|
def fetch_js(url, debug=False):
|
||||||
|
"""Fetches JavaScript-rendered pages and handles interactions."""
|
||||||
|
with sync_playwright() as p:
|
||||||
|
browser = p.chromium.launch(headless=HEADLESS_MODE_JS)
|
||||||
|
page = browser.new_page()
|
||||||
|
page.goto(url, wait_until="networkidle")
|
||||||
|
|
||||||
|
# Scroll & click 'Load More'
|
||||||
|
if needs_scrolling(page):
|
||||||
|
scroll_page(page)
|
||||||
|
if has_load_more_button(page):
|
||||||
|
click_load_more(page)
|
||||||
|
|
||||||
|
content = page.content()
|
||||||
|
browser.close()
|
||||||
|
|
||||||
|
if debug:
|
||||||
|
save_debug_file(url, content) # Now only two arguments
|
||||||
|
|
||||||
|
return content
|
||||||
|
|
||||||
|
def needs_scrolling(page):
|
||||||
|
"""Detects if a page requires scrolling by checking if it dynamically loads more content."""
|
||||||
|
prev_height = page.evaluate("document.body.scrollHeight")
|
||||||
|
page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
|
||||||
|
page.wait_for_timeout(2000) # Wait for new content to load
|
||||||
|
new_height = page.evaluate("document.body.scrollHeight")
|
||||||
|
|
||||||
|
return new_height > prev_height # If height increased, scrolling is needed
|
||||||
|
|
||||||
|
def scroll_page(page):
|
||||||
|
"""Scrolls down until no more content is being added."""
|
||||||
|
for _ in range(5): # Limit scrolling attempts to prevent infinite loops
|
||||||
|
prev_height = page.evaluate("document.body.scrollHeight")
|
||||||
|
page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
|
||||||
|
page.wait_for_timeout(2000)
|
||||||
|
new_height = page.evaluate("document.body.scrollHeight")
|
||||||
|
if new_height == prev_height:
|
||||||
|
break # Stop if no new content is loading
|
||||||
|
|
||||||
|
def has_load_more_button(page):
|
||||||
|
"""Checks if a 'Load More' button exists on the page."""
|
||||||
|
button = page.query_selector("button, .load-more, .btn-load-more")
|
||||||
|
return button is not None
|
||||||
|
|
||||||
|
def click_load_more(page):
|
||||||
|
"""Clicks 'Load More' buttons if they exist, while checking for popups."""
|
||||||
|
for _ in range(3): # Limit to 3 attempts
|
||||||
|
button = page.query_selector("button, .load-more, .btn-load-more")
|
||||||
|
|
||||||
|
# Check for modals/popups and try to close them
|
||||||
|
close_popup(page)
|
||||||
|
|
||||||
|
if button:
|
||||||
|
try:
|
||||||
|
button.click(timeout=5000) # 5-second timeout to prevent long waits
|
||||||
|
page.wait_for_timeout(2000) # Wait for new content to load
|
||||||
|
print("✅ Clicked 'Load More' button.")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"❌ Failed to click 'Load More': {e}")
|
||||||
|
break # Stop trying if clicking fails
|
||||||
|
else:
|
||||||
|
print("⚠️ No 'Load More' button found.")
|
||||||
|
break
|
||||||
|
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
|
||||||
|
def close_popup(page):
|
||||||
|
"""Uses NLP to detect and remove popups dynamically."""
|
||||||
|
page_html = page.content()
|
||||||
|
soup = BeautifulSoup(page_html, "html.parser")
|
||||||
|
|
||||||
|
popup_selectors = [
|
||||||
|
"div[role='dialog']", # Generic login popup
|
||||||
|
".modalOpened", # CoinMarketCap's modal
|
||||||
|
".overlay", # Overlays that block clicks
|
||||||
|
".popup", # Other generic popups
|
||||||
|
]
|
||||||
|
|
||||||
|
close_button_selectors = [
|
||||||
|
"button[aria-label='Close']", # CMC Close button
|
||||||
|
"button.close", # Generic close button
|
||||||
|
".modal-close", # Another common class
|
||||||
|
]
|
||||||
|
|
||||||
|
# Extract visible text
|
||||||
|
visible_text = " ".join([tag.get_text(strip=True) for tag in soup.find_all("div")])
|
||||||
|
|
||||||
|
# Tokenize the text
|
||||||
|
words = word_tokenize(visible_text.lower())
|
||||||
|
|
||||||
|
# Define words that indicate a login popup
|
||||||
|
popup_keywords = {"login", "sign up", "sign in", "register", "account", "access", "continue"}
|
||||||
|
|
||||||
|
if any(word in words for word in popup_keywords):
|
||||||
|
print(f"⚠️ AI detected a login popup based on text analysis. Attempting to close...")
|
||||||
|
|
||||||
|
for selector in popup_selectors:
|
||||||
|
popup = page.query_selector(selector)
|
||||||
|
if popup:
|
||||||
|
print(f"⚠️ NLP detected popup: {selector}, attempting to close it...")
|
||||||
|
|
||||||
|
# Try clicking the close button first
|
||||||
|
for close_selector in close_button_selectors:
|
||||||
|
close_button = page.query_selector(close_selector)
|
||||||
|
if close_button:
|
||||||
|
try:
|
||||||
|
close_button.click()
|
||||||
|
page.wait_for_timeout(2000) # Wait for it to close
|
||||||
|
print(f"✅ AI clicked close button: {close_selector}")
|
||||||
|
return
|
||||||
|
except Exception as e:
|
||||||
|
print(f"❌ AI failed to click close button: {close_selector} -> {e}")
|
||||||
|
|
||||||
|
# No close button found? Try removing the popup
|
||||||
|
print(f"⚠️ AI failed to find a close button, forcing removal of {selector}...")
|
||||||
|
try:
|
||||||
|
page.evaluate(f'document.querySelector("{selector}").remove();')
|
||||||
|
page.wait_for_timeout(1000) # Allow time for it to disappear
|
||||||
|
print(f"✅ AI forced removal of popup: {selector}")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"❌ AI failed to remove popup: {selector} -> {e}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def save_debug_file(site_name, content):
|
||||||
|
"""Saves fetched JavaScript-rendered pages as .html instead of .js."""
|
||||||
|
safe_name = (
|
||||||
|
site_name.replace("https://", "")
|
||||||
|
.replace("http://", "")
|
||||||
|
.replace("/", "_")
|
||||||
|
.replace(".", "_") # Normalize periods
|
||||||
|
.rstrip("_") # Remove trailing underscores
|
||||||
|
)
|
||||||
|
|
||||||
|
file_path = f"tests/{safe_name}.html" # Always save as .html
|
||||||
|
|
||||||
|
with open(file_path, "w", encoding="utf-8") as f:
|
||||||
|
f.write(content)
|
||||||
|
|
||||||
|
print(f"✅ Debug file saved: {file_path}")
|
||||||
|
|
||||||
|
|
||||||
0
src/scraper/nfts.py
Normal file
0
src/scraper/nfts.py
Normal file
50
src/scraper/parser.py
Normal file
50
src/scraper/parser.py
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
import os
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
import nltk
|
||||||
|
from nltk.tokenize import word_tokenize
|
||||||
|
|
||||||
|
# Ensure NLTK resources are downloaded
|
||||||
|
nltk.download("punkt")
|
||||||
|
|
||||||
|
def parse_html(html_content):
|
||||||
|
"""Extract token data dynamically using NLP instead of hardcoded class names."""
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
import nltk
|
||||||
|
from nltk.tokenize import word_tokenize
|
||||||
|
|
||||||
|
soup = BeautifulSoup(html_content, "html.parser")
|
||||||
|
|
||||||
|
# Extract all text from the page
|
||||||
|
full_text = soup.get_text(separator=" ", strip=True)
|
||||||
|
|
||||||
|
# DEBUG: Print first 1000 characters of extracted text
|
||||||
|
print("\n🔍 DEBUG: Extracted Text from HTML:")
|
||||||
|
print(full_text[:1000]) # Print first 1000 characters to see what the parser is working with
|
||||||
|
|
||||||
|
# Tokenize the text (split it into words)
|
||||||
|
words = word_tokenize(full_text)
|
||||||
|
|
||||||
|
# Heuristic: A token name is usually a **capitalized word** with no numbers
|
||||||
|
possible_names = [word for word in words if word.istitle() and word.isalpha()]
|
||||||
|
possible_symbols = [word for word in words if word.isupper() and len(word) <= 5]
|
||||||
|
|
||||||
|
tokens = []
|
||||||
|
if possible_names:
|
||||||
|
for i, name in enumerate(possible_names):
|
||||||
|
symbol = possible_symbols[i] if i < len(possible_symbols) else "N/A"
|
||||||
|
tokens.append({"name": name, "symbol": symbol})
|
||||||
|
|
||||||
|
print(f"✅ Extracted {len(tokens)} tokens.") # Debugging output
|
||||||
|
return {"tokens": tokens}
|
||||||
|
|
||||||
|
|
||||||
|
def parse_from_file(filename):
|
||||||
|
"""Loads an HTML file from the tests directory and parses it."""
|
||||||
|
filepath = os.path.join("tests", filename)
|
||||||
|
if not os.path.exists(filepath):
|
||||||
|
raise FileNotFoundError(f"❌ HTML file not found: {filepath}")
|
||||||
|
|
||||||
|
with open(filepath, "r", encoding="utf-8") as file:
|
||||||
|
html_content = file.read()
|
||||||
|
|
||||||
|
return parse_html(html_content)
|
||||||
0
src/scraper/tokens.py
Normal file
0
src/scraper/tokens.py
Normal file
0
src/scraper/twitter.py
Normal file
0
src/scraper/twitter.py
Normal file
0
src/scraper/utils.py
Normal file
0
src/scraper/utils.py
Normal file
716
tests/0x_org.html
Normal file
716
tests/0x_org.html
Normal file
File diff suppressed because one or more lines are too long
0
tests/__init__.py
Normal file
0
tests/__init__.py
Normal file
33
tests/aave_com.html
Normal file
33
tests/aave_com.html
Normal file
File diff suppressed because one or more lines are too long
549
tests/avax_network.html
Normal file
549
tests/avax_network.html
Normal file
File diff suppressed because one or more lines are too long
12
tests/basicattentiontoken_org.html
Normal file
12
tests/basicattentiontoken_org.html
Normal file
File diff suppressed because one or more lines are too long
806
tests/bitcoin_org.html
Normal file
806
tests/bitcoin_org.html
Normal file
|
|
@ -0,0 +1,806 @@
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
|
||||||
|
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||||
|
<meta property="og:image" content="https://bitcoin.org/img/icons/opengraph.png?1736694469" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
|
||||||
|
<title>Bitcoin - Open source P2P money</title>
|
||||||
|
<meta name="description" content="Bitcoin is an innovative payment network and a new kind of money. Find all you need to know and get started with Bitcoin on bitcoin.org.">
|
||||||
|
<link rel="stylesheet" href="/css/font-awesome-4.4.0/css/font-awesome.min.css">
|
||||||
|
<link rel="stylesheet" href="/css/main.css?1736694469">
|
||||||
|
<!--[if lt IE 8]><link rel="stylesheet" href="/css/ie.css"><script type="text/javascript" src="/js/ie.js"></script><![endif]-->
|
||||||
|
<!--[if IE 8]><link rel="stylesheet" href="/css/ie8.css"><![endif]-->
|
||||||
|
|
||||||
|
|
||||||
|
<script type="text/javascript" src="/js/base.js?1736694469"></script>
|
||||||
|
<script type="text/javascript" src="/js/main.js?1736694469"></script>
|
||||||
|
<script src="/js/jquery/jquery-1.11.2.min.js"></script>
|
||||||
|
<script src="/js/jquery/jquery-ui.min.js"></script>
|
||||||
|
<script src="/js/jquery/jquery.qrcode.min.js"></script>
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/favicon.png?1736694469">
|
||||||
|
<link rel="apple-touch-icon-precomposed" href="/img/icons/logo_ios.png?1736694469"/>
|
||||||
|
<script>
|
||||||
|
window.cookieconsent_options = {
|
||||||
|
theme: 'light-floating'
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" src="/js/cookieconsent/cookieconsent.js?1736694469"></script>
|
||||||
|
<script>
|
||||||
|
if( navigator.doNotTrack != "yes" && navigator.doNotTrack != "1" && window.doNotTrack != "1" && navigator.msDoNotTrack != "1" ){
|
||||||
|
var script = document.createElement('script');
|
||||||
|
script.src = '/js/analytics.js'
|
||||||
|
document.getElementsByTagName("head")[0].appendChild(script);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="donation-container">
|
||||||
|
<div class="donation-text">
|
||||||
|
<div class="donation-text-container">
|
||||||
|
<button onclick="closeDonationBanner()" class="donation-modal-close">
|
||||||
|
<img src="/img/icons/ico_close.svg?1736694469" alt="Close">
|
||||||
|
</button>
|
||||||
|
<p>
|
||||||
|
Bitcoin.org is a community funded project, donations are appreciated and used to improve the website.
|
||||||
|
</p>
|
||||||
|
<button type="button" class="donation-btn" onclick="openDonationModal()">
|
||||||
|
Make a donation
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button type="button" class="donation-visibility-toggle" onclick="toggleDonationBanner()">
|
||||||
|
Bitcoin.org needs your support!
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div id="donation-modal" style="display: none" class="donation-modal hidden">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-header">
|
||||||
|
<div class="modal-close-btn" onclick="closeDonationModal()">Ã</div>
|
||||||
|
<p class="modal-header-text section-title">Donate to Bitcoin.org</p>
|
||||||
|
</div>
|
||||||
|
<p class="modal-subheader">Use this QR code or address below</p>
|
||||||
|
<div style="text-align: center;">
|
||||||
|
<div id="donation-qr-code" data-address="bc1qx3u4njquj0ux63030r4nat8awqrlm0x2zlt96h"></div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a
|
||||||
|
class="donation-btc-address"
|
||||||
|
href="bitcoin:bc1qx3u4njquj0ux63030r4nat8awqrlm0x2zlt96h"
|
||||||
|
target="_blank">
|
||||||
|
bc1qx3u4njquj0ux63030r4nat8awqrlm0x2zlt96h
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body bg-white" style="overflow-y:hidden;text-align: center;">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<button type="button" class="donation-amount-btn" data-amount-usd="50">
|
||||||
|
$50.00
|
||||||
|
<div class="donation-amount-usd-in-btc">(... BTC)</div>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button type="button" class="donation-amount-btn" data-amount-usd="100">
|
||||||
|
$100.00
|
||||||
|
<div class="donation-amount-usd-in-btc">(... BTC)</div>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button type="button" class="donation-amount-btn" data-amount-usd="200">
|
||||||
|
$200.00
|
||||||
|
<div class="donation-amount-usd-in-btc">(... BTC)</div>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<input
|
||||||
|
style="margin-right: 15px"
|
||||||
|
type="text"
|
||||||
|
placeholder="Or custom amount? (BTC)"
|
||||||
|
id="donation-input-amount-btc" class="donation-amount-input">
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
placeholder="Or custom amount? (USD)"
|
||||||
|
id="donation-input-amount-usd" class="donation-amount-input">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<textarea
|
||||||
|
class="donation-amount-input"
|
||||||
|
id="donation-input-message"
|
||||||
|
placeholder="Optional description (for your wallet)"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div id="detectmobile" class="detectmobile"></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="head"><div>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="logo" href="/en/"><img src="/img/icons/logotop.svg?1736694469" alt="Bitcoin"></a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ul id="menusimple" class="menusimple menumain" onclick="mobileMenuHover(event);" ontouchstart="mobileMenuHover(event);">
|
||||||
|
<li><a class="is-expand">Introduction</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/en/bitcoin-for-individuals">Individuals</a></li>
|
||||||
|
<li><a href="/en/bitcoin-for-businesses">Businesses</a></li>
|
||||||
|
<li><a href="https://developer.bitcoin.org/">Developers</a></li>
|
||||||
|
<li><a href="/en/getting-started">Getting started</a></li>
|
||||||
|
<li><a href="/en/how-it-works">How it works</a></li>
|
||||||
|
|
||||||
|
<li><a href="/en/bitcoin-paper">White paper</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a class="is-expand">Resources</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/en/resources">Resources</a>
|
||||||
|
<li><a href="/en/exchanges">Exchanges</a></li>
|
||||||
|
<li><a href="/en/community">Community</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="https://developer.bitcoin.org/">Documentation</a></li>
|
||||||
|
|
||||||
|
<li><a href="/en/vocabulary">Vocabulary</a></li>
|
||||||
|
<li><a href="/en/events">Events</a></li>
|
||||||
|
|
||||||
|
<li><a href="/en/bitcoin-core/">Bitcoin Core</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="/en/innovation">Innovation</a></li>
|
||||||
|
<li><a class="is-expand">Participate</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/en/support-bitcoin">Support Bitcoin</a>
|
||||||
|
<li id="buybitcoinmenulink" ><a href="/en/buy">Buy Bitcoin</a></li>
|
||||||
|
<li><a href="/en/full-node">Running a full node</a></li>
|
||||||
|
<li><a href="/en/development">Development</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="/en/faq">FAQ</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a id="menumobile" class="menumobile" onclick="mobileMenuShow(event);" ontouchstart="mobileMenuShow(event);"></a>
|
||||||
|
|
||||||
|
|
||||||
|
<ul class="lang is-expand">
|
||||||
|
<li><a>English</a>
|
||||||
|
<ul>
|
||||||
|
<li><ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/id/">Bahasa Indonesia</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/ca/">Català </a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/da/">Dansk</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/de/">Deutsch</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/en/" class="active">English</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/es/">Español</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/fr/">Français</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/it/">Italiano</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/hu/">Magyar</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/nl/">Nederlands</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/pl/">Polski</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/pt_BR/">Português Brasil</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/ro/">RomânÄ</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/sl/">SlovenÅ¡Äina</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/sr/">Srpski</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/sv/">Svenska</a></li>
|
||||||
|
|
||||||
|
</ul></li><li><ul>
|
||||||
|
<li><a href="/tr/">Türkçe</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/el/">Îλληνικά</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/bg/">бÑлгаÑÑки</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/ru/">Ð ÑÑÑкий</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/uk/">УкÑаÑнÑÑка</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/hy/">ÕÕ¡ÕµÕ¥ÖÕ¥Õ¶</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/ar/">Ø§ÙØ¹Ø±Ø¨ÙØ©</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/fa/">ÙØ§Ø±Ø³Û</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/he/">×¢×ר×ת</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/hi/">हिनà¥à¤¦à¥</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/ko/">íêµì´</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/km/">ááááá</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/ja/">æ¥æ¬èª</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/zh_CN/">ç®ä½ä¸æ</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/zh_TW/">ç¹é«ä¸æ</a></li>
|
||||||
|
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="langselect" class="langselect">
|
||||||
|
<label for="select-input" class="center-select">
|
||||||
|
<select id="select-input" class="center-select__input" onchange="window.location=this.value;">
|
||||||
|
|
||||||
|
<option value="/id/" >Bahasa Indonesia</option>
|
||||||
|
|
||||||
|
<option value="/ca/" >Català </option>
|
||||||
|
|
||||||
|
<option value="/da/" >Dansk</option>
|
||||||
|
|
||||||
|
<option value="/de/" >Deutsch</option>
|
||||||
|
|
||||||
|
<option value="/en/" selected="selected">English</option>
|
||||||
|
|
||||||
|
<option value="/es/" >Español</option>
|
||||||
|
|
||||||
|
<option value="/fr/" >Français</option>
|
||||||
|
|
||||||
|
<option value="/it/" >Italiano</option>
|
||||||
|
|
||||||
|
<option value="/hu/" >Magyar</option>
|
||||||
|
|
||||||
|
<option value="/nl/" >Nederlands</option>
|
||||||
|
|
||||||
|
<option value="/pl/" >Polski</option>
|
||||||
|
|
||||||
|
<option value="/pt_BR/" >Português Brasil</option>
|
||||||
|
|
||||||
|
<option value="/ro/" >RomânÄ</option>
|
||||||
|
|
||||||
|
<option value="/sl/" >SlovenÅ¡Äina</option>
|
||||||
|
|
||||||
|
<option value="/sr/" >Srpski</option>
|
||||||
|
|
||||||
|
<option value="/sv/" >Svenska</option>
|
||||||
|
|
||||||
|
<option value="/tr/" >Türkçe</option>
|
||||||
|
|
||||||
|
<option value="/el/" >Îλληνικά</option>
|
||||||
|
|
||||||
|
<option value="/bg/" >бÑлгаÑÑки</option>
|
||||||
|
|
||||||
|
<option value="/ru/" >Ð ÑÑÑкий</option>
|
||||||
|
|
||||||
|
<option value="/uk/" >УкÑаÑнÑÑка</option>
|
||||||
|
|
||||||
|
<option value="/hy/" >ÕÕ¡ÕµÕ¥ÖÕ¥Õ¶</option>
|
||||||
|
|
||||||
|
<option value="/ar/" >Ø§ÙØ¹Ø±Ø¨ÙØ©</option>
|
||||||
|
|
||||||
|
<option value="/fa/" >ÙØ§Ø±Ø³Û</option>
|
||||||
|
|
||||||
|
<option value="/he/" >×¢×ר×ת</option>
|
||||||
|
|
||||||
|
<option value="/hi/" >हिनà¥à¤¦à¥</option>
|
||||||
|
|
||||||
|
<option value="/ko/" >íêµì´</option>
|
||||||
|
|
||||||
|
<option value="/km/" >ááááá</option>
|
||||||
|
|
||||||
|
<option value="/ja/" >æ¥æ¬èª</option>
|
||||||
|
|
||||||
|
<option value="/zh_CN/" >ç®ä½ä¸æ</option>
|
||||||
|
|
||||||
|
<option value="/zh_TW/" >ç¹é«ä¸æ</option>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
<span class="center-select__text">Language: <span class="is-capital">en</span></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div></div>
|
||||||
|
|
||||||
|
<div class="body">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="breadcrumbs">
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div id="content" class="content">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="mainhero">
|
||||||
|
<div class="container hero-container">
|
||||||
|
<p class="mainsummary">Bitcoin is an innovative payment network and a new kind of money.</p>
|
||||||
|
<div class="btn-container">
|
||||||
|
<a class="btn btn-bright btn-home" href="/en/getting-started">Get started with Bitcoin</a>
|
||||||
|
<a class="btn btn-light btn-home" href="/en/choose-your-wallet">Choose your wallet</a>
|
||||||
|
<a id="buybitcoinbutton" class="btn btn-light btn-home" href="/en/buy">Buy Bitcoin</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mainvideo">
|
||||||
|
<button class="mainvideo-btn-open" onclick="loadYoutubeVideo(event);" ontouchstart="loadYoutubeVideo(event);" data-youtubeurl="//www.youtube.com/embed/Gc2en3nHxA4?rel=0&showinfo=0&wmode=opaque&autoplay=1">What is Bitcoin?</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mainoverview">
|
||||||
|
<div class="container">
|
||||||
|
<div class="mainoverview-title">Get a quick overview for</div>
|
||||||
|
<a href="/en/bitcoin-for-individuals" class="maincard">
|
||||||
|
<img class="maincard-img" src="/img/icons/ico_individuals.svg?1736694469" alt="Icon">
|
||||||
|
<div>
|
||||||
|
<p class="maincard-title">Individuals</p>
|
||||||
|
<p class="maincard-link">Learn more</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<a href="/en/bitcoin-for-businesses" class="maincard">
|
||||||
|
<img class="maincard-img" src="/img/icons/ico_business.svg?1736694469" alt="Icon">
|
||||||
|
<div>
|
||||||
|
<p class="maincard-title">Businesses</p>
|
||||||
|
<p class="maincard-link">Learn more</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
<a href="https://developer.bitcoin.org/" class="maincard">
|
||||||
|
<img class="maincard-img" src="/img/icons/ico_developers.svg?1736694469" alt="Icon">
|
||||||
|
<div>
|
||||||
|
<p class="maincard-title">Developers</p>
|
||||||
|
<p class="maincard-link">Learn more</p>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<a class="btn-down" href="#maindesc-title">
|
||||||
|
<img src="/img/icons/ico_arrow_down.svg?1736694469" alt="Link">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="maindesc">
|
||||||
|
<div class="container">
|
||||||
|
<p class="section-title center home-title" id="maindesc-title">Get started with Bitcoin</p>
|
||||||
|
<div class="row maindesc-row">
|
||||||
|
<div>
|
||||||
|
<p class="maindesc-text">Bitcoin uses peer-to-peer technology to operate with no central authority or banks; managing transactions and the issuing of bitcoins is carried out collectively by the network. <b>Bitcoin is open-source; its design is public, nobody owns or controls Bitcoin and <a href="/en/support-bitcoin">everyone can take part</a></b>. Through many of its unique properties, Bitcoin allows exciting uses that could not be covered by any previous payment system.</p>
|
||||||
|
<ul class="mainlist">
|
||||||
|
|
||||||
|
<li class="mainlist-item">
|
||||||
|
<img src="/img/icons/main_ico_instant.svg?1736694469" alt="Icon">
|
||||||
|
<p>Fast peer-to-peer transactions</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="mainlist-item">
|
||||||
|
<img src="/img/icons/main_ico_worldwide.svg?1736694469" alt="Icon">
|
||||||
|
<p>Worldwide payments</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="mainlist-item">
|
||||||
|
<img src="/img/icons/main_ico_lowfee.svg?1736694469" alt="Icon">
|
||||||
|
<p>Low processing fees</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<img class="maindesc-img" src="/img/home/bitcoin-img.svg?1736694469" alt="Bitcoin image">
|
||||||
|
</div>
|
||||||
|
<div class="btn-container">
|
||||||
|
<a class="btn btn-dark btn-home center" href="/en/getting-started">Get started with Bitcoin</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Youtube popup video -->
|
||||||
|
<div class="modal closed">
|
||||||
|
<iframe class="modal-video" allowfullscreen="" frameborder="0">
|
||||||
|
</iframe>
|
||||||
|
<button class="mainvideo-btn-close" onclick="loadYoutubeVideo(event);" ontouchstart="loadYoutubeVideo(event);"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-overlay closed">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer">
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
|
||||||
|
<a class="logo-footer" href="/en/">
|
||||||
|
<img src="/img/icons/logo-footer.svg?1736694469" alt="Bitcoin">
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row footer-row">
|
||||||
|
<div class="donate">
|
||||||
|
<div class="row donate-row">
|
||||||
|
<div>
|
||||||
|
<span class="footer-title">Support Bitcoin.org:</span>
|
||||||
|
<a onclick="openDonationModal()" class="donate-btn btn-bright">Donate</a>
|
||||||
|
<p class="donate-text">
|
||||||
|
<a class="donate-link" href="bitcoin:bc1qx3u4njquj0ux63030r4nat8awqrlm0x2zlt96h" target="_blank">bc1qx3u4njquj0ux63030r4nat8awqrlm0x2zlt96h</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row footermenu">
|
||||||
|
<div class="footermenu-item footermenu-introduction">
|
||||||
|
<p class="footer-title">Introduction:</p>
|
||||||
|
<ul class="footermenu-list">
|
||||||
|
<li>
|
||||||
|
<a href="/en/bitcoin-for-individuals">Individuals</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/en/bitcoin-for-businesses">Businesses</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://developer.bitcoin.org/">Developers</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/en/getting-started">Getting started</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/en/how-it-works">How it works</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/en/you-need-to-know">You need to know</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="/en/bitcoin-paper">White paper</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footermenu-item footermenu-resources">
|
||||||
|
<p class="footer-title">Resources:</p>
|
||||||
|
<ul class="footermenu-list">
|
||||||
|
<li>
|
||||||
|
<a href="/en/resources">Resources</a>
|
||||||
|
<li>
|
||||||
|
<a href="/en/exchanges">Exchanges</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/en/community">Community</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/en/vocabulary">Vocabulary
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/en/events">Events</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="/en/bitcoin-core/">Bitcoin Core</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footermenu-item footermenu-participate">
|
||||||
|
<p class="footer-title">Participate:</p>
|
||||||
|
<ul class="footermenu-list">
|
||||||
|
<li>
|
||||||
|
<a href="/en/support-bitcoin">Support Bitcoin</a>
|
||||||
|
|
||||||
|
<li id="buybitcoinfootermenulink" >
|
||||||
|
<a href="/en/buy">Buy Bitcoin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="/en/full-node">Running a full node</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="/en/development">Development</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="footermenu-item footermenu-other">
|
||||||
|
<p class="footer-title">Other:</p>
|
||||||
|
|
||||||
|
<a href="/en/scams">Avoid Scams</a>
|
||||||
|
|
||||||
|
<a href="/en/legal">Legal</a>
|
||||||
|
|
||||||
|
<a href="/en/privacy">Privacy Policy</a>
|
||||||
|
|
||||||
|
<a href="/en/press">Press</a>
|
||||||
|
<a href="/en/about-us">About bitcoin.org</a>
|
||||||
|
<a href="/en/blog">Blog</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="footersponsor">
|
||||||
|
<!--<div><span>A community website sponsored by</span> <a href="https://bitcoinfoundation.org/"><img src="/img/brand/bitcoinfoundation.png?1736694469" alt="Bitcoin Foundation"></a></div>-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="footer-bottom">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row footer-bottom-row">
|
||||||
|
<div class="footerlicense">© Bitcoin Project 2009-2025 Released under the <a href="http://opensource.org/licenses/mit-license.php" target="_blank">MIT license</a></div>
|
||||||
|
<div class="row footer-status-block">
|
||||||
|
<a href="/en/alerts" class="statusmenu">Network Status</a>
|
||||||
|
|
||||||
|
<ul class="lang is-expand">
|
||||||
|
<li><a>English</a>
|
||||||
|
<ul>
|
||||||
|
<li><ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/id/">Bahasa Indonesia</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/ca/">Català </a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/da/">Dansk</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/de/">Deutsch</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/en/" class="active">English</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/es/">Español</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/fr/">Français</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/it/">Italiano</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/hu/">Magyar</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/nl/">Nederlands</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/pl/">Polski</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/pt_BR/">Português Brasil</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/ro/">RomânÄ</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/sl/">SlovenÅ¡Äina</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/sr/">Srpski</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/sv/">Svenska</a></li>
|
||||||
|
|
||||||
|
</ul></li><li><ul>
|
||||||
|
<li><a href="/tr/">Türkçe</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/el/">Îλληνικά</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/bg/">бÑлгаÑÑки</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/ru/">Ð ÑÑÑкий</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/uk/">УкÑаÑнÑÑка</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/hy/">ÕÕ¡ÕµÕ¥ÖÕ¥Õ¶</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/ar/">Ø§ÙØ¹Ø±Ø¨ÙØ©</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/fa/">ÙØ§Ø±Ø³Û</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/he/">×¢×ר×ת</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/hi/">हिनà¥à¤¦à¥</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/ko/">íêµì´</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/km/">ááááá</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/ja/">æ¥æ¬èª</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/zh_CN/">ç®ä½ä¸æ</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
<li><a href="/zh_TW/">ç¹é«ä¸æ</a></li>
|
||||||
|
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div id="footer-langselect" class="footer-langselect langselect">
|
||||||
|
<label for="select-input-footer" class="center-select">
|
||||||
|
<select class="center-select__input" onchange="window.location=this.value; ">
|
||||||
|
|
||||||
|
<option value="/id/" >Bahasa Indonesia</option>
|
||||||
|
|
||||||
|
<option value="/ca/" >Català </option>
|
||||||
|
|
||||||
|
<option value="/da/" >Dansk</option>
|
||||||
|
|
||||||
|
<option value="/de/" >Deutsch</option>
|
||||||
|
|
||||||
|
<option value="/en/" selected="selected">English</option>
|
||||||
|
|
||||||
|
<option value="/es/" >Español</option>
|
||||||
|
|
||||||
|
<option value="/fr/" >Français</option>
|
||||||
|
|
||||||
|
<option value="/it/" >Italiano</option>
|
||||||
|
|
||||||
|
<option value="/hu/" >Magyar</option>
|
||||||
|
|
||||||
|
<option value="/nl/" >Nederlands</option>
|
||||||
|
|
||||||
|
<option value="/pl/" >Polski</option>
|
||||||
|
|
||||||
|
<option value="/pt_BR/" >Português Brasil</option>
|
||||||
|
|
||||||
|
<option value="/ro/" >RomânÄ</option>
|
||||||
|
|
||||||
|
<option value="/sl/" >SlovenÅ¡Äina</option>
|
||||||
|
|
||||||
|
<option value="/sr/" >Srpski</option>
|
||||||
|
|
||||||
|
<option value="/sv/" >Svenska</option>
|
||||||
|
|
||||||
|
<option value="/tr/" >Türkçe</option>
|
||||||
|
|
||||||
|
<option value="/el/" >Îλληνικά</option>
|
||||||
|
|
||||||
|
<option value="/bg/" >бÑлгаÑÑки</option>
|
||||||
|
|
||||||
|
<option value="/ru/" >Ð ÑÑÑкий</option>
|
||||||
|
|
||||||
|
<option value="/uk/" >УкÑаÑнÑÑка</option>
|
||||||
|
|
||||||
|
<option value="/hy/" >ÕÕ¡ÕµÕ¥ÖÕ¥Õ¶</option>
|
||||||
|
|
||||||
|
<option value="/ar/" >Ø§ÙØ¹Ø±Ø¨ÙØ©</option>
|
||||||
|
|
||||||
|
<option value="/fa/" >ÙØ§Ø±Ø³Û</option>
|
||||||
|
|
||||||
|
<option value="/he/" >×¢×ר×ת</option>
|
||||||
|
|
||||||
|
<option value="/hi/" >हिनà¥à¤¦à¥</option>
|
||||||
|
|
||||||
|
<option value="/ko/" >íêµì´</option>
|
||||||
|
|
||||||
|
<option value="/km/" >ááááá</option>
|
||||||
|
|
||||||
|
<option value="/ja/" >æ¥æ¬èª</option>
|
||||||
|
|
||||||
|
<option value="/zh_CN/" >ç®ä½ä¸æ</option>
|
||||||
|
|
||||||
|
<option value="/zh_TW/" >ç¹é«ä¸æ</option>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
<span class="center-select__text">en</span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="row"> -->
|
||||||
|
|
||||||
|
<!-- </div> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
fallbackSVG();
|
||||||
|
addAnchorLinks();
|
||||||
|
trackOutgoingLinks();
|
||||||
|
toggleDarkMode();
|
||||||
|
handlePageRedirect( false )
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
929
tests/bitcoincash_org.html
Normal file
929
tests/bitcoincash_org.html
Normal file
|
|
@ -0,0 +1,929 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Bitcoin Cash - Peer-to-Peer Electronic Cash</title>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta name="description" content="Bitcoin Cash brings sound money to the world. Merchants and users are empowered with low fees and reliable confirmations. The future shines brightly with unrestricted growth, global adoption, permissionless innovation, and decentralized development.">
|
||||||
|
<meta name="thumbnail" content="https://www.bitcoincash.org/img/bitcoincash-twitter.webp">
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
<meta name="twitter:title" content="Bitcoin Cash - Peer-to-Peer Electronic Cash">
|
||||||
|
<meta name="twitter:description" content="Bitcoin Cash brings sound money to the world. Merchants and users are empowered with low fees and reliable confirmations. The future shines brightly with unrestricted growth, global adoption, permissionless innovation, and decentralized development.">
|
||||||
|
<meta name="twitter:image" content="https://www.bitcoincash.org/img/bitcoincash-twitter.webp">
|
||||||
|
<meta property="og:title" content="Bitcoin Cash - Peer-to-Peer Electronic Cash">
|
||||||
|
<meta property="og:description" content="Bitcoin Cash brings sound money to the world. Merchants and users are empowered with low fees and reliable confirmations. The future shines brightly with unrestricted growth, global adoption, permissionless innovation, and decentralized development.">
|
||||||
|
<meta property="og:image" content="https://www.bitcoincash.org/img/bitcoincash-twitter.webp">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" />
|
||||||
|
<link href="/css/deps.min.css?v=de5bdd7bd03cbe6464b5b2de3773fb3cdb17bf5bd81452c3150ee19bf42c8ef1" rel="stylesheet" type="text/css" media="all" />
|
||||||
|
<link href="/css/theme.min.css?v=fc07cc98d3f445db475f2de9c2606f0c12765f270607d0cd60d751aeb522eec8" rel="stylesheet" type="text/css" media="all" />
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap" rel="stylesheet" type="text/css" media="all" />
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id=G-4P1RG1J9TQ"></script>
|
||||||
|
<script>
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag(){dataLayer.push(arguments);}
|
||||||
|
gtag('js', new Date());
|
||||||
|
|
||||||
|
gtag('config', 'G-4P1RG1J9TQ');
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a id="start"></a>
|
||||||
|
<header id="fh5co-header">
|
||||||
|
<div class="container">
|
||||||
|
<nav class="navbar navbar-default">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<a href="#" id="expander" class="js-fh5co-nav-toggle fh5co-nav-toggle" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"><i></i></a>
|
||||||
|
<a class="navbar-brand" href="/">
|
||||||
|
<img loading="lazy" src="/img/bitcoin-cash-logo-horizontal-wt.svg" alt="Bitcoin Cash" class="lightit">
|
||||||
|
<img loading="lazy" src="/img/bitcoin-cash-logo-horizontal.svg" alt="Bitcoin Cash" class="darkit">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div id="navbar" class="navbar-collapse collapse">
|
||||||
|
<ul class="nav navbar-nav navbar-right homepage">
|
||||||
|
<li>
|
||||||
|
<a href="#about" data-nav-section="about" class="inner-link">
|
||||||
|
<span>About</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#wallets" data-nav-section="wallets" class="inner-link">
|
||||||
|
<span>Wallets</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#why" data-nav-section="why" class="inner-link">
|
||||||
|
<span>Benefits</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#nodes" data-nav-section="nodes" class="inner-link">
|
||||||
|
<span>Nodes</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="dropdown">
|
||||||
|
<span class="dropdown__trigger">Community</span>
|
||||||
|
<div class="dropdown__container">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="dropdown__content col-md-3 col-sm-3">
|
||||||
|
<ul class="menu-vertical">
|
||||||
|
<li>
|
||||||
|
<a href="#services" data-nav-section="services" class="inner-link">
|
||||||
|
Services
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#projects" data-nav-section="projects" class="inner-link">
|
||||||
|
Projects
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#exchanges" data-nav-section="exchanges" class="inner-link">
|
||||||
|
Exchanges
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="graphics/" class="external">
|
||||||
|
Logos / Graphics
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="dropdown">
|
||||||
|
<span class="dropdown__trigger">English</span>
|
||||||
|
<div class="dropdown__container">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="dropdown__content lang-menu">
|
||||||
|
<ul class="menu-vertical">
|
||||||
|
<li>
|
||||||
|
<a href="/id/" class="external">
|
||||||
|
Bahasa Indonesia
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/ms/" class="external">
|
||||||
|
Bahasa Melayu
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/de/" class="external">
|
||||||
|
Deutsch
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/de-ch/" class="external">
|
||||||
|
Deutsch Schweiz
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/en/" class="external">
|
||||||
|
English
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/es/" class="external">
|
||||||
|
Español
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/fil/" class="external">
|
||||||
|
Filipino
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/fr/" class="external">
|
||||||
|
Français
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="menu-vertical">
|
||||||
|
<li>
|
||||||
|
<a href="/it/" class="external">
|
||||||
|
Italiano
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/hu/" class="external">
|
||||||
|
Magyar
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/nl/" class="external">
|
||||||
|
Nederlands
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/pl/" class="external">
|
||||||
|
Polski
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/pt-br/" class="external">
|
||||||
|
Português (BR)
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/pt-pt/" class="external">
|
||||||
|
Português Portugal
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/sk/" class="external">
|
||||||
|
SlovenÄina
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/vi/" class="external">
|
||||||
|
Tiếng Viá»t
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="menu-vertical">
|
||||||
|
<li>
|
||||||
|
<a href="/tr/" class="external">
|
||||||
|
Türkçe
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/cs/" class="external">
|
||||||
|
ÄeÅ¡tina
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/el/" class="external">
|
||||||
|
ελληνικά
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/ru/" class="external">
|
||||||
|
Ð ÑÑÑкий
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/uk/" class="external">
|
||||||
|
УкÑаÑнÑÑка
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/ar/" class="external">
|
||||||
|
Ø§ÙØ¹Ø±Ø¨ÙØ©
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/fa/" class="external">
|
||||||
|
ÙØ§Ø±Ø³Û
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/hi/" class="external">
|
||||||
|
हिनà¥à¤¦à¥
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="menu-vertical">
|
||||||
|
<li>
|
||||||
|
<a href="/th/" class="external">
|
||||||
|
ภาษาà¹à¸à¸¢
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/ja/" class="external">
|
||||||
|
æ¥æ¬èª
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/zh-cn/" class="external">
|
||||||
|
ç®ä½ä¸æ
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/zh-tw/" class="external">
|
||||||
|
ç¹é«ä¸æ
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/ko/" class="external">
|
||||||
|
íêµì´
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<section id="fh5co-home" data-section="home" class="home site-header">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-8 col-xs-offset-2 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4 text-center hero-logo">
|
||||||
|
<img loading="lazy" alt="Bitcoin Cash" src="/img/bitcoin-cash-logo-wt.svg">
|
||||||
|
<h1 class="lead">
|
||||||
|
Peer-to-Peer Electronic Cash
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12 ticker text-center">
|
||||||
|
<span id="ticker_value">Loading...</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="gap"></div>
|
||||||
|
</section>
|
||||||
|
<div class="main-container" id="home-section">
|
||||||
|
<section class="space--xxs no-bottom" id="about-section" data-section="about">
|
||||||
|
<div class="container benefits">
|
||||||
|
<div class="row text-center">
|
||||||
|
<div class="col-sm-4 col-md-4">
|
||||||
|
<p><i class="fa fa-bolt fa-fw fa-2x"></i></p>
|
||||||
|
<p><strong>Fast</strong></p>
|
||||||
|
<p>Transact in seconds. Get confirmed in minutes.</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-4">
|
||||||
|
<p><i class="fa fa-thumbs-up fa-fw fa-2x"></i></p>
|
||||||
|
<p><strong>Reliable</strong></p>
|
||||||
|
<p>A network that runs without congestion.</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-4">
|
||||||
|
<p><i class="fa fa-arrow-alt-circle-down fa-fw fa-2x"></i></p>
|
||||||
|
<p><strong>Low Fees</strong></p>
|
||||||
|
<p>Send money globally for pennies.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row text-center">
|
||||||
|
<div class="col-sm-4 col-md-4">
|
||||||
|
<p><i class="fa fa-check fa-fw fa-2x"></i></p>
|
||||||
|
<p><strong>Simple</strong></p>
|
||||||
|
<p>Easy to use. No hassles.</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-4">
|
||||||
|
<p><i class="fa fa-cubes fa-fw fa-2x"></i></p>
|
||||||
|
<p><strong>Stable</strong></p>
|
||||||
|
<p>A payment system that's a proven store of value.</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-4">
|
||||||
|
<p><i class="fa fa-lock fa-fw fa-2x"></i></p>
|
||||||
|
<p><strong>Secure</strong></p>
|
||||||
|
<p>World's most robust blockchain technology.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<a id="about"></a>
|
||||||
|
<section class="space--xxs" data-section="about2" id="about2-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row text-center section-heading">
|
||||||
|
<div class='col-sm-12'>
|
||||||
|
<h2>The Best Money in the World</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12 col-md-12">
|
||||||
|
<p>Bitcoin Cash brings sound money to the world, fulfilling the original promise of Bitcoin as "Peer-to-Peer Electronic Cash". Merchants and users are empowered with low fees and reliable confirmations. The future shines brightly with unrestricted growth, global adoption, permissionless innovation, and decentralized development.</p>
|
||||||
|
<p>All are welcome to join the Bitcoin Cash community as we move forward in creating sound money accessible to the whole world.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<a id="wallets"></a>
|
||||||
|
<section class="space--xxs text-center gray border-bottom" id="wallets-section" data-section="wallets">
|
||||||
|
<div class="container wallets">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12 section-heading ">
|
||||||
|
<h2>Wallets</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://electroncash.org/" target="_blank"><img loading="lazy" alt="Electron Cash" src="/img/wallets/electroncash.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://cashonize.com/" target="_blank"><img loading="lazy" alt="Cashonize" src="/img/wallets/cashonize.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.paytaca.com/" target="_blank"><img loading="lazy" alt="Paytaca" src="/img/wallets/paytaca.svg"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://zapit.io/" target="_blank"><img loading="lazy" alt="Zapit" src="/img/wallets/zapit.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://wallet.bitcoin.com/" target="_blank"><img loading="lazy" alt="Bitcoin.com" src="/img/wallets/bitcoindotcom.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://selene.cash/" target="_blank"><img loading="lazy" alt="Selene" src="/img/wallets/selene.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://edgesecure.co/" target="_blank"><img loading="lazy" alt="Edge" src="/img/wallets/edge.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://stackwallet.com/" target="_blank"><img loading="lazy" alt="Stack Wallet" src="/img/wallets/stack.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://cakewallet.com/" target="_blank"><img loading="lazy" alt="Cake Wallet" src="/img/wallets/cake.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://flowee.org/products/pay/" target="_blank"><img loading="lazy" alt="Flowee Pay" src="/img/wallets/floweepay.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://bitpay.com/wallet" target="_blank"><img loading="lazy" alt="Bitpay Wallet" src="/img/wallets/bitpay.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="http://www.ledgerwallet.com/" target="_blank"><img loading="lazy" alt="Ledger" src="/img/wallets/ledger.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://wallet.trezor.io/" target="_blank"><img loading="lazy" alt="Trezor" src="/img/wallets/trezor.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://shapeshift.com/keepkey" target="_blank"><img loading="lazy" alt="KeepKey" src="/img/wallets/keepkey.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://satochip.io/" target="_blank"><img loading="lazy" alt="KeepKey" src="/img/wallets/satochip.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://xdefi.io" target="_blank"><img loading="lazy" alt="XDEFI Wallet" src="/img/wallets/xdefi.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.exodus.io/" target="_blank"><img loading="lazy" alt="Exodus" src="/img/wallets/exodus.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://viawallet.com/" target="_blank"><img loading="lazy" alt="ViaWallet" src="/img/wallets/viawallet.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://coin.space/" target="_blank"><img loading="lazy" alt="Coin Space" src="/img/wallets/coinspace.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://guarda.com/" target="_blank"><img loading="lazy" alt="Guarda Wallet" src="/img/wallets/guarda.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://coinomi.com/" target="_blank"><img loading="lazy" alt="Coinomi" src="/img/wallets/coinomi.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://cashaddress.org/" target="_blank"><img loading="lazy" alt="Cash Address" src="/img/wallets/cashaddress.webp"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<a id="why"></a>
|
||||||
|
<section class="space--xxs" id="why-section" data-section="why">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row text-center">
|
||||||
|
<div class="col-xs-12 section-heading">
|
||||||
|
<h2>Why Use Bitcoin Cash?</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12">
|
||||||
|
<p class="question">Send Money Anywhere In the World, Almost for Free</p>
|
||||||
|
<p>With Bitcoin Cash, you can send money to anyone, anywhere in the world, 24 hours a day, 365 days a year. Like the Internet itself, the network is always on. No transaction is too big or too small. And you never need anyoneâs permission or approval.</p>
|
||||||
|
<p class="question">Be Your Own Bank and Have Full Control Over Your Money</p>
|
||||||
|
<p>The seizing of capital from account holders (âbail-insâ) that occurred in Cyprus and nearly in Greece, demonstrated that bank deposits are only as safe as political leaders decide. Even under the best of conditions, banks can make mistakes, hold funds, freeze accounts, and otherwise prevent you from accessing your own money.</p>
|
||||||
|
<p>Banks can also decide to block your transactions, charge you fees, or close your account without warning. Bitcoin Cash gives you full, sovereign control over your funds, which you can access from anywhere in the world.</p>
|
||||||
|
<p class="question">A Scarce Digital Currency with a Known, Fixed Supply</p>
|
||||||
|
<p>The Bitcoin Cash protocol ensures there will never be more than 21 million coins in existence. Governments constantly print money out of thin air, endlessly inflating the supply and devaluing everyoneâs savings. Bitcoin Cash has a fixed supply and therefore represents sound money.</p>
|
||||||
|
<p class="question">Increase Your Privacy and Operate Anonymously</p>
|
||||||
|
<p>Bitcoin Cash offers more privacy and anonymity than traditional payment systems like bank transfers and credit card payments, since itâs normally impossible to know who controls a Bitcoin address.</p>
|
||||||
|
<p>Bitcoin Cash offers various levels of privacy depending on how it is used. Itâs important to educate yourself thoroughly before using BCH for privacy purposes.</p>
|
||||||
|
<p class="question">Enjoy Exclusive Discounts</p>
|
||||||
|
<p>Many merchants offer discounts for paying in Bitcoin Cash, because it eliminates credit card fees and helps grow the adoption of this new payment system.</p>
|
||||||
|
<p class="question">Token Ecosystem</p>
|
||||||
|
<p>Storing and managing tokens on a blockchain provides greater transparency and integrity than traditional forms of asset accounting and trading. Bitcoin Cash supports token protocols that power a variety of projects, and it is easy to create your own token backed projects.</p>
|
||||||
|
<p class="question">Support Freedom Worldwide</p>
|
||||||
|
<p>Bitcoin Cash is a permissionless, open network. It empowers you to engage with your fellow human beings without intrusion. Itâs decentralized, voluntary, and non-aggressive. As usage grows, old power structures will erode while fresh ideas blossom. It may help usher in the greatest peaceful revolution the world has ever known.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="space--xxs" id="merchant-benefits-section" data-section="benefits">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row text-center">
|
||||||
|
<div class="col-xs-12 section-heading">
|
||||||
|
<h2>Benefits for Merchants</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12">
|
||||||
|
<p class="question">Ultra Low Fees</p>
|
||||||
|
<p>The network fee for a typical Bitcoin Cash transaction is less than one penny. If you want to convert your BCH into fiat currency, such as US dollars, you can do that through merchant processors for a cost that is still much lower than credit card processing.</p>
|
||||||
|
<p class="question">No Chargebacks</p>
|
||||||
|
<p>Unlike credit cards, there are never any automatic voids, refunds, chargebacks, or other unexpected fees. Fraud protection is built into the system with no cost to the merchant.</p>
|
||||||
|
<p class="question">New Customers</p>
|
||||||
|
<p>A growing number of patrons are choosing Bitcoin Cash as a preferred payment method. They favor merchants who offer this payment option and actively seek them out.</p>
|
||||||
|
<p class="question">Free Marketing and Press</p>
|
||||||
|
<p>By accepting Bitcoin Cash, merchants can gain free listings in website and app directories, gaining even more customers. They can also take advantage of this new trend and generate press for their business.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="space--xxs" id="history-section" data-section="history">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row text-center">
|
||||||
|
<div class='col-sm-12 section-heading '>
|
||||||
|
<h2>The History of Bitcoin Cash</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12 col-md-12">
|
||||||
|
<p>In October 2008, Satoshi Nakamoto published the famous whitepaper entitled <a target="_blank" href="https://bitcoincash.org/bitcoin.pdf"><strong><q>Bitcoin: A Peer to Peer Electronic Cash System</q></strong></a>. In 2009, he released the first bitcoin software that powered the network, and it operated smoothly for several years with low fees, and fast, reliable transactions.</p>
|
||||||
|
<p>Unfortunately, from 2016 to 2017, Bitcoin became increasingly unreliable and expensive. This was because the community could not reach consensus on increasing the network capacity. Some of the developers did not understand and agree with Satoshiâs plan. Instead, they preferred Bitcoin become a settlement layer.</p>
|
||||||
|
<p>By 2017, Bitcoin dominance had plummeted from 95% to as low as 40% as a direct result of the usability problems. Fortunately, a large portion of the Bitcoin community, including developers, investors, users, and businesses, still believed in the original vision of Bitcoin -- a low fee, peer to peer electronic cash system that could be used by all the people of the world.</p>
|
||||||
|
<p>On August 1st, 2017, we took the logical step of increasing the maximum block size, and Bitcoin Cash was born. Anyone who held Bitcoin at that time (block 478558) became an owner of Bitcoin Cash (BCH). The network now supports up to 32MB blocks with ongoing research to allow massive future increases.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="space--xxs" id="development-section" data-section="development">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row text-center">
|
||||||
|
<div class='col-sm-12 section-heading '>
|
||||||
|
<h2>Decentralized Development</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12 col-md-12">
|
||||||
|
<p>With multiple independent teams of developers providing software implementations, the future is secure. Bitcoin Cash is resistant to political and social attacks on protocol development. No single group or project can control it. Multiple implementations also provides redundancy to ensure that the network retains 100% uptime.</p>
|
||||||
|
<p>The <a href="https://bitcoincashresearch.org" target="_blank">bitcoincashresearch.org</a> website is a good venue for making proposals for changes that require coordination across development teams. For those wishing to implement changes to the Bitcoin Cash protocol, it is recommended to seek early peer-review and engage collaboratively with other developers.</p>
|
||||||
|
<p>If you are interested in helping with translations, then please check out our <a href="https://crowdin.com/project/bitcoin-cash" target="_blank">CrowdIn project</a>. Remember, we only accept human translations, any automated translations will be rejected.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<a id="nodes"></a>
|
||||||
|
<section class="space--xxs text-center gray border-bottom" id="nodes-section" data-section="nodes">
|
||||||
|
<div class="container nodes">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12 section-heading ">
|
||||||
|
<h2>Nodes</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-6 col-md-6 vertical-align">
|
||||||
|
<a href="https://bitcoincashnode.org" target="_blank"><img loading="lazy" alt="Bitcoin Cash Node" src="/img/wallets/bitcoincashnode.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-6 vertical-align">
|
||||||
|
<a href="https://www.bitcoinunlimited.info" target="_blank"><img loading="lazy" alt="Bitcoin Unlimited" src="/img/wallets/bitcoinunlimited.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-6 vertical-align">
|
||||||
|
<a href="https://bchd.cash" target="_blank"><img loading="lazy" alt="BCHD" src="/img/wallets/bchd.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-6 vertical-align">
|
||||||
|
<a href="https://bitcoinverde.org" target="_blank"><img loading="lazy" alt="Bitcoin Verde" src="/img/wallets/bitcoinverde.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-6 vertical-align">
|
||||||
|
<a href="https://kth.cash" target="_blank"><img loading="lazy" alt="Knuth" src="/img/wallets/knuth.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-6 vertical-align">
|
||||||
|
<a href="https://github.com/PayButton/bchc" target="_blank"><img loading="lazy" alt="BCHC" src="/img/wallets/bchc.webp"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<a id="services"></a>
|
||||||
|
<section class="space--xxs text-center gray border-bottom" id="services-section" data-section="services">
|
||||||
|
<div class="container services">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12 section-heading ">
|
||||||
|
<h2>Services</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://bchbull.com" target="_blank"><img loading="lazy" alt="BCH Bull" src="/img/services/bchbull.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://bitpay.com" target="_blank"><img loading="lazy" alt="Bitpay" src="/img/wallets/bitpay.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://apirone.com/" target="_blank"><img loading="lazy" alt="Apirone" src="/img/services/apirone.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://gocrypto.com/" target="_blank"><img loading="lazy" alt="GoCrypto" src="/img/services/gocrypto.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://map.bitcoin.com" target="_blank"><img loading="lazy" alt="Bitcoin.com Maps" src="/img/services/bitcoincommaps.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.bitgree.com/" target="_blank"><img loading="lazy" alt="Bitgree" src="/img/services/bitgree.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://read.cash/" target="_blank"><img loading="lazy" alt="read.cash" src="/img/services/readcash.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://noise.app/" target="_blank"><img loading="lazy" alt="noise.app" src="/img/services/noisecash.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://memo.cash/" target="_blank"><img loading="lazy" alt="memo.cash" src="/img/services/memocash.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://bch.games/" target="_blank"><img loading="lazy" alt="BCH.games" src="/img/services/bchgames.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://basepoker.com" target="_blank"><img loading="lazy" alt="BASEPOKER" src="/img/services/basepoker.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://cheapair.com/" target="_blank"><img loading="lazy" alt="CheapAir" src="/img/services/cheapair.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://namecheap.com/" target="_blank"><img loading="lazy" alt="Namecheap" src="/img/services/namecheap.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://blockchair.com/" target="_blank"><img loading="lazy" alt="Blockchair" src="/img/services/blockchair.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://cash.coin.dance/" target="_blank"><img loading="lazy" alt="Coin Dance" src="/img/services/coindance.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://txstreet.com/v/bch-btc" target="_blank"><img loading="lazy" alt="TxStreet" src="/img/services/txstreet.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://fork.lol" target="_blank"><img loading="lazy" alt="Fork.lol" src="/img/services/forklol.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.alfatop.me" target="_blank"><img loading="lazy" alt="ALFAtop" src="/img/services/alfatopme.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://alagoria.com/" target="_blank"><img loading="lazy" alt="Alagoria" src="/img/services/alagoria.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://satoshidice.com/" target="_blank"><img loading="lazy" alt="Satoshi Dice" src="/img/services/satoshidice.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://rocketr.net/" target="_blank"><img loading="lazy" alt="Rocketr" src="/img/services/rocketr.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.coinpayments.net/" target="_blank"><img loading="lazy" alt="CoinPayments" src="/img/services/coinpayments.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://coingate.com/" target="_blank"><img loading="lazy" alt="CoinGate" src="/img/services/coingate.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://gourl.io/" target="_blank"><img loading="lazy" alt="GoUrl" src="/img/services/gourl.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.alfacoins.com" target="_blank"><img loading="lazy" alt="ALFAcoins" src="/img/services/alfacoins.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.livingroomofsatoshi.com/?sc=bch" target="_blank"><img loading="lazy" alt="Living Room Of Satoshi" src="/img/services/livingroomofsatoshi.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://pompler.com" target="_blank"><img loading="lazy" alt="Pompler" src="/img/services/pompler.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.viabtc.com/" target="_blank"><img loading="lazy" alt="ViaBTC" src="/img/services/viabtc.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://simpleledger.info/" target="_blank"><img loading="lazy" alt="SLP Explorer" src="/img/services/slpexplorer.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.wmtransfer.com/" target="_blank"><img loading="lazy" alt="Web Money" src="/img/services/webmoney.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://bitcoin-india.org/" target="_blank"><img loading="lazy" alt="Bitcoin India" src="/img/services/bitcoinindia.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.menufy.com/" target="_blank"><img loading="lazy" alt="Menufy" src="/img/services/menufy.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://card.coinbase.com/" target="_blank"><img loading="lazy" alt="Coinbase Card" src="/img/services/coinbasecard.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://commerce.coinbase.com" target="_blank"><img loading="lazy" alt="Coinbase Commerce" src="/img/services/coinbasecommerce.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://nexo.io/" target="_blank"><img loading="lazy" alt="Nexo" src="/img/services/nexo.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.egifter.com/" target="_blank"><img loading="lazy" alt="eGifter" src="/img/services/egifter.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://prompt.cash/" target="_blank"><img loading="lazy" alt="Prompt.Cash" src="/img/services/promptcash.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.satoshisangels.com/" target="_blank"><img loading="lazy" alt="Satoshi's Angels" src="/img/services/satoshisangels.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://coinrabbit.io/" target="_blank"><img loading="lazy" alt="Coin Rabbit" src="/img/services/coinrabbit.svg"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://onlycoins.com/" target="_blank"><img loading="lazy" alt="Onlycoins" src="/img/services/onlycoins.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://zabo.com/" target="_blank"><img loading="lazy" alt="Zabo" src="/img/services/zabo.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://nowpayments.io/" target="_blank"><img loading="lazy" alt="NOWPayments" src="/img/services/nowpayments.svg"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://coinremitter.com/" target="_blank"><img loading="lazy" alt="Coinremitter" src="/img/services/coinremitter.webp"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<a id="projects"></a>
|
||||||
|
<section class="space--xxs text-center gray border-bottom" id="projects-section" data-section="projects">
|
||||||
|
<div class="container services">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12 section-heading ">
|
||||||
|
<h2>Projects</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://cashfusion.org/" target="_blank"><img loading="lazy" alt="CashFusion" src="/img/projects/cashfusion.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://cashtokens.org/" target="_blank"><img loading="lazy" alt="CashTokens" src="/img/projects/cashtokens.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://fulcrumserver.org/" target="_blank"><img loading="lazy" alt="Fulcrum" src="/img/projects/fulcrum.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://flipstarter.cash/" target="_blank"><img loading="lazy" alt="Flipstarter" src="/img/projects/flipstarter.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://cashscript.org/" target="_blank"><img loading="lazy" alt="CashScript" src="/img/projects/cashscript.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://anyhedge.com/" target="_blank"><img loading="lazy" alt="AnyHedge" src="/img/projects/anyhedge.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://chaingraph.cash/" target="_blank"><img loading="lazy" alt="Chaingraph" src="/img/projects/chaingraph.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://libauth.org/" target="_blank"><img loading="lazy" alt="Libauth" src="/img/projects/libauth.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://ide.bitauth.com/" target="_blank"><img loading="lazy" alt="Bitauth IDE" src="/img/projects/bitauth-ide.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://eatbch.org/" target="_blank"><img loading="lazy" alt="EatBCH" src="/img/projects/eatbch.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://slp.dev/" target="_blank"><img loading="lazy" alt="SLP Dev" src="/img/projects/slpdev.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://givecrypto.org/" target="_blank"><img loading="lazy" alt="GiveCrypto" src="/img/projects/givecrypto.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://bitcoincashresearch.org/" target="_blank"><img loading="lazy" alt="Bitcoin Cash Research" src="/img/projects/bitcoincashresearch.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://awesomebitcoin.cash/" target="_blank"><img loading="lazy" alt="Awesome Bitcoin Cash" src="/img/projects/awesomebitcoincash.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://fountainhead.cash/" target="_blank"><img loading="lazy" alt="Fountainhead" src="/img/projects/fountainhead.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://one.surgery/" target="_blank"><img loading="lazy" alt="One Surgery" src="/img/projects/onesurgery.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://spedn.pl/" target="_blank"><img loading="lazy" alt="Spedn" src="/img/projects/spedn.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://tapswap.cash/" target="_blank"><img loading="lazy" alt="TapSwap" src="/img/projects/tapswap.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://tokenaut.cash/" target="_blank"><img loading="lazy" alt="Tokenaut" src="/img/projects/tokenaut.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://nfts.bch.guru/" target="_blank"><img loading="lazy" alt="BCH.Guru" src="/img/projects/guru.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://ninjas.cash/" target="_blank"><img loading="lazy" alt="Cash-Ninjas" src="/img/projects/cashninjas.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://reapers.cash/" target="_blank"><img loading="lazy" alt="Reapers" src="/img/projects/reapers.webp"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<a id="exchanges"></a>
|
||||||
|
<section class="space--xxs text-center gray" id="exchanges-section" data-section="exchanges">
|
||||||
|
<div class="container exchanges">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xs-12 section-heading ">
|
||||||
|
<h2>Exchanges</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://thorswap.finance/" target="_blank"><img loading="lazy" alt="THORSwap" src="/img/exchanges/thorswap.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.okx.com/" target="_blank"><img loading="lazy" alt="OKX" src="/img/exchanges/okx.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.coinbase.com/" target="_blank"><img loading="lazy" alt="Coinbase" src="/img/exchanges/coinbase.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://pro.coinbase.com/" target="_blank"><img loading="lazy" alt="Coinbase Pro" src="/img/exchanges/coinbasepro.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.binance.com/" target="_blank"><img loading="lazy" alt="Binance" src="/img/exchanges/binance.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://bit.com/" target="_blank"><img loading="lazy" alt="Bit" src="/img/exchanges/bit.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.kraken.com/" target="_blank"><img loading="lazy" alt="Kraken" src="/img/exchanges/kraken.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.etoro.com/" target="_blank"><img loading="lazy" alt="eToro" src="/img/exchanges/etoro.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://buda.com/" target="_blank"><img loading="lazy" alt="Buda" src="/img/exchanges/buda.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://gemini.com/" target="_blank"><img loading="lazy" alt="Gemini" src="/img/exchanges/gemini.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://uphold.com/" target="_blank"><img loading="lazy" alt="Uphold" src="/img/exchanges/uphold.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://sideshift.ai/" target="_blank"><img loading="lazy" alt="Sideshift AI" src="/img/exchanges/sideshiftai.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://shapeshift.io/" target="_blank"><img loading="lazy" alt="ShapeShift" src="/img/exchanges/shapeshift.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.coinex.com/" target="_blank"><img loading="lazy" alt="Coinex" src="/img/exchanges/coinex.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://cex.io/" target="_blank"><img loading="lazy" alt="Cexio" src="/img/exchanges/cexio.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.korbit.co.kr/" target="_blank"><img loading="lazy" alt="Korbit" src="/img/exchanges/korbit.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.btcbox.co.jp/" target="_blank"><img loading="lazy" alt="BtcBox" src="/img/exchanges/btcbox.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://changelly.com/" target="_blank"><img loading="lazy" alt="Changelly" src="/img/exchanges/changelly.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://btcpop.co/" target="_blank"><img loading="lazy" alt="BTCPOP" src="/img/exchanges/btcpop.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://hitbtc.com/" target="_blank"><img loading="lazy" alt="HitBTC" src="/img/exchanges/hitbtc.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.bithumb.com/" target="_blank"><img loading="lazy" alt="Bithumb" src="/img/exchanges/bithumb.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://bitcoinvn.io" target="_blank"><img loading="lazy" alt="BitcoinVN" src="/img/exchanges/bitcoinvietnam.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://coinone.co.kr/" target="_blank"><img loading="lazy" alt="Coinone" src="/img/exchanges/coinone.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://simplefx.com/" target="_blank"><img loading="lazy" alt="SimpleFX" src="/img/exchanges/simplefx.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://bitflyer.jp/" target="_blank"><img loading="lazy" alt="bitFlyer" src="/img/exchanges/bitflyer.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://poloniex.com/" target="_blank"><img loading="lazy" alt="Poloniex" src="/img/exchanges/poloniex.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.bitcoin.de/" target="_blank"><img loading="lazy" alt="Bitcoin.de" src="/img/exchanges/bitcoinde.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://karsha.biz/" target="_blank"><img loading="lazy" alt="Karsha Exchange" src="/img/exchanges/karsha.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.independentreserve.com/" target="_blank"><img loading="lazy" alt="Independent Reserve" src="/img/exchanges/independentreserve.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://changenow.io/" target="_blank"><img loading="lazy" alt="ChangeNOW" src="/img/exchanges/changenow.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.bitstamp.net/" target="_blank"><img loading="lazy" alt="Bitstamp" src="/img/exchanges/bitstamp.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://bestrate.org/" target="_blank"><img loading="lazy" alt="BestRate" src="/img/exchanges/bestrate.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://coinfalcon.com" target="_blank"><img loading="lazy" alt="CoinFalcon" src="/img/exchanges/coinfalcon.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://exmo.com" target="_blank"><img loading="lazy" alt="Exmo" src="/img/exchanges/exmo.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://coincheck.com" target="_blank"><img loading="lazy" alt="Coincheck" src="/img/exchanges/coincheck.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://crypto.com/" target="_blank"><img loading="lazy" alt="Crypto" src="/img/exchanges/crypto.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.matrixport.com/" target="_blank"><img loading="lazy" alt="Matrixport" src="/img/exchanges/matrixport.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://stealthex.io/" target="_blank"><img loading="lazy" alt="StealthEx" src="/img/exchanges/stealthex.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://bitvavo.com/en/bitcoin-cash" target="_blank"><img loading="lazy" alt="Bitvavo" src="/img/exchanges/bitvavo.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 col-md-3 vertical-align">
|
||||||
|
<a href="https://swapzone.io" target="_blank"><img loading="lazy" alt="Swapzone" src="/img/exchanges/swapzone.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://www.whalesheaven.com/" target="_blank"><img loading="lazy" alt="WhalesHeaven" src="/img/exchanges/whalesheaven.webp"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://simpleswap.io" target="_blank"><img loading="lazy" alt="SimpleSwap" src="/img/exchanges/simpleswap_blue.svg"></a>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 col-md-3 vertical-align">
|
||||||
|
<a href="https://flashift.app" target="_blank"><img loading="lazy" alt="FLASHIFT" src="/img/exchanges/flashift.webp"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<footer class="space--xs footer-1">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<span class="type--fine-print">©<span class="update-year"></span> bitcoincash.org</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 text-right text-center-xs">
|
||||||
|
<ul class="social-list list-inline list--hover">
|
||||||
|
<li>
|
||||||
|
<a href="https://www.reddit.com/r/Bitcoincash/" target="_blank">
|
||||||
|
<i class="socicon socicon-reddit icon icon--xs"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://github.com/zquestz/bitcoincash" target="_blank">
|
||||||
|
<i class="socicon socicon-github icon icon--xs"></i>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<a class="back-to-top inner-link" href="#start" data-scroll-class="100vh:active">
|
||||||
|
<i class="stack-interface stack-up-open-big"></i>
|
||||||
|
</a>
|
||||||
|
<script src="/js/modernizr-2.6.2.min.js"></script>
|
||||||
|
<script src="/js/jquery.min.js"></script>
|
||||||
|
<script src="/js/ticker.min.js?v=cb6bbb443c634c283b18136d73fef86e015895664314e13ca3cf9e3ee37dcc19" async></script>
|
||||||
|
<script src="/js/fontawesome.min.js"></script>
|
||||||
|
<script src="/js/solid.min.js"></script>
|
||||||
|
<script src="/js/jquery.easing.1.3.min.js"></script>
|
||||||
|
<script src="/js/jquery.stellar.min.js"></script>
|
||||||
|
<script src="/js/jquery.waypoints.min.js"></script>
|
||||||
|
<script src="/js/smooth-scroll.min.js"></script>
|
||||||
|
<script src="/js/bootstrap.min.js"></script>
|
||||||
|
<script src="/js/scripts.min.js?v=141293ad3a5f4842cf2d21eff388ce5718a2cefc43445ea3bbb3ba419a9d1b93"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
247
tests/bitcoinsv_com.html
Normal file
247
tests/bitcoinsv_com.html
Normal file
|
|
@ -0,0 +1,247 @@
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
<title>The Original Bitcoin Blockchain : Bitcoin SV (BSV)</title>
|
||||||
|
<meta name="description" content="Bitcoin SV is Fast, Scalable, Environmentally-efficient and Regulation-friendly. It is Bitcoin exactly as envisioned in Satoshi Nakamotoâs Bitcoin White Paper." />
|
||||||
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
|
<meta name="twitter:site" content="@BSVBlockchain" />
|
||||||
|
<meta name="twitter:creator" content="@BSVBlockchain" />
|
||||||
|
<meta property="og:title" content="The Original Bitcoin Blockchain : Bitcoin SV (BSV)" />
|
||||||
|
<meta property="og:description" content="Bitcoin SV is Fast, Scalable, Environmentally-efficient and Regulation-friendly. It is Bitcoin exactly as envisioned in Satoshi Nakamotoâs Bitcoin White Paper." />
|
||||||
|
<meta property="og:url" content="https://www.bitcoinsv.com" />
|
||||||
|
<meta property="og:image" content="images/NbKzG5x.png" />
|
||||||
|
<meta property="og:image:alt" content="BitcoinSV SEO Image" />
|
||||||
|
<meta property="og:image:type" content="image/jpeg" />
|
||||||
|
<meta property="og:image:width" content="1200" />
|
||||||
|
<meta property="og:image:height" content="630" />
|
||||||
|
<meta property="og:site_name" content="BitcoinSV" />
|
||||||
|
<link rel="canonical" href="https://www.bitcoinsv.com" />
|
||||||
|
<meta name="next-head-count" content="18" />
|
||||||
|
|
||||||
|
<link rel="preload" href="./70b889b5d4de457a.css" as="style" />
|
||||||
|
<link rel="stylesheet" href="./70b889b5d4de457a.css" data-n-g />
|
||||||
|
<noscript data-n-css></noscript>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="__next">
|
||||||
|
<div translate="yes" class="relative" data-headlessui-state>
|
||||||
|
<div class="fixed top-0 left-0 right-0 z-20 backdrop-blur-md">
|
||||||
|
<div class="relative container-main">
|
||||||
|
<div class="flex items-center justify-between h-20 lg:py-0 sm:py-4">
|
||||||
|
<div class="z-10">
|
||||||
|
<div class="flex">
|
||||||
|
<span class="sr-only">BitcoinSV</span>
|
||||||
|
<div class="relative w-32 h-10 p-2 cursor-pointer sm:h-10">
|
||||||
|
<img alt="logo" loading="lazy" decoding="async" data-nimg="fill" class="w-auto mr-1" style="position: absolute; height: 100%; width: 100%; left: 0; top: 0; right: 0; bottom: 0; color: transparent" src="images/logo.svg" />
|
||||||
|
</div>
|
||||||
|
</div></a>
|
||||||
|
</div>
|
||||||
|
<div class="-my-2 lg:hidden">
|
||||||
|
<button class="inline-flex items-center justify-center p-2 text-gray-400 rounded-md hover:text-gray-100 hover:bg-gray-700/80" type="button" aria-expanded="false" data-headlessui-state>
|
||||||
|
<span class="sr-only">Open menu</span><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon" class="w-6 h-6">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<a href="https://bsvblockchain.org"><button class="cursor-pointer bg-bitcoin-400 hover:bg-bitcoin-700 ease-in-out duration-300 font-bold text-sm rounded-sm text-center hidden py-[9px] px-[17px] shadow-sm lg:flex">
|
||||||
|
BSVblockchain.org
|
||||||
|
</button></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="
|
||||||
|
position: fixed;
|
||||||
|
top: 1px;
|
||||||
|
left: 1px;
|
||||||
|
width: 1px;
|
||||||
|
height: 0;
|
||||||
|
padding: 0;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
white-space: nowrap;
|
||||||
|
border-width: 0;
|
||||||
|
display: none;
|
||||||
|
"></div>
|
||||||
|
<div class="bg-black">
|
||||||
|
<div>
|
||||||
|
<div class="bg-black bg-img min-h-screen">
|
||||||
|
<div class="z-50 bg-black hero-bg md:min-h-[900px] md:h-screen">
|
||||||
|
<div class="home-hero-main font-inter container-main">
|
||||||
|
<div class="pt-12 pb-10 md:pt-20">
|
||||||
|
<div class="flex justify-center md:justify-start sm:mt-14 top-10 lg:top-[83px] min-[916px]:absolute">
|
||||||
|
<div class="max-w-[626px] sm:mt-14 overflow-hidden">
|
||||||
|
<h1 class="mb-6 text-4xl sm:text-5xl font-bold text-white md:text-6xl">
|
||||||
|
Global Infrastructure On The Original
|
||||||
|
<br /><span class="font-semibold text-white">Bitcoin Blockchain</span>
|
||||||
|
</h1>
|
||||||
|
<div class="border-l-2 border-bitcoin-400">
|
||||||
|
<p class="text-xl pl-4 text-white leading-lh-30 max-w-[538px]">
|
||||||
|
Discover how Bitcoin SV (BSV) has delivered Satoshiâs vision of One Global Bitcoin blockchain. Itâs fast, scalable, transformative,
|
||||||
|
efficient, and regulation-friendly (thus stable), setting many records along the way. BSV is a truly powerful blockchain.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="flex flex-col items-start justify-start mt-12 space-y-10 text-white lg:justify-start sm:items-baseline sm:flex-row gap-x-12">
|
||||||
|
<a href="https://bsvblockchain.org">
|
||||||
|
<div class="flex items-center space-x-3.5 w-fit py-4 text-lg font-semibold text-black duration-500 rounded-sm px-7 hover:bg-gradient-to-r hover:from-bitcoin-500/30 hover:to-bitcoin-400/30 outline outline-2 outline-bitcoin-400/25 bg-bitcoin-400 cursor-pointer">
|
||||||
|
<svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" class="text-2xl" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<circle cx="12" cy="12" r="2"></circle>
|
||||||
|
<path d="M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14"></path>
|
||||||
|
</svg><span>Main Page</span>
|
||||||
|
</div>
|
||||||
|
</a><a href="https://bsvblockchain.org/about">
|
||||||
|
<div class="flex items-center space-x-3 text-lg font-semibold text-white duration-500 rounded-sm cursor-pointer w-fit">
|
||||||
|
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill="none" stroke-miterlimit="10" stroke-width="32" d="M112 111v290c0 17.44 17 28.52 31 20.16l247.9-148.37c12.12-7.25 12.12-26.33 0-33.58L143 90.84c-14-8.36-31 2.72-31 20.16z"></path>
|
||||||
|
</svg><span class>Intro to BSV</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="mt-[50px] mb-3 sm:ml-0"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="pt-16 md:pt-0">
|
||||||
|
<div class="bg-globe">
|
||||||
|
<div class="container-main lg:w-2/4 sm:max-md:w-11/12 pb-16">
|
||||||
|
<div class="lg:w-[732px] lg:h-[93.9px] px-3">
|
||||||
|
<h1 class="text-tertiery text-[28px] font-light uppercase md:text-[28px] text-center tracking-[5px]">The Timeline</h1>
|
||||||
|
</div>
|
||||||
|
<div class="exp md:max-lg:pl-10">
|
||||||
|
<div class="relative">
|
||||||
|
<div class="py-2.5 px-5 w-fit border border-stone-200 box-border">
|
||||||
|
<h4 class="text-tertiery text-sm text-400">8th January 2009</h4>
|
||||||
|
</div>
|
||||||
|
<div class="ml-[200px] w-[5%] top-[15px] absolute hidden md:block">
|
||||||
|
<div class="bg-white mr-[10px] rounded-[10px] w-[6px] h-[6px] text-[10px] text-center leading-[15px]"></div>
|
||||||
|
</div>
|
||||||
|
<div class="rounded-[3px] top-0 mb-30p mt-0 md:mt-[-50px] ml-0 md:ml-[250px] max-md:mt-3">
|
||||||
|
<div class="box-border text-sm tracking-[1px] text-stone-300 max-w-[438px]">
|
||||||
|
<h4 class="text-bitcoin-400 text-400 text-lg mb-2 leading-[21.59px]">Bitcoin white paper released</h4>
|
||||||
|
<p class="text-secondary tracking-[0.2px] leading-[1.74em] font-karla">
|
||||||
|
The vision for what Bitcoin is was outlined by its inventor, Satoshi Nakamoto, in the white paper entitled
|
||||||
|
âBitcoin: A Peer to Peer Electronic Cash Systemâ. Four months later the first open source Bitcoin client software is released.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="relative">
|
||||||
|
<div class="py-2.5 px-5 w-fit border border-stone-200 box-border">
|
||||||
|
<h4 class="text-tertiery text-sm text-400">August 1st, 2017</h4>
|
||||||
|
</div>
|
||||||
|
<div class="ml-[200px] w-[5%] top-[15px] absolute hidden md:block">
|
||||||
|
<div class="bg-white mr-[10px] rounded-[10px] w-[6px] h-[6px] text-[10px] text-center leading-[15px]"></div>
|
||||||
|
</div>
|
||||||
|
<div class="rounded-[3px] top-0 mb-30p mt-0 md:mt-[-50px] ml-0 md:ml-[250px] max-md:mt-3">
|
||||||
|
<div class="box-border text-sm tracking-[1px] text-stone-300 max-w-[438px]">
|
||||||
|
<h4 class="text-bitcoin-400 text-400 text-lg mb-2 leading-[21.59px]">BCH remains as Bitcoin, BTC forks away</h4>
|
||||||
|
<p class="text-secondary tracking-[0.2px] leading-[1.74em] font-karla">
|
||||||
|
âSegregated Witnessâ or SegWit, was designed to remove the tracing capabilities of Bitcoin allowing the introduction of off-chain,
|
||||||
|
opaque exchange solutions such as the Lightning Network. The introduction of this broke Bitcoinâs original protocol and clearly
|
||||||
|
renders BTC as non-Bitcoin compliant and intentionally ineffective.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="relative">
|
||||||
|
<div class="py-2.5 px-5 w-fit border border-stone-200 box-border">
|
||||||
|
<h4 class="text-tertiery text-sm text-400">November 15th, 2018</h4>
|
||||||
|
</div>
|
||||||
|
<div class="ml-[200px] w-[5%] top-[15px] absolute hidden md:block">
|
||||||
|
<div class="bg-white mr-[10px] rounded-[10px] w-[6px] h-[6px] text-[10px] text-center leading-[15px]"></div>
|
||||||
|
</div>
|
||||||
|
<div class="rounded-[3px] top-0 mb-30p mt-0 md:mt-[-50px] ml-0 md:ml-[250px] max-md:mt-3">
|
||||||
|
<div class="box-border text-sm tracking-[1px] text-stone-300 max-w-[438px]">
|
||||||
|
<h4 class="text-bitcoin-400 text-400 text-lg mb-2 leading-[21.59px]">BSV remains as Bitcoin, BCH forks away</h4>
|
||||||
|
<p class="text-secondary tracking-[0.2px] leading-[1.74em] font-karla">
|
||||||
|
Bitcoin SV (BSV) becomes the new ticker symbol for the original Bitcoin Protocol when BCH decided to divert from Bitcoinâs white
|
||||||
|
paper, introduce non-Bitcoin compliant features which included introducing anonymity that hinders government and financial
|
||||||
|
regulation. This is why itâs considered Bitcoinâs Independence Day.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="relative">
|
||||||
|
<div class="py-2.5 px-5 w-fit border border-stone-200 box-border">
|
||||||
|
<h4 class="text-tertiery text-sm text-400">February 2020</h4>
|
||||||
|
</div>
|
||||||
|
<div class="ml-[200px] w-[5%] top-[15px] absolute hidden md:block">
|
||||||
|
<div class="bg-white mr-[10px] rounded-[10px] w-[6px] h-[6px] text-[10px] text-center leading-[15px]"></div>
|
||||||
|
</div>
|
||||||
|
<div class="rounded-[3px] top-0 mb-30p mt-0 md:mt-[-50px] ml-0 md:ml-[250px] max-md:mt-3">
|
||||||
|
<div class="box-border text-sm tracking-[1px] text-stone-300 max-w-[438px]">
|
||||||
|
<h4 class="text-bitcoin-400 text-400 text-lg mb-2 leading-[21.59px]">Genesis Upgrade</h4>
|
||||||
|
<p class="text-secondary tracking-[0.2px] leading-[1.74em] font-karla">
|
||||||
|
The Genesis upgrade restored the original Bitcoin Protocol as closely as possible to Satoshiâs original design, locking it down to
|
||||||
|
create stability for developers and enterprises to build upon. Unbounded scaling returned, as did the original Bitcoin script
|
||||||
|
language that allows developers to build on-chain applications easier.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="relative">
|
||||||
|
<div class="py-2.5 px-5 w-fit border border-stone-200 box-border">
|
||||||
|
<h4 class="text-tertiery text-sm text-400">2022 onwards</h4>
|
||||||
|
</div>
|
||||||
|
<div class="ml-[200px] w-[5%] top-[15px] absolute hidden md:block">
|
||||||
|
<div class="bg-white mr-[10px] rounded-[10px] w-[6px] h-[6px] text-[10px] text-center leading-[15px]"></div>
|
||||||
|
</div>
|
||||||
|
<div class="rounded-[3px] top-0 mb-30p mt-0 md:mt-[-50px] ml-0 md:ml-[250px] max-md:mt-3">
|
||||||
|
<div class="box-border text-sm tracking-[1px] text-stone-300 max-w-[438px]">
|
||||||
|
<h4 class="text-bitcoin-400 text-400 text-lg mb-2 leading-[21.59px]">Bitcoin sets numerous World Records</h4>
|
||||||
|
<p class="text-secondary tracking-[0.2px] leading-[1.74em] font-karla">
|
||||||
|
Numerous world records have now been set on Bitcoinâs original protocol including regularly surpassing millions of transactions a
|
||||||
|
day, the largest blocks (+4GB), largest NFT (1GB) and the lowest environmental impact of any proof-of-work (POW) chain.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="relative">
|
||||||
|
<div class="py-2.5 px-5 w-fit border border-stone-200 box-border">
|
||||||
|
<h4 class="text-tertiery text-sm text-400">31st July 2023</h4>
|
||||||
|
</div>
|
||||||
|
<div class="ml-[200px] w-[5%] top-[15px] absolute hidden md:block">
|
||||||
|
<div class="bg-white mr-[10px] rounded-[10px] w-[6px] h-[6px] text-[10px] text-center leading-[15px]"></div>
|
||||||
|
</div>
|
||||||
|
<div class="rounded-[3px] top-0 mb-30p mt-0 md:mt-[-50px] ml-0 md:ml-[250px] max-md:mt-3">
|
||||||
|
<div class="box-border text-sm tracking-[1px] text-stone-300 max-w-[438px]">
|
||||||
|
<h4 class="text-bitcoin-400 text-400 text-lg mb-2 leading-[21.59px]">Unifying the BitcoinSV brands under BSVblockchain</h4>
|
||||||
|
<p class="text-secondary tracking-[0.2px] leading-[1.74em] font-karla">
|
||||||
|
The BitcoinSV brands have been unified under the BSVblockchain umbrella, streamlining their approach and providing a clear, cohesive
|
||||||
|
identity for the project.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<div class="bg-img bg-black">
|
||||||
|
<div class="bg-black/40 pt-16 pb-12">
|
||||||
|
<div class="container-main">
|
||||||
|
<div class="flex flex-col gap-16">
|
||||||
|
<div class="flex justify-between font-inter text-white text-base pt-8 gap-8 border border-transparent border-t-white">
|
||||||
|
<p>© 2025 BSV Blockchain Association.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
23
tests/cardano_org.html
Normal file
23
tests/cardano_org.html
Normal file
File diff suppressed because one or more lines are too long
102
tests/celsius_network.html
Normal file
102
tests/celsius_network.html
Normal file
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue