Quickstart
Everything in Snowblossom is Java, so the same binaries run on Linux, macOS and Windows. A wallet only needs a node to talk to - it does not need to be your own node, but running one is recommended for privacy. Mining additionally needs a snow field on disk.
1. Install Java
A 64-bit Java runtime is required: RocksDB (the node database) and TLS are only available on 64-bit JVMs. The Docker images run on OpenJDK 17; Java 17 or newer is the safe choice.
# Debian / Ubuntu
sudo apt-get install openjdk-17-jre-headless
# macOS (Homebrew)
brew install openjdk@17
# Windows: install a 64-bit JDK/JRE (Adoptium Temurin, Oracle, …) - or use the IceLeaf .msi
# installer from https://snowblossom.org/downloads.html which bundles its own JDK.
java -version # must say 64-Bit
2. Get the software
Option A - release zip (recommended)
Download the latest snowblossom-<version>.zip from snowblossom.org/releases (or GitHub releases). It contains the deploy jars (SnowBlossomNode_deploy.jar, SnowBlossomClient_deploy.jar, PoolMiner_deploy.jar, IceLeaf_deploy.jar), a configs/ directory with ready-to-edit config files for mainnet and testnet, logs/, and small launcher scripts (node.sh/node.bat, client.sh, pool-miner.sh, …).
Option B - dev builds
snowblossom.org/downloads.html hosts the latest development jars for every program (Arktika, MrPlow, SurfMiner, SnowBlossomMiner, … ) and Windows installers for IceLeaf. These track master and may contain work in progress.
Option C - build from source
The repository is built with Bazel (version pinned in .bazelversion, currently 7.6.2 - use bazelisk and it will fetch the right one). A JDK 17+ is needed to build.
git clone https://github.com/snowblossomcoin/snowblossom.git
cd snowblossom
bazel build :all # every binary → bazel-bin/<Name>
bazel-bin/SnowBlossomNode node.conf # run directly from the build tree
# stand-alone jars you can copy to other machines:
bazel build :SnowBlossomNode_deploy.jar :SnowBlossomClient_deploy.jar :PoolMiner_deploy.jar :IceLeaf_deploy.jar
java -jar bazel-bin/SnowBlossomNode_deploy.jar node.conf
bazel test ... # run the unit tests
Option D - Docker
Images are published on Docker Hub as snowblossom/node, snowblossom/client, snowblossom/explorer, snowblossom/poolminer and snowblossom/pool. They keep state in /data and accept every config option as an environment variable prefixed snowblossom_.
docker run -d --restart always --name snowblossom.node --network host \
-v snownode:/data -e snowblossom_addr_index=true -e snowblossom_tx_index=true \
snowblossom/node:latest
# stop gracefully (give RocksDB time to flush):
docker container stop -t 90 snowblossom.node
3. Run a node
The node connects to the peer-to-peer network, downloads and validates the chain, and serves wallets and miners over gRPC. The example configs/node.conf works as is for mainnet:
network=snowblossom
log_config_file=configs/logging.properties
db_type=rocksdb
db_path=node_db/mainnet
# indexes needed for address history / tx lookups (enable BEFORE first sync)
#addr_index=true
#tx_index=true
service_port=2338
tls_service_port=2348
tls_key_path=node_db/tls_mainnet
trustnet_key_path=node_db/trustnet
./node.sh # = java -jar SnowBlossomNode_deploy.jar configs/node.conf
# testnet: ./node-testnet.sh (network=testnet, port 2339)
Watch the log: after Got first tip from a remote peer
it starts requesting blocks; lines like New chain tip: Shard 0 Height 435000 … followed by This block was 3 d 4 h ago tell you how far behind you are. Initial sync of mainnet takes from an hour to several hours depending on disk speed; an indexed mainnet database is roughly 100 GB (2026). The JVM heap is fixed at 4 GB by the build, so give the machine at least 6–8 GB of RAM. Open the service ports on your firewall if you want inbound peers (the node also tries UPnP). Full details: Node.
4. Create a wallet and receive coins
configs/client.conf points at a node and a wallet directory:
network=snowblossom
node_host=localhost # or node_uri=grpc+tls://snow-a.1209k.com (any public node)
wallet_path=wallet # a DIRECTORY; back it up!
./client.sh # creates the wallet on first run, prints balance and a fresh address
./client.sh balance # per-address balances
./client.sh getfresh # an unused receive address
./client.sh show_seed # the 12-word seed of an HD wallet - write it down
./client.sh send 1.5 snow:62xxv0j0wjwuw5satv5nq89pw7eawpmyu6wyalgd
./client.sh help # all commands; 'help send' shows every option
By default the client creates an HD seed wallet (BIP-39 twelve words, BIP-44 path m/44'/2338'/…, secp256k1). Other key modes - including post-quantum ones - are selected with key_mode= before the wallet is first created. Without your own node, leave node_host out entirely and the client races the built-in TLS seed nodes and uses the fastest. More: Wallet & client.
Prefer a GUI? Run java -jar IceLeaf_deploy.jar: it can create wallets of every type, send and receive, and optionally run a full node inside the application.
5. Mine
Mining requires the currently activated snow field (or a larger one) on local storage. Check which field is active on the explorer's mining page - right now it is field 9 (hippo). Download it as a torrent from snowblossom.org/snowfields into snow/snowblossom.N/ (the directory must contain snowblossom.N.snow and the .deck.a/.b/.c files), or let the miner generate it with auto_snow=true (slow: hundreds of millions of random writes).
# configs/pool-miner.conf
network=snowblossom
pool_host=snowblossom.hamster.science # a pool from the list on the Mining page
snow_path=snow
mine_to_address=snow:your-address-here # or mine_to_wallet=wallet
threads=8
#memfield=true # keep the field in RAM (needs RAM > field size)
./pool-miner.sh # java -jar PoolMiner_deploy.jar configs/pool-miner.conf
The miner validates the field with 64 random self-proofs at start, then reports its rate every few seconds. Because each hash attempt is six random reads, the rate is set by your storage's IOPS - an NVMe drive does far better than a hard disk, and a field held in RAM is fastest of all. Solo mining (SnowBlossomMiner against your own node) works the same way but only pays when you find a whole block. Details, pool list and the advanced Arktika/SurfMiner miners: Mining.
6. Explore
The block explorer shows blocks, transactions, addresses, shards, peers and network statistics, and offers a JSON API. A testnet explorer runs at testnet.snowblossom-explorer.org. Testnet coins come from the faucet linked there.
Where next
- Understand the protocol and the proof of work.
- Operating a node in production: Node; exchange or merchant integration: Integration guide.
- Something not working? FAQ & troubleshooting.