Introducing SPIDAR [SPIDR]

Hello everyone. My name is Wessel, a 30-ish years old guy living in the Netherlands. I just came across this section of the forum and decided to introduce myself.

A little bit about me: I’ve studied computer science at Utrecht University and after obtaining my BSc began doing the master’s computer science programme there. Though the master programma was interesting, it was not for me. Courses on how to optimize compilers were very interesting and challenging, but just not something I was interested in. So after finishing two courses, I decided to quit the master’s programme. I’ve always been a little bit more of a hands-on person, and this specific programme did not fit that part of me.

Since then I’ve been working as a software developer/all-round geeky person profesionally for the past 7+ years. I have always wanted to know how things work (ISTP personality), enjoying very much taking mechnical/electrical stuff apart. I guess this is what also translates into my passion for software. Especially knowing and managing the entire ecosystem of a piece of software, such as the code, places it runs (servers, network infrastructure) is very satisfying to me. I have been running various internet services in a hobby-like fashion for the past 15~ years now.

University is what first introduced me to Haskell, it being a mandatory course in the first year. The functional programming paradigm is so powerful it has always interested me. It’s a shame I did not really get to use it in a professional setting, however I’ve been enjoying Java 8’s functional aspects and definitely putting my Haskell knowledge to use there. Interacting with the real world (hello Monads) is still one of the more complex tasks in functional languages, where everything should always evaluate the same based solely on inputs, not state!

This brings me to Cardano, which I discovered only early this year. I had some experience with cryptocurrencies, but that was mostly back in 2013 when mining <1 BTC on a graphics card. After discovering Cardano and reading about it, I was impressed to read it is written in Haskell! There is not a lot of software that I come across that is written in Haskell. Knowing how amazingly powerful (1-line Fizzbuzz) it is and how difficult Haskell can be triggered my interest even more. Long story short: I believe in Cardano laying down a new foundation for the future of cryptocurrencies and decided I should get involved.

Reading the documentation, it was pretty straightforward to get the stake pool up and running in a few hours. By doing so, I hope to strengthen the Cardano network. The more nodes without ill intent, the better I guess. This is the main goal of my pool, to strengthen the network.

If the pool gets going and rewards come in on a regular basis, I plan on using this to further strengthening digital privacy online. Initially by expanding my Tor presence. I have been running Tor (torproject.org) nodes for the past 10 years. My current Tor node has a guard probability of around 0.1% and middle probability of around 0.05%, which means I’m serving a pretty good chunk of Tor users worldwide (~2TB traffic/day). There is a rougly 1 in 1000 chance a Tor user will select my node as their guard.

Below you will find the information about my pool as per the template.

Pool infrastructure

Except for the cloud relay, all hosted on dedicated machines owned by me.

  • Block-producing node: Intel Core i5 @ 2.6 GHz (4 threads), 16 GB ram, Ubuntu 20.04 LTS
  • Relay 1: Intel Core i7-7700T @ 2.4 GHz (8 threads), 32 GB ram, Ubuntu 20.04 LTS IPv4 + IPv6, 500/500 Fiber, very low latencies, commercial grade router able to handle up to 1 million concurrent connections.
  • Relay 2: Intel Core i7 @ 2.8 Ghz (8 threads), 16 GB ram, Debian 11 (Bullseye, testing) IPv4 + IPv6, 100/30 DSL
  • Relay 3: B2ms instance hosted in South Africa with Microsoft Azure. 2 vCPU, 8 GB ram, Ubuntu 20.04 IPv4

Pool redundancy

Currently I have three relays, one of which is on the same LAN as the block-producing node. Two relays are also IPv6-enabled, which adds another layer of redundancy, even though IOHK does not currently list AAAA records for the relay DNS names :(.

Block-producing node has battery backup with 4G failover. I do daily rsyncs of the block-producing node to another location. If there is any unforeseen disaster, I can easily start it up elsewhere.

With regard to regular maintenance, I make sure to check leaderlogs for every epoch and any updates/restarts that need to happen will not take place during slots which I have been assigned.

Operator experience

I have 15+ years of experience running services such as IRCds, ntpd, Apache httpd, nginx, dovecot, postfix, Tor, and various databases. Apart from that I’ve been using various Linux distros as my main operating system for the past 10 years. I feel very much at home on a shell terminal and feel lost when using Windows :P. I have a strong understanding of how systems and networking work. I am an early adopter of IPv6 since and have been IPv6 enabled since 2011, when XS4ALL became the first internet provider to give out IPv6 to consumers addresses in the Netherlands. So the pool is completely future proof in that regard. Apart from that I’m also knowledgeable in Haskell and hope to debug/troubleshoot any issues I come across (such as this one).

Why should users check out my pool?

You should check out my pool if you also feel digital privacy is being threatened and would like to stake your ADA with a party that hopes to strengthen this in some way.

I hope to build a reputation of a pool which is technically sound, and does not add much frills other than that. Consistent performance and putting my energy into strengthening Cardano and supporting digital privacy is my long-term goal. Apart from that I support planting new trees every month at tree-nation. Some of the rewards might also be used to plant more. Check out my forest here.

You can check out SPIDR’s block height over at pooltool.io, since I export the block-producing’s node block height. It will also show you average propagation times of blocks to my node. These two are good indicators of a pool’s health.

Finally, I made sure my two IPv6-enabled relays have dorky IPv6 addresses :nerd_face:, very convincing no?

image

If you have any questions, feel free to reach out. Thank you for taking the time to read through my introduction!

2 Likes

Welkom Wessel en veel succes met je pool!

Bedankt Vahid, jij ook. :slight_smile:

1 Like

How do you like the Azure performance? I am evaluating various cloud providers for my pool. I’m also trying to decide on the various chip/ram options.
If Azure I’m looking at the B4MS or the Ddv4.

Seems fine for the purpose of running a Cardano node. For a relay I wouldn’t worry about much higher than B2ms unless it’s your only relay. This is last 7 day CPU/network/disk usage:


mem:

$ free -h
              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       6.1Gi       151Mi       1.0Mi       1.5Gi       1.4Gi
Swap:            0B          0B          0B

Also system load is 0.02-0.03 average, so really overkill. The spike you see where system load went to 1 was just a reboot. Grafana prometheus dashboard:

image

image

For block-producing I think E2v4 (2 cpu 16 ram) might be more useful than the B4ms or Ddv4. I barely ever see CPU spike very high on my dualcore block-producing node. More RAM is more useful than 4 cores I feel.

1 Like

Very interesting. Thanks very much. I hadn’t considered using different chips for relay and BP.

1 Like