Loading
Loading

Neuron registration trends
Applications and agents that hold one asset often need to pay in another. Traditional solutions—centralized exchanges, bridge protocols, and custodians—require accounts, custody arrangements, and third-party intermediaries that break the autonomy of self-custodial systems. This friction is especially acute for autonomous agents: an agent earning TAO may need to pay for inference in USDC, a trading bot holding SOL may need to settle obligations in BTC, and multi-agent systems must route payments across operators who each accept different native assets.
Allways addresses this by creating a peer-to-peer settlement layer where independent network participants quote exchange rates and fulfill swaps directly between users' wallets. Miners post collateralized rate pairs and execute swaps by sending destination assets natively; validators independently verify both transaction legs on-chain and vote on outcomes through a smart contract that enforces settlements via collateral slashing. This model eliminates custody, bridges, and exchange accounts: users send their source asset from their own wallet and receive destination assets into their own wallet, with on-chain verification guaranteeing the outcome.
Allways Subnet 7 implements this settlement layer as two complementary neuron types. Miners poll a Solana smart contract for swap assignments, verify that users have deposited source funds on the originating chain, and fulfill orders by sending destination assets natively. Validators stream contract events, independently verify each transaction leg using chain-specific providers, cast binding votes on-chain, and score miners based on successful settlement history. A Solana program manages swap state, collateral, and consensus voting; miners and validators operate independent forward loops that maintain separate Solana keypairs and per-chain private keys to sign transactions.
Use cases were auto-generated from the GitHub repository and may not reflect the latest changes.
Allways is a collateral-backed cross-chain settlement layer on Bittensor Subnet 7 that enables native peer-to-peer swaps between independent blockchains (SOL, TAO, BTC, ETH, and others) without wrapped tokens or centralized custodians. Miners post quotes and fulfill swap orders by sending destination assets to users' wallets, while validators independently verify both legs of each transaction on-chain and vote on outcomes through a smart contract that enforces settlements via collateral and slashing.
Allways operates as a three-layer system: (1) Smart Contract Layer on Solana manages swap lifecycle state, collateral, and validator voting (on-chain events drive scoring). (2) Miner Layer: neurons poll the contract for assigned swaps, verify user deposits on source chain via chain providers, and fulfill by sending destination assets natively to user wallets. Miners post exchange rate pairs with collateral and manage multi-chain key material (separate Solana keypair for signing swaps, per-chain private keys for transaction signing). (3) Validator Layer: neurons stream contract events and monitor in-flight swaps, independently replay both transaction legs using chain providers to verify correctness, cast on-chain consensus votes, and compute miner scores from event windows stored in local SQLite state. Validators attach Bittensor axon handlers (MinerActivate, SwapReserve, SwapConfirm) to process miner requests.
Miners and validators both run async forward loops: miners poll and process swaps; validators verify and vote. Optional quote optimizer strategy runs on miner's separate thread, managing SOL↔TAO quotes against market data pushed via WebSocket.
universal transaction layer
This information was auto-extracted from the GitHub repository and may be incomplete or out of date. Always refer to the subnet's GitHub repository for the latest instructions.
Miners post quotes (rate + collateral) for chain pairs; validators independently verify both legs of executed swaps on-chain using chain providers and confirm or timeout based on whether the miner delivered the promised destination amount to the user's wallet. Scoring tracks miner outcomes across a sliding window (SCORING_WINDOW_BLOCKS and SCORING_WINDOW_SECS) via on-chain events (SwapInitiated, MinerFulfilled, etc.). Validators earn weight by voting correctly with consensus.
Crown bands enforce price fairness: validators reject quotes more than 0.5% outside the best competing rate, incentivizing tight pricing. Collateral-backed design: user refunds come from miner collateral (instant from SOL reserves, or from TAO bond after timeout verdict reaches vault).
The sections above were auto-generated from the GitHub repository and may not reflect the latest changes. View repository
FAQs were auto-generated from the GitHub repository and may not reflect the latest changes.
Holder & total-staked metrics as of 2h ago (hourly snapshot)
Miners require access to multiple blockchain RPC endpoints (BTC, ETH, SOL, etc.) and Solana keypair management. Quote optimizer runs on separate thread and pulls quotes on shutdown.
Validators stream contract events every block and read miner rate commitments every ~3 minutes. SQLite database with WAL mode stored at ~/.allways/validator/state.db. Optional PostgreSQL connection for dashboard storage (disabled by default).
Clone repository and install uv package manager
git clone <repo> && cd allways && pip install uv
Install locked dependencies and activate virtual environment
uv sync && source .venv/bin/activate
Configure environment variables including blockchain RPC URLs and private keys for all supported chains (BTC_PRIVATE_KEY, ETH_PRIVATE_KEY, etc.)
cp .env.example .env && edit .env
Run interactive wizard to create/select wallet, generate signing keys, and perform preflight checks (-y flag runs unattended)
alw miner init
Deposit initial collateral (0.1 SOL minimum for all miners, additional SOL or TAO based on backing choice)
alw collateral deposit --amount <amount>
Bind Bittensor hotkey to Solana pubkey (one-time operation, required for both SOL-backed and TAO-backed miners)
alw miner bind-hotkey
Activate miner purse; infers backing automatically when only one is funded, otherwise requires --backing flag
alw miner activate [--backing tao]
Post exchange rate quotes for supported chain pairs
alw miner post <from_chain> <from_addr> <to_chain> <to_addr> <rate> [--backing tao]
Start miner neuron to poll for swaps and fulfill orders
python neurons/miner.py --netuid 7 --wallet.name default --wallet.hotkey default
Alternative: run miner in Docker with .env file containing PORT and WALLET_PATH(optional)
docker compose -f docker-compose.miner.yml up -d
Optional: configure quote optimizer by creating optimizer.json with enabled: true, lanes, market tolerances, and wallet parameters(optional)
mkdir -p ~/.allways/miner && cat > ~/.allways/miner/optimizer.json
Clone repository and install uv package manager
git clone <repo> && cd allways && pip install uv
Install locked dependencies and activate virtual environment
uv sync && source .venv/bin/activate
Configure environment variables including Solana RPC URL and optional Subtensor network endpoint
cp .env.example .env && edit .env
Optional but recommended: run local Subtensor lite node to reduce latency and RPC pressure(optional)
subtensor --chain finney --base-path /var/lib/subtensor --rpc-external --ws-external --port 30333 --rpc-port 9933 --ws-port 9944 --pruning 1000
If running local lite node, configure .env to point validator at it(optional)
echo 'SUBTENSOR_NETWORK=ws://127.0.0.1:9944' >> .env
Start validator neuron to monitor swaps, verify transactions, and vote on outcomes
python neurons/validator.py --netuid 7 --wallet.name default --wallet.hotkey default
Alternative: run validator in Docker with .env file containing PORT and WALLET_PATH(optional)
docker compose -f docker-compose.vali.yml up -d
Optional: run in watch mode (observe-only, no votes or weight setting) for testing(optional)
export VALIDATOR_MODE=watch && python neurons/validator.py ...
Optional: configure PostgreSQL connection to mirror validator state to dashboard database(optional)
export STORE_DB_RESULTS=true && export DB_HOST=... DB_PORT=... DB_NAME=... DB_USER=... DB_PASSWORD=...