Maintainer Monologue – The Skycoin Packages

Full disclosure- I do not work for skycoin. The packages I’ve created and submitted to the AUR are officially sanctioned by the team but maintained by me.

Checking back to the submission date for the skycoin package in the AUR, it was only 8 short months ago when I first cloned an empty AUR repository named skycoin, and pushed the PKGBUILD and .SRCINFO for what was, at the time, the skycoin wallet v0.25.0.

skycoin-latest web interface – 127.0.0.1:6420

Skycoin is a third-generation cryptocurrency, written in Golang, which demonstrates a significant improvement in every metric when compared to bitcoin. Despite this, it’s actually one of the oldest cryptocurrencies. Synth, the founder of skycoin, was in fact one of the original bitcoin developers. He worked in the same group with Satoshi Nakamoto at the time. While he will not reveal the identity of Satoshi, he has confirmed that Satoshi was deceased before bitcoin became, arguably, the most popular and widely used cryptocurrency.

Skycoin features a 300 milisecond block time, so no waiting 15 minutes or more for block confirmations like with bitcoin. It’s also essentially free from transaction fees by virtue of it’s derivative currency; skycoin’s coin-hours. More on that soon.

This was not the first skycoin github repository I had packaged, and it certainly wouldn’t be the last.

https://aur.archlinux.org/packages/?O=0&K=skycoin

The first one I did, and the first package I ever created, I think was the skycoin-font package. That was easy enough, but my real endeavor in the beginning was to create a package for another skycoin github repository: Skywire.

a local instance of skywire’s manager UI (testnet) – 127.0.0.1:8000

Skywire is perhaps the most ambitious project in the skycoin ecosystem. It’s aim is to create a meshnet VPN, the backbone for a new decentralized internet which is peer-to-peer and uncensorable. This is also the primary use case for skycoin’s coin-hours, which are intended to be used for bandwidth payments in the mainnet implementation of skywire.

socks5 proxy endpoints

Skycoin is unique in the cryptosphere mainly because of their hardware projects. Skywire is one of them. The (official) skycoin ‘skyminer’ consists of 8 Orange Pi Prime SBCs. There are also many varieties of antennas which are being actively developed and tested for use in the wireless meshnet.

Synth, skycoin’s founder (right) showing off a ‘skyminer’
My ‘skyminer’ – reconfigured into a rack-mount chassis with the help of a friend

(I personally think the term ‘miner’ is a bit of a misnomer. I prefer to call this a ‘cluster’ or ‘node array’)

I acquired an official ‘skyminer’ during their initial release in 2017. Configuring the thing was quite difficult. Finally, some custom armbian-based images were released for these boards. Before I got hold of these images, I had learned the process for manually building the skywire binaries and creating the needed scripts to make running skywire much easier. Still, I longed for a better way to set up the software on the system. I really wanted to know the right way to do it.

SSH session to the skybian (customized armbian) image

I had already been an Archlinux user for a while, and had a great appreciation for the AUR. But I didn’t know so much about packaging. All I really knew was that there was something unique about the Arch-based distros I had been using (Portergos and Antergos at the time). Mainly, it seemed like installing software was different compared to the Debian & Debian-based distros I had grown weary of. Synaptic was always confusing, and basically anything I might download and run on Debian felt like it was just placed there in the system.

With the armbian images provided for the skyminer, skywire was set up in /usr/local. When I checked on how this should be done in Archlinux, I found an explicit warning against using that path in packages. After some consideration, I opted for an installed location in /usr/lib.

Another advantage (the main advantage) of using Archlinux for creating skywire and the other skycoin packages- the latest version of Golang is available as a package! When I started out, Golang was only available from the AUR, but it’s been moved to pacman’s community repo since then.

It took several weeks for me to figure out how to package skywire. All of a sudden, it seemed, things just started to make sense. Once I tested and verified the created package was working, I uploaded it to the AUR and essentially reduced the effort to build from the latest source code and install (or update) skywire (with the help of yay) to one command:

yay -S skywire

Skywire is (for me) a suitable free substitute for a paid VPN service. The testnet implementation is a socks5 proxy which, at one point, boasted over 10,000 endpoints in dozens of countries. I use it daily, and you can start a local instance with:

skywire

Navigate to 127.0.0.1:8000 to access the skywire manager’s web interface.

When you connect to another node, in order to use the proxy, you’ll want to configure proxy settings in your browser or browser plugin with 127.0.0.1:9443. With waterfox / firefox, this can be set in the ‘network’ tab at about:preferences#advanced.

proxy switching plugin for chrome-based browsers with skywire local instance settings shown

It’s also possible to use it as a proxy for the shell with:

export HTTP_PROXY=socks5://127.0.0.1:9443

Packaging is not that difficult when you get the hang of it. After these months of effort, a systems engineer working on skywire had started listening to and taking seriously some of my concerns about updating software without using the package manager potentially breaking my packages. He encouraged my efforts to come up with a solution using archlinuxARM images for various SBCs (skyminer nodes) which I hope to complete soon.

I started out creating these packages just to make things more convenient for myself. An added bonus was the possibility others might benefit from them as well. Then I kept going, kept packaging evermore difficult repos because I liked the challenge. Perhaps a larger opportunity will come of this? Only time will tell.

One of the most striking similarities between Skycoin and Endeavour- both projects have developed a friendly community of enthusiasts around them. I would invite those who are interested to visit the Skycoin Telegram channel: https://t.me/Skycoin

I extend a similar invitation to my friends in the Skycoin community to check out what is, in my humble opinion, hands-down the best actively maintained operating system available – EndeavourOS.

Lastly, I would like to mention a few non-skycoin packages I’ve created along the way. If you have a bitcoin full node running and want a self-hosted payment processing solution, you should check out the btcpayserver and nbxplorer packages in the AUR. I also ‘rescued’ the working part of the broken btcd AUR package when I created btcd-git; a bitcoin fullnode implementation written in Golang.

I encourage every Archer to try your hand at packaging, if you can find the slightest excuse to do so. It’s a rewarding and fun challenge. Get involved and create or adopt AUR packages. I hope to soon post another article on some of the more nitty-gritty details of packaging for beginners.

Follow us:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: