stratum-mining / benchmarking-tool

Benchmarking tool to measure Stratum V2 and Stratum (V1) protocol performances in different contexts
Other
10 stars 8 forks source link

Better manage Bitcoin nodes setup and synchronization #38

Open GitGab19 opened 1 month ago

GitGab19 commented 1 month ago

We are creating and syncing 3 different Bitcoin nodes for our system. If this is not a problem when running testnet4, it become a nightmare when testing on mainnet.

We should find a way to better manage this. I initially thought about using this: https://prunednode.today/ But it seems not updated anymore, so I started syncing a pruned node which can be used to bootstrap our system, so to avoid waiting days and consuming a lot of storage, in a very similar way.

pavlenex commented 1 month ago

Would sync from a trusted utxo set help? Can be signed by projects contributors https://docs.btcpayserver.org/Docker/fastsync/

GitGab19 commented 1 month ago

Would sync from a trusted utxo set help? Can be signed by projects contributors https://docs.btcpayserver.org/Docker/fastsync/

Totally, I was trying to do the same thing more or less. For me it's fine to use those snapshots 👍 Do you know how frequently are they updated?

GitGab19 commented 3 weeks ago

Slightly related to this, I think we should ensure the containers start time is correctly managed. @Shourya742 did some progress on this on PR #26, but during some tests I noticed that if the nodes are not syncing fast enough, the tool fail to run the containers, with errors similar to this one: dependency failed to start: container sv1-node-pool-side is unhealthy. I think this happens because of the timeout in the healthcheck here: https://github.com/stratum-mining/benchmarking-tool/blob/253b747264558dfe8ed3aa6b500e75b8fc83c1e0/docker-compose-config-a.yaml#L86-L91

A suboptimal way to improve this can be adding these lines in the run-benchmarking-tool script:

# Check for Docker errors and stop containers if an error occurs
if [ $? -ne 0 ]; then
    echo "❌ Docker encountered an error. Stopping all running containers..."
    docker compose -f "docker-compose-config-${CONFIG_LOWER}.yaml" down
    echo ""
    echo "❌ Containers stopped due to an error. Please check your configuration and try again."
    echo ""
    echo "💬 If you continue to experience issues using the tool, feel free to reach out for support at: https://discord.com/channels/950687892169195530/1107964065936060467"
    echo ""
    exit 1
fi

But I don't like this approach, so I think that something better needs to be done

cc @Shourya742