多阶段可重写区块链的制作方法

文档序号:17049396发布日期:2019-03-05 19:53阅读:225来源:国知局
本申请要求于2017年9月1日提交的美国临时专利申请序列号62/553,597(代理人案卷号15718/278,名称为“multiple-phaserewritableblockchain”)的优先权,其全部内容通过引用并入本文。本公开涉及复杂的现实世界系统中的数据验证、确认和重写。
背景技术
::在巨大的客户需求的推动下,电子产品和通信技术的快速进步已经导致了电子交易和记录保存的广泛采用。作为一个示例,诸如比特币(bitcoin)的电子货币(e-currencies)已经在每年的数百万笔交易中取代了纸币。对这种电子交易的验证和记录的改进将继续增加对从事电子交易的操作员而言可用的特征和选项。附图说明图1示出了区块链的两个示例视图。图2示出了对图1的示例区块链的两个示例重写。图3示出了示例区块链处理系统。图4示出了示例区块链重写系统。图5示出了示例重写管理逻辑。图6示出了示例重写逻辑。图7a示出了两个示例冲突搜索。图7b示出了使用冲突的对区块链的示例重写。图8示出了与示例更新后的区块链部分配对的示例区块链部分。图9示出了示例双链路区块链部分。图10示出了示例混合区块链。图11示出了示例可重写区块链场景。图12示出了示例分布式密钥秘密区块链重写场景。图13示出了示例区块链记录维护场景。图14示出了示例物联网可重写区块链场景。图15示出了示例区块链循环。图16示出了示例区块链阶段逻辑。图17示出了示例多阶段区块链健康账本(ledger)维护场景。图18示出了示例多阶段区块链分阶段部署场景。具体实施方式区块链可以包括一系列数据块,这些块包括代码,诸如加密散列或校验和,其可以与该系列中的先前块的内容编码一致。在一些情况下,在维护完整性代码的自一致性的同时,确定产生相同完整性代码的块的多个不同集合可能是无解的、过度计算复杂的、或者足够费力的以至阻碍了篡改区块链的内容的尝试。然而,在一些实施方式中,可信方可以访问密钥秘密或密钥秘密的一部分,以使得该方无论单独行动或与拥有该密钥秘密的其他部分的那些方一起,均能够编辑区块链内容而不会留下篡改的迹象。在各种系统中,多方可以使用基于区块链的文件或账本来维护事件、交易或其他更新的防篡改记录。在一些情况下,区块链可以在由不可信方(例如不拥有密钥秘密的一方)对区块链做出改变后注册篡改。因此,各方可以单独验证由其他方的更新是否有效并且与区块链的先前数据块是否编码一致。完整性代码的自一致性允许区块链的更新被验证,即使该方缺少用作参考的区块链的存档版本。当对区块链中的一个或多个数据块的重写没有引入区块链中的块的完整性输出和数据块内容之间的代码不一致时,该重写可以被表征为保留了区块链的有效性。区块链可以通过完整性代码来保护。当特定数据被提供作为完整性代码的输入时,完整性代码可以产生特定的完整性输出。在一些情况下,当与特定数据不同的数据作为输入被提供给完整性代码时,完整性代码可以产生不同的完整性输出。在示例场景中,来自从数据块的特定输入数据生成的完整性代码的完整性输出被存储,并且数据块稍后被改变。如果改变的数据作为输入被提供给完整性代码,则完整性代码可以产生与所存储的完整性输出不同或者编码不一致的完整性输出。因此,在该示例场景中可以检测到该改变。区块链可以包括一系列块,其中该系列中的每个后续块为先前块保持完整性输出。该系列可以形成块的链,其中每个后续块保持从紧接在前的块中存在的数据生成的完整性输出。因此,如果块被改变,与被存储在后续块中的完整性输出的编码不一致可以被检测到。由于完整性输出是块中所存储数据的一部分,因此对完整性输出本身的改变也可以通过编码不一致来检测。完整性代码的这种自一致性可以在隐蔽篡改方面被用来保护区块链。当由完整性代码保护时,防篡改的改变可以包括几乎任何改变,对于该改变而言,用于区块链的完整性代码的完整性输出与区块链内数据之间的编码不一致可以被检测到。例如,区块链的块中的数据可以被散列、通过校验和来运行、或者应用另一完整性代码。如果块中的数据稍后被发现与散列、校验和或其他完整性代码的完整性输出相冲突,则该改变可以被标识为防篡改。当完整性代码被应用于当前在块中的数据时,在当前在块中的数据不会产生与先前获得的完整性输出相同或等同的完整性输出时,矛盾可能发生。当做出对块的改变并且没有与先前所存储的完整性代码的完整性输出的编码不一致在之后被检测到时,该改变可以是非防篡改的。在一些情况下,非防篡改的重写可以通过利用具有产生相同(或等同)完整性输出的不同数据内容的第二块替换第一块来实现。在一些情况下,区块链中的一些块可以包括不再适合被包括在区块链中的信息。例如,块可能在一段时间后或在确定数量的后续条目之后到期、过时的或其他不必要的私人信息可能被包括在块中、不准确的条目可能被包括在块中、对使用区块链的一方或多方有害的信息可能被包括在块中、不完整的信息可能被包括、或者其他不适合的信息可能被包括。因此,可信方,例如中立的第三方、管理方或一组单独的不可信方,可以以非防篡改的方式重写、移除或补充被包括在块中的数据。下面所描述的系统和技术实现了用于重写区块链中的块的技术解决方案,以允许可信方从区块链中校订(redact)信息,而不会引起区块链为其预期目的而失败。例如,各方可以使用修改后的区块链,就好像它是较早且未经修改的区块链一样。区块链重写可以被用来执行低级别(例如,从硬件架构立场而言)的操作,诸如存储器重写、删除和添加。因此,技术和架构可以改进计算机系统的底层硬件的操作,因为系统可以利用存储实现可验证性的数据的区块链协议。例如,用于安全系统的操作系统软件可以被存储在区块链有效载荷中,以保护数据免受恶意软件、未授权方、未授权设备或其他非预期/未授权的修改的操纵。附加地或备选地,块可以表示在做出更新时能够被分配的数据的最小增量。例如,在更新期间,一个或多个更新的块可以从整个区块链中被单独地发送。然而,在一些情况下,至少整个区块链可以被分配有单独的有效更新。例如,当新的安全交易被执行并被添加到经由区块链保护的账本时,整个区块链(例如,完整交易历史)可以在添加有更新的交易的情况下被重新分配。允许截断、适当扩缩(right-sizing)、扩展或其他区块链尺寸调整的区块链重写系统(诸如本文所描述的示例性实施方式)可以通过允许调整在区块链更新和分配期间所消耗的数据开销来改善底层硬件的操作。另外,可信方重写区块链的能力可以通过提供建立的重写解决方案来改善抗篡改性。因此,与其由于不适当的内容而不得不抛弃区块链,可信方而是可以重写现有的区块链。因此,与重新创建新的区块链相比,区块链重写显著地提高了系统效率。区块链重写还可以通过通知系统其没有收到区块链丢弃的事先通知来降低恶意方使用已解散的区块链来欺骗系统的可能性,该已解散的区块链因不适当内容而已被丢弃。因此,可重写区块链可以具有改进的数据安全性和抗篡改的技术效果。换言之,本文所讨论的技术和架构包括市场上现有技术的具体的、现实世界的应用和对市场上现有技术的改进。此外,包括那些用于可重写区块链、分布式密钥秘密、双链路区块链、循环的技术和架构以及所讨论的其他技术和架构,要求人们以与公认的知识相反的方式来进行。特别地,区块链分布式数据库的常规方法要求区块链的不变性作为基础特征。换种方式说,在先前的工作中,不变性已被反复解释为建立区块链的技术价值的基本特征。区块链中的不变性被错误地看待并被指示为确保使用区块链的各方来信任区块链中所包含的数据的有效性的必要方式。因此,增加了对区块链的可重写性的本文所描述的技术和架构以与公认的知识相反的方式来进行。通过引入可重写性、同时仍然保持区块链的高安全性且因此保持高技术价值,本技术和架构以与公认的知识相反的方式来进行。如此,尽管本技术和架构与现有教导有很大的不同,但本技术和架构在具有可变性的情况下仍然提供了区块链中的高级别信任。图1示出了区块链的两个示例视图100、150,其中每个后续块包括使用先前块作为输入的完整性代码(例如,散列、变色龙散列或其他完整性代码)。例如,块b1104包括在该完整性输出字段124中的完整性输出ic(b0),该完整性输出字段124从用作完整性代码的输入的先前块b0102的内容中来确定。被用在确定ic(b0)中的b0102的内容可以包括b0内的任何或所有字段,诸如数据00121、[空]完整性输出字段122或块id123。块的数据字段(例如,数据00121、数据10131、和其他数据字段)可以被用来存储任何类型的数据。例如,区块链数据字段可以保存账户数据、个人数据、交易数据、货币值、合同条款、文档、版本数据、链路、指针、档案数据、其他数据或它们的任何组合。块中不被用来确定后续块中的完整性输出的字段可能不一定由区块链保护。例如,这些字段可以被修改而不会在块之间生成编码不一致。此外,如果任何完整性输出字段未被用在确定针对链中后续块的完整性输出中,则区块链可能不一定确保上面所讨论的块之间的编码一致性,因为不安全的完整性输出可能被改变而不会生成篡改的证据。因此,在各种实施方式中,当确定针对区块链中的后续块(例如,下一个块)的完整性输出时,块的完整性输出字段和数据有效载荷的至少一个受保护部分被使用。类似地,块b2106的完整性输出字段125中的ic(b1)可以基于块b1104内的字段,包括例如块b1104的完整性输出字段124、数据字段或块id字段中的任一个。在示例中,完整性代码ic可以是变色龙散列,如下所述。区块链的块可以经由完整性代码被彼此锁定152。在某种意义上,因为每个块中的完整性代码输出字段基于生成完整性输出时(例如,当块被添加到链中时)在先前块中的内容,所以块被彼此锁定。因此,如果在当前块被添加之后先前块发生改变,则该改变将是防篡改的,因为该改变将与被存储在当前块中的完整性输出编码不一致。因此,一旦具有基于先前块的存储的完整性输出的当前块被添加到区块链,则先前块的内容被“锁住(lock-in)”。在图1中的示例区块链中,一旦在其完整性输出字段中包含ic(b1)的b2106被添加到区块链中,则b1104的内容可以被锁定。结果,由b1104锁定的b0102的内容由b2106进一步保护,因为b2106防止b1104以非防篡改方式被改变。在示例场景中,可重写区块链可以使用变色龙散列作为完整性代码来实现,如下所述。然而,几乎任何代码都可以被使用,对于不具有允许编辑的密钥秘密的各方来说,篡改是不言自明的。图2示出了图1的示例区块链的两个示例重写200、250。在第一示例200中,块b2202用具有新内容的块b2'204来替换。新的块b2'204包括使用密钥秘密生成的内容,以使得当使用块b2'204作为输入时生成的完整性输出与使用原始块b2202作为输入的完整性输出相同。例如,ic(b2)=ic(b2')。在第二示例250中,块b2202被移除。来自原始链的块b1206可以用块b2'208来替换,以与块b3210中所包含的完整性输出编码一致。例如,块b1'208可以包括使用密钥秘密生成的内容,以使得更新的块b1'208可以看起来是在后续块b3210之前的正确块(并且就区块链完整性代码而言是正确的块)。即,在块b2的删除之后b1被替换,以使得b1'可以紧接在b3之前,而不会违反区块链完整性代码。在各种实施方式中,不同的可重写区块链可以具有不同的密钥秘密。因此,能够重写给定区块链的可信方不一定能够充当可信方并重写第二个不同的区块链。针对不同的区块链使用不同的密钥秘密可以通过公开单个密钥秘密来防止多个区块链同时受到损害。然而,使用相同“主”密钥秘密的多个区块链可以由区块链系统生成(例如,如果密钥秘密可以与多个不同的区块链系统一起使用,则该密钥秘密可以是主密钥秘密)。使用多个区块链之间的共同秘密可以允许与使用针对不同区块链的不同密钥秘密相比更精简的管理。附加地或备选地,区块链可以具有允许非防篡改编辑的多个不同的密钥秘密。在示例场景中,主密钥秘密可以与多个区块链一起使用,每个区块链具有单独的密钥秘密,该单独的密钥秘密不一定允许在由该主密钥秘密覆盖的其他区块链上进行非防篡改编辑。例如,区块链a、b和c都可以允许用主密钥秘密mk重写。此外,区块链a可以具有单独的重写密钥秘密a1,区块链b可以具有单独的重写密钥秘密b1,并且区块链c可以具有单独的重写密钥秘密c1。在该示例中,处理系统可以使用mk或b1重写区块链b,但不能用a1或c1重写区块链b。此外,在一些实施方式中,授予密钥秘密可以被用来向可信方发布密钥秘密。例如,加密的缓存ec可以包括用于区块链a、b和c的附加密钥秘密(例如,密钥秘密a2...an,bn...bn,c2...cn)。拥有授予密钥秘密gk以解密ec并允许向新的可信方发布所存储密钥的可信方。在一些情况下,主密钥秘密可以兼作授予密钥秘密。例如,处理系统可以使用主密钥秘密来生成用于重写的块内容,并且主密钥秘密可以用作针对密钥秘密的加密缓存的解密密钥。另外,下面所讨论的分布式密钥方案可以被应用于授予密钥秘密和主密钥秘密。在一些系统中,可信方可以单独执行对区块链的重写。然而,相同的可信方可以使用下面所讨论的任何分布式密钥方案来组合它们的密钥以取得与授予密钥或主密钥相关联的权限。例如,三个单独的可信方可以各自执行重写而无需其他方的同意。然而,这三方可能被迫将他们的密钥秘密结合(例如协调)起来以取得授予特权并授予第四方其自己的密钥秘密。在各种实施方式中,通过由特定的预定方、由给定类别的各方、由所有方或由另一组定义的当事方来协调指定的阈值数量的当事方,可以获得增加的特权。分布式密钥秘密方案可以确定用于该协调的参与级别规则。在各种实施方式中,密钥秘密可以使用密钥秘密分配方案被指派给操作员。密钥秘密指派方案可以包括基于操作员身份、关联、优先级或其他基础的指派方案。在一些情况下,区块链被标记为指示其可以被编辑。指示区块链是可重写的标记或字段可以标识具有重写区块链的权限的可信方。这可以帮助有兴趣重写区块链的各方来标识能够执行重写的可信方。例如,区块链可以伴随有在区块链上描述的目的、来源、操作参数或其他信息的元数据。用于重写的标记可以被合并在元数据内。然而,当这些元数据被包括在区块链之外时,其可以在没有篡改证据的情况下被改变。允许元数据被自由地改变,可以减少执行编辑所需的计算资源并增加可以纠正元数据错误的参与方的数量。在其他系统中,处理系统可以将这样的元数据写入区块链本身的块中、例如写入块的专用字段或数据有效载荷中。将元数据写入区块链本身可以防止未授权方修改区块链元数据(例如,出于潜在的恶意目的)。在一些实施方式中,可信方的存在可以对不可信方或可信方的一部分保密。在一些情况下,完整性代码可能不一定通过对其操作的检查来提供指示,该指示为可信方可以编辑区块链中的条目。即,生成完整性代码的算法本身并不简单地揭示它支持区块链重写。将可信方的存在保密可以阻止各方试图窃取或以其他方式获取可信方的密钥秘密。此外,如果各方假定区块链无法被另一方编辑却没有明显的篡改,那么各方可能会对区块链有增加的信心。在一些实施方式中,具有密钥秘密知识的实体可以对区块链进行修改。该密钥秘密可能全部或部分地由操作员、集中审计员或其他方所拥有。附加地或备选地,密钥的份额(例如,部分)可以在几个单独的不可信方之间来分配。完整性代码可以是连接两个块的链路上的虚拟挂锁。打开虚拟挂锁的密钥秘密可以根据特定应用的要求来管理。例如,在商业谈判(或政府条约谈判)中,允许修改拟议合同(条约)条款的密钥秘密可以由中立第三方持有。附加地或备选地,密钥秘密的相等部分(例如,两分之一、三分之一)可以由谈判中的每一方持有,以使得条款可以在所有各方或定义的多方的同意下被修改。在协作软件设计实施方式中,密钥秘密可以以部分被分配给利益相关者,以在允许对某些软件代码的修改之前推行共识。下面,讨论了示例密钥秘密分配方案,包括集中式方案和分布式方案。然而,其他方案是可能的。图3示出了示例区块链处理系统(bps)300。bps300可以包括系统逻辑314以支持对区块链的验证和重写。系统逻辑314可以包括处理器316、存储器320和/或其他电路,其可以被用来实现区块链处理逻辑342。存储器320可以被用来存储在区块链重写和块添加中所使用的区块链元数据322和/或区块链数据324。存储器可以进一步包括实现区块链处理的程序指令,以及一个或多个支持数据结构,例如编码对象、模板或其他数据结构,以支持对区块链的更新的验证并检测篡改的证据。存储器可以进一步包括标记323,其可以指示特定的区块链是否能够被编辑。在示例中,标记323可以使用区块链内的特定字段内的比特或区块链元数据来实现,以指示可编辑性。此外,存储器320可以包括参数字段326,其可以包括可信方的联系信息的标识,例如姓名、地址、电话、电子邮件或其他联系信息。bps300还可以包括一个或多个通信接口312,其可以支持无线的(例如蓝牙、wi-fi、无线局域网(wlan)、蜂窝(第三代(3g)、第四代(4g)、长期演进高级(lte/a)))和/或有线的以太网、千兆以太网、光网络协议。通信接口312可以支持与对区块链进行更新或执行区块链传输的其他方的通信。bps300可以包括电源管理电路334以及一个或多个输入接口328。bps300还可以包括用户界面318,其可以包括人机界面和/或图形用户界面(gui)。gui可以被用来将来自基于区块链的验证的数据呈现给bps300的操作员。用户界面318还可以利用工具渲染gui以支持对区块链的块添加。图4示出了示例区块链重写系统(brs)400。brs400可以由例如在区块链上执行校订、修订或补充的可信方来使用。例如,补充可以包括向现有块添加内容。即使在不支持非防篡改重写的区块链中,被授权的操作员也可以向区块链添加新的块,例如新的交易记录。然而,对现有块的修改(包括添加)可以生成篡改的证据,除非由拥有密钥秘密的可信方来执行。brs400可以包括系统逻辑414以支持对区块链的验证、更新和重写。系统逻辑414可以包括处理器416、存储器420和/或其他电路,其可以被用来实现区块链处理逻辑442、重写管理逻辑(rml)441和/或区块链阶段逻辑1600(在下面讨论)。存储器420可以被用来存储在区块链重写和块添加中使用的区块链元数据422和/或区块链数据424。存储器420可以进一步存储密钥秘密421,诸如加密密钥值、陷门信息或其他秘密值,这可以允许区域链的非防篡改重写。在一些情况下,密钥秘密421可以被存储在受保护的存储器480中,诸如加密的文件或数据驱动器、物理安全的驱动器、被耦合到用于防盗对策的触发器的驱动器、或者自删除驱动器,以防止意外或暗中泄露所存储的密钥秘密421。存储密钥秘密的存储器可以包括由可信方直接或间接拥有或控制的可信存储器或其他存储器。存储器420可以进一步包括应用和结构,例如编码对象、模板、或者一个或多个其他数据结构,以支持对区块链的更新的验证并检测篡改的证据。存储器可以进一步包括标记423,其可以指示特定区块链是否能够被编辑以及可信方的身份。brs400还可以包括一个或多个通信接口412,其可以支持无线的(例如,蓝牙、wi-fi、wlan、蜂窝(3g、4g、lte/a))和/或有线的以太网、千兆以太网、光网络协议。通信接口412可以支持与对区块链进行更新或执行区块链传输的其他方的通信。附加地或备选地,通信接口412可以支持安全信息交换,诸如用于在可信方之间发送和接收密钥秘密的安全套接字层(ssl)或基于公钥加密的协议。此外,安全协议可以被用来组合单独的不可信方之间的密钥秘密,每个单独的不可信方都具有密钥秘密的某个部分,如下所述。brs400可以包括电源管理电路434以及一个或多个输入接口428。brs400还可以包括用户界面418,其可以包括人机界面和/或图形用户界面(gui)。gui可以被用来将来自基于区块链的验证的数据呈现给brs400的操作员。附加地或备选地,用户界面418可以被用来向操作员呈现区块链重写工具。在一些情况下,用户界面418可以包括具有工具的gui以便于区块链重写和删除。用于重写的gui工具可以包括“所见即所得”工具,其允许操作员例如使用类似文字处理器的工具、类似网络编辑的工具、类似文件浏览的工具或以上任何组合来操纵区块链的内容。附加地或备选地,用户界面418可以包括命令行编辑工具。这些工具,无论是基于文本的还是基于图形的,都可以允许操作员访问密钥秘密并对其被授权的区块链进行编辑。在一些情况下,这些工具可能会对缺乏对其正在尝试编辑的区块链的密钥秘密的操作员拒绝写入功能。然而,在一些实施方式中,这些工具可以允许这种未经授权的编辑,因为它将会引起防篡改重写,从而将使得对区块链的未经授权的编辑无效。图5示出了示例rml441,其可以在电路中实现或利用电路实现。rml441可以处理密钥秘密的管理和重写命令的实现。例如,rml441可以确定用于特定区块链的密钥秘密的可用性,并将这些密钥秘密传递给重写逻辑600(在下面讨论)以用于重写的执行。rml441还可以处理重写命令的接收或者用于区块链重写的自动化的命令的接收。一旦rml441标识了所请求的改变和所涉及的区块链,rml441就可以访问该区块链(502)。rml441可以确定brs400的存储器420是否保持允许对所访问的区块链进行重写的密钥秘密(504)。如果存储器420未存储密钥秘密,则rml441可以使用通信接口412确定密钥秘密是否可经由安全通信或经由密钥秘密的部分的安全组合来访问(506)。例如,这些部分可以包括由单独不可信的各方持有的密钥秘密的部分,但作为一组则这些部分被组合成完整的密钥秘密、从而形成可信方。在一些实施方式中,密钥秘密或其部分可以使用通信接口412经由安全通信来访问,例如以防止在通信期间密钥秘密的截取。如果密钥秘密不能被访问,则rml441可以经由gui418指示对区块链的非防篡改重写不可用(508)。如果密钥秘密在存储器(504)中或经由安全通信(506)是可访问的,则rml441可以提示操作员以用于对区块链的重写(510)。附加地或备选地,rml441可以自动获得重写(511)。例如,重写可以从重写队列可用、被嵌入在先前所接收的命令中、从其他区块链获得、从由系统标识标识为恶意代码或其他不适当的内容中确定、或者是由rml441自动获得的其他重写。重写可以被存储为标识要对一个或多个块进行的改变的命令、以及在内容要通过改变被添加的情况下要被写入到该块的内容。命令本身可以包括要被写入的内容,或者备选地可以包括指向该内容位置的指针。现在参考图6,rml441可以调用重写逻辑600来执行重写(512)。例如,当非防篡改的重写可用时,rml441可以调用重写逻辑600来执行对该块的重写。图6示出了示例重写逻辑600,其可以在电路中实现或利用电路被实现。重写逻辑600可以访问区块链(602)。例如,重写逻辑600可以访问存储有区块链的存储器420。附加地或备选地,重写逻辑600可以经由网络通信接口(例如,通信接口412)而访问区块链。在一些情况下,如上所述,重写逻辑600可以使用安全连接或在安全存储器上访问区块链。区块链可以包括由完整性代码保护的一个或多个数据块。例如,重写保护的加密散列函数(诸如没有用于允许非防篡改重写的密钥秘密的散列函数)、变色龙散列、循环冗余校验(crc)、校验和或其他完整性代码可以被用来保护区块链内的数据块。在一些实施方式中,单独的数据块可以由特定的完整性输出来保护,该特定的完整性输出与块的数据内容编码一致。例如,当将完整性代码应用于产生该完整性输出的块的内容时,完整性输出可以与块的内容编码一致。当完整性输出与其保护的数据编码一致时,数据可以被视为有效。如上所述,该特定完整性输出可以被放置在相邻块内,以防止或阻碍以非防篡改方式重写数据内容的尝试。此外,如下面关于混合区块链所讨论的,一些区块链可以包括能够允许非防篡改重写的(例如,单独块或块组的)部分,以及不一定允许由可信方进行非防篡改重写的部分。重写逻辑600可以访问用于区块链的完整性代码的密钥秘密、诸如加密密钥或陷门信息(604)。例如,密钥秘密可以与区块链的完整性代码配对。密钥秘密可以包括允许系统(例如brs400)计算冲突的数据,例如针对完整性代码产生相同完整性输出的两个不同的数据块。使用计算的冲突,设备可以重写区块链,而不会使重写的块与完整性代码编码不一致。例如,操作员可以指示brs400使用密钥秘密计算冲突并重写区块链。重写逻辑600可以例如从rml441接收命令以对区块链执行重写(606)。例如,对于希望替换或删除来自特定块的数据(例如,内容)的可信方,该命令可能已经代表操作员被接收。操作员可以例如在通过人机接口向brs400发出的命令中指示来自用户界面的输入设备的原始数据和替换数据。附加地或备选地,替换数据的命令可以经由网络通信接口被接收,例如从与可信方相关联的终端接收。重写逻辑600可以从rml441接收执行重写的命令。执行重写的其他命令可以源自自动源,诸如上面关于rml441所描述的那些源。重写逻辑600可以处理密钥秘密、替换数据和原始数据,以确定使得替换数据和附加数据产生与原始数据产生的完整性代码相同的完整性输出的附加数据(608)。因此,替换数据和附加数据可以取代原始数据,而不必创建篡改的证据。在完整性代码是变色龙散列的示例场景中,用于变色龙散列的密钥秘密允许重写逻辑600确定对于几乎任何原始数据内容的冲突。在该示例场景中,使用密钥秘密,当与由可信实体所选择的替换数据组合时,重写逻辑600可以计算产生与任何给定原始数据相同的散列输出的附加数据。删除操作可以以与其他重写相同或类似的方式来执行。然而,不是选择替换数据和附加数据以与相邻块编码一致(例如,区块链中紧随其后或紧随其前的块)。替换数据和附加数据可以被选择以与区块链上游或下游的其他块编码一致。例如,如果重写块的替换数据与区块链中的更下游的块(例如,非相邻块)的数据发生冲突,而不是与正被替换的块的数据冲突,则一个或多个后续块(例如,区块链中紧随重写块之后的一个或多个连续块)可以被移除。附加地或备选地,如果替换数据中的完整性输出字段包括在被替换的块前面的两个或更多块的块的完整性输出,则该被替换的块前面的一个或多个块可以被删除。因此,当重写包括删除时,重写逻辑600可以删除在被重写的块之前或之后的一个或多个块(609)。一旦重写逻辑600确定了正确的附加数据,重写逻辑600就可以生成附加数据(610)并将附加数据与替换数据组合(612)。在一些实施方式中,特别是在区块链的可重写性被保密的方案中,附加数据的存在可以被掩蔽。因此,仅仅通过注意附加数据的存在,不拥有密钥秘密的一方将无法立即将可重写区块链标识为可重写的。例如,附加数据可以被放置在包含具有另一标识目的的数据的块内的字段中。例如,附加数据可以被附加到完整性输出字段或被附加到“随机性”字段,如下面关于图8所讨论的。然而,在一些情况下,在其他情况下难以理解的、拒绝明确标识针对附加数据的具体目的,能够足以防止不可信的操作员怀疑他们正在使用的区块链是可重写的区块链。在各种实施方式中,变色龙散列可以由可信方和不可信方标识,以便于块内容的验证。然后,重写逻辑600可以写入与附加数据组合的替换数据来代替原始数据(614)。例如,重写逻辑600可以利用组合的替换数据和附加数据来覆盖原始数据。因为该组合的数据与原始数据的完整性输出编码一致,所以原始数据的覆盖至少关于完整性代码能够以非防篡改方式来执行。换言之,重写可以是非防篡改的,即使用替换数据单独替换原始数据也将会引起防篡改重写。如下所述,双链和多链区块链可以被用在一些实施方式中。因此,利用区块链的第一完整性代码来编码一致地重写区块链,可能不一定引起完全非防篡改的重写。替换数据可以包括:完全重写的数据;原始数据的修改版本,诸如原始数据的校订版本;具有添加的原始数据;原始数据的完全删除;或其他数据。本文所讨论的技术和架构允许对可以在采用基于区块链的技术的服务(诸如分散服务)中实现的区块链的内容进行重写。对区块链的非防篡改、有效性保留或其他类型的重写可以在各种场景中被使用。例如,场景可以包括从区块链中移除不正确的内容、为使用可重写存储的应用提供支持、遵守诸如“被遗忘的权利(therighttobeforgotten)”的政府法规、或其他场景。包括用于可重写区块链、分布式密钥秘密、双链路区块链、循环的技术和架构以及本文所讨论的其他技术和架构,可以结合各种区块链共识技术被使用。例如,在一些情况下,可重写区块链可以与基于工作的共识机制的证明一起使用。因此,操作员(例如,不可信操作员)可以在找到预定义挑战的解决方案并且显示针对该解决方案的工作证明时,被授予将块附加到可重写区块链的能力。在一些实施方式中,基于“实用拜占庭容错(practicalbyzantinefaulttolerance)”的共识机制可以被实现。此外,一些实施方式可以使用“智能合约(smartcontract)”类型的共识机制,其中操作员可以在显示遵守智能合约的条款或规则时来附加块。完整性代码可以独立于区块链中所使用的特定共识机制来实现。因此,完整性代码、包括支持区块链重写的完整性代码,可以用几乎任何区块链共识机制来实现。在一些实施方式中,当给定密钥秘密时能够允许高效确定散列冲突的变色龙散列函数可以由系统(例如,brs400)使用。在一些情况下,系统可以使用变色龙散列来向可信实体、一起构成可信方的多个单独不可信方、或其他实体授予对区块链进行非防篡改重写的能力。在一些实施方式中,即使在许多冲突已经多次被发现之后(使用密钥秘密),散列函数也可以保持抗冲突。该属性可以被称为密钥暴露自由度。如下所述,变换可以被用来将变色龙散列函数转换为附加地满足密钥暴露自由度的一个散列函数。图7a示出了两个示例冲突搜索700、720。对于缺少密钥秘密的散列函数(h),冲突可能难以找到。因此,找到使得h(x)=h(x')的x和x'可能极为困难(700)。然而,对于变色龙散列ch,拥有密钥秘密722的设备能够找到x和x'以使得ch(x)=ch(x')(750)。图7b示出了使用冲突对区块链760的示例重写。区块链760包括块762、764、766和768。块766包括完整性输出784。当具有不同内容的两个不同块766、770针对完整性代码产生相同的完整性输出786时,块766、770是针对完整性代码的冲突(796)。块766可以用块770来替换并且与后续块768保持编码一致性,因为块766和770产生相同的完整性输出。然而,如果块770不包含正确的完整性输出(例如,完整性输出784),则块770将不与块764编码一致。利用访问完整性代码的密钥秘密,当事方能够指定在块770中存在的完整性输出(797)。因此,块770可以通过包括完整性输出784而与块764编码一致(798)。块770仍然与块768编码一致,因为块770与块766冲突。备选地,如果块770相反被构造为包括完整性输出782,则块770的插入可以被用来删除块764(799)。利用完整性输出782,块770与块762(作为其先前块)和块768(作为紧随其后的块)编码一致。因此,块764可以从区块链中被移除而没有篡改的证据。在一些现实世界的应用中,可以实现允许重写的、用于大多数方的(以保留安全性)仅附加账本(append-onlyledger)。为了实现现实世界的应用,重写可以被约束以使得它能够由可信方执行或在定义的环境中执行。现实世界应用的两个示例在下面关于图13和图14被讨论。在一些情况下,如果区块链不可以以有效保留或非防篡改方式来编辑,则诸如智能合约或覆盖应用等应用可能不一定有效且可扩展。智能合约可以包括由当事方执行以换取补偿的指令的序列,例如计算指令的序列。此外,可重写区块链可以为区块链用来保护的应用的更新提供支持。如果在开始之后对基于区块链的系统进行大修,则可重写区块链可以被用来重建区块链以反映该大修。符号对于字符串x,其长度可以由|x|表示;如果x是集合,|x|可以表示x中元素的数量。当x在x中被随机选择时,该选择可以被表示为x←$x。当a是算法时,y←$a(x)可以表示在输入x和输出y上的a的运行;如果a被随机化,则y是随机变量,且a(x;r)可以表示在输入x和随机性r上的a的运行。如果a被随机化并且对于任何输入x,r∈{0,1}*,则算法a是概率多项式时间(ppt)。a(x;r)的计算可以在至多poly(|x|)步之后终止。安全参数可以被表示为如果函数比κ中任何多项式的倒数消失得更快,即ν(κ)=κ-ω(1),则它在安全参数内可以忽略不计(或者简言之可以忽略不计)。对于随机变量x,p[x=x]可以表示x取特定值x∈x的概率(其中x是x被定义的集合)。给定两个系综(ensemble)x={xκ}κ∈ν和y={yκ}κ∈ν,x≡y可以表示两个系综是相同地分布的,并且x≈cy可以表示两个系综例如对于给定场景而言在计算上无法区分。公钥加密公钥加密(pke)方案是一种技术,通过该技术,信息可以在两方或更多方之间被公开地交换,而不必公开地暴露加密密钥、密钥秘密或其他秘密。此外,pke可以在不一定要求在交换中各方之间充分暴露密钥秘密或其他秘密的情况下实现。在实施方式中,pke可以使用如下定义的算法pke=(kgen,enc,dec)的元组来执行:(1)概率算法kgen将安全参数作为输入,并输出公钥/密钥对(pk,sk)。(2)概率算法enc将公钥pk、消息m∈m和隐式随机性ρ∈rpke作为输入,并输出密文c=enc(pk,m;ρ)。所有密文的集合通过c来表示。(3)确定性算法dec将秘密密钥sk和密文c∈c作为输入,并输出m=dec(sk,c),其等于某个消息m∈m或者等于错误符号⊥。在一些情况下,pke或其他安全交换方案可以由单独不可信方用来组合完整性代码的密钥秘密的部分或份额,以生成能够对区块链进行非防篡改重写的完整密钥秘密。在一些情况下,安全交换方案可以被用来确保第三方无法通过观察交换来获取密钥秘密的部分。附加地或备选地,安全交换方案可以由单独不可信方使用,以防止其他单独不可信方在交换期间获取多个部分。例如,在不安全交换中,一旦单独不可信方从其他不可信方收集部分,则收集方不可撤销地变成可信方。然而,在(诸如如何实现pke的)安全交换中,不可信方可以从其他不可信方收集密钥秘密的部分而不实际获悉所收集的单独部分的内容。因此,从其他单独不可信方收集密钥秘密的部分并不一定引起收集方变成可信方。因此,单独不可信方可以一起构成可信方,但在组合密钥的到期或其他无效之后,单独不可信方将返回到其各自的不可信状态,直到它们再次同意组合其单独的部分。在一些情况下,组合密钥可以在预定时间段之后或在执行预定量的重写之后到期。例如,组合过程可以指定预定的到期参数,其可以划定重写的数量、可以被重写的块的数量、持续时间、可以被修改的数据量、可以被重写的块的特定列表、一个或多个事件发生、或者以上的组合。在其他情况下,密钥可以以这种方式被组合,使得一起工作的各方能够确定被用来执行块的非防篡改重写的附加内容。然而,没有单个方必定收集完全(但加密)的密钥,从而没有单个方可以代表其他方来确定该附加内容。相反,组成可信方的组内的每个单独不可信方可以计算附加内容的一部分(或执行处理的某个部分)。来单独不可信方的共同努力的最终结果用作支持单个块的非防篡改重写的附加内容。对于任何后续重写,单独不可信方可以针对由组成可信方的组指定进行重写的每个特定块再次协作。单独不可信方可以是在单个系统上具有不同操作员简档的不同操作员(例如,实体、机构、设备或其他方)。附加地或备选地,单独不可信方可以分布在多个系统上。单独不可信方可以将它们相应的密钥秘密的部分存储在不同的存储器位置,这些存储器位置可以具有相同或不同的安全特征。单独存储器位置可以与单独不可信方中的单独一个相关联。例如,存储器位置可以与由单独不可信方中的相应一个所拥有或维护的存储设备相对应。类似地,可信方可以维护相关联的存储器位置。在一些情况下,存储器位置可以用作当事方(全部或部分)的标识符。例如,用于可信方的存储器位置可以被用来证实正在由正确的可信方控制(例如,访问控制、读/写控制或其他控制)的密钥秘密。例如,如果密钥不从可信存储器位置(例如,由可信方使用、间接控制、维护或拥有的存储器位置)被访问,则密钥可以由系统拒绝。类似地,由不可信方所持有的密钥秘密的部分可以与特定的存储器位置相关联。可以被用来支持上述技术和架构的示例实现在下面被描述。例如,下面所讨论的实现可以被用来构造变色龙散列。然而,其他完整性代码可以被用来执行非防篡改区块链重写。非交互式零知识如果r:{0,1}*×{0,1}*→{0,1}是对(x,y)上的np关系,利用相应的语言:用于r的非交互式论据可以允许证明者p说服验证者v公共元素y属于语言l(其中p和v两者都被建模为ppt算法)。证明者p可以通过为y∈l知道证人x来促进。示例属性1(非交互式论据)。用于np关系r的非交互式论据是如下指定的有效算法nia=(i,p,v)的元组。·ω←$i(1κ):概率算法i将安全参数作为输入,并输出公共的共同参考字符串(crs)ω。·π←$p(ω,x,y):概率算法p将crsω和使得r(x,y)=1的对x,y作为输入,并且返回对y∈l的隶属度的证明π。·d=v(ω,y,π):确定性算法v将crsω和对(y,π)作为输入,并返回决定位d∈{0,1}。在一些情况下,非交互式论据可以满足已知为完整性(completeness)、零知识(zero-knowledge)和可靠性(soundness)的三个属性,这些属性在下面被讨论。crs可以被用来促进非交互式零知识条件。完整性属性可以建立应该能够说服验证者y∈l的诚实的证明者(持有有效证人x)。示例属性2(论据的完整性)。设nia=(i,p,v)是对np关系r的非交互式论据。如果对于所有对(x,y)使得r(x,y)=1,则nia可以满足完整性,存在可以忽略不计的函数使得p[v(ω,y,π)=1:?π←p(ω,x,y);ω←$i(1κ)]≥1-ν(κ).零知识。零知识属性指示可能的恶意验证者不一定获取无法由其自己获取的证人的知识。这可以有助于非交互式零知识(nizk)。示例属性3(零知识)。设nia=(i,p,v)是针对np关系r的非交互式论据。如果存在ppt模拟器s:=(s1,s2),以使得对于所有对手a,存在可以忽略不计的函数使得则nia满足零知识。模拟可提取性。可靠性属性指示恶意证明者难以为元素生成接受证明π。在一些情况下,即使恶意证明者可以访问对真的陈述的模拟证明,可靠性仍然可以保持。在一些实施方式中,更严格的方案可以允许证明者看到可能为假的陈述的证明;参见下面的讨论。示例属性4(真模拟可提取性(tse))。设nia=(i,p,v)是针对np关系r的nizk,具有零知识模拟器s=(s1,s2),并且设f为高效的可计算函数。如果存在ppt提取器e,以使得对于所有ppt对手a,存在可以忽略不计的函数使得则nia满足真模拟f可提取性(简称ftse)。其中,数据库oτ将对(xi,yi)作为输入并且只要r(xi,yi)=1则返回相同的对s2(τ,yi)(否则返回⊥),并且q是要求数据库oτ的所有值yi的集合。注意,在上面的示例属性4中,对手只被允许看到针对真陈述的模拟证明。更强大的变型确保即使对手被允许看到针对可能为假的陈述的模拟证明,模拟可提取性仍然保持。后者的属性也被称为稳健的nizk。如在tse中所指出的,nizk明显更高效地构建,事实上,他们一般地可以通过将nizk(诸如groth-sahainizk)与cca安全pke方案相结合来获得。变色龙散列函数变色龙散列可以包括加密散列函数,用于使得拥有密钥秘密的设备可以计算冲突。在没有密钥秘密的情况下,变色龙散列可以被设计成使得找到冲突是在计算上不切实际的。然而,密钥秘密的知识,例如加密密钥、陷门信息或其他秘密,可以允许在计算上实际生成用于散列函数的冲突。密钥秘密的知识可以允许对包含至少一些任意内容的块进行冲突确定和生成。秘密硬币变色龙散列示例属性5(秘密硬币变色龙散列)。秘密硬币变色龙散列函数是如下所指定的高效算法ch=(hgen,hash,hver,hcol)的元组。·(hk,tk)←$hgen(1κ):概率密钥生成算法hgen将安全参数作为输入,并输出公共散列密钥hk和密钥秘密tk。·(h,ξ)←$hash(hk,m):概率散列算法hash将散列密钥hk、消息m∈m和隐式随机硬币r∈rhash作为输入,并输出由散列输出h和校验字符串ξ组成的对(h,ξ)。·d=hver(hk,m,(h,ξ)):确定性验证算法hver将消息m∈m、候选散列输出h和校验字符串ξ作为输入,并且如果(h,ξ)是对于消息m的有效散列/校验对,则返回等于1的位d(否则d等于0)。·π′←$hcol(tk,(h,m,ξ),m′):概率冲突发现算法hcol将陷门密钥tk、有效元组(h,m,ξ)和新的消息m'∈m作为输入,并且返回新的校验字符串ξ',使得hver(hk,m,(h,ξ))=hver(hk,m',(h,ξ'))=1。如果(h,ξ)不是对于消息m的有效散列/校验对,则算法返回⊥。散列算法可以被随机化,并且在输入某个消息m时,它可以产生散列输出h以及校验值ξ,该校验值ξ有助于验证给定公共散列密钥的散列的正确计算。然而,散列算法的随机硬币是秘密的。特定情况是校验值ξ由被用来生成h的随机硬币组成的情况,因为一旦m和r固定,则散列计算变为确定性的;我们称这种变色龙散列函数为公共硬币,并且我们在下面正式定义它。示例属性6(公共硬币变色龙散列)。公共硬币变色龙散列函数是如示例属性5中所指定的算法ch=(hgen,hash,hver,hcol)的汇集,具有以下差异:·散列算法hash,在输入散列密钥hk和消息m∈m后,返回对(h,r),其中r∈rhash表示被用来生成散列输出的隐式随机硬币。·验证算法hver,作为输入被给予散列密钥hk、消息m和对(h,r),当且仅当hash(m;r)=h时返回1。由于验证算法仅仅重新运行散列算法,因此在公共硬币变色龙散列的情况下,一些实施方式可以从ch中丢弃验证算法。示例属性7(变色龙散列的正确性)。设ch=(hgen,hash,hver,hcol)是具有消息空间m的(秘密硬币或公共硬币)变色龙散列函数。如果对于所有m∈m,存在可忽略的函数使得:p[hver(hk,m,(h,ξ))=1:(h,ξ)←$hash(hk,m);(hk,tk)←$hgen(1κ)]≥1-ν(κ)。则ch满足正确性。几乎任何变色龙散列均可以被用来产生公共硬币抗冲突变色龙散列。然而,在一些情况下,秘密硬币变色龙散列函数可以被用于与公共硬币变色龙散列函数相同的应用,特别是用于构造变色龙签名和在线/离线签名。然而,对于秘密硬币变色龙散列,系统可以存储校验值ξ(而不是随机性r)以便验证散列输出。此外,并且散列验证可能不一定包括重新计算散列。对于变色龙散列的一些应用,抗冲突性可能不一定足够。虽然散列函数是抗冲突的,但是看到对于散列函数的冲突的一方可能能够找到其他冲突或恢复密钥秘密。添加的抗冲突性可以被用来使得更加难以找到冲突,即使在见证了多项式数量级的冲突之后。另一种类型的变色龙散列可以包括“标注的(labeled)”散列函数,其中散列算法将被称为标注或标签的附加值λ作为输入。在一些情况下,被标注的散列函数可以是抗密钥暴露的。例如,对于一些被标注的散列函数,难以实行的是系统找到对于“新鲜”标注λ*的冲突,即使是允许访问输出对于其他任意标记λ≠λ的冲突的数据库。基于身份的变色龙散列函数可以至少部分地解决密钥暴露问题,因为它们使用可信方来处理身份。添加的抗冲突性。对于秘密硬币或公共硬币散列函数的冲突的示例是元组h、(m,ξ)、(m',ξ'),以使得m≠m'并且(h,ξ)和(h,ξ')是(分别)针对m和m'的有效散列/校验对。对于变色龙散列函数,以下安全属性,该属性指示即使给出访问冲突查找算法也难以找到对于散列函数的冲突(返回对于适应性选择的散列输出的冲突)。示例属性8(添加的抗冲突性)。在示例场景中,ch=(hgen,hash,hver,hcol)可以是(秘密硬币或公共硬币)变色龙散列函数。如果对于所有ppt断点b,存在可忽略的函数使得:则ch可以满足添加的抗冲突性的属性。其中,集合q是由b向其数据库查询的所有散列输出的集合,并且数据库ohk,tk被定义如下:在输入((h,m,ξ),m′)形式的冲突查询的时候,运行hver(hk,m,(h,ξ)):=d;如果d=1,则返回hcol(tk,(h,m,ξ),m′)的输出,否则返回⊥。如果b不被允许查询数据库ohk,tk,则ch可以是抗冲突的,而不必具有添加的抗冲突性。通用变换提供添加的抗冲突性的示例变色龙散列函数包括基于nyberg-rueppel签名方案的散列函数。这些示例变色龙散列函数的安全性可以使用“通用组模型(genericgroupmodel)”中的离散对数假设来演示。下面的示例构造针对基于nyberg-rueppel原理的变色龙散列。对于各种不同的复杂环境,添加的抗冲突性可以以非特设(non-adhoc)的方式来实现。变换可以基于cpa安全pke方案并且利用tsenizk。令ch=(hgen,hash,hcol)为公共硬币变色龙散列函数(具有消息空间mhash和随机性空间rhash),令pke=(kgen,enc,dec)为pke方案(具有消息空间rhash和随机性空间rpke),并且令nia=(i,p,v)为针对该语言的非交互式论据系统。(1)示例秘密硬币变色龙散列函数ch*=(hgen*,hash*,hver*,hcol*)可以被指定如下:·hgen*(1κ):运行(hk,tk)←$hgen(1κ)、(pk,sk)←$kgen(1κ)以及ω←$i(1κ)。返回对(hk*,tk*),以使得hk*:=(hk,ω,pk)以及tk*:=(tk,sk)。·hash*(hk*,m):对随机值r∈rhash进行采样并运行hash(hk,m;r):=h。对随机值ρ∈rpke进行采样并运行c:=enc(pk,r;ρ)。计算证明π←$p(ω,x,y),其中x:=(r,ρ)并且y:=(pk,c,hk,h,m),并且返回(h,ξ)以使得ξ:=(c,π)。·hver*(hk*,m,(h,ξ)):解析ξ=(c,π)并返回v(ω,y,π)的输出,其中y=(pk,c,hk,h,m)。·hcol*(tk*,(h,m,ξ),m′):首先运行hver(hk*,m,(h,ξ)):=d;如果d=0则输出⊥,否则解密随机性r:=dec(sk,c),计算冲突r'←$hcol(tk,(h,m,r),m'),对随机值p′∈rpke进行采样并加密新的随机性c′:=enc(pk,r′;p′)。计算证明π′←$p(ω,x′,y′)以使得x′=(r′,p′)并且y′:=(pk,c′,hk,h,m′),并且返回ξ′:=(c′,π′)。该系统可以使用各种协议来实现。例如,基于公共硬币变色龙散列函数的系统可以实现sigma协议。sigma协议是一种交互式证明方案,其中“证明者”和“验证者”参与多阶段通信。在多阶段通信期间,证明者可以使验证者相信证明者拥有特定信息。为了实现tsenizk,cca安全的pkenizk论据系统可以被使用。当加密方案对预定义的密文攻击是安全的时候,该加密方案是cca安全的。示例区块链在示例场景中,块是b=(s,x,ctr)形式的三元组,其中s∈{0,1}κ,x∈{0,1}*,并且其中如果以下成立则b是有效的:其中h:{0,1}*→{0,1}κ和g:{0,1}*→{0,1}κ是抗冲突散列函数,并且参数和分别是块的难度级别以及用户被允许在一轮协议内进行的最大散列查询次数。示例区块链c可以是块的链(或序列)。在示例中,最右边的块是链的头部,由head(c)表示。具有头部head(c):=(s,x,ctr)的任何链c可以通过附接(有效)块b':=(s',x',ctr')以使得s′=h(ctr,g(s,x))而被扩展到新的更长的链c':=c||b';新链c'的头部是head(c′)=b′。链c也可以是空的,并被表示为c=ε。函数len(c)表示链c的长度(块的数量)。对于长度为n的链c和任何的k≥0,是通过移除c的最右边的k个块而产生的链,并且类似地是通过移除c的最左边的k个块而产生的链,若k≥n则且如果c是c'的前缀,则其可以被表示为c<c′。此外,难度级别d可能在链中的块之间是不同的。示例可重写区块链在用于以上示例区块链的示例可重写区块链场景中,块可以是三元组b:=<s,x,ctr,(h,ξ)>,新的组件(h,ξ)可以是用于秘密硬币变色龙散列的散列/校验对。函数g可以是秘密硬币变色龙散列ch=(hgen,hash,hver,hcol)。对于该修改后的块的验证谓词可以是:例如,通过利用期望输出尺寸的常规抗冲突散列对论据hash的输入进行散列,变色龙散列的域可以被调整到与区块链的应用相当的尺寸。变色龙散列的验证可以使用其自己的验证函数(hver)来计算。然而,一些散列函数,诸如那些没有密钥秘密的散列函数,可以通过预计算散列来验证。在一些情况下,链校订算法(诸如示例算法1)可以用以下作为输入:要被校订的链c、表示正被校订的块的位置(在链c中)的指数集合、以及包含用于正被校订的单独块的新的x'值的另一集合。示例算法可以接受变色龙散列陷门密钥tk作为输入。算法直觉是,对于要被校订的每个块,我们计算用于该块的散列与其新的内容x'的冲突。新的链c'通过用其修改的对应物替换原始块来创建。在算法1的执行结束时,中央机构可以将新的校订后的链广播为特殊链,以使得系统的用户采用新的校订后的链优先于例如更长链的其他链。在一些情况下,抗冲突的变色龙散列函数可能易受密钥暴露的影响。例如,对于一些抗冲突的变色龙散列函数,可以在看到对于函数的冲突之后检索密钥秘密。注意,所呈现的两种算法(算法1和算法2)可以暴露一个或多个冲突以进行校订。例如,算法可以暴露冲突以进行校订或为每个被改变或校订的块暴露冲突。在一些情况下,系统可以实现具有添加的抗冲突性的变色龙散列以避免密钥暴露。然而,一些系统可能依赖于抗冲突性和受控的冲突暴露级别。在一些情况下,可信方可以从可重写区块链中移除整个块。例如,用例可以是可扩展性维护,诸如相对于可以被用来处理较大(未编辑)链的内容而言节省磁盘空间和计算能力。为了移除块bi,块bi+1可以通过指派si+1←s1来修改。然后,系统可以为产生新块b'i+1的bi+1计算冲突,该新块b'i+1可以被插入链中以代替块bi+1,这使得链处于编码一致状态。在算法2的执行结束时,中央机构可以将新的收缩的链作为特殊链来广播,以使得系统的用户采用新的校订后的链优先于其他链。分散的密钥秘密交换在一些实施方式中,候选可信机构可能很明显。例如,在一些金融交互中,银行或银行官员可能持有用于完整性代码的密钥秘密,诸如变色龙散列。在一些情况下,对等应用(peer-to-peerapplications)可能不一定具有这样清楚的候选可信方。这种状况可以通过使用分散的密钥秘密分配方案来解决。在这种情况下,陷门密钥可能不一定由任何单独方所知道,而是在一些固定的用户集合之间被共享,以使得用户一起构成可信方。当块需要被校订时,来自该集合的用户参与安全多方计算协议(mpc)以计算算法1。在一些情况下,诸如mpc之类的安全密钥交换可以通过让各方发送开始信号来操作。在一些情况下,一些当事方可能是诚实的或者不诚实的。诚实方可能旨在与其他各方合作,以访问完整的密钥秘密。然而,不诚实方可能希望通过发送假的份额来破坏该过程。然而,安全密钥交换仍然可以涉及接收诚实方和不诚实方两者的份额。在收到来自所有诚实方的“开始”信号后,系统可以运行(hk,tk)←$hgen(1κ)并将hk发送给不诚实方。因此,交换pi中的单独方可以接收份额。系统可以从诚实方构建份额的完整集合(s1...sn),因为由不诚实方发送的份额可以构成不合格的集合。一旦完整集合被形成,系统就可以向每个诚实方发送si。系统可以从每一方pi接收份额si并重建陷门密钥tk:=rec(s1,…,sn)。不诚实方的份额由不诚实方来选择。在接收到用于来自所有诚实方的对((h,m,ξ),m′)的“计算冲突”信号时,计算ξ′←hcol(tk,(h,m,ξ),m′)并发送(h,m,ξ)和ξ′到不诚实方。在从不诚实方接收到“ok”信号时,系统可以将值ξ'转发给所有诚实方。然而,如果“ok”未被接收到,则系统可以将⊥(例如,运行时间故障指示符)转发给所有诚实方。在示例场景中,示例系统可以包括n个活动用户。用户的子集u∈[n]可以持有陷门密钥tk的份额。用户的子集u可以执行分散的密钥生成协议。在运行结束时,子集u中的用户获得tk的份额si。当块bk:=<s,x,ctr,(h,ξ)>被校订到修改后的块中时,用户可以检查它们自己的区块链并找到块bk。然后,子集中的用户可以执行分布式散列冲突协议以计算值用户可以输入他们自己的tk的私有份额si,值s、x、h、ξ和在协议结束时,子集u中的用户接收块的值用户可以通过用块替换块bk来更新他们自己的区块链,并广播这个新的重写链。在一些情况下,用户可以将新的链广播为新的特殊链。在一些实施方式中,对区块链的重写可能不经常发生。特殊链的广播的使用可能不一定会引起频繁的中断。然而,特殊传输和非特殊传输可以被用在各种实施方式中。对于集合u的示例选择将是挑选在线用户的子集。然而,该选择可能取决于应用。我们还处理u中的一些用户实际上是恶意的、且他们的目标是获悉tk或防止其正确重建的问题。具体实例在一些示例实施方式中,在giuseppeateniese和brenodemedeiros,“onthekeyexposureprobleminchameleonhashes”,scn,pages165-179,2004中所描述的变色龙散列(ch)构造可以被系统使用。如上所述,可以被实现的示例ch构造具有双nyberg-rueppel签名以及添加的抗冲突性,例如展现示例属性8的ch。用于该函数的参数可以包括随机素数q和p=2q+1。参数进一步可以包括的二次剩余残差qp的子组的生成器g和抗冲突散列函数h。·(hk,tk)←$hgen(1κ):密钥秘密是随机值tk∈[1,q-1],并且散列密钥是hk←gtk。·h:=hash(m,r,s):为了用随机值散列消息m∈m,计算并返回h:=r-(hkh(m,r)g8modp)modq。·{0,1}:=hver(h,m,r,s):为了验证,仅返回hash(m,r,s)=h。·(r′,s′)←$hcol(h,m,r,s,m′):为了针对消息m′计算冲突,挑选随机数k∈[1,q-1],计算r′←h+(gkmodp)modq,并计算s′←k-h(m′,r′)·tkmodq。返回(r′,s′)。半诚实场景。在示例场景中,子组u中的用户是半可信的。在该场景中,子组u中的半诚实用户可以被信任以执行协议并根据规则行事,例如,子组u中的用户可以被依赖以输入正确的份额。对于这种半诚实的场景,基于和的n阈值密钥秘密共享方案在下面被描述:共享阶段:·经销商选择秘密s和n个份额si,以使得·n方pi接收其相应的密钥秘密份额si。重建阶段:·经销商从各方pi接收到份额si并重建密钥秘密在该示例场景中,用户u∈u单独地选择随机的xi∈[1,q-1]作为他们相应的密钥秘密份额,并广播值yi←gxi。散列陷门密钥可以是并且散列密钥可以是hk←gtk。该协议可以是非交互式的,因为它可能不一定要求用户之间的任何消息交换。此外,没有n-1个用户的集合必定能够重建tk。此外,系统可能会阻碍尝试获悉关于tk的信息,因为份额只是随机元素。在该示例场景中,用户u∈u可以同意对((h,m,r,s),m′)。用户单独地选择相应的随机的ki∈[1,q-1],广播gki,并稍后计算在一些情况下,单独用户的系统可以计算h′←h(m′,r′),而不必从子组中的其他用户接收附加输入。为了计算s′,用户可以执行mpc协议以通过输入用户相应的tk份额来计算乘法s″←h′·tk。用户可以执行附加且另一mpc协议以通过输入先前选择的k的份额来计算差异s′←k-s″。不诚实场景。附加地或备选地,示例场景可以包括可能不诚实的一些用户、实体、方、设备或其他实体。例如,不诚实的用户可能偏离协议规范以尝试获悉其他用户的密钥秘密份额。为了在这种场景中保持安全性,稳健的秘密共享方案可以被实现以用于密钥秘密共享。在一些情况下,稳健的秘密共享可以支持可能是不诚实的用户的阈值数量(例如,整数t<n)。执行稳健秘密共享的用户即使在(最多)阈值数量的用户是不诚实的情况下也可以从给定份额重建正确的密钥秘密。稳健的秘密共享方案可以使用shamir秘密共享方案加上reed-solomon(rs)纠错码来实现。在密钥秘密重建阶段,在重建密钥秘密之前,rs代码被用在每个份额中。在一些情况下,与rs纠错配对的shamir秘密共享方案可以在多达三分之一的用户主动不诚实的情况下进行操作。在一些示例方案中,可以支持任何的不诚实的用户阈值,例如,这可以包括允许大多数用户不诚实的阈值。子组中的用户可以选择相应的随机字符串ρi并将其解析为以使该子组可以同意多项式p(x)。该多项式可以被定义为p(x):=tk+p1·x+p2·x2+…+pn-1·xn-1,其中并且p(0):=∑i∈[n]tki。为了分配份额,用户可以执行mpc协议来计算每个用户i的份额。对于用户i,相应的份额可能是和在重建阶段,用户的份额可以使用rd代码来解码。在一些实施方式中,诸如在talrabin和michaelben-or的“verifiablesecretsharingandmultipartyprotocolswithhonestmajority(extendedabstract)”,acmstoc,pages73-85,1989中所描述的那些共享方案等共享方案可以被使用。例如,其中所讨论的共享方案可以使用广播信道并且能够在大多数方诚实的情况下成功操作。此外,一些实施方式可以使用诸如那些具有在例如allisonbishop,valeriopastro,rajmohanrajaraman和danielwichs的“essentiallyoptimalrobustsecretsharingwithmaximalcorruptions”iacrcryptologyeprintarchive,2015:1032,2015中所描述的可优化份额尺寸的方案。例如,其中所讨论的共享方案可以具有在份额尺寸和参与方数量n之间缺乏线性依赖性的腐败设置(corruptionsettings)。在一些情况下,份额尺寸可以与k线性增长,其中2-k是故障的概率。块级别结构图8示出了与示例更新的区块链部分850配对的示例区块链部分800。在该示例中,区块链部分800、850和外部散列h与内部散列g配对。内部散列可以被嵌套在外部散列内,以使得内部散列的输出被提供给外部散列作为输入。在示例区块链部分中,内部散列g可以是变色龙散列函数。外部散列h可以是变色龙散列函数或另一散列函数。块可以包括hashprev(例如,先前的散列)802字段,其可以包括用于保持与先前块(例如s、s'、s”)相对应的散列输出的存储。块820、822、832、834可以不必包括它们自己的输入的散列输出。然而,用于块的散列输出被示出在块上方,以演示到下一块的链接803(例如,块832与块820之间以及块820与块834之间的链接803)。块820、822、832、834进一步可以包括有效载荷804字段,其可以保持在块内被保护的数据(例如,x、x'、x”),诸如交易信息、智能合约内容、数值、货币面额或其他安全数据。还可以包括计数器字段806,例如ctr、ctr'、ctr”。计数器字段806可以包括能够被用于工作证明(pow)计算、会计、块跟踪或其他目的的计数器或随机数。在加密货币实施方式中,pow可以被用来验证对特定方的货币奖励的有效性。pow可以包括对计算问题的解决方案,其中解决方案在计算上推导复杂,但是在计算上验证相对简单。pow也可以被用在智能合约中,以验证特定方已履行其合同规定的义务。当块被校订时(例如,当计算冲突时),随机性808字段可以被更新。在一些情况下,随机性字段可以保持能够与替换数据配对的第三数据(例如,r、r'、r”),以允许对区块链进行非防篡改重写。当块820被校订时,值s'、x'、ctr'和r'可以由s'、*x'、ctr'和*r'代替。在该示例场景中,s'和ctr'可能不一定被修改,因为ctr'可以由外部散列使用以计算pow,并且ctr'是到保持相同的前一块的链路。使用用于内部散列函数g的变色龙散列密钥秘密,可以找到冲突以使得g(s',x',andr')=g(s',*x',and*r')。因此,h(ctr',g(s',x',andr'))=h(ctr',g(s',*x',and*r'))。结果,s”可以通过校订而保持不变。更新的块部分850包括具有值*x'和*r'的替换块822。在一些实施方式中,系统可以通过在块i+1中用si替换si+1然后在块i+1上运行编辑过程来删除块。附加地或备选地,系统可以通过使块i+1中的值si+1指向块i-1来删除块。在一些情况下,块i-1中的ctr值可以被改变以保持与块i+1中的更新的值si+1编码一致性。多链区块链在一些实施方式中,可信实体可以执行能够被隐藏的校订,以使得用户可能不知道新的区块链已经替换了原始区块链。即,除非区块链的旧副本可以被恢复,否则用户不一定能够检测区块链的部分是否被校订。然而,在一些实施方式中,使校订显而易见可能是有利的。例如,在校订被审核的系统中,防篡改的校订可能是有利的,其中先前的协议要求在校订被执行时、或者在校订的证据是有利的或优选的其他情况下提供证据。在校订明显的系统中,内容的移除或修改可能留下重写标识符或“疤痕”(例如,重写工件),其不一定能够被任何人移除、包括可信方。然而,在一些实施方式中,如下所述,疤痕能够由可信方的子集或通过多方的协调而可移除。在一些校订明显的实施方式中,单个区块链可以包括这样的链,一个链基于写入锁定链、例如缺少密钥秘密的散列函数或密钥秘密未知的散列函数,并且另一个链基于可重写区块链、例如变色龙散列。如果在这两个链中,写入锁定链和可重写链都是完整的,则不存在校订并且块是原始的。如果写入锁定链被破坏并且变色龙链是完整的,则存在由可信实体进行的校订。然而,如果可重写链被破坏,则存在由不可信实体对区块链进行的编辑并且区块链可能被无效。在一些情况下,如果可重写链被破坏,则无论写入锁定链的状态如何,区块链都可能被无效。因此,在这种情况下,区块链的完整性由变色龙链所确保,而写入锁定链充当了检测机制。因此,在支持带有疤痕证据的重写的区块链中,区块链的有效性在逻辑上与篡改记录的创建分开。在一些实施方式中,多个链可以被用来区分不同的可信实体。因此,多个可重写链可以与零个或更多个写入锁定链一起被包括在区块链中。在多个信任实体跟踪区块链中,与进行校正的可信实体相对应的链将是不断开的,而其他链、包括与其他可信实体相对应的链或写入锁定链可能会被断开。在一些实施方式中,包含多个可重写链提供了在没有伴随写入锁定链的情况下篡改疤痕或重写标识符写入锁定,因为只有与进行编辑的可信实体相对应的链可以保持不断开,而其他链虽然可由其他可信实体重写,但可能会因编撰而被断开。在一些情况下,当另一可信实体或拥有一个或多个其他链的密钥的实体批准由更早可信方进行的编辑时,疤痕可以稍后被移除。这可以保护区块链免受由一个可信方进行的无法追踪的单边编辑,但仍然允许单个可信方快速移除敏感信息而无需多方之间的协调。此外,在一些方案中,一些可信实体可以被授权进行编辑而不会留下疤痕,而其他可信方可能会在进行编辑时留下疤痕。例如,在多个可重写链的方案中,一个可信方可以具有对于所有链的密钥,而其他方只具有对于一部分链的密钥。具有所有密钥的一方可以进行编辑而不留下疤痕,而仅具有一部分密钥的各方可能在编辑时留下疤痕。多链方案可以与分布式密钥方案组合,以使得各方可以聚合他们的密钥以进行编辑而不留下疤痕,以防各方在单独行动时留下疤痕。图9示出了示例双链区块链部分900、950,其中块b2902被修改。由一个或多个可信方持有的密钥秘密903允许打开链路904并改变块b2902。然而,写入锁定链路906或可信方缺少密钥的其他链路可以被断开以信号通知校订发生。参照950,具有可能的敏感信息的旧的块b2902可以被移除,但是断开的链路956充当不可磨灭的标志或疤痕,其提供持久的记录,即产生新的块b2'952的校订发生。多链区块链也可以被用来生成具有与可重写区块链空间配对的不可重写区块链空间的混合区块链。例如,系统可以利用缺少密钥秘密的完整性代码来保护区块链中的块集合中的每个块的第一个块。因此,由任何方试图重写块的这些部分都将是明显的篡改。示例系统可以利用支持由可信方的重写的完整性代码来保护块的剩余部分。这些可重写部分可以由可信任方修改,而不会生成篡改证据。因此,混合区块链可以由操作员使用来生成具有不可变的核心数据的区块链系统,该核心数据与能够由有限数量的可信方重写的第三数据配对。图10示出了示例混合区块链1000。混合区块链1000包括具有核心1002部分和第三部分1004的块1010、1020、1030、1040。构成核心部分1002的块部分1012、1022、1032、1042由核心完整性代码1006保护,该核心完整性代码1006可能不一定支持由任何方的非防篡改重写。相反,构成块1010、1020、1030、1040的第三部分1004的块部分1014、1024、1034、1044可以通过支持非防篡改重写的第三完整性代码1008来保护。在各种实施方式中,核心完整性代码1006和第三完整性代码1008本身可以实现多个链。例如,核心完整性代码1006或第三完整性代码1008可以支持疤痕,如上所述,以使得有效重写可以在部分1002、1004上被执行,但是尽管有效,这些改变仍然生成篡改的证据。附加地或备选地,核心完整性代码1006和第三完整性代码1008可以支持多可信方的批准,或者要求不同数量的密钥秘密部分来支持编辑。例如,对核心部件1002的编辑可以取决于两个可信方的批准以执行非防篡改重写,而对第三部分的非防篡改编辑可以由单个可信方执行。对于分布式密钥秘密系统,示例系统可以允许使用密钥秘密的m个部分对第三部分1004进行非防篡改重写,而当密钥秘密的n个部分被组合时(其中n>m)仅允许对核心部分1002进行非防篡改重写。在示例场景中,混合区块链可以被用来构建具有完全不可变交易数据的账本,该交易数据与交易描述/注释数据配对,交易描述/评论数据可以由一组选定的保管员重写以用于账本。在一些情况下,账本条目可以包括能够被输入的数据类型的尺寸上限或约束。约束允许的重写可以阻碍将不相关内容或恶意内容写入块的不可变账本部分的尝试。块的可重写部分内的描述/注释字段可以受到较少的条目限制。然而,保管员可以在描述/注释字段中修改或移除先前写入的内容,而没有明显篡改的改变。图11示出了示例可重写区块链场景1100。在可重写区块链场景1100中,控制密钥秘密1150(或主密钥秘密)的可信方1101可以在其自己的权限上执行重写1172。例如,可信方可以完全控制密钥秘密,因为可信方不一定必须与其他方协调以执行重写1172。可信方1101可以例如直接控制或者从一个或多个终端1110控制brs400,brs400可以将密钥秘密1150存储在存储器420中(例如,受保护的存储器480)或者从远程位置(诸如终端1110、云存储或其他网络位置)访问/接收密钥秘密1150。终端1110可以包括各种通信设备,诸如计算机、网络服务器、膝上型计算机、蜂窝电话、智能电话、平板计算机、互联网连接的设备、物联网设备或其他通信设备。brs400可以执行rml441和/或重写逻辑600以执行区块链重写1172。一个或多个不可信方1102可以访问brs400、其他brs400系统、终端1110或bps300,它们可以验证区块链和/或附加块1174(例如,将新的块添加到区块链的末端)。一些不可信方可以控制brs400,包括在可信方的控制下的brs400。然而,不可信方无法访问所存储的密钥秘密1150。例如,一些不可信方可能缺少brs400上的用户账号权限来访问可信方的密钥秘密1150,但仍然可以访问brs400的其他功能。附加地或备选地,相对于第一可重写区块链的不可信方可以充当关于其他区块链的可信方。因此,单个brs400可以向用于多个不同区块链的多个不同可信方提供重写操作1172。brs400可以访问区块链。当在可信方的授权下被指示时,brs400可以使用密钥秘密1150对所访问的区块链执行重写。图12示出了示例分布式密钥秘密区块链重写场景1200。在示例场景1200中,各方可以包括单独不可信方iup(1299)、可信方1101和不可信方1102。iup1299可以控制密钥秘密的部分1260,而可信方1101可以控制整个密钥秘密1150。在示例场景中,当iup1299使用其密钥秘密1150在可信方1101的授权下组合它们的密钥秘密部分1260(例如,通过pke或其他秘密交换方案,如上所述)或单方重写1172时,重写1272可以被执行。然而,各种其他示例分布式密钥秘密区块链重写场景,没有单个方可以完全控制密钥秘密1150,并且因此,当iup1299组合它们的部分1260时,非防篡改区块链重写1272是可能的。再次参考示例分布式密钥秘密区块链重写场景1200,iup1299可以组合它们的部分以执行非防篡改重写。iup1299可以将他们的密钥秘密部分1260存储在brs400、bps300、终端1110或其他存储器位置上。iup1299可以使用上述交换方案之一来组合它们的部分。一旦组合的密钥秘密1262可用,brs400就可以访问组合的密钥秘密1262以执行非防篡改重写。现在转到对可重写区块链的现实世界应用的讨论,区块链(例如,由私人公司)可以被用来维护记录。例如,服务提供商(例如,银行、金融机构或其他企业)可以维护持有交易记录的区块链。图13示出了示例区块链记录维护场景1300。在一些情况下,可以被重写的区块链1302可以由服务提供商1304在公共场所维护,其中交易的各方1308可以在各方完成交易时将块1310(例如,包含交易记录1399)附加到区块链1302的末端。服务提供商1304持有密钥秘密1350并且是可信方。因为执行交易的各方1308是不可信的,所以服务提供商1304可以依赖于区块链的仅附加性质来阻止篡改过去的记录。在某些管辖区域,诸如欧盟,个人可以具有被遗忘的权利。此外,因为区块链1302包括交易记录1399并且是公开可用的,所以区块链1302可以提供由过去用户进行的欺诈活动的公共记录1398。由于在完成对该罪行的判决之后,个人可以具有广泛的权利将过去的罪行从公共领域移除,所以服务提供者1304可以具有移除欺诈活动的公共记录的法律义务。如果区块链1302不能被重写,则服务提供商1304可以被强制使区块链1302无效或清除整个区块链1302以遵守法律。然而,由于服务提供商1304可以对区块链1302执行非防篡改重写,因此服务提供商可以移除公共记录1398而不留下将使得区块链无效的篡改的证据。因此,上面所讨论的可重写区块链技术和架构,为公共记录保存和法定合规性的现实世界应用提供了具体的技术解决方案。在另一现实世界的应用中,可重写区块链可以被用在维护来自物联网(iot)设备的数据流记录中。图14示出了示例iot可重写区块链场景1400。iot安全相机1402可以记录视听(a/v)数据1404并将a/v数据存储在可重写区块链1408内。操作iot安全相机1402的企业1410可以使用它来监视对第三方客户1499开放的区域(例如,零售场所的停车场)。当客户1499之间发生争议(例如,轻微的车祸)时,企业1410可以将a/v数据1404提供给区块链1408内的客户1499。相应地,企业1410可以确信单独客户端1499不能够修改a/v数据1404。因此,a/v数据1404的真实性可以由客户1499或由几乎任何方验证,诸如保险公司、调解员、法院或对该数据有效性感兴趣的一方。结果,在区块链内提供视频可以减少企业1410在为客户1499认证a/v数据1404时的未来潜在负担。此外,由于区块链1408是可重写的,企业可以截断a/v数据1404并向段1420提供相关的a/v数据。在不具有重写区块链1408的能力的情况下,企业1410可能面临提供不相关的a/v段或移除区块链保护的选择,并面临更加繁重的认证要求的风险。在各种实施方式中,段1420可以被包裹成闭合的区块链环,如下面所讨论的。可重写区块链技术和架构可以支持在没有重写能力的技术解决方案的情况下不切实际或不可能的区块链形式。例如,利用区块链重写支持,区块链可以由可信方“包裹”成环的形式。换言之,给定线性区块链的第一块可以被重写以包括与区块链的后续块编码一致的完整性输出。这将区块链至少部分地改造成环。在没有重写支持的情况下,在区块链内构造环是不可能的或不切实际的,除非环内所有块的内容在将第一块添加到环之前就已知了。在一些情况下,例如具有可以跟随第一块的两个单独的可能块的分支,是区块链无效性的指示符。在没有分支的情况下,开环(例如不连接区块链两端的环)无法被构造。因此,在分支的存在不一定使区块链无效的实施方式中,开环可能是有效的。在第一块是区块链的最旧的块并且后续块是最近的块的情况下,可信方将区块链改造为闭合区块链环。区块链环可以由各方用来为有限长度的区块链提供自一致的抗篡改性。例如,在区块链涵盖已完成的一系列交易的情况下,出于安全,区块链可以被包裹成闭环以提供不一定取决于未来的块添加的自一致记录。图15示出了示例包裹的区块链1530、1550。示例区块链环1530是开环。示例区块链环1550是闭环。可信方1504可以通过选择至少一个非末端的块(例如,来自组1532的块)锁定到另一块,将区块链包裹到开环区块链1530内。备选地,可信方1504可以通过选择两个末端的块(例如,来自组1552的两个块),将区块链包裹成闭环区块链1550。对于开环1530,块1538可以用内容1546来重写,以使得块1534中所存储的完整性输出1536指示块1538在块1534之前(例如,完整性输出1536应该与内容1546编码一致)。由于块1534保持不变,块1542的内容也可以与块1534中所存储的完整性输出1536编码一致。完整性输出1536可以被写入块1544,以确保块1538在被重写之后与块1544编码一致。块1544可以用完整性输出1536来重写,以使得块1558的完整性输出1548在重写之后保持与块1544编码一致。对于闭环区块链1550,块1554可以用完整性输出1556来重写,该完整性输出1556指示块1558在块1554之前(例如,完整性输出1556应该与内容1558编码一致)。块1554可以用完整性输出1556来重写,以使得块1541的完整性输出1566在重写之后保持与块1554编码一致。因此,在闭环1550由可信方1504创建之后,由不可信方的重写块1558将与完整性输出1556编码不一致并且将是防篡改的。另外,在分支使区块链无效的实施方式中,在块1558之后附加块将使闭环1550无效。因此,在分支使区块链无效的实施方式中,闭环区块链1550可以被保护免受非防篡改重写和非防篡改添加两者。多阶段区块链可重写区块链可以由完整性代码保护,该完整性代码允许由拥有密钥秘密的可信方对区块链中的块进行非防篡改重写。然而,当相同的可信方不拥有密钥秘密或不能够访问密钥秘密时,这些方可能无法以非防篡改的方式重写区块链。系统可以支持密钥秘密的删除以将可信方变换为不可信方。此外,当系统删除用于特定可重写区块链的所有密钥秘密时,该可重写区块链可以被变换为不可变区块链。在一些情况下,可重写区块链可以在区块链发布的第一阶段期间被部署。在预定义的时段、操作员选择的时段、预定义的条件被满足之后,或者在第一阶段完成时,系统可以删除密钥秘密并将可信方改为不可信方。在一些情况下,密钥秘密的删除可以在系统逐步消除可信方的多个阶段中进行。在一些实施方式中,密钥秘密可以被存储在通过加密或其他模糊处理保护的受保护存储器上,例如受保护的存储器480。密钥秘密的删除可以通过删除允许解密受保护存储器的内容的加密密钥来实现。在一些情况下,删除允许解密的加密密钥可能会影响永久和安全地删除密钥。附加地或备选地,密钥秘密的删除可以通过移除指向存储驱动器日志上的密钥位置的指针或其他存储器引用来实现。在一些情况下,对密钥秘密的肯定的覆盖可以被执行以确保在删除之后该驱动器的原始读取不能被用来提取密钥秘密。在一些实施方式中,有效删除可以通过撤销对密钥秘密的安全访问来实现。例如,密钥秘密可以保持存储在brs400的存储器420中,但是越来越少的(或没有)操作员可以访问该密钥秘密。当没有操作员具有访问权限(或者授予或被授予未来访问权限的能力)时,由于任何方都将无法访问密钥,因此密钥秘密被有效地删除。在一些情况下,可重写的区块链系统可以在不可变阶段与可变阶段之间交替。例如,系统可以具有定义的时段,在该时段中重写可以被允许与重写不被允许的时段交替。附加地或备选地,重写特权可以在各方之间传递,例如,在循环方案或其他基于回合(turn-based)的方案中。例如,系统可以通过改变brs400上的访问许可来在各方之间传递重写特权。附加地或备选地,系统可以通过根据一组旋转的加密密钥连续地重新加密密钥秘密来传递特权。当密钥秘密利用特定方的加密密钥被加密时,该方变成可信方,直到该密钥秘密被重新加密。在一些情况下,密钥可以使用时间相关的方案来加密。例如,密钥可以使用时间锁或条件锁来加密。时间锁可以引起密钥在经过时间间隔后被加密或解密。在一些情况下,时间间隔可以被预定义。在一些情况下,时间间隔可以基于一个或多个条件被动态地设置。条件锁可以引起密钥在一个或多个条件发生时被加密或解密。在说明性示例场景中,一旦定义数量的块已被添加到区块链,则特定条件锁就可以解密重写密钥。在一些实施方式中,时间锁和/或条件锁可以例如由bpl1600自动执行。在一些实施方式中,为了临时访问目的,对密钥秘密的访问可以由系统经由分布式密钥秘密组合方案(诸如上面所讨论的那些)来提供。分布式密钥秘密组合方案可以用于一个或多个目的。在一些情况下,如上所述,分布式密钥秘密组合方案可以允许多个不可信方加入以形成可信方。附加地或备选地,分布式密钥秘密组合方案可以由系统使用来防止具有临时访问的可信方取得密钥秘密的完全知识,并从而取得永久访问。因此,系统可以保持密钥秘密的回合控制部分,其可以不必由任何可信方持有。在针对特定临时可信方的重写回合期间,系统可以对回合控制部分进行加密,以使得它可以与由临时可信方所持有的相应部分组合。组合后,重写可以被系统允许,但临时可信方不会取得永久访问权。在一些情况下,系统可以永久地删除回合控制部分,以将基于回合的可重写区块链变换为不可变区块链。在一些实施方式中,临时可信方可以由一组单独不可信方组成,这些单独不可信方将它们各自的密钥秘密部分组合起来以变成临时可信方。多阶段区块链允许由可信方或代表可信方控制重写能力的定时的灵活性。例如,多阶段区块链提供了技术解决方案,其允许区块链在特定阶段期间的可变性,同时在其他阶段期间实施不变性(或由不同方的可变性)。因此,区块链存储系统的安全性可以被定制。因此,底层存储硬件的安全性(例如,性能)被改进。此外,具有多个重写阶段的、由区块链提供的定制安全定时相对于现有市场解决方案而言提供了关于安全灵活性的改进。图16示出了示例区块链阶段逻辑(bpl)1600,其可以在电路中实现或利用电路实现。在一些情况下,bpl1600可以在brs400上被实现,以控制重写阶段、回合或其他重写访问约束。在针对第一可信方的重写许可阶段期间,bpl1600可以从第一可信方接收第一命令以执行对区块链的第一有效性保留重写(1602)。例如,该命令可以请求对区块链的一个或多个块的修改。在一些情况下,重写可以是有效性保留的,因为该重写(一旦完成)将是非防篡改的。然而,在一些情况下,有效性保留重写可以是防篡改的,并且通过满足与控制有效性的完整性代码的编码一致性条件来保持有效性。响应于该命令,bpl1600可以使得根据第一命令来执行第一有效性保留重写(1604)。例如,bpl1600可以访问密钥秘密并执行与相关完整性代码编码一致的重写。对密钥秘密的访问可以以在针对第一可信方的重写许可阶段期间所接收的第一命令为条件。在一些情况下,重写许可阶段可以特定于第一可信方。例如,针对第一方的重写许可阶段可以与针对第二方的重写禁止阶段重叠(全部或部分)。因此,重写许可阶段和重写禁止阶段可以以特定于一方的方式、特定于多方的方式或全局方式来实施。响应于针对第一可信方的重写许可阶段的结束,bpl1600可以修改对区块链的有效性保留重写的访问(1606)。例如,bpl1600可以删除密钥秘密、重新加密密钥秘密、改变针对特定用户设备的存储器访问许可、修改回合控制密钥秘密部分(例如,修改回合控制密钥秘密部分的内容和/或修改对回合控制密钥秘密部分的访问)或者修改对有效性保留重写的访问。如上所述,对重写的访问可以使用回合控制密钥秘密部分来控制。回合控制部分可以与由可信方持有的一个或多个部分组合。回合控制部分与由可信方持有的部分的组合可以允许由该可信方的重写。对这种组合的访问可以经由各种方案来控制。例如,对组合的访问可以通过修改回合控制部分的内容、以将回合控制部分与特定的可信方部分配对来控制。在示例中,对组合的访问可以通过使用由可信方控制的加密密钥(例如,可信方的公钥)加密回合控制部分来控制。在一些示例中,对组合访问组合的访问可以通过授权方案来控制,诸如将授权附接到特定用户简档。在一些实施方式中,bpl1600可以使用不将其他回合控制密钥部分的内容透露给可信方的方案来促进组合访问。例如,bpl1600可以部署密钥秘密交换(诸如上面所讨论的关于由多个单独不可信方的协调的交换)。因此,重写访问可以在第一阶段期间传递给第一可信方,在第二阶段期间远离可信方传递,其中先前访问并不提供允许第一可信方在第二阶段期间继续执行重写的知识。在一些实施方式中,访问可以传递回第一可信方。因此,在一些情况下,第一可信方可以重新获得访问。在针对第二可信方的重写禁止阶段期间,bpl1600可以从第二可信方接收第二命令以对区块链执行第二有效性保留重写(1608)。在一些情况下,第一可信方和第二可信方可以是同一方。然而,在其他情况下,第一可信方和第二可信方可以是不同方。附加地或备选地,针对第一可信方的重写许可阶段和针对第二可信方的重写禁止阶段可以至少部分地重合。然而,在一些情况下,这些阶段可能没有重叠。在一些情况下,从一个阶段到另一个阶段(例如,从重写许可阶段到重写禁止阶段)的进展可以响应于触发条件而被启动。在各种实施方式中,当触发条件被检测到或以其他方式被满足时,bpl1600可以从当前阶段进展到下一阶段(例如,在定义的序列中的下一阶段、响应于条件(其可以包括触发条件本身)或其他迹象而被确定的阶段)。例如,触发条件可以包括定时器到期、日期和/或时间条件、重写计数阈值、重写内容阈值、修改的块数量阈值、指定阶段变化的命令、由可信方在重写许可阶段对于回合结束的请求、由可信方在重写禁止阶段对于写入特权的请求、由阈值数量的可信方的请求、检测到的软件或链码更新或对区块链的其他更新、或其他指定条件。在各种实施方式中,bpl1600可以遵循定义的回合序列以确定针对多个可信方的回合顺序。定义的回合序列可以在创建区块链时被建立,或者在创建区块链之后被确定。在一些情况下,符合重写回合的多个可信方可以协商或以其他方式仲裁回合的顺序。在一些情况下,回合序列可以继续传递访问,可能具有中断而没有定义的终止。在一些情况下,回合序列可以在多个回合之后终止。例如,在回合控制部分被用来控制访问的情况下,bpl1600可以删除(例如,使用上述任何删除方法)回合控制密钥秘密部分以终止该序列。附加地或备选地,bpl1600可以通过在回合序列结束之后停止指派对附加可信方的访问来终止回合序列。类似地,bpl1600可以通过在有限时段内停止指派对可信方的访问来实现回合序列中的临时中断。在一些实施方式中,动态序列可以被使用。例如,基于争用的(contention-based)方案(类似于ieee802.11系列标准中所使用的基于争用的协议)可以被使用。可信方可以向bpl1600请求重写回合。bpl1600可以按所请求的顺序指派回合。如果没有其他可信方进行请求,则单个可信方可以被连续指派多个回合。在满足请求之后,可信方可以使其下一个请求在预定时间段内去优先级化(deprioritized),以确保其他可信方在单个可信方具有多个回合之前就接收回合。附加地或备选地,在满足针对特定可信方的请求之后,bpl1600可以实施“退后(back-off)”时段,其中该特定可信方可以不进行另一请求。在一些情况下,基于在定义时段内所请求的数量,退后时段的长度可以是固定的和预定义的、或被动态设置的。基于在针对第二方的重写禁止阶段期间接收到的第二命令,bpl1600可能无法引起第二有效性保留重写的执行(1610)。例如,bpl1600可能无法访问密钥秘密(例如,由于删除、改变的操作员许可、改变的加密、bpl1600部分上的主动防止或拒绝、或其他条件)。在没有对密钥秘密的访问的情况下,系统不一定能够执行有效性保留重写。例如,在不访问密钥秘密的情况下计算冲突数据是不可能的或不切实际的。附加地或备选地,尽管bpl1600可以访问相关的密钥秘密,但是bpl1600可能通过拒绝对这种重写的许可而无法引起第二有效性保留重写的执行。换言之,除了密钥秘密访问之外或代替密钥秘密访问,这些阶段可以通过许可而被实施。因此,在一些情况下,bpl1600可能会通过肯定地拒绝执行重写的许可而引起有效性保留重写的不成功执行;尝试利用密钥秘密的不完整(例如,部分、无或其他少于完整的)知识来执行有效性保留重写;或者响应于命令而采取其他确定性不成功的措施。在一些情况下,少于完整的访问可以通过失去访问或其他访问的修改而发生。例如,可信方可以在第一阶段期间访问密钥秘密(或其一部分)。然后,可信方可以在后续阶段中失去访问权限。附加地或备选地,在回合控制密钥秘密部分由bpl1600实现以控制重写阶段(例如,回合)的情况下,对与回合控制密钥秘密的组合的访问可能在阶段改变期间失去(全部或部分)或取得。在一些现实世界应用中,允许多阶段重写访问的区块链可以被实现。为了实现现实世界应用,重写可以被约束,以使得它可以在定义的阶段或在定义的条件下被执行。现实世界应用的两个示例在下面参考图17和图18被讨论。图17示出了示例多阶段区块链健康账本维护场景1700。在示例场景1700中,在区块链保护的医疗保险账本中,改变和更新可以由可信方在年度登记时段1702期间启动,在年度登记时段1702中对区块链的重写可以由系统所允许。因此,在该场景中,可信方(例如,保险提供商、医疗保险提供商或其他潜在的可信方)可以自由地重写先前块、更新链码块(例如,修改诸如智能合约条款的共识机制)、校订/更新先前的交易或对账本执行其他维护。然而,在年度登记时段之外,例如保单期限时段1704,对现有块的重写可以不被允许。因此,上面所讨论的多阶段区块链技术和架构为现实世界应用在具有循环报告要求的记录保持方面提供了具体的技术解决方案。图18示出了示例多阶段区块链分阶段部署场景1800。在分阶段部署场景1800中,基于区块链的条目系统可以最初被部署在测试阶段1802中。在测试阶段1802期间,负责维护区块链的可信方可以调试区块链,而该区块链在其他情况下被完全部署。例如,可信方可以对链码块进行更新。在测试阶段的末端1804,系统可以撤销(例如,永久撤销)可信方的重写特权。因此,在重写特权的撤销和可重写区块链变换为永久不可变状态之后是完成部署阶段1806。因此,上面所讨论的多阶段区块链技术和架构,为在初始部署期间实现调试支持的现实世界应用提供了具体的技术解决方案。上述方法、设备、处理和逻辑可以以许多不同方式实现并且以硬件和软件的许多不同组合来实现。例如,具体实施方式的所有或部分可以是:包括指令处理器的电路,诸如中央处理单元(cpu)、微控制器或微处理器;专用集成电路(asic)、可编程逻辑器件(pld)或现场可编程门阵列(fpga);或包括分立逻辑或其他电路组件的电路,其他电路组件包括模拟电路组件、数字电路组件或模拟和数字电路组件两者;或以上的任何组合。作为示例,该电路可以包括分立的互连硬件组件和/或可以被组合在单个集成电路管芯上、分布在多个集成电路管芯中、或者在共同封装中的多个集成电路管芯的多芯片模块(mcm)中实现。电路进一步可以包括或访问由电路执行的指令。该指令可以被体现为信号和/或数据流和/或可以被存储在除了瞬时信号之外的有形存储介质中,诸如闪存、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom);或者在磁盘或光盘上,诸如在光盘只读存储器(cdrom)上、硬盘驱动器(hdd)上、或者其他磁碟或光碟上;或者在另一个机器可读介质中或在另一个机器可读介质上。诸如计算机程序产品等产品可以特别地包括存储介质和被存储在该介质中或该介质上的指令,并且当由设备中的电路执行时该指令可以使得设备实现上述或在附图中示出的任何处理。这些实施方式可以作为电路(例如,硬件、和/或硬件和软件的组合)被分布在多个系统组件之间,诸如在多个处理器和存储器之间、可选地包括多个分布式处理系统之间。参数、数据库和其他数据结构可以被分开存储和管理、可以被合并到单个存储器或数据库中、可以以许多不同的方式在逻辑上和物理上来组织、并且可以以许多不同的方式来实现,包括作为数据结构,诸如链表、散列表、数组、记录、对象或隐式存储机制来实现。程序可以是单个程序的部分(例如,子例程)、分开的程序、跨若干存储器和处理器分布、或者以许多不同的方式来实现,诸如在库中实现,诸如实现为共享库(例如,动态链路库(dll))。例如,dll可以存储指令,当由电路执行时,该指令执行上述或附图中示出的任何处理。a1在示例中,一种系统包括:存储器,被配置为存储由完整性代码保护的区块链;以及区块链阶段电路,被配置为:在针对可信方的重写许可阶段期间,代表可信方引起在区块链内块的重写的执行,重写与完整性代码编码一致;以及在针对可信方的重写禁止阶段期间,代表可信方引起在区块链内块的重写的不成功执行,重写与完整性代码编码不一致。a2根据示例a1所述的系统,其中区块链阶段电路被配置为通过以下方式引起块的重写的不成功执行:基于对完整性代码的密钥秘密的不完全访问,来计算编码不一致的冲突数据。a3根据示例a1或a2所述的系统,其中区块链阶段电路被配置为通过以下方式引起块的重写的不成功执行:对可信方拒绝重写特权。a4根据示例a1至a3中任一个所述的系统,其中区块链阶段电路被配置为:删除用于完整性代码的密钥秘密以启动重写禁止阶段。a5根据示例a1至a4中任一个所述的系统,其中重写禁止阶段的启动包括:区块链的到不可变状态的永久变换。b1在示例中,一种方法包括:在针对第一可信方的重写许可阶段期间,接收第一命令以执行对区块链的第一有效性保留重写;响应于在重写许可阶段期间接收到第一命令,引起对区块链的第一有效性保留重写的执行;在针对第一可信方的重写许可阶段之后,修改对有效性保留重写的访问;在针对第二可信方的重写禁止阶段期间,接收第二命令以执行对区块链的第二有效性保留重写;以及响应于在重写禁止阶段期间接收到第二命令,引起对区块链的第二有效性保留重写的不成功执行。b2根据示例b1所述的方法,其中引起对区块链的第二有效性保留重写的不成功执行包括:基于对区块链的完整性代码的密钥秘密的不完全访问,来计算编码不一致的冲突数据。b3根据示例b1或b2中任一个所述的方法,其中引起对区块链的第二有效性保留重写的不成功执行包括:对第二可信方拒绝重写特权。b4根据示例b1至b3中任一个所述的方法,其中修改对有效性保留重写的访问包括:删除用于区块链的完整性代码的密钥秘密。b5根据示例b1至b4中任一个所述的方法,其中第一可信方和第二可信方包括相同的可信方。b6根据示例b1至b5中任一个所述的方法,其中第一可信方和第二可信方包括不同的可信方。b7根据示例b1至b6中任一个所述的方法,其中针对第一信任方的重写许可阶段和针对第二可信方的重写禁止阶段至少部分重合。b8根据示例b1至b7中任一个所述的方法,其中重写禁止阶段包括:区块链的到不可变状态的永久变换。c1在示例中,一种系统包括:存储器,被配置为存储区块链;以及区块链阶段电路,被配置为:接收第一命令以执行对区块链的第一有效性保留重写,第一命令在针对第一可信方的重写许可阶段期间被接收;响应于在重写许可阶段期间接收到第一命令,引起对区块链的第一有效性保留重写的执行;在针对第一可信方的重写许可阶段之后,修改对有效性保留重写的访问;接收第二命令以执行对区块链的第二有效性保留重写,第二命令在针对第二可信方的重写禁止阶段被接收;以及响应于在重写禁止阶段期间接收到第二命令,无法引起对区块链的第二有效性保留重写的执行。c2根据示例c1所述的系统,其中区块链阶段电路被配置为通过以下方式而无法引起对区块链的第二有效性保留重写的执行:基于对区块链的完整性代码的密钥秘密的少于完全的访问,来计算编码不一致的冲突数据。c3根据示例c1或c2中任一个所述的系统,其中区块链阶段电路被配置为通过以下方式而无法引起对区块链的第二有效性保留重写的执行:对第二可信方拒绝重写特权。c4根据示例c1至c3中任一个所述的系统,其中区块链阶段电路被配置为修改对有效性保留重写的访问包括:删除用于区块链的完整性代码的密钥秘密。c5根据示例c1至c4中任一个所述的系统,其中删除密钥秘密包括:删除被用来从加密形式中解密密钥秘密的解码密钥。c6根据示例c1至c5中任一个所述的系统,其中针对第一可信方的重写许可阶段和用于第二可信方的重写禁止阶段至少部分重合。c7根据示例c1至c6中任一个所述的系统,其中重写禁止阶段包括:区块链的到不可变状态的永久变换。d1在示例中,一种系统包括:存储器,被配置为存储区块链;以及区块链阶段电路,被配置为:通过代表选择的可信方获得允许将密钥秘密的回合控制部分与密钥秘密的第一部分组合的访问,来启动针对选择的可信方的重写许可阶段,第一部分由选择的可信方控制;将回合控制部分与第一部分组合以生成密钥秘密;接收第一命令以执行对区块链的第一有效性保留重写,第一命令在针对选择的可信方的重写许可阶段期间被接收;响应于在重写许可阶段期间接收到第一命令,引起使用密钥秘密的对区块链的第一有效性保留重写的执行;在针对选择的可信方的重写许可阶段之后,基于访问的丢失,在针对选择的可信方的重写禁止阶段期间无法将第一部分与回合控制部分组合;接收第二命令以执行针对区块链的第二有效性保留重写,第二命令在针对选择的可信方的重写禁止阶段期间被接收;以及响应于在重写禁止阶段期间接收到第二命令,无法引起对区块链的第二有效性保留重写的执行。d2根据示例d1所述的系统,其中区块链阶段电路被配置为通过以下方式而无法引起对区块链的第二有效性保留重写的执行:基于访问的丢失以及在重写禁止阶段期间无法将第一部分与回合控制部分组合,计算编码不一致的冲突数据。d3根据d1或d2中任一个所述的系统,其中区块链阶段电路被配置为通过以下方式引起对区块链的第二有效性保留重写的不成功执行:在重写禁止阶段期间对选择的可信方拒绝重写特权。d4根据示例d1至d3中任一个所述的系统,其中区块链阶段电路被配置为:传递访问以允许将回合控制部分与密钥秘密的第二部分组合,以启动针对选择的可信方的重写禁止阶段,密钥秘密的第二部分由与选择的可信方不同的目标可信方控制。d5根据示例d4所述的系统,其中,在针对选择的可信方的重写禁止阶段之后,区块链阶段电路被配置为:传递访问以允许将回合控制部分与密钥秘密的第三部分组合,以启动针对目标可信方的重写禁止阶段,密钥秘密的第三部分由与选择的可信方和目标可信方不同的特定可信方控制。d6根据示例d1至d5中任一个所述的系统,其中区块链阶段电路被配置为:提供访问以允许在针对选择的可信方的重写许可阶段期间将回合控制部分与密钥秘密的第二部分组合,以允许针对选择的可信方和目标可信方的并发重写许可阶段,密钥秘密的第二部分由目标可信方控制,目标可信方不同于选择的可信方。d7根据示例d1至d6中任一个所述的系统,其中区块链阶段电路被配置为,在重写禁止阶段之后,代表选择的可信方重新获得允许将密钥秘密的回合控制部分与密钥秘密的第一部分组合的访问,以启动选择的可信方的附加重写许可阶段。d8根据示例d1至d7中任一个所述的系统,其中区块链阶段电路被配置为:在多个可信方之间传递访问以执行回合序列,回合序列为多个可信方中的单独可信方定义重写许可阶段和重写禁止阶段,多个可信方包括选择的可信方。d9根据示例d8所述的系统,其中区块链阶段电路被配置为:删除回合控制部分以终止回合序列。d10根据d8或d9中任一个所述的系统,其中区块链阶段电路被配置为:暂时对所有多个可信方拒绝访问,以在回合序列中执行中断。d11根据示例d1至d10中任一个所述的系统,其中区块链阶段电路被配置为:经由密钥交换操作将回合控制部分与第一部分组合。d12根据示例d11所述的系统,其中密钥交换操作被配置为:将回合控制部分与第一部分组合,而不向选择的可信方公开回合控制部分的内容。d13根据示例d1至d12中任一个所述的系统,其中区块链阶段电路被配置为:响应于触发条件,启动针对选择的可信方的重写禁止阶段。d14根据示例d13所述的系统,其中触发条件包括:定时器的到期、接收到的指示阶段变化的命令、检测到的软件更新、对回合结束的请求、或以上的任何组合。e1在示例中,一种方法包括:通过代表选择的可信方获得允许将密钥秘密的回合控制部分与密钥秘密的第一部分组合的访问,来启动针对选择的可信方的重写许可阶段,第一部分由选择的可信方控制;将回合控制部分与第一部分组合以生成密钥秘密;接收第一命令以执行对区块链的第一有效性保留重写,第一命令在针对选择的可信方的重写许可阶段期间被接收;响应于在重写许可阶段期间接收到第一命令,引起使用密钥秘密的对区块链的第一有效性保留重写的执行;在针对选择的可信方的重写许可阶段之后,基于访问的丢失,在针对选择的可信方的重写禁止阶段期间无法将第一部分与回合控制部分组合;接收第二命令以执行对区块链的第二有效性保留重写,第二命令在针对选择的可信方的重写禁止阶段期间被接收;以及响应于在重写禁止阶段期间接收到第二命令,无法引起对区块链的第二有效性保留重写的执行。e2根据示例e1所述的方法,进一步包括:在多个可信方之间传递访问以执行回合序列,回合序列为多个可信方中的单独可信方定义重写许可阶段和重写禁止阶段,多个可信方包括选择的可信方。e3根据示例e2所述的方法,进一步包括:删除回合控制部分以终止回合序列。e4根据示例e2或e3中任一个所述的方法,进一步包括:暂时对所有多个可信方拒绝访问,以在回合序列中执行中断。f1在示例中,一种产品包括:除瞬时信号之外的机器可读介质;以及指令,被存储在机器可读介质上,指令被配置为在被执行时使得机器:通过代表选择的可信方获得允许将密钥秘密的回合控制部分与密钥秘密的第一部分组合的访问,来启动针对选择的可信方的重写许可阶段,第一部分由选择的可信方控制;将回合控制部分与第一部分组合以生成密钥秘密;接收第一命令以执行对区块链的第一有效性保留重写,第一命令在针对选择的可信方的重写许可阶段期间被接收;响应于在重写许可阶段期间接收到第一命令,引起使用密钥秘密的对区块链的第一有效性保留重写的执行;在针对选择的可信方的重写许可阶段之后,基于访问的丢失,在针对选择的可信方的重写禁止阶段期间无法将第一部分与回合控制部分组合;接收第二命令以执行对区块链的第二有效性保留重写,第二命令在针对选择的可信方的重写禁止阶段期间被接收;以及响应于在重写禁止阶段期间接收到第二命令,无法引起对区块链的第二有效性保留重写的执行。f2根据示例f1所述的产品,其中指令进一步被配置为使得机器:响应于触发条件,启动针对选择的可信方的重写禁止阶段。g1在示例中,一种系统包括:存储器,被配置为存储由完整性代码保护的区块链;以及区块链阶段电路,被配置为:在针对可信方的重写许可阶段期间,代表可信方引起在区块链内块的重写的执行,重写与完整性代码编码一致;响应于触发条件,将对重写的访问远离可信方传递以启动针对可信方的重写禁止阶段;以及在针对可信方的重写禁止阶段期间,代表可信方引起在区块链内块的重写的不成功执行,重写与完整性代码编码不一致。g2根据示例g1所述的系统,其中区块链阶段电路被配置为通过以下方式引起块的重写的不成功执行:基于对完整性代码的密钥秘密的少于完全的访问,来计算编码不一致的冲突数据。g3根据示例g1或g2中任一个所述的系统,其中区块链阶段电路被配置为通过以下方式引起块的重写的不成功执行:对可信方拒绝重写特权。g4根据示例g1至g3中任一个所述的系统,其中区块链阶段电路被配置为:删除用于完整性代码的密钥秘密以启动重写禁止阶段。g5根据示例g1至g4中任一个所述的系统,其中重写禁止阶段的启动包括:区块链的到不可变状态的永久变换。h1在示例中,一种方法包括:在针对第一可信方的重写许可阶段期间,接收第一命令以执行对区块链的第一有效性保留重写;响应于在重写许可阶段期间接收到第一命令,引起对区块链的第一有效性保留重写的执行;响应于触发条件,修改对有效性保留重写的访问以终止针对第一可信方的重写许可阶段;在针对第二可信方的重写禁止阶段期间,接收第二命令以执行对区块链的第二有效性保留重写;以及响应于在重写禁止阶段期间接收到第二命令,引起对区块链的第二有效性保留重写的不成功执行。h2根据示例h1所述的方法,其中引起对区块链的第二有效性保留重写的不成功执行包括:基于对区块链的完整性代码的密钥秘密的不完全访问,来计算编码不一致的冲突数据。h3根据示例h1或h2中任一个所述的方法,其中引起对区块链的第二有效性保留重写的不成功执行包括:对第二可信方拒绝重写特权。h4根据示例h1至h3中任一个所述的方法,其中修改对有效性保留重写的访问包括:删除用于区块链的完整性代码的密钥秘密。h5根据示例h1至h4中任一个所述的方法,其中第一可信方和第二可信方包括相同的可信方。h6根据示例h1至h5中任一个所述的方法,其中第一可信方和第二可信方包括不同的可信方。h7根据示例h1至h6中任一个所述的方法,其中针对第一信任方的重写许可阶段和针对第二可信方的重写禁止阶段至少部分重合。h8根据示例h1至h7中任一个所述的方法,其中重写禁止阶段包括:区块链的到不可变状态的永久变换。h9根据示例h1至h8中任一个所述的方法,进一步包括:根据定义的序列在多个可信方之间传递重写访问。h10根据示例h9所述的方法,进一步包括:通过删除与区块链的完整性代码相关联的密钥秘密来终止序列。i1在示例中,一种系统包括:电路,被配置为实现根据示例b1至b8、e1至e4和h1至h10中任一个所述的方法。j1在示例中,一种产品包括:被存储在机器可读介质上的指令,指令被配置为使得机器实现根据示例b1至b8、e1至e4和h1至h10中任一个所述的加密投票方法。k1在示例中,一种方法包括:实现前述公开中所描述的特征中的任何一个或任何组合。l1在示例中,一种系统被配置为:实现前述公开中所描述的特征中的任何一个或任何组合。各种实施方式已经被具体描述。然而,许多其他实施方式也是可能的。本文所使用的标题和/或副标题仅旨在帮助读者理解所描述的实施方式。本发明由权利要求所限定。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1