Eddycoin (EDDY) - wallet, miners and Y-Chain verifier
====================================================
Test coin only - no real money, no value. Live testnet: https://eddycoin-demo.pages.dev/live

Files
  eddycoin_wallet.py            Eddycoin Wallet (GUI; --cli for command line). Needs: cryptography
  eddycoin_echain_cpu_miner.py  E-Chain CPU miner, real double-SHA-256 (multiprocessing)
  eddycoin_dchain_gpu_miner.py  D-Chain GPU miner, real OpenCL kernel. Needs: pyopencl numpy
  eddycoin_miner_gui.py         shared window code of both miners (keep it next to them)
  eddycoin_ychain_verifier.py   checks miner result files and live chain exports (stdlib only)
  INSTALL_WINDOWS.txt           installation, GPU drivers, troubleshooting

Quick start (live testnet)
--------------------------
  1. Open https://eddycoin-demo.pages.dev/live  (or start Eddycoin Wallet).
  2. "Create my wallet": name + password (twice), "Download backup", then "Copy address".
     Step-by-step guide with screenshots: https://eddycoin-demo.pages.dev/wallet-guide
  3. Start BOTH miners with your address (double-click the .exe and paste the address, or):
       py eddycoin_echain_cpu_miner.py --wallet eddy1YOURADDRESS
       py eddycoin_dchain_gpu_miner.py --wallet eddy1YOURADDRESS
     (--wallet-file "my wallet.json" works too: only the public address is read, no password)
  4. Watch your blocks and coins on /live. A reward is "pending" until both an E-Chain (CPU) and
     a D-Chain (GPU) block exist for the open Y checkpoint ("Waiting for D-Chain (GPU) block"),
     then it is finalized in your wallet.

Rewards, emission and difficulty
--------------------------------
  - Fair launch: genesis supply 0, no premine, no faucet. EDDY is created only by Y checkpoints.
  - 8 decimals (1 EDDY = 100,000,000 units). Reward per checkpoint starts at 149.85005307 EDDY and
    is multiplied by 998335/1000000 every 10,000 checkpoints (smooth decline, half-life ~4 years).
    The total reaches exactly 900,000,000 EDDY at checkpoint 105,217,827 (~ year 100 at one
    checkpoint per 30 s); after that miners earn fees only. Reward split 50/50 E/D (odd unit to E).
  - Difficulty (leading zero bits of SHA-256d): genesis E 28 bits / D 33 bits. Every 10 blocks per
    chain it retargets toward 30 s per block (max +-2 bits per step; clamp E 18..34, D 20..40).
    More miners = higher difficulty.
  - The miners connect ONLY to --server (default https://eddycoin-demo.pages.dev, HTTPS):
    GET /api/work, POST /api/submit/e|d, GET /api/wallet. Limits: 30 block submissions/min per IP.
  - Server list / failover: --server may be repeated or comma-separated, e.g.
      --server https://eddycoin-demo.pages.dev --server http://name.duckdns.org:8770
    If the server in use is unreachable for 60 s, the miner switches to the next reachable one
    (it does not switch back by itself). In the window: Server list -> "Add" (your friend's node URL,
    checked via /api/state), pick it, "Remove", "Test" (reachable + heights). The list is saved.
    http:// is accepted only for this PC (127.0.0.1 / localhost), LAN IPs (10.x, 172.16-31.x, 192.168.x)
    and node URLs with a port - it is unencrypted (a warning is shown). Everything else needs https://.
    Eddycoin Node (your own copy of the chain): https://eddycoin-demo.pages.dev/downloads.html#node
  - --offline keeps the old behaviour: no network, writes a results JSON for /demo or the verifier.

How to secure your wallet
-------------------------
  - Set a strong password (12+ characters). It CANNOT be recovered - nobody can reset it.
  - Keep TWO backups of the wallet file (e.g. your PC + a USB stick).
  - Never share the wallet file or the password. Share only the address (eddy1...).
  - A lost file means lost coins. Delete *.unencrypted-backup.json and key exports once you have
    a safe encrypted copy.
  - Testnet only: EDDY has no value and is not real money.

Wallet (command line examples)
  py eddycoin_wallet.py --cli create "my wallet.json" --name "my wallet"
  py eddycoin_wallet.py --cli info "my wallet.json"
  py eddycoin_wallet.py --cli send "my wallet.json" --to eddy1... --amount 1.5 --note "hi" --wait 120
  py eddycoin_wallet.py --cli set-password "wallet 2.json"     (unprotected file: asks for a new password)
  py eddycoin_wallet.py --cli change-password "my wallet.json"
  Sending, exporting and changing the password ask for the password; viewing the balance does not.
  Wallet files: format v2 = name, address, publicKey in the clear + encryptedPrivateKey
  (PBKDF2-SHA256 600,000 + AES-256-GCM, random salt + nonce). v1 (unprotected) files still load.

Verifier
  py eddycoin_ychain_verifier.py eddycoin_echain_results.json eddycoin_dchain_results.json
  py eddycoin_ychain_verifier.py eddycoin_chain_export.json     (export from /live)

Heat / safety
-------------
  - Mining puts the CPU/GPU at (near) 100 % load: fans get loud and temperatures rise. Watch them
    (Task Manager > Performance, or the GPU vendor tool). STOP (or Ctrl+C) stops at any time.
  - Use --intensity 50 (or the Intensity slider) on laptops or small cases.
  - Close games / 3D apps while the GPU miner runs; lower --batch if the display stutters.
  - Nothing is installed as a service; nothing keeps running after the window closes.
