Storj gives error: daemon is not running, try: storjshare daemon

I had an annoying issue while trying to start my Storj node. I have a Raspberry Pi3 with a 120GB SSD drive connected trough usb. Sadly, while starting the daemon and the node seemed to work, I kept getting the error: daemon is not running, try: strojshare daemon.

It seemed that this was caused by not having the correct permissions set which made the Storj client unable to write data to the connected SSD.

To fix this annoying ‘daemon is not running, try: storjshare daemon’, you should be setting the right permissions on your external drive. How? Read on below.

First (if you haven’t done already) you need to format the drive with. At ssd enter the desired name for the volume. In this case, I chose for ssd so it’s easily recognizable for me in the list of drives.

sudo mkfs.ext4 /dev/sda -L ssd

Next, you will mount the drive. This is done by entering the following commands in your shell. At /mnt you can enter your own desired mountpoint. In this case I chose for /mnt.

sudo mount /dev/sda /mnt

Then you need the correct permissions on the drive. To do this, you should enter the following. Pay attention that you point to the correct mountpoint that you set in the last step  though.

sudo chown pi:pi /mnt
sudo chmod 777 /mnt

Fixed the: daemon is not running, try: storjshare daemon

If followed the steps above correctly you now should have fixed the problem. You can create a new config using the following command.

storjshare create --storj=0x68245d58F0e0A55C4d55b0495315f507D1D82C07 --storage=/mnt --size=110GB --rpcport 5008 --rpcaddress xxx.xxx.xxx.xxx --maxtunnels 3 --tunnelportmin 5009 --tunnelportmax 5012

Set the parameters to your own desired values and don’t forget to forward the port on your router. Forward the port entered at –rpcport to your raspberry’s IP address.

Next you can start the daemon and the Storj node.

storjshare daemon
storjshare start --config /home/pi/.config/storjshare/configs/_the_name_of_the_config_file.json

Now the node should start connecting though the desired port and after a few seconds you can enter the status command to see if all is working well.

storjshare status

After a few seconds you should be presented with a table that shows the status of your Storj node!

storj daemon not running try storjshare daemon

Solving java.lang.ClassNotFoundException: [Ljava.lang.String]

While programming a Java application I encountered the following error when trying to start the application in a Jetty container:

java.lang.ClassNotFoundException: [Ljava.lang.String]

The main reason for this to happen was none matching Java versions but that didn’t matter for the moment. I needed to continue developing and didn’t want to bother with the Java versions at this specific time. After a bit of roaming the internet I found a solution. Add the following argument when starting Jetty. I had to use the set MAVEN_OPTS to get it working.

-Dsun.lang.ClassLoader.allowArraySyntax=true

After this Jetty started fine and I was able to run the application again without any problems! Hope this will help someone else as well.

Increasing PermGen space with mvn jetty:run

Just a problem I ran into at work. For some reason our application got an error:

“java.lang.OutOfMemoryError: PermGen space”

Now it’s not so hard to figure out what the problem is. It’s right there. The application ran out of memory, and in this case the ‘permanent generation memory’. This memory is used for the meta data of objects, like names and fields of objects, constant pool information, object arrays and other stuff. With newer Java applications (Java 8 and higher) the PermGen space is replaced by something called the Metaspace. Practically the same thing but this one automatically increases in space! The older PermGen space did not increase automatically and this was causing our specific issue.

The problem has to be solved of course, but I had to get the application running first and wanted to solve the problem later.

Normally this would easily been fixed by giving the JVM some arguments to increase the PermGen space like this:

-XX:MaxPermSize=128m

Sadly, this didn’t work for us, as the application is started with the command mvn jetty:run. We tried to give these arguments to the JVM through the pom file but this wasn’t successful either. So now what?

Well, after a lot of searching which I hope I can save you by giving this answer, we found a solution:

set MAVEN_OPTS=-XX:MaxPermSize=512m

and after that run the application by entering:

mvn jetty:run

This increases the memory so that you are able to run the application, but it does not solve the actual problem as something is creating a memory leak which fills up the complete PermGen space.

Waar komt de Blockchain vandaan?

In oktober 2008 verscheen een research paper met de naam: ‘Bitcoin, a peer-to-peer Electronic Cash System’ van Satoshi Nakamoto. Enkele maanden later, in januari 2009 heeft deze zelfde persoon de Bitcoin software uitgegeven en zo werd de Bitcoin blockchain geboren. Tot op de dag vandaag is echter onbekend wie deze Satoshi Nakamoto is, en weten we niet eens zeker of het wel om een enkele persoon of om een groep gaat. Hij heeft meegewerkt aan het project tot half 2010 en heeft toen alles overgedragen aan de open source community.

De uitvinder van de Bitcoin blockchain heeft een bericht achtergelaten in het eerste block van de blokchcain. Hierop staat ‘The Times 03/Jan/2009 Chancellor on brink of second bailout for banks’. Dit refereert naar een kop in de Financial Times van 3 Januari 2009. Dit geeft aan dat de Bitcoin in ieder geval niet oud is dan die datum, en hoogstwaarschijnlijk vanaf die datum online is.

Bitcoin

De Bitcoin blockchain is het netwerk, waarop Bitcoins worden ‘gemined’ en verhandeld. Bitcoin is een digitale vorm van een munteenheid en zijn prijs wordt bepaald door vraag en aanbod. Net als bij ‘normale’ munteenheden zoals de dollar en de euro. Hierbij is bij het begin van het netwerk vastgelegd hoeveel Bitcoins er in totaal over de gehele levensduur van het netwerk kunnen worden gemined. Hierbij is het ‘minen’ het: ‘leveren van rekenkracht die wordt gebruikt om het netwerk veilig te houden, voor een mogelijke beloning’. Hierbij zal een computer die verbonden is aan het Bitcoin netwerk constant transacties van andere computers in het netwerk valideren door het oplossen van ingewikkelde algoritmes. Wanneer een zogenaamd block van de blockchain volledig is gevalideerd komt er een beloning vrij van een aantal bitcoins welke word toegekend aan degene die het block heeft gevalideerd. Iedereen kan er aan deel nemen, een digitale portemonnee aanmaken en bitcoins minen of verhandelen.

Tot begin 2013 was de technologie nog redelijk onbekend, en had het grootste deel van de mensen er zelfs nog nooit van gehoord. Echter ging het vanaf dat moment ineens kei- en kei- hard. Nadat WordPress in 2012 al was begonnen met aannemen van Bitcoins als geld, volgden in 2013 een groot aantal andere grote websites en bedrijven. Doordat de Bitcoin ineens ook aandacht kreeg bij het publiek ontstond er een grote vraag naar Bitcoins wat de prijs dat jaar opdreef tot op zijn hoogtepunt van $1,242,- dollar per Bitcoin op 29 November 2013. Daarna is de prijs ingestort, om vervolgens op te klimmen tot telkens nieuwe recordhoogtes.

Blockchain

Blockchain is de technologie achter de bitcoin en vele andere digitale valuta’s, ook wel cryptocurrencies genoemd. Satoshi Nakamoto is de grondlegger van de technologie door het uitbrengen van de Bitcoin. Wat blockchain technologie precies is zal te lezen zijn in een andere post.