粉丝如何刷出自己的存在感,例如在投票环节中,粉丝无法向他人证明本人的参与结果,组织方无法证明过程的公平性。近日,秘猿科技联手口袋 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 投了一票,你们都可以验证,这就是我的存在。”以下是我司猿粉,漫画一幅。 ( ? ?° ? ? ? ?°) 猴塞雷啊~
粉丝证明存在不仅是一个娱乐话题,生活中有很多类似行为。如何证明买到的不是翻新手机,慈善捐款有没有花到指定地方,促销价格有没有造假。我们需要没有篡改,没有伪造的证明。
相信,社会在不断进步,数据终将回归本原。
--关于秘猿--
秘猿科技( Cryptape )专注于研究与开发区块链技术,长期为政府、金融等各种行业客户提供区块链技术解决方案与咨询,致力于成为价值网络时代的基础服务提供商。
企业级智能合约平台 CITA 是秘猿科技的主要区块链产品之一。