These instructions generates a signed proof of ownership of a public key. Please be careful about using other software or giving away your private key to others, as they would be able to generate proofs on your behalf. Handshake is an experiment in decentralized allocation of ownership of the network to the open source community. If this model is successful, people may replicate this distribution model in distribution of ownership to Open Source Developers and Organizations, giving away your private key prevents you from claiming on other systems. This HNS airdrop is a native limited resource used to register top-level domains and usernames (a limited resource is needed in decentralized naming systems, as a single bad actor would register all useful names in existence if no limited resources existed).
This page explains how github developers with over 15 followers on February 2019, or in the PGP WoT Strong Set can claim HNS. Being able to claim does NOT imply that one is a "top open source developer", this system was optimized for a list of previously scrapeable keys (and could not be modified after the Handshake network launches without a hard fork).
Please read through these instructions carefully, as using cryptographic blockchains are a bit unusual.
Make sure you have nodejs and npm installed first. On MacOS, please install homebrew and run "brew install node". On debian/ubuntu, you can run "sudo apt-get install nodejs npm build-essential". If you run other distributions or OSes, you can probably figure this part out.
Next, install node-gyp: npm install node-gyp
Download hsd, hs-client, and hs-airdrop from https://handshake.org/download/. If downloaded from github, the directory structure is slightly different (hsd-2.0.2/hsd should be replaced with just hsd in these instructions).
Extract hsd, hs-client, and hs-airdrop: tar xvf hs*
You may also verify the asc file if desired.
In one window, change into the hsd directory and install cd hsd-2.0.2/hsd and then run npm install --production.
In the second window, change into the hs-client directory and install cd hs-client-0.0.8/hs-client and then run npm install --production
hsd is the handshake fullnode and will sync with the network
To connect, in the first window run: ./bin/hsd --log-level info
Get your address
To claim your airdrop, you need an HNS address to send the coins to. To generate one, in the second window run:
./bin/hsw-cli account get default | grep receiveAddress
You should see a string of random looking characters beginning with hs1. The entire string inside the quotes is your public address (this address is public and can be shared). Copy this address and save it
To save a copy of your private key, write down the output of the 12 word phrase on a piece of paper (do not save it in the cloud anywhere): ./bin/hsw-cli master | grep phrase
Claim your HNS
In the second window, go to the hs-airdrop directory and install hs-airdrop:
Then install the dependencies: npm install --production
Check if your key is in the airdrop. Replace id_rsa with the location of your key you want to check and the hs1XXXX string with the public address you generated earlier. Please see the hs-airdrop README.md file for more information.
./bin/hs-airdrop ~/.ssh/id_rsa hs1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This may take a while, as it is trying to find and decrypt a message to your key. If successful you should see a base64 string. A NonceError means your key was not included, you can try another key.
If you have a base64 string, you can broadcast it to the network by going back to hs-client (cd hs-client-0.0.8/hs-client) and typing (replace BASE64_STRING with the string dumped from hs-airdrop): ./bin/hsd-cli rpc sendrawairdrop BASE64_STRING
You should see it return a hex hash if successful. In an hour or two you should see it propogate over the network. You can see the updated balance by running: ./bin/hsw-cli balance
You can also try searching for your hs1 address balance by googling/searching: hns block explorer in your web browser and pasting in your hs1 address.
Bidding on names
After about a day for the redemption to clear on the network, you can use your HNS to register top-level domains (which could also be useful for usernames on systems which use Handshake). Replace NAME with your desired name. Please see the documentation on auctions and protocol summary for more information.
Name status (week in which it will be released if not yet available): ./bin/hsd-cli rpc getnameinfo NAME
Open for bidding (if name is not being opened): ./bin/hsw-cli rpc sendopen NAME
Send bid (5 is an example bid amount and 10 is your blinding mask, see documentation): ./bin/hsw-cli rpc sendbid NAME 5 10
Reveal bid (YOU MUST REVEAL AFTER BIDDING IS CLOSED WITHIN 10-BLOCK-DAYS OR YOU WILL LOSE YOUR COINS, SEE DOCUMENTATION): ./bin/hsw-cli rpc sendreveal NAME
If lost auction, refund coins back to yourself: ./bin/hsw-cli rpc sendredeem
Get a list of all names and the current state: ./bin/hsd-cli rpc getnames
See the documentation on more commands, such as renewals which must be made at least every two years.
Try googling/searching for hns block explorer or looking on an HNS Exchange for a list of bid blinds and bid status of names.
The state of auctions are as follows: OPEN (first ~six hours, cannot bid), BID (~five days, anyone can place bids), REVEAL (~ten days, you MUST reveal your bid or you lose your bid HNS), REDEEM/REGISTER (refund your money or update the DNS record, no time limit for REDEEM). This takes a long time to secure the network, while it is possible to make it fast, true decentralized systems must "confirm" chain states over time and therefore HNS biases towards security and correctness. Selecting instant redemption would be a foolish endeavor (as someone can claim high-value names cheaply) and fast auctions would prove inaccurate or increased vulnerability towards censorship attacks.
Handshake is a decentralized naming network with the majority ownership of initial coins are distributed to open source developers with available scrapeable keys. Certain kinds of decentralized systems were not historically possible as some entities could overwhelm the network and claim all the resources (in this case, register all names). Handshake is an experiment in distributing majority ownership to the open source community of this network as a method to bootstrap a decentralized network with limited resources, to prevent griefers taking up all the resources. It is hoped that this system could be used as a method wherever decentralized key authentication of names is needed (e.g. decentralized web applications where an association between a name and a cryptographic key proving ownership of that name). In other words, an association between keys and names create the potential for the decentralized web by allocating cryptographically provable resources to names. This could be used to prove the owner of a name published a document, and distributed across a decentralized network. The more applications using this system to secure/prove documents in a decentralized way, the higher the useful aggregate economic/social value of registered names on Handshake (Metcalfe's Law).