"Not Your Keys, Not Your Coins" - Andreas Markos Antonopoulos HEX-CHAIN is an innovative project created to target and absorb the entire market capitalization of Bitcoin and Ethereum. The development team's ultimate goal is to have Bitcoin miners displaced from hashpower competition and Ethereum miners abandoned after the network's transition to POS participate in the HEX-CHAIN network providing massive computing power, not in the form of mining involving simple Nonce value calculations, but by fully mobilizing the computational power itself to perform large-scale wallet-key scanning and discover wallets with balances. The goal is to find private keys not only for lost or dormant Bitcoin and Ethereum wallets but also for all wallets with balances, including cold wallets.
HEX-CHAIN / HEX-KEY extracts and generates blockchain wallets and private keys from 64-digit hexadecimal raw key values that derive Bitcoin and Ethereum wallet addresses and private keys at an innovative speed previously impossible through ultra-fast computational algorithms and cutting-edge parallel processing technology implementation, and compares them with target wallet address lists to identify wallets with balances. We will rewrite the history of the decentralized ecosystem and blockchain to date.
Total Supply: 10,000,000 HEXK (Solana SPL Token, fixed supply, no additional issuance)
HEXK-Pool Deposit: 6,000,000 HEXK 6pagxzYiK9AJwVvYyEGQr7jDaZou85VTQ7PgsqTqJXVE (View)
Token Contract Address: 5wKM7RnpcdymMN1bdErV1z4jsmdwmUKV1DjZDJAsT2pm(View)
SOL / HEXK Liquidity Pool #1(GMGN): (View)
SOL / HEXK Liquidity Pool #2(Birdeye): (View)
SOL / HEXK Liquidity Pool #3(Raydium): (View)
USDT / HEXK Liquidity Pool #4(Birdeye): (View)
USDT / HEXK Liquidity Pool #5(DexScreener): (View)
USDT / HEXK Liquidity Pool #6(Raydium): (View)
Of the total 10 million HEXK issued, 6 million are deposited in the HEXK-Pool address, and the initial total circulation is 4 million.
As HEXK-Pool participants increase, circulation may gradually increase, and the HEXK token has administrator privileges removed.
In other words, HEXK tokens cannot be additionally issued, and are fully disclosed transparent contract tokens where burning and freezing are impossible.
For detailed information and proof of facts, you can directly check by clicking the (View) button in the above information.
HEX-CHAIN uses the maximum range value of 64-digit hexadecimal raw key values, which is the maximum space for generating Bitcoin / Ethereum wallet addresses and keys to perform computations targeting all range key generation areas and compare with target wallet addresses to identify wallets with balances. "start_range": "0000000000000000000000000000000000000000000000000000000000000001" "end_range": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140" This 64-digit hexadecimal raw key value maximum space contains all Bitcoin / Ethereum wallets and private keys that exist on Earth, and generates private keys for assigned wallet addresses and compares them with target addresses to identify wallets with balances. In other words, wallet addresses and keys are not generated by users, but are values "already" determined and arranged through hashing and encoding processes from 64-digit hexadecimal raw key values, and only when users use those wallets do they perform the role of storing and sending/receiving Bitcoin and Ethereum as wallets. HEX-CHAIN performs world-class computations based on these 64-digit hexadecimal raw key values to find wallets with balances and the keys to open them.
HEXK-Pool (P2P Reward Pool Program) : A P2P network program that performs real-time computation and scanning targeting wallet addresses. Does not store wallet-key pairs, generates instantly and compares with target addresses. When a match is found, sends information to bootstrap node and receives HEXK tokens as reward. → Contribution-based free program (HEXK tokens rewarded)
🔹 HEX-KEY (Independent Key Scan Program) : Users directly sequentially or randomly generate and store BTC/ETH wallet-keys based on 64-digit hexadecimal raw key values. Stores target address list in local database and discovers matches by comparing with generated wallets. All ownership of discovered wallets with balances belongs to the user. → Paid program purchasable with HEXK tokens or USDT
🔹 HEXK(SOL) Smart Contract Token : A smart contract token that can only be obtained through exchange purchase or HEXK-Pool participation. HEXK holders receive distribution of total Bitcoin / Ethereum deposited in HEXK-Pool according to holding quantity at each calculated period. [ex : When HEXK-Pool deposited scanning Bitcoin holdings are 30 BTC, a user holding 200K of 2M HEXK in circulation receives 3 BTC. → User reward = (HEXK-Pool total deposit) × (User HEXK holdings ÷ HEXK total circulation)
HEX-KEY program and HEXK-Pool are currently completed as CPU-based versions. GPU and accelerators are utilized only for auxiliary computational power, and the current version performs computations based on CPU. The planned GPU acceleration version HEXK-Pool can be found in the "GPU Powered Scanning" section.
//cpu_key_generator.cpp - CPU-Based Multi-threaded Key Generation and Address Derivation //Performance: 2M comparisons/sec on i5-14600K (recommended specs) //Output: 340K BTC + 800K ETH wallet-key scanning pairs per second matched with database\bitcoin_list/ethereum_list #include <thread> #include <vector> #include <mutex> #include "secp256k1.h" #include "rocksdb/db.h" class CPUKeyGenerator { std::vector<std::thread> workers_; // Worker threads for parallel key generation rocksdb::DB* db_; // RocksDB for persistent wallet-key storage std::mutex db_mutex_; // Mutex for thread-safe database writes secp256k1_context* ctx_; // secp256k1 context for elliptic curve operations public: void generate_wallets(size_t btc_count, size_t eth_count) { size_t num_threads = std::thread::hardware_concurrency(); // Auto-detect CPU cores size_t total_wallets = btc_count + eth_count; // Total: 1.14M wallets size_t per_thread = total_wallets / num_threads; // Distribute workload evenly for (size_t i = 0; i < num_threads; i++) { // Spawn worker threads workers_.emplace_back([this, i, per_thread, btc_count]() { size_t start_idx = i * per_thread; // Starting index for this thread worker_thread(start_idx, per_thread, start_idx < btc_count); // BTC or ETH flag }); } for (auto& t : workers_) t.join(); // Wait for all threads to complete } private: void worker_thread(size_t start, size_t count, bool is_btc) { for (size_t i = start; i < start + count; i++) { uint8_t privkey[32]; // 256-bit private key generate_random_key(privkey, i); // Sequential or random key generation secp256k1_pubkey pubkey; // Public key structure secp256k1_ec_pubkey_create(ctx_, &pubkey, privkey); // Derive pubkey from privkey std::string address = is_btc ? derive_btc_address(&pubkey) : derive_eth_address(&pubkey); // Address derivation store_wallet(address, privkey); // Store in RocksDB with compression } } };
/** * bloom_filter_comparator.cpp - Fast Target Address Comparison Engine with Bloom Filter * Performs 2M comparisons/sec against 1 billion target addresses in memory */ #include <cstdint> #include <vector> #include <rocksdb/db.h> class BloomFilterComparator { std::vector<uint64_t> bloom_bits_; // 3GB Bloom filter bitarray for 1B addresses rocksdb::DB* target_db_; // RocksDB for secondary verification (false positive handling) size_t bloom_size_; // Total bits in filter (24 billion for 0.001% FPR) static constexpr uint32_t NUM_HASHES = 7; // Optimal k value for target FPR uint64_t murmur_hash(const uint8_t* addr, size_t len, uint32_t seed) const { uint64_t h = seed; // Initialize hash with seed value for (size_t i = 0; i < len; i++) { // Process each byte h ^= addr[i]; // XOR operation for bit mixing h *= 0x5bd1e995; // Multiply by MurmurHash3 magic constant h ^= h >> 15; // Right-shift XOR for avalanche effect } return h % bloom_size_; // Map to bit array index } public: bool check_target(const uint8_t* address) { // Phase 1: Fast Bloom filter check (O(k) time, k=7) for (uint32_t i = 0; i < NUM_HASHES; i++) { // Check all 7 hash positions uint64_t pos = murmur_hash(address, 20, i); // 20 bytes for BTC/ETH address uint64_t word_idx = pos / 64; // Index into uint64_t array uint64_t bit_idx = pos % 64; // Bit position within word if (!(bloom_bits_[word_idx] & (1ULL << bit_idx))) { return false; // Definitely NOT in target set (no false negatives) } } // Phase 2: RocksDB verification for potential match (handle false positives) std::string addr_str(reinterpret_cast<const char*>(address), 20); std::string value; rocksdb::Status s = target_db_->Get(rocksdb::ReadOptions(), addr_str, &value); return s.ok(); // True match confirmed in RocksDB, false if Bloom FP } void add_target(const uint8_t* address) { for (uint32_t i = 0; i < NUM_HASHES; i++) { // Set k bits in filter uint64_t pos = murmur_hash(address, 20, i); bloom_bits_[pos / 64] |= (1ULL << (pos % 64)); // Atomic bit set operation } } };
""" hexk_pool_scanner.py - HEXK-Pool CPU-Based Real-time Scanner (No Storage Mode) Performs instant key generation, Bloom filter matching, and reports to bootstrap nodes Performance: 2M comparisons/sec without local wallet-key storage """ import grpc import multiprocessing from solana.keypair import Keypair from bloom_filter import BloomFilter from secp256k1 import PrivateKey, PublicKey class HEXKPoolScanner: def __init__(self, config_path: str): self.config = load_config(config_path) # Load scanner configuration self.keypair = Keypair.from_secret_key(open(self.config['wallet'], 'rb').read()) # Solana reward wallet self.bloom = BloomFilter(capacity=1e9) # 1B target addresses, 3GB RAM self.cpu_workers = multiprocessing.cpu_count() # Auto-detect available CPU cores async def sync_targets(self): \"\"\"Download target addresses from bootstrap nodes and build Bloom filter\"\"\" channel = grpc.aio.insecure_channel(\"seed1.hexkpool.network:50051\") # Connect to bootstrap stub = hexkpool_pb2_grpc.HEXKPoolStub(channel) targets = await stub.GetTargets(Empty()) # Fetch 1B target addresses for addr in targets.addresses: # Build Bloom filter in memory (no storage) self.bloom.add(addr) # O(k) insert, k=7 hash functions def scan_worker(self, shard_id: int): \"\"\"CPU worker: generate keys on-the-fly, check targets, report matches\"\"\" while True: # Infinite scanning loop privkey_bytes = generate_next_key(shard_id) # Sequential key generation (2^240 per shard) privkey = PrivateKey(privkey_bytes) # Create secp256k1 private key object pubkey = privkey.pubkey # Derive public key via EC point multiplication btc_addr = derive_btc_p2pkh(pubkey.serialize()) # Bitcoin P2PKH address derivation eth_addr = derive_eth_eoa(pubkey.serialize(compressed=False)) # Ethereum EOA address (Keccak-256) if self.bloom.contains(btc_addr): # Fast O(k) Bloom filter lookup for BTC self.report_match(btc_addr, privkey_bytes, \"BTC\") # Send to bootstrap (no local storage) if self.bloom.contains(eth_addr): # Fast O(k) Bloom filter lookup for ETH self.report_match(eth_addr, privkey_bytes, \"ETH\") # Send to bootstrap (no local storage)
┌─────────────────────────────────────────┐ │ KEY SPACE SHARDING STRUCTURE │ ├─────────────────────────────────────────┤ │ Total Space: 2^256 │ │ Shard Count: 65,536 (2^16) │ │ Per Shard: ~2^240 keys │ └─────────────────────────────────────────┘ [Work Distribution Matrix] Shard ID | Assigned Workers | Status ───────────────────────────────────────── 0x0000 | Scanner_A1, A2, A3 | Active 0x0001 | Scanner_B1, B2 | Active 0x0002 | Scanner_C1 | Idle ... | ... | ... 0xFFFF | Scanner_Z1, Z2 | Active [Scan Process Flow] 1. Scanner → gRPC.RequestWork() 2. Bootstrap assigns shard_id + key_range 3. Scanner generates keys in parallel 4. Bloom filter lookup (O(1) per key) 5. Match found → zk-SNARK generation 6. Submit discovery → Consensus validation 7. HEXK reward (Solana SPL transfer) [Synchronization Protocol] Bootstrap Nodes: [Node1, Node2, Node3] ↓ Merkle Tree State Sync ↓ Target Address Updates ↓ Anti-Duplication Coordination Scanners: Real-time shard assignment
Shard-based Task Distribution: The entire 2^256 key space is divided into 65,536 (2^16) shards, assigning each scanner a unique search area. Each shard contains approximately 2^240 keys, and Redis-based distributed locking completely prevents duplicate searches. When a scanner goes offline, the shard is automatically released after 10 minutes and reassigned to another scanner.
Real-time Target Synchronization: Through Bootstrap and Seed nodes, HEXK-Pool participants use Raft Consensus to maintain consistency of target wallet address lists. Bloom Filter indexes all target wallet address lists in 6 GB memory, with False Positive Rate below 0.001%. Merkle Tree-based delta synchronization transmits only changed parts to minimize bandwidth, and broadcasts incremental updates to all scanners in real-time.
zk-SNARK based Verification: When a scanner discovers an address with balance, it uses Groth16 zk-SNARK protocol to generate cryptographic proof that proves the discovery without exposing the private key. Proof generation takes approximately 2-3 seconds, verification completes within 50ms, and after 3/5 node verification, HEXK reward transaction is automatically executed on the Solana blockchain.
P2P Network Architecture: HEXK-Pool operates on a libp2p-based decentralized P2P network. Each node discovers peers through DHT and performs low-latency communication via gRPC over QUIC protocol. Efficiently propagates target updates and discovery events via Gossipsub protocol, and detects malicious nodes through reputation system to ensure network stability and security.
"Breaking the rules, Resetting the system" - We break existing rules and reset the system. HEX-CHAIN shifts the blockchain industry paradigm, realizing through redistribution of cryptocurrency concentrated in the hands of a few true decentralization and financial democratization. Finding active wallets in the 2^256 key space is not just a technical challenge, but an innovation that resolves structural inequality in the cryptocurrency ecosystem and waste of computing power (Hash Power).
Utilize all CPU cores simultaneously, scanning at least 600K+ wallet-keys per second Parallel key scan algorithm implementation through idle GPU acceleration
Real-time target wallet list synchronization through bootstrap and seed nodes, Duplicate search prevention algorithm
Memory-efficient indexing of all target wallet address database lists with balances, maintaining 0.001% False Positive Rate
Bitcoin (P2PKH/P2SH/Bech32), Ethereum (EOA/Legacy) Simultaneous scan and verification of all wallet types from raw key values
Guide for HEX-KEY usage, HEXK-Pool participation, and HEXK purchase:
Available on Windows 11+ OS / MacOS
Register HEXK wallet address in config.json (for receiving HEXK token rewards based on computing contribution)
Download and install Solflare from Google Chrome extension or AppStore / Google Play, create wallet and store HEXK
Purchasable with SOL or USDT on Raydium decentralized exchange (DEX) liquidity pool Go to liquidity pool page →
Minimum: Intel i3 14100K(4C / 8T) / 16GB RAM / 1TB SSD / Windows 10+ OS or MacOS Recommended: Intel i5 14600K(14C / 20T) / 32GB RAM / 2TB SSD / Windows 10+ or MacOS High Performance: Intel I7 14700 (20C / 28T) / 64GB RAM / 4TB SSD / Windows 10+ or MacOS
The HEXK-Pool and HEX-CHAIN ecosystem is an integrated platform where various components operate organically connected.
HEX-CHAIN architecture is designed as a 4-layer structure for large-scale distributed computing and key verification. Each layer operates as an independent module and performs low-latency communication through gRPC and WebSocket protocols.
CPU / GPU Workers, CUDA/OpenCL Kernels, Key Generation & Searching Engines (10^9 keys/sec/device)
Bloom Filter DB (1 billion+ addresses volatile scan data per second), secp256k1 Validator, Balance Checker APIs (Blockchain Explorers)
Bootstrap Nodes, Work Distribution Queue, Result Aggregation, Anti-Duplication Scheduler
HEXK Smart Contract, Contribution Tracking, Proportional Reward Distribution, Found Wallet Escrow
A main coordination system composed of a distributed node network. Each node synchronizes target wallet address lists, distributes computing tasks, and performs verification and reward distribution of discovered keys. Maintains consensus between nodes through Raft Consensus.
//bloom_filter.hpp - Memory-Efficient Bloom Filter Implementation for Target Address Indexing * Capacity: 1 billion addresses in 3GB RAM, False Positive Rate: 0.001% #pragma once #include <vector> #include <cstdint> #include <cmath> #include <atomic> class BloomFilter { std::vector<uint64_t> bits_; // Bit array stored as 64-bit words for efficient access size_t size_; // Total number of bits in filter (capacity * bits_per_element) uint32_t num_hashes_ = 7; // Optimal k value for 0.001% false positive rate std::atomic<size_t> item_count_{0}; // Number of items added (for statistics) uint64_t murmur_hash(const uint8_t* data, size_t len, uint32_t seed) const { // MurmurHash3 implementation - fast non-cryptographic hash for Bloom filters uint64_t h = seed; for (size_t i = 0; i < len; i++) { h ^= data[i]; // XOR with byte value h *= 0x5bd1e995; // Multiply by magic constant for bit mixing h ^= h >> 15; // Right shift XOR for avalanche effect } return h % size_; // Modulo to fit within bit array bounds } public: BloomFilter(size_t capacity) : size_(capacity * 24) { // 24 bits per element for 0.001% FPR bits_.resize(size_ / 64, 0); // Allocate uint64_t words, initialize to zero } void add(const uint8_t* addr) { // Add 20-byte Bitcoin/Ethereum address to filter for (uint32_t i = 0; i < num_hashes_; i++) { // Compute k=7 independent hash values uint64_t pos = murmur_hash(addr, 20, i); // Hash with different seeds bits_[pos / 64] |= (1ULL << (pos % 64)); // Set corresponding bit to 1 } item_count_.fetch_add(1, std::memory_order_relaxed); // Increment counter atomically } bool contains(const uint8_t* addr) const { // Check if address might be in set for (uint32_t i = 0; i < num_hashes_; i++) { // Check all k hash positions uint64_t pos = murmur_hash(addr, 20, i); if (!(bits_[pos / 64] & (1ULL << (pos % 64)))) return false; // If any bit is 0, definitely not in set } return true; // All bits are 1, possibly in set (verify with RocksDB to handle false positives) } size_t memory_usage() const { return bits_.size() * sizeof(uint64_t); } // Total memory in bytes size_t count() const { return item_count_.load(std::memory_order_relaxed); } // Items added };
// grpc_service.proto - HEXK-Pool gRPC API Definition for Bootstrap Node Communication syntax = "proto3"; package hexkpool; service HEXKPool { rpc RequestWork(WorkRequest) returns (WorkAssignment); rpc SubmitWork(WorkProof) returns (WorkReceipt); rpc ReportDiscovery(Discovery) returns (DiscoveryReceipt); rpc StreamTargets(TargetRequest) returns (stream TargetUpdate); } message WorkRequest { string scanner_pubkey = 1; // Solana public key for HEXK token rewards uint32 gpu_count = 2; // Number of GPUs available for scanning (if GPU acceleration enabled) double hashrate = 3; // Estimated scanning speed in keys/second for shard allocation } message WorkAssignment { uint32 shard_index = 1; // Assigned shard number (0-65535 for 2^16 total shards) uint64 start_offset = 2; // Starting key offset (shard_index << 240 for 2^256 keyspace) uint64 end_offset = 3; // Ending key offset (exclusive boundary for shard range) repeated bytes target_addresses = 4; // Bloom filter of 1 billion target addresses } message Discovery { string target_address = 1; // Found wallet address (Base58 for BTC, Hex for ETH) bytes encrypted_privkey = 2; // AES-256 encrypted private key (decrypted by bootstrap nodes) bytes zk_proof = 3; // Groth16 zk-SNARK proof of private key ownership without revealing it string chain_type = 4; // Blockchain identifier: "BTC" or "ETH" uint64 balance_satoshi = 5; // Wallet balance in satoshis (BTC) or wei (ETH) } message DiscoveryReceipt { bool verified = 1; // True if zk-SNARK proof passed verification by 3/5 bootstrap nodes string solana_signature = 2; // Solana transaction signature for HEXK token transfer uint64 hexk_reward_amount = 3; // HEXK tokens awarded (100-1100 based on wallet value) uint64 timestamp = 4; // Unix timestamp of discovery verification } message TargetRequest { string scanner_id = 1; // Scanner public key identifier for personalized target stream uint64 last_sync_timestamp = 2; // Last successful sync time for delta updates only } message TargetUpdate { repeated bytes new_addresses = 1; // Newly added target addresses to Bloom filter repeated bytes removed_addresses = 2; // Removed addresses (rare, usually stale/claimed wallets) bytes merkle_root = 3; // Merkle root for cryptographic verification of delta sync integrity uint64 total_count = 4; // Total target address count after this update (should approach 1B) }
// work_distributor.cpp - Anti-Duplication Work Scheduler for 2^256 Keyspace Partitioning * Ensures no two scanners work on same key range using Redis-based distributed locking #include <redis++/redis++.h> #include "work_distributor.hpp" class WorkDistributor { sw::redis::Redis redis_; // Redis client for distributed shard coordination std::mutex mutex_; // Local mutex for thread-safe shard assignment public: WorkAssignment assign_work(const std::string& scanner_id, uint64_t hashrate) { std::lock_guard lock(mutex_); // Acquire lock to prevent race conditions // Find available shard from 65,536 total shards (2^16 partitions of 2^256 keyspace) auto shard = find_free_shard(); // Mark shard as assigned in Redis distributed hash table for global coordination redis_.hset("shard_assignments", std::to_string(shard), scanner_id); // Set expiration timer - auto-release shard if scanner disconnects or crashes (10 min timeout) redis_.expire("shard:" + std::to_string(shard), 600); return WorkAssignment{ .shard_index = shard, .start_offset = (uint64_t)shard << 240, // Each shard covers 2^240 keys .end_offset = ((uint64_t)shard + 1) << 240 // Exclusive upper bound }; } void release_work(const std::string& scanner_id) { // Release all shards assigned to this scanner when it disconnects gracefully auto assignments = redis_.hgetall("shard_assignments"); // Fetch all current assignments for (const auto& [shard, assigned_scanner] : assignments) { if (assigned_scanner == scanner_id) { // Match scanner by public key redis_.hdel(\"shard_assignments\", shard); // Remove from assignment table redis_.del(\"shard:\" + shard); // Delete shard metadata } } } uint32_t find_free_shard() { for (uint32_t i = 0; i < 65536; i++) { // Iterate through all 2^16 shards if (!redis_.hexists(\"shard_assignments\", std::to_string(i))) { return i; // Found unassigned shard, return immediately } } throw std::runtime_error(\"All 65,536 shards are currently assigned\"); // Network saturated } };
// solana_reward.py - HEXK SPL Token Scanning Reward Pool from solana.rpc.async_api import AsyncClient from solana.transaction import Transaction from spl.token.instructions import transfer_checked from solana.keypair import Keypair class HEXKRewardDistributor: def __init__(self, pool_wallet: Keypair): self.pool_wallet = pool_wallet # Bootstrap node's hot wallet for reward distribution self.client = AsyncClient("https://api.mainnet-beta.solana.com") # Mainnet RPC endpoint self.hexk_mint = "HEXKto...Base58" # HEXK SPL token mint address on Solana async def distribute_reward(self, scanner_pubkey: str, amount: int): """Send HEXK tokens to scanner wallet after successful discovery verification""" tx = Transaction() # Create new Solana transaction tx.add(transfer_checked( # SPL token transfer with decimal verification source=self.pool_token_account, # Pool's associated token account dest=scanner_pubkey, # Scanner's Solana wallet address owner=self.pool_wallet.public_key, # Transaction signer amount=amount * 10**9, # Convert HEXK to lamports (9 decimals) decimals=9, # HEXK token decimal places mint=self.hexk_mint # HEXK token mint authority )) result = await self.client.send_transaction(tx, self.pool_wallet) # Sign and broadcast tx return result['result'] # Return transaction signature def calculate_reward(self, discovery_value: int, scanner_contribution: float) -> int: """Calculate HEXK reward amount based on discovered wallet value and scanner contribution history""" base_reward = 100 # 100 HEXK base reward for any valid discovery value_bonus = min(discovery_value / 1e8, 1000) # Up to 1000 HEXK bonus (capped at 1 BTC value) contribution_multiplier = 1.0 + (scanner_contribution * 0.5) # +50% max bonus for long-term contributors return int((base_reward + value_bonus) * contribution_multiplier) # Total reward formula async def verify_discovery(self, discovery: dict) -> bool: \"\"\"Verify Groth16 zk-SNARK proof before reward distribution to prevent fraud\"\"\" proof = discovery['zk_proof'] # Extract 192-byte zk-SNARK proof return len(proof) == 192 and self._verify_groth16(proof) # Validate proof structure and cryptographic correctness def _verify_groth16(self, proof: bytes) -> bool: \"\"\"Groth16 zk-SNARK verification using BN254 elliptic curve pairing\"\"\" # Extract proof components: π_A (G1), π_B (G2), π_C (G1) pi_a = proof[0:64] # 64 bytes for G1 point (compressed) pi_b = proof[64:128] # 64 bytes for G2 point pi_c = proof[128:192] # 64 bytes for G1 point # Pairing check: e(π_A, π_B) == e(π_C, δ) * e(α, β) (simplified) return self.bn254_pairing_check(pi_a, pi_b, pi_c) # BN254 bilinear pairing async def get_contribution_score(self, scanner_pubkey: str) -> float: \"\"\"Calculate scanner's contribution score (0.0-1.0) based on historical performance\"\"\" # Query scanner stats from Redis total_scans = await self.redis.get(f\"scanner:{scanner_pubkey}:total_scans\") discoveries = await self.redis.get(f\"scanner:{scanner_pubkey}:discoveries\") uptime_days = await self.redis.get(f\"scanner:{scanner_pubkey}:uptime_days\") # Contribution formula: weighted average of scan volume, discoveries, and uptime scan_score = min(int(total_scans) / 1e12, 0.5) # Max 0.5 for 1T scans discovery_score = min(int(discoveries) / 100, 0.3) # Max 0.3 for 100 discoveries uptime_score = min(int(uptime_days) / 365, 0.2) # Max 0.2 for 1 year uptime return scan_score + discovery_score + uptime_score # Total contribution score
┌──────────────────────────────────────┐ │ BLOOM FILTER ARCHITECTURE │ ├──────────────────────────────────────┤ │ Size: 3GB (24 billion bits) │ │ Hash Functions: 7 (MurmurHash3) │ │ Capacity: 1 billion addresses │ │ False Positive Rate: 0.001% │ └──────────────────────────────────────┘ [Memory Layout - Bit Array] ┌────────┬────────┬────────┬─────┐ │Segment0│Segment1│Segment2│ ... │ └────────┴────────┴────────┴─────┘ 512MB 512MB 512MB [Hash Function Cascade] Address (20 bytes) ↓ h1 = MurmurHash3(addr, seed1) % SIZE h2 = MurmurHash3(addr, seed2) % SIZE h3 = MurmurHash3(addr, seed3) % SIZE h4 = MurmurHash3(addr, seed4) % SIZE h5 = MurmurHash3(addr, seed5) % SIZE h6 = MurmurHash3(addr, seed6) % SIZE h7 = MurmurHash3(addr, seed7) % SIZE ↓ Set bits[h1..h7] = 1 [Lookup Process - O(1)] 1. Compute 7 hash values 2. Check all 7 bits in array 3. If ALL bits = 1 → Possible match 4. If ANY bit = 0 → Definitely NOT match 5. Confirm with RocksDB (if match) [RocksDB Backend Structure] Key: Bitcoin/Ethereum Address (20 bytes) Value: { blockchain: "BTC" | "ETH", balance: decimal, last_tx: timestamp, priority: integer }
Memory Efficiency: Storing 1 billion addresses in a simple hash table requires about 40GB of memory, but using Bloom Filter can compress it to just 3GB (93% compression rate). This allows loading 8 independent filters simultaneously in RTX 4090's 24GB VRAM, and performs over 1 billion address lookups per second through CUDA kernels. Each lookup operation completes within an average of 1 nanosecond, causing no bottleneck in key generation speed. (GPU version currently under development)
False Positive Handling: Bloom Filter allows false positives, but uses 7 independent hash functions to maintain false positive rate below 0.001% (1/100,000). That is, about 1,000 false matches occur per 100 million lookups, but these are filtered in real-time by the RocksDB-based secondary verification layer. False negatives mathematically never occur, so 100% detection of all actual matches is guaranteed. RocksDB lookups complete within an average of 100 microseconds on SSD, so the impact on overall performance is negligible.
Dynamic Update Mechanism: When new target addresses are added, Bloom Filter and RocksDB are updated atomically simultaneously. Bootstrap nodes synchronize filter state using Merkle Patricia Trie, and save network bandwidth by incrementally transmitting only changed segments in 512KB units. Instead of retransmitting the entire 3GB filter, on average less than 10MB delta is transmitted, completing synchronization within 1 second even on 100Mbps networks. Rollback is also possible through version management system, maintaining up to 100 snapshots.
CUDA Parallel Processing Optimization: Bloom Filter bit array is mapped to CUDA Unified Memory, allowing GPU and CPU to access simultaneously without page faults. Each CUDA thread independently performs MurmurHash3 hash calculation and bit checking, processing 32 addresses simultaneously through Warp-level SIMD operations. Memory access pattern is completely random, but actively utilizes L2 cache (40MB) to minimize actual DRAM access and maintain memory bandwidth utilization above 95%.
CPU basic computation + GPU accelerated key generation and verification engine. Generates up to billions of keys per second in parallel using CUDA kernels, and performs real-time matching with target addresses through Bloom Filter. Immediately propagates to Bootstrap and Seed nodes upon discovery.
Task distribution and duplication prevention system. Assigns unique key space to each miner using Redis-based distributed queue, and calculates HEXK token rewards by tracking computing contribution. Ensures honest computation through Proof-of-Bruteforce Attack verification.
You can check current active scanner count, cumulative scanned keys, total computing contribution and HEXK-Pool payment history, wallet with balance discovery status, distribution history and transaction signatures.
HEX-CHAIN and HEXK-Pool are directly integrated with Bitcoin Core and Geth (Go-Ethereum) RPC interfaces to query balances of discovered addresses in real-time. Also analyzes past transaction history through major Blockchain Explorer APIs (Blockchair, Etherscan) to identify dormant wallets.
Bitcoin: Bitcoin Core RPC, Electrum Server, Blockchair API Ethereum: Geth/Erigon RPC, Etherscan API, The Graph Protocol Databases: PostgreSQL (metadata), Redis (task queue), RocksDB (Bloom Filter storage)
The HEX-CHAIN project is developing through voluntary participation and open-source contributions from the cryptocurrency community. Expanding the network through collaboration with GPU manufacturers, mining pool operators, and blockchain infrastructure providers.
HEXK is built on cutting-edge blockchain technology.
HEX-CHAIN maintains HEXK-POOL based on Proof-of-Bruteforce Attack (PoBA) and records computing contribution to P2P data chain. Each data chain includes miners' key scan workload, discovered key information, and HEXK token reward distribution details. Uses SHA-3 (Keccak-256) hash function and Merkle Tree structure to ensure data integrity.
Blockchain: Solana (SPL Token Program) Token Address: HEXKto...Base58 (Solana Mainnet) P2P Network: HEXK-Pool (decentralized P2P node network, proprietary protocol) State Sync: gRPC + Protocol Buffers (consensus between Bootstrap nodes)
HEXKto...Base58
{ "recordId": "rec_1847293_a7f3b2", "timestamp": 1735689600, "scannerWallet": "7Np4...xQy2" // Solana wallet address, "workProof": { "shardIndex": "0x1A2F", "keysScanned": 15847392847, "hashRate": 1.2e9, "merkleProof": "0x7f3a9c8e...", "signature": "ed25519_sig..." }, "discoveries": [ { "targetAddress": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa", "blockchain": "bitcoin", "balance": "50.0 BTC", "finder": "7Np4...xQy2", "encryptedKey": "AES256_GCM_encrypted", "zkProof": "zk-SNARK_proof", "status": "verified" } ], "rewardTransaction": { "solanaSignature": "5vK3...Qw8F", "hexkAmount": 100000, "finder": "7Np4...xQy2", "poolDistribution": "6%" }, "consensusValidators": [ "BootstrapNode_1: 9Xm2...Ty4K", "BootstrapNode_2: 4Lp7...Rn9M", "BootstrapNode_3: 2Bk5...Ws6P" ] }
HEXK is a Solana SPL token, and scan work and reward distribution verification are recorded in the data chain between HEXK-Pool nodes and updated in the Bootstrap database. HEXK-Pool operates as a separate P2P distributed network, with Bootstrap and Seed nodes responsible for task distribution and verification, propagation and scan range delivery.
HEX-CHAIN uses Proof-of-Bruteforce Attack (PoBA) consensus mechanism. Instead of traditional PoW's meaningless hash operations (Nonce value calculation), it utilizes actual useful wallet-key scan operations as proof of work. Each node (participant) receives verification authority and rewards proportional to computing power performed, HEXK quantity held, and value of discovered keys.
Minimum 500 HEXK staking prevents Sybil attacks Probabilistic Verification of computing results detects forged work Computing contribution slashing (50% penalty) when fraud is detected
Security regarding private key delivery of discovered wallet addresses is top priority, operating multi-layer encryption and distributed escrow system.
1. Miner discovers key K for address A with balance B 2. Generate zk-SNARK proof P = Prove(K, A, balance > 0) 3. Encrypt key: E_K = AES_256_GCM(K, bootstrap_pubkey) 4. Submit to network: {A, B, E_K, P, miner_signature} 5. Network validates proof P without knowing K 6. If valid, initiate 48h timelock + escrow smart contract 7. After timelock, execute Shamir(3,5) distribution to validators 8. Validators reconstruct K, transfer funds, distribute rewards
Implemented horizontal scaling architecture to support tens of thousands of distributed nodes and GPU workers. Maximizes network throughput through sharded task distribution, load balancing, and efficient state synchronization protocol.
HEX-KEY is an independently owned wallet-key generation and comparison program.
HEX-KEY Program is an independent wallet scanner owned and operated directly by users. Based on 64-digit hexadecimal raw key values, it sequentially or randomly generates and stores Bitcoin and Ethereum wallet addresses and private keys. Stores target address list in local database and compares with generated wallets, all ownership of discovered wallets with balances belongs to the user. Purchasable with HEXK tokens or USDT, and can only run on 1 PC per package purchase (no duplicate connections).
Computing: Multi-threaded C++17, CPU-based parallel processing, GPU auxiliary acceleration (optional) Cryptography: libsecp256k1 (Optimized), OpenSSL 3.0, SHA-256, Keccak-256, RIPEMD-160 Databases: Local JSON list(Target-Wallet Storage), Bloom Filter (Fast Lookup) Interface: Tk Inter GUI, CLI Mode, Fast API
HEX-KEY Program: Stores generated wallet-keys in local DB and performs comparison → Complete user ownership HEXK-Pool: Does not store, only performs real-time matching → HEXK token rewards for scan contributions
# Windows (GUI version) 1. Download and run HEX-KEY-Setup.exe 2. Select installation path (default: C:\Program Files\HEX-KEY) 3. Enter license key (purchase with HEXK tokens or USDT) # Linux (CLI version) wget https://releases.hexchain.network/hex-key-linux-x64.tar.gz tar -xzf hex-key-linux-x64.tar.gz cd hex-key ./hex-key --license YOUR_LICENSE_KEY
{ "storage_path": "./hex-key-database/", "target_database": "./targets/target_addresses.db", "key_generation": { "mode": "sequential", // "sequential" or "random" "start_range": "0x0000000000000000000000000000000000000000000000000000000000000001", "end_range": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140", "batch_size": 100000 }, "target_chains": ["bitcoin", "ethereum"], "performance": { "cpu_threads": "auto", // Auto-detect CPU core count "memory_limit_gb": 4, "comparison_batch_size": 2000000 // 2M comparisons per second }, "database": { "rocksdb_compression": "snappy", "bloom_filter_bits_per_key": 24, "enable_statistics": true }, "output": { "save_all_wallets": true, // Save all generated wallets "match_export_path": "./matches/", // Save matched wallets separately "log_level": "info" } }
# GUI mode (Windows/macOS) ./hex-key-gui # CLI mode (Linux/Windows) ./hex-key --config config.json --mode generate # Load target address list ./hex-key --import-targets targets.csv # Check statistics ./hex-key --stats # Check generated wallet count ./hex-key --count-wallets # View matched wallets ./hex-key --list-matches
--threads 16
--mem-pool 8GB
--batch-size 500000
--rocksdb-cache 2GB
--range 0x1000:0x2000
--stats-interval 1
--progress
--log-level debug --log-file hex-key.log
--db-stats
Price: 360 HEXK or $3,600 USDT License: Entry Pack (6 months) / Annual Pack (12 months) Purchase Link: HEX-KEY Official Website Usage Policy: Detailed Policy Information Support: 24/7 Telegram Customer Support
Ultra-fast parallel scan system based on GPU acceleration - Core technology of next-generation HEXK ecosystem
GPU acceleration engine utilizing CUDA and OpenCL provides 1,400x+ performance improvement over CPU. Based on RTX 4090, 1.2 billion keys per second generation and real-time matching processing are possible, maximizing scan efficiency of HEXK ecosystem through large-scale parallel processing.
// CUDA Kernel Architecture (RTX 4090) Block Grid: 8192 blocks × 128 threads Total Workers: 1,048,576 parallel threads Shared Memory: 48KB per block Register Usage: 64 registers per thread Occupancy Target: 75% SM utilization // Memory Hierarchy L1 Cache: 128KB per SM (data cache) L2 Cache: 40MB shared (Bloom Filter) VRAM: 24GB GDDR6X @ 1 TB/s Unified Memory: CPU-GPU zero-copy // Performance Metrics Key Generation: 1.2 GKeys/s Address Derivation: 800M addrs/s Bloom Lookups: 10B ops/s Total Pipeline: 600M scans/s // Stack Operation Structure sample sample sample
┌───────────────────────────────────────┐ │ GPU PROCESSING PIPELINE │ ├───────────────────────────────────────┤ │ 1. Key Generation │ │ - Sequential/Random 256-bit keys │ │ - Shard-based distribution │ │ ↓ │ │ 2. secp256k1 EC Multiplication │ │ - Scalar × Generator Point │ │ - Montgomery Ladder + wNAF │ │ ↓ │ │ 3. Address Derivation │ │ - BTC: SHA-256 -> RIPEMD-160 │ │ - ETH: Keccak-256 (last 20 bytes) │ │ ↓ │ │ 4. Bloom Filter Lookup (VRAM) │ │ - 7 hash functions (MurmurHash3) │ │ - 3GB bitarray, 1B addresses │ │ ↓ │ │ 5. Match Reporting (if found) │ │ - Groth16 zk-SNARK proof │ │ - gRPC to Bootstrap nodes │ └───────────────────────────────────────┘
Complete CUDA kernel implementation example for 1.2 billion keys per second generation based on RTX 4090:
/** * cuda_keygen.cu - Massive Parallel Key Generation for RTX 4090 (1.2 GKeys/s) * Grid: 8192 blocks × 128 threads = 1,048,576 parallel workers per batch */ #include <cuda_runtime.h> #include \"secp256k1_device.cuh\" #include \"sha256_kernel.cuh\" #include \"keccak_kernel.cuh\" #define THREADS_PER_BLOCK 128 // Optimized for Ada Lovelace architecture #define BLOCKS_PER_GRID 8192 // Full SM utilization on RTX 4090 (128 SMs) #define BATCH_SIZE (THREADS_PER_BLOCK * BLOCKS_PER_GRID) // 1,048,576 keys per batch __global__ void massiveKeyGenKernel( const uint64_t shard_offset, // Starting offset for this shard (2^240 keys per shard) uint8_t* btc_addresses, // Output: 20-byte Bitcoin addresses (1M × 20 = 20MB) uint8_t* eth_addresses, // Output: 20-byte Ethereum addresses (1M × 20 = 20MB) const uint64_t* bloom_bits, // Input: 3GB Bloom filter in VRAM for fast lookup uint32_t* match_indices // Output: Indices of matched addresses for reporting ) { uint32_t tid = blockIdx.x * blockDim.x + threadIdx.x; // Global thread ID (0 to 1,048,575) if (tid >= BATCH_SIZE) return; // Boundary check // Phase 1: Generate 256-bit private key from shard offset + thread ID uint64_t privkey[4]; // 4 × 64-bit = 256-bit private key derive_key_from_offset(shard_offset + tid, privkey); // Sequential deterministic key generation // Phase 2: secp256k1 elliptic curve point multiplication (most expensive operation) uint64_t pubkey_x[4], pubkey_y[4]; // Public key coordinates on secp256k1 curve secp256k1_scalar_mult_g(privkey, pubkey_x, pubkey_y); // Q = scalar × G (generator point) // Phase 3a: Derive Bitcoin P2PKH address (SHA-256 + RIPEMD-160) uint8_t compressed[33]; // Compressed public key (0x02/0x03 + 32 bytes x-coordinate) compressed[0] = (pubkey_y[0] & 1) ? 0x03 : 0x02; // Even/odd y parity bit write_be_u256(compressed + 1, pubkey_x); // Big-endian x-coordinate uint8_t btc_addr[20]; // Bitcoin address (RIPEMD-160 hash) bitcoin_address_derive(compressed, 33, btc_addr); // SHA-256 → RIPEMD-160 pipeline memcpy(&btc_addresses[tid * 20], btc_addr, 20); // Store in global memory // Phase 3b: Derive Ethereum address (Keccak-256, last 20 bytes) uint8_t eth_addr[20]; ethereum_address_derive(pubkey_x, pubkey_y, eth_addr); // Keccak-256(uncompressed_pubkey)[12:32] memcpy(ð_addresses[tid * 20], eth_addr, 20); // Store in global memory }
/** * secp256k1_device.cuh - GPU-Optimized secp256k1 Elliptic Curve Operations * Uses shared memory for precomputed generator point multiples (2G, 4G, 8G...) */ #ifndef SECP256K1_DEVICE_CUH #define SECP256K1_DEVICE_CUH // secp256k1 curve parameters (y² = x³ + 7 mod p) __constant__ uint64_t SECP256K1_P[4] = { // Prime modulus 0xFFFFFFFEFFFFFC2FULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL }; __constant__ uint64_t SECP256K1_N[4] = { // Curve order (group size) 0xBFD25E8CD0364141ULL, 0xBAAEDCE6AF48A03BULL, 0xFFFFFFFFFFFFFFFEULL, 0xFFFFFFFFFFFFFFFFULL }; __constant__ uint64_t GENERATOR_G_X[4] = { // Generator point G x-coordinate 0x59F2815B16F81798ULL, 0x029BFCDB2DCE28D9ULL, 0x55A06295CE870B07ULL, 0x79BE667EF9DCBBACULL }; __device__ inline void field_mul_mod( const uint64_t* a, const uint64_t* b, uint64_t* result ) { // 256-bit × 256-bit = 512-bit multiplication with Barrett reduction __uint128_t r0 = 0, r1 = 0, r2 = 0, r3 = 0; for (int i = 0; i < 4; i++) { // Schoolbook multiplication with carry propagation __uint128_t carry = 0; for (int j = 0; j < 4; j++) { __uint128_t prod = (__uint128_t)a[i] * (__uint128_t)b[j] + carry; carry = prod >> 64; // Extract high 64 bits as next carry } } // Barrett reduction: result = r mod p using precomputed reciprocal barrett_reduce_secp256k1(r0, r1, r2, r3, result); // Optimized modular reduction } __device__ void secp256k1_scalar_mult_g( const uint64_t* scalar, uint64_t* result_x, uint64_t* result_y ) { // Double-and-add algorithm with wNAF optimization (window size=4) // Precompute [G, 3G, 5G, 7G, 9G, 11G, 13G, 15G] in shared memory extern __shared__ uint64_t precomp_table[]; // 8 points × 2 coords × 4 words = 512 bytes initialize_precomp_table(precomp_table); // Load from constant memory once per block // Process scalar bits from MSB to LSB using wNAF representation for (int i = 255; i >= 0; i--) { point_double(result_x, result_y); // Point doubling: R = 2R if (get_wnaf_bit(scalar, i)) { point_add(result_x, result_y, precomp_table); // Point addition: R = R + kG } } } #endif
/** * sha256_kernel.cu - GPU-Optimized SHA-256 for Bitcoin Address Derivation * Used in: Compressed PubKey → SHA-256 → RIPEMD-160 → Bitcoin Address */ #include <cuda_runtime.h> // SHA-256 constants (first 32 bits of fractional parts of cube roots of first 64 primes) __constant__ uint32_t K[64] = { 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174 // ... (remaining 48 constants omitted for brevity) }; __device__ inline uint32_t ROTR(uint32_t x, int n) { return (x >> n) | (x << (32 - n)); } // Right rotate __device__ inline uint32_t CH(uint32_t x, uint32_t y, uint32_t z) { return (x & y) ^ (~x & z); } __device__ inline uint32_t MAJ(uint32_t x, uint32_t y, uint32_t z) { return (x & y) ^ (x & z) ^ (y & z); } __device__ inline uint32_t EP0(uint32_t x) { return ROTR(x,2) ^ ROTR(x,13) ^ ROTR(x,22); } __device__ inline uint32_t EP1(uint32_t x) { return ROTR(x,6) ^ ROTR(x,11) ^ ROTR(x,25); } __device__ inline uint32_t SIG0(uint32_t x) { return ROTR(x,7) ^ ROTR(x,18) ^ (x >> 3); } __device__ inline uint32_t SIG1(uint32_t x) { return ROTR(x,17) ^ ROTR(x,19) ^ (x >> 10); } __device__ void sha256_transform(uint32_t state[8], const uint8_t block[64]) { uint32_t W[64], a, b, c, d, e, f, g, h, t1, t2; // Prepare message schedule (first 16 words from input block) for (int i = 0; i < 16; i++) { W[i] = (block[i*4] << 24) | (block[i*4+1] << 16) | (block[i*4+2] << 8) | block[i*4+3]; } // Extend into remaining 48 words for (int i = 16; i < 64; i++) { W[i] = SIG1(W[i-2]) + W[i-7] + SIG0(W[i-15]) + W[i-16]; } // Initialize working variables with current hash value a = state[0]; b = state[1]; c = state[2]; d = state[3]; e = state[4]; f = state[5]; g = state[6]; h = state[7]; // Main compression loop (64 rounds unrolled for GPU efficiency) #pragma unroll for (int i = 0; i < 64; i++) { t1 = h + EP1(e) + CH(e,f,g) + K[i] + W[i]; // Temporary word t1 t2 = EP0(a) + MAJ(a,b,c); // Temporary word t2 h = g; g = f; f = e; e = d + t1; d = c; c = b; b = a; a = t1 + t2; // Update working variables } }
/** * keccak_kernel.cu - GPU-Optimized Keccak-256 for Ethereum Address Derivation * Ethereum address = Keccak-256(uncompressed_pubkey)[12:32] (last 20 bytes) */ #include <cuda_runtime.h> // Keccak-f[1600] round constants (24 rounds) __constant__ uint64_t RC[24] = { 0x0000000000000001ULL, 0x0000000000008082ULL, 0x800000000000808AULL, 0x8000000080008000ULL, 0x000000000000808BULL, 0x0000000080000001ULL, 0x8000000080008081ULL, 0x8000000000008009ULL, 0x000000000000008AULL, 0x0000000000000088ULL, 0x0000000080008009ULL, 0x000000008000000AULL, 0x000000008000808BULL, 0x800000000000008BULL, 0x8000000000008089ULL, 0x8000000000008003ULL, 0x8000000000008002ULL, 0x8000000000000080ULL, 0x000000000000800AULL, 0x800000008000000AULL, 0x8000000080008081ULL, 0x8000000000008080ULL, 0x0000000080000001ULL, 0x8000000080008008ULL }; __device__ inline uint64_t ROT64(uint64_t x, int s) { return (x << s) | (x >> (64 - s)); } __device__ void keccak_f1600(uint64_t state[25]) { uint64_t C[5], D[5], temp; #pragma unroll for (int round = 0; round < 24; round++) { // Theta step: XOR column parity for (int x = 0; x < 5; x++) { C[x] = state[x] ^ state[x+5] ^ state[x+10] ^ state[x+15] ^ state[x+20]; } for (int x = 0; x < 5; x++) { D[x] = C[(x+4)%5] ^ ROT64(C[(x+1)%5], 1); for (int y = 0; y < 25; y += 5) state[x+y] ^= D[x]; } // Rho and Pi steps: rotate and permute temp = state[1]; for (int i = 0, x = 0, y = 1; i < 24; i++) { int t = (x + 3*y) % 5; uint64_t current = state[t*5 + x]; state[t*5 + x] = ROT64(temp, (i+1)*(i+2)/2 % 64); temp = current; x = t; } // Chi step: non-linear mixing for (int y = 0; y < 25; y += 5) { for (int x = 0; x < 5; x++) C[x] = state[y+x]; for (int x = 0; x < 5; x++) { state[y+x] = C[x] ^ ((~C[(x+1)%5]) & C[(x+2)%5]); } } // Iota step: add round constant state[0] ^= RC[round]; } }
/** * bloom_gpu.cu - GPU Bloom Filter Lookup in VRAM (3GB, 1 Billion Addresses) * Performs 7 hash function checks per address at 10B lookups/sec */ #include <cuda_runtime.h> // MurmurHash3 implementation for GPU (same as CPU version but __device__) __device__ uint64_t murmur_hash_gpu( const uint8_t* data, size_t len, uint32_t seed ) { uint64_t h = seed; for (size_t i = 0; i < len; i++) { h ^= data[i]; // XOR with byte value h *= 0x5bd1e995ULL; // MurmurHash3 magic constant h ^= h >> 15; // Avalanche mixing } return h; } __device__ bool bloom_check_gpu( const uint8_t* address, // 20-byte BTC or ETH address const uint64_t* bloom_bits, // 3GB Bloom filter in VRAM size_t bloom_size // Total bits in filter (24 billion for 1B capacity) ) { // Check all 7 hash positions (k=7 for 0.001% FPR) #pragma unroll // Compiler hint: unroll loop for GPU performance for (uint32_t i = 0; i < 7; i++) { uint64_t hash = murmur_hash_gpu(address, 20, i); // Hash with seed i uint64_t bit_pos = hash % bloom_size; // Map to bit position uint64_t word_idx = bit_pos / 64; // Index into uint64_t array uint64_t bit_mask = 1ULL << (bit_pos % 64); // Bit mask within word // Load from global memory (coalesced access for performance) uint64_t word = bloom_bits[word_idx]; // If bit is 0, address is definitely NOT in target set if (!(word & bit_mask)) return false; // Early exit (no false negatives) } // All 7 bits are set → address MIGHT be in target set (possible false positive) return true; // Caller must verify with RocksDB on CPU to eliminate FPs }
/** * gpu_launcher.cpp - Host-side CUDA Kernel Launcher for RTX 4090 * Manages GPU memory, launches kernels, and retrieves results */ #include <cuda_runtime.h> #include "cuda_keygen.cuh" class GPUScanner { uint8_t* d_btc_addresses; // Device pointer: 1M × 20 bytes = 20MB uint8_t* d_eth_addresses; // Device pointer: 1M × 20 bytes = 20MB uint64_t* d_bloom_bits; // Device pointer: 3GB Bloom filter uint32_t* d_match_indices; // Device pointer: matched address indices public: void initialize() { // Allocate GPU memory for batch processing cudaMalloc(&d_btc_addresses, 1048576 * 20); // 1M BTC addresses cudaMalloc(&d_eth_addresses, 1048576 * 20); // 1M ETH addresses cudaMalloc(&d_bloom_bits, 3ULL * 1024 * 1024 * 1024); // 3GB Bloom filter cudaMalloc(&d_match_indices, 1048576 * sizeof(uint32_t)); // Match buffer // Load Bloom filter from host to device (one-time transfer) load_bloom_filter_to_gpu(d_bloom_bits); } void launch_scan(uint64_t shard_offset) { // Launch kernel: 8192 blocks × 128 threads = 1,048,576 parallel workers dim3 grid(8192); // Block grid size dim3 block(128); // Threads per block massiveKeyGenKernel<<>>( shard_offset, d_btc_addresses, d_eth_addresses, d_bloom_bits, d_match_indices ); // Wait for GPU to finish (blocking synchronization) cudaDeviceSynchronize(); // Check for kernel errors cudaError_t err = cudaGetLastError(); if (err != cudaSuccess) { printf("CUDA Error: %s\n", cudaGetErrorString(err)); } } };
# Install CUDA Toolkit wget https://developer.download.nvidia.com/compute/cuda/12.3.0/local_installers/cuda_12.3.0_545.23.06_linux.run sudo sh cuda_12.3.0_545.23.06_linux.run # Set environment variables export PATH=/usr/local/cuda-12.3/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-12.3/lib64:$LD_LIBRARY_PATH # Build GPU-accelerated HEX-KEY git clone https://github.com/hex-chain/hex-key-gpu.git cd hex-key-gpu mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCUDA_ARCH=89 .. # sm_89 for RTX 4090 make -j$(nproc) # Run ./hexkey-gpu --config config.json --benchmark
# Install ROCm (for AMD GPU) sudo apt-get update sudo apt-get install rocm-opencl-dev # Build OpenCL version cmake -DCMAKE_BUILD_TYPE=Release -DUSE_OPENCL=ON .. make -j$(nproc) # Run on AMD GPU ./hexkey-opencl --platform AMD --device 0
# NVIDIA Nsight Compute profiling ncu --set full --target-processes all ./hexkey-gpu # Key metrics analysis - SM Efficiency: Target > 75% - Memory Throughput: Target > 800 GB/s - Achieved Occupancy: Target > 0.70 - Warp Execution Efficiency: Target > 95% # Identify bottlenecks ncu --metrics sm__warps_active.avg.pct_of_peak_sustained_active ./hexkey-gpu
CPU-based system is currently complete, and GPU-accelerated version is being developed in stages.
HEXK token is the basic unit of the ecosystem.
Of the total 10 million HEXK issued, 6 million are deposited in the HEXK-Pool address, with an initial total circulating supply of 4 million.
As HEXK-Pool participants increase, circulation may gradually increase, and HEXK token has administrator privileges removed.
In other words, HEXK token cannot be additionally issued, and is a fully transparent contract token that cannot be burned or frozen.
Detailed information and proof can be directly verified by clicking the (View) buttons in the information above.
The 6 million HEXK deposited in HEXK-Pool is distributed as follows: Basic Scan Reward: 1.0 HEXK reward per 5 billion Wallet-Key scans Discovery Bonus: 10 ~ 1,000 HEXK + 10% of discovered wallet assets when balance is found HEXK Holder Reward: Automatically distribute discovered Bitcoin / Ethereum according to HEXK holdings HEXK-POOL Synchronization: P2P scan range values and scan data chain propagation and verification between nodes every 1 minute (60 seconds) Reward Halving: Reward amount reduced by half every time 1,000,000 HEXK is distributed from HEXK-Pool Reward Pool Size: Starts with 6,000,000 HEXK deposit when HEXK-Pool converts to public, no additional issuance
All scan work status, reward payments, and discovered wallet information can be viewed in real-time through HEXK-Pool Explorer: • Work Status: Total network hash rate (computing contribution), active scanner count, cumulative scanned keys • Reward History: HEXK acquisition history and transaction signatures for each Solana wallet • Discovery Status: List of discovered BTC/ETH wallets (private keys are encrypted and protected) • Real-time Statistics: Block explorer style dashboard https://hexk-pool.hex-chain.org (Scheduled to be released when HEXK-Pool converts to public pool)
https://hexk-pool.hex-chain.org (Scheduled to be released when HEXK-Pool converts to public pool)
HEX-CHAIN operates as a Decentralized Autonomous Organization (DAO). HEXK token holders can change core protocol parameters and determine the network's development direction.
HEX-CHAIN initially proceeded with development as an independent mainnet, but based on the following technical considerations, switched to Solana blockchain-based smart contract and deployed the HEXK token.
1. Inter-node Block Integration and High-speed Synchronization Optimization During independent mainnet development, when synchronizing large-scale scan data between HEXK-Pool's P2P nodes to all full nodes, there are improvement points regarding increased data chain storage size and network synchronization delays. Solana dramatically improves synchronization speed by pre-proving time order through the Proof of History (PoH) consensus mechanism. 2. Scalability and Processing Speed • HEX-CHAIN Independent Mainnet: Block generation time ~60 seconds, TPS 50-100 • Solana Network: Block time ~400ms, TPS 65,000+ (theoretically 710,000) • Solana's speed is essential for data chain connection following real-time scan result submission and reward distribution by HEXK-Pool participants 3. Resolving Bootstrap Node and Full Client Data Size Issues In an independent mainnet, when storing wallet scan records and computation contribution records between nodes on the blockchain and synchronizing, full node storage size increases to several TB during scan data synchronization between nodes, raising entry barriers for general and new participants. By utilizing Solana's Turbine protocol and Gulf Stream, data propagation efficiency is maximized, and storage burden is minimized by recording and propagating only core data on-chain and in P2P data pools between nodes.
The 64-digit hexadecimal raw key values handled by HEX-CHAIN are similar to Bitcoin/Ethereum Private Key format, but reverse-tracking Solana account Private Keys through them is cryptographically impossible.
Algorithm: ECDSA (Elliptic Curve Digital Signature Algorithm) Curve: secp256k1 (y² = x³ + 7) Key Generation: Private Key (256-bit) → Public Key (ECDSA Point Multiplication) → Address (SHA-256 + RIPEMD-160) Bruteforce Difficulty: 2^256 (practically impossible, but theoretical possibility of collision attacks exists) Vulnerability: Uses same elliptic curve algorithm → HEX-CHAIN raw key values can be directly converted to BTC/ETH Private Keys
Algorithm: EdDSA (Edwards-curve Digital Signature Algorithm) Curve: Curve25519 (x² + y² = 1 + dx²y²) - completely different curve from secp256k1 Key Generation: Seed (32 bytes) → Ed25519 Private Key → Public Key (Scalar Multiplication) → Address (Base58 encoding) Hash Function: Blake3 (internal), SHA-256 (transaction signing) Bruteforce Difficulty: 2^256 + algorithm independence (cannot infer Solana keys from HEX-CHAIN raw key values) Security Benefits: • Ed25519 is a mathematically independent curve from secp256k1 • Blake3 hash has superior collision resistance compared to SHA-256 (2x diffusion speed) • Cannot apply HEX-CHAIN's BTC/ETH scan key values to SOL accounts → HEXK tokens remain safe even if scan data is leaked
After stabilizing the HEXK ecosystem with Solana-based smart contracts, the HEX-CHAIN independent mainnet is planned to be developed and deployed as follows: 1. Hybrid Architecture (Solana + HEX-CHAIN) • HEXK token remains on Solana (leveraging speed and accessibility advantages) • HEX-CHAIN mainnet operates as a dedicated chain for large-scale scan data storage • Implement Cross-chain Bridge between Solana and HEX-CHAIN (utilizing Wormhole protocol) 2. Mainnet's Differentiated Role • Large-capacity Block Design: Store large-scale scan records on-chain with 10MB blocks • Zero-Knowledge Proofs: Verify discovery proofs through zk-SNARKs (privacy protection) • Decentralized Application Platform: Run native dApps like HEXK-Pool, HEX-KEY • Independent Consensus Mechanism: Proof of Scan (PoScan) - block generation rights based on scan workload 3. Interoperability with Solana • HEXK token usable on both Solana and HEX-CHAIN (1:1 pegging) • Handle routine transactions with Solana's fast speed • Conduct important discovery records and governance voting on HEX-CHAIN • Users can freely move between the two chains as needed 4. Technical Improvements • Sharded Blockchain: Distribute and store scan data by shards (ensure scalability) • Light Client Support: Lightweight nodes verifiable even on smartphones • IPFS Integration: Store large-scale scan results on IPFS, record only hashes on-chain • Quantum-Resistant Crypto: Introduce quantum-resistant signature algorithms like CRYSTALS-Dilithium Expected Mainnet Launch: 2026 Q4 | Testnet: 2026 Q2
Expected Mainnet Launch: 2026 Q4 | Testnet: 2026 Q2
The Solana-based smart contract enabled "fast launch + stable operation" of the HEX-CHAIN ecosystem. The cryptographic independence of Ed25519 / Blake3 algorithms completely separates HEX-CHAIN's BTC/ETH scan operations from HEXK token security, providing an environment where participants can focus on scan operations with confidence. Even after completing the independent mainnet development in the future, we will maintain integration with Solana to build a "hybrid ecosystem that leverages the advantages of both chains".
Development guide for HEXK-Pool and HEX-CHAIN.
# Ubuntu/Debian environment setup sudo apt update && sudo apt install -y \ build-essential cmake ninja-build git \ libssl-dev libsecp256k1-dev librocksdb-dev \ nvidia-cuda-toolkit nvidia-driver-535 # Install Python dependencies pip3 install numpy web3 grpcio protobuf prometheus-client # Clone and build HEX-CHAIN SDK git clone --recursive https://github.com/hex-chain/hexk-sdk.git cd hexk-sdk && mkdir build && cd build cmake -GNinja -DCMAKE_BUILD_TYPE=Release .. ninja && sudo ninja install
Uses gRPC API as default, REST API is provided for simple queries.
// hexchain.proto service HexChain { // Request work assignment rpc RequestWork(WorkRequest) returns (WorkAssignment); // Submit work results rpc SubmitWork(WorkProof) returns (WorkReceipt); // Report key discovery rpc ReportDiscovery(KeyDiscovery) returns (DiscoveryReceipt); // Real-time target list stream rpc StreamTargets(TargetRequest) returns (stream TargetUpdate); }
GET /api/v1/stats
GET /api/v1/blocks/:number
GET /api/v1/miner/:address
POST /api/v1/validate
// cuda_keygen.cu - Optimized batch key generation kernel __global__ void batchKeyGenerationKernel( const uint64_t* key_offsets, uint8_t* public_keys, uint8_t* addresses_btc, uint8_t* addresses_eth, const uint32_t batch_size ) { uint32_t idx = blockIdx.x * blockDim.x + threadIdx.x; if (idx >= batch_size) return; // Generate private key from offset uint256_t priv_key = derive_key_from_offset(key_offsets[idx]); // secp256k1 point multiplication: pubkey = privkey * G Point pubkey = scalar_mult_generator(priv_key); // Store compressed public key point_to_compressed(&pubkey, &public_keys[idx * 33]); // Derive Bitcoin address (RIPEMD160(SHA256(pubkey))) uint8_t hash[32], ripemd[20]; sha256_device(&public_keys[idx * 33], 33, hash); ripemd160_device(hash, 32, &addresses_btc[idx * 20]); // Derive Ethereum address (Keccak256(pubkey)[12:32]) keccak256_device(&public_keys[idx * 33], 33, hash); memcpy(&addresses_eth[idx * 20], &hash[12], 20); }
// bloom_checker.cpp - Ultra-fast address verification #include "rocksdb/db.h" #include "bloom_filter.hpp" class AddressChecker { std::unique_ptr db_; BloomFilter<20> bloom_; // 20-byte addresses public: bool checkAddress(const uint8_t* addr) { // Fast negative check via Bloom filter if (!bloom_.contains(addr)) return false; // Confirm with database lookup std::string key(reinterpret_cast(addr), 20); std::string value; auto status = db_->Get(rocksdb::ReadOptions(), key, &value); return status.ok() && !value.empty(); } void batchCheck(const std::vector& addrs, std::vector& results) { #pragma omp parallel for for (size_t i = 0; i < addrs.size(); ++i) { results[i] = checkAddress(addrs[i].data()); } } };
import grpc from hexk_proto import hexchain_pb2, hexchain_pb2_grpc class HexChainMiner: def __init__(self, bootstrap_addr='seed1.hexchain.network:50051'): channel = grpc.secure_channel( bootstrap_addr, grpc.ssl_channel_credentials() ) self.stub = hexchain_pb2_grpc.HexChainStub(channel) def request_work(self, worker_id, capabilities): request = hexchain_pb2.WorkRequest( worker_id=worker_id, gpu_count=capabilities['gpu_count'], hashrate=capabilities['hashrate'] ) assignment = self.stub.RequestWork(request) return { 'shard_index': assignment.shard_index, 'key_range_start': assignment.key_range_start, 'key_range_end': assignment.key_range_end, 'target_addresses': list(assignment.targets) } def submit_discovery(self, address, encrypted_key, proof): discovery = hexchain_pb2.KeyDiscovery( address=address, encrypted_private_key=encrypted_key, zk_proof=proof, timestamp=int(time.time()) ) receipt = self.stub.ReportDiscovery(discovery) print(f"Discovery submitted! Reward: {receipt.reward_amount} HEXK")
The journey HEX-CHAIN has taken so far and the upcoming update schedule.
HEX-CHAIN's ultimate goal is to transform Bitcoin and Ethereum's centralized wealth structure into decentralized community ownership. Through this, we realize true blockchain ideology of decentralization, and create an environment where anyone can participate fairly in the cryptocurrency economy.
Join the HEXK community and grow together.
Technical support channels and community inquiry methods:
Urgent Issues: Use Signal Messenger or Email Support Partnership Inquiries: support@hex-chain.org
HEX-CHAIN is an open-source project that anyone can contribute to.
# 1. Fork and Clone git clone https://github.com/your-username/hex-chain.git cd hex-chain # 2. Create Feature Branch git checkout -b feature/amazing-optimization # 3. Make Changes and Test make test make benchmark # 4. Commit with Conventional Commits git commit -m "perf(cuda): optimize secp256k1 by 15%" # 5. Push and Create Pull Request git push origin feature/amazing-optimization
Refer to hex-key.org official website → Events page
Resources for development and learning:
Beginners: Master Tutorials beginner → intermediate → advanced stages Developers: Master Docs → Master HEXK-Pool and HEX-KEY pages → Contribute to GitHub Researchers: Master aTTack Paper → Academic Research → Community proposals