首页 / 专利库 / 银行与财务事项 / 比特币地址 / 区块链物联网设备的操作系统

物联网设备的操作系统

阅读:828发布:2020-05-25

专利汇可以提供物联网设备的操作系统专利检索,专利查询,专利分析的服务。并且本 发明 提供一种用于协调,控制和/或影响设备活动的通用 操作系统 。本发明使用 区 块 链 平台实现,操作系统与区块链平台进行交互。区块链可以是 比特币 区块链。在优选 实施例 中,该设备是 物联网 (IOT)设备。本发明提供了一种计算机实现的控制系统和用于控制设备的相应方法。所述系统包括:设备,用于与网络进行无线通信,且具有IP地址和与所述设备相关的公钥-私钥加密密钥对; 软件 实现的控制元件,用于监测区块链网络的状态和/或将 区块链交易 发送到所述区块链网络;以及指令集,由所述控制元件执行,以控制所述设备的功能。所述控制元件用于从存储 位置 访问 该指令集,所述存储位置与所述设备分开。该指令集可以存储在分布式散列表(DHT)中,并且当需要时由所述控制元件从所述DHT访问并下载和安装该指令集。使用区块链交易内提供的元数据来指示或提供所述DHT和/或指令的位置。所述控制元件使用与加密密钥对相关的查找关键字来访问该指令集。将所述控制元件设置在设备上或设备中,或者在其它实施例中可以设置在设备之外的位置,并且将其设置用于与所述设备进行无线通信。,下面是物联网设备的操作系统专利的具体信息内容。

1.一种用于控制设备的计算机实现的控制系统,所述系统包括:
设备,用于与网络进行通信,所述设备具有IP地址和与所述设备相关的公钥-私钥加密密钥对;
软件实现的控制元件,用于监测链网络的状态和/或发送区块链交易到所述区块链网络;其中所述控制元件用于访问来自存储位置的指令集,所述存储位置与所述设备是分开的;以及
指令集,其由所述控制元件执行,以控制所述设备的功能;其中所述指令集存储在分布式散列表(DHT)中;由所述控制元件访问并下载和安装来自所述DHT的所述指令集;使用区块链交易内提供的元数据,来指示或提供所述DHT的位置。
2.根据权利要求1所述的系统,其中,所述控制元件用于接收来自输入源的输入信号,其中所述输入源是:
另外的设备;和/或
基于计算机的资源或代理。
3.根据权利要求1或2所述的系统,其中,所述控制元件使用与加密密钥对相关的查找关键字,来访问所述指令集。
4.根据任一上述权利要求所述的系统,其中,所述控制元件提供于所述设备上或所述设备中。
5.根据任一上述权利要求所述的系统,其中,所述控制元件提供于设备之外的位置,并用于与所述设备进行无线通信。
6.根据任一上述权利要求所述的系统,其中,所述控制元件用于:
执行加密计算;
访问与其相关的私钥/公钥对;
具有相关的比特币或其他与区块链有关的地址;
通过API操作所述设备;
执行秘密共享协议操作。
7.根据任一上述权利要求所述的系统,其中,所述控制元件用于,基于有效区块链交易的检测,影响或控制所述设备的活动。
8.一种用于控制设备的计算机实现的控制方法,所述方法包括以下步骤:
提供设备,所述设备用于与网络进行无线通信,所述设备具有IP地址和与所述设备相关的公钥-私钥加密密钥对;
提供软件实现的控制元件,所述软件实现的控制元件用于监测区块链网络的状态和/或发送区块链交易到所述区块链网络;
提供指令集,所述指令集由所述控制元件执行,以控制所述设备的功能。
其中:
i)所述控制元件用于访问来自存储位置的所述指令集,所述存储位置与所述设备是分开的;
ii)所述指令集存储在分布式散列表(DHT)中,由所述控制元件访问并下载和安装来自所述DHT的所述指令集;以及
iii)使用区块链交易内提供的元数据,来指示或提供所述DHT的位置。
9.根据权利要求8所述的方法,其中,所述控制元件用于接收来自输入源的输入信号,其中所述输入源是:
另外的设备;和/或
基于计算机的资源或代理。
10.根据权利要求9所述的方法,其中,所述控制元件使用与加密密钥对相关的查找关键字,来访问所述指令集。
11.根据权利要求8至10中的任一项所述的方法,其中,所述控制元件提供于所述设备上或所述设备中。
12.根据权利要求8至11所述的方法,其中,所述控制元件提供于设备之外的位置,并用于与所述设备进行无线通信。
13.根据权利要求8至12中的任一项所述的方法,其中,所述控制元件用于:
执行加密计算;
访问与其相关的私钥/公钥对;
具有相关的比特币或其他与区块链有关的地址;
通过API操作所述设备;
执行秘密共享协议操作。
14.根据权利要求8至13中的任一项所述的方法,其中,所述控制元件用于,基于有效区块链交易的检测,影响或控制所述设备的活动。

说明书全文

物联网设备的操作系统

技术领域

[0001] 本发明主要涉及分布式分类账(distributed ledger)(区块链)技术。可以是任何与区块链相关的技术,包括(但不限于)比特币区块链。本发明的各方面还涉及物联网(Internet of Things,简称IoT)。本发明可适用于控制IoT设备。

背景技术

[0002] 在本文中,我们使用术语“区块链”来包括所有形式的电子的、基于计算机的分布式分类账,包括基于共识的区块链和交易链技术、取得许可和未取得许可的分类账、共享分类账、侧链和替代链(alt chains)及其变形。虽然已经提出并开发了其他区块链实施方案,但是区块链技术最广为人知的应用是比特币分类账(Bitcoin ledger)。虽然出于方便和说明的目的,本文中可能提到了比特币,但应该指出的是,本发明不限于比特币区块链的应用,其他区块链实施方式和协议也落入到本发明的范围内。术语“用户”在本文中可以指人或基于处理器的资源。
[0003] 区块链是一种点对点的电子分类账,它是一种基于计算机的,去中心化的、分布式系统,由区块组成,而这些区块又由交易组成。每笔交易均是一个数据结构,对区块链系统中的参与者之间的数字资产的控制权的转移进行编码,并且该数据结构包括至少一个输入和至少一个输出。每个区块包含前一个区块的散列,使得区块链接在一起,从而创建一个永久的、不可更改的记录,该记录自区块链诞生之始就已写入区块链的所有交易。交易包含嵌入其输入和输出中的被称为脚本(script)的小程序,这些小程序指定如何以及由谁来访问交易的输出。在比特币平台上,这些脚本是使用基于堆栈的脚本语言编写的。
[0004] 为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)执行工作以确保每个交易都有效,无效交易被网络所拒绝。安装在节点上的软件客户端通过执行定和解锁脚本,对未花费的交易(UTXO)执行此验证工作。如果锁定和解锁脚本的执行评估为真(TRUE),则交易有效。脚本语言中的许多命令返回布尔值(例如OP-EQUAL),使得能够将限制性构建到区块链交易中。
[0005] 区块链技术最有名的是其在加密货币上的应用。然而,近年来,数字企业家们已经开始探索使用比特币所基于的加密安全系统和能够存储在区块链上的数据来实现新的系统。本发明涉及区块链技术的这样一种新的、创造性的用途。
[0006] 特别地,本发明涉及使用区块链来实现简单而有效且强大的机制,用以创建广泛而多种多样的计算机实现系统。这样的系统可包括用于自动化和控制进程和/或引导设备行为的控制单元和控制系统。
[0007] 这些设备可以包括IOT设备。IOT设备嵌有电子电路、软件、传感器,并具有网络功能等,使其能与其他设备和系统通信——经常是通过无线方式——并执行所需的任务。在某些情况下,IOT设备可能非常小并且仅包含有限的处理和存储容量。如果设备的任务所需的软件很大且很复杂,则会出现问题。此外,由于提供IoT连接性和智能性所需的软件和硬件,由设备本身在其上或其中提供,因此软件和硬件的安装、维护和升级等变得更加困难和昂贵。另外,近年来由于人们对安全问题的担忧,人们对物联网的潜的热情有所降温。
[0008] 2015年1月的现有技术《ADEPT:IoT从业者视》(“ADEPT:IoT Practitioner Perspective”)公开了一种将区块链技术与IoT设备集成的方法。在其提交之时,其可以从此链接获取到:https://ia902601.us.archive.org/4/items/pdfy-esMcC00dKmdo53-/IBM%20ADEPT%20Practictioner%20Perspective%20-%20Pre%20Publication%20Draft%20-%207%20Jan%202015.pdf。此文(下文称为“ADEPT”)描述了一种洗衣机设备。该洗衣机设备通过合约进行管理,并且通过区块链与零售商通信,从而在满足“低洗涤剂运行”的条件下,洗衣机设备购买物料。
[0009] 然而,虽然ADEPT公开了IoT系统如何对区块链进行操作,但是没有提到如何使用区块链对此系统进行设置、配置,没有提到区块链对该系统在技术上的影响的问题。也就是说,ADEPT虽然解释了IoT上的软件如何与区块链自主交互,但是没有讨论或披露如何在第一个实例中将软件设置在设备上,或者更确切地说,在使用/操作/部署期间如何改变该设备的行为。
[0010] 因此,如果通用的(即无指定设备)操作系统足够小,能够被加载到任何设备中,同时又能保持强大的网络安全,将是有利的。优选地,这种操作系统为设备提供动态功能,而不是静态功能。也就是说,如果可以以简单、有效、和动态的方式改变设备的配置,设置和功能,这将是一个重要的技术优势。这种技术方案在现有技术如ADEPT中没有提到。其相对于已知现有技术的另一个优点是能够实现简单、安全和稳健的控制功能,包括处理支付由设备提供的服务的可能性。本发明通过将IOT连接到诸如比特币协议等区块链协议来达到这些目标和其他目标。

发明内容

[0011] 因此,本发明提供了一种所附权利要求中限定的系统和方法。
[0012] 本发明可以提供一种计算机实现的系统和方法。可以将其描述为控制方法,因为其控制、引导和/或影响一个或多个设备的活动。可以将本发明描述为操作系统,可以通过软件实现。
[0013] 本发明可以包括用于协调、控制和/或影响至少一个设备的活动的操作系统。由于操作系统独立于其所控制的设备,在此意义上,可以说操作系统是通用的。
[0014] 可以使用区块链平台来实现本发明,操作系统(“控制元件”)与该区块链平台交互。区块链可以是比特币区块链。在优选实施例中,该设备是物联网(IOT)设备。
[0015] 本发明可提供用于控制设备的计算机实现的控制系统。该系统可以包括:设备,用于与网络进行无线通信,所述设备具有IP地址和与设备相关的公钥-私钥加密密钥对;
软件实现的控制元件,用于监测区块链网络的状态和/或发送区块链交易到区块链网络;和/或
指令集,由控制元件执行,以控制设备的功能。
[0016] 控制元件可用于访问来自存储位置的该指令集,该存储位置与设备是分开的,即“在设备之外”(“off device”)。
[0017] 控制元件可用于接收来自输入源的输入信号。输入源可以是:另外的设备;和/或
基于计算机的资源或代理。基于计算机的代理或资源可基本如下所述。
[0018] 该指令集可存储在分布式散列表(DHT-Distributed Hash Table)中,由控制元件访问并下载和安装来自DHT的该指令集。这样做的一个优点是提供了更换指令(以及设备功能)的能力。
[0019] 可以使用区块链交易内提供的元数据来指示或提供DHT的位置。这样做的优点是指令的位置不可变地记录在区块链中。这样就提供了永久性的和防篡改的记录,并且任何能够访问区块链的一方都可以验证该位置。这样就增强了安全性,增强了验证。
[0020] 控制元件使用与加密密钥对相关的查找关键字,可访问该指令集。
[0021] 控制元件可提供于设备上或设备中。控制元件可提供于设备之外的位置,并用于与设备进行无线通信。
[0022] 控制元件可用于:执行加密计算;
访问与其相关的私钥/公钥对;
具有相关的比特币或其他与区块链有关的地址;
通过API操作设备;
执行秘密共享协议操作。这可根据基本如下所述的秘密共享协议。
[0023] 控制元件可用于,基于有效区块链交易的检测,影响或控制设备的活动。
[0024] 本发明可提供基本如下所述的系统和/或方法。
[0025] 本发明可提供一种计算机实现的控制方法,用于控制一个设备或多个设备。该方法可包括以下步骤:提供设备,该设备用于与(无线)网络通信,该设备具有IP地址和与该设备相关的公钥-私钥加密密钥对;
提供软件实现的控制元件,该软件实现的控制元件用于监测区块链网络的状态和/或发送区块链交易到区块链网络;
提供指令集,该指令集由控制元件执行,以控制设备的功能。
[0026] 控制元件用于访问来自存储位置的该指令集,该存储位置与该设备是分开的。控制元件用于接收来自输入源的输入信号,其中输入源可为:另外的设备;和/或
基于计算机的资源或代理。
[0027] 该指令集可存储在分布式散列表(DHT)中,由控制元件访问并下载和安装来自DHT的该指令集。
[0028] DHT的位置可使用区块链交易内提供的元数据来指示或提供。控制元件可使用与加密密钥对相关的查找关键字,来访问该指令集。
[0029] 控制元件可提供于设备上或设备中。控制元件可提供于设备之外的位置,并用于与设备进行无线通信。
[0030] 控制元件可用于:执行加密计算;
访问与其相关的私钥/公钥对;
具有相关的比特币或其他与区块链有关的地址;
通过API操作设备;
执行秘密共享协议操作。
[0031] 控制元件可用于,基于有效区块链交易的检测,影响或控制设备的活动。
[0032] 所描述的与本发明的一个实施例或一个方面相关的任何特征,也均可应用于本发明的任何其他特征或实施例。例如,所提及的与该系统有关的任何特征,均可应用于该方法,反之亦然。附图说明
[0033] 参考本文所述的实施例,本发明的这些和其他方面将变得清晰,并得以阐明。现在将仅通过示例描述本发明的实施例,并参考附图,其中:
[0034] 图1示出了根据本发明的实施例的系统,其与说明性使用实例有关;
[0035] 图2示出了图1的控制系统的真值表
[0036] 图3示出了处理图1的示例的解锁交易的步骤;以及
[0037] 图4到8示出了可用于共享秘密并生成公钥或私钥的技术。
[0038] 图9至图11示出了一种实施方式的若干方面,其中区块链交易的锁定脚本用于实现逻辑的功能。
[0039] 图9示出了一种技术的概况,其中在第一交易的锁定脚本内评估两个布尔输入A和B以生成布尔输出X.
[0040] 图10示出了使用第一和第二区块链交易实现逻辑门的技术的概况。
[0041] 图11示出了使用区块链交易的锁定脚本来实现逻辑门的功能的过程。

具体实施方式

[0042] 除了其他优点,本发明提供了以下优点,包括:·提供了一个特意做“薄”的操作系统(内存小和/或处理要求少),因此其可应用于任何IOT设备;
·可以很容易地“升级”,因为特定于设备的功能没有硬编码到设备中,而是从诸如分布式散列表(DHT)等安全存储库加载;这是对现有技术的重大技术改进,现有技术未使得动态配置更加便利;
·可以由自主计算代理(驻留在IOT设备上的或外部的软件)控制和管理;
·因为与诸如比特币平台等区块链交互,可以实现支付处理功能的集成;
·提供了基于区块链密码学——例如比特币椭圆曲线密码系统(ECC-Elliptic Curve Cryptosystem——的可靠的安全性。
[0043] 区块链IOT设备(Blockchain IOT Device,简称BID)是被设置为执行预定指令的计算代理,该预定指令安全地存储在BID之外(Off-BID),并通过加密密钥被访问。“Off-BID”是指指令不是由BID本身提供,而是存储在别处,并在需要时被访问。选择和设置这些指令以执行一个所选的任务或多个任务。执行时,指令可控制和影响IOT设备的行为。在优选实施例中,BID驻留在IOT本身,这意味着BID安装在IOT设备之中或之上的存储器中。然而,在其他实施例中,BID可驻留在设备之外并且具有连接到该设备的互联网连接。
[0044] IOT设备有自己的加密密钥(以及IP地址),因此它可以安全地与其他设备或DHT等进行通信和交互。其“操作系统”是一个简单的通用系统,具有一些嵌入式功能,(至少,但不限于)用于:·加密计算;
·从外部源(例如DHT)获取指令;
·执行简单的操作,例如切换开关(即在实体的IOT设备上)。
[0045] 因此,IOT设备及与其相关的BID都不包含它们自己的内置指令,也都不“知道”其自身的用途或使用方式。BID仅包含用于从其他地方安全地获取指令的机制。BID只能执行一些简单的动作(以下仅是说明性的而非限制性的):·访问自身的主私钥和公钥对;其也有自身的(可导出的)BTC地址;
·将数据发送到IP地址或从IP地址接收数据的能力;
·秘密共享协议计算(如下所述)——在优选实施例中,这些可以嵌入到机器代码中;
·查找和解释区块链事件
·操作和控制其所连接的实体设备(通过标准API,基本上只是一组开关)
[0046] BID的传入和传出通信使用如下所述的安全机制加密,其使得能够使用共享的秘密创建密钥。这允许:(i)更高的安全性,从而避免“黑客攻击”;
(ii)简单的通用软件升级协议
(iii)设备不可知论
[0047] 因此,本发明提供了一种可用于任何IOT设备的通用操作系统。设备本身未被编程——所有程序单独存储并在设置时(或者,在一些实施例中,在执行时)加载到设备中。本发明的示例用途
[0048] 以下说明性示例涉及本发明的实施例的使用,用于控制自动喂食器IOT设备。其仅用于说明目的,作为如何使用本发明的一个实施方式的示例。
[0049] 现在参看图1,系统100包括第一和第二客户端设备(分别被枚举标记为102a和102b),以及BID控制系统104,用于接收来自第一102a和第二102b客户端设备的输入,并发送信息到第一102a和第二102a客户端设备。在该使用实例中,第一和第二客户端设备102a,
102b是可由BID控制系统104检测的射频识别设备(RFIDs-Radio  Frequency Identification Devices)。控制系统104可运行以使用区块链以及可运行以发送输出到区块链。
[0050] 我们将使用卡罗尔(Carol)的两只名为阿基米德(Archimedes)(A)和伯特兰(Bertrand)(B)的狗作为例子,来描述控制系统104如何工作。阿基米德和伯特兰一整天都待在后院,后院只有它们两个。只要不一起吃饭,它们就彼此友好。只要一起吃饭,它们就会由于某种原因而变得好斗甚至打起架来。A和B都佩戴有识别RFID项圈,即第一RFID项圈102a和第二RFID项圈102b,可由物联网(IOT)设备101检测。该IOT设备是自动喂食器,其分配定量食物供其中一只狗食用,即BID控制系统104控制IOT供食装置的操作。
[0051] 在该示例中,BID 104是提供于IOT自动喂食器上的软件资源或元件,并且与喂食器交互以控制其功能。
[0052] BID从DHT下载并安装其指令,从而开始工作。在这些指令被修改之前,不需要再次执行此操作。例如,可能是当需要升级BID或者要完全修改BID的行为时,例如可修改其指令集以检测三个或更多个RFID信号。
[0053] 控制代理使用由BID传输的值来创建区块链交易,并且还在每次迭代之后与BID共享新的秘密,如下所述。
[0054] 使用区块链交易来实现BID控制系统104的功能,该区块链交易使用锁定脚本锁定:OP_HASH160OP_EQUAL
[0055] 创建交易以(通过链接到分布式散列表(DHT)的元数据)提供指令集来控制IOT自动喂食器设备,可包括根据下面描述的内容建立的至计算资源的指令。元数据可以包括指向可访问指令的位置的指针或引用,而不是存储指令在交易本身。因此,指令可保持在“区块外”(“off-block”)。
[0056] 区块链不仅提供用于控制活动的机制,还记录已发生的事件的信息。例如,区块链提供了以下功能:计算喂食次数,喂食发生的时间、哪只狗吃的,以及判断是否已分配最大食物配给等。区块链还提供加密安全性。
[0057] 交易的一个重要功能是确保只有当一只狗出现在喂食器前的同时才分配食物。因此,需要在交易的脚本中构建一些条件,这是通过逻辑运算(XOR-Exclusive OR)功能实现的,如图2所示的真值表,并参考图9到11:·如果A和B都没有在喂食器前,则不分配食物;
·如果A在喂食器前而B不在,则分配食物;
·如果B在喂食器前而A不在,则分配食物;
·如果A和B都在喂食器前,则不分配食物。
[0058] 当A或B在喂食器前时,RFID信号从各自的客户端设备——即第一RFID项圈102a或第二RFID项圈102b,发送到自动喂食器的控制系统104,以解锁狗的安全当前谜题(puzzle)解决方案(在每次迭代后,其被新的谜题解决方案安全替换)。如果A或B不在喂食器前,则从各自的RFID项圈传输随机数到喂食器。也就是说,一只狗“在喂食器前”意味着它的RFID项圈位于喂食器的可检测范围内。如果是这种情况,则解锁相关谜题以进行传输。如果不是这样,则默认为随机数。
[0059] 本领域已知,因此,谜题解决方案是这样一种数据:当对该数据进行散列时,会产生一个值,当该值与(比特币)脚本中的存储值进行比较时提供匹配。也就是说,该过程是:将秘密值(“解决方案”)进行散列并存储在锁定脚本中以供稍后比较。为了解锁锁定脚本,通过解锁(赎回)将秘密呈现给脚本。对呈现的值进行散列,然后与存储的散列进行比较。如果比较结果为二者相等,则比较结果为“TRUE”。在实践中,存储的值是秘密的双散列(DOUBLE-hash),而呈现的值是秘密的单散列(SINGLE-hash)。对于脚本的输入,这使得任何长度的秘密都会减少到标准的可管理大小(即总是160位长)。
[0060] 自动喂食器BID执行其指令,使用与BID的密钥/对相关的查找关键字从DHT获取指令。控制代理管理流向/来自BID的数据(即,与RFID信号有关、与BID的指令集无关的数据)。因此,自动喂食器BID监测其自身状态。它存储从单独的控制代理103接收的两个秘密值(S1和S2)。控制代理103可为适当编程的计算资源,用于监管喂食过程。当在范围内检测到狗的RFID项圈时,有条件地使用秘密值S1和S2。基于从合适的DHT获取的指令,当检测到在范围内(以及其它条件,涉及一天中时间、之前喂过的次数、其它限制条件等等)的RFID时,向通用代理(Generic Agent)发送信号作为其控制代理(见下文)。所述信号包括:
·如果检测到阿基米德的RFID,则S1(=Puzzle-A-Solution),否则为随机数;
·如果检测到伯特兰的RFID,则S2(=Puzzle-B-Solution),否则为随机数;
[0061] 然后,自动喂食器BID:·自动喂食器检查网络上的有效交易(交易可能已经或可能还没有公布在区块上,但必须是有效的)。此交易由控制代理创建和广播。
如果嵌入的XOR测试已通过,则交易有效。如果未通过,则交易将是无效的并不会传播到网络上的第一中继段(hop)之外。因此,BID将不会检测到它。或者,如果BID在第一中继段中并因此检测到交易,
则BID的部分功能(与任何其他节点一样)是验证交易。因此,BID在进行后续动作之前将能够检测出交易是否有效。有效交易也保证了已将所需信息——即关于喂食事件的信息,存储并记录在区块链上。
·如果上面的回答为真(TRUE),则BID执行其条件指令——在这种情况下,它会分配一些食物;
·BID从控制代理103接收传输,使其能够共享两个秘密(根据下文,为S1和S2),并在内部更新这些秘密值,为下一步的迭代做准备。
[0062] 比特币交易的锁定脚本以下式表示:OP_HASH160OP_EQUAL OP_SWAP
OP_HASH160OP_EQUAL
OP_NUMEQUAL OP_NOT OP_VERIFY
OP_1 metadata1 PubK-Carol OP_2 OP_CHECKMULTSIG
[0063] 其中:Puzzle-A是OP_HASH160(Puzzle-A-Solution)的等效结果;
Puzzle-B是OP_HASH160(Puzzle-B-Solution)的等效结果;
metadata1(元数据1)包含对存储在DHT中的编码指令的引用;
PubK-Carol是卡罗尔的公钥。
[0064] 注意,代理的程式编写可为硬编码的,或者也可从DHT获取其自己的指令。
[0065] 按照下文列出的过程来存储和访问编码指令,用于使用元数据引用来自区块链交易的合约。可以使用下文列出的过程安全保存或重新创建卡罗尔的公钥。
[0066] 为了解锁上文示出的说明性区块链交易,将需要以下脚本:Sig-Caro1Puzzle-B-solution Puzzle-A-Solution
[0067] 我们参考图3来说明以下步骤。
[0068] 控制系统104可运行以对所呈现的谜题-A解决方案进行散列,并将其与在步骤S300中从存储中获取的谜题-A的存储版本(存储版本是解决方案的散列)进行比较。谜题-A的存储版本可存储在控制系统104的本地存储中或任何其他合适的存储介质中。如果二者相同,则堆栈顶部=1,而如果二者不同,则堆栈顶部=0。
[0069] 然后,在步骤S302中,将堆栈顶部与堆栈上的第二项进行调换,该第二项是谜题-B解决方案。对谜题-B解决方案进行散列,并将其与从存储中获取的谜题-B的存储版本进行比较,并再次以与S300相似的方法将1或0推送到堆栈的顶部。谜题-B的存储版本可存储在控制系统104的本地存储中或任何其他合适的存储介质上。
[0070] 此时,顶部两个堆栈项为0或1。在步骤S304中,OP_NUMEQUAL如果数字相等则返回1,否则返回0,这与XOR真值表完全相反。
[0071] 在步骤S306中,OP_NOT则翻转堆栈的顶部项以产生所需的XOR结果。
[0072] 在步骤S308中,OP_VERIFY则检查堆栈的顶部项是否为1,如果不是——即如果XOR操作失败,则立即将交易标记为无效,因为来自第一和第二客户端设备的不止一个输入返回了匹配的谜题解决方案。其结果是由于IOT分配器前的狗多于一只,没有食物被IOT分配器分配。也就是说,控制系统104的输出由底层比特币交易的执行来控制。
[0073] 如果OP_VERIFY返回1,则控制系统104中的处理返回到脚本的多签名(multi-sig)部分,其中在步骤S310对卡罗尔的签名的存在进行检验。
[0074] 在解锁脚本分析中由控制系统104执行的堆栈操作如下所示。首先,控制系统104对解锁脚本进行散列,以使用OP_EQUAL,将散列与解锁脚本的散列进行比较。接下来,执行解锁脚本。使用共享秘密创建密钥
[0075] 可以安全地保存或重新创建密钥。特别地,在私钥可以用于导出公钥的情况下,私钥可以分成部分存储。
[0076] 用户——也就是爱丽丝(Alice)或鲍勃(Bob)可以保存他们的私钥的一部分,服务提供商可以保存第二部分,而第三部分可以保存在远程安全站点中。可以使用三个部分中的任何两个来重构私钥,或者更概括地,可以使用n个部分中的任意m个部分来重构私钥。
[0077] 如果私钥可以重构,那么私钥可以用于在使用时重新创建公钥,然后私钥和公钥可以在使用后再次丢弃。
[0078] 可以使用夏米尔秘密共享方案(Shamir’s Secret Sharing Scheme)来达到拆分私钥的目的。可以使用以下方法从主密钥确定性地导出私钥-公钥对。该方法使得参与者可以共享秘密值而无需传输它们。
[0079] 系统可以使用子密钥生成方法为参与者生成公钥。如下所述:
[0080] 图4示出了系统1,其包括通过通信网络5与第二节点7通信的第一节点3。第一节点3具有相关的第一处理设备23,第二节点7具有相关的第二处理设备27。第一和第二节点3,7可包括电子设备,例如计算机,电话,平板计算机,移动通信设备,计算机服务器等。在一个示例中,第一节点3可以是客户端(用户)设备,第二节点7可以是服务器。服务器可以是数字钱包提供商的服务器。
[0081] 第一节点3与具有第一节点主私钥(V1C)和第一节点主公钥(P1C)的第一非对称密码对相关。第二节点(7)与具有第二节点主私钥(V1S)和第二节点主公钥(P1S)的第二非对称密码对相关。换句话说,第一和第二节点各自拥有各自的公钥-私钥对。
[0082] 可以在注册过程期间,生成第一和第二非对称密码对,分别用于第一和第二节点3、7,例如钱包的注册。每个节点的公钥可公开共享,例如通过通信网络5共享。
[0083] 为了在第一节点3和第二节点7处确定共同秘密(CS),节点3、7各自执行相应方法300、400的步骤,而不通过通信网络5沟通私钥。
[0084] 由第一节点3执行的方法300包括步骤330,至少基于第一节点主私钥(V1C)和生成器值(GV),确定第一节点第二私钥(V2C)。生成器值可基于在第一和第二节点之间共享的消息(M),其可包括通过通信网络5共享该消息,对此,下文将进一步详述。方法300还包括步骤370,至少基于第二节点主公钥(P1S)和生成器值(GV)确定第二节点第二公钥(P2S)。方法300包括步骤380,基于第一节点第二私钥(V2C)和第二节点第二公钥(P2S)确定共同秘密(CS)。
[0085] 重要的是,同样的共同秘密(CS)也可以通过方法400在第二节点7上确定。方法400包括步骤430,基于第一节点主公钥(P1C)和生成器值(GV)确定第一节点第二公钥(P2C)。方法400还包括步骤470,基于第二节点主私钥(V1S)和生成器值(GV)确定第二节点第二私钥(V2S)。方法400包括步骤480,基于第二节点第二私钥(V2S)和第一节点第二公钥(P2C)确定共同密钥(CS)。
[0086] 通信网络5可能包括局域网、广域网、蜂窝网络、无线通信网络、互联网等等。在这些网络中,数据可以通过通信媒介传送,如电线、光纤、无线传输,数据容易被窃听,比如被窃听者11窃听。方法300、400允许第一节点3和第二节点7均独立地确定共同秘密,而无需通过通信网络5传输共同秘密。因此,一个优点是可以由每个节点安全且独立地确定共同秘密(CS),而不必通过可能不安全的通信网络5发送私钥。继而,共同秘密可以用作秘密密钥(或者作为秘密密钥的基础)。
[0087] 方法300、400可包括附加步骤。参见图8。方法300可包括:在第一节点3处,基于消息(M)和第一节点第二私钥(V2C)生成签名消息(SM1)。方法300还包括步骤360,通过通信网络,将第一签名消息(SM1)发送到第二节点7。接着,在步骤440中,第二节点7可接收第一签名消息(SM1)。方法400还包括以下步骤:步骤450,用第一节点第二公钥(P2C)验证第一签名消息(SM1),以及步骤460,基于验证第一签名消息(SM1)的结果认证第一节点3。有利地,这允许第二节点7认证所声称的第一节点(其中生成第一签名消息)是第一节点3。这基于以下假设:仅第一节点3可以访问第一节点主私钥(V1C),因此只有第一节点3可以确定用于生成第一签名消息(SM1)的第一节点第二私钥(V2C)。应当理解的是,类似地,可以在第二节点7处生成第二签名消息(SM2)并将其发送到第一节点3,使得第一节点3可以认证第二节点7,例如在点对点(peer-to-peer)情境中。
[0088] 可以以各种方式实现在第一和第二节点之间共享消息(M)。在一个示例中,可以在第一节点3处生成消息,然后将其通过通信网络5发送给第二节点7。或者,可以在第二节点7处生成消息,然后将其通过通信网络5发送给第二节点7。在一些示例中,消息(M)可以是公开的,因此可以通过不安全的网络5发送。一个或多个消息(M)可以存储在数据存储13、17、19中。本领域技术人员将认识到,可以以各种方式实现消息的共享。
[0089] 有利地,可以保持允许重新创建共同秘密(CS)的记录,而记录本身不必私下存储或安全传输。注册方法100、200
[0090] 参考图6描述注册方法100、200的示例,其中方法100由第一节点3执行,方法200由第二节点7执行。这包括为相应的第一和第二节点3、7建立第一和第二非对称密码对。
[0091] 非对称密码对包括相关的私钥和公钥,例如在公钥加密中使用的密钥。在该示例中,使用椭圆曲线密码系统(ECC)和椭圆曲线运算的属性生成非对称密码对。
[0092] 在方法100、200中,这包括步骤110、210,第一和第二节点就共同ECC系统达成一致并使用基点(G)。(注意:基点可以称为共同生成器,但术语“基点”用于避免与生成器值GV混淆)。在一个示例中,共同ECC系统可以基于secp256K1,secp256K1是比特币使用的ECC系统。可以选择、随机生成、或分配基点(G)。
[0093] 至于第一节点3,方法100包括步骤110,选定共同ECC系统和基点(G)。这可以包括从第二节点7或第三节点9接收共同ECC系统和基点。或者,用户接口15可以与第一节点3相关联,由此用户可选择性地提供共同ECC系统和/或基点(G)。在另一可选方案中,共同ECC系统和/或基点(G)中的一个或他们一起可由第一节点3随机选择。通过通信网络5,第一节点3可发送通知给第二节点7,指示使用共同ECC系统和基点(G)。继而,在步骤210中,第二节点7可通过发送通知来确认,该通知指示认可使用共同ECC系统和基点(G)。
[0094] 方法100还包括步骤120,第一节点3生成第一非对称密码对,其包括第一节点主私钥(V1C)和第一节点主公钥(P1C)。这包括,至少部分地基于允许范围内的随机整数来生成第一节点主私钥(V1C),在共同ECC系统中规定了该允许范围。还包括基于第一节点主私钥(V1C)和基点(G)进行的椭圆曲线点乘(elliptic curve point multiplication),确定第一节点主公钥(P1C),根据如下公式:P1C=V1C x G  (公式1)
[0095] 因此,第一非对称密码对包括:V1C:由第一节点保密的第一节点主私钥。
P1C:被公知的第一节点主公钥。
[0096] 第一节点3可以将第一节点主私钥(V1C)和第一节点主公钥(P1C)存储在与第一节点3相关的第一数据存储13中。为了安全起见,第一节点主私钥(V1C)可以存储在第一数据存储13的安全部分中,以确保该密钥保持私密。
[0097] 方法100还包括步骤130,通过通信网络5,将第一节点主公钥(P1C)发送到第二节点7,如图6所示。在步骤220中,第二节点7接收第一节点主公钥(P1C)。在步骤230中,第二节点7可将第一节点主公钥(P1C)存储在与第二节点7相关的第二数据存储17中。
[0098] 类似于第一节点3,第二节点7的方法200包括步骤240,生成第二非对称密码对,第二非对称密码对包括第二节点主私钥(V1S)和第二节点主公钥(P1S)。第二节点主私钥(V1S)也是允许范围内的随机整数。继而,第二节点主公钥(P1S)由以下公式确定:P1S=V1S x G  (公式2)
[0099] 因此,第二非对称密码对包括:V1S:由第二节点保密的第二节点主私钥。
P1S:被公知的第二节点主公钥。
[0100] 第二节点7可以将第二非对称密码对存储在第二数据存储17中。方法200还包括步骤250,将第二节点主公钥(P1S)发送到第一节点3。继而,在步骤140和150中,第一节点3可接收并存储第二节点主公钥(P1S)。
[0101] 应当理解的是,在一些替代方案中,可以在诸如可信的第三方等与第三节点9相关的第三数据存储19处,接收和存储相应的公共主密钥。这可能包括充当公共目录的第三方,例如证书颁发机构。因此,在一些示例中,只有当确定需要共同秘密(CS)时,才可由第二节点7请求和接收第一节点主公钥(P1C)(反之亦然)。注册步骤作为初始设置可只需进行一次。
会话启动并由第一节点3确定共同秘密
[0102] 现在将参考图7说明确定共同秘密(CS)的示例。共同秘密(CS)可以用于第一节点3和第二节点7之间的特别会话、时间、交易或其他目的。人们可能不希望使用相同的共同秘密(CS),或者说这样做不安全。因此,可以在不同的会话、时间、交易等之间更换共同秘密(CS)。
[0103] 提供以下内容用以说明上述安全传输技术。生成消息(M)310
[0104] 在该示例中,由第一节点3执行的方法300,包括步骤310生成消息(M)。消息(Message)(M)可以是随机的、伪随机的或用户定义的。在一个示例中,消息(M)基于Unix系统时间(Unix Time)和新鲜值(nonce)(和任意值)。例如,消息(M)可以为:Message(M)=UnixTime+nonce  (公式3)
[0105] 在一些示例中,消息(M)是任意的。然而,应当理解,消息(M)可以具有在某些应用中可能有用的选择性值(例如Unix系统时间等)。
[0106] 方法300包括步骤315,通过通信网络5将消息(M)发送到第二节点7。消息(M)可以在不安全的网络上发送,因为消息(M)不包含关于私钥的信息。确定生成器值(GV)320
[0107] 方法300还包括步骤320,基于消息(M)确定生成器值(GV)。在这个例子中,这包括确定消息的加密散列。加密散列算法的一个示例包括SHA-256,以创建一个256位生成器值(GV)。即:GV=SHA-256(M)  (公式4)
[0108] 应当理解,其他散列算法也可以使用。其可以包括安全散列算法(Secure Hash Algorithm,简称“SHA”)系列中的其他散列算法。一些具体示例包括SHA-3子集中的实例,包括SHA3-224,SHA3-256,SHA3-384,SHA3-512,SHAKE128,SHAKE256。其他散列算法可包括RACE原始完整性基元评估消息摘要(RACE Integrity Primitives Evaluation Message Digest,简称“RIPEMD”)系列中的散列算法。具体示例可以包括RIPEMD-160。其他散列函数可以包括基于Zémor-Tillich的散列函数和基于背包(knapsack)的散列函数的系列。确定第一节点第二私钥330
[0109] 然后方法300包括步骤330,基于第二节点主私钥(V1C)和生成器值(GV)确定第一节点第二私钥(V2C)。根据以下公式,V2C可以基于第一节点主私钥(V1C)和生成器值(GV)的标量相加之和:V2C=V1C+GV  (公式5)
[0110] 因此,第一节点第二私钥(V2C)不是随机值,而是确定性地从第一节点主私钥导出。加密对中的相应公钥,即第一节点第二公钥(P2C),具有以下关系:
P2C=V2C x G  (公式6)
[0111] 将公式5中的V2C代入公式6中,则:P2C=(V1C+GV)x G  (公式7)
[0112] 其中,“+”运算符指椭圆曲线点加法。注意椭圆曲线密码学代数具有分配律,公式7可以表示为:P2C=V1C x G+GV x G  (公式8)
[0113] 最后,公式1可以代入公式7,则:P2C=P1C+GV x G  (公式9.1)
P2C=P1C+SHA-256(M)x G  (公式9.2)
[0114] 因此,在已知第一节点主公钥(P1C)和消息(M)的情况下,可以导出对应的第一节点第二公钥(P2C)。第二节点7可以具有这样的知识以独立地确定第一节点第二公钥(P2C),这将在下文关于方法400的部分进一步进行详细讨论。基于消息和第一节点第二私钥生成第一签名消息(SM1)350
[0115] 方法300还包括步骤350,基于消息(M)和确定的第一节点第二私钥(V2C)生成第一签名消息(SM1)。生成签名消息包括应用数字签名算法对消息(M)进行数字签名。在一个示例中,这包括将第一节点第二私钥(V2C)应用于椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm,简称“ECDSA”)中的消息,以获得第一签名消息(SM1)。ECDSA的实例包括基于具有secp256k1、secp256r1、secp384r1、se3cp521r1的ECC系统的ECDSA。
[0116] 在第二节点7处,采用对应的第一节点第二公钥(P2C)来验证第一签名消息(SM1)。第二节点7可使用对第一签名消息(SM1)的验证来认证第一节点3,这将在下面的方法400中进行讨论。
确定第二节点第二公钥370’
[0117] 然后,在步骤370中,第一节点3可以确定第二节点第二公钥(P2S)。如上所述,第二节点第二公钥(P2S)可至少基于第二节点主公钥(P1S)和生成器值(GV)。在该示例中,由于公钥是由进行椭圆曲线点乘的私钥(步骤370’)和基点(G)确定的,所以可以以类似于公式6的方式表达第二节点第二公钥(P2S),如:P2S=V2S x G  (公式10.1)
P2S=P1S+GV x G  (公式10.2)
[0118] 公式10.2的数学证明与上述用于导出第一节点第二公钥(P2C)的公式9.1的数学证明相同。应当理解,在步骤370中,第一节点3可以独立于第二节点7确定第二节点第二公钥。在第一节点3处,确定共同秘密380
[0119] 然后,在步骤380中,第一节点3可基于已确定的第一节点第二私钥(V2C)和已确定的第二节点第二公钥(P2S)来确定共同秘密(CS)。共同秘密(CS)可以由第一节点3通过以下公式确定:S=V2C x P2S  (公式11)
在第二节点7处,执行的方法400
[0120] 现在将描述在第二节点7处执行的对应方法400。应当理解,这些步骤中的一些步骤类似于上述由第一节点3执行的步骤。
[0121] 方法400包括步骤410,通过通信网络5,接收来自第一节点3的消息(M)。这可包括在步骤315由第一节点3发送的消息(M)。然后在步骤420中,基于消息(M),第二节点7确定生成器值(GV)。由第二节点7确定生成器值(GV)的步骤420类似于由上述第一节点执行的步骤320。在该示例中,第二节点7独立于第一节点3执行该确定步骤420。
[0122] 下一步骤包括步骤430,基于第一节点主公钥(P1C)和生成器值(GV)确定第一节点第二公钥(P2C)。在该示例中,由于公钥是由进行椭圆曲线点乘的私钥和基点(G)确定的,所以可以以类似于公式9的方式表达第一节点第二公钥(P2C),如:P2C=V2C x G  (公式12.1)
P2C=P1C+GV x G  (公式12.2)
[0123] 公式12.1和12.2的数学证明与上述针对公式10.1和10.2所讨论的内容相同。第二节点7认证第一节点3
[0124] 方法400可包括由第二节点7认证所声称的第一节点3是第一节点3的步骤。如前所述,这包括接收来自第一节点3的第一签名消息(SM1)的步骤440。然后,在步骤450,第二节点7可验证第一签名消息(SM1)上的签名,使用在步骤430确定的第一节点第二公钥(P2C)进行验证。
[0125] 验证数字签名可以根据如上所述的椭圆曲线数字签名算法(ECDSA)来完成。重要的是,使用第一节点第二私钥(V2C)签名的第一个签名消息(SM1)只能用相应的第一节点第二公钥(P2C)正确的验证,因为V2C和P2C来自一个密码对。由于这些密钥是由第一节点3注册时生成的第一节点主私钥(V1C)和第一节点主公钥(P1C)确定的,因此验证第一签名消息(SM1)可以用作认证的基础,即认证发送第一签名消息(SM1)的所谓第一节点是注册期间相同的第一节点3。因此,第二节点7还可基于验证(450)第一签名消息的结果来执行认证(460)第一节点3的步骤。第二节点7确定共同秘密
[0126] 方法400还可包括步骤470,基于第二节点主私钥(V1S)和生成器值(GV),第二节点7确定第二节点第二私钥(V2S)。类似于第一节点3执行的步骤330,第二节点第二私钥(V2S)可基于第二节点主私钥(V1S)和生成器值(GV)的标量相加,根据以下公式:V2S=V1S+GV  (公式13.1)
V2S=V1S+SHA-256(M)  (公式13.2)
[0127] 然后,在步骤480中,第二节点7可以独立于第一节点3,基于第二节点第二私钥(V2S)和第一节点第二公钥(P2C),确定共同秘密(CS),基于以下公式:S=V2S x P2C  (公式14)
由第一节点3和第二节点7确定的共同秘密(CS)的证明
[0128] 由第一节点3确定的共同秘密(CS)与在第二节点7处确定的共同秘密(CS)相同。现在对公式11和公式14提供相同的共同秘密(CS)的数学证明进行说明。
[0129] 至于由第一节点3确定的共同秘密(CS),公式10.1可以代入公式11,如下所示:S=V2C x P2S  (公式11)
S=V2C x(V2S x G)
S=(V2C x V2S)x G  (公式15)
[0130] 至于由第二节点7确定的共同秘密(CS),公式12.1可以代入公式14,如下所示:S=V2S x P2C  (公式14)
S=V2S x(V2C x G)
S=(V2S x V2C)x G  (公式16)
[0131] 由于ECC代数学是可交换的,因此公式15和公式16是等价的,因为:S=(V2C x V2S)x G=(V2S x V2C)x G  (公式17)
共同秘密(CS)和秘密密钥
[0132] 共同秘密(CS)现在可被用作秘密密钥,或者作为在第一节点3和第二节点7之间进行安全通信的对称密钥算法中的秘密密钥的基础。
[0133] 共同秘密(CS)可以是椭圆曲线点(xs,ys)的形式。这可转换成标准密钥格式,使用由节点3、7所达成一致的标准公开已知操作。例如,xs值可以是256位的整数,可以用作AES256加密的密钥。它也可以使用RIREMD160转换成160位的整数,用于任何需要这个长度密钥的应用程序。
[0134] 可以根据需要确定共同秘密(CS)。重要的是,第一节点3不需要存储共同秘密(CS),因为这可以基于消息(M)重新确定。在一些示例中,所使用的消息(M)可存储在数据存储13、17、19(或其他数据存储)中,而不需要主私钥所要求的相同级别的安全性。在一些示例中,消息(M)可以是公开可用的。
[0135] 然而,根据某些应用,共同秘密(CS)可以存储在与第一节点相关的第一数据存储(X)中,前提是共同秘密(CS)与第一节点主私钥(V1C)一样安全被保管。
[0136] 有利地,基于单个主密钥加密对,该技术可用于确定多个共同秘密,该多个共同秘密可对应于多个安全秘密密钥。生成器值(密钥)的层级结构
[0137] 例如,可以确定一系列连续的生成器值(GV),其中可以基于前面的生成器值(GV)确定每个连续的GV。例如,无需重复步骤310至370和410至470以生成连续的单用途密钥,而是通过节点之间的先前协议,双方可以重复地对先前使用的生成器值(GV)进行重新散列,以建立生成器值的层级结构。实际上,基于消息(M)的散列,生成器值可以是用于下一代生成器值(GV’)的下一代消息(M’)。这样做允许计算连续几代共享秘密而无需进一步的协议建立传输,特别是为每一代共同秘密传输多个消息。下一代共同秘密(CS’)可以如下方式计算。
[0138] 首先,第一节点3和第二节点7独立地确定下一代生成器值(GV’)。这类似于步骤320和步骤420,但适用于以下公式:
M’=SHA-256(M)  (公式18)
GV’=SHA-256(M’)  (公式19.1)
GV’=SHA-256(SHA-256(M))  (公式19.2)
[0139] 然后,第一节点3可确定下一代第二节点第二公钥(P2S’)和第一节点第二私钥(V2C’),类似于上述步骤370和330,但是适用以下公式:P2S’=P1S+GV’x G  (公式20.1)
V2C’=V1C+GV’  (公式20.2)
[0140] 然后,第二节点7可确定下一代第一节点第二公钥(P2C’)和第二节点第二私钥(V2S’),类似于上述步骤430和470,但是适用以下公式:P2C’=P1C+GV’x G  (公式21.1)
V2S’=V1S+GV’  (公式21.2)
[0141] 然后,第一节点3和第二节点7可各自确定下一代共同秘密(CS’)。特别地,第一节点3使用以下公式确定下一代共同秘密(CS’):CS’=V2C’x P2S’  (公式22)
[0142] 第二节点7使用以下公式确定下一代共同秘密(CS’):CS’=V2S’x P2C’  (公式23)
[0143] 可以以相同的方式计算更多代(CS”,CS”’等)以创建链层级结构。该技术要求第一节点3和第二节点7都跟踪原始消息(M)或原始计算的生成器值(GV)以及它所涉及的节点。由于这是公开信息,因此没有关于保留此信息的安全问题。因此,该信息可以保存在“散列表”(将散列值链接到公共密钥)上,并且通过网络5自由分发(例如使用流技术(Torrent))。
此外,如果层级结构的任何单个共同秘密(CS)遭到破坏,不会影响层级结构中的任何其他共同秘密的安全性,前提是私钥V1C、V1S仍然安全。
密钥的树结构
[0144] 除了如上所述的链(线性)层级结构之外,还可以创建树结构形式的层级。利用树结构,可以确定用于不同目的的各种密钥,例如认证密钥,加密密钥,签名密钥,支付密钥等,这些密钥都链接到单个安全地维护的主密钥。这在图12中得到最充分的说明,其示出了具有各种不同密钥的树结构901,其中的每一个都可用于与另一方创建共享密钥。树枝可以以几种方式完成,其中三种如下所述。(i)主密钥繁衍
[0145] 在链层级结构中,通过向原始主密钥添加大量繁衍的重新散列的消息,来创建每一个新的“链接”(公钥/私钥对)。例如,(为清楚起见,仅示出第一个节点3的私钥):V2C=V1C+SHA-256(M)  (公式24)
V2C’=V1C+SHA-256(SHA-256(M))  (公式25)
V2C”=V1C+SHA-256(SHA-256(SHA-256(M)))  (公式26)

[0146] 要创建分支,任何密钥都可用作子-主密钥。例如,可以采用与常规主密钥相同的操作,通过向子-主密钥添加散列,V2C’可用作子-主密钥(V3C):V3C=V2C’+SHA-256(M)  (公式27)
[0147] 子-主密钥(V3C)本身可具有下一代密钥(V3C’),例如:V3C’=V2C’+SHA-256(SHA-256(M))  (公式28)
[0148] 这提供了树结构903,使用如图13所示的主密钥繁衍方法。(ii)逻辑关联
[0149] 在此方法中,树(公钥/私钥对)上的所有节点生成为链(或其它形式),树中节点之间的逻辑关系由表维护,使用指针,表中树中的每个节点仅与树中的其父节点相关联。因此,可以使用指针来确定相关的公钥/私钥对,以确定会话的共同秘密密钥(CS)。(iii)消息多重性
[0150] 可以通过链或树中的任何点引入新消息来生成新的私钥/公钥对。消息本身可以是任意的,或者可以带有一些含义或功能(例如,它可能与“真实的”行帐号等有关)。可能希望安全地保留用于形成新的私钥/公钥对的这种新消息。编码方案
[0151] 交易的元数据可用于访问存储在块外(off-block)文档中的指令。本文档可能被称为“合约”。用于引用合约的元数据可以以各种方式格式化。但是,这里描述的是合适的编码方案。
[0152] 如果合约所规定的权利赋予了合约持有人或所有者,则合约可以转移。不可转移的合约的一个例子是参与者被命名,也就是说,权利被赋予给有特定名字的实体而不是合约的持有者。本编码方案仅讨论可转移的合约。
[0153] 代币代表特定的合约,该合约详述或定义了由合约转移的权利。根据本发明,代币是比特币交易形式的合约的表示。
[0154] 该编码方法使用包括三个参数或数据项的元数据。此数据可以表明:i)合约规定的可用份额的数量(在本文中可以表示为“NumShares”);
ii)从发送方转移到至少一个接收方的一定数量的转移单元(在本文中可以表示为“ShareVal”);和
iii)用于计算该数量的转移单元的值的因子(这在本文中可称为“挂钩率(pegging rate)”)。
[0155] 该编码方案的一个优点是它可以仅使用上述三个参数来封装合约,或将合约表示为区块链上的代币。实际上,可以至少使用这三个数据项来规定合约。由于该编码方案可用于任何类型的可转移的合约,因此可以设计和应用通用算法。这些元数据项的进一步细节具体如下。
[0156] 可分割代币是交易输出中的价值可被细分为更小的量的代币,该更小的量在多个代币中分配(即,在多个交易中分配)。原型是代币化的法定货币。可分割的合约定义为指定非零挂钩率的合约。对于可分割的合约,在交易输出中转移的代币化价值通过挂钩率,与基础比特币(BTC)价值相关联。也就是说,合约规定了持有人在挂钩率方面的权利。对于不可分割的代币,没有挂钩率,合约以固定价值规定了持有人的权利(例如不记名债券:“此合约可以兑换1000美元”或礼券:“此合约可用来理发一次”)。对于不可分割的合约,基础交易BTC值与合约价值无关。
[0157] “基础BTC价值”是指附加到交易输出的比特币金额(BTC)。在比特币协议中,每笔交易输出必须具有非零BTC金额才被认为是有效的。实际上,BTC金额必须大于设定的最小值(称为“尘埃(dust)”),在撰写本文件时,目前设定为546聪(satoshis)。1比特币定义为等于1亿聪。由于比特币交易仅用作帮助所有权交换的手段,因此实际的基础BTC金额是任意的:真正的价值由合约文件规定。从理论上讲,每一个代币都可以被尘埃携带。
[0158] 根据当前的编码方案,特别是对于可分割的代币,基础BTC价值确实具有含义:它通过挂钩率具有合约的价值。挂钩率本身是任意的,并且选择挂钩率以便使基础BTC价值保持较小。使用挂钩率而不是简单地使用尘埃基础化每个代币交易的原因是,因为本发明的协议帮助了可分割性:当代币被分成几个较小金额的交易输出时,不必调整原始合约。不如说,每个细分代币的合约价值仅根据挂钩率和基础BTC价值的细分金额计算。
[0159] 有限代币是总发行价值由固定的非零数量的份额固定(或“限制”)的代币,其由称为NumShares的量定义。因此,根据有限合约不可再发行进一步份额。例如,赛的部分所有权合约限于赛马的100%(例如每份额1%的100份额或10每份额10%的10份额,等等)。无限合约意味着发行人能够包销进一步的份额发行,例如,将所需金额的法定货币加入其储备账户。必须在所有合约中明确说明NumShares。有限合约必须满足NumShares>0;通过设置NumShares=0来表示无限合约。
[0160] 典型的例子是货币储备(类似于黄金储备),使得储备银行账户中持有的总价值与现有期票(即未赎回的代币)中的总价值相匹配。这一概念不仅限于货币储备,还包括库存。例如,持有印花T恤代币的发行者开始时可库存有10,000件T恤,并可发行一个可分的代币来代表这10,000件T恤(其中,例如,每份额=1件T恤)。可以细分原始代币,并且根据由挂钩率定义的交易输出的基础BTC价值,每个细分的代币可以兑换多件T恤。然而,如果需求增加,发行人可能决定发行进一步的份额(即增加流通的份额数量(比如)另外10,000份额)。
在这种情况下,发行人有责任在其储备账户(即库存仓库)中再存放10,000件T恤,以便包销进一步的发行。因此,任何时候库存中的T恤总数(其中库存充当“储备账户”)=未赎回的份额的总数。
[0161] 挂钩率仅适用于可分割的合约,其中份额的价值(由名为份额价值(ShareVal)的量表示)与基础BTC金额挂钩。例如,合约可以指定发行人承诺以每个基础1BTC 10,000美元的费率赎回代币。这意味着(例如)具有代币化基础输出值15,400聪的交易将可兑换为1.54美元。挂钩率的值为0表示合约是不可分割的(即只能整体转移,如不记名债券)。当挂钩率设置为0(表示不可分割的代币)时,基础BTC价值与合约价值无关,可以设置为任何金额。通常在这种情况下,希望保持基础BTC金额尽可能小(即设置为尘埃)以使操作成本最小化。
[0162] NumShares是(有限)合约下可用的总(固定)份额数。对于有限合约,NumShares必须是大于零的整数。对于无限合约,NumShares不是固定的,因为可以随时发行更多的份额(只要它们被包销),通过将值设置为0来表示。
[0163] 定义份额为转移单元,ShareVal是该单位的价值。例如,对于法定货币,转移单元可以设置为1美分。或者,例如,它可以设置为50美分,在这种情况下,转移只能以多个50美分的“批次”执行。ShareVal也可表示为百分比:例如,如果饲养员希望以10个相等的份额出售赛马,那么ShareVal=10%。ShareVal必须>0且必须在合约上定义。
[0164] 发行总额(Totallssuance)代表已发行份额的总价值。该价值仅涉及有限合约,无限合约的发行是不固定的,可发行更多份额。如果份额以百分比表示,那么根据定义,Totallssuance=100%。
[0165] 对于有限合约,NumShares,ShareVal和Totallssuance以下列方式相关:NumShares x ShareVal=Totallssuance
[0166] Totallssuance的值为0表示它是无限合约。无限合约的一个例子是法定货币(因此Totallssuance设为0);有限合约的例子有:(i)限量版纪念币(铸造1000枚,其中1份额=1枚硬币):Totallssuance=1000x 1=1000个硬币;(ii)在售票场地的座位,其中Totallssuance=可用座位总数。
[0167] 将流通量定义为未花费的代币的总价值(即,由UTXO中的交易确定-未花费的交易输出)。所有未花费的交易的完整集均保存在可用于所有比特币节点的列表中。例如,如果发行人最初发行10,000美元作为法定货币类型代币,并且随着时间的推移,价值5500美元的代币被赎回,那么流通量=4500美元(即未赎回代币的价值)。此价值应与关联的储备帐户中的余额保持一致。适用于本发明实施例的计算资源(“代理”)的说明性示例
[0168] 本发明可以利用适当设置的计算资源(在本文中为“代理”)来执行所期望的过程的自动化方面。以下提供优选代理的示例(其他实施方式也可被使用)。
[0169] 代理可以与区块链一起操作,在图灵机(Turing machine)的实施方式中将其用作不可擦除的(只读的)纸带(tape)。该代理与区块链网络并行运行,监督和处理(循环)过程的执行。循环过程旨在执行给定任务,例如,过程的自动化,或设备或系统的控制。此并行资源监测区块链的状态,并可将交易写入区块链。从某种意义上说,它利用区块链作为图灵机的不可擦除的纸带,其定义和特征如下:1.区块链充当图灵机的纸带。区块链中的每个交易代表纸带上的一个方格(cell)。该方格可以包含来自有限字母表的符号。
2.带头(tape head)可以读取来自区块的信息,该信息已被写入区块链。
3.带头可以将包含许多交易的新区块写入区块链的末尾。但是,它们无法写入已存在的区块。因此,区块链带是不可擦除的。
4.每个交易的元数据可以存储为多重签名支付脚本散列(P2SH)交易的一部分。
[0170] 代理的一个重要功能是充当监测区块链当前状态的自动化实体。它还可以从任何块外(off-block)源接收信号或输入。根据区块链状态和/或接收的输入,代理可以执行某些动作。代理决定要执行哪个(或哪些)动作。这些可能涉及或不涉及“现实世界”(即块外(off-block))中的动作和/或区块链上的动作(例如创建和广播新交易)。代理所采取的动作可能由区块链状态触发。代理还可以决定要向比特币网络广播的下一组交易,并随后写入区块链。
[0171] 代理的动作并行且同时运行在区块链(例如比特币)网络。从某种意义上说,这扩展了区块链(例如比特币)脚本的功能。这种连续监测实施了“循环”控制流构造,使代理和区块链系统的结合具有图灵完备(Turing Complete)性。
[0172] 图灵机包括两个堆栈:·数据堆栈:这是由上述区块链表示的。
·控制堆栈:这是由代理函数表示的。它存储了与重复控制流功能相关的信息。
[0173] 控制堆栈与数据堆栈的分离提供了防止比特币核心内发生无限循环、减轻拒绝服务攻击(denial-of-service attack)的优点。
[0174] 代理管理和运行子例程,这些子例程能够通过任何类型的循环构造(例如,FOR-NEXT,REPEAT UNTIL等)进行循环。本文中描述的说明性实施例包括使用“重复”构造的一个示例的过程。用户可以指定索引(i)和限值(J)。这些分别表示当前迭代次数(通常从0开始计数)和重复循环的迭代总次数。
[0175] 对于每一次迭代:1.索引增量为1。对于退出条件,当索引达到限值时,迭代将停止;
2.执行包含“如果条件就动作(if condition then action,简称“(ICTA)”语句的代码块;该动作可以是区块链上或链外的任何动作;
3.计算该子例程的加密散列。这可以作为交易的一部分存储在区块链中。由于散列对每个代码都是唯一的,因此可以验证哪个代码已被使用。
[0176] 循环体包括代码块。每个代码块都包含“if condition then action”(ICTA)语句。这就为交易匹配监测了区块链的当前状态:·启动或触发条件(例如,达到特定日期时)。
·重复条件(即与前一次迭代相关的元数据或散列)。
·停止条件(即循环的最后一次迭代)。
[0177] ICTA语句使代理能够根据区块链的当前状态决定下一个要进行的交易。进行下一个交易涉及将交易广播到比特币网络,并将新交易写入区块链。这充当了此迭代已被执行的记录。一旦将交易写入区块链,随后,管理器(Manager)将发现前一次迭代已被执行并已被写入区块链,并将执行下一次迭代。后者继续,直到重复循环退出,当索引(i)达到代码块中指定的限值(J)时重复循环退出。
[0178] 每个交易都以可重复使用的方式保存在区块链中。在比特币实施方式中,交易中的每个签名都附加一个签名散列(SIGHASH)标志。该标志可以采用不同的值,每个值指示在没有该签名的所有者参与的情况下,是否可以修改交易的其他部分。可重复使用的交易在各交易输入的一个中,具有SIGHASH标志“签名散列_任何人可支付(SigHash_AnyoneCanPay)”。这允许任何人为交易的输入做出贡献。此参数使代理的ICTA功能能够被执行并重复多次,并使用不同的输入。该功能的使用可限制在已授权的各方——例如,通过可重复使用的交易的版权
[0179] ICTA代码块的“如果条件(if condition)”部分可以监测任何类型的条件。这与其他编程语言(例如C,C++,Java)类似,并且不限于存储在区块链上的信息。例如,它可以监测日期和时间(即达到某个日期和时间)或监测天气(即当温度低于10℃且正在下雨时),监测合约或信托的条件(即当公司A购买公司B时)。
[0180] ICTA代码块的“则行动(Then action)”部分可以执行多个动作。本发明不限制可采取的动作的数量或类型。该动作不限于区块链上的交易,尽管包含与动作相关的元数据的交易可以写入区块链。
[0181] 元数据可以是任何形式的。然而,在一个实施例中,元数据可存储指向文件的超链接,该文件包含与动作相关的更多数据或指令。元数据也还可存储指向散列表的超链接,该散列表包含与动作有关的更多数据或指令以及该动作的散列,该动作的散列用作散列表的查找关键字。
[0182] 代理的控制堆栈可以通过多种方式实施,这些方式属于每个用户的特定需求。例如,控制堆栈的重复循环可以基于任何图灵完备语言。一种可能的语言选择是Forth格的基于堆栈的语言。使用这种语言的一个优点是它在编程风格上使控制堆栈与比特币脚本保持一致,而比特币脚本已经广为人知、广泛使用。使用比特币脚本的备用堆栈作为数据存储空间
[0183] 比特币脚本包含命令,也称为操作码(op codes),使用户能够将数据移动到称为“alt堆栈”的备用堆栈(alternative stack)。
[0184] 操作码为:·OP_TOALTSTACK表示将数据从主堆栈的顶部移动到alt堆栈的顶部。
·OP_FROMALTSTACK表示将数据从alt堆栈的顶部移动到主堆栈的顶部。
[0185] 这使得来自计算的中间步骤的数据能够存储在alt堆栈中,类似于允许将数据存储在计算器上的“存储器”功能。在一个实施例中,alt堆栈用于配置比特币脚本以解决小的计算任务并将计算结果返回。使用代码注册表管理代理
[0186] 代理还管理其拥有并运行的所有代码的注册表。此注册表的结构类似于将特定键映射到特定值的查找表或词典。关键字和值对分别由代码块的散列(H1)和存储代码的IPv6(互联网协议第6版)地址表示。要使用关键字H1获取代码块,查找表用于获取相关的值(这是存储代码的位置)并相应地获取源代码。代码注册表的实现可多样化。代理的代码的交易元数据,以及循环的重新生成
[0187] 在特定迭代中重新生成代理循环所需的信息,作为元数据存储在区块链上记录的交易中。
[0188] 通过这种方式,区块链上的交易存储或提供对给定迭代循环信息的访问,该迭代循环在代理上被执行。该信息可包括与循环相关的任何变量的值,例如索引i,以及任何其他必要信息,例如代码块中使用的参数的值,或指定可以访问的其他所需信息的位置相关数据。
[0189] 元数据本身作为交易中多重签名支付脚本散列脚本(P2SH)的一部分存储。跟随交易记录的元数据还能记录关于过去如何执行代码的审查跟踪。
[0190] 代理可以通过多种方式,在每次迭代时重新生成重复循环代码块。代码块可以硬编码到代理本身中,也可以存储在非公用或公用文件中,或者存储为非公用或公用散列表文件中的条目,或者上述的结合。代码块可以是带有硬编码变量的静态代码块,也可以是静态代码块但包含可以填充的参数。参数可以是任何数据格式的单个值,或者可以是小块代码,或者是上述的结合。可以通过直接从交易中的元数据(例如比特币交易)或从诸如内部数据库或私有/公共文件或散列表或上述的任何组合的外部源获取它们来填充参数。指向参数值的外部源的指针可能存储在交易中的元数据中。
[0191] 以下步骤提供了代理如何在第i次迭代中重新生成重复循环代码块的一个示例。在本示例中,代码注册表是散列表,散列值充当表的查找关键字,并存储在有关交易的元数据中。
1.代理监测用于交易的区块链,该交易包含代码块的散列值,该代码块的散列值与代码注册表中的条目匹配。
2.代理找到包含相应散列(H1)的交易。
3.代理读取“元数据-代码散列(Metadata-CodeHash)”,获取代码散列(CodeHash)字段,以获得H1并使用它来获取代码(C1)。如果RIPEMD-160(SHA256(C1))等于H1,则代码还未更改,可以安全地继续进行下一步。
4.代理读取存储索引I的“元数据-代码散列”,并在第i次迭代中重新生成代码。换句话说,在适当的迭代中“重新加载”循环。
5.用户的签名包含在P2SH命令中,以验证元数据的来源。
6.如果循环的此迭代需要这些数据,则代理读取“元数据-输出散列(Metadata-OutputHash)”和“元数据-输出指针(Metadata-OutputPointer)”,以获取前一步骤的输出。
[0192] 应当说明的是,上述实施例说明而非限制本发明,在不脱离本发明的由所附权利要求限定的范围的情况下,本领域技术人员将能够设计出许多替代性实施例。在权利要求中,括号中的任何附图标记不应解释为对权利要求的限制。词语“包括(comprising)”和“包括(comprises)”等并非在整体上排除其他元件和步骤的存在,尽管这些元件和步骤并没有在任何权利要求或说明书中列出。在本说明书中,“包括(comprises)”意指“包括(includes)或由......组成(consists of)”,“包括(comprises)”意指“包括(including)或由......组成(consisting of)”。元件的单数引用不意味着排除这些元件的复数引用,反之亦然。本发明可以借助包括若干不同元件的硬件,以及借助适当编程的计算机来实施。在列举了若干装置的设备权利要求中,这些装置中的若干个可以由硬件的同一个部件来体现。不争的事实是,在相互不同的从属权利要求中列举了某些方法,并不代表这些方法的结合不能获得有益效果。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈