粉絲如何刷出自己的存在感,例如在投票環節中,粉絲無法向他人證明本人的參與結果,組織方無法證明過程的公平性。近日,秘猿科技聯手口袋 48,在一場粉絲為愛豆投票的環節中,進行了有益的嘗試。?(???)?

hash 演算法

介紹實現過程前,我們先鋪墊下 hash 演算法。

簡單粗暴地講,任意長度的信息,經過 hash 計算後得到一個固定長度輸出。例如某種 hash 演算法可將任意長度的輸入信息變成一個 256 位的字元串。一部《葫蘆娃》藍光 200G,經過 hash 後變成 256 位的字元串,一首梁靜茹《勇氣》 5M 大小的 mp3,經過 hash 後也同樣變成 256 位的字元串。

hash計算有這樣的特點:?( ?ω? ?)

1、單向性,有 256 位的《葫蘆娃》 hash 值,不可能還原出《葫蘆娃》電影;

2、抗碰撞,找到一個和《葫蘆娃》hash值一樣的電影,幾乎是不可能的;

3、靈敏性,電台版與 Live 版的《勇氣》進行 hash 計算得出的值,差異巨大。

回到給愛豆投票的環節中,輸入的信息是投票信息,包含粉絲唯一的 ID 號碼,候選人,以及投票時間等內容。該內容我們進行 hash 計算後,進行如下操作:

1、得出粉絲的投票 hash 值,記為 vote-hash,向該投票粉絲公開;

2、一段時間內的 vote-hash 集合會通過某種方式組成一個叫做 Merkle Tree 的樹狀結構;

3、每個樹葉都是 vote-hash,每個非葉子節點都是其子節點的 hash 值之和的 hash 值。

4、vote-hash 最後在 Merkle Tree 中匯聚成一個樹根,也是一個 hash 值,該信息向所有粉絲公開。

在區塊鏈中,每個區塊內都記錄有一個投票 Merkle 樹的樹根 hash,這個 hash 凝聚了一段時間內所有投票的特徵,可以認為是投票集合的」指紋「,不同時間段形成的投票集合有不同的指紋。

求 Merkle_tree_root 根節點值 0x4bd8:只需將自己已知投票的 Vote-hash ,配上給定左右黃色的 hash 值 0xb289、0xf9ff,就可以導出所求根節點值

按照 hash 的特點,我們可以實現如下效果:\_(?ω?`)??重要!

1、篡改投票極難,插入一張非法的票會導致原有 Merkel 樹樹根發生變化,區塊鏈的特點使其難以操作;

2、證明投票過程,粉絲給出自己的 vote-hash,組織方給出從該投票葉子節點到樹根節點這條路徑上相鄰節點的 hash 值列表,這個 hash 列表叫做 Merkle Proof,可以證明 vote-hash 和 Merkle 樹的關係。投票粉絲只要能拿出這個證明,吃瓜群眾就可以將其和特定的區塊中包含的 Merkle 樹的樹根比對,驗證這個證明,也即這張投票是否真實的在特定時間發生過。

粉絲可以大聲說「我給 XXX 投了一票,你們都可以驗證,這就是我的存在。」以下是我司猿粉,漫畫一幅。 ( ? ?° ? ? ? ?°) 猴塞雷啊~


推薦閱讀:
查看原文 >>
相关文章