Getting Started

Build. Mine.
Transact.

Everything you need to compile the source, run a full node, mine blocks with ConvergenceX, and send transactions on the SOST network. Ubuntu 24.04 recommended.

REQUIREMENTS | C++17 · 4GB+ RAM · Linux
STEP 01

Build from Source

Dependencies
UBUNTU 24.04
# Install build dependencies sudo apt install build-essential cmake libssl-dev libsecp256k1-dev
Clone & Compile
CMAKE
# Clone the repository git clone https://github.com/Neob1844/sost-core.git cd sost-core # Build mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release make -j$(nproc) # Run tests ctest --output-on-failure
Binaries
BUILD OUTPUT
BinaryVersionDescription
sost-nodev0.4.0Full node — P2P networking, JSON-RPC, chain validation, mempool
sost-minerv0.6ConvergenceX PoW miner with mempool integration
sost-cliv1.3Wallet CLI — create keys, send transactions, auto fees
sost-rpcv0.1Standalone RPC client for node queries
STEP 02

Create a Wallet

Wallet Commands
SOST-CLI
# Create new wallet ./sost-cli newwallet # Generate a receiving address ./sost-cli getnewaddress "mining" # Import genesis block UTXOs (if applicable) ./sost-cli importgenesis genesis_block.json # Check balance ./sost-cli getbalance # List all addresses ./sost-cli listaddresses
Wallet CLI Reference
v1.3
CommandDescription
newwalletCreate new wallet file
getnewaddress [label]Generate new receiving address
listaddressesList all wallet addresses with balances
importprivkey <hex>Import a 32-byte private key (hex)
getbalance [address]Show balance in SOST
listunspent [address]List unspent transaction outputs
createtx <to> <amount>Create and sign a transaction (outputs hex)
send <to> <amount>Create, sign and broadcast via RPC
dumpprivkey <address>Reveal private key (DANGER)
infoWallet summary
RECOMMENDED

CLI Wallet

Full-featured command-line wallet via sost-cli. Create keys, sign transactions, broadcast via RPC. Requires a running node for balance queries and broadcasting.

BROWSER

Web Wallet

Client-side wallet at sost-wallet.html. Generate keys, create and sign transactions in your browser. Private keys never leave your device.

Wallet encryption: AES-256-GCM with scrypt key derivation (N=32768, r=8, p=1). Address format: sost1 + 40 hex characters (20-byte pubkey hash, ECDSA secp256k1).
STEP 03

Run a Full Node

Node must be running first. The miner (STEP 04) and wallet CLI (STEP 05) both connect to the node via RPC. Start the node in a separate terminal before proceeding.
Start Node
TERMINAL 1
# Start full node — connects to seed.sostcore.com automatically # genesis_block.json must be in the current directory (from the repo root) ./sost-node --genesis genesis_block.json --chain chain.json \ --rpc-user myuser --rpc-pass mypass --profile mainnet # Verify node is running (in another terminal) curl -s -u myuser:mypass -X POST -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"getinfo","params":[]}' \ http://localhost:18232 | python3 -m json.tool
Node Options
v0.4.0
FlagDefaultDescription
--genesis <path>requiredGenesis block JSON
--chain <path>Chain state file (load/save)
--wallet <path>wallet.jsonWallet file
--port <n>19333P2P port
--rpc-port <n>18232RPC port
--rpc-user <user>requiredRPC authentication username
--rpc-pass <pass>requiredRPC authentication password
--connect <host:port>seed.sostcore.comConnect to specific peer
--profile <p>mainnetNetwork profile
RPC credentials: The --rpc-user and --rpc-pass values must match between the node, miner, and CLI. Use strong, unique credentials — these are not transmitted over the network but protect local RPC access.
Node Features
FULL VALIDATION
FeatureDetail
Consensus validationRules R1-R14, S1-S12, CB1-CB10
UTXO set & mempoolMaintained and persisted
Wallet rescanAutomatic on startup
Chain persistenceAuto-save after every accepted block
P2P relayBlock and transaction relay with DoS protection
Ban scoringThreshold 100, 24h ban, 64 inbound peer limit
Reorg protectionMax reorg depth: 100 blocks
STEP 04

Start Mining

Launch Miner
TERMINAL 2
# Start mining with RPC mode (recommended) # --address is REQUIRED: your wallet address to receive mining rewards # --blocks 10 mines 10 blocks then stops; omit for continuous mining ./sost-miner --address sost1YOUR_ADDRESS_HERE \ --genesis genesis_block.json --chain chain.json \ --rpc 127.0.0.1:18232 \ --rpc-user myuser --rpc-pass mypass \ --threads 4 --blocks 10 # Verify blocks are being accepted curl -s -u myuser:mypass -X POST -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"getblockcount","params":[]}' \ http://localhost:18232
Miner Options
v0.6
FlagDefaultDescription
--address <sost1..>requiredYour wallet address to receive mining rewards
--genesis <path>requiredGenesis block JSON
--chain <path>requiredChain state file
--rpc <host:port>Submit blocks to node via RPC
--blocks <n>5Number of blocks to mine
--threads <n>1Mining threads
--max-nonce <n>500000Max nonce per round
RECOMMENDED

RPC Mode

Connect to node via --rpc 127.0.0.1:18232. Fetches mempool transactions via getblocktemplate, includes them in blocks, distributes fees across coinbase outputs, submits via submitblock.

STANDALONE

No RPC

Writes directly to chain.json. Coinbase-only blocks, no transaction support. Not recommended for production use.

ConvergenceX requirements: Each mining attempt requires 4 GB RAM, 100,000 sequential rounds. CPU-only — no GPU or ASIC advantage. Multi-threading runs independent attempts on separate cores.
STEP 05

Send Transactions

Send SOST
VIA RPC
# Send SOST to an address (requires 1000+ confirmations on coinbase UTXOs) ./sost-cli --wallet wallet.json --rpc-user myuser --rpc-pass mypass \ send sost1abc123...def456 10.0
Transaction Flow
6 STEPS
StepAction
1sost-cli queries node for current chain height (maturity filtering)
2CLI selects mature UTXOs, calculates fee, builds and signs TX
3CLI broadcasts signed TX to node via sendrawtransaction RPC
4Node validates transaction and accepts it to mempool
5Miner fetches mempool via getblocktemplate and includes TX in next block
6Node confirms transaction when block is accepted
Fee Parameters
AUTO-CALCULATED
ParameterValue
Default fee rate1 stock/byte
Minimum relay fee1,000 stocks (0.00001 SOST)
Override--fee-rate <n>
Coinbase maturity1000 confirmations required (~7 days)
Regular TX outputsSpendable immediately
STEP 06

Query via RPC

RPC Example
PORT 18232
# Query node status curl -s -u myuser:mypass -X POST -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"getinfo","params":[]}' \ http://localhost:18232
RPC Methods
17 METHODS
MethodParamsDescription
getinfoNode status, height, difficulty, mempool
getblockcountCurrent chain height
getblockhashheightBlock hash at given height
getblockhashBlock details including cASERT mode
getaddressinfoaddressAddress balance, UTXO count
getbalanceWallet balance
listunspentWallet UTXOs
gettxouttxid, voutQuery specific UTXO
validateaddressaddressCheck address validity
getnewaddress[label]Generate new wallet address
sendrawtransactionhexSubmit signed transaction
getmempoolinfoMempool size, bytes, fees
getrawmempoolPending transaction IDs
getrawtransactiontxid [verbose]Get raw tx from mempool
getpeerinfoConnected P2P peers
submitblockblock_jsonSubmit mined block
getblocktemplateGet mempool txs for mining
STEP 07

Verify & Troubleshoot

Health Check
QUICK VERIFY
# 1. Check node is running and synced curl -s -u myuser:mypass -X POST -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"getinfo","params":[]}' \ http://localhost:18232 # 2. Check connected peers curl -s -u myuser:mypass -X POST -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"getpeerinfo","params":[]}' \ http://localhost:18232 # 3. Check wallet balance ./sost-cli --wallet wallet.json --rpc-user myuser --rpc-pass mypass getbalance
Common Issues
TROUBLESHOOTING
ProblemSolution
Connection refused on RPCEnsure sost-node is running and --rpc-port matches (default 18232)
Authentication failedCheck --rpc-user and --rpc-pass match between node, miner, and CLI
No peers connectedCheck firewall allows port 19333; try --connect seed.sostcore.com:19333
Miner finds no templateNode must be fully synced before mining; check getinfo height
"Immature coinbase" errorCoinbase outputs require 1000 confirmations (~7 days) before spending
Out of memory (miner)ConvergenceX requires 4GB RAM per thread; reduce --threads