会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 区块链处理实体 / 对区块链网络上实体提供的数据进行通信、存储和处理的系统和方法

对区块链网络上实体提供的数据进行通信、存储和处理的系统和方法

申请号 CN201880056704.7 申请日 2018-08-29 公开(公告)号 CN111066283A 公开(公告)日 2020-04-24
申请人 区块链控股有限公司; 发明人 西尔维亚·巴托鲁奇; 波林·贝尔纳特; 丹尼尔·约瑟夫;
摘要 提供了一种在区块链上做出决定的计算机实现的方法。所述方法包括:提供区块链投票承诺交易(2),所述区块链投票承诺交易通过第一签名(σ(Am),σ(Bm))和第二签名(σ(A),σ(B))可以赎回,第一签名与选择(A,B)相关联,第二签名与所述选择相关联,向多个参与者(Ui)中的每一个提供至少一个相应秘密值(kA,kB)的至少一个份额(kA,i,kB,i),其中,执行所述第二签名需要门限数目的份额,以及向所述区块链提交所述区块链投票承诺交易(2)。
权利要求

1.一种在区块链上做出决定的计算机实现的方法,所述方法包括:提供第一区块链交易,所述第一区块链交易通过第一签名和第二签名可以赎回,所述第一签名与选择相关联,所述第二签名与所述选择相关联;

向多个参与者中的每一个提供至少一个相应秘密值的至少一个份额,其中,执行所述第二签名需要门限数目的份额;和向所述区块链提交所述第一区块链交易。

2.根据权利要求1所述的方法,其中,至少一个参与者向所述第一区块链交易添加至少一个签名输入,所述签名输入代表加密资产。

3.根据权利要求2所述的方法,还包括步骤:提供第二区块链交易,所述第二区块链交易在满足锁定时间条件时可赎回,以将所述加密资产的至少一部分返回给至少一个所述参与者。

4.根据任一前述权利要求所述的方法,其中,所述第一区块链交易包括m/n个多签名赎回脚本,并且添加至少一个份额到所述赎回脚本。

5.根据权利要求4所述的方法,其中,使用至少一个决定的第一公钥来加密所述至少一个份额。

6.根据权利要求5所述的方法,还包括步骤:将所述至少一个份额与标识数据进行组合,所述标识数据在使用所述第一公钥进行加密之前标识选择。

7.根据权利要求6所述的方法,其中,所述组合包括所述至少一个份额和所述标识数据的级联。

8.根据权利要求1所述的方法,其中,向所述参与者提供所述份额的步骤包括以下至少之一:(i)向所述参与者提供所述份额的经销商实体,和(ii)在自身之间产生所述份额的参与者。

9.根据任一前述权利要求所述的方法,包括步骤:在向所述区块链提交所述第一区块链交易之前,模糊由哪个参与者提供哪个份额。

10.根据任一前述权利要求所述的方法,还包括步骤:提供第三区块链交易,所述第三交易用于赎回所述第一区块链交易。

11.根据任一前述权利要求所述的方法,还包括步骤:使用至少一个第二公钥来验证所述至少一个份额。

12.根据权利要求11所述的方法,其中,所述多个参与者通过协作来组合份额的至少一个子集,以确定至少一个所述第二公钥。

13.一种计算机实现的系统,包括:

处理器;和

包括可执行指令的存储器,所述可执行指令在由所述处理器执行,可使得所述系统执行根据权利要求1至12中任一项所述的计算机实现的方法的任何实施例。

14.一种存储有可执行指令的非暂时性计算机可读存储介质,所述可执行指令在由计算机系统的处理器执行,可使得所述计算机系统至少执行根据权利要求1至12中任一项所述的方法的实施例。

说明书全文

对区块链网络上实体提供的数据进行通信、存储和处理的系

统和方法

技术领域

[0001] 本发明主要涉及加密实施的数据记录和处理系统。具体地,本发明涉及一种用于通信、记录和/或存储由实体经由或通过区块链网络提供给系统的数据。数据可以指示例如选择、选项、反馈和/或决定。本发明提供了用于通过区块链网络在实体之间安全存储和通信此类数据的技术,并确保在转移后被转移和被使用的数据的完整性。本发明还弱化与网络上此类数据源的识别有关的问题,以防止授权活动。本发明适用于(但不限于)投票、电子反馈提交或计数应用,或者其中数据完整性、源隐藏和使用配额或限制的实施可能是重要的其他应用。

背景技术

[0002] 在本文中,使用术语“区块链(Blockchain)”来包括所有形式的电子的、基于计算机的分布式账本(Distributed Ledgers),包括基于共识的区块链和交易链技术、许可及未许可的账本、共享账本及其变型。虽然也已经提出并开发了其他区块链实施方案,但是区块链技术最广为人知的应用是比特币账本(Bitcoin Ledger)。虽然出于方便和说明的目的,本文中涉及的是比特币(Bitcoin),但应当指出的是,本发明不限于与比特币区块链一起使用,其他的区块链实施方式和协议也落入本发明的范围内。术语“用户(User)”在本文中可以指人力或基于处理器的资源。
[0003] 区块链是基于共识的电子账本,该账本被实现为由区块组成的基于计算机的去中心化的分布式系统,而区块由交易和其他信息组成。就比特币而言,每个交易是对区块链系统中参与者之间的数字资产的控制的转移进行编码的数据结构,并且包括至少一个输入和至少一个输出。每个区块包含前一区块的散列,如此,这些区块被链接在一起,以创建一个永久的、不可更改的所有交易的记录,这些交易自区块链诞生之始写入区块链。交易包含小程序,这些小程序称为脚本,嵌入至所述交易的输入和输出中,这些小程序指定了如何以及由谁来访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。
[0004] 为了将交易写入区块链,必须对该交易进行“验证(Validated)”。一些网络节点充当矿工,执行工作以确保每个交易有效,无效交易则被网络拒绝。例如,安装在所述节点上的软件客户端在引用未花费的交易输出(Unspent Transaction Outputs,简称UTXO)的交易上执行验证工作。可通过执行其锁定和解锁脚本来执行验证。如果锁定和解锁脚本的执行评估为真(TRUE),并且如果满足某些特定条件,则该交易有效,可将该交易写入区块链。因此,为了将交易写入区块链,该交易必须:(i)由接收交易的节点进行验证——如果交易经验证通过,则该节点将该交易中继到网络中的其他节点;(ii)添加到矿工建造的新区块中;(iii)被挖掘,即添加到过去交易的公共账本中。当向区块链添加足够数量的区块以使交易实际上不可逆转时,交易被视为已确认。一旦被记录,任何给定区块中的数据在不改变所有后续区块和网络多数的合谋的情况下,都不能被回溯更改。
[0005] 交易涉及一个或多个令牌从一个节点转移到另一个节点。令牌可代表对网络资源的未来控制。在某些情况下,令牌可能但不必然代表资产或价值。例如,在某些情况下,令牌可以被理解为加密货币。然而,本申请不限于在加密货币环境中的实现,而是被更广泛地理解为涉及用于控制令牌的分布式转移的区块链网络。
[0006] 区块链充当公共账本,可以以可验证的永久方式记录各方之间的交易。区块链具有许多特性(例如存储在链上信息的不可撤销性和通过去中心化的共识建立的信任),这使得它们适合用于各种应用程序。一种这样的应用程序是电子投票。应当注意的是,术语“投票系统(voting system)”在本文中不限于政治或行政背景,而是在一般意义上仅用于表示能够以某种方式转移、记录、存储、处理和/或登记选择、选择、决定或参数(即投票)的系统。因此,本发明涉及实体之间数据的改进的通信、存储和安全性。
[0007] 许多类型的计算机实现的系统需要使选择/决定的指示或其他数据能够通过网络进行通信,以便能够以某种方式对数据进行操作或处理。在许多情况下,希望能够执行与选择的次数相关的某些规则或标准。换句话说,能够做的选择或选项的次数可能有配额或限制。仅出于方便和易于参考的目的,我们可以将这种系统称为“电子投票(e-voting)”系统,但这不应被解释为将本发明限制于政治或行政环境内。或者,术语“数据记录系统(data recording system)”可以用来反映本发明的更广泛的适用性。本发明不限于接收、记录和存储的数据的类型或性质。
[0008] 最近,人们对利用在线技术设计安全电子投票协议越来越感兴趣。这些努力的目标是允许一个群组的用户基于个人偏好做出共同决定,这些偏好是保密的。与电子投票相关的挑战包括否认第二方确定用户的投票的能力,确保投票的不可撤销性,以及在整个过程中提供必要的透明度以获得投票者对过程的信任。
[0009] 区块链的引入作为加密货币协议的基础,为利用这些分布式账本的不变性和透明性提供了条件。这些账本与可用的加密解决方案相结合,提供了一个独特的机会,来利用区块链作为通常在电子(服务器)和非电子投票过程中存在的受信第三方的有效替代。
[0010] 全球信息技术的广泛采用,特别是互联网在各种预先存在的服务中的使用,不可避免地导致了电子投票顾虑。虽然基于网络的投票是收集用户情绪的常用方法,但在与公职和其他背景有关的选举中使用电子投票的做法却遭到了明显的反对。面对这种阻力,为了使电子投票取得更大的成功,提议的系统将承担满足各种社会技术障碍的任务。
[0011] 电子投票系统必须努力达到的一些被认为合乎需要的标准是:正确性:正确地考虑所有投票;即排除无效或未经授权的投票,而所有有效投票均计入最终结果。
隐私:投票对于除投票者本人之外的参与者均为未知
防止双重投票:不得提交两次投票,即攻击者应该不能复制另一个投票者已经提交的投票。
资格:只有经过授权的投票者才能在协议中投票。
验证投票已被正确考虑的可验证性。
[0012] 区块链技术的出现通过加密货币比特币为在电子投票协议的构建中利用区块链的特性提供了机会。区块链本身是不可变的公共账本,它消除了在交易验证中对受信第三方的需求。通过容纳和/或启用五个先前陈述的标准中的一个或多个,这些特征被认为适用于电子投票。
[0013] 区块链构成了合适的环境,可以在该环境中公开地和永久地记录投票和意见,以避免操纵任何种类的投票。尽管具有此功能,但为了在区块链上创建安全投票,仍有许多问题需要解决。这包括阻止多次投票提交到维护用户的隐私和证书检查。
[0014] 去中心化是在线电子投票和评级协议面临的最大挑战之一:通常,现有的解决方案都是以防止滥用的方式构建的,但它们依赖于中央机构来验证和考虑投票或反馈。
[0015] 中央机构可以使用不同的加密原语(例如盲签名和同态加密),以增加投票的保密性和资格验证。在乔姆(Chaum)的协议中,参与者将他们的投票发送给混合机构,混合机构利用混合网络(Mix Nets)的设置,在广播之前对投票进行重新洗牌和加密,以掩盖投票与投票者之间的联系。这在乔姆(1981)中——《不可追踪的电子邮件、回信地址和数字假名(Untraceable electronic mail,return addresses,and digital pseudonyms)》,《美国通信学会通讯(Communications of the ACM)》,24(2),84页-90页——描述地更为详细。
[0016] 因此,期望提供一种与比特币兼容的投票协议,其中投票者利用比特币交易为他们的首选候选者投票(在两种可能的选择中),并向获胜的候选者提交一定数量的比特币或令牌。该协议利用分布式密钥共享方案来促进对将赢得足够票数的候选者的奖励。
[0017] 现在已经设计出这种改进的解决方案。

发明内容

[0018] 因此,根据本发明,提供了如所附权利要求中所定义的方法。
[0019] 根据本发明,可以提供一种在区块链上投票的计算机实现的方法,包括:向多个投票者中的每一个提供秘密值的至少一个份额,其中每个秘密值与选择相关联;提供可赎回的承诺交易,以在提供以下两者时显示获胜选择:(i)可从获胜选择的秘密值确定的第一签名;和(ii)指示获胜选择的身份的第二签名;以及向区块链提交承诺交易,其中获胜选择的秘密值可使用由至少一个投票者提供的投票项目的数量来确定,每个投票项目包括至少一个份额,并且其中该数量超过预确定的值。
[0020] 通过提供这种方法,区块链的用户能够在防篡改的先发后发式投票方式的投票系统中安全地投票。
[0021] 至少一个投票者可以向承诺交易添加至少一个代表加密资产的签名输入。
[0022] 这提供了抑制轻率或恶意参与投票过程的优点。
[0023] 上述方法还可以包括提供返回交易的步骤,该返回交易在满足锁定时间条件时可赎回,以将加密资产的至少一部分返回给至少一个投票者。
[0024] 这提供了在没有获胜选择的情况下最小化资金损失的机制的优点。
[0025] 承诺交易可以包括m/n个多签名赎回脚本,并且至少一个投票项目可以被添加到赎回脚本。
[0026] 这提供了实现至少一个投票项目的存储和公共可见性的优点。
[0027] 至少一个投票项目可以用至少一个选择的第一公钥进行加密。
[0028] 这提供了仅使所选选择解密投票项目并获得对份额的访问的优点。
[0029] 至少一个投票项目可以包括识别至少一个选择的至少一个识别项目。在成功解密投票项目时,这提供了增加可以后续识别份额的容易性的优点。至少一个投票项目可以包括至少一个份额和至少一个识别项目的级联。
[0030] 向投票者提供份额的步骤可以包括以下至少一个:(i)向投票者提供份额的经销商实体(dealer entity);(ii)生成份额的投票者。
[0031] 这启用了基于信任中心的投票系统和无信任中心的投票系统,从而增加了投票方法的通用性。
[0032] 上述方法还可以包括在向区块链提交承诺交易之前,模糊哪个投票者提供哪个投票项目的步骤。
[0033] 这防止了从投票项目中识别出投票者,从而提供了增加投票方法安全性的优点。
[0034] 上述方法还可以包括提供用于赎回承诺交易的赎回交易的步骤。
[0035] 这提供了一种简单的方式向投票者表明获胜选择的身份的优点。
[0036] 该方法还可以包括使用至少一个第二公钥验证至少一个份额的步骤。
[0037] 这使得投票者能够检查份额的有效性,从而提供了增加投票方法的鲁棒性的优点。
[0038] 多个投票者可以协作组合份额的至少一个子集,以确定至少一个所述第二公钥。
[0039] 这提供了将投票方法的至少一部分去中心化的手段,从而提供了进一步增加上述方法的通用性的优点。
[0040] 附加地或替代地,根据本发明,可以提供一种确定区块链投票的获胜选择的计算机实现的方法,包括以下步骤:从至少一个投票项目中确定至少一个秘密值的至少一个份额,其中每个秘密值与选择相关联;使用由至少一个投票项目提供的份额的数量来确定获胜选择的秘密值,其中该数量超过预确定值;从获胜选择的秘密值中确定第一签名;以及通过提供以下两者来赎回承诺交易,以揭示获胜选择:(i)第一签名;(ii)与获胜选择的身份相关联的第二签名。
[0041] 通过提供这样一种方法,可以以安全和透明的方式确定和检查在区块链上执行的投票方法的获胜选择的身份。
[0042] 本发明还提供了一种系统,包括:处理器;和
包括可执行指令的存储器,该可执行指令作为处理器执行的结果,使得系统执行本文描述的计算机实现的方法的任何实施例。
[0043] 本发明还提供了一种其上存储有可执行指令的非暂时性计算机可读存储介质,该可执行指令作为由计算机系统的处理器执行的结果,使得计算机系统至少执行本文描述的计算机实现的方法的实施例。
[0044] 本申请描述了促进用于加密、验证和广播由用户向区块链提交的数据项的安全的、加密实施的且有效的实施方案的系统和方法。在一些有用的应用中,用户可以是投票或反馈平台的参与者。在一些实施方式中,本申请提供了旨在防止恶意行为者提交数据的协议。这可以保持系统基于接收到的数据产生的结果的完整性和可靠性。

附图说明

[0045] 参考本文描述的实施例,本发明的这些和其他方面将变得显而易见并得以阐明。现在将参考附图,仅以示例的方式描述本发明的实施例,其中:
[0046] 图1示出了显示本发明的三个交易的相互作用的示意图。
[0047] 图2是示出根据本发明的投票者数量、确定获胜者的选择所需的投票门限数量和多项式的次数之间的关系的表格。
[0048] 图3示出了说明本发明的流程图。
[0049] 图4示出了投票承诺交易。
[0050] 图5示出了两个获胜者支付交易;
[0051] 图6示出了退款交易;和
[0052] 图7是示出可以实现各种实施例的计算环境的示意图。

具体实施方式

[0053] 本发明描述了门限秘密共享投票(Threshold Secret Share Voting,简称TSSV)系统,该系统是要求投票者集合在一对候选者之间进行选择的系统,其中,获胜的候选者接收每个投票者提交的x个比特币协议(Bitcoin protocol,简称BTC)。获胜的候选者必须同时获得多数票和超过指定门限的票数。TSSV协议利用私钥份额的分配,并且被设计为,如果一个或更多参与者恶意行事或不遵守协议预期,则所提交的任何比特币都是可收回的。
[0054] 缩写“BTC(Bitcoin protocol)”在本文中可以用作比特币协议的任何变体的简写。它不应被理解为仅限于或表示任何一种特定的比特币相关的协议。
[0055] 秘密共享
[0056] 门限密码系统由(t;n)-门限定义,其中n是参与方的数量,t+1是重构秘密所需的参与方的最小数量。秘密共享方案是门限密码系统的示例,其中秘密k在n个玩家之间划分,因此至少需要t+1个参与者进行协作才能重构k。秘密k的任何t个部分的信息都不能确定k。
[0057] Shamir的秘密共享(Shamir’s secret sharing)(或SSS)基于多项式插值法,并且在不失一般性的前提下,假定秘密是有限字段F的元素。该方案包括信任中心(也有无信任中心版本),n个参与者U1的集合,…,Un和接入结构A,即能够重构秘密的玩家组。Shamir,A.(1979)“如何共享秘密”,ACM通讯,22(11),612-613中对此进行了更为详细的描述。
[0058] 对于Shamir的解决方案,将任意随机秘密以f(0)的形式存储在t次数多项式f(x)中,只有玩家i才能计算其份额f(xi)。如果n名玩家中的t+1个协作,他们可以使用Lagrange多项式插值,用对应于f(x1),f(x2),…,f(xn)(秘密k的)份额k1,k2,…,kn重构f(x)上的任何点。
[0059] 使用拉格朗日多项式插值,可以用t+1个点重构次数为t的函数f(x)p={(x1,f(x1)),(x2,f(x2)),...,(xt+1,f(xt+1))}其中
注意,bi,p(xi)=1和bi,p(xj)=0。
[0060] .选择一个秘密ao=k(假定是大小为p(素数)的有限域F的元素,然后随机选择t-1个正整数a1,…,at-1,代表多项式的系数f(x)=ao+a1x+a2x2+....然后信任中心计算属于多项式的n点数(xi,f(xi)),并将其分配给参与者。
[0061] 在无信任中心份额分配阶段:1.每个玩家Ui被分配给每个人都知道的xi。每个xi必须是唯一的。
2.每个玩家Ui生成次数为t的随机多项式fi(x)。
3.每个玩家Ui秘密地(使用接收者的公钥加密)向其他每个玩家发送其在多项式fi(xj)mod n上的相应点。
4.每个玩家Ui对所有收到的f1(xi),f2(xi),…fp(xi)求和(所有mod n,其中n是椭圆曲线上的点G生成的组的顺序),以形成
ki=f(xi)mod n
这是多项式f(x)mod n上的份额。
[0062] 门限签名计算的一个重要元素是确定k×G,其中k是秘密密钥,G是椭圆曲线上的点。
[0063] 如果f(x)是t次多项式,则秘密k可以通过k=∑i∈πbi,πki进行插值,其中π是份额ka,kb,…,kt,kt+1的大小为t+1的子集,b是一个内插因子。π是包含t+1个玩家的组,这些玩家在不透露其份额ki的情况下协作计算k×G。k是t次多项式上的x=0点·每个玩家Ui计算一部分bi,πki×G
·π中的所有玩家将自己的部分加在一起(通过Lagrange插值重构秘密k),得到:
ba,πka×G+bb,πkb×G+…+bt+1,πkt+1×G=k×G
计算Q=kG的过程称为秘密共享合并(Secret Share Joining)。
[0064] 公开可验证秘密共享方案
[0065] 在TSSV协议中,希望投票者能够验证他们是否获得了正确的秘密份额。的确,如果在玩家之间分配的份额不一致,那么投票者的不正确份额/投票将无法帮助投票者的首选候选者。对于份额验证,我们将使用公开可验证秘密共享方案(PVSS),该方案允许投票者验证自己的份额以及其他投票者的份额。这在Stadler,M.(1996年5月),《公开可验证秘密共享(Publicly verifiable secret sharing)》-密码技术理论和应用国际会议(第190-199页),施普林格·柏林·海德堡-中有更为详细的描述。
[0066] 在PVSS方案中,每个参与者Ui都具有解密功能Di,它能够访问使用相应的公共加密功能Ei加密的信息。这样,信任中心可以使用公共加密功能来分配份额并以下面这种形式发布它们Ki=Ei(ki),i=1,…,n
[0067] 因此,任何感兴趣的个人都可以公开验证加密的份额,我们将在下面详细介绍。参与者不仅可以验证自己的份额,而且任何人都可以验证参与者是否收到了正确的份额,即信任中心是否诚实。
[0068] 该协议的主要步骤是:1.秘密共享:信任中心运行算法Share(k)=(k1,…,kn)计算份额并将其分配给参与者。
2.重构:参与者可以通过运行算法Recover(如Recover({Di(Ki)|i∈A})=k)重构秘密。
3.验证:PubVerify算法用于验证加密的份额。如果我们运行算法PubVerify({Ki|i∈A})=1→Recover({Di(Ki)|i∈A})=u和u=k,则信任中心是诚实的,份额是一致的。
[0069] 根据恢复阶段的需要,PVSS方案可以是交互式的也可以是非交互式的。
[0070] 将比特币交易中的输入与输出解除链接
[0071] 投票协议的设计使得支付获胜候选者的交易也包含各个投票者的投票。为了使投票协议的参与者、候选者或任何外部人员,不知道任何其他参与者的投票(和/或其加密的值),重要的是要纳入一种解决方案,允许每个参与者贡献其加密的投票,其他任何参与者都不能将此加密值链接到其投票者源。
[0072] 此要求类似于流行的比特币混合解决方案CoinJoin的要求,在Maxwell,G.(2013年8月)“CoinJoin:现实世界的比特币隐私”-发布于比特币论坛http://tinyurl.com/gn6kmx4中有更为详细的描述。在CoinJoin中,参与者集合中的每一个都贡献并代表比特币交易的一个输入;此交易包含多个输出,其中每个输出地址均由输入的参与者提供。为了加强比特币混合过程的匿名性,将输入参与者与他们的输出地址断开链接很重要。为了解决这个问题,已经开发了多种洗牌解决方案,其中参与者可以提供其输出地址,而没有任何其他参与者或外部对手能够将参与者关联到特定的输出地址。
[0073] 洗牌解决方案包括混币(CoinShuffle)(在Ruffing,T.,Moreno-Sanchez,P.和Kate,A.(2014年9月)“混币:比特币的实用分散式硬币混合”)-欧洲计算机安全研究研讨会(第345-364页,施普林格国际出版社)中有更为详细的描述)、混币++(在Ruffing,T.,Moreno-Sanchez,P.和Kate,A.(2016年)-“P2P混合和不可链接的比特币交易”NDSS'17,https://goo.gl/QrfMhp中有更为详细的描述)和循环洗牌(Circle Shuffle)。
[0074] 门限秘密共享投票
[0075] 参照图1至图6,提供了一种在区块链上做出决定的方法。在形式上,该决定可以是期望的做法、选举中的首选候选者或任何其他决定。许多参与者或投票者被提供了与决策的一个或多个结果相关的各个秘密值的份额。结果可能是候选者当选。然后参与者通过向第一交易或承诺交易2提供包含与该结果相关联的份额的输入4来为其首选的结果、选择或候选者投票。承诺交易2(参见图4)仅在提供与一个结果相关联的第一签名(6a,6b)和与该结果相关联的第二签名(8a,8b)时才可赎回。在图4至图6中,公钥X的签名表示为σ(X)。一旦提供了至少秘密值门限数量的份额,就可获得足够的信息来执行第二签名(8a,8b),并因此满足承诺交易2的要求并揭示结果和/或执行该决定。
[0076] 对于门限秘密共享投票(TSSV)协议,可以想象一种场景,其中参与者{Ui}集合可以为一个或多个选择或候选者投票。在此示例中,有两个候选者分别被指定A和B。每个候选者都有一个主私钥-公钥对((PrivAM,PubAM)和(PrivBM,PubBM),所有投票者都可以使用这些公钥。每个投票者都有一票,获胜的候选者是:得票最多
并且获得了超过指定门限的足够的票数。
[0077] 例如,如果有9位参与者(投票者),则获胜的候选者应获得至少5票。
[0078] 结合其投票,要求投票者在投票的同时投入一定数量的资金(例如比特币)。所有投票者的累计承诺资金将分配给获胜的候选者。这些资金可能被视为或充当对获胜者的奖励,或者是对轻率或恶意参与投票过程的抑制。
[0079] TSSV协议使用三项交易。这些交易被标记为投票承诺交易2(图4),获胜者支付(或赎回)交易10(图5)和退款交易12(图6)。这些交易具有以下责任。
[0080] 投票承诺交易:投票承诺交易(VCT)2是既包含比特币承诺又包含每个投票者的投票承诺的交易。对于提议的TSSV设计,此交易2包括来自整个投票者集合的输入4,尽管并非所有投票者都需要提供投票。VCT 2记录所有用户投票,并在输出14上汇集比特币承诺。这些投票已加密。
[0081] 退款交易:如果候选者无法在指定时间之前收集投票者累积的比特币,退款交易(RT)12是一种针对投票者收回其承诺资金的故障保护措施。在用户投票和VCT 2已被创建(但未提交)之后,将创建并签名RT 12。
[0082] 获胜者支付交易:获胜者支付交易(WPT)10(或赎回交易)是向获胜者支付累积比特币的交易。获胜的候选者将是唯一能够收集汇总的比特币的人员(候选者或其他人)。图5示出了两个可能的赎回交易10a、10b:(a)示出了在候选者A获胜的情况下的赎回交易10a,以及(b)示出了在候选者B获胜的情况下的赎回交易10b。
[0083] 图1显示了这三个交易2、10、12与汇集的比特币之间相互作用的直观表示。
[0084] 投票承诺交易(VCT)2是包含用户投票的交易。投票者必须为VCT做出的两项承诺(投票和比特币)中,BTC资金的筹建过程是最容易理解的过程,也是比特币协议最容易实现的过程。
[0085] 在比特币承诺的情况下,每个用户在他们控制/拥有的特定地址上使用未花费的BTC,并将其作为承诺交易2的输入4,并对其输入4进行签名。如果投票者对承诺交易2的其他可用细节感到满意,投票者在承诺交易2中的输入4仅由投票者签名。退款交易12也应该已经由所有相关方签名。尽管这不是必需的,但每个用户都应投入相同数量(xBTC)的比特币进行投票。
[0086] 在“投票承诺”的情况下,投票者Ui在TSSV协议的环境中对候选者B的投票vi表示为以下项的级联:分配给Ui的密钥kB的秘密份额kB,i;候选者B的识别值。投票可以通过以下方式表达:vi=kB,i||IDCandidateB,其中kB,i是密钥kB的投票者Ui持有的份额和||表示级联。
[0087] 如果候选者B能够获得足够的票数,则vi的密钥份额部分将在允许候选者B领取所有投票者的累计承诺资金中发挥作用。投票vi不必原样嵌入VCT2中;优选地,首先使用投票者Ui想要投票的候选者的公钥(在该示例中为候选者B)进行加密。加密的投票可以表示为[0088] 在候选者B试图解密 的情况下,组件IDCandidateB用作指示候选者B成功完成解密的指示符。IDCandidateB的位数大小应足够大,以使不太可能从密文 产生不正确的解密(私钥)值string||IDCandidateB。
[0089] 鉴于比特币交易没有专用于元数据存储的字段,TSSV协议的成功取决于找到合适的位置来记录参与者的投票。鉴于协议的设计使得所有投票都在一个承诺交易中(VCT 2)呈现,因此在合并投票承诺集合时增加了一些限制。
[0090] 对于TSSV协议的提议设计,投票是使用比特币的脚本存储的,用于m/n多签名交易。m/n多签名脚本采用以下格式:OP_0 Sig1 Sig2 …NumSigs Pub1 Pub2 Pub3 Pub4…NumKeys OP_CHECKMULTSIG[0091] 其中以粗体显示的内容属于,带下划线的内容属于
是允许使用交易输出的规则集。是满足要求的内容。NumSigs是所需签名的数量,NumKeys是可能存在的签名的数量,PubX是与签名SigX对应的公钥。尽管此脚本旨在用于m/n个签名,但赎回脚本的PubX元素可能适合用作元数据存储。
[0092] 作为示例,示出了2/4多签名脚本,其中为公钥保留的4个数据元素中的2个被用于存储元数据。该脚本采用以下格式:OP_0 SigASigBOP_2 meta1 meta2 PubAPubB OP_4 OP_CHECKMULTSIG
[0093] 就我们的目的而言,这些元数据元素可以代表用户的加密投票集
[0094] 作为示例,示出了1/7多签名脚本,其中为公钥保留的七个数据元素中,有五个用于存储加密投票,两个用于真正的公钥。该脚本采用以下格式:
[0095] 对于当前版本的比特币协议,多签名输出中允许的最大公钥数量为15。因此,所描述的m/n脚本可以允许的最大投票(投票者)数量为13(请注意,(15个)位置中有两个保留给候选者A或B的公钥)。每个候选项(例如候选A)至少附加2个公钥,主公钥和基于kA,i密钥份额的协同推导的公钥。但是,重要的是,可以在一个较大的脚本中利用多个m/n多签名脚本。例如,可以在脚本中利用if-else条件来确定向哪个候选者支付。脚本中的每个选项在脚本中可能都有其自己的m/n片段,从而导致至少包含26个可能的投票。可能会构建更多复杂的脚本来包含更多投票,但是要记住,脚本的最大大小当前为10KB(如“比特币脚本解释器”中更详细的说明-https://github.com/bitcoin/bitcoin/blob/fcf646c9b08e7f846d6c993
14f937ace50809d7a/src/script/interpreter.cpp#L256),并且交易费用取决于交易规模。
[0096] 使用m/n比特币脚本的公钥元素需要考虑对比特币协议的公钥施加的大小限制。请记住,公钥适用于存储 其中 具有相同的位长,并且是vi=kB,i||IDCandidateB的加密。
[0097] 应当注意,对于提出的TSSV协议,比特币椭圆曲线数字签名算法(ECDSA)签名(最终要求获胜者申领资金)需要256位私钥(例如,参见私钥https://en.bitcoin.it/wiki/Private_key)。要重构256位(32字节)的私钥,要求密钥份额本身的长度也应为256位。
[0098] 比特币协议利用椭圆曲线(EC)(256位长)加密,其中公钥kG是曲线上的一个点;每个坐标均为256位。这在Franco,P.,2014《了解比特币:密码学、工程学和经济学》(John Wiley&Sons)中有更详细的描述。比特币协议允许将EC公钥表示为压缩点或未压缩点。对于压缩点,仅存储EC点的x值(256位),而对于未压缩点,则存储x和y值(均为256位)。
[0099] 这样做的含义是,如果在m/n脚本中使用未压缩的公钥,则将有足够的存储空间用于256位密钥共享和候选者ID的级联。EC点的x值的256位可用于密钥共享kB,i,而为y值保留的其他256位可用于存储候选者ID。
[0100] 在投票系统中,通常希望用户的投票无法追踪到投票者。对于提议的TSSV协议,如果投票者仅将其 添加到现有 的集合/列表中,则另一个投票者可以自行或共同确定该投票者的 需要考虑第一投票者将他们的 添加到投票列表中的情况。第二个投票者将很容易就能知道列表中已经存在(加密)的投票者是第一个投票者。虽然这仅使人知道密文 而不是 本身,但这使恶意投票者/参与者更容易将投票者链接到
[0101] 更重要的是,考虑到投票加密是使用两个候选者之一的公钥完成的,投票洗牌可以防止候选者(A或B)将投票者与投票联系起来。如果没有洗牌,假设候选者可以解密 则候选者可以在一个或多个投票者的帮助下将投票者链接到投票。还应该注意的是,假设在TSSV协议中只有两个候选者,则一个不能解密投票的候选者意味着该投票是针对另一个候选者的。
[0102] 因此,对于TSSV协议,洗牌解决方案已纳入用户向提供投票的过程中。洗牌解决方案的示例如上所述,它们中的任何一个都可以在TSSV协议的实例中使用。用于TSSV的洗牌解决方案的基本职责是允许每个投票者提供其(加密的)投票,而其他任何投票者或非投票者都无法确定哪个(加密的)投票源自哪个投票者。
[0103] 因此,可以创建加密投票集 同时任何投票者或候选者(或其他方式)都不知道该集合的哪个元素源自哪个投票者。
[0104] TSSV协议的设计方式是只有成功的候选者才能收集汇总的比特币。门限秘密方案促进了这种限制,其中,对于此类方案,可以使用份额{ki:i∈[1,n]}集合中的t+1个份额来确定秘密k。t是用于计算密钥份额的多项式的次数。
[0105] 为两个候选者(A和B)分别分配了一个公钥。PubA=kBG
PubB=kBG
[0106] 其中G是椭圆曲线(EC)的基点,而kG是EC“标量点乘”的示例。G是EC的基点,k是标量值。
[0107] 在协议的早期阶段,kA和kB的值是未知的(任何人,候选者或投票者都不知道)。这些kA和kB值只能在用户为特定候选者提交足够数量的选票时确定。这些用户投票包含kA和kB的密钥份额,具体取决于投票者选择的候选者。kA和kB的密钥份额如下:
kA≡f(kA,1,kA,2,…,kA,n)
kB≡f(kB,1,kB,2,…,kB,n)
[0108] 例如,如果投票者选择投票给候选者B,则投票者的投票承诺将是vi=kB,i||IDCandidateB
[0109] 值kB,i是密钥kB的密钥份额,该份额先前已分配给投票者Ui。
[0110] 理论上,密钥份额的分配可以是基于信任中心的,也可以是无信任中心的。在基于信任中心的分配中,信任中心知道kA和kB并分配kA和kB的密钥份额。拥有份额kB,i和份额kA,i的参与者可以被视为合法参与者。该信任中心不得是任何候选者,而应是第三方。如果候选者A或B是信任中心,则考虑到恶意候选者会知道所有秘密密钥,尽管没有赢得必要的选票,但任何一位候选者都可以签署TSSV的输出,收集所有汇总的资金。对于无信任中心的实施,每个投票者构建自己的密钥份额。如上所述,投票者使用秘密共享合并(Secret Share Joining)进行协作,以计算公钥PubA=kAG和PubB=kBG。
[0111] PVSS方案用于让候选者和投票者根据PubA和PubB验证密钥份额。由信任中心分配密钥份额可以对合格投票者的名单进行适当的权限控制;这是因为密钥份额的所有权可以看作是投票资格的证明。
[0112] 如果候选者B能够获得足够的票数(kB,i份额),则候选者B将能够构造密钥kB并利用该kB签署投票承诺交易2的输出,以收集汇总的承诺比特币。
[0113] 必须根据投票者的数量和候选者获胜所需的票数来选择用于实施Shamir秘密共享的多项式次数。获胜候选者必须获得多数票数,并且获胜候选者所获得的票数也必须大于指定的门限。作为说明,图2显示了候选者获胜所需的票数,以及不同数量的投票者的多项式次数。如果需要更大的门限,则获胜候选者所需的最低票数可能会更高。例如,政府的全民公决可能要求获得多数和至少75%的选票才能接受政策建议。
[0114] 为了收集奖金,获胜的候选者B需要为PubB提供比签名8b更多的签名(图4)。除了被分配了公钥PubA/PubB(对应的私有密钥被分割)之外,候选者A和B都分别具有其自己单独的(主)公钥PubAm和PubBm。候选者A知道PubAm的私钥,而候选者B知道PubBm的私钥。
[0115] 之所以需要此额外的公钥,是因为任何t+1个投票者理论上都可以合作,计算kB并窃取累积的资金。这是由于这样的事实,即不需要基于额外公钥的签名6b——更重要的是,它的私钥(对应于公钥)只对候选者是已知的。因此,为了使获胜候选者(候选者B)领取累积的资金,还需要公钥pubBM的获胜候选者的签名6b。
[0116] 考虑到这一点,我们考虑了根据比特币脚本的不同方式,使用这些方式可以领取汇集的比特币。投票承诺交易2的包括对三种支付方式的考虑。
[0117] 这些规则集(“规则集”可以理解为(主函数的)布尔值子函数)中的第一个在中由下标脚本表示OP_DUP OP_HASH160OP_EQUALVERIFY OP_CHECKSIG
[0118] 此处的下标脚本一词用于描述较大脚本的一部分。在这种情况下,引用的较大脚本是。该脚本显示了一种保护大多数比特币交易输出的基本方法。它只需要包含的公钥签名即可。对于投票承诺交易(VCT)2,如果TSSV协议的执行未按计划进行,即,如果没有获胜选择或获胜选择没有赎回投票承诺交易,则此下标脚本控制用户获得其已承诺的比特币退款的能力。退款交易12能否成功提交到区块链取决于,其中包含公钥PubS的签名。该公钥可以是某个投票者可以签名的公钥,也可以是基于单独的分布式密钥份额集合的公钥。对于后一种选择,获得PubS的签名将是至少t+1个投票者之间的共同努力,以构造私有密钥并生成签名。注意:·在将VCT 2提交给区块链之前,所有投票者都可以使用已签名的退款交易12的副本。
·退款交易12包括nLockTime值,该nLockTime值防止将退款交易12提交给区块链,除非经过了指定的时间点(例如Unix时间或区块高度)。
·退款交易12向每个用户返回该用户承诺的比特币。
[0119] VCT 2领取汇集资金的这些选项的第二个规则集是这样的,候选者A能够根据候选者A产生两个必需的签名6a,8a的能力来要求领取资金(图4)。下标脚本(如下所示)是15个中的2个多签名,即它要求与在一组15个公钥字段中找到两个公钥字段相对应的签名。如果投票者少于13名,则字段可能少于15个。
[0120] 该下标脚本具有双重目的。这些职责中的第一个是包含(最多13个)加密投票,第二个职责是,如果候选者A能够产生公钥PubA和PubAm的相应签名8a,6a,则允许候选者A领取汇集的比特币。PubA=kAG,并且使用在v^1值内找到的秘密值来获得PubA的签名8a,以便找到kA。当然,这取决于脚本中候选者A是否有足够的票数。对候选者A的每次投票都有一个密钥共享kA,i,并使用候选者A的公钥(最好是PubAm)加密。PubAm是候选者A生成的公钥,因此候选者A应该能够为该(主)公钥生成签名6a。PubAm的签名6a是候选者A的责任,因为候选者A会生成PubAm,并且将拥有PubAm的对应私钥PrivAM。
[0121] 第三个规则集的内容与第二个规则集相似,意在包含更多投票,并基于至少提供两个签名而授予或拒绝候选者B要求VCT资金的能力。如下所示
[0122]
[0123] 在这种情况下,在m/n下标脚本中,最多又有13个字段适合投票/元数据,同时分配了两个字段用作合法公钥。实际上需要签名的公钥是PubB和PubBm。PubB=kBG是与kB,i份额相对应的公钥。在候选者B的m/n脚本中至少存在t+1的对候选者B的投票,这将允许候选者B利用kB,i密钥份额为PubB生成签名8b。候选者B生成了PubBm,因此应该能够产生其签名8a。提供这两个签名8a,8b将允许候选者B收集投票承诺交易2的汇集比特币。
[0124] 应当指出的是:在两个m/n下标脚本中的哪一个找到加密的投票并不重要;所有 在区块链中对于两个候选者都是可见的,并且两个候选者都可以尝试从候选者A或候选者B的m/n下标脚本解密 以检索其公钥的密钥份额,对此签名是必须的。
[0125] t+1是候选者获胜所需的门限投票数量,其中t是在基于多项式的秘密共享机制中使用的多项式次数。
[0126] 选择t时应确保t+1是两个候选者之间的选择,从而保证t+1是多数票。
[0127] 参考图3,示出了体现本发明的过程300的流程图。最初,在步骤302,对投票者人数n做出决定。使用上述密钥共享技术,在步骤304,为私钥kA创建n个份额。类似地,为密钥kB创建n个份额。这些私钥分别对应于公钥PubA和PubB。
[0128] 然后,在步骤306中,为每个投票者提供kA的专属份额kA,i和kB的专属份额kB,i。然后在步骤308中,投票者使用kA,i密钥份额进行协作,以使用秘密共享合并计算PubA=kAG,并且类似地使用kB,i密钥份额进行协作以计算PubB=kBG。然后,在步骤310,PubA和PubB被传达给所有投票者和候选者,并且根据PubA和PubB,使用密钥共享方案来验证密钥份额。然后,候选者A和B在步骤312每个分别创建单独的“主”公钥PubAm和PubBm。
[0129] 在步骤314,每个投票者通过将其秘密份额与其选择的候选者的ID进行级联来投票,以提供vi=kB,i||IDCandidateB
[0130] 在步骤316,每个投票者用其选择的候选者的公钥加密其投票。例如,对于候选者B,加密的投票为:
[0131] 在步骤318,每个投票者将其投票贡献给列表,这是使用如上所述的洗牌技术来完成的,使得用户和投票之间没有链接。然后在步骤320创建投票者承诺交易2。这包括来自每个投票者的输入。每个投票者贡献一笔xBTC比特币。
[0132] 在步骤322,值nxBTC的投票者承诺交易2的输出由m/n脚本控制,其中,公钥元素适合于用作加密投票的存储。投票者承诺交易2的此输出脚本允许:向每个投票者退还xBTC
候选者A使用签名σ(Am)和σ(A)收集xBTC
候选者B使用签名σ(Bm)和σ(B)收集nxBTC
[0133] 然后在步骤324,退款交易12被创建且被签名,并将副本分发给每个投票者。然后投票者承诺交易2被提交到区块链。
[0134] 在步骤326,候选者B试图解密所有的 值。如果解密过程显示候选者B的ID为vi的后一段,则候选者B将vi的第一部分识别为秘密份额kB,i。如果候选者B获得足够的选票(份额),则他可以对输出进行签名。候选者A执行与候选者B基本上相同的过程。
[0135] 最后,如果在步骤328,没有候选者能够在退款交易12的nLockTime之前领取他们的获胜奖金,则任何投票者都将提交退款交易12,并且每个投票者的承诺资金将减去交易费用被退还给投票者。
[0136] 现在转向图7,提供了可用于实践本发明的至少一个实施例的计算设备2600的说明性简化框图。在各种实施例中,计算设备2600可以用于实现以上示出和描述的任何系统。例如,计算设备2600可以用作数据服务器、网络服务器、便携式计算设备、个人计算机或任何电子计算设备。如图7所示,计算设备2600可以包括具有一个或多个级别的高速缓存存储器的一个或多个处理器以及可以与包括主存储器2608和持久性存储器2610的存储子系统
2606通信的存储器控制器(统称为2602)。如图所示,主存储器2608可包括动态随机存取存储器(DRAM)2618和只读存储器(ROM)2620。存储子系统2606和高速缓冲存储器2602,可以用于存储信息,诸如与本发明中所描述的交易和区块相关联的细节。处理器2602可用于提供本发明中所描述的任何实施例的步骤或功能。
[0137] 处理器2602还可以与一个或多个用户界面输入设备2612、一个或多个用户界面输出设备2614以及网络接口子系统2616通信。
[0138] 总线子系统2604可以提供用于使计算设备2600的各个组件和子系统能够按预期彼此通信的机制。尽管总线子系统2604被图示为单个总线,但是总线子系统的替代实施例可以利用多个总线。
[0139] 网络接口子系统2616可以提供到其他计算设备和网络的接口。网络接口子系统2616可以用作从计算设备2600从其他系统接收数据以及向其他系统传输数据的接口。例如,网络接口子系统2616可以使数据技术人员能够将设备连接至网络,使得数据技术人员能够在远程位置(例如数据中心)将数据传输到设备并从该设备接收数据。
[0140] 用户界面输入设备2612可以包括一个或多个用户输入设备,如键盘;集成鼠标、轨迹球、触摸板或绘图板等点击设备;扫描仪;条形码扫描仪;集成到显示器中的触摸屏;语音识别系统、麦克风等音频输入设备;和其他类型的输入设备。通常,术语“输入设备”的使用旨在包括用于将信息输入到计算设备2600的所有可能类型的设备和机制。
[0141] 一个或多个用户界面输出设备2614可以包括显示子系统、打印机或诸如音频输出设备等的非可视显示器。显示子系统可以是阴极射线管(CRT)、液晶显示器(LCD)、发光二极管(LED)显示器或投影仪等平板设备,或其他显示设备。通常,术语“输出设备”的使用旨在包括用于从计算设备2600输出信息的所有可能类型的设备和机制。一个或多个用户界面输出设备2614可以用于展示用户界面,以便在适当的时候方便用户与执行所述流程及其变化的应用程序进行交互。
[0142] 存储子系统2606可以提供用于存储基本编程和数据构造的计算机可读存储介质,其中,基本编程和数据构造可以提供本发明的至少一个实施例的功能。当由一个或多个处理器执行时,应用程序(程序、代码模块、指令)可以提供本发明的一个或多个实施例的功能,并且可以存储在存储子系统2606中。这些应用程序模块或指令可以由一个或多个处理器2602执行。存储子系统2606可以另外提供用于存储本发明使用的数据的存储库。例如,主存储器2608和高速缓冲存储器2602可以为程序和数据提供易失性存储。永久性存储装置2610可以为程序和数据提供永久性(非易失性)存储,并且可以包括闪速存储器、一个或多个固态驱动器、一个或多个具有相关可移动介质的光盘驱动器(例如CD-ROM或DVD或Blue-Ray)以及其他类似存储介质。这样的程序和数据可以包括用于执行如本发明中所描述的一个或多个实施例的步骤的程序,以及与如本发明中所描述的与交易和区块相关联的数据。
[0143] 计算设备2600可以是各种类型,包括便携式计算机设备、平板计算机、工作站或以下描述的任何其他设备。另外,计算设备2600可以包括能通过一个或多个端口(例如,USB、耳机插孔、闪电连接器等)连接到计算设备2600的另一设备。可以连接到计算设备2600的设备包括接受光纤连接器的多个端口。因此,该设备可以将光信号转换为电信号,该电信号可以通过将设备连接至计算设备2600的端口进行传输以进行处理。由于计算机和网络的不断变化的性质,图7中描述的计算设备2600仅作为说明该设备的优选实施例的具体示例。与图7中描绘的系统相比,许多具有更多或更少组件的其他配置也是可能的。
[0144] 应当说明的是,上述实施例说明而非限制本发明,在不脱离本发明的由所附权利要求限定的范围的情况下,本领域技术人员将能够设计出许多替代性实施例。在权利要求中,括号中的任何附图标记不应解释为对权利要求的限制。词语“包括(comprising)”和“包括(comprises)”等并非在整体上排除其他元件和步骤的存在,尽管这些元件和步骤并没有在任何权利要求或说明书中列出。在本说明书中,“包括(comprises)”意指“包括(includes)或由......组成(consists of)”,“包括(comprising)”意指“包括(including)或由......组成(consisting of)”。元件的单数引用不意味着排除这些元件的复数引用,反之亦然。本发明可以借助包括若干不同元件的硬件,以及借助适当编程的计算机来实施。在列举了若干装置的设备权利要求中,这些装置中的若干个可以由硬件的同一个部件来体现。不争的事实是,在相互不同的从属权利要求中列举了某些方法,并不代表这些方法的结合不能获得有益效果。