Run a Shear node

The node is the book. It syncs height 1, 2, 3, … to the tip and answers Continuum with the notes sealed to one dest. Clone shear-testnet, build RandomX + crypto/native, or unzip Shear Sentinel v17. No automatic bootstrap. Optional --solo stratum after ibd=false. Continuum downloads are on WALLET. Published node pin is 17.0.

Prebuilt node (unzip and run)

Node release v17. Shear Sentinel v17 (product 17.0) is the portable node cut. Windows, Linux, Arch, Fedora, openSUSE, and macOS zips are on the Shear Sentinel v17 release. Git tag v16 stays on the same commit as tag 0.66. Follow-only nodes may lag. Mining, --solo, and a self-pool need this v17 pack. Unzip, run shear-node.cmd or shear-node.bat (Windows — the window stays open) or ./shear-node.sh (Linux family and macOS). It syncs height 1, 2, 3, … to the tip and keeps serving. Loopback RPC is 127.0.0.1:18332. Continuum on this machine uses that port. Connect Bare uses it when it answers, which is how Android receives without a phone node. A new tip is advised on /events. The wallet then reads every note for its dest. No automatic bootstrap. Pass --solo only after ibd=false if you want local stratum at 127.0.0.1:1111, then point ShearK 2.8 at that port with Copy dest. The node verifies every transaction (ADMITv2) and the mining mint (DINS-DAG pot plus hash bonus). Continuum wallet is 0.70.

shear-node-v17-windows.zip shear-node-v17-linux.zip shear-node-v17-archlinux.zip shear-node-v17-fedora.zip shear-node-v17-opensuse.zip shear-node-v17-macos.zip

Optional snapshot: boot.shear.digital (latest.json + latest.bin), empty datadir only, --bootstrap.

Build from source

Full validating node for shear-testnet-v10. Prefer the prebuilt zip above. To build it yourself, clone rgsneddon/shear-testnet main (node pin 17.0; node lives at node/ in that tree).

Beginner path (from tip site): OS deps → clone → RandomX + crypto/native → validating node → optional npm run solo (thin stratum on 127.0.0.1:1111). Continuum GUI is optional for RPC. Never npm run pool unless you are operating the public pool.

Commands below are lifted from tip site/index.html #solo-mine — do not invent alternate package lines.

Debian / Ubuntu x86_64. Node 20 from NodeSource; rustup for native ADMITv2.

sudo apt-get update
sudo apt-get install -y git curl build-essential cmake python3 pkg-config libssl-dev
# Node 20+
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
# Rust (native ADMITv2 / BP+)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
. "$HOME/.cargo/env"

Headers check — runtime Node is not enough; ls must show node_api.h. If it fails, install Node with headers (NodeSource / nodejs-devel), not a headerless binary.

node -v   # need 20+
node -e "console.log(require('path').join(process.config.variables.node_prefix||'/usr','include/node'))"
ls "$(node -e "process.stdout.write(require('path').join(process.config.variables.node_prefix||'/usr','include/node'))")/node_api.h"

NODE_INC recovery — do not find /usr only if empty (that sets NODE_INC=. and fails again with bare -I.):

# Prefer Node's own prefix; fall back to find near the node binary
export NODE_INC="$(node -e "const fs=require('fs');const p=require('path');const base=process.config.variables.node_prefix||'/usr';const d=p.join(base,'include/node');if(fs.existsSync(p.join(d,'node_api.h'))){process.stdout.write(d);process.exit(0)}process.exit(1)" 2>/dev/null || dirname "$(find "$(dirname "$(dirname "$(readlink -f "$(which node)")")")" /usr/local /usr -name node_api.h 2>/dev/null | head -1)")"
echo "NODE_INC=$NODE_INC"   # must be a real directory, NOT . or empty
test -f "$NODE_INC/node_api.h" || { echo "Still missing headers — reinstall Node with devel/include"; exit 1; }
make -C crypto/native

Then continue with clone / RandomX / crypto/native below.

1. Clone, RandomX, crypto/native

Same as README “Build your own node”. Run the Headers check in your OS tab first. If make still fails on node_api.h, use that tab’s NODE_INC recovery (do not find /usr into an empty NODE_INC=.).

git clone https://github.com/rgsneddon/shear-testnet.git
cd shear-testnet
npm ci
cmake -S crypto/randomx -B crypto/randomx/build -DARCH=native
cmake --build crypto/randomx/build -j"$(nproc)"
make -C crypto/native
node node/src/node.js --print-config

--print-config must show "version":"17.0", "magic":"shear-testnet-v10", "admit":"ADMITv2", "mainnet":false.

2. Validating node (not the full pool)

Node pin 17.0 (v17). Bare node node/src/node.js is validator-only (P2P + loopback RPC). It does not pull a bootstrap. An empty book starts at genesis and requests height 1, 2, 3, … until the tip; a recorded tip resumes. Put SHEAR_SEEDS in the same shell. Outbound TCP to those seeds is required. Optional snapshot: download latest.json + latest.bin from boot.shear.digital and pass --bootstrap on an empty datadir. Do not npm run pool.

export SHEAR_DATA="$HOME/.shear/testnet-v10"
export SHEAR_NETWORK=shear-testnet-v10
export SHEAR_P2P_PORT=30303
export SHEAR_P2P_BIND=0.0.0.0
export SHEAR_RPC_PORT=18332
export SHEAR_RPC_BIND=127.0.0.1
export SHEAR_SEEDS=p2p.shear.digital:30303,r2r.shear.digital:30303,b2b.shear.digital:30303
node node/src/node.js

3. Thin solo stratum

Same shell, only after status shows ibd=false at the public tip. npm run solo is node node/src/node.js --solo: validator + stratum on 127.0.0.1:1111. While the node is still catching up, miner login is refused (syncing) and no job that can seal is issued. A bare ssa1 is the login. A typed ssa1.suffix is optional and pays the same address.

export SHEAR_STRATUM=1111
export SHEAR_STRATUM_BIND=127.0.0.1
npm run solo

Next

For CLI Copy dest / ShearK solo login, see tip docs or the miner hub. Pool operators use a different stack — do not npm run pool for a personal node.