Menu
The Chia Plot
  • Blog
  • How-To
  • About
  • Contact
  • Security
  • Discord
The Chia Plot
dust storm

Someone keeps dusting the Chia network

Posted on December 20, 2021December 20, 2021 by Chris Dupres

Over the last couple of days we have seen some major mempool spikes on the Chia network, knocking farmers offline. Basically it looks similar, although not exactly, like the Chia dust storm a couple of months ago. Personally my farm has been knocked offline a couple of times, and the same is true for a number of farmers around the world.

So what is happening? It looks like someone is stuffing thousands of transactions into the mempool all at once and that is causing a cascade of issues as slower nodes lose sync and then start acting as zombie nodes causing issues and additional load on the nodes that do stay in sync.

chia network mempool
chia network mempool from GraphChia.com

As you can see the normal transaction volume is being completely dwarfed by spikes that are hitting it right now. But if you look at the Bitcoin or Ethereum mempools they are significantly busier than the Chia network is even during these spikes. If Chia wants to supplant Ethereum as the programmable smart chain of choice it needs to be able to easily support more than 10x this load at all times.

ethereum mempool data from https://jochen-hoenicke.de/
ethereum mempool data from https://jochen-hoenicke.de/

I don’t really have any answers here, but you can be sure I will be asking for some. Both from Chia Network, who has responded to these issues in the past, and from others in the community about why the Chia node falls over with what would seem to be a feather brush to an Ethereum node. If it is just low powered nodes, then they need to go. Permanently. If it is something else then that needs to be fixed because right now even with decent hardware its luck of the draw if you or your peers get knocked out by one of these spikes.

Related

12 thoughts on “Someone keeps dusting the Chia network”

  1. Rolle says:
    December 20, 2021 at 12:03 pm

    “…right now even with decent hardware its luck of the draw if you or your peers get knocked out by one of these spikes.” Not true. If you have sufficient hardware power and network response, there is no issue IMHO and in my experience. Chia’s insistence that Pis or similar are “good enough”, for example, is hurting Chia’s chances of graduating into the big league of crypto, such as Ethereum you mention, in terms of transactions.

    Reply
    1. Chris Dupres says:
      December 20, 2021 at 12:40 pm

      It is true. I’m farming a rocket lake i5 with 32gb ram and I’ve been knocked out by both

      Reply
      1. Anonymous says:
        December 20, 2021 at 6:34 pm

        Chia is not RAM size bound, but rather RAM speed bound. So, most of your RAM is kind of being wasted (yeah, OS is using it for some general caching). Potentially, using it as a cache in front of your db folder would make a better use of it.

        Also, Chia is not CPU per se bound, but rather a single core bound. Once you have one core maxed out, your node is SOL, regardless of how many cores you have.

        Reply
  2. Anonymous says:
    December 20, 2021 at 4:14 pm

    I have been knocked out with AMD Ryzen 7 3700X 3,6/4,4GHz 32MB AM4 Wraith Prism BOX CPU and 32 GB RAM

    Reply
  3. Anonymous says:
    December 20, 2021 at 6:11 pm

    I guess, if we want to move this issue forward, there is no point to repeat empty statements that play well in Chia’s favor (general rambling about RPis or other non-specified “low spec” nodes). I would rather focus on what issues we see with our own setups, rather than pointing fingers at “others” that don’t have “as good” setups as we have.

    As far as your statement “rocket lake i5 with 32gb ram” was behind, what symptoms did you see?

    My node (i5-8250U) fell behind today. The first problem was the CPU usage. On the first glance, it looked OK, as it was running at “only” 30% (normal is ~5%); however, when I looked at the individual cores, one was fully choked, where other cores were kind of idling (4 physical, multithreaded 8). Behind that choked core was start_full_node process. So, it was initially obvious to me that my box cannot handle all those transactions. Not so fast. I use ChiaDog to monitor my farm, and it was complaining at my node struggling. Also, my pool was telling me that I have plenty of stalls (usually I have next to zero). I checked my debug.log, and that was a mess. My log was 99% full of add_spendbundle entries and was maxing out in 5 minutes. Those lines were coming less than one millisecond apart. I dropped the log level to ERROR (basically disabling ChiaDog, or any other monitoring tool). I also dropped the number of peers down to 10. (My lesson from the original dust storm).

    After restarting chia (few hours ago), it is running smoothly right now. No issues, no stales, CPU usage a bit more than normal, but no single core being choked. At least so far. At the moment, my box can handle this small dust storm traffic, but I guess, it will not scale much more than that.

    The obvious question for me is what kind of idiot puts engineering logs in the production code? Why those logs entries are not forked to a different (low priority) thread, so even if more lines will be generated, it will (less) affect the base code and if being overwhelmed will drop some lines to let the main code run better. Why there is no higher-level code that will suppress repeating log entries, and just eventually spit out one stating that it was repeated XYZ times in the last XYZ seconds. What is the main code that the node should have? Is it logging or rather running the node?

    As far as that code choking that one core, that is a sign that the code is single-threaded. Looking at other parts of the code (e.g., plotter), there is no multithreading expertise behind this project. This is why we had the first dust storm (if you read what was said during the first dust storm and the post mortem what was “fixed”) – basically screwed up thread synchronization between peer handling and db handling processes (what I flagged during the dust storm, and was acknowledged as one of the problems). It will really not matter what H/W we will have, if the code will choke on one core, where other will be running mostly idle.

    Another issue is using some magical numbers. In this case that is the peer count. Default value is set to 80. Anyone, and I mean, anyone that writes anything network related understands that the code should not be based on some arbitrary numbers, but rather on the state of the network. If the network handling is overwhelmed, there is a need for a backing off protocol. When the network is in a good shape, you may increase your connections / handle more traffic.

    So, should I blame the software engineer that did it? Possibly not, as those are clearly entry level / no training problems. In a normal company, that code would go through a code review process. Then it would go through a QA process. Then, it should be approved by both head of engineering and head of QA. If there are known problems, the team should get some extra training, or potentially some more experienced people should be hired. So, on my book that is where the problem is – the head of engineering.

    Lastly, here is a quote from Twitter team that rewrote their base code using a different (better) language (the original was Ruby), and a different db:

    “In 2008, Twitter search handled an average of 20 TPS [tweets per second] and 200 QPS. By October 2010, when we replaced MySQL with Earlybird, the system was handling 1,000 TPS and 12,000 QPS on average”

    That was about 50x faster end result. However, that was a deliberate action of Twitter team that acknowledged that H/W scaling will is potentially at the end of the line, and there is a need to look for some other solution (code rewrite, not just patches here and there).

    Another way of looking at this problem is that we have over 300k nodes out there. Behind those nodes, there is about the same number of people maintaining those nodes. Is the solution to blame part of that 300k nodes, or rather to blame the company that is not hiring a couple of experienced engineers to rewrite the base code. Or another option is to outsource the code, or parts of it to third party developers. Flex, Farmr, MadMax, BitBlade are good example of what can be done by more or less a single person that understands the problem on hand. Flex is already working on a full node solution.

    Reply
    1. Alfred says:
      December 20, 2021 at 6:28 pm

      Well, fully agreed for Madmax and Bladebit, but the extreme sensitivity of Flexpool’s implementations to dust storms does not make them the most obvious example of the resilient infrastructure we’re all expecting imo.

      Reply
      1. Anonymous says:
        December 20, 2021 at 6:42 pm

        I fully agree with you about Flex. However, at some point people will need to decide whether to go with Flex or keep upgrading their H/W, without any assurance what will work and what not. If Flex will be successful in running full node on RPis (it looks like it will), we may see plenty of people switching to them, regardless of what approach they take. Potentially their approach is only relevant to people like you and me.

        This is also why I stated that Chia “should outsource” – i.e., give them explicit guidelines what needs to be done, and pay for code that meets their requirements. Not giving them a blank card to do whatever they want to do.

        Also, by having some other options for a full node would put more pressure on Chia to get their act together.

        Reply
      2. Anonymous says:
        December 20, 2021 at 11:40 pm

        The net space dropped by about 3.5 EB. I was checking Flex pool / Top Farmers (10 farms, 2.5-8.9 PB), and they had about 2% of stales. That leaves about 3 EB for mostly smaller farmers Assuming that an average farm that was knocked off was around 50 TB, that would amount to about 60k farms going down – about 20% of farms out there.

        It would be interesting to know, whether there are any estimates how many farms got severly affected, and what hardware they have.

        Reply
  4. Anonymous says:
    December 20, 2021 at 6:23 pm

    By the way, I would really like to have Chia run their own dust storms once a month or so (say the first Sat of the month), just to get some network status assessment. Otherwise, we will get those script kiddies running from their mom’s basements scoring some brownie points.

    Reply
  5. Rabbit of Caerbannog says:
    December 21, 2021 at 3:49 am

    So if I read those “graphs” correctly, 6k transactions basicly was a major issue for the Chia Blockchain while ETH was rocking 120k transactions? Please, someone correct me and educate this young padawan! Otherwise, how the F is Chia even hoping to go anywhere when they can’t even handle 1/20 of what the current ETH network can do?

    Reply
  6. Anonymous says:
    December 25, 2021 at 6:04 am

    Please have that understanding

    Multithreading Vs Multiprocessing.
    The purpose of both Multithreading and Multiprocessing is to maximize the CPU utilization and improve the execution speed. But there are some fundamental differences between Thread and Process.

    When a process creates threads to execute parallelly, these threads share the memory and other resources of the main process. This makes threads dependent on each other.

    Unlike threads, the process doesn’t share the resources among them, therefore they can run in a completely independent fashion.

    Python provides the functionality for both Multithreading and Multiprocessing. But Multithreading in Python has a problem and that problem is called GIL (Global Interpreter Lock) issue.

    Because of GIL issue, people choose Multiprocessing over Multithreading.

    Python provides a multiprocessing package, which allows to spawning processes from the main process which can be run on multiple cores parallelly and independently.

    TheMultiprocessing package provides a Pool class, which allows the parallel execution of a function on the multiple input values. Pool divides the multiple inputs among the multiple processes which can be run parallelly.

    Reply
  7. Anonymous says:
    February 25, 2022 at 3:53 pm

    many (maybe almost all) farmers mine more forks at once 🙁

    Reply

Leave a Reply Cancel reply

Advertisement

Recent Posts

  • Crypto is burning down – Chia seems fine
  • Chia CAT upgrade fiasco part 2 – Was I wrong?
  • WTF just happened?? CAT1 to CAT2 “upgrade”
  • The era of the Chia NFT is upon us
  • Chia Blockchain 1.4.0 released – NFTs and DIDs oh my
  • Discussion
  • Facts About Farmers
  • How-To
  • Information
  • News
  • pools
  • Security
  • Trademark
  • Trading
  • Uncategorized

Dark Mode Switch

©2021 The Chia Plot - Donate XCH / MRMT / SBX @ xch1p4440d6zwu9ryta2vx073lq2ge3s29d37kskz6t34jp085e8srjqnk0gcr
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
Cookie SettingsAccept All
Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
CookieDurationDescription
cookielawinfo-checkbox-advertisement1 yearThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Advertisement".
cookielawinfo-checkbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
JSESSIONIDsessionUsed by sites written in JSP. General purpose platform session cookies that are used to maintain users' state across page requests.
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
CookieDurationDescription
na_id1 year 1 monthThis cookie is set by Addthis.com to enable sharing of links on social media platforms like Facebook and Twitter
na_rn1 monthThis cookie is used to recognize the visitor upon re-entry. This cookie allows to collect information on user behaviour and allows sharing function provided by Addthis.com
na_sc_e1 monthThis cookie is used to recognize the visitor upon re-entry. This cookie allows to collect information on user behaviour and allows sharing function provided by Addthis.com
na_sr1 monthThis cookie is set by Addthis.com. This cookie is used for sharing of links on social media platforms.
na_srp1 minuteThis cookie is used to recognize the visitor upon re-entry. This cookie allows to collect information on user behaviour and allows sharing function provided by Addthis.com
na_tc1 year 1 monthThis cookie is set by the provider Addthis. This cookie is used for social media sharing tracking service.
ouid1 year 1 monthThe cookie is set by Addthis which enables the content of the website to be shared across different networking and social sharing websites.
Performance
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
CookieDurationDescription
d3 monthsThis cookie tracks anonymous information on how visitors use the website.
Analytics
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
CookieDurationDescription
__gads1 year 24 daysThis cookie is set by Google and stored under the name dounleclick.com. This cookie is used to track how many times users see a particular advert which helps in measuring the success of the campaign and calculate the revenue generated by the campaign. These cookies can only be read from the domain that it is set on so it will not track any data while browsing through another sites.
_ga2 yearsThis cookie is installed by Google Analytics. The cookie is used to calculate visitor, session, campaign data and keep track of site usage for the site's analytics report. The cookies store information anonymously and assign a randomly generated number to identify unique visitors.
_gat_gtag_UA_199099757_11 minuteThis cookie is set by Google and is used to distinguish users.
_gid1 dayThis cookie is installed by Google Analytics. The cookie is used to store information of how visitors use a website and helps in creating an analytics report of how the website is doing. The data collected including the number visitors, the source where they have come from, and the pages visted in an anonymous form.
CONSENT16 years 4 months 5 daysThese cookies are set via embedded youtube-videos. They register anonymous statistical data on for example how many times the video is displayed and what settings are used for playback.No sensitive data is collected unless you log in to your google account, in that case your choices are linked with your account, for example if you click “like” on a video.
Advertisement
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
CookieDurationDescription
advanced_ads_browser_width1 monthThis cookie is set by Advanced ads plugin.This cookie is used to measure and store the user browser width for adverts.
anj3 monthsNo description available.
CMID1 yearThe cookie is set by CasaleMedia. The cookie is used to collect information about the usage behavior for targeted advertising.
CMPRO3 monthsThis cookie is set by Casalemedia and is used for targeted advertisement purposes.
CMPS3 monthsThis cookie is set by Casalemedia and is used for targeted advertisement purposes.
CMRUM31 yearThis cookie is set by Casalemedia and is used for targeted advertisement purposes.
CMST1 dayThe cookie is set by CasaleMedia. The cookie is used to collect information about the usage behavior for targeted advertising.
DSID1 hourThis cookie is setup by doubleclick.net. This cookie is used by Google to make advertising more engaging to users and are stored under doubleclick.net. It contains an encrypted unique ID.
i1 yearThe purpose of the cookie is not known yet.
IDE1 year 24 daysUsed by Google DoubleClick and stores information about how the user uses the website and any other advertisement before visiting the website. This is used to present users with ads that are relevant to them according to the user profile.
KADUSERCOOKIE3 monthsThe cookie is set by pubmatic.com for identifying the visitors' website or device from which they visit PubMatic's partners' website.
KTPCACOOKIE1 dayThis cookie is set by pubmatic.com for the purpose of checking if third-party cookies are enabled on the user's website.
mc1 year 1 monthThis cookie is associated with Quantserve to track anonymously how a user interact with the website.
test_cookie15 minutesThis cookie is set by doubleclick.net. The purpose of the cookie is to determine if the user's browser supports cookies.
uid1 year 1 monthThis cookie is used to measure the number and behavior of the visitors to the website anonymously. The data includes the number of visits, average duration of the visit on the website, pages visited, etc. for the purpose of better understanding user preferences for targeted advertisments.
uuid3 monthsTo optimize ad relevance by collecting visitor data from multiple websites such as what pages have been loaded.
uuid23 monthsThis cookies is set by AppNexus. The cookies stores information that helps in distinguishing between devices and browsers. This information us used to select advertisements served by the platform and assess the performance of the advertisement and attribute payment for those advertisements.
VISITOR_INFO1_LIVE5 months 27 daysThis cookie is set by Youtube. Used to track the information of the embedded YouTube videos on a website.
YSCsessionThis cookies is set by Youtube and is used to track the views of embedded videos.
yt-remote-connected-devicesneverThese cookies are set via embedded youtube-videos.
yt-remote-device-idneverThese cookies are set via embedded youtube-videos.
Others
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
CookieDurationDescription
__gpi1 year 24 daysNo description
adImpCountpastNo description
C3UID5 yearsNo description available.
C3UID-9245 yearsNo description
fc5 months 27 daysNo description available.
pfpastNo description
pxs5 months 27 daysNo description available.
SAVE & ACCEPT
Powered by CookieYes Logo