Transaction Generation on the STEEM TESTNET - step1 Root Cause Analysis

in #witness-category6 years ago (edited)

2018-10-06_14-32-46.png


We had a TESTNET to test HF20, but it turns out that we need much more effective testing. To understand how we can do this better next time, we need to understand what didn't work well this time.

This document will help us to identify what was not covered by the TESTNET and then make it better.

1. Generic background on blockchain & TESTNET

"A blockchain is a Distributed OpenLedger of records, contracts & Transactions between multiple partieis."

An ideal TESTNET must sync Records, Contracts & Transactions in real time thus replicating the state of the MAINNET.

Further this can be summarized as state transfer from one distributed state machine to another resulting in invocation of various automatic transactions and virtual operations. In a real world scenario, this will not be possible and we will have device elaborate mechanisms to mimic real world interactions.

1.1 discussion

List down the transaction types that can be invoked with a tool similar to Tinman. For these cases, including a periodic sync of state from the MAINNET to the TESTNET can be done with Tinman. Further mimicing the user interaction, reaching the TPS that we can expect on the MAINNET etc are going to be the challenges. If we are syncing from the MAINNET it will not be possible sync the current Resource Credits (or earlier bandwidth data). We will be able to get the posts. For the interactions on the posts we will need to device a mechanism and invite the community.

1.2 TESTNET

A TESTNET is simple terms like a "spell checker" which will make sure that we wrote down is grammatically correct. Every software undergoes through rigorous testing before this goes like. Say Twitter and Facebook are too generic examples.

In the blockchain world the testing is done with a version of the blockchain called TESTNET which will have all the features and rules that define the new version of the blockchain. Finding bugs in the TESTNET and postponing release dates is not a bad thing and this is even done for Bitcoin with their Segwit2x

RCA : why Official TESTNET was not enough ?

We have an official TESTNET live from |date| but as it turns out that the TESTNET was not enough. We need to do a root cause analysis (RCA) to understand why the TESTNET was not enough. This RCA will give us a problem statement. Then, we can create a solution which will address the problem.

what we know of the official TESTNET

  • it was live from |2018-08-25| Hardfork 20 Testnet Details
  • Extensive automated testing setup using code is present
  • The Resource Credit (RC) implementation was difficult to test because of unpredictable variables and difficult to reproduce conditions (which are such conditions ?)
  • volume of transactions on the MAINNET was higher than TESTNET (how much higher ?)
  • We need to have similar or equal number of transactions on the TESTNET and MAINNET
  • intelligently filtering and mirroring non-consensus plugins like RC/bandwidth is difficult or not possible

Questions

  • Date on which TESTNET was live ? ( 2018-08-25 as per the @steemitdev post)

  • what is the version of the offiical TESTNET ?

  • How many transactions are happening in the MAINNET per week ? (7 x 86400 seconds)

  • How many transactions happened in the official TESTNET ?

  • What was the highest TPS on the ofifcial TESTNET ?

  • Can we create scenarios like upvote which will test the official testnet ?

  • Do we have a list of scenarios and transactions that cannot be effectively tested on the TESTNET ?

  • so can we identify the difficult areas like RC and test them ?

  • Which are the difficult scenarios that was not tested by the automated test environment ?

References:

  1. inertia's post
  2. Timcliff and Ura.soul discussions: in #witness-social
  3. @gtg's points on #witness

cc: @timcliff @ura-soul @yuriks2000 @yehey @develcuy @gtg

Sort:  

This post has been rewarded with 100% upvote from @indiaunited-bot community account. We are happy to have you as one of the valuable member of the community.

If you would like to delegate to @IndiaUnited you can do so by clicking on the following links: 5SP, 10SP, 15SP, 20SP 25SP, 50SP, 100SP, 250SP. Be sure to leave at least 50SP undelegated on your account.

Please contribute to the community by upvoting this comment and posts made by @indiaunited.

I am looking forward on reading some answers here.
This should be a main focus of top100 witnesses

We have some answers from @inertia and I think now we can define how to contribute to address the items which are work in progress. ie essentially help with this "We're working on a formal list of scenarios." IMHO

Oh man.. So much info.. Wish I could understand them. I only know that HF20 had glitches and they were fixed.. But I am trying slowly to learn Javascript. Hopefully it helps me understand programmers when they talk next time.

@pangoli - I have tried to add some introduction etc now. I am sorry if its still confusing. Essentially think of it like what we all do before buying a new care or motor cycle.

When we decide to buy a new car, we will read all the reviews, ask our friends and then finally go and do a test drive. So if buying a new car is a Hard Fork, we need to do the same here too. And with Javascript you can do hell lot of things! I am personally jealous about anyone and everyone who can code in JS. I think you can try with steemjs and also contribute to the testing.

@yuriks2000 has setup steemtest.com to test the latest and greatest branch & Steemit Inc has the HF20 version here https://condensertestnet.steemitdev.com which can again be used for testing.

For example right now we are seeing lot more messages in the latest code from Steemit Inc and the differences are shown in the screen shot below. Now, you can also contribute by going through steemtest.com so that we will see more messages.

2018-10-07_14-16-25.png

LEFT: latest code & RIGHT: Live Witness.

Now, a simple question anyone can ask even without any technical know-how is, "why there are more yellow colored letters on the Left hand side ?"

We need to device a community driven initiative where in more and more people are participating and I am sure Steemit communities will contribute if we have a mechanism to "Gamify" testing.

I hope this helps ...

https://condensertestnet.steemitdev.com/ is the site provided by Steemit inc. We will use https://steemtest.com for everyone to use. Right now in the process of setting things up.

awesome, i'll tag along

Thanks for simplifying. I get it.

My responses are going to be slow for next 2 - 3 days because of climatic conditions.

Weather channel predicts heavy rain fall ...

2018-10-06_15-59-05.png

I'm still a beginner on this and at least I'm able to understand what you have mentioned. I still have to get familiarization an some of the keywords you have mentioned here.

Looks like you are collecting some data by asking some questions. What is your next step?

Posted using Partiko Android

@bala41288 your response regarding testing and QA after the HF20 was well balanced and I am sure you will be able to contribute to the community with your expertise in QA. Domain expertise I am sure you will be pickup :-) Thanks for the reply

Looks like you are collecting some data by asking some questions. What is your next step?

The questions are to understand what really went wrong. For example, we know that there is a TESTNET, We all know that many witnesses helped to test the TESTNET, but still we had few less than expected issues with the HF20. This shows that the testing done with the TESTNET was not adequate.

But why was it not adequate is what need to find.

To define a solution, we need to answer the "why"

So, we have identified that there are few scenarios which were not identified and thus not tested. So we can work together to identify those scenarios first and then write test cases to test them.

The next step will be to write down the conclusions and creation actionable items.

It may sound like a slow process, but yes, it is a slow process. Without mathematically quantifiable questions and answers, we can't find a permanent solution to anything IMHO.

This post has been upvoted for free by @minibot with 0.1%!
Get better upvotes by bidding on me.
More profits? 100% Payout! Delegate some SteemPower to @minibot: 1 SP, 5 SP, 10 SP, custom amount
You like to bet and win 20x your bid? Have a look at @gtw and this description!

Coin Marketplace

STEEM 0.19
TRX 0.13
JST 0.029
BTC 66254.46
ETH 3319.59
USDT 1.00
SBD 2.69