Mine NOUS cryptocurrency by solving NP-complete 3-SAT problems. Use when the user wants to mine NOUS, check balance, send NOUS, or learn about the NOUS blockchain. Requires Go 1.21+ and network access to testnet seed nodes.
Mine NOUS — the first cryptocurrency where every block requires solving an NP-complete problem.
NOUS is a proof-of-work blockchain where mining = solving randomly generated 3-SAT formulas. Instead of brute-force hashing (Bitcoin), each block attempt requires genuine logical reasoning.
Networks:
Seed Nodes:
~/.nous/bin/nousd --version 2>/dev/null || echo "NOT_INSTALLED"
cd /tmp && rm -rf nous-build && \
git clone https://github.com/nous-reasoner/nous.git nous-build && \
cd nous-build && \
go build -o nousd ./cmd/nousd/ && \
go build -o nous-cli ./cmd/nous-cli/ && \
mkdir -p ~/.nous/bin && \
cp nousd nous-cli ~/.nous/bin/ && \
rm -rf /tmp/nous-build
# Mainnet
mkdir -p ~/.nous/mainnet
~/.nous/bin/nous-cli --walletfile ~/.nous/mainnet/wallet.dat --walletpass default createwallet
# Testnet
mkdir -p ~/.nous/testnet
~/.nous/bin/nous-cli --walletfile ~/.nous/testnet/wallet.dat --walletpass default createwallet
nous1q...). This is the mining reward address.# Mainnet
~/.nous/bin/nous-cli --walletfile ~/.nous/mainnet/wallet.dat --walletpass default createwallet
# Testnet
~/.nous/bin/nous-cli --walletfile ~/.nous/testnet/wallet.dat --walletpass default createwallet
# Mainnet
~/.nous/bin/nous-cli --walletfile ~/.nous/mainnet/wallet.dat --walletpass default getaddress
# Testnet
~/.nous/bin/nous-cli --walletfile ~/.nous/testnet/wallet.dat --walletpass default getaddress
# Mainnet (default)
~/.nous/bin/nousd \
--reason \
--datadir ~/.nous/mainnet \
--key ~/.nous/mainnet/wallet.dat \
--password default \
--seeds seed1.nouschain.org:8333,seed2.nouschain.org:8333,seed3.nouschain.org:8333 \
> ~/.nous/mainnet/nousd.log 2>&1 &
echo $! > ~/.nous/mainnet/nousd.pid
# Testnet
~/.nous/bin/nousd \
--testnet \
--reason \
--datadir ~/.nous/testnet \
--key ~/.nous/testnet/wallet.dat \
--password default \
--seeds seed1.nouschain.org:9333,seed2.nouschain.org:9333,seed3.nouschain.org:9333 \
> ~/.nous/testnet/nousd.log 2>&1 &
echo $! > ~/.nous/testnet/nousd.pid
After starting, wait 10 seconds then verify:
# Mainnet
sleep 10 && ~/.nous/bin/nous-cli --rpcport 8332 getmininginfo
# Testnet
sleep 10 && ~/.nous/bin/nous-cli --rpcport 9332 getmininginfo
# Mainnet
kill $(cat ~/.nous/mainnet/nousd.pid 2>/dev/null) 2>/dev/null && echo "Stopped" || echo "Not running"
# Testnet
kill $(cat ~/.nous/testnet/nousd.pid 2>/dev/null) 2>/dev/null && echo "Stopped" || echo "Not running"
# Mainnet
~/.nous/bin/nous-cli --rpcport 8332 getbalance
# Testnet
~/.nous/bin/nous-cli --rpcport 9332 getbalance
Or check a specific address:
# Mainnet
~/.nous/bin/nous-cli --rpcport 8332 getbalance nous1q...
# Testnet
~/.nous/bin/nous-cli --rpcport 9332 getbalance nous1q...
# Mainnet
~/.nous/bin/nous-cli --rpcport 8332 getmininginfo
# Testnet
~/.nous/bin/nous-cli --rpcport 9332 getmininginfo
# Mainnet
~/.nous/bin/nous-cli --rpcport 8332 getblockcount
# Testnet
~/.nous/bin/nous-cli --rpcport 9332 getblockcount
# Mainnet
~/.nous/bin/nous-cli --rpcport 8332 getblock <height>
# Testnet
~/.nous/bin/nous-cli --rpcport 9332 getblock <height>
# Mainnet
~/.nous/bin/nous-cli --rpcport 8332 getpeerinfo
# Testnet
~/.nous/bin/nous-cli --rpcport 9332 getpeerinfo
# Mainnet
~/.nous/bin/nous-cli \
--rpcport 8332 \
--walletfile ~/.nous/mainnet/wallet.dat \
--walletpass default \
send <to_address> <amount>
# Testnet
~/.nous/bin/nous-cli \
--rpcport 9332 \
--walletfile ~/.nous/testnet/wallet.dat \
--walletpass default \
send <to_address> <amount>
When mining starts, tell the user:
NOUS Reasoner started!
Network: mainnet (or testnet)
Each block attempt solves a 256-variable, 986-clause 3-SAT formula.
Reward: 1 NOUS per block (150 second target).
Seeds: seed1.nouschain.org, seed2.nouschain.org, seed3.nouschain.org
Say "check mining status" or "stop mining".
When showing balance:
nous1q...: X.XXXXXXXX NOUS
When showing mining status:
Mining Status:
Height: 1234
Difficulty: 0x1f2288e4
Mempool: 0 txs
Reasoning: active
lsof -i :8333 or lsof -i :8332 (mainnet), lsof -i :9333 or lsof -i :9332 (testnet)ps aux | grep nousdtail -20 ~/.nous/testnet/nousd.lognc -zv seed1.nouschain.org 8333 (mainnet) or nc -zv seed1.nouschain.org 9333 (testnet)rm -rf ~/.nous/testnet/blocks ~/.nous/testnet/chaintip.datnous-cli [flags] <command> [args]
Flags:
--testnet Use testnet instead of mainnet (ports 9333/9332)
--rpchost <host> RPC server host (default: localhost)
--rpcport <port> RPC server port (default: 8332, testnet: 9332)
--walletfile <path> wallet file path (default: ~/.nous/wallet.dat)
--walletpass <pass> wallet password
--json output in JSON format
Commands:
createwallet create a new wallet
getaddress show primary address
newaddress generate a new address
getbalance [address] get balance (wallet or address)
send <address> <amount> send NOUS to address
getblockcount get current block height
getblock <height> get block by height
getmininginfo get mining information
getpeerinfo get connected peers
version show version