PacketCrypt Mining Documentation
A complete guide to announce‑mining PacketCrypt, running a pool and managing resources.
Mining
PacketCrypt is a bandwidth‑hard proof‑of‑work – mining requires a large amount of network bandwidth. Miners collaborate by sending small messages called Announcements. These messages must be broadcast over the Internet, so the more bandwidth you have, the more announcements you can produce.
All mining is performed in pools. PacketCrypt mining is split into two distinct stages:
- Announcement Mining – CPU mining of announcements.
- Block Mining – Collect announcements from Announcement miners and mine blocks. This is normally done in a pool’s data‑center.
How to Announce‑Mine
Choose the method that best matches your technical comfort.
1. Install a Pre‑built Binary
Download the appropriate binary from the PacketCrypt releases page:
- Windows –
-windows.zip, unzip. - macOS –
.pkg, double‑click to install. - Linux –
-linux_amd64, rename topacketcrypt. - Arch/Manjaro – AUR package.
2. Build From Source
Requires Rust. The following commands build the miner:
git clone https://github.com/PacketCrypt/packetcrypt_rs
cd packetcrypt_rs
cargo build --release
Begin Announcement Mining
⚠️ Important: You can only mine into the Command Line Wallet, Pkt.World Wallet or the Mac GUI Wallet – not the electrum wallet.
Using the CLI
packetcrypt ann -p <your_wallet_address> pool_1 [pool_2 pool_3 pool_4]
Using a Configuration File
Configuration is JSON. Example config.json:
{
"payment_addr": "<your_wallet_address>",
"pools": [
"pool_1",
"pool_2",
"pool_3",
"pool_4"
]
}
Run with:
packetcrypt ann -c "./config.json"
Setup Guides
How to install a PKT miner on Mac
- Install Zulu or CLI wallet.
- Download PacketCrypt.pkg.
- Open Terminal.
- Install Rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh(press1to confirm). - Run
sudo install make. - Clone repo & build:
git clone https://github.com/cjdelisle/packetcrypt_rs && cd packetcrypt_rs && ~/.cargo/bin/cargo build --release. - Start mining:
./target/release/packetcrypt ann -p <PKT Wallet Address> <pool_1> <pool_2> <pool_3> <pool_4>.
Choosing Pools to Mine In
List as many pools as your bandwidth allows. Typical high‑difficulty pools:
- PktWorld:
http://pool.pkt.world
Place the highest‑difficulty pool first for maximum acceptance.
Limiting System Resource Usage
Limit CPU Usage
By default PacketCrypt uses all available threads. Limit them with the -t flag or threads key:
packetcrypt ann -p <addr> pool_1 [pool_2] -t 4
{ "threads": 4 }
Limit Bandwidth Usage
Bandwidth is proportional to difficulty of the first pool and number of pools mined. Use a high‑difficulty primary pool or reduce the number of pools to cut bandwidth.
Block Mining & Running a Pool
Block mining requires the full upload bandwidth of all announcement miners combined. Pool operators usually host the block node in the same location as the announcement handlers.
Running your own pool needs the following components (one instance each, more for scaling):
- pktd node – required for the Master.
- Master – coordinates the pool.
- Ann Handler(s) – receive announcements and feed block miners.
- Block Miner(s) – mine blocks.
- Block Handler(s) – receive shares and submit blocks.
- Paymaker – tracks work and distributes payouts.
More Information & Pool Code
The Rust version only contains announcement miners and handlers. The C / Node.js project (with full pool support) is on GitHub.
Announcement Difficulty
Pool operators set the announcement difficulty to control bandwidth and block‑mining power. Raising the difficulty halves the bandwidth per announcement and halves the pool’s effective power.
Optimal Difficulty Curve
For a constant announcement supply the best power multiplier is achieved using the last three block periods. The curve peaks at difficulty 2 and halves with each doubling thereafter.
FAQ for Announcement Miners
What does overflow mean?
+When an announcement handler’s queue fills up it returns an “overflow” error. The miner may still be paid – you’ll see “operation timed out” if the handler is unresponsive.