Welcome everyone, thanks for tuning in. Since you guys are interested in how all this hashing stuff is done, we figured it’d be best to send AngryWasp some Nerva Cryptocurrency & Crypto Mining questions and see what we could learn. If you enjoy this article, please remember to drop by the Nerva XNV Discord Forum and let us know.
Note: This post was published August 9, 2018 by RockSteady and is currently no longer online – so we have published it here with tiny changes.
Origins of Nerva
While the CN ASICs were the catalyst to actually bring NERVA to life, I had been pondering the [CN ASIC] situation for some time before that. To me, the main problems with the growing use of crypto were environmental sustainability, the ever increasing network hashrates, increasing centralization of hash power, and fragility of networks due to pool mining diminishing the node count in networks. On top of that, we have the ever increasing commercialization of crypto, where multi billion dollar companies are emerging to feed this newly created beast. So I will now proceed with a rant about each of these issues 🙂
E-waste has in very recent times become a major global concern as a source of pollution and adverse health effects in humans and wildlife. From the mining of heavy metals such as copper, to PCB and component manufacturing processes, to device assembly, pollution is present. Furthermore, the incorrect disposal of electronics results in heavy metal contamination to local environments and adverse health effects to the wildlife in these environments, as well as adverse health effects on the people responsible for the production and disposal of electronics.
Through NERVAs ability to be mined on older hardware and by removing the ability of dedicated hardware to mine the coin, NERVA mitigates the issue of E-waste. Furthermore, scaling up hashing power in a CPU mined coin is more expensive, creating a financial disincentive for users to buy hardware specifically to mine NERVA, further mitigating the impact of E-waste on the environment.
Anyone looking at the evolution of crypto mining over the last few years will have noticed an explosion in the amount of hardware being used for mining. GPUs are sold out around the world and ASICs are being rolled out in increasing batches. This is creating an endless cycle of buying more hashpower to compete with other miners for coins. Besides the E-Waste considerations previously discussed, we are seeing an explosion in the amount of electricity being used to power these networks. It is estimated that Bitcoin for example uses more electricity than the entire Republic of Ireland. That is far from sustainable. NERVA is intended to be mined on the spare cores of your computer. I am mining blocks right now while writing this, with only a minimal increase in the amount of electricity being used by a computer that would otherwise already be running anyway.
Centralization is a major concern for all coins and the consequences are many. Giving too much hash power to an individual or pool increases the risk of a 51% attack, where a blockchain can be hijacked and manipulated for malicious purposes, but it also increases the fragility of a network. If a pool holding for example 65% of a network hashrate goes down, the network instantly loses 65% of it’s hash power, struggling to validate transactions and progress the blockchain. This results in increased transaction times and difficulty in making transactions, causing a loss of reputation to the coin and frustration to end users.
Centralization of hash power also causes the concentration of coin distribution. The vast majority of Cryptonight ASICs are operated by only a few companies in the business of making these devices. As a result, coins mined by ASICs are funneling the vast majority of their block rewards to only a small group of people, effectively centralizing price and distribution control and promoting cartel like behavior among these individuals.
NERVAs model of solo CPU mining maximizes hashrate distribution, making it much more difficult for any one entity to obtain the 51% threshold to stage an attack against the coin, while minimizing the network disruption caused by nodes going off the network. Distributed hashrate also has the added advantage of more equitable coin distribution creating a fairer system for all participants.
The spirit of Satoshi
It is worth remembering why crypto was developed in the first place. The driving force was to create a currency that could be used by anyone, anywhere, anytime. Across borders, free from taxes, government regulation and monetary policy. Here in Australia, we are currently having a royal commission into the unethical behavior of major banks and financial services. What people have been thinking all along, that banks are deceiving and stealing from the public, has been proven to be true, so we need something else as a society. We need a way to transact with each other that bypasses the greed and corruption of the banking sector, and a way to manage our own money that no government or corporation can lay their hands on.
Somewhere along the way, that vision was lost. Again, corrupted by greed and held at the mercy of an elite few. Only this time it isn’t governments and bankers, it’s wealthy ASIC manufacturers and rented hash services. Hijacking blockchains, stealing coins and controlling their price and distribution through excessive hash rates, well beyond what the average person is capable of. Once again, we have a select few corporations making massive profits acting in unethical ways to deceive and steal from the public.
With NERVA, our aim is to take back control and show that a coin is successful if it is owned by everyone. And by making it a CPU minable coin, we give everyone who owns a computer a chance to collect their own NERVA. A coin dedicated to existing in the same spirit which crypto was developed in the first place.
Finally, there is some conventional wisdom NERVA aims to challenge and some lingering questions regarding the longevity of crypto that need to be answered if crypto is to have any future at all. It is said that a coin needs a large hashrate to be stable. I don’t believe that. I believe that a stable coin comes from a highly distributed network and mitigation of network hashrate variance, by means of a robust difficulty adjustment algorithm and resistance to dedicated mining hardware. NERVA aims to test this wisdom. Monero, and by extension all ￼Monero clones, also have a limited lifespan for mining. This is variable, depending on the emission parameters of the coin, but the fact is that every Cryptonote coin is on a ticking clock. One day, the Proof of Work will be done and the entire coin supply will be emitted. At which point the coin enters its ‘tail emission’ where only a very small proportion of the coins original block reward is released to maintain some inflationary measure to the coin and replace coins lost in the network.
So if conventional wisdom dictates that block rewards keep miners incentivised to mine, and a blockchain needs miners to even operate, then what happens when those block rewards are gone? Nobody really actually knows how the wider public will respond to that, because no Cryptonote coin has yet exhausted it’s emission.
From a market and coin value perspective, what happens to the value of a coin once the selling pressure applied by miners is gone? Again, we just don’t know. But we need to know. Mining a coin is only part of the coin’s life. We need to be able to peek through that looking glass and see what’s on the other side. NERVAs emission is very fast. NERVA will hit the tail emission in about 3 years from the first block, around 1 May 2021. This will make NERVA one of the first test cases to how coins make that transition and what is to be expected in the life after mining.
How does Cryptonight Adaptive work?
Well, to know how Cryptonight Adaptive works, it is first necessary to know how dedicated mining hardware works, and how that is different to a CPU.
A hash algorithm is nothing but a set of code instructions to run. Memory reads/writes, some encryption and shuffling of that memory and that’s about it. Pretty daunting code to read, but it is all essentially just moving the 1’s and 0’s around. So an ASIC works by manufacturing a chip specifically to perform those instructions. Once built, that’s all it can do. If the coin changes the algorithm it uses, the ASIC is effectively dead and can no longer be used to mine that coin. An FPGA and GPU run precompiled code. Under the hood, they are totally incomparable devices, but for simplicity, we can say that they are reprogrammable hardware devices that execute binary code. That binary code is first compiled on the CPU, then sent to the device to be executed. So if the algorithm changes, these devices can adapt.
But the problem is that with conventional coins, the coin has to undergo a hardfork (a network upgrade) to change the hash algorithm and break compatibility with dedicated hardware. This works quite well with ASICs, as their development lifecycle is usually fairly long. So a regular hardfork schedule maintains that ASIC resistance. However hardforks have their disadvantages, the largest one being getting people to actually update. So when a hardfork comes around, there is often confusion and network disruption, as people who didn’t realise they needed to update scramble to get their software in order. And sometimes, updated mining software just isn’t available at the time of the hardfork, adding to this disruption. But this still doesn’t help with FPGA and GPU devices, because they can be updated in a very quick timeframe. New GPU mining software can be developed in a few days. A network simply cannot be updated fast enough to stay ahead of them. There had to be a better way. A way to change the algorithm and break compatibility with dedicated hardware, without the headache of constant hardforking and network disruption. And that is the idea behind Cryptonight Adaptive.
Each time a new block is released, roughly once a minute, the hash algorithm is randomized slightly, effectively creating a new algorithm. A very simple concept in its first iteration, but has thus far resisted GPUs and pool mining in the 3 months the blockchain has been live. There is also CN-Adaptive-v2 in the works right now. I can’t disclose too many details right now but I can tell you it will increase the robustness of the algorithm by increasing the number of combinations in the algorithm, making it harder to cache precompiled programs and disperse random variation further throughout the algorithm to prevent optimizing parts of the algorithm. Overall, it’s is a very exciting time to be working on NERVA and I’m really looking forward to the next step of the evolution.
When I launched NERVA I made one very serious error of judgment. I assumed that people using crypto were tech savvy kind of people. The kind of people that could build a wallet from source, and had previous knowledge of cryptonote to do the more simple tasks like solo mining or sending some coins to the exchange. But that was so wrong it wasn’t funny. Actually, it is a little funny now that I look back on it, but at the time, I was pulling my hair out a bit. Turns out that the majority of users had never solo mined before. So I got 1000 questions like where do I download XMR-Stak and where are the pools and all that sort of thing. People were spinning out cause they never knew that Monero or any of it’s clones had built in mining functionality. So I found myself spending many hours providing support and scrambling to try and get documentation together about how to perform basic mining and coin management with NERVA. I got a bit of help from the Masari community in the beginning (and still do) to field questions and provide some support while I got set up and I will be forever grateful for that.
I’m not sure why, I should have known better, but I never really expected to have people get on discord purely just to tell me the coin served no purpose and was going to fail. I can’t count the number of times that I got told that the coin would be dead in a week if I don’t let GPUs mine it, or everyone would leave if I don’t start a pool for it. It is almost like people are wishing for you to fail. I still can’t understand that kind of attitude, when we as a community are trying to do a positive thing, with no real regard for personal gain and people want to come and take a dump on it.
The other big thing I have had to overcome is trying to justify the reason for our existence. That takes up a lot of time. I get told continually that without some sort of utility a coin will fail. But why can’t a coin be used for the purpose of sharing an idea, for contributing to the evolution and improvement of the technology? The way I see it, crypto has a long way to go before it is mainstream. The vast majority of people in this country don’t even know how a Paywave credit card works or look in amazement when I use my phone to pay for stuff at the supermarket. What crypto needs is more coins committed to the development of the technology and less coins promising to take over the world and be the next bitcoin.
Overall though, what has happened with NERVA is that I have spent a lot more time working on building the community than I thought, and a lot less time on the coin. But when it’s all said and done, each is just two sides of the same coin (pun intended)
The balance of development & community
I spend a good amount of time on discord with the community, but at the same time, I’ll be testing code, or running build scripts or something else, so it’s multitasking. But then once I get focused on a specific piece of code that needs to be written, I’m gone for a few days and no one sees me. Some people thought I had abandoned the project when I disappeared for a week to write the new cross platform GUI. So it really is hard to break down into specifics. It is also like I said before, two sides of the same coin. But overall, I spend a lot of time in either development of community management. I also work a full time job, So I get up in the morning about 2 hours before I have to be at work. Check discord, answer some questions. Check the servers and make sure they are all still running. Check the block explorer and make sure blocks have been running out on time. Other basic checks like network hashrate, difficulty etc. Just making sure everything is running smoothly (it is by the way). Then I go off to work. Come home and spend at least 4 hours each evening on it. Whether that be looking at code, planning the next update, writing an update for the GUI or discord bot, building new binary releases etc. Basically most of my work days and quite a few of my days off are spent doing something towards NERVA.
Who is AngryWasp?
I have been following developments and the evolution of crypto for some time. I spoke earlier about the unethical behaviour of banks, so it seemed to me that crypto was a good solution to this problem. Just didn’t realise this when Bitcoin was still easy to mine, lol. So I mined a few coins with my desktop and read a lot of whitepapers trying to get an understanding of blockchain technology and how the whole crypto thing actually worked. After looking at the competing technologies, I finally gained my focus on Cryptonote. Totally anonymous and fungible. A good coin for transacting with other people, but also the private nature of the technology makes it a good store of wealth. So I pulled code from just about every Cryptonote coin there was at the time, compiled every wallet to see how they worked, but it still wasn’t enough. I needed a hands on lesson in it. So I figured out how to fork Monero and start my own private blockchain and ran it for a while. Just on my computer, but it gave me an opportunity to set some breakpoints in the code and see how the code flowed. Very insightful.
My learning of Cryptonote was progressing well, and I started to see some problems emerging. Bitcoin was gaining some media attention and with that, the price started increasing. We started getting this secondary market emerging around crypto, selling hashrate, or selling machines for prices that would most likely never be recovered. It was becoming a bit of a concern. Would the egalitarian and Utopian view of Satoshi be ruined in the span of a few years by greed and corruption. Surely not. But things weren’t getting any better. Bitcoin continued into its bubble at the end of last year and an arms race exploded in the GPU market to try and build bigger and better machines to try and out do each other to get coins for prices that were skyrocketing out of control. It looked to me like we were just going to keep blowing up this bubble till it burst and left nothing behind.
So I started to think about NERVA, as a way of building a coin that could just prevent these problems from ever taking root in the first place. But it still took a bit of time to convince myself that it was worthwhile. With over 1000 coins in the wild, is there really any kind of impression I could make?
Then the first CN ASICs hit online stores and it emerged that what everyone thought was a botnet mining Monero was actually ASIC manufacturers mining the coin in secret. The Cryptonote scene was in total disarray. A technology that was thought to be resistant to ASICs had just been proven wrong in spectacular fashion. It was at that time that I decided to bring NERVA to life. It has been a lot of hard work in a short time frame with a lot of late nights and a lot of my wife looking at me disapprovingly at the amount of time spent at the computer, but very rewarding at the same time. Developing a community of like minded people is good to give you some validation that you aren’t actually going crazy and your concerns are shared by others.
But I feel I have digressed quite a bit from the topic at hand.
What previous projects influenced your work with Nerva?
Well, I have always been a coder. My parents bought me a Tandy Color Computer 3 when I was in primary school, and I have been mashing code ever since. I learned QBasic, then C/C++ when Windows 95 dropped on a 100Mhz Pentium processor and wrote a lot of code in those languages. About 12 years ago now, I got some actual qualifications in IT as a multimedia developer and systems administrator, spending a couple of years writing Flex/AS3 content for websites and alike. I left school with both qualifications a year early and went to work for a company based in the UK, working from home. The joys of being a programmer. lol.
I did a lot more Flash/AS3 work for clients like Heineken, the Honda motorcross team, Manchester United FC. Did a lot of backend work on SQL databases web services and alike on Windows for not-so-interesting clients. A lot of time spent on Windows getting intimately familiar with .NET. So then, the Global Financial Crisis came along and wiped out every business that had ever made a bad investment decision including my employer. Probably a blessing in disguise really.
Whoever it is that said you should do what you love for a job is an idiot. It just makes you hate what you love. lol.
So I dropped the databases and web content and decided to work on some more edgy stuff. So since then I have done many projects focusing primarily on C# and .NET/Mono and more recently .NET Core. Things like a 3D game engine, Built a new XML based programming language and IL emitter/compiler for it. Serialization frameworks and many other similar non-interesting work. Also do a lot of programming in C and Spin for various micro-controllers when I feel the urge to design a PCB. Working with NERVA has brought me back to the early days of C++.
Through all this diverse work, and indeed through life in general I have learned one major lesson. I don’t know everything. I know, it sounds silly to have to say it out loud, but there is a lot of hubris in certain circles and programming is one of them. So in learning from that, I spend a lot of time talking with the community, asking for feedback, finding out where people are having problems and being open and transparent with my thinking process and what I am working on. Gives people an opportunity to point out things I may have overlooked or just not realised. Because as it turns out, writing code is only a part of developing a coin. The rest of the time is spent in support, community engagement, raising awareness and being the “public” face of the coin.
Besides the blockchain stuff, what are some of your joys in life?
At the top of the list has to be camping. Just sitting in the bush with a beer and without a computer. Lol. Digital detox. I also enjoy archery; got a Bowtech Insanity for anyone else interested in archery. Can’t miss a target with that thing. I also have a Sherline mill and lathe I enjoy making stuff on and also restoring antique American clock movements.
Not sure I can actually pin down anything in particular. I have a very fortunate life in general compared to a lot of people. I have all the usual things people aspire to, like a family, house, car, all those sort of material possessions. But I also have the freedom to pursue my interests with the backing of a supportive family. There are a great many people who don’t have that, so I just consider myself to be lucky and to have a joyful life.
What is something cool you’re excited to have learned recently?
Well I can’t say I have learned it yet, but I am on my way to getting a handle on OpenCL. I have done a good amount of GPU programming in the past in the form of HLSL/GLSL shaders, but never used a GPU for general purpose computing. I started on this cause I felt like I was at a bit of a disadvantage when it comes to developing NERVA. Perhaps by getting more familiar with the language used to program mining devices, it will better inform the decisions I make to combat them. Got to know your enemy. That gets me excited, but then learning new things in general gets me excited, so maybe I’m just a bit strange. lol
How can we help with the progress of Cryptonight Adaptive and NERVA?
The main thing I need help with is building a community of likeminded people, raising awareness and increasing NERVAs social media profile. While I may be a diversely skilled programmer, I can’t figure out facebook. Lol. I have an account I have never posted to. Don’t have a twitter or any other social media accounts either. What I am writing here is most likely the most public I have ever been on the internet. Might be why I am drawn to privacy coins.
I am fortunate in that we have some great community members stepping up and moderating a twitter and Reddit page, we also have some very talented graphics guys putting ideas together for a new logo and website. All outstanding work, but we could do with a bit more exposure. Follow our twitter, link this, mention our name, mine a few blocks and trade some coins on TradeOgre. Buy some and hodl it for a couple of years. Use NERVA and get involved. Get your friends involved. Fork NERVA and give us a shout out. Even get on discord and tell me I’m doing everything wrong. Doesn’t matter. Growing our community and showing that NERVA is not just another scam coin, not just another Cryptonote coin, that we actually have a reason to exist. That is truly the best way to help out.