Tweetchain:基于群体应用程序区块链的替代方案

2019-08-25 05:25发布

引用

Buccafurri F, Lax G, Nicolazzo S, et al. Tweetchain: An Alternative to Blockchain for Crowd-Based Applications[C]// International Conference on Web Engineering. 2017.

摘要

众包领域的信息保障不能承诺给某一方,而是应该在人群中进行分配。区块链是一个允许这样做的基础设施,因为交易被广播到整个社区并由采矿者进行验证。计算能力高的节点(或节点联盟)可以通过计算工作证明来扮演矿工的角色来验证和批准交易。矿工遵循最高费用优先服务的政策,因此基于区块链的应用程序提供商必须为每笔交易支付不可忽视的费用,以增加交易发生的可能性。这使得区块链不适合应用在众包模式中经常发生的小价值交易。为了克服这个缺点,在本文中,我们利用在线社交网络(我们选择Twitter来提供概念证明)来替代区块链。我们的协议不再通过工作证明,而是通过构建一个网状的公共帖子链来确保交易安全,并且不需要对社交网络提供商进行可信度假设。

技术介绍

区块链在基于群体的应用程序中并不很适用。首先,区块链通过矿工对于工作证明的计算,达成了对分类账的共识。具有高计算能力的节点(或节点联盟)可以扮演矿工的角色,并遵循(通常)最高费用优先服务的策略来选择正在验证的交易。这意味着基于区块链的应用程序的提供者必须为每笔交易支付不可忽略的费用,以增加其交易进行的可能性。显然,对于经常出现在众包模式中的小额交易,这种模式似乎不太合理。另一个方面,我们预计基于群体的应用程序主要依赖于通过移动设备参与的大量人群。但是,参与区块链系统的任何实体,即使是简单的用户,也必须加入P2P网络,并且必须在上传和下载中不断交换数据。此外,需要大量存储空间来存储足够数量的过去交易以限制联系其他节点以检索它们的需要。上述两个方面都很少符合我们所指的移动设备及应用。此外,即使是出于不太安全的感觉,加入P2P网络可能也不会被很多人接受。

在本文中,我们提出了一种区块链的替代方案,旨在克服上述缺点,使基于公共账本的解决方案适合于众包领域。我们的解决方案利用了在线社交网络在人们之间共享信息的高能力。除了传播媒体,在线社交网络还可以成为人们工作流程的一部分。人们习惯于在社交网络上操作个人资料,社交网络服务的可用性非常高。对于社交网络提供商来说,其在社会中的角色将变得更加核心,这将增加业务。因此,社交网络可以帮助我们克服区块链在众包领域的局限性。

为了有效,我们将注意力集中在一个真实的社交网络上,即Twitter,但原则上,我们可以使用任何实现发布机制和基于密钥的帖子搜索的社交网络。这个想法并不是要在Twitter上实现区块链,而是要重新创造一种共识协议,使用推文来编码交易和网状复制,从而取代工作证明,取代矿商的收费需求。

我们将此协议称为Tweetchain。交易推文以及随机选择的社区成员发布的足够数量的确认推文,会产生一系列复制交易。在适当的非共谋假设下,任何一方,包括Twitter本身,都不可能删除、修改或伪造有效的交易。我们模型的主要参与者是:

- Twitter社交网络,特别是以下功能:1.为注册用户发布推文;2.关注活动的通知;3.通过主题标签搜索信息。

- 欢迎配置文件W用于实现一种黄页支持。

- 加入Tweetchain协议的用户的Tweetchain社区,即C.

作为一个先决条件,要参与Tweetchain社区,用户必须能够从一个秘密开始构建一个(基于SHA-256的)给定大小的散列链,比如k,它将用于维护所有链接在一起的时间轴活动。这样,正如下面将更清楚地说明的,在不损害用户时间轴剩余部分的情况下,不能对旧消息进行任何修改。值k表示哈希链的长度,是一个系统参数,它还限制了用户时间轴的最大块大小(打算作为tweet的数量),必须考虑该大小来验证给定消息的有效性。

Tweetchain主要由登记、交易生成、验证三个协议组成。

登记协议由每个想要成为Tweetchain社区c成员的用户(比如x)执行。显然,该协议的先决条件是注册Twitter,以便在其上创建一个概要文件。用户执行的第一步是按照欢迎配置文件W发布一个hello tweet,其结构如下:⟨#HCx1#HCW1 Hello @W⟩,其中#HCx1和#HCW1是Twitter主题标签,其中包含第一个元素的base64编码x和W的哈希链分别作为文本,@ W是对欢迎页面W的Twitter引用。之后,W验证x的推文并发送确认推文作为欢迎消息,其中包含对此用户的引用以及指向他的hello推文的链接。假设W已经发布了i-1个推文,那么x的欢迎消息将具有以下结构:⟨#HCWi Welcome @ x#HCx1#TIDx1⟩其中#HCWi和#HCx1是第i个base64编码的Twitter主题标签W的哈希链的元素和x的哈希链的第一个元素,@ x是对用户x的Twitter引用,#TIDx1是一个Twitter主题标签,其中包含x的第一个推文(hello)的ID作为文字。请注意,Twitter内的推文ID(或状态ID)始终是唯一的。

因此,W按连接-时间顺序包含社区中每个成员的至少一条推文。在此之后,x随机生成以下集合Fx,他们将在未来验证他的交易。过程如下:x检索他的Twitter标识符。然后,此标识符用作社区已知PRNG的种子以提取s随机数,并且对于每个数字,例如n,计算n mod w,其中w是由W发布的推文总数。此时,上面计算的数字用作索引,以从欢迎配置文件W中选择不同的屏幕名称。x向每个s配置文件发送一条私人消息,其中的屏幕名称是在上一步骤中派生出来的,要求他们关注他。在使用社区PRNG验证x请求的合法性之后,x接触的每个配置文件都添加了一个跟随x的链接,并通过用他们当前的哈希链元素替换#HCWi来复制W的欢迎推文。

交易生成协议允许生成新的交易。与区块链中发生的情况类似,每个交易携带不同的信息,例如:(i)生成的时间戳,(ii)内容(iii)输入交易,以及(iv)充当交易接收者的目标概要文件。在我们的协议中,新交易的生成与用户的新推文的生成相关联,在下文中称为t-tweet。 根据上述要求,用户x的第i个t-tweet将具有以下结构:⟨#HCxi #TIDyp content @r⟩,其中# HCxi是标签的base64编码的第i个元素散列链(x)。#TIDyp是由用户y发布的第p个推特的ID的主题标签,并用作该交易的输入,并且@r是对该交易的收件人r的Twitter引用。一旦x发布新的t-tweet,跟随他的Fx的用户将被Twitter平台自动通知。他们将通过使用下面描述的验证协议验证此新交易的合法性。运行验证程序后,他们将在时间轴上发布确认推文。现在,让v成为Fx的一个用户,让j-1是v到现在生成的推文的数量,他对x的交易的确认推文将是:⟨#HCvj @ x #TDxi status #TIDyp content @ r⟨,其中#HCvj是验证者v的哈希链的第j个元素的#标签,@ x是对用户x的引用,#Tdxi是由x生成的t-tweet的ID的#标签,根据验证结果,状态可以是1表示成功,0表示失败。这个推文的剩余部分是x的t-tweet主体的重要部分,在x完成删除的情况下重建原始推文是必需的。

验证协议用于检查交易的有效性。现在,假设验证者(比如说v)想要验证用户x的第i个交易,其中用户y的第p个交易作为输入而用户r作为目标。 x的交易将具有以下结构:⟨#HCxi #TIDyp content @r⟨。该协议通过验证此t-tweet的每个部分来工作。至于#HCxi的验证,第一个v检查是否已经使用了这个哈希链元素,在这种情况下验证将失败,否则验证者必须计算#HCxi的SHA-256哈希值。由于哈希链属性,此计算的结果应为#HCi-1。因此,在Twitter上搜索#HCi-1应该返回x发布的上一条推文。验证程序的目标是找到x的先前t-tweet或初始hello消息。现在,因为x还会为其他用户的交易发布确认推文,在#HCi-1引用确认推文的情况下,重复上述过程,直到找到t-tweet或hello tweet。让#TIDi-1成为这样一条推文的ID,验证者现在要检查他是否在过去确认了这条推文(即,他发布了一条确认推文,其状态为1对应于此)。如果不是这种情况,那么验证者将不会确认(状态0)新交易,否则他将继续验证x的新t-tweet的第二部分。#TIDyp的验证意味着验证输入交易的有效性。如上所述,输入是用户y的第p个t-tweet。该推文的有效性与由与y相关联的验证者生成的s中至少存在t个确认推文有关。因为每个确认推文包含相应t-tweet的ID,所以在Twitter上搜索#TIDyp将返回p的第p个t-tweet的所有确认推文。现在,验证者必须检查状态为1的t确认的存在以及合法验证者为y发布的确认。此外,v检查#TIDyp的目标是否为x并且它还没有在任何其他交易中用作输入。完成的最后一次验证是检查Tweetchain社区中r(即,该新交易的目标用户)的存在。这是通过在Twitter中搜索@r并通过验证W中欢迎消息的存在以及r的验证者的t确认来获得的。在这些步骤结束时,如果所有验证成功,则验证者将发布状态为1的确认推文,用于x的新t-tweet,否则此确认的状态将设置为0。

本文主要贡献

在本文中,我们提出了一种轻量级的公共分类账,它利用流行的社交网络Twitter来代替P2P网络和区块链协议,通过构建一个网状的tweet链来确保交易安全。重要的是,Twitter既没有扮演可信第三方的角色,也没有扮演分类账提供者的角色。在区块链工作量证明中,许多矿工为了达到目标而竞争,但每次通过一个区块时,只有一个成功。换句话说,该协议产生了大量的工作浪费,从而导致能量损失。因此,从全球能源消耗的角度来看,该协议是不可持续的。

致谢

本文由南京大学软件工程系2018硕士生刘子寒翻译转述

文章来源: https://www.toutiao.com/group/6726453916432597518/