💾 Archived View for tilde.team › ~aprilnightk › gemlog › 2022 › 05 › 23-hafnium.gmi captured on 2022-07-16 at 14:06:26. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2022-06-03)

➡️ Next capture (2023-01-29)

-=-=-=-=-=-=-

Main page

Back to gemlog index

Hafnium Paging Protocol portal

2022-05-23 - My hobby alternative to Gemini, HTTP and Gopher: HFNP (Hafnium Paging Protocol)

Hi! In my previous post, I wrote about my terminal game server project.

My new project: Jeuxterm (online games in terminal)

There's been no news on this because I realized one thing: what I was making was in fact not just a text-based game app. It quickly turned into a completely new protocol for text-based websites, and Jeuxterm will be just one of the sites in this new network.

I will quickly go over the basics of the projects. You will find a separate page dedicated to it here:

Hafnium Paging Protocol

Disclaimer

Before you criticize me for making "one more protocol which doesn't solve anything" or "trying to hijack other protocols' user bases", please think about the following:

Last, but not least: this isn't a professional-level project. I do it in my spare time. There may be errors, glitches and dragons. It's under heavy development now so things may break, change, or cease to operate. But I really hope that, as it matures, someone somewhere will like it just as I do.

Goals (and differences to Gemini)

Here's what I wanted my new protocol to have in its' arsenal:

Quasidomain name system

This is a totally original feature of the protocol.

Generally, to associate a name to your website, you need to buy a domain name, to make the DNS-server system know about it. Then the clients resolve your domain name to an IP.

I wanted to find a way to bypass the need to use DNS, and still be able to associate names to sites. What I came up with is a bit clunky, but it does the trick.

In HFNP, traditional domain names don't work. Instead, you have a "quasidomain name" that consists of a given server name and a quasidomain appendix.

An appendix is an 8-symbol sequence, which is derived from the XOR of the following values:

1) first 6 bytes of the SHA-256 hash of the given server name.

2) 4 bytes of your IP + 2 bytes representation of your port number.

This operation is reversible: from your server name and appendix you can retrieve the original host IP and port number.

As an example, the only currently operating HFNP-site is running at 193.164.149.68:9777, and it's called "hafniumpaging".

Its' quasidomain name is hafniumpaging.8Ig4sHZ6. The eight symbols of the appendix - "8Ig4sHZ6" - contain all that's needed to retrieve the IP and the port number without the need for any external database. They're a bit uglier than top-level Internet domains, but they're free and independent.

(Yeah, I know this only works with IPv4. I'm thinking about it. Nothing forbids this system from IPv6 too, but the appendices will be a bit longer, unless I come up with something clever.)

What it looks like?

Here's a screenshot of the hafniumpaging.8Ig4sHZ6 index page as displayed by the HFNSurf browser:

Screenshot

Try it out

The Hafnium Paging network now only consists of one website: the project homepage. It contains a more in-depth handbook of the protocol, which is a work in progress.

If you want to try it out, here's what you do:

1) Download the latest version of HFNSurf browser here:

HFNSurf Browser

To run it, you just need python3, no dependencies needed. It's a simple CLI app, doesn't even use curses.

2) Read the instructions within the browser. Visit hfnp://hafniumpaging.8Ig4sHZ6/index and look around. (UPDATE: This link is deprecated.)

Links

The source code of Hafnium itself and HFNSurf Browser too are available here:

(HTTP) Hafnium repository

(HTTP) HFNSurf repository

Contact

If you're interested in using or participating in development of this protocol, if you have some feedback or just want to let me know what you've liked or disliked about it, please drop me a mail!

aprilnightk@tilde.team