How to Mine Tensorium (TXM)
Step-by-step guide to setting up a node, creating a wallet, and mining TXM on the live mainnet. GPU required — mainnet initial difficulty is 42 bits.
tensorium-miner). Solo: point at your own node RPC (port 33332, 0% fee). Pool: connect to pooltxm.tensoriumlabs.com:3333 (5% fee).tensorium-miner and start earning block rewards.1 Requirements
| Component | Minimum | Recommended |
|---|---|---|
| OS | Linux x86_64 | Ubuntu 22.04 / 24.04 LTS |
| CPU | 2 cores | 4+ cores (more = faster mining) |
| RAM | 512 MB | 2 GB+ |
| Disk | 1 GB free | 10 GB+ (for chain growth) |
| Network | Stable internet, port 33333 open | Low-latency connection |
| Privileges | root or sudo | — |
tensorium-miner.2 Installation
2.1 One-line Installer (Recommended)
The installer downloads pre-compiled binaries, creates a wallet, syncs the chain, and optionally sets up systemd services:
curl -fsSL https://raw.githubusercontent.com/tensorium-labs/tensorium-core/main/install.sh | bash
The installer will:
- Download
tensorium-node,tensorium-miner,txmwalletto/usr/local/bin/ - Prompt you for a wallet passphrase and create a wallet at
~/tensorium-node/wallet.json - Initialize the chain (genesis block) and sync from the seed node
- Optionally install systemd services for auto-start on reboot
2.2 Manual Installation
Download the latest mainnet binaries from GitHub Releases:
# Download # Node + wallet CLI curl -fsSL -o tensorium-node \ https://github.com/tensorium-labs/tensorium-core/releases/latest/download/tensorium-node-linux-x86_64 curl -fsSL -o txmwallet \ https://github.com/tensorium-labs/tensorium-core/releases/latest/download/txmwallet-linux-x86_64 # GPU miner example for RTX 5090 / Blackwell (sm_120) curl -fsSL -o tensorium-miner \ https://github.com/tensorium-labs/tensorium-core/releases/latest/download/tensorium-miner-linux-x86_64-sm120 # Make executable and install chmod +x tensorium-node txmwallet tensorium-miner sudo mv tensorium-node txmwallet tensorium-miner /usr/local/bin/ # Verify tensorium-node --help
2.3 Build from Source
If you prefer to build from source (requires Rust ≥ 1.76):
git clone https://github.com/tensorium-labs/tensorium-core.git cd tensorium-core cargo build --release # Binaries will be in target/release/ sudo cp target/release/tensorium-node target/release/tensorium-miner target/release/txmwallet /usr/local/bin/
3 Create a Wallet
3.1 Create New Wallet
# Set where to store the wallet export TENSORIUM_WALLET=~/tensorium-node/wallet.json # Set your passphrase (use a strong passphrase — this encrypts your private key) export TENSORIUM_WALLET_PASSPHRASE="your-strong-passphrase-here" # Create the wallet txmwallet create
This generates a secp256k1 keypair and saves it encrypted with Argon2id + ChaCha20-Poly1305. Output example:
address=txm1abc123... public_key=02ab34... wallet_version=2 encrypted=true
3.2 Get Your Mining Address
export TENSORIUM_WALLET=~/tensorium-node/wallet.json export TENSORIUM_WALLET_PASSPHRASE="your-passphrase" txmwallet getnewaddress # → txm1abc123xyz... (your TXM address)
Save this address — you will provide it to tensorium-miner so block rewards go to your wallet.
3.3 Backup Your Wallet
wallet.json or forget your passphrase, your funds are permanently unrecoverable. Copy the wallet file to at least two separate locations (external drive, cloud storage, etc.).
# Backup cp ~/tensorium-node/wallet.json ~/wallet-backup-$(date +%Y%m%d).json # Verify backup can be decrypted TENSORIUM_WALLET=~/wallet-backup-*.json \ TENSORIUM_WALLET_PASSPHRASE="your-passphrase" \ txmwallet unlock-check
3.4 Check Balance
export TENSORIUM_WALLET=~/tensorium-node/wallet.json export TENSORIUM_WALLET_PASSPHRASE="your-passphrase" export TENSORIUM_STATE=~/tensorium-node/state.json txmwallet balance
Coinbase rewards require 10 confirmations before they appear as spendable.
4 Run a Node
4.1 Initialize the Chain
mkdir -p ~/tensorium-node cd ~/tensorium-node # Initialize mainnet — genesis is hardcoded, near-instant TENSORIUM_MC_STATE=~/tensorium-node/state.json \ TENSORIUM_MC_MEMPOOL=~/tensorium-node/mempool.json \ TENSORIUM_MC_BANS=~/tensorium-node/banlist.json \ tensorium-node init
4.2 Sync from Seed Node
TENSORIUM_MC_STATE=~/tensorium-node/state.json \ TENSORIUM_MC_MEMPOOL=~/tensorium-node/mempool.json \ TENSORIUM_MC_BANS=~/tensorium-node/banlist.json \ tensorium-node sync seed.tensoriumlabs.com:33333
Output shows sync progress:
sync start: peer=seed.tensoriumlabs.com:33333 peer_height=150 our_height=0 synced +50 blocks height=50 total_synced=50 synced +50 blocks height=100 total_synced=100 synced +50 blocks height=150 total_synced=150 sync complete: tip=150 synced=150 blocks from seed.tensoriumlabs.com:33333
4.3 Start RPC and P2P
Open two terminal windows (or use nohup / tmux):
# Terminal 1 — RPC server (do NOT expose port 33332 publicly) TENSORIUM_MC_STATE=~/tensorium-node/state.json \ TENSORIUM_MC_MEMPOOL=~/tensorium-node/mempool.json \ TENSORIUM_MC_BANS=~/tensorium-node/banlist.json \ TENSORIUM_MC_PEERS=seed.tensoriumlabs.com:33333 \ tensorium-node rpc 127.0.0.1:33332 # Terminal 2 — P2P listener (port 33333 must be open in firewall) TENSORIUM_MC_STATE=~/tensorium-node/state.json \ TENSORIUM_MC_MEMPOOL=~/tensorium-node/mempool.json \ TENSORIUM_MC_BANS=~/tensorium-node/banlist.json \ tensorium-node p2p-listen 0.0.0.0:33333
Check your node is working:
curl -s http://localhost:33332/getblockcount
# → {"blocks":151,"chain_id":"tensorium-mainnet","height":150}
4.4 Systemd Service (Auto-start on Reboot)
sudo tee /etc/systemd/system/tensorium-rpc.service <<EOF [Unit] Description=Tensorium Mainnet RPC After=network.target [Service] Type=simple User=$(whoami) Environment=TENSORIUM_MC_STATE=$HOME/tensorium-node/state.json Environment=TENSORIUM_MC_MEMPOOL=$HOME/tensorium-node/mempool.json Environment=TENSORIUM_MC_BANS=$HOME/tensorium-node/banlist.json Environment=TENSORIUM_MC_PEERS=seed.tensoriumlabs.com:33333 ExecStart=/usr/local/bin/tensorium-node rpc 127.0.0.1:33332 Restart=always RestartSec=10 [Install] WantedBy=multi-user.target EOF sudo tee /etc/systemd/system/tensorium-p2p.service <<EOF [Unit] Description=Tensorium Mainnet P2P After=network.target [Service] Type=simple User=$(whoami) Environment=TENSORIUM_MC_STATE=$HOME/tensorium-node/state.json Environment=TENSORIUM_MC_MEMPOOL=$HOME/tensorium-node/mempool.json Environment=TENSORIUM_MC_BANS=$HOME/tensorium-node/banlist.json ExecStart=/usr/local/bin/tensorium-node p2p-listen 0.0.0.0:33333 Restart=always RestartSec=10 [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload sudo systemctl enable --now tensorium-rpc tensorium-p2p
5 Start Mining
5.1 Solo Mining (GPU, recommended for mainnet)
YOUR_ADDRESS="txm1your_address_here" # GPU solo mining — connects to your own node RPC (port 33332), 0% pool fee tensorium-miner --mode solo --rpc http://127.0.0.1:33332 --wallet "$YOUR_ADDRESS" --gpu all --intensity auto
5.2 Pool Mining (5% fee)
YOUR_ADDRESS="txm1your_address_here" # GPU pool mining — connects to official pool, 5% fee tensorium-miner --mode pool --pool stratum+tcp://pooltxm.tensoriumlabs.com:3333 --wallet "$YOUR_ADDRESS" --worker "$(hostname)" --gpu all --intensity auto
5.3 Expected Hashrate by GPU
| GPU | Est. Hashrate | ~Block Time (diff 40, solo) |
|---|---|---|
| RTX 3060 | ~380 MH/s | varies with live difficulty |
| RTX 3080 | ~1.2 GH/s | varies with live difficulty |
| RTX 4090 | ~2.5 GH/s | ~27 seconds (diff 40) |
| RTX 5090 | ~4.6 GH/s | ~15 seconds (diff 40) |
| H100 SXM | ~2 GH/s | ~34 seconds (diff 40) |
5.4 Keep Miner Running
# Using nohup nohup tensorium-miner --mode solo --rpc http://127.0.0.1:33332 --wallet "$YOUR_ADDRESS" --gpu all --intensity auto > ~/tensorium-node/miner.log 2>&1 & echo "Miner PID: $!" # Using tmux tmux new -s miner "tensorium-miner --mode solo --rpc http://127.0.0.1:33332 --wallet $YOUR_ADDRESS --gpu all --intensity auto" # Systemd service sudo tee /etc/systemd/system/tensorium-miner.service <<EOF [Unit] Description=Tensorium CUDA GPU Miner After=tensorium-rpc.service [Service] Type=simple User=$(whoami) ExecStart=/usr/local/bin/tensorium-miner --mode solo --rpc http://127.0.0.1:33332 --wallet YOUR_TXM_ADDRESS --gpu all --intensity auto Restart=always RestartSec=5 [Install] WantedBy=multi-user.target EOF sudo systemctl daemon-reload sudo systemctl enable --now tensorium-miner
6 Mining Rewards
6.1 Block Reward
Every block you mine earns you 7.8558 TXM (Era 1, mainnet). This reward is a coinbase transaction with your address as the output.
6.2 Coinbase Maturity
On mainnet, block rewards cannot be spent until 10 blocks have been built on top of the block you mined (~10 minutes at target block time).
6.3 Check Your Earnings
export TENSORIUM_WALLET=~/tensorium-node/wallet.json export TENSORIUM_WALLET_PASSPHRASE="your-passphrase" export TENSORIUM_STATE=~/tensorium-node/state.json # Show balance (mature spendable + immature pending) txmwallet balance # Check address on explorer # https://explorer.tensoriumlabs.com/address/YOUR_TXM_ADDRESS
7 Advanced Configuration
7.1 Environment Variables
| Variable | Default | Description |
|---|---|---|
TENSORIUM_MC_STATE | tensorium-mc-state.json | Mainnet chain state file path |
TENSORIUM_MC_MEMPOOL | tensorium-mc-mempool.json | Mainnet mempool file path |
TENSORIUM_MC_BANS | tensorium-mc-banlist.json | Peer ban list file path |
TENSORIUM_MC_PEERS | empty | Comma-separated peers for block/tx broadcast |
TENSORIUM_NODE_ID | node-<timestamp> | Your node identity in P2P handshake |
TENSORIUM_WALLET | tensorium-wallet.json | Wallet file path |
TENSORIUM_WALLET_PASSPHRASE | required | Passphrase to decrypt wallet |
7.2 RPC API Reference
# Health check curl http://localhost:33332/health # Block count curl http://localhost:33332/getblockcount # Current difficulty curl http://localhost:33332/getdifficulty # Get block by height curl http://localhost:33332/getblock/0 # genesis curl http://localhost:33332/getblock/100 # Mempool info curl http://localhost:33332/getmempoolinfo # Block template (for custom miner integration) curl http://localhost:33332/getblocktemplate/txm1youraddress # Peer ban list curl http://localhost:33332/getbanlist # Unban an IP curl http://localhost:33332/unban/1.2.3.4
7.3 Sending Transactions
export TENSORIUM_WALLET=~/tensorium-node/wallet.json export TENSORIUM_WALLET_PASSPHRASE="your-passphrase" export TENSORIUM_STATE=~/tensorium-node/state.json # Build and sign a transaction (100000000 atoms = 1.0 TXM) txmwallet send txm1recipient_address 100000000 /tmp/my-tx.json # Broadcast to your node txmwallet broadcast /tmp/my-tx.json 127.0.0.1:33332
7.4 Node Commands Reference
tensorium-node init # Initialize mainnet genesis block (near-instant) tensorium-node status # Show chain tip and height tensorium-node rpc [bind] # Start HTTP RPC (default 127.0.0.1:33332) tensorium-node p2p-listen [bind] # Start P2P server (default 0.0.0.0:33333) tensorium-node sync [host:port] # Download missing blocks from a peer tensorium-node p2p-connect <host:port> # Diagnostic handshake to a peer tensorium-node peers # Print configured peers tensorium-node banlist # Show peer ban list tensorium-node unban <ip> # Remove a ban # Mainnet mining (GPU) tensorium-miner --mode solo --rpc http://127.0.0.1:33332 --wallet YOUR_ADDRESS --gpu all --intensity auto # solo — 0% fee tensorium-miner --mode pool --pool stratum+tcp://pooltxm.tensoriumlabs.com:3333 --wallet YOUR_ADDRESS --worker WORKER --gpu all --intensity auto # pool — 5% fee
— FAQ
tensorium-miner from the latest release.
tensorium-node init should be near-instant. If it hangs, update to the latest mainnet v1 release.
seed.tensoriumlabs.com:33333. Use it in TENSORIUM_MC_PEERS for initial sync.
TENSORIUM_RPC_ALLOW_PUBLIC=1 and bind to 0.0.0.0:33332, but restrict access via firewall to trusted IPs only. Never expose the RPC port publicly without a reverse proxy.