- Nov 19, 2015
- 94
- 191
Over the past year or so there has been a few "stress tests" that went on. Personally, I believe doing these are a good idea. The results that come from the livenet stress tests are public and therefore more believable as valid. The problem is the start time and end times of these stress tests are poorly defined. I don't even know how (or by who) the previous stress tests were planned. Stress tests are most effective when 100% of the stress traffic comes at the same time. If the traffic is spread out over a couple hours or days then it fails to expose bottlenecks as effectively as if the stress test comes. In order to get the entire community to spam the network at the precise same time, some coordination is in order. The purpose of this BUIP is to define that coordination.
Below is a unordered list of points that this BUIP should elaborate:
Below is a unordered list of points that this BUIP should elaborate:
- BCH is not beta software. Real economic activity exists on the system today. Therefore it is important that these stress tests are designed to not disrupt the ability to be used as money.
- The stress tests will happen every Monday. The spam phase starts at exactly Noon GMT. The spam phase ends at 12:07 PM GMT.
- The very next block will be the "stress block".
- The very next block after the stress block will be a normal block and will signal the end of the stress test.
- The first actual stress block will happen the first monday after this BUIP gets passed by the BU vote committee.
- Each test will have one of three outcomes: Passed, Failed, or Mistest.
- Passed is if the network makes a block bigger than the previous "stress block" from the week before.
- Failed is if the network tried to make a block big enough to clear out the mempool entirely, but that block failed to propagate (in other words multiple orphan blocks were created during the test)
- Mistest occurs when the people who are supposed to spam the network to make a bigger block fail to fill up the mempool and the stress block is not bigger than the previous stress block from the week before.
- Multiple implementations of a BUIP-compatible spam script can exist that is programmed to spam during the 7-minute window. Such a tool already mostly exists. Existing stress test software would just have to be modified to conform to the schedule as defined in this BUIP.
- The spam script will make transactions with zero fees. Nodes and miners opt-in to the stress test by lowering their minimum relay fee to zero for the spam period of the stress test (the first 7 minutes).
- Miners that want to not participate in the stress test can just ignore all zero fee transactions during the spam period and only make a block with tx's that pay a fee. This will likely fail the stress test, but this is fine because miners have that right, and there will just be another one next week anyways.
- Should the test be once a week, or maybe once every other week? It
- The purpose of all of this is to see the maximum size a block can get before it results in a "failure". That failure point should be the block size limit. Once the stress test shows that a stress block can be bigger than the limit, then new stress block size will be the protocol block size limit.
- These tests should happen on a regular schedule for the rest of time.
- Passed, Failed and Mistest are probably not enough to describe all possible outcomes from these tests. Maybe other states can be added?
- Maybe "stress test" is not the best way to frame such a process... Maybe another name is needed? Perhaps "Capacity Test" or "Network Performance Test"...
Last edited: