【HNS】試着領一下 HandShake 爲開源社區發放的 HNS Coin

0x00 前言

最近呢,開源社區除了這麼一件事:
《@ 開發者,這個 GitHub 項目可以褥羊毛》
簡單概述一下其大致意思呢就是:

GitHub 有一個區塊鏈項目 Handshake 正在面向 GitHub 上前 25 萬名開發者派送 4,246.99 HNS 幣。大約價值 1358.56 美元,換算成人民幣則是差不多近 1 萬元人民幣。

那麼,這裏所謂的前25萬,它們是如何判定的呢?

The top ~250,000 users on github have had their SSH keys and PGP added to a merkle tree. Out of those ~250,000 users, ~175,000 of them had valid SSH and PGP keys at the time of tree creation.

簡單來說,它們在2019年2月4號做了一個快照,在這個時間節點,所有 Followers 數量大於15的用戶的 SSH Key(大約17.5萬人)都被記錄在案。

If you had 15 or more followers on github during the week of 2019-02-04, your github SSH & PGP keys are included in the merkle tree.

0x01 驗證

我似乎是滿足條件的,雖然從來不逛幣圈,莫得虛擬貨幣錢包,但是還是想留一個證明,證明自己是被HandShake認可的開源社區開發者中的一份子。

環境搭建

首先去 官網 下載最新的 NodeJS,這裏需要不低於 8.0.0,
因爲這個驗證程序是需要用 8.0.0 以上的 NodeJS 來做加密/解密來判斷你是否符合條件的。
下載好之後,是常見的 clone 與安裝操作:

git clone https://github.com/handshake-org/hs-airdrop.git
cd hs-airdrop && npm install  

執行驗證

驗證的這一步需要你有自己 Github 的 RSA Key,和一個虛擬貨幣錢包,我自然是沒有錢包的,於是去 https://www.namebase.io/airdrop 綁定 Github 討了一個。
那麼驗證的格式是什麼呢?

./bin/hs-airdrop <path to key> <address> <fee>  

這裏的 <path to key> 是指你的 RSA Key 的路徑,如果沒有像我一樣刻意改名,大多數人這個路徑應該都是 ~/.ssh/id_rsa
然後 <address> 則是錢包地址,這個地址如果自己有可以直接填寫,如果沒有,在提交證明的頁面上,綁定Github之後,會給你生成一個,例如我剛拿到手的是 hs1q6q3dw67v6fw4dy...epvlvqn0lzwjevmxc 長得像這樣的一個字符串
最後的 <fee> 聽說是小費?官方讓我們默認寫 0.010,如果是在送的幣裏面扣那應該是沒啥問題。
綜上所述,一個可行的驗證指令就是:

./bin/hs-airdrop ~/.ssh/id_rsa hs1q6q3dw67v6fw4dy...epvlvqn0lzwjevmxc -f 0.010    
OR
node ./bin/hs-airdrop ~/.ssh/github_rsa hs1q6q3dw67v6fw4dy...epvlvqn0lzwjevmxc -f 0.010  

下載驗證文件

我是實在搞不定Github的下載呀,怎麼會那麼慢還老是斷呢?那我下載不下來驗證文件就只能止步於此了麼?
纔不!
我們在編譯後的bin/hs-airdrop第120行左右發現了下載相關的部分:

if (!await fs.exists(file)) {  # L120
    const url = `${GITHUB_URL}/${path.join('/')}`;

    console.log('Downloading: %s...', url);

    const req = await request({
      url,
      limit: 100 << 20,
      timeout: 10 * 60 * 1000
    });

    const raw = req.buffer();

    if (!sha256.digest(raw).equals(checksum))
      throw new Error(`Invalid checksum: ${base}`);

    await fs.writeFile(file, raw);

    return raw;
  }

  const raw = await fs.readFile(file);

從中我們可以看出,如果你有這個文件了,那它就不會去下載了,我們轉而來到 ${GITHUB_URL}/${path.join('/')} 所指向的 hs-tree-data 頁面直接把這個項目整個下載下來。繼續閱讀bin/hs-airdrop可知存放位置在本地的 ~/.hs-tree-data,把下載下來的這個項目整個放進去,即 nonce 文件夾在 ~/.hs-tree-data 的下一級。

得出結果

那麼假如你的 RSA Key 確實是一個 Github 前25萬名開發者的 Key,比如我的,那麼你會得到這樣的信息(隱私起見,進行了去敏感化處理),將末尾的Base64字符串填寫到 提交頁面 末尾的框內就可以啦 :

Attempting to create proof.
This may take a bit.
Decrypting nonce...
Found nonce!
Rebuilding tree...
Finding merkle leaf for reward 0...

4 keys found in your subtree:
  3f07...
  eb46... (current)

Creating proof from leaf 171048:7...
Signing proof 171048:7...

JSON:
{
  "index": 171048,
  "proof": [
	...
  ],
  "subindex": 7,
  "subproof": [
    ...
  ],
  "key": {
    "type": "GOO",
    "C1": "61e3..."
  },
  "version": 0,
  "address": "d022...",
  "fee": 100000,
  "signature": "21a8..."
}

Base64 (pass this to $ hsd-rpc sendrawairdrop):
KJwC...

0xFF 後記

個人而言,我還是不太信任虛擬貨幣,一點是這個fee不知道是不是要預付,另一點是這個賬戶不知是否需要維護費用之類的,最重要的是,目前美國以外都無法提現轉出,我忙活半天連個雞腿都吃不到,所以最終還是沒把這串東西傳上去。
重要的是,我是這羣人中的一個~ 以後用來吹吹牛還是可以的!

發佈了295 篇原創文章 · 獲贊 81 · 訪問量 44萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章