• Gemini protocol powers the small internet​

    12/18/2022 at 23:44 0 comments

    P.S. I do not have a leading picture for a hackaday tip. Please ask your artist to draw some nifty illustrations.

    P.S. tags: gopher, tilde, small internet, gemini, bloated internet, grassroot movement, fediverse, new retro, minimalism, privacy, web, protocols

    [title] Gemini protocol powers the small internet

    Modern world wide web is kinda overloaded, over-featured, sometimes very slow and unusable, and people complain about it. (https://medium.com/swlh/the-web-is-becoming-unusable-e7aec886402f )

    For developers it means that web will become harder to maintain and less reliable. The famous sermon explains (https://www.stilldrinking.org/programming-sucks ).

    Humanity is always trying to improve things, hack around, add more features to the things and so on. This is considered to be a good thing, unless it goes too far and becomes a nightmare.

    If only there was a way to implement a new simple and minimalist standard for a web that restricts extensibility - on purpose - to keep technical complexity under control...

    [header] Back in time...

    Well, at the beginning, it all was manageable. Once, there was a Network - a bunch of computers that were connected together using a wire, and were able to send arbitrary data to each other. So there was a need to set up some rules for computer programs to communicate via the Network. Hypertext Transfer Protocol (HTTP) was invented to serve this purpose. Now every program that speaks HTTP can connect to another program and retrieve a web page. HTTP headers take care of text encoding, data compression etc. And the web page itself was composed using Hypertext Markup Language or HTML for short.

    Among other things, HTML allows to turn certain elements on the page into hyperlinks. User can select such part of page, activate it using mouse, and this will lead him to another web page. Hence, it is named Hypertext, because it allows linking web pages with each other. This was the key feature for people to start building electronic knowledge bases and rely on it.

    HTTP was not the only protocol back then to serve the content. There was a Finger protocol (it is another story https://en.wikipedia.org/wiki/Finger_(protocol)  ), and a Gopher protocol.

    Gopher is a minimalistic tool to retrieve text and other files from other computers over Network. Like HTTP, it allows user to navigate between different pages using so called selectors. But it has its own taste about content handling. Each element of the page must reside on its own line by design. This results in a nice uniformly structured text which can be navigated in a menu driven fashion.

    HTML on its side allows to place HTML formatting tags right into text at arbitrary place with arbitrary nesting and combination. Also it allows to implement new tags with new fancy features without breaking everything else. HTML was open for add-ons and improvements. And that is why HTML wins the battle against Gopher.

    Shortly HTML was accompanied with ECMAScript (or Javascript) that runs on client side and modify page content on the fly, and then CSS (Cascaded Style Sheet) that is used to fine-tune the fonts and colors of the page. Now it is an ultimate tool that can handle almost everything starting from a computer game or video-chat, and it continue to evolve, and no one knows where it stops.

    Gopher did not evolve. It still transfer pure text to the user that run antique client program to view it. The good thing is that Gopher has little ads, no popups, no interactive content except selectors, and it is very optimized for old hardware. At the same time it is an obsolete protocol that lacks some essential things e.g. encryption.

    [header] So, how do we fix it?

    In 2019 anonymous hacker known as [Solderpunk] proposed a new protocol called Gemini. https://en.wikipedia.org/wiki/Gemini_(protocol)

    The protocol is initially inspired by Gopher, but it is a bit different:

    • It has word wrapping, so it does not look ugly on small screens
    • At the same time one can mark...
    Read more »

  • Bitcoin FAQ

    07/24/2021 at 20:08 0 comments

    What is Bitcoin?

    Cryptocurrency invented by anonymous author in 2008. White-paper is here: https://bitcoin.org/bitcoin.pdf

    How does it work?

    I will use analogy (copy-pasted from lurkmore.to/Bitcoin) to explain this. Imagine a golden coins with teleport built-in and public log of transactions.

    There is no better analogy than that, so I will explain it in more detail:

    • Golden coins - because overall count of bitcoins is fixed to 21 mega coins. New coins can be earned with slow speed via mining. Mining will completely stop in some point in future.
    • With built-in teleport - because, like BitTorrent, it is hard to block bitcoin during it's distributed nature.
    • And public log of transactions - because each node stores full list of transactions done since start of bitcoin network, forever, and this list is available for reading to anyone.

    Bitcoin is opensource. It is based on opensource cryptographic functions (ECDSA for keys and SHA256 for Proof-of-Work).

    Is there any centralized control of this?

    No. It is distributed system. Let us compare the behavior of bitcoin and behavior of normal online pay system.

    User A sends funds using normal online pay system. His computer asks server something like this: "Hello, here is me, please, transfer 5 bucks from me to the user B". Server decides to complete transfer, or refuse to complete.

    With the bitcoins it goes different. User A creates a message like "I do transfer 0.0005 bitcoins to the user B". Than use private key corresponding to the wallet A to make a cryptographic signature. And send this signed message to every node. Each node decides on his own whether to include this transaction into list, or not.

    So, if you want to shutdown the normal online pay system, it is as easy as shutdown the server. With bitcoin network you have to shutdown the network, which is harder to perform.

    Bitcoin can suffer from "51 percent" attack. Another flaw is network segmentation in case of local internet disconnections when international internet lines are heavily filtered and censured (in near future).

    What is a blockchain?

    It is a way to protect public list from modifications. Sort of. If you modify a block, this will lead to block hash change. Any upper blocks become invalid and needs to be rehashed again.

    What is mining?

    It is a process of maintaining the network. Miners do create blocks containing new transactions and append it to the blockchain. Miners become profit from each block (new block reward + transaction fees). Proof of work is there to slow down the process of mining, so miners will not mine all blocks instantly. PoW difficulty gets auto-regulated so each new block comes circa each 10 minutes. If computing power (hashrate) rises, than difficulty rises too.

    How Proof-of-Work works?

    Easy. Block hash must contain leading zeros in it's binary value. The only way to find this hash is to hash it multiple times with various nonce each time until the right one is found. PoW can be useful in your other contraptions to reduce spam, for example.

    How many storage is needed to store the blockchain of bitcoin?

    356.1 GB at time of this post.

    How to create a wallet?

    Install some software. There are multiple opensource bitcoin clients for desktop. Electrum is a nice one. It does not need to store full blockchain, just the newest part. It will generate keys for you. No internet is needed to create a key. You can create as much addresses as you want. They will be empty, of course.

    How to fill wallet with money?

    Ask someone to send you bitcoins. There are a lot of people that change fiat money to bitcoin and vice-versa.

    Another possibility is mining.

    Do I need to keep my computer running to receive bitcoins?

    No. Only when spending.

    How do I spend bitcoins?

    You will need to enter destination address and quantity and press "send" button. Your software will make the rest. It will push transaction to the network. If other nodes see it eligible, they will...

    Read more »