Layer-1 blockchain built from scratch in C++20. Equihash proof-of-work, 10-minute blocks, 21 million FTC fixed supply.
Latest release: v0.1.0-alpha — Full node + miner + wallet CLI
Live status of official seed nodes
Get your node running in minutes
Download the binary and create a config file:
# Create config directory mkdir -p ~/.ftc # Create config file cat > ~/.ftc/ftc.conf <<EOF rpcuser=ftcuser rpcpassword=ftcpass rpcport=9332 port=9333 connect=3.35.208.160 connect=44.221.81.40 EOF # Start the node ./ftcd
Point the miner at your local node or a seed node:
# Mine to your own node ./ftc-miner \ --rpc-url=127.0.0.1 \ --rpc-port=9332 \ --rpc-user=ftcuser \ --rpc-pass=ftcpass \ --address=YOUR_FTC_ADDRESS \ --threads=4 # Generate a new address ./ftc-wallet --generate
Requirements: C++20 compiler, CMake 3.20+, OpenSSL 3.x
# Clone git clone https://github.com/Kristian5013/flow-protocol cd flow-protocol # Build (Linux) mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release cmake --build . -j$(nproc) # Run tests (184 tests, 791 checks) ./test/ftc_tests
Query the node via JSON-RPC:
# Get blockchain info
curl -u ftcuser:ftcpass \
-d '{"jsonrpc":"1.0","id":1,
"method":"getblockchaininfo",
"params":[]}' \
http://127.0.0.1:9332/
# Other methods:
# getblock, getblockhash,
# getpeerinfo, getmempoolinfo,
# getwork, submitwork,
# getnewaddress, getbalance,
# sendtoaddress, listtransactions
Core protocol parameters
| Algorithm | Equihash (200, 9) |
| Block Time | 10 minutes (600 seconds) |
| Max Supply | 21,000,000 FTC |
| Initial Block Reward | 50 FTC |
| Halving Interval | Every 210,000 blocks (~4 years) |
| Difficulty Adjustment | Every 2016 blocks (~2 weeks) |
| P2P Port | 9333 |
| RPC Port | 9332 |
| Address Prefix | F (Base58Check) |
| Consensus | SegWit, BIP34, BIP65, BIP66 (from genesis) |
| Codebase | 81,000+ lines of original C++20 |
| Dependencies | OpenSSL only (zero Bitcoin Core code) |