Announcement:
Bitcoin Verde to begin assessing the scaling performance of several categories of BCH network software.
Summary:
The Bitcoin Verde and Bitcoin Cash Node development teams have created a plan to test several categories of software related to Bitcoin Cash in order to assess each piece of software’s ability to handle increased block sizes.
Funded by BCHN, each piece of software tested by Bitcoin Verde will produce a standardized report in the context of processing blocks up to 256MB in size. Once complete, each report will be publicized to bitcoincashresearch.org to inform the general community of our findings, as well as to aid in further development discussions.
Evaluation Plan:
Starting this month, the Bitcoin Verde team will begin testing various pieces of software used to support the Bitcoin Cash network. These tests will be used to help our community assess the network’s ability to handle an increase to the maximum block size from 32MB to 256MB. During this assessment, the Bitcoin Verde team will be responsible for creating a prioritized list of relevant software to be tested and producing standardized reports of our findings.
In execution of these software evaluations, the Bitcoin Verde team will be working to produce and publish detailed reports containing the findings of each assessment. Although individual evaluations may result in a wide range of metrics, each report will provide information important in determining whether the software tested is ready for scaling.
In order to begin our evaluations, Bitcoin Verde will first work to create and set up a scalenet as well as to choose/create repeatable tests of the software. The scalenet created will be custom and not published to the live, nor test, networks; the scalenet is a contrived intranet designed to test various edgecases of network performance. The scalenet is static and does not grow organically; the blocks used to test the network and software will be publicly available. This design allows for repeatable testing to ensure an “apples-to-apples” test is always available when changes/updates are made. Once set up, evaluations will be conducted over the course of several weeks, with the intention of producing and publishing one detailed report per week.
Although a number of software categories have been specifically chosen for testing in preparation of these evaluations, not all choices have been set in stone and may be subject to change over the course of our evaluations. Individual software evaluations will likely require different metrics in order to objectively evaluate their performance. The Bitcoin Verde team will provide relevant performance-related metrics for each piece of tested software within our reports.
Every endpoint testing will have unique performance metrics, (i.e. the performance of mining pool software do not have the same metrics as wallet software), but generally, metrics under consideration will include:
- Initial synchronization
- Connectivity/latency during heavy network load
- Latency after Reorganization
- Latency after disconnection (network catchup)
In addition to conducting and reporting individual software evaluations, the Bitcoin Verde team will simultaneously document each test performed in detail. Documentation of tests performed will be included in the weekly published reports. It is our intention to document each test in such detail that any mildly-technical person reading the report is able to reproduce the results from publicly available components, proprietary software excluded.
Evaluated software that is proprietary in nature or otherwise unable to be publicly reproduced, will be noted with BCHN.
Several categories of software have been chosen to evaluate their “performance at scale”. Evaluations of software performance may include, but are not limited to:
Mining pools
- Open source
- Closed source (where possible)
Common wallet backends
- Fulcrum
- Blockbook
Indexers
- bitDB
- slpDB
Software Evaluations
In order to easily bootstrap a chain for testing purposes as well as to allow space for early BIP/hard-fork activations, the configuration of testnet4 has been identified as having an appropriate base configuration that could be leveraged to avoid any initial hiccups.
Since testnet4 uses simple, round numbers for the activation heights, and the blocks are small, copying the first 5000 blocks allows the scaling tester to start from a clean, repeatable state that should avoid any initial problem with generating test transactions. This also minimizes the time spent configuring chain parameters in BCHN, while making room for any modifications necessary to complete the tests.
Following this initial set of bootstrapping blocks, the scaling tester will contain code to generate additional blocks that create the funds to be used within tests. All following hard-forks will also be handled within these generated blocks. This combined set of 5000 testnet4 blocks and pre-mined setup blocks will then serve as a base chain for any tests to follow.
Tests will then be additional sets of transactions and blocks (along with their associated relay times) that can be replayed onto a test node (or set of nodes) that make up the private test net defined by these chain parameters. After a test is run, additional tests (or re-tests) will require resetting the node to the base chain height (5000 + X setup blocks) and then broadcasting the transactions and blocks from the test as defined.
Testing Architecture
The current test architecture involves a test scenario generator, which will predetermine a series of blocks of various sizes and complexity. These blocks will build off of the base chain described above.
Static test scenarios are then emitted to a node that has been segregated from the rest of the network (and its checkpoints disabled, as applicable) to ensure uptake of the static scenario. The software under test will be connected to the node during the period where the test data is provided to it, and various performance metrics will be gathered for that test scenario. Once the test is complete, the node is reset and a new test scenario can be run from scratch.
During evaluation, multiple tests of the same scenario may be performed in order to ensure replicatibility as well as to measure any deviations in performance.
Status
The Bitcoin Verde team is currently setting up the scalenet needed to conduct our evaluations.
To begin our evaluations, the Bitcoin Verde team intends to first assess the common wallet backend, Fulcrum. The current step by step guide for evaluation is as follows:
- Research existing Testnet generation / testing tools
- Generate first iteration of private Testnet
- Ensure BCHN can accept private Testnet (in isolation)
- Attempt to connect Fulcrum to BCHN Testnet
- Identify high-value Testnet scenarios
- Rerun Fulcrum tests with the multiple Testnet scenarios
- Determine (and implement, if necessary) automated capture of evaluation metrics.
- Compile and publish results
Following the success of this evaluation, the Bitcoin Verde team will move on to connecting other Bitcoin Cash tools to the test net, and repeating the process.
Final Word
We are extremely excited to begin our evaluations and are appreciative of the BCHN team and their assistance to set this project up. This evaluation effort is set to span several months (~5), please be sure to check back as additional evaluations are complete.