Source code
Eddycoin is open source under the MIT License. Below is the complete source of the software that runs the live mainnet eddycoin-mainnet-1: the node, the pool, the explorer, the CPU and GPU miners, the wallet with 24 recovery words, the genesis and the signed emission spec. Read every file in your browser or download the archive.
Download eddycoin-mainnet-source.zip 274 KB · 56 files · MIT License
SHA-256 of the zip: 8968e50135ba29e673af1043483e53a9d531da44b38b85ee97a7a7012e22f987
Browse the code
Click a file to read it. Line numbers are links; raw opens the plain file. Your browser checks each file against the SHA-256 in the file list. Start with README.md.
- LICENSE
- README.md
- SHA256SUMS
- emission/EMISSION.md
- emission/K120B_SPEC.md
- emission/emission-signing.pub
- emission/kompromis-120b.json
- emission/kompromis-120b.json.sha256
- emission/kompromis-120b.json.sig
- emission/tests/emission_fullsim.c
- emission/tests/test_emission_vs_c.py
- emission/verify_emission.py
- explorer/eddycoin_explorer.py
- genesis/emission-signing.pub
- genesis/genesis.json
- genesis/genesis.json.sha256
- genesis/genesis.json.sig
- genesis/verify_genesis.py
- miners/Start mining (CPU + GPU).cmd
- miners/build/Eddycoin CPU Miner.spec
- miners/build/Eddycoin GPU Miner.spec
- miners/eddycoin_chain.json
- miners/eddycoin_chain.py
- miners/eddycoin_dchain_gpu_miner.py
- miners/eddycoin_echain_cpu_miner.py
- miners/eddycoin_miner_defaults.json
- miners/eddycoin_miner_gui.py
- miners/eddycoin_old_keys.py
- miners/mac/Info.plist.in
- miners/mac/build_mac_apps.py
- miners/mac/eddycoin_mac_start.py
- miners/mac/launcher.sh.in
- miners/mac/make_runtime.py
- node/eddycoin_node.py
- pool/eddycoin_pool.py
- pool/pool.example.json
- release-tools/README.md
- release-tools/build_mainnet_release.py
- release-tools/build_pool_explorer.py
- release-tools/emission_artifact.py
- release-tools/make_genesis.py
- release-tools/patch_clients.py
- release-tools/patch_sources.py
- tools/exe_modules.py
- tools/make_hashed_module.py
- tools/patch_exe.py
- tools/verify_exes.py
- wallet/SEED_SPEC.md
- wallet/build/Eddycoin Wallet.spec
- wallet/eddycoin_chain.json
- wallet/eddycoin_chain.py
- wallet/eddycoin_old_keys.py
- wallet/eddycoin_seed.py
- wallet/eddycoin_wallet.py
- wallet/tests/bip39_vectors_official.json
- wallet/tests/test_seed.py
The file viewer needs JavaScript. Without it, use the links on the left (plain text) or the zip.
Verify it yourself
- The archive: compare the SHA-256 above, then check every file inside against
SHA256SUMS.sha256sum eddycoin-mainnet-source.zip unzip eddycoin-mainnet-source.zip && cd eddycoin-mainnet-source sha256sum -c SHA256SUMS
- The genesis: checks the Ed25519 signature, the SHA-256, zero allocations, the cap, the emission spec hash and the genesis id, and compares with the seed node (Python 3.8+, no libraries).
python3 genesis/verify_genesis.py --online
- The emission: checks the signed spec and recomputes the whole 120-year schedule from the consensus constants.
python3 emission/verify_emission.py --dir emission
- The live chain: let your own copy of the node re-validate every block, checkpoint and reward.
curl -o chain.json https://129-159-188-73.sslip.io/api/export python3 node/eddycoin_node.py --verify-file chain.json
- The programs on Downloads: the Windows exes are built with PyInstaller (Python 3.12) from these files. PyInstaller builds are not byte-for-byte reproducible, so the exe hashes cannot be recomputed. Instead this script compares the Eddycoin code inside each exe (bytecode, all strings, line numbers) with what Python 3.12 compiles from this source, and the Mac app's
.pyfiles byte for byte:python3.12 tools/verify_exes.py FOLDER_WITH_THE_4_DOWNLOAD_ZIPS
At publication all 19 checks matched (CPU miner, GPU miner, wallet, Mac miner). The bundled Python runtime and libraries inside the exes are third-party code and are not rebuilt by this check.
No private keys, passwords, tokens, wallet files or server configuration are in the source. The signing key, the pool wallet and server credentials are private by design. See README.md for what is not included and why.
Consensus parameters mainnet
- Two proof-of-work lanes, both double SHA-256: E-Chain (CPU) and D-Chain (GPU). A block is valid when its hash has at least
bitsleading zero bits (≈ 2^bits hashes per block). - Y-Chain checkpoints: each needs exactly one E block and one D block for the same checkpoint candidate; it carries the transactions and the reward.
- Node 2.0.2 consensus upgrade, active from Y checkpoint 880 (checkpoints below 880 keep the old rules; balances, addresses, miners and pool unchanged). Details: comment block
2.0.2 CONSENSUS UPGRADEinnode/eddycoin_node.py. - Difficulty retargets separately for E and D every 10 checkpoints; range E 18–34, D 20–40 bits; genesis E 27 / D 32 bits. Up to Y 879: 30 s per lane from arrival times, at most 2 bits per step (≈ 45–55 s per checkpoint). From Y 880: fine-grained target work from block timestamps, 20 s per lane ≈ 30 s per checkpoint.
- Reward: Kompromis-120b, computed by every node with integer math; 50 % to the E block finder, 50 % to the D block finder (+ fees). Hard cap 900,000,000 EDDY, 8 decimals. Zero premine, no faucet, no genesis allocation.
- Transactions: UTXO, ECDSA P-256 signatures with the chain id
EDDY1in the signing domain, minimum fee 0.01 EDDY, at most 40 transactions per checkpoint. Address =eddy1+ 40 hex characters. - Block time must be after the median of the lane's last 11 blocks; up to Y 879 also within ±120 s of arrival. From Y 880 only the header time counts: at most 15 s (miner) / 30 s (peers) ahead of the node clock; checkpoint time = the later of the E and D block times.
- Fork choice: most total work; from Y 880 each checkpoint counts the weaker of its two lanes (needs both CPU and GPU work). Finality: hardcoded checkpoints every 100 up to Y 700 and no reorganisation deeper than 100 checkpoints (node 2.0.2).
Mainnet network live
| Network | eddycoin-mainnet-1 · chain id EDDY1 |
| Genesis id | f720818b202072d10b8b694d39eba3f17bb8a82d8597a92688057a5016f4746a |
| Genesis time | 27 October 2026, 22:45:15 EDT (28 October 02:45:15 UTC) · zero premine, no allocations |
| Genesis files | https://129-159-188-73.sslip.io/emission/genesis.json (+ .sha256, .sig) · node API /api/genesis |
| genesis.json SHA-256 | 980e4a20a507899699d614f5593b16900c6fbba471c2e1eccaddee862c5249bc |
| Node (seed, discovery only) | https://129-159-188-73.sslip.io |
| Pool | https://pool.129-159-188-73.sslip.io (fee 2 %) |
| Explorer API | https://explorer.129-159-188-73.sslip.io/explorer/api/ |
| Default node port | 8773 |
Checking the live node…
Mainnet design – recovery words and security live
Summary of the design of the live mainnet eddycoin-mainnet-1.
Recovery words (wallet spec)
- BIP39, 24 words: 256 bits of entropy from the operating system + an 8-bit SHA-256 checksum, from the official BIP39 English wordlist (embedded; SHA-256
2f5eed53a4727b4bf8880d8f3f199efc90e58503646d9ff8eff3a2ed3b24dbda, checked at program start). - Restore accepts exactly 24 words (case-insensitive, extra spaces ignored, the unique 4-letter prefixes are accepted); unknown words or a wrong checksum are refused.
- Seed = PBKDF2-HMAC-SHA512(NFKD(words), “mnemonic” + NFKD(extra word), 2048 iterations, 64 bytes). The optional extra word (BIP39 passphrase) is case-sensitive and never stored; a different extra word gives a different, empty wallet.
- Keys: SLIP-0010 for the NIST P-256 curve (nist256p1), path
m/44'/3339'/0'/0/0. P-256 because Eddycoin signs with P-256 (a secp256k1 key would not produce valid Eddycoin signatures). Address ="eddy1" + sha256("EDDY-ADDR|v1|" + public key hex)[:40]. - Wallet file: same format as before (PBKDF2-SHA256 600,000 + AES-256-GCM); the words are stored only encrypted (own salt and nonce, bound to the address).
- Tests: the official BIP39 test vectors and the SLIP-0010 P-256 test vectors all pass.
Security measures
- New chain identity: network
eddycoin-mainnet-1, chain idEDDY1, new signing domains (the transaction signature includes the chain id, so transactions from another network cannot be replayed). The genesis commits to the network, the chain id and the emission spec hash. - Emission in consensus: every node computes each checkpoint reward itself with integer math and rejects wrong rewards; hard checks for the 900,000,000 EDDY cap; the genesis mints nothing (zero premine, zero allocation).
- All-new keys: the mainnet wallet and miners refuse all keys from before the launch; nodes refuse to start with an old key configured; old addresses are on a block list.
- No central control: no admin reset, no “follow the server” mode; peers on another network or genesis are rejected and banned; peer discovery via seed list, peer exchange and a peer cache.
- This website: static files only (no server logic), a strict Content Security Policy, HSTS, no cookies or analytics, no wallet files or keys on the site; emission numbers are shown only after the signature check below.
Emission spec – signed, verifiable
The emission of the mainnet (Kompromis-120b) is published by the Eddycoin node as a signed file. The website stores no emission numbers: your browser downloads the spec, checks it and only then shows it.
Verifying the emission spec…
| Spec (JSON) | https://129-159-188-73.sslip.io/emission/kompromis-120b.json |
| SHA-256 | …/emission/kompromis-120b.json.sha256 |
| Ed25519 signature | …/emission/kompromis-120b.json.sig |
| Public key | …/emission/emission-signing.pub |
| Key fingerprint | b62ce8abf98a9c3d2416bee74766ed4d847afb5f3a9cd999bf4f07c4f3d591a5 (SHA-256 of the raw 32-byte key) |
| Spec SHA-256 | 0a70d671ca52094d7eaa82c7b43122bce4f9bba1281f79d0ca1211b99c27cfb7 |
Verify it yourself (Python 3.8+, standard library only): verify_emission.py · documentation: EMISSION.md · cached copy on this site: emission/
python3 verify_emission.py
Verification files (cached copies on this site; the authoritative copies are on the Eddycoin node): kompromis-120b.json · .sha256 · .sig · emission-signing.pub · verify_emission.py · EMISSION.md · how the numbers are calculated: Emission
A signature shows the file comes from the holder of the emission key and was not changed on the way. On the mainnet the formula is built into every node and the spec SHA-256 is committed into the genesis (genesis.json, field emission.spec_sha256), so the schedule cannot change without starting a different chain. The spec file's own status text still reads “planned” because the file was frozen before launch; it is not edited, since its hash is locked into the genesis.
Node API mainnet
| Method | Path | Description |
|---|---|---|
| GET | /api/state[?addr=] | chain summary, heights, difficulty, recent blocks |
| GET | /api/wallet?addr=eddy1… | balance and history of one address |
| GET | /api/block/E|D|Y/<height> | one block / checkpoint |
| GET | /api/work?chain=E|D | work for miners (header template, bits) |
| POST | /api/submit/e, /api/submit/d | submit a solved block |
| POST | /api/tx | submit a signed transaction |
| GET | /api/genesis, /api/emission | genesis and emission spec |
| GET | /api/verify, /api/export | verify the whole chain, export the chain (JSON) |
| GET | /api/peers, /api/node/info | node info, public peers |
| GET | /api/node/checkpoints?from=&to=, /api/node/segment?from= | checkpoint cross-check, sync |
| POST | /api/node/push, /api/node/hello, /api/node/report | node-to-node messages |
Base URL of the seed node: https://129-159-188-73.sslip.io. Per-IP rate limits apply.
License
MIT License – see LICENSE. The software is provided "as is", without warranty. Eddycoin is an experimental project and has not been audited. No value, price or profit is promised.