在区块链系统中的节点之间建立通信的方法和设备与流程

文档序号:19792785发布日期:2020-01-24 14:40阅读:1448来源:国知局
在区块链系统中的节点之间建立通信的方法和设备与流程

本申请总体涉及计算机技术,更具体地,涉及在区块链系统中的节点之间建立通信的方法和设备。



背景技术:

区块链系统,也称为分布式账本系统(dls)或共识系统,可以使参与的实体安全地且不可篡改地存储数据。在不引用任何特定用例的情况下,区块链系统可以包括任何dls,并且可以被用于公有、私有和联盟区块链网络。公有区块链网络对所有实体开放使用该系统并参与共识处理。私有区块链网络为特定实体提供,该特定实体集中控制读写权限。联盟区块链网络为选择的实体组群提供,该实体组群控制共识处理,并且联盟区块链网络包括访问控制层。

区块链系统维护一个或多个区块链。区块链是用于存储诸如交易之类的数据的数据结构,其可以防止数据被恶意方篡改和操纵。

使用点对点(peer-to-peer,p2p)网络实现区块链系统,其中节点例如在不需要固定的中央服务器的情况下与彼此直接通信。p2p网络中的每个节点可以发起与p2p网络中的另一节点的通信。

在一个这样的系统中,p2p网络中的两个节点,节点a和节点b,可以互相发送连接请求以启动通信。如果两个连接请求都被处理,则得到的网络将包含在节点a和节点b之间建立的两个冗余连接。在另一这样的系统中,只有两个节点中具有较大节点标识符的节点被允许发送连接请求。如果具有较小节点标识符的节点不被允许接受任何连接请求,例如出于安全原因,在两个节点之间不能建立通信。



技术实现要素:

在一个方案中,一种计算机实现的用于在区块链系统中的第一节点与第二节点之间建立通信的方法包括:第一节点向第二节点提供第一节点的节点标识符,且第一节点从第二节点接收第二节点的节点标识符,使得在第一节点与第二节点之间建立第一通信会话;第一节点确定在第一节点与第二节点之间是否存在第二通信会话;并且响应于确定在第一节点与第二节点之间存在第二通信会话,第一节点基于第一节点的节点标识符和第二节点的节点标识符来终止第一通信会话和第二通信会话之一。

在另一方案中,一种用于实现区块链系统中第一节点的计算设备包括:一个或多个处理器;以及一个或多个计算机可读存储器,耦接至一个或多个处理器并且其上存储有指令。所述指令能够由一个或多个处理器执行以:向区块链系统中的第二节点提供第一节点的节点标识符,并从第二节点接收第二节点的节点标识符,使得在第一节点与第二节点之间建立第一通信会话;确定在第一节点与第二节点之间是否存在第二通信会话;并且响应于确定在第一节点与第二节点之间存在第二通信会话,第一节点基于第一节点的节点标识符和第二节点的节点标识符来终止第一通信会话和第二通信会话之一。

在另一方案中,一种非暂时性计算机可读介质,具有存储在其上的指令,当所述指令由计算设备的处理器执行时,所述指令促使计算设备执行用于在区块链系统中的第一节点与第二节点之间建立通信会话的方法。该方法包括:第一节点向第二节点提供第一节点的节点标识符,且第一节点从第二节点接收第二节点的节点标识符,使得在第一节点与第二节点之间建立第一通信会话;第一节点确定在第一节点与第二节点之间是否存在第二通信会话;并且响应于确定在第一节点与第二节点之间存在第二通信会话,第一节点基于第一节点的节点标识符和第二节点的节点标识符来终止第一通信会话和第二通信会话之一。

附图说明

附图示出了实施例,其被合并到本文书中并构成本文的一部分。在参照附图的以下描述中,不同的附图中相同的附图标记表示相同或相似的元件,除非另有明示。

图1为根据实施例的区块链系统的示意图。

图2为根据实施例的用于实现区块链系统中节点的计算设备的示意图。

图3为根据实施例的用于在区块链系统中的第一节点与第二节点之间建立通信的方法的流程图。

图4为根据实施例的用于在区块链系统中的第一节点与第二节点之间建立通信的方法的流程图。

图5为根据实施例的区块链系统的示意图。

图6为根据实施例的用于在区块链系统中的第一节点与第二节点之间建立通信的装置的框图。

具体实施方式

本文的实施例提供用于在区块链系统中的第一节点与第二节点之间建立通信的方法和设备。所述方法和设备允许第一节点和第二节点各自发送连接请求,以在第一节点与第二节点之间建立通信会话。然后,所述方法和设备检验在第一节点与第二节点之间是否已经建立一个以上的通信会话,如果是,则可基于第一节点的节点标识符和第二节点的节点标识符来终止额外的通信会话和所述额外的通信会话建立于其上的连接。

本文中公开的实施例具有一种或者更多的技术效果。在一些实施例中,所述方法和设备为区块链系统中的每个节点提供请求连接的能力。这允许更大的灵活性并防止在特定条件下可能发生的匮乏(starvation),例如,当一个节点未能满足某个预先建立的规则时,从而防止请求与另一个节点的连接。在其他实施例中,所述方法和设备提供检验在区块链系统中的给定的一对节点之间是否已经建立了一个以上的通信会话的能力。这允许区块链系统避免在节点之间建立冗余的连接,从而节省计算资源,同时便于在安全环境中在节点之间的通信。在其他实施例中,这种安全环境满足特定需求,例如,出于安全的原因,特定节点仅被允许请求连接并且被要求拒绝所有接收到的连接请求。在其他实施例中,所述方法和设备提供识别区块链系统中的节点而不使用其ip地址的能力。这允许每个ip地址被用于支持一个以上的节点,由此提高了系统的灵活性。实际上,允许一个ip地址支持一个以上的节点使一台计算设备能够承载一个以上的节点,从而降低了实现区块链系统的硬件成本。

以下描述提供了实施例的细节。在实施例中,区块链是以交易不可篡改并随后被验证的方式存储数据(例如,交易)的数据结构。区块链包括一个或多个区块。每个区块通过包括区块链中紧邻其之前的前一区块的加密哈希值(cryptographichash)链接到该前一区块。每个区块还可以包括时间戳、其自身的加密哈希值以及一个或多个交易。通常已经被区块链系统的节点验证的交易可以经哈希处理并编入例如merkle树的数据结构。在merkle树中,树的叶节点处的数据是经哈希处理的,并且在该树的每个分支中的所有哈希值在该分支的根处连接。此过程沿着树持续一直到整个树的根,在整个树的根处存储了代表树中所有数据的哈希值。通过确定哈希值是否与树的结构一致而可快速验证该哈希值是否为存储在该树中的交易的哈希值。

区块链系统包括管理、更新和维护一个或多个区块链的计算节点的网络。网络可以是公有区块链网络、私有区块链网络或联盟区块链网络。例如,诸如数百,数千或甚至数百万个实体的许多实体可以在公有区块链网络中操作,并且每个实体操作该公有区块链网络中的至少一个节点。因此,公有区块链网络可以被认为是关于参与实体的公有网络。有时,大多数实体(节点)必须对每个区块签名才能使该区块有效并被添加到区块链网络的区块链中。公有区块链网络的示例包括利用分布式账本(称为区块链)的特定点对点支付网络。

通常,公有区块链网络可以支持公开交易。公开交易为公有区块链网络内的所有节点共享,并存储在全局区块链中。全局区块链是跨所有节点复制的区块链,并且所有节点相对于全局区块链处于完全共识状态。为了达成共识(例如,同意向区块链添加区块),在公有区块链网络内实施共识协议。共识协议的示例包括工作量证明(pow)(例如,在一些加密货币网络中实施)、权益证明(pos)和权限证明(poa)。

通常,可以为特定实体提供私有区块链网络,该特定实体集中控制读写权限。该实体控制哪些节点能够参与到区块链网络中。因此,私有区块链网络通常被称为许可网络,其限制允许谁参与网络以及它们的参与级别(例如,仅在某些交易中)。可以使用各种类型的访问控制机制(例如,现有参与者投票添加新实体,监管机构可以控制许可)。

通常,联盟区块链网络在参与的实体之间是私有的。在联盟区块链网络中,共识过程由授权的节点集控制,一个或多个节点由相应的实体(例如,金融机构、保险公司)操作。例如,由十(10)个实体(例如,金融机构、保险公司)组成的联盟可以操作联盟区块链网络,每个实体可以操作联盟区块链网络中的至少一个节点。因此,联盟区块链网络可以被认为是关于参与实体的私有网络。在一些示例中,每个实体(节点)必须对每个区块签名,以使区块有效并被添加到区块链中。在一些示例中,至少实体(节点)的子集(例如,至少7个实体)必须对每个区块签名,以使区块有效并被添加到区块链中。

图1示出了根据实施例的区块链系统100的示意图。参考图1,区块链系统100可以包括被配置为在区块链120上操作的多个节点,例如,节点102-110。节点102-110可以形成例如点对点(p2p)网络的网络112。节点102-110中的每个可以是被配置为存储区块链120的副本的计算设备,例如计算机或计算机系统,或者可以是在计算设备上运行的软件,诸如过程或应用。节点102-110中的每个可以具有唯一标识符。

区块链120可以包括数据区块形式的记录逐渐增加的列表,例如图1中的区块b1-b5。区块b1-b5中的每个可以包括时间戳、前一区块的加密哈希值,以及本区块的可以是诸如货币交易之类的交易的数据。例如,如图1所示,区块b5可以包括时间戳、区块b4的加密哈希值和区块b5的交易数据。而且,例如,可以对前一区块执行哈希操作以生成前一区块的加密哈希值。哈希操作可以通过诸如sha-256的哈希算法将各种长度的输入转换为固定长度的加密输出。

节点102-110可以被配置为对区块链120执行操作。例如,当节点(例如,节点102)想要将新数据存储到区块链120上时,该节点可以生成要被添加到区块链120的新区块并将该新区块广播到网络112中的例如节点104-110的其他节点。基于新区块的合法性,例如,其签名和交易的有效性,其他节点可以确定接受新区块,使得节点102和其他节点可以将新区块添加到它们各自的区块链120的副本中。重复该过程,可以将越来越多的数据区块添加到区块链120。

图2示出了根据实施例的用于实现区块链系统中节点(例如,节点102(图1))的计算设备200的示意图。参考图2,计算设备200可以包括通信接口202、处理器204和存储器206。

通信接口202可以便于计算设备200与用于实现网络中其他节点(例如,节点104-110(图1))的设备之间的通信。在一些实施例中,通信接口202被配置为支持一个或多个通信标准,例如互联网标准或协议、综合业务数字网(isdn)标准,等等。在一些实施例中,通信接口202可以包括以下中的一个或多个:局域网(lan)卡、电缆调制解调器、卫星调制解调器、数据总线、电缆、无线通信信道、基于无线电的通信信道、蜂窝通信信道、基于互联网协议(ip)的通信设备、或用于有线和/或无线通信的其他通信设备。在一些实施例中,通信接口202可以基于公有云基础设施、私有云基础设施、混合公有/私有云基础设施。

处理器204可以包括一个或多个专用处理单元、专用集成电路(asic)、现场可编程门阵列(fpga)或各种其他类型的处理器或处理单元。处理器204与存储器206耦合,并且被配置为执行存储在存储器206中的指令。

存储器206可以存储可由处理器执行的指令和数据,例如区块链120(图1)的副本。存储器206可以包括任何类型的易失性或非易失性存储器设备或其组合,例如静态随机存取存储器(sram)、电可擦除可编程只读存储器(eeprom)、可擦除可编程只读存储器(eprom)、可编程只读存储器(prom)、只读存储器(rom)、磁存储器、闪存或磁盘或光盘。当存储器206中的指令由处理器204执行时,计算设备200可以对区块链120执行操作。

为便于区块链系统100(图1)的操作,网络112中的节点102-110可以根据节点间通信方法来操作。这种节点间通信方法可以指定用于在网络中的第一节点与第二节点之间建立通信的处理,从而可以避免两个节点之间的冗余连接。

例如,在发送连接请求之前,节点102和104可以例如基于其相应的ip地址验证是否已经建立了连接。此外,在接收到连接请求时,接收节点可以验证是否已经建立了连接。如果接收节点确定已经建立了连接,那么其可拒绝连接请求,从而有效地避免了冗余连接。

图3示出根据实施例的用于在区块链系统中的第一节点与第二节点之间建立通信的方法300的流程图。例如,区块链系统可以实现为包括多个节点的p2p网络。此外,例如,方法300可由作为第一节点的节点102(图1)执行,以启动与作为第二节点的节点104(图1)的通信。

参照图1和图3,在步骤302,节点102可以验证节点102与节点104之间是否已经存在或已经建立了先前的通信会话。例如,通信会话可以是节点102与节点104之间的临时和交互式信息交换。根据具体实施方式,可以在应用层或会话层中建立通信会话。在一些实施例中,节点102可以使用节点104的节点标识符来验证节点102与节点104之间是否已经存在通信会话。

在步骤304,如果节点102确定在节点102与节点104之间已经存在先前的通信会话,则节点102可以终止方法300的执行。另一方面,如果节点102确定在节点102与节点104之间不存在先前的通信会话,则节点102可以在步骤306向与节点104相关联的ip地址发送连接请求。例如,连接请求被配置为在节点102与节点104之间建立物理通信信道。在一些实施例中,节点102可以请求在传输层级别与节点104连接,例如,请求与节点104建立传输控制协议(tcp)连接。在一些实施例中,节点102可以通过建立tcp连接而不创建与节点104的通信会话来执行步骤306。

在步骤308,节点102可以确定与节点104的连接是否成功。如果没有,例如,由于连接请求被节点104拒绝,则节点102可以终止方法300的执行。另一方面,如果节点102确定连接成功,则节点102可以在步骤310进一步确定在节点102与节点104之间是否存在通信会话。例如,当节点102请求与节点104连接时,节点104也可以请求与节点102连接并与节点102建立通信会话。如果节点102在步骤310确定在节点102与节点104之间存在通信会话,则节点102可以终止方法300的执行。如果没有,则节点102可以继续执行步骤312。

在步骤312,节点102可以通过向节点104提供节点102的节点标识符并从节点104接收节点104的节点标识符来与节点104交换节点标识符。在一些实施例中,出于安全原因,节点102和节点104可以各自使用其私钥对交换进行签名。例如,节点102可以使用节点102的私钥加密其节点标识符,节点104可以使用节点104的私钥加密其节点标识符。然而,在一些实施例中,使用私钥对交换进行签名可能不是必需的,诸如当节点102和104在例如隔离的测试环境的安全环境下操作时。需要理解的是,尽管具体实施方式可以改变,但这种交换的目的是相同的,其为了便于节点标识符的交换,以便促使在步骤314在节点102与节点104之间的连接上建立通信会话。

在步骤316,节点102可以确定另一通信会话,例如,不同于在步骤314中刚建立的通信会话的先前通信会话,是否已经存在于节点102与节点104之间。例如,当节点102与节点104交换节点标识符时,节点104还可以与节点102建立通信会话。如果节点102确定在节点102与节点104之间不存在其他通信会话,则节点102可以终止方法300的执行。另一方面,如果节点102确定在节点102与节点104之间已经存在另一通信会话,则节点102可以继续执行步骤318,以便基于预先建立的规则终止通信会话之一。节点102还可以终止节点102与节点104之间的连接,所终止的通信会话是建立在该连接上的。

预先建立的规则可以基于节点标识符。例如,节点102可以选择终止由具有较大(或较小)节点标识符的节点启动的通信会话。预先建立的规则也可以基于其他因素,只要使用的因素能够系统地区分通信会话,使得一个通信会话被允许保留,而所有其他通信会话可以被识别并终止。例如,预先建立的规则可要求节点102终止所有先前建立的通信会话,并保留最近建立的通信会话。

图4是根据实施例的用于在区块链系统中的第一节点与第二节点之间建立通信的方法400的流程图。例如,区块链系统在包括多个节点的p2p网络中实现。此外,例如,方法400可由作为第二节点的节点104(图1)执行以处理由作为第一节点的节点102(图1)发送的连接请求。

参照图1和图4,在步骤402,节点104可以接收由节点102发送的连接请求。在一些实施例中,节点102可以请求在传输层级别与节点104连接,例如,请求与节点104建立传输控制协议(tcp)连接。节点104可以处理该请求并相应地与节点102建立连接。

在步骤404,节点104可通过向节点102提供节点104的节点标识符并从节点102接收节点102的节点标识符,来与节点102交换节点标识符。在一些实施例中,出于安全原因,节点102和节点104可以各自使用其私钥对交换进行签名。然而,在一些实施例中,使用私钥对交换进行签名可能不是必需的,诸如当节点102和104在例如隔离的测试环境的安全环境下操作时。需要理解的是,尽管具体实施方式可以改变,但这种交换的目的是相同的,其为了便于节点标识符的交换,以便促使在步骤406在节点102与节点104之间的连接上建立通信会话。

在步骤408,节点104可以确定另一通信会话,例如,不同于在步骤406中刚建立的通信会话的先前通信会话,是否已经存在于节点102与节点104之间。例如,当节点104与节点102交换节点标识符时,节点102还可以与节点104建立通信会话。如果节点104确定在节点102与节点104之间不存在先前的通信会话,则节点104可以终止方法400的执行。另一方面,如果节点104确定在节点102与节点104之间已经存在先前的通信会话,则节点104可以继续执行步骤410,以便基于预先建立的规则终止通信会话之一。节点104还可以终止节点102与节点104之间的连接,所终止的通信会话是建立在该连接上的。

在一些实施例中,节点104配置为使用与节点102使用的相同的预先建立的规则来选择哪个通信会话要终止。例如,如果节点102配置为选择由具有较大节点标识符的节点启动的通信会话作为要终止的会话,则节点104配置为使用相同的规则,这可有助于节点102和节点104终止相同的通信会话。

如应该理解的,在第一节点与第二节点之间建立通信的上述方法基于第一节点和第二节点的节点标识符。因此,在所示实施例中,一个ip地址可被用于支持一个以上的节点。因此,在所示实施例中,一台计算设备可被用来实现一个以上的节点。

图5示出根据实施例的区块链系统500的示意图。参照图5,区块链系统500可以包括配置为在区块链520上操作的多个节点502-510,类似于配置为在区块链120上操作的节点102-110(图1)。此外,计算设备530配置为承载节点502-506。计算设备530可以以与计算设备200(图2)类似的方式实现。也就是说,计算设备530可以包括通信接口、处理器和存储器。在一些实施例中,计算设备530可以实现管理程序和/或虚拟机来承载节点502-506。在一些实施例中,计算设备530可以作为并行执行的进程或应用来承载节点502-506。计算设备530还可以使用其他计算技术来承载节点502-506。

能够使用一台计算设备承载一个以上的节点,可以降低区块链系统的硬件成本。然而,这些计算设备不被要求承载一个以上的节点。例如,如图5所示,计算设备540和550可分别被用于仅承载一个节点508和510,所有节点502-510可共同地操作以在区块链520上操作,如上所述。此外,需要注意的是,根据本文的实施例配置的方法不会对哪个节点可以启动连接请求施加任何限制。

以上给出的不同实施例仅为示例性的,而不是限制性的。例如,虽然节点102和104(图1)被用于说明方法300(图3)和方法400(图4)的执行,但是区块链系统100中的任何节点可以使用方法300来请求与另一节点通信。类似地,区块链系统100中的任何节点可以使用方法400来处理接收到的连接请求。

方法300和400可被用于各种类型的区块链网络,如上文所述的公有区块链网络、私有区块链网络或联盟区块链网络。在不脱离本文的精神和范围的情况下,方法300和400也可被用于各种类型的应用,例如记账、加密货币、基于区块链的分布式账本等。

图6是根据实施例的用于在区块链系统中的第一节点与第二节点之间建立通信的装置600的框图。例如,装置600可以实现第一节点和第二节点中的每一个。此外,例如,装置600可以是软件过程的实现,并且可以对应于方法300(图3)或方法400(图4)。参照图6,装置600可包括交换模块602、确定模块604和终止模块606。

交换模块602可向第二节点提供第一节点的节点标识符,并从第二节点接收第二节点的节点标识符,以使第一节点与第二节点之间建立第一通信会话。确定模块604可以确定在第一节点与第二节点之间是否存在第二通信会话。响应于确定第一节点与第二节点之间存在第二通信会话,终止模块606可以基于第一节点的节点标识符和第二节点的节点标识符,终止第一通信会话和第二通信会话之一。

装置600还可包括通信模块608。通信模块608可以向第二节点发送连接请求,或者从第二节点接收连接请求,以在第一节点与第二节点之间建立连接。通信模块608可在第一节点与第二节点之间的连接上进一步建立通信会话。

上述每个模块可以被实现为软件或硬件,或者软件和硬件的组合。例如,可以使用执行存储在存储器中的指令的处理器来实现上述模块中的每一个。而且,例如,每个上述模块可以用一个或多个专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子组件执行所描述的方法来实现。进一步地,例如,上述模块中的每一个可以通过使用计算机芯片或实体来实现,或者通过使用具有特定功能的产品来实现。在一个实施例中,装置600可以是计算机,并且计算机可以是个人计算机、膝上型计算机、蜂窝电话、照相手机、智能手机、个人数字助理、媒体播放器、导航设备、电子邮件接收和发送设备、游戏台、平板电脑、可穿戴设备或这些设备的任何组合。

对于装置600中每个模块的功能和角色的实现过程,可以参考上述方法中的相应步骤。为简单起见,这里省略了细节。

在一些实施例中,计算机程序产品可以包括非暂态计算机可读存储介质,其上存储有计算机可读程序指令,用于使处理器执行上述方法。

计算机可读存储介质可以是有形设备,其可以存储供指令执行设备使用的指令。计算机可读存储介质可以是例如(但不限于)电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字通用光盘(dvd)、记忆棒、软盘、例如在其上记录有指令的凹槽中的穿孔卡或凸起结构的机械编码设备,以及前述的任何合适的组合。

用于执行上述方法的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,该编程语言包括面向对象的编程语言和传统的过程编程语言。计算机可读程序指令可以全部在计算设备上作为独立软件包执行,或者部分在第一计算设备上执行、部分在远离第一计算设备的第二计算设备上执行。在后一种情况下,第二远程计算设备可以通过包括局域网(lan)或广域网(wan)的任何类型的网络连接到第一计算设备。

计算机可读程序指令可以被提供给通用或专用计算机的处理器或其他可编程数据处理装置以产生机器,使得经由计算机的处理器或其他可编程数据处理装置执行的指令创建用于实施上述方法的装置。

附图中的流程图和示图示出了根据本文各种实施例的设备、方法和计算机程序产品的可能实施例的架构、功能和操作。在这方面,流程图或示图中的框可以表示软件程序、代码段或代码的一部分,其包括用于实现特定功能的一个或多个可执行指令。还应注意,在一些替代实施方式中,框中提到的功能可以不按图中所示的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,示图和/或流程图的每个框以及示图和流程图中的框的组合可以由执行特定功能或动作的专用目的的基于硬件的系统、或者专用目的的硬件和计算机指令的组合来实施。

应当理解,为了清楚起见,在单独的实施例的上下文中描述的本文的某些特征也可以在单个实施例中组合提供。相反,为了简洁起见,在单个实施例的上下文中描述的本文的各种特征也可以单独提供或者以任何合适的子组合提供,或者在本文的任何其他所述实施例中合适地提供。除非另有说明,否则在各种实施例的上下文中描述的某些特征不是那些实施例的必要特征。

应该理解的是,尽管诸如“第一”和“第二”等术语在本文被用来描述各种元件,但所述元件不应受到这些术语限制,这些术语仅被用于区分元件。例如,第一元件(例如,第一节点)也可以称为第二元件(例如,第二节点),类似地,第二元件也可以称为第一元件,而不背离本说明书的精神和范围。

尽管已经结合具体实施例描述了本文,但是许多替换、修改和变体对于本领域技术人员而言将是显而易见的。因此,以下权利要求包含落入权利要求的范围内的所有这些替换、修改和变体。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1