|
| 1 | +# Kaspa Testnet 10 (TN10) – Crescendo Hardfork Node Setup Guide |
| 2 | + |
| 3 | +Kaspa is about to take a significant leap with the **Crescendo Hardfork**, as detailed in [KIP14](https://github.com/kaspanet/kips/blob/master/kip-0014.md), transitioning from 1 to 10 blocks per second. It is scheduled to activate on mainnet on 2025-05-05 1500 UTC at DAA Score 110,165,000. |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +## Recommended Hardware Specifications |
| 8 | + |
| 9 | +- **Minimum**: |
| 10 | + - 8 CPU cores |
| 11 | + - 16 GB RAM |
| 12 | + - 256 GB SSD |
| 13 | + - 5 MB/s (or ~40 Mbit/s) network bandwidth |
| 14 | + |
| 15 | +- **Preferred for Higher Performance**: |
| 16 | + - 12–16 CPU cores |
| 17 | + - 32 GB RAM |
| 18 | + - 512 GB SSD |
| 19 | + - Higher network bandwidth for robust peer support |
| 20 | + |
| 21 | +While the minimum specs suffice to sync and maintain a TN10 node with the accelerated 10 bps, increasing CPU cores, RAM, storage, and bandwidth allows your node to serve as a stronger focal point on the network. This leads to faster initial block download (IBD) for peers syncing from your node and provides more leeway for future storage growth and optimization. If you are a pool operator, it is recommended that you pick specs that are closer to the preferred specifications above. |
| 22 | + |
| 23 | +--- |
| 24 | + |
| 25 | +## Running Your Node |
| 26 | + |
| 27 | +1. **Obtain Kaspa v1.0.0 binaries** |
| 28 | + Download and extract the official [1.0.0 release](https://github.com/kaspanet/rusty-kaspa/releases/tag/v1.0.0), or build from the `master` branch by following the instructions in the project README. |
| 29 | + |
| 30 | +2. **Launch the Node** |
| 31 | + ``` |
| 32 | + kaspad --utxoindex |
| 33 | + ``` |
| 34 | +
|
| 35 | + *(If running from source code:)* |
| 36 | + ``` |
| 37 | + cargo run --bin kaspad --release -- --utxoindex |
| 38 | + ``` |
| 39 | +
|
| 40 | + To run on testnet, simply add `--testnet` at the end. For example: |
| 41 | +
|
| 42 | + ``` |
| 43 | + kaspad --utxoindex --testnet |
| 44 | + ``` |
| 45 | +
|
| 46 | +Leave this process running. Closing it will stop your node. If you have other flags that you use for your current node, you may continue to use those. |
| 47 | +
|
| 48 | +- **Advanced Command-Line Options**: |
| 49 | + - `--rpclisten=0.0.0.0` to listen for RPC connections on all network interfaces (public RPC). |
| 50 | + - `--rpclisten-borsh` for local borsh RPC access from the `kaspa-cli` binary. |
| 51 | + - `--unsaferpc` for allowing P2P peer query and management via RPC (recommended to use only if **not** exposing RPC publicly). |
| 52 | + - `--perf-metrics --loglevel=info,kaspad_lib::daemon=debug,kaspa_mining::monitor=debug` for detailed performance logs. |
| 53 | + - `--loglevel=kaspa_grpc_server=warn` for suppressing most RPC connect/disconnect log reports. |
| 54 | + - `--ram-scale=3.0` for increasing cache size threefold (relevant for utilizing large RAM; can be set between 0.1 and 10). |
| 55 | +
|
| 56 | +--- |
| 57 | +
|
| 58 | +## Mining and Preparation for Crescendo |
| 59 | +
|
| 60 | +Crescendo introduces a new field in transactions, `mass`, which needs to be preserved from the template that you get from `GetBlockTemplate` and passed back when you submit your mined block via `SubmitBlock`. |
| 61 | +
|
| 62 | +Ensure your pool/stratum is updated to preserve this field in the transactions by updating your GRPC proto files. Then, ensure that your pool software properly sends back the `mass` for each transaction in the block. |
| 63 | +
|
| 64 | +### Updating your Pool/Stratum to work in Cresendo |
| 65 | +
|
| 66 | +#### Updating GRPC proto |
| 67 | +
|
| 68 | +Make sure that you get the updated `message.proto` and `rpc.proto` from the rusty-kaspa repo at https://github.com/kaspanet/rusty-kaspa/tree/master/rpc/grpc/core/proto |
| 69 | +
|
| 70 | +#### Using the golang Kaspad repo as an SDK |
| 71 | +
|
| 72 | +If you use the golang Kaspad repo as an SDK, a new tag [v0.12.20](https://github.com/kaspanet/kaspad/releases/tag/v0.12.20) has been made which contains the changes you would need to get your pool/stratum updated. Update your dependency on the old repo to that tag. |
| 73 | +
|
| 74 | +### What happens if I don't update my pool/stratum? |
| 75 | +
|
| 76 | +Before Crescendo activates, you will see the following warning in your node when you submit blocks: |
| 77 | +
|
| 78 | +``` |
| 79 | +The RPC submitted block {block_has} contains a transaction {tx_hash} with mass = 0 while it should have been strictly positive. |
| 80 | +This indicates that the RPC conversion flow used by the miner does not preserve the mass values received from GetBlockTemplate. |
| 81 | +You must upgrade your miner flow to propagate the mass field correctly prior to the Crescendo hardfork activation. |
| 82 | +Failure to do so will result in your blocks being considered invalid when Crescendo activates. |
| 83 | +``` |
| 84 | +
|
| 85 | +Double check that your proto files are updated and that you are able to submit blocks with transactions without triggering this warning. |
| 86 | +
|
| 87 | +After Crescendo activates, if you still have not updated, the blocks that you submit will be considered invalid. |
0 commit comments