
NEW
0x v2 Pricing Engine is live! â Best prices & trade execution
diff --git a/config/settings.yml b/config/settings.yml new file mode 100644 index 0000000..bf26b83 --- /dev/null +++ b/config/settings.yml @@ -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" diff --git a/config/sites.yml b/config/sites.yml new file mode 100644 index 0000000..702731e --- /dev/null +++ b/config/sites.yml @@ -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/" diff --git a/data/data.db b/data/data.db new file mode 100644 index 0000000..92f31d3 Binary files /dev/null and b/data/data.db differ diff --git a/data/logs.db b/data/logs.db new file mode 100644 index 0000000..55edd62 Binary files /dev/null and b/data/logs.db differ diff --git a/data/pytorch_dataset/0x_org.json b/data/pytorch_dataset/0x_org.json new file mode 100644 index 0000000..8ba2316 --- /dev/null +++ b/data/pytorch_dataset/0x_org.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/aave_com.json b/data/pytorch_dataset/aave_com.json new file mode 100644 index 0000000..f7f6abe --- /dev/null +++ b/data/pytorch_dataset/aave_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/avax_network.json b/data/pytorch_dataset/avax_network.json new file mode 100644 index 0000000..9bcfe24 --- /dev/null +++ b/data/pytorch_dataset/avax_network.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/basicattentiontoken_org.json b/data/pytorch_dataset/basicattentiontoken_org.json new file mode 100644 index 0000000..e60e678 --- /dev/null +++ b/data/pytorch_dataset/basicattentiontoken_org.json @@ -0,0 +1,8 @@ +[ + { + "name": "A new token to value user attention on the Internet.", + "symbol": "BAT", + "price": "$", + "market_cap": "N/A" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/bitcoin_org.json b/data/pytorch_dataset/bitcoin_org.json new file mode 100644 index 0000000..12bbf43 --- /dev/null +++ b/data/pytorch_dataset/bitcoin_org.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/bitcoincash_org.json b/data/pytorch_dataset/bitcoincash_org.json new file mode 100644 index 0000000..9520c2c --- /dev/null +++ b/data/pytorch_dataset/bitcoincash_org.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/bitcoinsv_com.json b/data/pytorch_dataset/bitcoinsv_com.json new file mode 100644 index 0000000..d97959c --- /dev/null +++ b/data/pytorch_dataset/bitcoinsv_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/cardano_org.json b/data/pytorch_dataset/cardano_org.json new file mode 100644 index 0000000..73b5c3f --- /dev/null +++ b/data/pytorch_dataset/cardano_org.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/celsius_network.json b/data/pytorch_dataset/celsius_network.json new file mode 100644 index 0000000..91cde55 --- /dev/null +++ b/data/pytorch_dataset/celsius_network.json @@ -0,0 +1,8 @@ +[ + { + "name": "N/A", + "symbol": "US", + "price": "N/A", + "market_cap": "N/A" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/chain_link.json b/data/pytorch_dataset/chain_link.json new file mode 100644 index 0000000..99c3685 --- /dev/null +++ b/data/pytorch_dataset/chain_link.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/coinmarketcap_com.json b/data/pytorch_dataset/coinmarketcap_com.json new file mode 100644 index 0000000..738cba3 --- /dev/null +++ b/data/pytorch_dataset/coinmarketcap_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/coinmarketcap_com_nft_upcoming.json b/data/pytorch_dataset/coinmarketcap_com_nft_upcoming.json new file mode 100644 index 0000000..854df38 --- /dev/null +++ b/data/pytorch_dataset/coinmarketcap_com_nft_upcoming.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/compound_finance.json b/data/pytorch_dataset/compound_finance.json new file mode 100644 index 0000000..18d7ccd --- /dev/null +++ b/data/pytorch_dataset/compound_finance.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/cosmos_network.json b/data/pytorch_dataset/cosmos_network.json new file mode 100644 index 0000000..975d0da --- /dev/null +++ b/data/pytorch_dataset/cosmos_network.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/decentraland_org.json b/data/pytorch_dataset/decentraland_org.json new file mode 100644 index 0000000..fb43c09 --- /dev/null +++ b/data/pytorch_dataset/decentraland_org.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/dogecoin_com.json b/data/pytorch_dataset/dogecoin_com.json new file mode 100644 index 0000000..50ce831 --- /dev/null +++ b/data/pytorch_dataset/dogecoin_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/elrond_com.json b/data/pytorch_dataset/elrond_com.json new file mode 100644 index 0000000..bba0421 --- /dev/null +++ b/data/pytorch_dataset/elrond_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/eos_io.json b/data/pytorch_dataset/eos_io.json new file mode 100644 index 0000000..771aeb0 --- /dev/null +++ b/data/pytorch_dataset/eos_io.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/ethereum_org.json b/data/pytorch_dataset/ethereum_org.json new file mode 100644 index 0000000..c801ee1 --- /dev/null +++ b/data/pytorch_dataset/ethereum_org.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/ethereumclassic_org.json b/data/pytorch_dataset/ethereumclassic_org.json new file mode 100644 index 0000000..c58c7fd --- /dev/null +++ b/data/pytorch_dataset/ethereumclassic_org.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/filecoin_io.json b/data/pytorch_dataset/filecoin_io.json new file mode 100644 index 0000000..73fd8c7 --- /dev/null +++ b/data/pytorch_dataset/filecoin_io.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/global_bittrex_com.json b/data/pytorch_dataset/global_bittrex_com.json new file mode 100644 index 0000000..d94e646 --- /dev/null +++ b/data/pytorch_dataset/global_bittrex_com.json @@ -0,0 +1,8 @@ +[ + { + "name": "Bittrex", + "symbol": "N/A", + "price": "N/A", + "market_cap": "N/A" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/holochain_org.json b/data/pytorch_dataset/holochain_org.json new file mode 100644 index 0000000..3fc5185 --- /dev/null +++ b/data/pytorch_dataset/holochain_org.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/icon_foundation.json b/data/pytorch_dataset/icon_foundation.json new file mode 100644 index 0000000..b55fc71 --- /dev/null +++ b/data/pytorch_dataset/icon_foundation.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/kusama_network.json b/data/pytorch_dataset/kusama_network.json new file mode 100644 index 0000000..c350010 --- /dev/null +++ b/data/pytorch_dataset/kusama_network.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/litecoin_org.json b/data/pytorch_dataset/litecoin_org.json new file mode 100644 index 0000000..f3f3ecd --- /dev/null +++ b/data/pytorch_dataset/litecoin_org.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/makerdao_com.json b/data/pytorch_dataset/makerdao_com.json new file mode 100644 index 0000000..ba2be20 --- /dev/null +++ b/data/pytorch_dataset/makerdao_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/nem_io.json b/data/pytorch_dataset/nem_io.json new file mode 100644 index 0000000..d059082 --- /dev/null +++ b/data/pytorch_dataset/nem_io.json @@ -0,0 +1,8 @@ +[ + { + "name": "Technical Documentation for Developers and Average Users.", + "symbol": "NEM", + "price": "N/A", + "market_cap": "N/A" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/neo_org.json b/data/pytorch_dataset/neo_org.json new file mode 100644 index 0000000..7705fcd --- /dev/null +++ b/data/pytorch_dataset/neo_org.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/ont_io.json b/data/pytorch_dataset/ont_io.json new file mode 100644 index 0000000..81b8331 --- /dev/null +++ b/data/pytorch_dataset/ont_io.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/pancakeswap_finance.json b/data/pytorch_dataset/pancakeswap_finance.json new file mode 100644 index 0000000..ffa6938 --- /dev/null +++ b/data/pytorch_dataset/pancakeswap_finance.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/polkadot_network.json b/data/pytorch_dataset/polkadot_network.json new file mode 100644 index 0000000..9aa7a01 --- /dev/null +++ b/data/pytorch_dataset/polkadot_network.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/qtum_org.json b/data/pytorch_dataset/qtum_org.json new file mode 100644 index 0000000..30f2282 --- /dev/null +++ b/data/pytorch_dataset/qtum_org.json @@ -0,0 +1,8 @@ +[ + { + "name": "Qtum", + "symbol": "QTUM", + "price": "N/A", + "market_cap": "N/A" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/ripple_com_xrp.json b/data/pytorch_dataset/ripple_com_xrp.json new file mode 100644 index 0000000..0752e16 --- /dev/null +++ b/data/pytorch_dataset/ripple_com_xrp.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/sia_tech.json b/data/pytorch_dataset/sia_tech.json new file mode 100644 index 0000000..e6c064d --- /dev/null +++ b/data/pytorch_dataset/sia_tech.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/solana_com.json b/data/pytorch_dataset/solana_com.json new file mode 100644 index 0000000..4fd4543 --- /dev/null +++ b/data/pytorch_dataset/solana_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/sushi_com.json b/data/pytorch_dataset/sushi_com.json new file mode 100644 index 0000000..2b77ff2 --- /dev/null +++ b/data/pytorch_dataset/sushi_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/synthetix_io.json b/data/pytorch_dataset/synthetix_io.json new file mode 100644 index 0000000..6a0f20a --- /dev/null +++ b/data/pytorch_dataset/synthetix_io.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/tether_to.json b/data/pytorch_dataset/tether_to.json new file mode 100644 index 0000000..2de04cc --- /dev/null +++ b/data/pytorch_dataset/tether_to.json @@ -0,0 +1,8 @@ +[ + { + "name": "Tether \u00e2\u0080\u0093 Official Home of Tether", + "symbol": "N/A", + "price": "N/A", + "market_cap": "N/A" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/tezos_com.json b/data/pytorch_dataset/tezos_com.json new file mode 100644 index 0000000..e7423fe --- /dev/null +++ b/data/pytorch_dataset/tezos_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/tron_network.json b/data/pytorch_dataset/tron_network.json new file mode 100644 index 0000000..d29c009 --- /dev/null +++ b/data/pytorch_dataset/tron_network.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/uniswap_org.json b/data/pytorch_dataset/uniswap_org.json new file mode 100644 index 0000000..f2066ad --- /dev/null +++ b/data/pytorch_dataset/uniswap_org.json @@ -0,0 +1,8 @@ +[ + { + "name": "Swap or provide liquidity on the Uniswap Protocol", + "symbol": "N/A", + "price": "N/A", + "market_cap": "N/A" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/wbtc_network.json b/data/pytorch_dataset/wbtc_network.json new file mode 100644 index 0000000..625e001 --- /dev/null +++ b/data/pytorch_dataset/wbtc_network.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_algorand_co.json b/data/pytorch_dataset/www_algorand_co.json new file mode 100644 index 0000000..a05184e --- /dev/null +++ b/data/pytorch_dataset/www_algorand_co.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_binance_com.json b/data/pytorch_dataset/www_binance_com.json new file mode 100644 index 0000000..445a45c --- /dev/null +++ b/data/pytorch_dataset/www_binance_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_bitfinex_com.json b/data/pytorch_dataset/www_bitfinex_com.json new file mode 100644 index 0000000..92db549 --- /dev/null +++ b/data/pytorch_dataset/www_bitfinex_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_bt_io.json b/data/pytorch_dataset/www_bt_io.json new file mode 100644 index 0000000..0add51c --- /dev/null +++ b/data/pytorch_dataset/www_bt_io.json @@ -0,0 +1,8 @@ +[ + { + "name": "An Era of Connecting All Chains.", + "symbol": "N/A", + "price": "N/A", + "market_cap": "N/A" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_centre_io_usdc.json b/data/pytorch_dataset/www_centre_io_usdc.json new file mode 100644 index 0000000..587398e --- /dev/null +++ b/data/pytorch_dataset/www_centre_io_usdc.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_chiliz_com.json b/data/pytorch_dataset/www_chiliz_com.json new file mode 100644 index 0000000..41c0fcb --- /dev/null +++ b/data/pytorch_dataset/www_chiliz_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_dash_org.json b/data/pytorch_dataset/www_dash_org.json new file mode 100644 index 0000000..6ab8ac8 --- /dev/null +++ b/data/pytorch_dataset/www_dash_org.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_getmonero_org.json b/data/pytorch_dataset/www_getmonero_org.json new file mode 100644 index 0000000..1ca473d --- /dev/null +++ b/data/pytorch_dataset/www_getmonero_org.json @@ -0,0 +1,8 @@ +[ + { + "name": "Monero, a digital currency that is secure, private, and untraceable", + "symbol": "FAQ", + "price": "N/A", + "market_cap": "N/A" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_huobi_com.json b/data/pytorch_dataset/www_huobi_com.json new file mode 100644 index 0000000..9115a55 --- /dev/null +++ b/data/pytorch_dataset/www_huobi_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_kucoin_com.json b/data/pytorch_dataset/www_kucoin_com.json new file mode 100644 index 0000000..6592df3 --- /dev/null +++ b/data/pytorch_dataset/www_kucoin_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_okx_com.json b/data/pytorch_dataset/www_okx_com.json new file mode 100644 index 0000000..2432ab5 --- /dev/null +++ b/data/pytorch_dataset/www_okx_com.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_stellar_org.json b/data/pytorch_dataset/www_stellar_org.json new file mode 100644 index 0000000..8e0b51f --- /dev/null +++ b/data/pytorch_dataset/www_stellar_org.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_thetatoken_org.json b/data/pytorch_dataset/www_thetatoken_org.json new file mode 100644 index 0000000..b0e164b --- /dev/null +++ b/data/pytorch_dataset/www_thetatoken_org.json @@ -0,0 +1,8 @@ +[ + { + "name": "Theta Network", + "symbol": "N/A", + "price": "N/A", + "market_cap": "N/A" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_vechain_org.json b/data/pytorch_dataset/www_vechain_org.json new file mode 100644 index 0000000..1f38e61 --- /dev/null +++ b/data/pytorch_dataset/www_vechain_org.json @@ -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" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/www_zilliqa_com.json b/data/pytorch_dataset/www_zilliqa_com.json new file mode 100644 index 0000000..70ce005 --- /dev/null +++ b/data/pytorch_dataset/www_zilliqa_com.json @@ -0,0 +1,8 @@ +[ + { + "name": "Zilliqa", + "symbol": "A", + "price": "N/A", + "market_cap": "N/A" + } +] \ No newline at end of file diff --git a/data/pytorch_dataset/z_cash.json b/data/pytorch_dataset/z_cash.json new file mode 100644 index 0000000..ca31530 --- /dev/null +++ b/data/pytorch_dataset/z_cash.json @@ -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" + } +] \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..e69de29 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/databases/__init__.py b/src/databases/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/databases/__pycache__/__init__.cpython-313.pyc b/src/databases/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..1c1e680 Binary files /dev/null and b/src/databases/__pycache__/__init__.cpython-313.pyc differ diff --git a/src/databases/__pycache__/data.cpython-313.pyc b/src/databases/__pycache__/data.cpython-313.pyc new file mode 100644 index 0000000..ff7a2db Binary files /dev/null and b/src/databases/__pycache__/data.cpython-313.pyc differ diff --git a/src/databases/__pycache__/logs.cpython-313.pyc b/src/databases/__pycache__/logs.cpython-313.pyc new file mode 100644 index 0000000..b12bbda Binary files /dev/null and b/src/databases/__pycache__/logs.cpython-313.pyc differ diff --git a/src/databases/data.py b/src/databases/data.py new file mode 100644 index 0000000..6c6a790 --- /dev/null +++ b/src/databases/data.py @@ -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") diff --git a/src/databases/logs.py b/src/databases/logs.py new file mode 100644 index 0000000..6501f76 --- /dev/null +++ b/src/databases/logs.py @@ -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") diff --git a/src/main.py b/src/main.py new file mode 100644 index 0000000..e69de29 diff --git a/src/orchestrator.py b/src/orchestrator.py new file mode 100644 index 0000000..d31fe5c --- /dev/null +++ b/src/orchestrator.py @@ -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() diff --git a/src/scraper/__init__.py b/src/scraper/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/scraper/__pycache__/__init__.cpython-313.pyc b/src/scraper/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000..2d3f010 Binary files /dev/null and b/src/scraper/__pycache__/__init__.cpython-313.pyc differ diff --git a/src/scraper/__pycache__/fetcher.cpython-313.pyc b/src/scraper/__pycache__/fetcher.cpython-313.pyc new file mode 100644 index 0000000..fe4a228 Binary files /dev/null and b/src/scraper/__pycache__/fetcher.cpython-313.pyc differ diff --git a/src/scraper/__pycache__/html.cpython-313.pyc b/src/scraper/__pycache__/html.cpython-313.pyc new file mode 100644 index 0000000..27e23db Binary files /dev/null and b/src/scraper/__pycache__/html.cpython-313.pyc differ diff --git a/src/scraper/__pycache__/js.cpython-313.pyc b/src/scraper/__pycache__/js.cpython-313.pyc new file mode 100644 index 0000000..ea9dcca Binary files /dev/null and b/src/scraper/__pycache__/js.cpython-313.pyc differ diff --git a/src/scraper/__pycache__/parser.cpython-313.pyc b/src/scraper/__pycache__/parser.cpython-313.pyc new file mode 100644 index 0000000..1ac32eb Binary files /dev/null and b/src/scraper/__pycache__/parser.cpython-313.pyc differ diff --git a/src/scraper/analyser.py b/src/scraper/analyser.py new file mode 100644 index 0000000..e69de29 diff --git a/src/scraper/base.py b/src/scraper/base.py new file mode 100644 index 0000000..e69de29 diff --git a/src/scraper/discord.py b/src/scraper/discord.py new file mode 100644 index 0000000..e69de29 diff --git a/src/scraper/fetcher.py b/src/scraper/fetcher.py new file mode 100644 index 0000000..b1a6eff --- /dev/null +++ b/src/scraper/fetcher.py @@ -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 + + + + diff --git a/src/scraper/html.py b/src/scraper/html.py new file mode 100644 index 0000000..f9b594e --- /dev/null +++ b/src/scraper/html.py @@ -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}") + + diff --git a/src/scraper/js.py b/src/scraper/js.py new file mode 100644 index 0000000..d536017 --- /dev/null +++ b/src/scraper/js.py @@ -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}") + + diff --git a/src/scraper/nfts.py b/src/scraper/nfts.py new file mode 100644 index 0000000..e69de29 diff --git a/src/scraper/parser.py b/src/scraper/parser.py new file mode 100644 index 0000000..356e712 --- /dev/null +++ b/src/scraper/parser.py @@ -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) \ No newline at end of file diff --git a/src/scraper/tokens.py b/src/scraper/tokens.py new file mode 100644 index 0000000..e69de29 diff --git a/src/scraper/twitter.py b/src/scraper/twitter.py new file mode 100644 index 0000000..e69de29 diff --git a/src/scraper/utils.py b/src/scraper/utils.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/0x_org.html b/tests/0x_org.html new file mode 100644 index 0000000..9381c71 --- /dev/null +++ b/tests/0x_org.html @@ -0,0 +1,716 @@ +

.png)
.png)


.png)
.png)


.png)
.png)

.png)
.png)
.png)

.png)
.png)
.png)
.png)
Transactions


Volume USD



Unique wallets




Composable DeFi building blocks designed to work seamlessly together.
.png)
Track key trading and revenue metrics with in-depth charts and data from onchain trades.
.png)
Quickly review API usage and spot spikes in errors.

Create new apps in minutes and manage them all from your dashboard.

Gain actionable insights into user trading behavior in real-time.
Add new products to each one of your apps with just one-click.




Instantly generate and manage API keys directly from the dashboard.
.png)
Build your app in days, not months
with seamless app integration.
.png)
Best-in-class liquidity aggregation and smart order routing. Try it live on Matcha.

Fastest way to tap into 130+ exchanges.

Secure and audited DEX infrastructure with 99.82% uptime.
Get started in less than five minutes! To get started, simply create an account on the 0x Dashboard, choose a plan, set up your app, and generate your API keys.
0x offers two options for monetizing your order flow so you can build a sustainable Web3 business. You can set a percentage fee and a fee recipient on trades initiated within your application via Swap API requests. Additionally, you may take the positive slippage generated from your swaps. You can find details on both approaches in our API references.
0x supports Ethereum, Base, Arbitrum, Optimism, Polygon, Binance Smart Chain, Avalanche, Scroll, Linea and Blast.
We offer two transparent, flexible tiers for Web3 businesses of all sizes. You can get started with them here. If you are a high volume app or have a unique business model, please contact us to discuss a custom plan.
Aave is the world’s largest liquidity protocol. Supply, borrow, swap, stake and more.
$ billion of liquidity currently supplied in Aave.
Earn interest and borrow assets.
Aave is one of the largest DeFi protocols with billions of dollars in weekly volume across Ethereum and 12+ networks.
Net deposits supplied across 13 networks.
Volume, past 30 days.
Average stablecoin supply APY Ethereum network, past year.
Average stablecoin borrow APR Ethereum network, past year.
Swap any ERC-20, even those borrowed or supplied.
Earn rewards for securing the protocol.
Easily track the risk level of your borrow positions.
Deployable on any EVM compatible network.
Users maintain control over their own funds throughout the supplying and borrowing process.
The Aave Protocol is open source and transactions are visible to anyone.
AAVE token holders decide which assets are listed and steer protocol development.
Integrating Aave's liquidity pools and interest rate mechanisms enables the creation of diverse products and applications.
GHO is the only decentralised, overcollateralised stablecoin native to the Aave Protocol.
Learn More%
Collateralisation30 Day Avg
+
GHO Minted1 Yr
Join Aave’s growing constellation of builders.
Aave Protocol has been trusted by leading institutions and companies.
AAVE token holders guide the Aave Protocol via procedures, voting, and smart contract execution.
Go to the ForumPeace of mind by design.
Peace of mind supported by multiple audits by the world’s leading security firms.
Learn MoreSecurity is a top priority. Report vulnerabilities or bugs responsibly and get rewarded.
Learn MoreThe Aave Protocol is secured with a backstop against protocol insolvency.
Learn MoreAave is leading the DeFi Renaissance, committed to it’s mission of bringing global finance onchain.
Learn MoreAave is a decentralised non-custodial liquidity protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market while earning interest, and borrowers can access liquidity by providing collateral that exceeds the borrowed amount.
Supplied tokens are stored in publicly accessible smart contracts that enable overcollateralised borrowing according to governance-approved parameters. The Aave Protocol smart contracts have been audited and formally verified by third parties.
No protocol can be considered entirely risk free, but extensive steps have been taken to minimize these risks as much as possible -- the Aave Protocol code is publicly available and auditable by anyone, and has been audited by multiple smart contract auditors. Any code changes must be executed through the onchain governance processes. Additionally, there is an ongoing bug bounty campaign and service providers specializing in technical reviews and risk mitigation.
AAVE is used as the centre of gravity of Aave Protocol governance. AAVE is used to vote and decide on the outcome of Aave Improvement Proposals (AIPs). Apart from this, AAVE can be staked within the protocol Safety Module to provide a backstop in the case of a shortfall event, and earn incentives for doing so.
Donât miss out because it took too long to deploy on Mainnet. Take advantage of the low-code tooling and configurability that makes it easy to launch your Web3 innovation in less than 60 seconds.

.jpeg)
Users hate waiting. Scaling at the cost of performance or security is not an option. Avalancheâs novel architecture allows for a universe of independent, but interconnected, blockchains that are all validated and kept secure by dynamic subsets of validators.


Over the last year, tens of thousands of people came together at Avalanche events worldwide. As one of the industryâs most diverse and supportive communities, Avalanche boasts members from all walks of life, with over 18 languages supported across the 1M+ strong online community.
When it comes to the energy required to run, no other blockchain comes close. According to the Crypto Carbon Ratings Institute, Avalanche consumes the same energy as only 46 US households each year.
Crypto and DeFi are hard to use and the $330 billion digital advertising industry is failing users, publishers and advertisers. With Basic Attention Token and Brave we want to take Crypto to the next 1B users and solve the endemic inefficiencies and privacy violations hobbling the digital ad industry.
BAT has seen stunning results since being integrated into the Brave browserâs first-of-its-kind global private ad platform: tens of millions of users worldwide; millions of verified creators accepting BAT; thousands of ad campaigns with leading brands; and growing utility with the most innovative names in blockchain. These results make BAT one of the most successful alt-coin projects to date. BAT is now bridged across the Ethereum and Solana blockchains, and offers utility to both ecosystems. +See transparency data
The foundation for mass adoption of crypto and DeFi
DeFi and NFT support
Buy crypto with credit and debit cards, crypto assets, and more
Manage fiat and crypto payment options on desktop and mobile
DeFi for everyone
Multi-chain support and the best price with the lowest fees
Hold BAT and save. Receive discounts when using BAT for transaction fees.
BAT utility for search engines
Utilize BAT with eCommerce
Rewards for IPNS verified content
Utilize BAT for content pinning and file sharing with IPFS
Users maintain privacy as they earn BAT for viewing ads.
Sign up for Brave RewardsPublishers and creators earn ad revenue and user contributions as well as tips.
Join Verified Creator NetworkBraveâs anonymous accounting lets advertisers know their adsâ effectiveness without violating privacy.
Learn More+400
Since launch we continue to work with some of the industry's biggest brands.
Close to 1,000,000 participants accept BAT, including some of the biggest Internet and crypto companies.

Founder & CEO
Creator of JavaScript, Mozilla, Firefox...

Founder & CTO

Chief Information Security Officer

The Zcash Company, Mojo Nation, DigiCash...

Facebook, Google...
+ Bitcoin.org is a community funded project, donations are appreciated and used to improve the website. +
+ +Bitcoin is an innovative payment network and a new kind of money.
+ + +Individuals
+Learn more
+Businesses
+Learn more
+Developers
+Learn more
+Get started with Bitcoin
+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. Bitcoin is open-source; its design is public, nobody owns or controls Bitcoin and everyone can take part. Through many of its unique properties, Bitcoin allows exciting uses that could not be covered by any previous payment system.
+Fast peer-to-peer transactions
+Worldwide payments
+Low processing fees
++
Fast
+Transact in seconds. Get confirmed in minutes.
++
Reliable
+A network that runs without congestion.
++
Low Fees
+Send money globally for pennies.
++
Simple
+Easy to use. No hassles.
++
Stable
+A payment system that's a proven store of value.
++
Secure
+World's most robust blockchain technology.
+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.
+All are welcome to join the Bitcoin Cash community as we move forward in creating sound money accessible to the whole world.
+Send Money Anywhere In the World, Almost for Free
+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.
+Be Your Own Bank and Have Full Control Over Your Money
+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.
+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.
+A Scarce Digital Currency with a Known, Fixed Supply
+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.
+Increase Your Privacy and Operate Anonymously
+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.
+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.
+Enjoy Exclusive Discounts
+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.
+Token Ecosystem
+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.
+Support Freedom Worldwide
+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.
+Ultra Low Fees
+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.
+No Chargebacks
+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.
+New Customers
+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.
+Free Marketing and Press
+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.
+In October 2008, Satoshi Nakamoto published the famous whitepaper entitled Bitcoin: A Peer to Peer Electronic Cash System
. 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.
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.
+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.
+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.
+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.
+The bitcoincashresearch.org 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.
+If you are interested in helping with translations, then please check out our CrowdIn project. Remember, we only accept human translations, any automated translations will be rejected.
++ 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. +
++ 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. +
++ â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. +
++ 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. +
++ 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. +
++ 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. +
++ The BitcoinSV brands have been unified under the BSVblockchain umbrella, streamlining their approach and providing a clear, cohesive + identity for the project. +
+Cardano is a blockchain platform for changemakers, innovators, and visionaries, with the tools and technologies required to create possibility for the many, as well as the few, and bring about positive global change.
Cardano is a proof-of-stake blockchain platform: the first to be founded on peer-reviewed research and developed through evidence-based methods. It combines pioneering technologies to provide unparalleled security and sustainability to decentralized applications, systems, and societies.
With a leading team of engineers, Cardano exists to redistribute power from unaccountable structures to the margins – to individuals – and be an enabling force for positive change and progress.
Protocol
Research
Transact
Open
Ecosystem
Ouroboros is the first peer-reviewed, verifiably-secure blockchain protocol, and Cardano is the first blockchain to implement it. Ouroboros enables decentralization in the Cardano network on a sustainable scale for global requirements and most crucially, without compromising security.
The protocol is the result of tireless efforts, based on foundational research, propelled by a vision for more secure and transparent global payment systems, and provides the means to equitably redistribute power and control.
Cardano is the first blockchain platform to be built through peer-reviewed research, to be secure enough to protect the data of billions, scalable enough to accommodate global systems, and robust enough to support foundational change.
We have changed science. We have changed what it means to build global systems and sustainable models of exchange and governance.
Alongside the community, entities, and companies building on Cardano, a new future is being defined: a decentralized future without intermediaries, where power is returned to the individual
Multiple independent entities collaborate within a decentralized team framework to drive Cardano forward, ensuring that it remains aligned with its core mission as it progresses and develops. These are a few of them:
Celsius was a global cryptocurrency platform and Bitcoin mining company that emerged from Chapter 11 bankruptcy on January 31, 2024.
On February 29, 2024, the Celsius mobile and web apps were shut down, as a part of the winding down of its business operations, as detailed in the Plan of Reorganization. This will have no impact on distributions to creditors.
Beginning on February 1, 2024, claim distributions to Eligible Creditors are being made in cryptocurrency and US dollars. Some creditors are eligible to receive equity shares in Ionic Digital LLC, which is the reorganized mining business, formed following the emergence from bankruptcy in accordance with the Plan. For more information, please refer to the case details at Stretto.
If you are a creditor with questions related to your claim distributions, please refer to our Distribution FAQ.
Read Frequently Asked Questions
FAQSubmit a new support request
New ticketAccess our Claims Portal
Login


Chainlink is defining how the world transacts onchain.
.webp)


The world's largest financial institutions are adopting Chainlink.
Time-tested security
Chainlink services are powered by decentralized oracle networks with a long track record of high availability, reliability, and data accuracy.
Universal interoperability
Chainlink connects existing systems to any public or private blockchain and enables secure cross-chain communication.
World-class developer experience
Chainlink provides developers across all major blockchains with extensive documentation, hands-on tutorials, and in-depth workshops.












.webp)
The global crypto market cap is $3.19T, a 0.72% increase over the last day.





60.01%
10.41%
PUBLISH
An open-source peer-to-peer digital currency, favoured by +Shiba Inus worldwide.
At its heart, Dogecoin is the accidental crypto movement that makes people smile! It is also an opensource peer-to-peer cryptocurrency that utilises blockchain technology, a highly secure decentralised system of storing information as a public ledger that is maintained by a network of computers called nodes. More than this, though, is the ethos of Dogecoin, summarised in the +Dogecoin Manifesto +, and its amazing, vibrant community made up of friendly folks just like you! +Learn more.
+
A wallet is necessary for people wanting to use, trade, or hold Dogecoin. You can pick a wallet
Learn more.



The Dogecoin community cares about supporting each other, being kind, teaching people about cryptocurrency, fundraising, having fun, making memes, and being absurd. This is nicely captured by Dogecoin’s unofficial tagline: Do Only Good Everyday. Get involved in our awesome community via the below links:

A common source of FUD surrounding Dogecoin is the claim that certain wallets holding a large percentage of the supply are owned by private investors or so-called “whales”. In reality, many of the top Dogecoin wallets are cold wallets or hot wallets controlled by … +Read more…
Oh yes it does, and it always has! The simple fact is that money has utility - and Dogecoin is money! Indeed, Dogecoin is one of the few cryptocurrencies that has been used for this main purpose from day one. +Dogecoin was first meant to be a joke - and it served, and will serve, … +Read more…
Right now, and for the next hundred years or so, Dogecoin operates like, and will continue to operate like, most other crypto assets. “Capped” assets are nowhere near mined out – and will continue adding to their supply, just like Dogecoin, for the foreseeable future. +Dogecoin’s … +Read more…
Dogecoin does not need coin burning marketing mechanisms that new tokens and other chains have attempted to implement to artificially inflate their prices. +Simplez.
Oh, yes it does - and it always has! +Dogecoin’s primary purpose has always been to be used as a currency. Billy Markus, co-creator of Dogecoin with Jackson Palmer, acted as a solo developer for the first Dogecoin Core releases. In 2014, Billy and Jackson left Dogecoin … +Read more…
A list of resources created by shibes that can be useful to work with Dogecoin and to research it.
Memes are awesome, and they’re easy to make! There’s lots of meme maker websites, and even meme applications that you can install on your smartphone to makes memes on the run. You may even go one step further and create Dogecoin-themed meme templates which have a possibility of … +Read more…
Miners and mining are at the center of Dogecoin’s Proof of Work consensus mechanism. Check these Dogepedia articles to understand what miners do, how they interact with nodes, and why mining pools come into play when it comes to mining: +What is a miner? What is a mining … +Read more…
A wallet is just a collection of private keys and public keys. +Each one of the wallet’s private keys is a randomised 256-bit number unique to your wallet, and it is what you need to be able to access and spend your coins. Your public address - the address which other Dogecoin … +Read more…
Dogecoin is an open-source project, meaning that anyone with some technical know-how can contribute to Dogecoin’s technical development. Even if you’re new to the space, it’s never too late to learn new tricks! +Dogecoin has an amazing team of developers and volunteers who are … +Read more…
Magic and memes! (Just kidding. Kind of.) +First things first: Dogecoin is money. +Like other popular cryptocurrencies, Dogecoin works by utilising blockchain technology. Unlike a lot of other popular cryptocurrencies, though, the fees to send Dogecoin are extremely small, and the … +Read more…
Mining pools are services, operated by third parties not affiliated with Dogecoin, which allow a group of miners to combine their hashing power when attempting to solve the “puzzles” involved in mining Dogecoin. +Mining rewards - consisting of 10,000 Dogecoin per block … +Read more…
Dogecoin’s history includes many charitable endeavours: from funding clean water wells in 2014 for Kenya, to the #TeamSeas initiative in 2021 – and many worthwhile causes in-between. The past year, though, has seen a dramatic increase in charities directly accepting Dogecoin … +Read more…






























Decentralized worlds and tokenized economies at internet scale.


































Access training and soon-to-be-released certification programs designed to give you the tools you need to deploy and scale your blockchain implementation, as well as grow your skills, validate your knowledge, and help you advance your career.
+
Let us know how we can support you and help you get started.
+
The leading platform for innovative apps and blockchain networks
Pick a wallet
Create accounts & manage assets
Get ETH
The currency of Ethereum
Choose a network
Enjoy minimal fees
Try apps
Finance, gaming, social

Stablecoins are currencies that maintain stable value. Their price matches the U.S. dollar or other steady assets.
Learn more
Billions can't open bank accounts or freely use their money. Ethereum's financial system is always open and unbiased.
Explore DeFi
Ethereum is the hub for blockchain innovation. The best projects are built on Ethereum.
Explore benefits

Art, certificates or even real estate can be tokenized. Anything can be a tradable token. Ownership is public and verifiable.
More on NFTs
Activity from all Ethereum networks

Crypto can feel overwhelming. Don't worry, these materials are designed to help you understand Ethereum in just a few minutes.
Be part of the digital revolution
Legacy
Ethereum

Ethereum is home to Web3's largest and most vibrant developer ecosystem. Use JavaScript and Python, or learn a smart contract language like Solidity or Vyper to write your own app.
Code examples

The ethereum.org website is built and maintained by hundreds of translators, coders, designers, copywriters, and enthusiastic community members each month.
Come ask questions, connect with people around the world and contribute to the website. You will get relevant practical experience and be guided during the process!
Ethereum.org community is the perfect place to start and learn.
Next calls
February 26, 2025 at 5:00 PM
March 13, 2025 at 4:00 PM
The latest blog posts and updates from the community
Ethereum communities host events all around the globe, all year long
This website is open source with hundreds of community contributors. You can propose edits to any of the content on this site.
FAQs
Frequently asked questions by various stakeholders
Why Classic?
Start here to get the lowdown on Ethereum Classic's reason for being and unique value proposition
Knowledge
Further reading on the foundations that underpin ETC
Videos
A collection of videos and podcasts to keep you informed on ETC concepts and happenings
Services
Apps, Wallets, and Exchanges that integrate with ETC; 100% unaudited, so watch out for the rug pulls!
Community
If you long for communication with people who are interested in ETC, here's how to find them
Network
RPC Endpoints, Explorers, Network Monitors, and other resources for the technically inclined
Mining
Pools, Software, and Hardware requirements will help you mine ETC for fun and profit
Development
Testnets, Tooling, Clients, and information on how to contribute to the ETC protocol itself
External links are unofficial community submissions.
External links are unofficial community submissions.
As incumbent institutions are increasingly threatened by the wild potential of blockchain tech, only truly decentralized and secure cryptocurrencies will survive.
+Existing in response to contract censorship on sister chain Ethereum™ (ETH) and to uphold and preserve the principle of Code is Law, Ethereum Classic (ETC) has proven its ability to resist censorship against all odds, and deliver the original Ethereum vision of unstoppable applications.
+By combining the technology of Ethereum™ (ETH) with the philosophy of Bitcoin (BTC), Ethereum Classic (ETC) is uniquely positioned to be the base layer smart contracts platform of the future, as other chains become compromised or captured by special interests.
+Welcome, and please be invited to discover the past, present, and future of Ethereum Classic; its principles, value proposition, community, and more - to understand why Classic.
+Holochain gives digital agency to organizations, markets, and people. By combining cryptography, distributed databases, and consensus-free validation—new social magic is possible.
AboutBuilding the everyday applications that power our lives.
HOLOHolochain is a chain like no other: simultaneously a validated onchain experience, and a fully distributed peer-to-peer application framework. This makes Holochain unique in the world of software and distributed networks. Here are a few building blocks that demonstrate what is possible.



+ + Unprecedented + interoperability and + scalability for + blockchain developers + who want to quickly push + the limits of what’s + possible. Built using + Substrate with nearly + the same codebase and + industry-leading + multichain + infrastructure as + Kusama’s cousin, + Polkadot. +
+The relationship between society and technology has deteriorated to the point where large entities routinely stretch and overstep their authority.
+Kusama is a network built as a risk-taking, fast-moving ‘canary in the coal mine’ for its cousin Polkadot. It's a living platform built for change agents to take back control, spark innovation and disrupt the status quo.
++ Kusama is a scalable network of specialized blockchains built using Substrate and nearly the same codebase as Polkadot. The network is an experimental development environment for teams who want to move fast and innovate on Kusama, or prepare for deployment on Polkadot. +
++ Kusama was founded in 2019 by Gavin Wood, founder of Polkadot and co-founder and former CTO of Ethereum. +
+
+ + Move fast and ship + your product. + Kusama’s risk-taking + and nimble mentality + allows developers to + move swiftly through + the governance and + upgrade process, + enabling rapid + progress and growth. +
++ Launch your custom + blockchain (parachain) + project with low + barriers to + entry. Ideal for + lean + startups looking to + move + fast and iterate. +
++ Build on a + next-generation, + sharded, multichain + network, while + employing the newest + features before they + are deployed on + Polkadot. +
++ Kusama is owned and + governed by a + community of network + participants who + vote on and control + the + evolution of the + network. Have a + voice + and make your mark + in the evolution of + the network. +
++ Leverage Polkadot’s + global brand and + developer community + for your parachain, + parathread or dApp. +
++ For teams looking to + move to Polkadot + after fine-tuning on + Kusama, begin + building your + community and brand + on Kusama before + deployment. +
+
+ + Kusama is built by + the same teams as + Polkadot, using + nearly the same code + and tools. The + network places the + latest tech from + Parity Technologies + and Web3 Foundation + in the hands of + developers, even + before those + features make it to + Polkadot. +
++ Kusama’s sharded + blockchains and open + governance provide a + scalable and + future-proof + infrastructure for + businesses, + marketplaces and + applications to + deploy and mature. +
++ Kusama brings + multiple blockchains + together into one + sharded network, + freeing developers + from the siloes + created by legacy + blockchain networks. +
++ With Substrate, + developers can build + their own + app-specific + blockchain and + connect it to + Kusama. +
+
+ Many teams will + choose Kusama for + their dapp or + parachain and remain + exclusively on + Kusama. Other teams + will join Kusama as + a temporary + preparation ground + for deployment on + Polkadot.
+
+ Your Substrate Blockchain is natively compatible with Kusama, making it simple to secure your blockchain and communicate with Kusama's network.
+ + +Subscribe to the newsletter to hear about Kusama updates and events.
+ + To see + how we use your information please see + our privacy + policy. +
+
+
+
+
+
diff --git a/tests/litecoin_org.html b/tests/litecoin_org.html
new file mode 100644
index 0000000..7a208bf
--- /dev/null
+++ b/tests/litecoin_org.html
@@ -0,0 +1,593 @@
+
+
+
+
+
+
+
+
+
++ GPG Signatures + | + Other versions + | + Buy Litecoin +
+Litecoin is a peer-to-peer Internet currency that enables instant, near-zero cost payments to anyone in the world. Litecoin is an open source, global payment network that is fully decentralized without any central authorities. Mathematics secures the network and empowers individuals to control their own finances. Litecoin features faster transaction confirmation times and improved storage efficiency than the leading math-based currency. With substantial industry support, trade volume and liquidity, Litecoin is a proven medium of commerce complementary to Bitcoin.
+Find support across a growing number of Litecoin communities:
Find general information as well as a list of services and exchanges that support Litecoin at the Litecoin Wiki.
Up-to-date network statistics can be found at Litecoin Block Explorer Charts.
Source code for Litecoin Core and related projects are available on GitHub.
Litecoin is an open source software project released under the MIT/X11 license which gives you the power to run, modify, and copy the software and to distribute, at your option, modified copies of the software. The software is released in a transparent process that allows for independent verification of binaries and their corresponding source code.
+The Litecoin blockchain is capable of handling higher transaction volume than its counterpart - Bitcoin. Due to more frequent block generation, the network supports more transactions without a need to modify the software in the future.
As a result, merchants get faster confirmation times, while still having ability to wait for more confirmations when selling bigger ticket items.
Wallet encryption allows you to secure your wallet, so that you can view transactions and your account balance, but are required to enter your password before spending litecoins.
This provides protection from wallet-stealing viruses and trojans as well as a sanity check before sending payments.
Miners are currently awarded with 6.25 new litecoins per block, an amount which gets halved roughly every 4 years (every 840,000 blocks).
The Litecoin network is therefore scheduled to produce 84 million litecoins, which is 4 times as many currency units as Bitcoin.
You can contact Litecoin project development team at [email protected]
+Join the Litecoin Foundation monthly newsletter today. Get updates on development, announcements and exclusive Litecoin news.
Enter your email address into the form below.
Use the navigation menu to select a topic.
+
+
+
+
+
+
+
+
+
+
+from boa3.builtin.contract import Nep17TransferEvent, abort
+
+@metadata
+def manifest_metadata() -> NeoMetadata:
+ meta = NeoMetadata()
+ meta.author = "coz"
+ return meta
+
+OWNER = UInt160(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
+TOKEN_TOTAL_SUPPLY = 100_000_000 * 100_000_000 # 10m total supply * 10^8 (decimals)
+
+# Events
+on_transfer = Nep17TransferEvent
+
+@public
+def transfer(from_address: UInt160, to_address: UInt160, amount: int, data: Any) -> bool:
+ assert len(from_address) == 20 and len(to_address) == 20
+ assert amount >= 0
+
+ # The function MUST return false if the from account balance does not have enough tokens to spend.
+ from_balance = get(from_address).to_int()
+ if from_balance < amount:
+ return False
+
+ # The function should check whether the from address equals the caller contract hash.
+ if from_address != calling_script_hash:
+ if not check_witness(from_address):
+ return False
+
+ # skip balance changes if transferring to yourself or transferring 0 cryptocurrency
+ if from_address != to_address and amount != 0:
+ if from_balance == amount:
+ delete(from_address)
+ else:
+ put(from_address, from_balance - amount)
+
+ to_balance = get(to_address).to_int()
+ put(to_address, to_balance + amount)
+
+ on_transfer(from_address, to_address, amount)
+ # if the to_address is a smart contract, it must call the contract's onPayment method
+ post_transfer(from_address, to_address, amount, data)
+ return True
+
+
+
+
+
+
+using Neo;
+using Neo.SmartContract;
+using Neo.SmartContract.Framework;
+using Neo.SmartContract.Framework.Attributes;
+using Neo.SmartContract.Framework.Native;
+using Neo.SmartContract.Framework.Services;
+using System;
+using System.Numerics;
+
+namespace Desktop
+{
+ [ManifestExtra("Author", "Neo")]
+ [ManifestExtra("Email", "dev@neo.org")]
+ [ManifestExtra("Description", "This is a contract example")]
+ [ContractSourceCode("https://github.com/neo-project/neo-devpack-dotnet/tree/master/src/Neo.SmartContract.Template")]
+ public class Contract1 : SmartContract
+ {
+ //TODO: Replace it with your own address.
+ [InitialValue("NiNmXL8FjEUEs1nfX9uHFBNaenxDHJtmuB", ContractParameterType.Hash160)]
+ static readonly UInt160 Owner = default;
+
+ private static bool IsOwner() => Runtime.CheckWitness(Owner);
+
+ // When this contract address is included in the transaction signature,
+ // this method will be triggered as a VerificationTrigger to verify that the signature is correct.
+ // For example, this method needs to be called when withdrawing token from the contract.
+ public static bool Verify() => IsOwner();
+
+ // TODO: Replace it with your methods.
+ public static string MyMethod()
+ {
+ return Storage.Get(Storage.CurrentContext, "Hello");
+ }
+
+ public static void _deploy(object data, bool update)
+ {
+ if (update) return;
+
+ // It will be executed during deploy
+ Storage.Put(Storage.CurrentContext, "Hello", "World");
+ }
+
+ public static void Update(ByteString nefFile, string manifest)
+ {
+ if (!IsOwner()) throw new Exception("No authorization.");
+ ContractManagement.Update(nefFile, manifest, null);
+ }
+
+ public static void Destroy()
+ {
+ if (!IsOwner()) throw new Exception("No authorization.");
+ ContractManagement.Destroy();
+ }
+ }
+}
+
+
+
+
+
+
+package nep17Contract
+
+var (
+ token nep17.Token
+ ctx storage.Context
+)
+// initializes the Token Interface and storage context
+func init() {
+ token = nep17.Token{
+ ...
+ Name: "Nep17 example",
+ Owner: util.FromAddress("NdHjSPVnw99RDMCoJdCnAcjkE23gvqUeg2"),
+ TotalSupply: 10000000000000000
+ }
+ ctx = storage.GetContext()
+}
+// Transfer token from one user to another
+func (t Token) Transfer(ctx storage.Context, from, to interop.Hash160, amount int, data interface{}) bool {
+ amountFrom := t.CanTransfer(ctx, from, to, amount)
+ if amountFrom == -1 {
+ return false
+ }
+
+ if amountFrom == 0 {
+ storage.Delete(ctx, from)
+ }
+
+ if amountFrom > 0 {
+ diff := amountFrom - amount
+ storage.Put(ctx, from, diff)
+ }
+
+ amountTo := getIntFromDB(ctx, to)
+ totalAmountTo := amountTo + amount
+ storage.Put(ctx, to, totalAmountTo)
+ runtime.Notify("Transfer", from, to, amount)
+ if to != nil && management.GetContract(to) != nil {
+ contract.Call(to, "onNEP17Payment", contract.All, from, amount, data)
+ }
+ return true
+}
+
+
+
+
+
+
+import { SmartContract} from '@neo-one/smart-contract';
+
+export class NEP17Contract extends SmartContract {
+ public readonly properties = {
+ name: 'NEO•ONE NEP17 Example',
+ groups: [],
+ trusts: '*',
+ permissions: [],
+ };
+ public readonly name = 'NEO•ONE NEP17 Example';
+ public readonly decimals = 8;
+
+ private readonly notifyTransfer = createEventNotifier<Address | undefined, Address | undefined, Fixed<8>>(
+ 'Transfer', 'from', 'to', 'amount',
+ );
+
+ public transfer(from: Address, to: Address, amount: Fixed<8>, data?: any): boolean {
+ if (amount < 0) {throw new Error(`Amount must be greater than 0: ${amount}`);}
+
+ const fromBalance = this.balanceOf(from);
+ if (fromBalance < amount) { return false; }
+
+ const contract = Contract.for(to);
+ if (contract !== undefined && !Address.isCaller(to)) {
+ const smartContract = SmartContract.for<TokenPayableContract>(to);
+ if (!smartContract.approveReceiveTransfer(from, amount, this.address)) {
+ return false;
+ }
+ }
+
+ const toBalance = this.balanceOf(to);
+ this.balances.set(from, fromBalance - amount);
+ this.balances.set(to, toBalance + amount);
+ this.notifyTransfer(from, to, amount);
+
+ if (contract !== undefined) {
+ const smartContract = SmartContract.for<TokenPayableContract>(to);
+ smartContract.onNEP17Payable(from, amount, data);
+ }
+ return true;
+ }
+}
+
+
+
+
+
+
+package io.neow3j.examples.contractdevelopment.contracts;
+
+import static io.neow3j.devpack.StringLiteralHelper.addressToScriptHash;
+
+import io.neow3j.devpack.*
+
+@ManifestExtra(key = "name", value = "FungibleToken")
+@ManifestExtra(key = "author", value = "AxLabs")
+@SupportedStandards("NEP-17")
+@Permission(contract = "fffdc93764dbaddd97c48f252a53ea4643faa3fd") // ContractManagement
+public class FungibleToken {
+
+ static final Hash160 owner = addressToScriptHash("NM7Aky765FG8NhhwtxjXRx7jEL1cnw7PBP");
+
+ @DisplayName("Transfer")
+ static Event3Args onTransfer;
+
+ static final int initialSupply = 200_000_000;
+ static final int decimals = 8;
+ static final String assetPrefix = "asset";
+ static final String totalSupplyKey = "totalSupply";
+ static final StorageContext sc = Storage.getStorageContext();
+ static final StorageMap assetMap = sc.createMap(assetPrefix);
+
+ public static String symbol() {
+ return "FGT";
+ }
+
+ public static int decimals() {
+ return decimals;
+ }
+
+ public static int totalSupply() {
+ return getTotalSupply();
+ }
+
+ static int getTotalSupply() {
+ return Storage.getInteger(sc, totalSupplyKey);
+ }
+
+ public static boolean transfer(Hash160 from, Hash160 to, int amount, Object[] data)
+ throws Exception {
+
+ if (!Hash160.isValid(from) || !Hash160.isValid(to)) {
+ throw new Exception("From or To address is not a valid address.");
+ }
+ if (amount < 0) {
+ throw new Exception("The transfer amount was negative.");
+ }
+ if (!Runtime.checkWitness(from) && from != Runtime.getCallingScriptHash()) {
+ throw new Exception("Invalid sender signature. The sender of the tokens needs to be "
+ + "the signing account.");
+ }
+ if (getBalance(from) < amount) {
+ return false;
+ }
+ if (from != to && amount != 0) {
+ deductFromBalance(from, amount);
+ addToBalance(to, amount);
+ }
+
+ onTransfer.fire(from, to, amount);
+ if (ContractManagement.getContract(to) != null) {
+ Contract.call(to, "onNEP17Payment", CallFlags.All, data);
+ }
+
+ return true;
+ }
+
+ public static int balanceOf(Hash160 account) throws Exception {
+ if (!Hash160.isValid(account)) {
+ throw new Exception("Argument is not a valid address.");
+ }
+ return getBalance(account);
+ }
+
+ @OnDeployment
+ public static void deploy(Object data, boolean update) throws Exception {
+ throwIfSignerIsNotOwner();
+ if (!update) {
+ if (Storage.get(sc, totalSupplyKey) != null) {
+ throw new Exception("Contract was already deployed.");
+ }
+ // Initialize supply
+ Storage.put(sc, totalSupplyKey, initialSupply);
+ // And allocate all tokens to the contract owner.
+ assetMap.put(owner.toByteArray(), initialSupply);
+ }
+ }
+
+ public static void update(ByteString script, String manifest) throws Exception {
+ throwIfSignerIsNotOwner();
+ if (script.length() == 0 && manifest.length() == 0) {
+ throw new Exception("The new contract script and manifest must not be empty.");
+ }
+ ContractManagement.update(script, manifest);
+ }
+
+ public static void destroy() throws Exception {
+ throwIfSignerIsNotOwner();
+ ContractManagement.destroy();
+ }
+
+ @OnVerification
+ public static boolean verify() throws Exception {
+ throwIfSignerIsNotOwner();
+ return true;
+ }
+
+ /**
+ * Gets the address of the contract owner.
+ *
+ * @return the address of the contract owner.
+ */
+ public static Hash160 contractOwner() {
+ return owner;
+ }
+
+ private static void throwIfSignerIsNotOwner() throws Exception {
+ if (!Runtime.checkWitness(owner)) {
+ throw new Exception("The calling entity is not the owner of this contract.");
+ }
+ }
+
+ private static void addToBalance(Hash160 key, int value) {
+ assetMap.put(key.toByteArray(), getBalance(key) + value);
+ }
+
+ private static void deductFromBalance(Hash160 key, int value) {
+ int oldValue = getBalance(key);
+ if (oldValue == value) {
+ assetMap.delete(key.toByteArray());
+ } else {
+ assetMap.put(key.toByteArray(), oldValue - value);
+ }
+ }
+
+ private static int getBalance(Hash160 key) {
+ return assetMap.getInteger(key.toByteArray());
+ }
+
+}
+
+
+
+
+
+ NEO token
+
+ GAS token
+
+
+
+
+
+
+
+
+ Bringing trust, privacy, and security to Web3 through decentralized identity and data solutions.

The high speed, low cost public blockchain bringing decentralized identity and data solutions to Web3.
Fast
Accessible
Secure
The Ontology blockchain is a high speed, low cost public blockchain bringing decentralized identity and data solutions to Web3. Increasing privacy, transparency, and trust, the high speed, low cost, layer 2 blockchain is designed to give users and enterprises the flexibility to build blockchain-based solutions that suit their needs, while also ensuring regulatory compliance. Through Ontology’s Ethereum Virtual Machine (EVM), Ontology ensures frictionless compatibility with Ethereum, the first step in the creation of the Ontology Multi-Virtual Machine and further interoperability for the chain.
Try It NowOWN (Ontology Web3 Network) Infrastructure is a series of blockchain based protocols and products created by Ontology for Web3 applications.

OWN (Ontology Web3 Network) Infrastructure is a series of blockchain based protocols and products created by Ontology for Web3 applications.
ONT ID
At Ontology, we envision a future where your identity and data are protected through encryption. Your on and off-chain data are secured without stress or worry. With ONT ID, you can protect your identity and data without constant oversight or maintenance. Using ONT ID prevents malicious actors from hijacking your identity or accessing personal information. We're building a future that guarantees you total control over who can access, see, and use your online data and identity.

ONTO Wallet
Manage your digital identity, data, and assets all in one cross-chain wallet.
Your ONTO Wallet comes natively equipped with ONT ID. Your data is completely protected through encryption and controlled 100% by you, the individual. From ownership of on-chain assets to transaction history, ONTO Wallet give you total control of your digital footprint.

Orange Protocol
Orange's vision is to put digital reputations back in the hands of the users, builders, and developers. Our mission is to enable developers to incorporate reputation into dApps, projects, and communities, maximizing the value of each individual’s reputation.

Polkadot unites the world's innovators and changemakers, building and using the most transformative apps and blockchains.
Polkadot is a blockchain network of networks designed to challenge our assumptions, directed and governed by those who hold the DOT token. By holding DOT, you are part of the largest and most decentralized decision-making group in the world.
DAO members represented by total onchain wallets
created by the DAO since 2023
staked economic security
in the Polkadot ecosystem
average MAA across Polkadot ecosystem in 2024 to date
Polkadot combines unbeatable technology and a strong community to bring inspiring projects to life.
We’re the most open, collaborative, passionate group of free thinkers, boundary pushers, creators, builders, innovators, and misfits. Share your ideas, projects, and vision for an open web. We can’t wait to meet you.
The latest news, notes, and notions from across the Polkadot ecosystem
Get your monthly fix of Polkadot updates, events, and scoop on the many incredible projects building on Polkadot.
Blockchain Done Right
Fast, Green, Stable, Decentralized. Qtum is a scalable Proof-of-Stake platform that allows developers to leverage the upstream benefits of Ethereum and Bitcoin.
Choose Qtum
Qtum is more decentralized than most blockchains. This means the features offered on the platform are very censorship resistant:
Read the Qtum white paper
Qtum AI
Qtum AI's chatbot and text-to-image generator streamline tasks efficiently and deliver high-performance results. For these and future AI initiatives, Qtum leverages the power of 10,000 Nvidia GPUs.
Qtum Bridge
The Qtum bridge allows Circle USDC and ERC-20 assets to be bridged to the Qtum blockchain. It includes a Metamask snap for the user interface, focusing on ease of use and user-friendliness. Both the Bridge and snap are audited by Certik and Sayfer, respectively.
Bridged USDC
Circle's Bridged USDC for EVM blockchains simplifies integrating stablecoin liquidity into applications. It reduces liquidity fragmentation by providing a single form of bridged USDC based on open-source ERC-20 contract code. It is open, secure, and thoroughly audited.
Decentralized Governance
Qtum has a unique ability to change parameters in a decentralized fashion. The community has access to a set of smart contracts that can adjust the cost of gas, block size, and other important features.
Speed
Qtum can theoretically achieve “millions to billions” of transactions per second by combining various layer-1 and layer-2 solutions. Qtum’s layer 1 network is currently around 1100 tps.
Proof of Stake
Qtum uses the scalable and energy-efficient proof-of-stake mechanism to secure its network. Participants can use low-powered devices to stake, or even do it offline to save more energy. +
Upstream Leverage
Qtum is an independent blockchain that combines the best parts of Bitcoin and Ethereum. Simply put, our blockchain can accommodate game-changing updates from both ecosystems.
Token Standards
Industry standards such as ERC20 tokens, BRC20 and NFT functionality are accessible on Qtum. Send and receive various fungible and non-fungible tokens without paying huge gas fees.
Janus
Janus is a web3 proxy adapter that can be used as a web3 provider to interact with Qtum. It allows developers to easily port their solidity-based applications to Qtum with ease.
Total Unique Staking Addresses
Dec 2024
2100+
Total Unique Delegated Addresses
Dec 2024
650+
Total Unique Super stakers
Dec 2024
36
QTUM Awarded to Stakers
Plus fees and gas, December 2024, 31 days
40,500+ QTUM

Global Nodes
Qtum has one of the largest blockchain networks with 500+ nodes distributed across 60+ countries on 6 continents. Qtum is fully decentralized and every node can participate in consensus via staking.

Multi-wallet Ecosystem
Support for Android, Windows, Mac, Linux, hardware wallet, web and other clients
Desktop
Mobile
Web
Hardware
Featured Blog Posts
View all posts

2024-09-13
Qtum 7th Anniversary Updates

2024-08-27
The Qtum Metamask Snap is Coming

$2.8B+
Transactions processed representing over $1T in value moved between counterparties
5M+
XRP wallets around the world
Ripple’s solutions leverage XRP Ledger technology and its native digital asset, XRP.
Supports large-scale applications and long term projects, with 2.8B+ transactions processed representing over $1T in value moved between counterparties since 2012.
XRP is one of the only cryptocurrencies determined not to be a security in the United States and with a foundation of regulatory clarity in several other countries.
Offers lightning-fast, cost-effective transactions that settle every 3-5 seconds at fractions of a cent per transaction.

Layer-1 Blockchain
XRP Ledger is a decentralized, layer-1 blockchain with reliability and stability proven for over a decade. It is trusted by businesses and builders globally for the efficient tokenization and exchange of crypto-native and real-world assets.


Enterprise Blockchain Solutions Company
Ripple is a technology company whose solutions use XRPL, XRP, RLUSD, and other digital assets. Ripple is also a holder of XRP and one of many developers building on and contributing to the XRP Ledger.
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.



Learn all about how Sia works, why it was created, and the non-profit foundation that maintains it.

The Sia Foundation welcomes contributors from all over the world to come and build on Sia through our Grants program.
Sia is a thriving ecosystem of data storage enthusiasts, open source software, and commercial data storage platforms.

Private and decentralized open-source cloud storage app with encrypted file sharing and media streaming support.


Content-addressed storage, but fast. Works with Sia and any S3-compatible storage provider.


Harnesses the power of multiple Decentralized Storage Networks, ensuring unparalleled data preservation, availability and seamless retrieval for all your valuable information across the globe.


SiaShare is an end-to-end encrypted file sharing software that uses the Sia decentralized storage network to store files.


An open-source network service that allows credit card payment for Sia storage.

Sia encrypts and distributes your files across a decentralized network. Unlike traditional cloud storage providers, you truly own your data: no third party can access your files or prevent you from accessing them.
Sia distributes and stores redundant file segments on nodes across the globe, eliminating any single point of failure and achieving uptime and throughput that no centralized provider can compete with.
On average, Sia's decentralized cloud storage costs 90% less than incumbent cloud storage providers. Storing 1 TB of files on Sia costs about $1-2 per month, compared with $23 on Amazon S3 - bandwidth is also a magnitude cheaper.
The Sia software exposes highly modular JSON-speaking endpoints. renterd can even scale horizontally: in stateless mode, it provides raw access to the Sia renter-host protocol, with no UI, no blockchain, and no disk I/O — perfect for massive renting operations.
The Sia storage network has been securely storing data since 2014. Sia has pioneered the use of many new technologies at scale, such as its use of state channels to process an estimated 20 billion micropayments per day.
Sia's software is completely open source, with contributions from leading software engineers. Sia has a thriving community of developers and companies building innovative applications and businesses on top of Sia.
Find developer resources, tutorials, software downloads, and more.
Read the latest from the core team and the ecosystem of developers building technology on top of Sia.
511,131 block height
86,116 online hosts
457 active hosts
7.89 PB total storage
2.31 PB used storage
427 M total registry
3 M used registry
20,996 commits
71 contributors
470 forks
43 releases
Bring blockchain to the people. Solana supports experiences for power users, new consumers, and everyone in between.
Fee Paying Accounts, All Time
NFTs Minted
Median Fee per Transaction
Don’t keep your users waiting. Solana has block times of 400 milliseconds — and as hardware gets faster, so will the network.
Get big, quick. Solana is made to handle thousands of transactions per second, and fees for both developers and users remain less than $0.0025.
The Solana network is validated by thousands of nodes that operate independently of each other, ensuring your data remains secure and censorship resistant.
Solana’s proof of stake network and other innovations minimize its impact on the environment. Each Solana transaction uses about the same energy as a few Google searches.
XP aims to save consumers from high event ticket fees using Solana.
Boba Guys used a Solana-powered loyalty program to increase monthly sales by 67%.
Homebase used the Solana blockchain to successfully tokenized a single-family rental property.
Hivemapper decentralizes mapping with better real-time data and community incentives
Solana Pay is now available to millions of businesses as an approved app integration on Shopify. Solana Pay is built for immediate USDC transactions, fees that are fractions of a penny, and a net-zero environmental impact.
Learn more about Payments on SolanaUp to 50x leverage with world-class liquidity powered by Synthetix

Maintain exposure to your favorite assets with tBTC, wstETH, USDe, and more collateral options.
Enhanced speed with no-signature trade execution.
In-app bridging and swapping to streamline portfolio management.

Gain exposure to traders' PnL, earn fees, and promote seamless trading on derivatives markets.
Integrations with the most secure borrow-lend protocol like Aave help you earn boosted yields.
Synthetix liquidity providers have earned $8M in rewards over the past year.
Leveraged tokens for 10+ assets with up to 7x leverage

Leveraged tokens maintain a constant leverage via reactive rebalancing, eliminating the need for margin management.
Minting and redeeming requires just a few clicks - no active maintenance, no complicated UI, no stress.
ERC20 compliance facilitates the seamless integration of leveraged tokens into the wider DeFi ecosystem.
Build DeFi apps with a full-suite of developer tools
Build scalable and reliable DeFi platforms faster with high-performance, decentralized infrastructureâno complex server management needed.
Get access to deep liquidity for smooth trading for your derivatives app.
Deploy quickly with our SDKs and APIs, seamlessly building and managing DeFi infrastructure to drive growth and maximize rewards.
Trade Perpetual Futures, Leveraged Tokens and Automated Strategies powered by Synthetix
MASS is a mobile app that streamlines access to blockchain networks and DeFi services.

The onchain perps marketplace

Strategies, Streamlined

Scaling derivatives for capital efficiency

Explore top-tier tokenized vaults

The leveraged tokens protocol

Trade with minimal slippage and fees
The onchain perps marketplace
(formerly Kwenta)

Mint auto-rebalancing leveraged tokens
(formerly TLX)

Mass Money is an all-in-one DeFi app


Trade with minimal slippage and fees

Strategies, Streamlined

Scaling derivatives for capital efficiency

The onchain perps marketplace
(formerly Kwenta)


Scaling derivatives for capital efficiency


Trade with minimal slippage and fees

Mass Money is an all-in-one DeFi app


Strategies, Streamlined
Mint auto-rebalancing leveraged tokens
(formerly TLX)

Strategies, Streamlined

Mass Money is an all-in-one DeFi app

WHAT'S TEZOS?
Tezos is designed to power the Web3 revolution.
The future of the internet is being built on Tezosâwith user participation and governance at its core. Users can directly and frictionlessly interface with each other over a decentralized network, exchanging value and interacting with various applications, without the need for intermediaries. On Tezos, Web3 can be a truly user-governed and user-centric movement, the way it was meant to be.

A new resource for Tezos
Spotlight is a content channel featuring news and activity within the Tezos ecosystem.
Explore Spotlight

MEET TEZOS
Smart Contracts.
+Smart Governance.
+Smart Design.
Tezos is an open-source platform that addresses key barriers facing blockchain adoption for assets and applications backed by a global community of validators, researchers, and builders. By design, Tezos embraces long-term upgradability, open participation, collaboration, and smart contract safety.
Tez (XTZ) is the native token of the Tezos blockchain. It is used to interact with dApps, pay for fees, secure the network through staking, and provide a basic accounting unit on the Tezos platform.
Powered by TzKT API
A community governed,
+ever-evolving technological vision.
Tezos continuously adds the latest innovation, seamlessly leveling up to deliver novel and new capabilities within the space through its upgrade mechanism. See how far weâve come and help us imagine where Tezos will go in the future.
The Tezos protocol was activated successfully on 20 January, 2025.
Quebec
The 17th Tezos protocol upgrade introduces 8-second block time and 16-second finality, an improved staking mechanism, and stronger economics thanks to further refinement of the âAdaptive Issuanceâ mechanism.
Reduced minimal block time to 10 seconds for lower latency and faster finality on Layer 1. The Data-Availability Layer is enabled on mainnet to boost Smart Rollups throughput. The introduction of Adaptive Issance, a new Staking mechanism and Adaptive Slashing overhauls the foundations of Tezos' Proof-of-Stake.
Learn more
The 15th upgrade to the Tezos protocol brings three key changes: the introduction of Private Smart Rollups, refinements to Proof-of-Stake, and the re-enablement of Timelocks.
Learn more
Up to 8x increase in on-chain operations per second bandwidth for transactions and smart contract calls, with an improved gas model for cryptographic signatures. Smart rollups can now evolve in lockstep with layer 1 protocol upgrades. Faster propagation of pre-attestations to reach consensus earlier.
Learn more

CAREERS
Help us change the world.
+One block at a time.
Browse the latest job postings across the Tezos ecosystem.
Tezos is the product of many organizations across the globe working together on an open-source project. Donât see the perfect role for you but want to work on Tezos? Reach out to the Work on Tezos mailbox - include your resume, what youâre looking for, and why youâre excited to work on Tezos. Resumes are shared with a number of organizations in the Tezos ecosystem.
Note: Listings are provided by each team separately. If you are an organization in the Tezos ecosystem that is hiring and interested in listing your open roles here, please email the Work on Tezos mailbox.
Catch the latest news from around the Tezos ecosystem, from exciting partnerships to insightful and educational articles about the technology that makes Tezos truly special.
-
Total Number of Accounts
-
Transaction Count
-
Block Height
-
Transfer Amount of Core Tokens
TRONPROTOCOL is the world's leading decentralized blockchain protocol

The high throughput of TRONPROTOCOL, underpinned by improved network TPS, makes TRON a better option for day-to-day use than Bitcoin and Ethereum.

Strong scalability and smart contracts allow applications to be deployed on TRON in diverse ways, enabling TRONPROTOCOL to accommodate a sizable user base.

TRONPROTOCOL has a more reliable network structure, user assets, and intrinsic value. Its further decentralized consensus brings a more mature rewards distribution mechanism.
DAppChain is TRON's sidechain project. The goal is to help DApps to operate on TRON with lower energy consumption, faster speed and enhanced safety, providing unlimited capacity for TRON's main network.
Learn moreBitfinex offers tailored services to meet the specific needs of professional traders, institutional investors and corporate customers. In addition to a full range of trading and charting tools, and access to comprehensive markets for all major pairs, we also offer unparalleled co-location services, enabling optimal, high-speed trading performance and connectivity.
Corporate account holders and professional traders can enjoy expedited verification time and rapid customer support ticket responses. Sub-accounts also offer additional benefits, such as segregating risk and enabling separate deposit and withdrawal permissions.
Our REST and Websocket APIs provide access to all the features of the Bitfinex platform. Users can create highly customised and advanced trading strategies or build their own trading application on our platform.
Get access to all the functions of the Bitfinex platform and navigate digital token markets from anywhere. Trade while on the go with the Bitfinex mobile app!

Bring your cash on-chain with trusted digital dollars that hold steady value and are accessible to nearly anyone with an internet connection1.
+

























+ Coming Soon
+
+ Coming Soon
+It gives us decentralized information, much like cryptocurrency gave us decentralized money
+English
+ + + + + + Español + + + + + + Italiano + + + + + + Polski + + + + + + Français + + + + + + Ø§ÙØ¹Ø±Ø¨ÙØ© + + + + + + Ð ÑÑÑкий + + + + + + Deutsch + + + + + + Nederlands + + + + + + Português do Brasil + + + + + + Türkçe + + + + + + ç®ä½ä¸æ + + + + + + ç¹é«ä¸æ èºç£ + + + + + + Norsk + + + + + + ελληνική + + + ++ About Monero + Join Community +
+To use Monero, the first thing you are going to need is a wallet. Visit our Downloads page and get the right wallet for you. The Monero wallets are available for a variety of platforms and contain everything you need to use Monero immediately.
+ +
+
+ After you install a wallet, you need to get some Monero. There are multiple ways to acquire some coins to spend, like mining or working in exchange for Monero, but the easiest way is to use an exchange and convert your fiat money into XMR. Many exchanges, centralized and decentralized, list Monero (XMR).
+ +Monero is a currency and can be exchanged for goods, services and other currencies, privately and with very low fees. Many entities will gladly accept XMR for payments; take a look at our 'Merchants' page.
+ +
+
+ We've heard a lot of questions over the years and have compiled a thorough and varied FAQ. Don't worry, if your questions are not in there, you can always ask the community.
+ +The community has put together a vast amount of resources and documentation. Users can find useful info and guides about common configurations and tips in the 'User Guides' section. Developers can find everything they need to build a service based on Monero or simply communicate with the network in the 'Developer Guides'. The Library offers publications and books downloadable for free, including the full 'Mastering Monero' and 'Zero to Monero' books. +
+Would you like to look up the meanings of the terms and concepts used in Monero? Here you will find an alphabetical guide to terms and their meanings.
+ +Monero is not simply a currency, it's a decentralized community and exists only thanks to the hundreds of volunteers that dedicate their time to the project. Join us!
+ +
+ The MRL (Monero Research Lab) is a very important part of Monero. Researchers and cryptographers from all over the world meet to find new ways to improve Monero. Read their papers and join them!
+ +The members of the Monero community are all over the world. You can find us on multiple platforms. Come meet us!
+ +
+ Language
Currency
Download App





Get the lowest fees, fastest transactions, powerful APIs, and moreLowest fees, world-class matching engine, powerful APIs and much more

New to crypto? No problem. Buy crypto for as little as $5 in a tap, and grow your skills as you go.
From your first crypto trade to your first NFT purchase, you’ll have us to guide you through the process. No stupid questions.
No sleepless nights. Have confidence in your crypto.
Coach Pep Guardiola
Explains “crazy football formation”
Rewrite the system
Welcome to Web3
Snowboarder Scotty James
Brings in the whole family
What products does OKX provide?
How do I buy Bitcoin on OKX?
Can U.S. citizens use OKX?
What is crypto?
Stellar empowers builders to unlock human and economic potential. It combines a powerful, decentralized blockchain network with a global ecosystem of innovators to create opportunities as borderless as ideas. It offers the tools to make a difference in the real world through new digital asset products and services that enhance access to the global financial system.
Why Stellar
Stellar is a decentralized, public blockchain that gives developers the tools to create experiences that are more like cash than crypto. The network is faster, cheaper, and far more energy-efficient than most blockchain-based systems. It’s designed so Stellar’s ecosystem can make a real-world, lasting impact.
Grants issued Sep '23-Aug '24
Onramp Locations Globally + +
Average Ledger Closing Time + +
Embark on your Stellar journey. Discover what you can do with the Stellar network, what’s being built by whom, and the opportunities available in our ecosystem.
Scale your payments globally with near instant, low-cost payments on payment rails that connect digital assets to the traditional financial system.
Unlock real-world utility for your users with the suite of tools available on the Stellar network to enable access to digital assets and global on and off-ramping.
Build the future of financial access on an unmatched network of real-world utility and scalable decentralized finance.
Built Better
Create practical applications with real-world impact. Tap into a global network of on and off ramps, and launch apps that integrate with existing financial systems. Build with the tooling and infrastructure you need to deploy DeFi solutions that scale efficiently, with low fees and fast finality. Built Better so you can Build Better.
Smart Contracts
A developer-friendly, Rust-based smart contracts platform designed for scale and sensibility. Soroban seamlessly integrates with and works alongside…
Follow along with these tutorials to help you get up to speed on Soroban. From beginner to advanced concepts, these videos will get you building.
Start building on Soroban today with the help of established tools and documentation
The Basics
Let’s start with the basics to get you up to speed on all that the Stellar network has to offer. Learn fundamentals and get the tooling you need to start building.
A Global Ecosystem
UNHCR launched Stellar Aid Assist in Ukraine, unlocking bulk payments on the Stellar network and advancing our mission for financial access.
Digital assets are more accessible today than ever before. Now anyone can visit a MoneyGram location to deposit and withdraw cash from their digital…
Anchors
The Stellar anchor network supports over 180 countries and over 20 digital assets. By integrating anchor services such as on and off-ramps, cross-border payments and fiat-backed digital assets, builders can offer new payment services for end users and reach customers in new markets worldwide.
The Latest
LIVE • Events
• Discord
Join us every Thursday to discuss Soroban's latest and greatest features, questions and hot topics!
Article
• Gabriella Pellagatti
Remember when we asked you to dream bigger? To turn those "what if?" moments into real ideas worth sharing? Well, you delivered – and then some.
Press
Societe Generale-FORGE (SG-FORGE) announces the launch of its EUR-backed stablecoin (EURCV) on the Stellar network. This expansion will open new…
Article
• Leigh McCulloch
Stellar is one of the OG blockchains, online since 2014, and launched smart contracts to Mainnet in 2024. When Stellar added smart contracts, the…
Article
• Kate Montgomery
Etherfuse is looking to rewrite the rules of the $140T global bond market with Stablebonds, now available on Stellar. These tokenized real-world…
The Newsletters
Hear it from us first. Sign up to get the real-time scoop on Stellar ecosystem news, functionalities, and resources.

Discover Zilliqa 2.0
A wallet lets you safely connect to Zilliqa and manage your assets.
ZIL is the native token for the Zilliqa blockchain.
Staking is an eco-friendly way to earn rewards and power the network.
From innovative startups to global enterprises, build products and services on one of the fastest-growing blockchain ecosystems.
As seen on




Scilla is a peer-reviewed functional programming language for writing smart contracts on the Zilliqa blockchain.
Scilla's focus on safety gives both developers and end users ways to build and use safer dApps.
Create dApps on a blockchain with a vibrant and active community.



















