Docs › Start here › Programs
Programs
One repository, one build, many programs. bazel build :all produces every binary below; each is also available as a stand-alone <Name>_deploy.jar. Almost all of them take exactly one argument: the path to a config file.
Core
| Program | Main class | What it does | Needs |
|---|---|---|---|
| SnowBlossomNode | snowblossom.node.SnowBlossomNode | The full node. Maintains peer connections, downloads and validates every block, keeps the UTXO trie, serves wallets, miners, pools and explorers over gRPC. Holds no funds or keys (only identity keys for TLS). JVM heap fixed at 4 GB by the build. | 64-bit Java, ~100 GB disk (indexed mainnet), network |
| SnowBlossomClient | snowblossom.client.SnowBlossomClient | Command-line wallet: creates keys and seeds, shows balances, sends, imports/exports, runs the JSON-RPC server, monitors addresses, audit logs, load tests. | A node (own or public) |
| IceLeaf / IceLeafTestnet | snowblossom.iceleaf.IceLeaf | Swing GUI wallet with multiple named wallets of any key mode, send/receive with QR codes, history, node selection, and an optional embedded full node. | Desktop Java; 64-bit for the embedded node |
Mining
| Program | Main class | What it does | Needs |
|---|---|---|---|
| PoolMiner | snowblossom.miner.PoolMiner | The standard miner. Gets work from a MrPlow pool, hashes against a local snow field, submits shares. Supports memfield (field in RAM) and partial RAM caching. | Snow field on disk, pool |
| Arktika | snowblossom.miner.Arktika | Advanced miner that splits the field into 1 GiB chunks served from layers: files, RAM, or other Arktika instances over the network (gRPC word server, port 2311). Lets a cluster mine as if the whole field were in memory. | Field chunks + decks, pool |
| SurfMiner | snowblossom.miner.surf.SurfMiner | Reads the field sequentially in “waves” and applies each chunk to all pending work units, turning random reads into sequential ones for slow media. | Field, pool, RAM for work units |
| SnowBlossomMiner | snowblossom.miner.SnowBlossomMiner | Solo miner: subscribes to block templates from a node and submits whole blocks. Only pays out when you find a block yourself; not recommended unless you control a large share of the hash rate. | Node, snow field |
| MrPlow | snowblossom.miner.plow.MrPlow | PPLNS mining pool. Takes templates from one or more nodes, hands work to miners (TCP 23380 / TLS 23382), validates shares, and pays miners directly in the coinbase of found blocks. Heap 4 GB. | Node(s), persistent DB |
| MrPlowDataMigrate | snowblossom.miner.plow.DataMigrate | One-off tool to migrate a pool database between db_types. | |
| SnowFall | snowblossom.lib.SnowFall | Generates a snow field: SnowFall <file> <seed> <size_mb>. Usually invoked through tools/snowfall-*.sh or the miners' auto_snow=true. | Fast storage, 256 MiB+ RAM, patience |
| SnowMerkle | snowblossom.lib.SnowMerkle | Streams a field once, prints its merkle root (to verify against the network table) and writes the .deck.a/.b/.c files miners need for proofs. |
Explorer and tools
| Program | Main class | What it does |
|---|---|---|
| ShackletonExplorer | snowblossom.shackleton.Shackleton | Web block explorer and JSON API (the software behind snowblossom-explorer.org). Needs a node with tx_index and addr_index. |
| RichList | snowblossom.shackleton.RichList | Walks the UTXO set and prints balances per address. |
| MinerReport | snowblossom.shackleton.MinerReport | Report of recent miners / coinbase remarks (2.2). |
| VanityGen | snowblossom.client.VanityGen | VanityGen <text> <starts> <ends>: brute-forces standard keys until the mainnet address starts with / ends with / contains text (only Duck32 characters qpzry9x8gf2tvdw0s3jn54khce6mua7l). Prints a wallet JSON to import. |
| HoleGen | snowblossom.client.HoleGen | Makes a valid-looking address from an arbitrary string with no known private key - a burn address. Not a Bazel target; run via java -cp. |
| ShowAlgo | snowblossom.lib.ShowAlgo | Lists every JCA provider/algorithm available (with BouncyCastle). Debugging aid. |
| Everything | snowblossom.iceleaf.IceLeaf | A single jar containing all of the above (used by the generic snowblossom/snowblossom Docker image): java -cp Everything_deploy.jar snowblossom.node.SnowBlossomNode node.conf. |
Invocation patterns
# release zip
java -jar SnowBlossomNode_deploy.jar configs/node.conf
java -jar SnowBlossomClient_deploy.jar configs/client.conf balance
# bazel build tree
bazel-bin/SnowBlossomNode node.conf
# deploy jar of any target
bazel build :PoolMiner_deploy.jar && java -jar bazel-bin/PoolMiner_deploy.jar pool-miner.conf
# JVM options (e.g. more heap for a miner with memfield)
java -Xmx40g -jar PoolMiner_deploy.jar pool-miner.conf
Programs that store data (node, pool) create their directories on first start. Every program supports overriding config keys with environment variables - see Configuration.