CN112651037B - 区块链系统的链外数据访问方法和系统 - Google Patents
区块链系统的链外数据访问方法和系统 Download PDFInfo
- Publication number
- CN112651037B CN112651037B CN202011639498.8A CN202011639498A CN112651037B CN 112651037 B CN112651037 B CN 112651037B CN 202011639498 A CN202011639498 A CN 202011639498A CN 112651037 B CN112651037 B CN 112651037B
- Authority
- CN
- China
- Prior art keywords
- data source
- chain data
- chain
- request
- blockchain system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 90
- 230000004044 response Effects 0.000 claims abstract description 67
- 238000012795 verification Methods 0.000 claims description 45
- 238000012550 audit Methods 0.000 claims description 20
- 238000013480 data collection Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 9
- 230000007246 mechanism Effects 0.000 description 25
- 238000013461 design Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 3
- 206010061619 Deformity Diseases 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 102100040468 Guanylate kinase Human genes 0.000 description 1
- 101100453821 Homo sapiens GUK1 gene Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Accounting & Taxation (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Finance (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请实施例提供一种区块链系统的链外数据访问方法和系统。该方法包括:区块链系统可向链外数据源发送第一请求,使得链外数据源可基于链外数据源的认证密钥对目标链外数据生成第一签名信息。链外数据源可向区块链系统返回携带有目标链外数据和第一签名信息的第一响应。在第一签名信息验证成功后,区块链系统可确定目标链外数据的可信性。从而,区块链系统便可访问目标链外数据,使得区块链系统中的智能合约能够顺序执行,实现了链外数据的可信接入和可信认证,使得链外数据从区块链系统中的预言机接入至区块链系统的链上,在保障链外数据的可信性的同时,还保障了链外数据源的身份隐私。
Description
技术领域
本申请实施例涉及区块链技术领域,尤其涉及一种区块链系统的链外数据访问方法和系统。
背景技术
在金融科技(Fintech)领域中,区块链系统中的很多应用需要引入区块链外部数据(即链外数据),例如游戏时需要提供随机数,学生注册登记信息等。而链外数据不具有一致性,因此,受到区块链系统的共识算法一致性的限制,区块链系统无法直接引入链外数据。若只依赖于区块链系统中虚拟机的内部函数,无法满足很多应用的实际需求。
在这种需求的驱动下,预言机应运而生。区块链系统可通过引入预言机,可获取并访问链外数据。但攻击者可通过破解预言机,驱动区块链系统中的智能合约(smartcontract)执行对自己有益的逻辑,提高了区块链系统被攻击的可能性。
因此,如何保证链外数据的可信性对保障区块链系统的安全是现亟需解决的。
发明内容
本申请实施例提供一种区块链系统的链外数据访问方法和系统,可在保障链外数据的可信性的同时,还保障了链外数据源的身份隐私。
第一方面,本申请提供一种区块链系统的链外数据访问方法。
该方法包括:区块链系统向链外数据源发送第一请求,第一请求用于请求区块链系统需要访问的目标链外数据;区块链系统从链外数据源接收第一响应,第一响应中携带有目标链外数据和第一签名信息,第一签名信息是链外数据源使用链外数据源的认证密钥,对目标链外数据生成的群签名,链外数据源的认证密钥是区块链系统中的一个群主节点基于群主节点的第一私钥、群主节点的第一公钥、群主节点的第二私钥、群主节点的第二公钥以及链外数据源提供的随机数得到的,群主节点为区块链系统中多个区块链节点中的一个可信的区块链节点,第一公钥与第一私钥为一对密钥对,第二公钥与第二私钥为一对密钥对;区块链系统在第一签名信息验证成功后,访问目标链外数据。
通过第一方面的方法,区块链系统可从区块链系统中多个区块链节点中选择一个可信的区块链节点作为一个群主节点,且该群主节点可基于群主节点的第一私钥、群主节点的第一公钥、群主节点的第二私钥、群主节点的第二公钥以及链外数据源提供的随机数,得到链外数据源的认证密钥。其中,第一公钥与第一私钥为一对密钥对,第二公钥与第二私钥为一对密钥对。
在智能合约的执行过程中确定需要访问目标链外数据时,区块链系统可向链外数据源发送第一请求,使得链外数据源可基于链外数据源的认证密钥对目标链外数据生成第一签名信息。链外数据源可向区块链系统返回携带有目标链外数据和第一签名信息的第一响应。在第一签名信息验证成功后,区块链系统可确定目标链外数据的可信性。从而,区块链系统便可访问目标链外数据,使得区块链系统中的智能合约能够顺序执行,实现了链外数据的可信接入和可信认证,使得链外数据从区块链系统中的预言机接入至区块链系统的链上,在保障链外数据的可信性的同时,还保障了链外数据源的身份隐私。
在一种可能的设计中,区块链系统包括:预言机和智能合约的区块链节点,智能合约的区块链节点为群主节点所属的多个区块链节点中的一个。
该方法具体包括:智能合约的区块链节点在智能合约的执行过程中确定需要访问目标链外数据时,向区块链系统的链上传输第二请求,第二请求用于请求目标链外数据;预言机在区块链系统的链上接收到第二请求后,向链外数据源发送第一请求;预言机从链外数据源接收第一响应;预言机在基于第二公钥验证第一签名信息成功后,调用数据收集合约,向智能合约的区块链节点发送目标链外数据中验证成功的数据,目标链外数据中验证成功的数据是数据收集合约基于第二公钥验证第一签名信息成功的数据;智能合约的区块链节点访问目标链外数据中验证成功的数据。
由此,智能合约的区块链节点通过预言机和数据收集合约的验证后,可从链外数据源接收到可信的链外数据,无需追踪到链外数据源的身份信息,进一步保障了链外数据源身份信息的隐私性。
在一种可能的设计中,该方法还包括:群主节点向链外数据源发送链外数据源的认证密钥。
在一种可能的设计中,群主节点向链外数据源发送链外数据源的认证密钥,包括:
预言机从链外数据源接收第三请求,第三请求中携带有链外数据源的标识、加密信息以及第二签名信息,加密信息是链外数据源使用第一公钥对随机数进行加密生成的,第二签名信息是链外数据源使用链外数据源的私钥对加密信息进行签名的结果,链外数据源的私钥与链外数据源的公钥为一对密钥对;预言机在基于第三请求,确定链外数据源为可信数据源后,向区块链系统的链上传输第四请求,第四请求中携带有链外数据源的标识、加密信息以及第二签名信息,且调用数据接入合约,向群主节点发送第五请求,第五请求用于请求群主节点向链外数据源提供链外数据源的认证密钥;群主节点响应于接收第五请求,从区块链系统的链上获取第四请求;群主节点在基于第四请求,确定链外数据源为可信数据源后,使用第一私钥对加密信息进行解密,得到随机数;基于第二私钥、第二公钥以及随机数生成链外数据源的认证密钥;基于使用链外数据源的公钥对链外数据源的认证密钥进行加密,得到链外数据源的密文信息;群主节点向区块链系统的链上传输链外数据源的密文信息,且向预言机发送第五响应,第五响应用于向预言机通知链外数据源成功接入区块链系统的链上;预言机响应于接收第五响应,从区块链系统的链上获取链外数据源的密文信息;预言机向链外数据源发送链外数据源的密文信息,以使链外数据源使用链外数据源的私钥对链外数据源的密文信息进行解密,得到链外数据源的认证密钥。
由此,群主节点通过预言机可向链外数据源颁发链外数据源的认证密钥,使得链外数据源能够利用链外数据源的认证密钥对链外数据进行加密,使得智能合约的区块链节点基于链外数据源的认证密钥来验证链外数据是否可访问,有效保障了智能合约的区块链节点能够访问到可信的链外数据。
在一种可能的设计中,预言机基于第三请求,确定链外数据源为可信数据源,包括:
预言机基于链外数据源的标识,从区块链系统的链上获取链外数据源的公钥;预言机在基于链外数据源的公钥,确定第二签名信息的合法性验证通过后,向链外数据源发起第六请求;预言机从链外数据源接收链外数据源的身份可信性证明信息,链外数据源的身份可信性证明信息是链外数据源响应于接收第六请求发送的;预言机在链外数据源的身份可信性证明信息审核通过后,确定链外数据源为可信数据源。
由此,预言机可对链外数据进行初次的验证,过滤掉恶意的链外数据,有效保证了区块链系统的安全性能。
在一种可能的设计中,该方法还包括:预言机在第二签名信息的合法性验证失败或者链外数据源的身份可信性证明信息审核未通过后,向链外数据源发送第一通知,第一通知用于表示拒绝链外数据源接入区块链系统的链上。由此,预言机可及时通知链外数据源。
在一种可能的设计中,群主节点基于第三请求,确定链外数据源为可信数据源,包括:
群主节点使用链外数据源的公钥对第二签名信息的有效性进行验证;群主节点在第二签名信息的有效性验证成功后,确定链外数据源为可信数据源。
由此,群主节点可对链外数据进行再一次的验证,不仅防止预言机的故意作恶的场景,进一步地过滤掉恶意的链外数据,有效保证了区块链系统的安全性能。
在一种可能的设计中,该方法还包括:群主节点在第二签名信息的有效性验证失败后,向预言机发送第二通知,第二通知用于表示拒绝链外数据源接入区块链系统的链上。由此,群主节点可及时向预言机通知链外数据源提供的链外数据不可访问。
在一种可能的设计中,该方法还包括:
智能合约的区块链节点在确定访问的目标链外数据不符合预设条件时,向群主节点发送第七请求,第七请求用于请求群主节点对目标链外数据进行审计,第七请求中携带有目标链外数据、目标链外数据的第三签名信息以及目标链外数据的不可信证明信息;群主节点响应于接收第七请求,对目标链外数据的不可信证明信息的有效性进行验证;群主节点在目标链外数据的不可信证明信息无效后,向智能合约发送第七响应,第七响应用于表示拒绝对目标链外数据进行审计;群主节点在目标链外数据的不可信证明信息有效,且基于第二公钥验证第三签名信息成功后,基于第三签名信息,使用第二私钥确定出目标链外数据对应的链外数据源的标识;确定链外数据源的认证密钥无效。
由此,能合约的区块链节点可通过群主节点追溯到链外数据源的身份信息,来确定链外数据源提供的链外数据是否为恶意数据,有效保证了区块链系统的安全。
第二方面,本申请实施例提供一种区块链系统,包括:
区块链系统,用于向链外数据源发送第一请求,第一请求用于请求区块链系统需要访问的目标链外数据;
区块链系统,用于从链外数据源接收第一响应,第一响应中携带有目标链外数据和第一签名信息,第一签名信息是链外数据源使用链外数据源的认证密钥,对目标链外数据生成的群签名,链外数据源的认证密钥是区块链系统中的一个群主节点基于群主节点的第一私钥、群主节点的第一公钥、群主节点的第二私钥、群主节点的第二公钥以及链外数据源提供的随机数得到的,群主节点为区块链系统中多个区块链节点中的一个可信的区块链节点,第一公钥与第一私钥为一对密钥对,第二公钥与第二私钥为一对密钥对;
区块链系统,用于在第一签名信息验证成功后,访问目标链外数据。
在一种可能的设计中,该系统包括:预言机和智能合约的区块链节点,智能合约的区块链节点为群主节点所属的多个区块链节点中的一个。
智能合约的区块链节点,用于在智能合约的执行过程中确定需要访问目标链外数据时,向区块链系统的链上传输第二请求,第二请求用于请求目标链外数据;
预言机,用于在区块链系统的链上接收到第二请求后,向链外数据源发送第一请求;
预言机,用于从链外数据源接收第一响应;
预言机,用于在基于第二公钥验证第一签名信息成功后,调用数据收集合约,向智能合约的区块链节点发送目标链外数据中验证成功的数据,目标链外数据中验证成功的数据是数据收集合约基于第二公钥验证第一签名信息成功的数据;
智能合约的区块链节点,用于访问目标链外数据中验证成功的数据。
在一种可能的设计中,群主节点,还用于向链外数据源发送链外数据源的认证密钥。
在一种可能的设计中,预言机,具体用于从链外数据源接收第三请求,第三请求中携带有链外数据源的标识、加密信息以及第二签名信息,加密信息是链外数据源使用第一公钥对随机数进行加密生成的,第二签名信息是链外数据源使用链外数据源的私钥对加密信息进行签名的结果,链外数据源的私钥与链外数据源的公钥为一对密钥对;
预言机,具体用于在基于第三请求,确定链外数据源为可信数据源后,向区块链系统的链上传输第四请求,第四请求中携带有链外数据源的标识、加密信息以及第二签名信息,且调用数据接入合约,向群主节点发送第五请求,第五请求用于请求群主节点向链外数据源提供链外数据源的认证密钥;
群主节点,具体用于响应于接收第五请求,从区块链系统的链上获取第四请求;
群主节点,具体用于在基于第四请求,确定链外数据源为可信数据源后,使用第一私钥对加密信息进行解密,得到随机数;基于第二私钥、第二公钥以及随机数生成链外数据源的认证密钥;基于使用链外数据源的公钥对链外数据源的认证密钥进行加密,得到链外数据源的密文信息;
群主节点,具体用于向区块链系统的链上传输链外数据源的密文信息,且向预言机发送第五响应,第五响应用于向预言机通知链外数据源成功接入区块链系统的链上;
预言机,具体用于响应于接收第五响应,从区块链系统的链上获取链外数据源的密文信息;
预言机,具体用于向链外数据源发送链外数据源的密文信息,以使链外数据源使用链外数据源的私钥对链外数据源的密文信息进行解密,得到链外数据源的认证密钥。
在一种可能的设计中,预言机,具体用于基于链外数据源的标识,从区块链系统的链上获取链外数据源的公钥;
预言机,具体用于在基于链外数据源的公钥,确定第二签名信息的合法性验证通过后,向链外数据源发起第六请求;
预言机,具体用于从链外数据源接收链外数据源的身份可信性证明信息,链外数据源的身份可信性证明信息是链外数据源响应于接收第六请求发送的;
预言机,具体用于在链外数据源的身份可信性证明信息审核通过后,确定链外数据源为可信数据源。
在一种可能的设计中,预言机,还用于在第二签名信息的合法性验证失败或者链外数据源的身份可信性证明信息审核未通过后,向链外数据源发送第一通知,第一通知用于表示拒绝链外数据源接入区块链系统的链上。
在一种可能的设计中,群主节点,具体用于使用链外数据源的公钥对第二签名信息的有效性进行验证;
群主节点,具体用于在第二签名信息的有效性验证成功后,确定链外数据源为可信数据源。
在一种可能的设计中,群主节点,还用于在第二签名信息的有效性验证失败后,向预言机发送第二通知,第二通知用于表示拒绝链外数据源接入区块链系统的链上。
在一种可能的设计中,智能合约的区块链节点,还用于在确定访问的目标链外数据不符合预设条件时,向群主节点发送第七请求,第七请求用于请求群主节点对目标链外数据进行审计,第七请求中携带有目标链外数据、目标链外数据的第三签名信息以及目标链外数据的不可信证明信息;
群主节点,还用于响应于接收第七请求,对目标链外数据的不可信证明信息的有效性进行验证;
群主节点,还用于在目标链外数据的不可信证明信息无效后,向智能合约发送第七响应,第七响应用于表示拒绝对目标链外数据进行审计;
群主节点,还用于在目标链外数据的不可信证明信息有效,且基于第二公钥验证第三签名信息成功后,基于第三签名信息,使用第二私钥确定出目标链外数据对应的链外数据源的标识;确定链外数据源的认证密钥无效。
上述第二方面以及上述第二方面的各可能的设计中所提供的区块链系统,其有益效果可以参见上述第一方面和第一方面的各可能的实施方式所带来的有益效果,在此不再赘述。
第三方面,本申请实施例提供一种电子设备,包括:存储器和处理器;存储器用于存储程序指令;处理器用于调用存储器中的程序指令使得电子设备执行第一方面及第一方面任一种可能的设计中的区块链系统的链外数据访问方法。
第四方面,本申请实施例提供一种计算机存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行第一方面及第一方面任一种可能的设计中的区块链系统的链外数据访问方法。
第五方面,本申请实施例提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行第一方面及第一方面任一种可能的设计中的区块链系统的链外数据访问方法。
第六方面,本申请实施例提供一种芯片系统,芯片系统包括:处理器;当处理器执行存储器中存储的计算机指令时,电子设备执行第一方面及第一方面任一种可能的设计中的区块链系统的链外数据访问方法。
附图说明
图1为本申请一实施例提供的一种区块链系统的链外数据访问方法的流程示意图;
图2为本申请一实施例提供的一种区块链系统的结构示意图;
图3为本申请一实施例提供的一种区块链系统的链外数据访问方法的流程示意图;
图4为本申请一实施例提供的一种区块链系统的链外数据访问方法的流程示意图;
图5为本申请一实施例提供的一种区块链系统的链外数据访问方法的流程示意图;
图6为本申请一实施例提供的一种区块链系统的链外数据访问方法的流程示意图;
图7为本申请一实施例提供的一种区块链系统的链外数据访问方法的流程示意图。
具体实施方式
首先,下面对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
1、虚拟机:是智能合约的执行引擎,根据智能合约的代码和输入来执行智能合约。
2、智能合约:是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
3、预言机:是打破链上与链外隔离的一种机制,通过预言机,区块链系统中的智能合约可访问并获取链外数据,且根据链外数据执行相关的合约逻辑。
在实际应用过程中,区块链系统常常通过预言机引入链外数据,使得区块链系统中的智能合约能够访问链外数据。而预言机是一把双刃剑,一方面扩展了现有区块链系统的功能,另一方面确提升了区块链系统被攻击的可能性。也就是说,预言机对于突破区块链系统中应用的限制、打通链上和链下数据的连通性是至关重要的,但预言机的引入也给区块链系统带来了更多的安全风险。
故,本申请实施例提供了一种区块链系统的链外数据访问方法、系统及计算机存储介质。本申请实施例的区块链系统的链外数据访问方法的执行主体为区块链系统,区块链系统可采用如服务器等设备作为载体,应用于金融科技领域等。区块链系统设计了一套完整的链外数据的接入、验证和审计的机制,可将链外数据从区块链系统中的预言机接入至区块链系统的链上,实现了链外数据的可信接入和可信认证。从而,在保障链外数据的可信性的同时,还保障了链外数据源的身份隐私。
另外,区块链系统通过可信的区块链节点,可向链外数据源颁发链外数据源的认证密钥,可有效防止预言机故意作恶的场景。并且,在发现链外数据为恶意数据时,区块链系统还可追溯到链外数据的数据源身份信息。
其中,区块链系统可以为私有链(如由多个学校的服务器构成)或者公有链(如存储有航班信息的服务器构成)。并且,链外数据源可以理解为可提供链外数据的设备。链外数据可以包括但不限于:学生注册登记信息、航班信息、天气信息、时间信息、公安系统信息等。
示例性地,本申请实施例提供一种区块链系统的链外数据访问方法。
请参阅图1,图1为本申请一实施例提供的一种区块链系统的链外数据访问方法的流程示意图。
如图1所示,本申请实施例的区块链系统的链外数据访问方法可以包括:
S101、区块链系统向链外数据源发送第一请求,第一请求用于向链外数据源请求区块链系统需要访问的目标链外数据。
区块链系统在一个区块链节点执行一个智能合约时,可能智能合约需要访问链外数据。此时,区块链系统可向链外数据源发送第一请求,使得链外数据源能够及时向区块链系统提供所需的目标链外数据。
其中,本申请实施例对第一请求的具体实现方式不做限定。例如,第一请求中可携带有目标链外数据的标识等信息。并且,目标链外数据的具体实现方式可参见前文提及的链外数据的描述内容,此处不做赘述。
S102、区块链系统从链外数据源接收第一响应,第一响应中携带有目标链外数据和第一签名信息。
链外数据源在接收到第一请求后,可使用链外数据源的认证密钥,对目标链外数据生成群签名,即第一签名信息。链外数据源可将目标链外数据和第一签名信息携带在第一响应中,返回给区块链系统。
其中,本申请实施例对第一签名信息和链外数据源的认证密钥的具体实现方式不做限定。并且,区块链系统从区块链系统中多个区块链节点中选择一个可信的区块链节点作为一个群主节点。一个群主节点基于群主节点的第一私钥、群主节点的第一公钥、群主节点的第二私钥、群主节点的第二公钥以及链外数据源提供的随机数得到链外数据源的认证密钥。其中,第一公钥与第一私钥为一对密钥对,第二公钥与第二私钥为一对密钥对。
S103、区块链系统在第一签名信息验证成功后,访问目标链外数据。
由于链外数据源的认证密钥是区块链系统中的群主节点提供的,而非区块链系统中的预言机提供的,且区块链系统中的群主节点为可信的区块链节点。因此,区块链系统可通过验证第一签名信息,来确定目标链外数据的可信性。
在第一签名信息验证成功后,区块链系统可确定目标链外数据的可信性。从而,区块链系统便可访问目标链外数据,使得区块链系统中的智能合约能够顺序执行。
本申请实施例提供的链外数据访问方法,区块链系统可从区块链系统中多个区块链节点中选择一个可信的区块链节点作为一个群主节点,且该群主节点可基于群主节点的第一私钥、群主节点的第一公钥、群主节点的第二私钥、群主节点的第二公钥以及链外数据源提供的随机数,得到链外数据源的认证密钥。其中,第一公钥与第一私钥为一对密钥对,第二公钥与第二私钥为一对密钥对。
在智能合约的执行过程中确定需要访问目标链外数据时,区块链系统可向链外数据源发送第一请求,使得链外数据源可基于链外数据源的认证密钥对目标链外数据生成第一签名信息。链外数据源可向区块链系统返回携带有目标链外数据和第一签名信息的第一响应。在第一签名信息验证成功后,区块链系统可确定目标链外数据的可信性。从而,区块链系统便可访问目标链外数据,使得区块链系统中的智能合约能够顺序执行,实现了链外数据的可信接入和可信认证,使得链外数据从区块链系统中的预言机接入至区块链系统的链上,在保障链外数据的可信性的同时,还保障了链外数据源的身份隐私。
本申请实施例中,区块链系统引入了一套实现链外数据源的接入、访问和审计的机制。
1、整套机制主要包括三个部分:
(1)链外数据源接入机制:负责审核并接入新的数据源;
(2)链外数据源验证机制:负责验证预言机访问数据源的可信性;
(3)链外数据审计机制:负责追踪恶意数据源的身份信息。
2、整套机制中,区块链系统可以包括多类角色。
请参阅图2,图2为本申请一实施例提供的一种区块链系统的结构示意图。如图2所示,区块链系统可以包括:预言机、群主节点以及智能合约的区块链节点,智能合约的区块链节点为群主节点所属的多个区块链节点中的一个。并且,区块链系统中还集成有数据收集合约和数据接入合约。
(1)预言机:负责接入、认证链外数据源,是区块链节点访问链外数据的中间组件。
(2)群主节点:负责为接入的链外数据源颁发链外数据源的认证密钥GSK以及追溯作恶的链外数据对应的数据源身份信息。群主节点由多个区块链节点中的一个区块链节点轮流担任。
(3)智能合约的区块链节点:负责执行智能合约。
(4)智能合约:向预言机请求访问链外数据。
另外,链外数据源是为区块链系统提供链外数据的信息源,提供的信息可包括但不限于随机数、时间信息、天气信息、股票信息等链外数据。链外数据源分为待接入数据源与已接入数据源这两类。在待接入数据源未接入到区块链系统时,区块链系统中的预言机不会向待接入数据源请求链外数据。在已接入数据源接入到区块链系统时,已接入数据源便可向区块链系统提供可信的链外数据。
下面,基于上述内容,介绍链外数据源接入机制的具体实现过程。
链外数据源接入机制中,可从多个区块链节点中选择一个区块链节点作为群主节点,群主节点为链外数据源提供链外数据源的认证密钥,使得区块链节点可以接入链外数据源,且在多个区块链节点中,除了群主节点之外的区块链节点无法追踪链外数据源的身份信息,群主节点可揭露链外数据源的身份信息,保障了链外数据源身份的隐私性以及链外数据的可验证性。
链外数据源接入机制具体包括如下步骤:
1、系统初始化
多个区块链节点中,每个区块链节点可轮换为群主节点。故,每个群主节点需要维护两套公私钥对,即第一私钥SK和第一公钥PK,第二私钥GMSK和第二公钥GPK。其中,第一私钥SK和第一公钥PK负责对共识消息包进行签名。第二私钥GMSK和第二公钥GMPK用于作为群主节点,为请求接入的链外数据源颁发链外数据源的认证密钥GSK。
其中,每个群主节点的第二公钥GPK可通过智能合约保存到区块链系统的链上,游戏保证第二公钥GPK的可验证性。
2、群主节点的选举
由于群主节点负责为待接入数据源颁发链外数据源的认证密钥GSK,因此,为保证区块链系统的安全,区块链系统可按照预设方式,在多个区块链节点中轮换群主节点。
在一些实施例中,区块链系统可基于最新区块哈希周期性地轮换群主节点。具体地,设每隔period个区块进行一次群主轮换选举,则第N个区块选取第(blockHash(N)%period)个区块链节点作为群主节点,其中,blockHash(N)是块高为N的区块哈希;
3、待接入数据源通过预言机发起链外数据源接入请求
设链外数据源D请求加入区块链系统作为可信数据源之一,其具体流程如下:
(1)链外数据源D生成链外数据源D的公私钥对,即私钥EncSK和公钥EncPK,并将私钥EncSK和公钥EncPK发布到区块链系统的链上。
(2)链外数据源D随机生成随机数random,并使用当前的群主节点的第一公钥PK进行加密,形成加密信息Enc(PK,random)。其中,该加密信息只有群主节点可以解密。
链外数据源D将该加密信息、公钥EncPK以及签名消息Sig(data)作为注册请求RegisterRequest发送给预言机(即步骤S301中的第三请求)。
其中,注册请求RegisterRequest={ID,data=(Enc(PK,random)),Sig(data)}。标识ID是Sig(data)的唯一标识。Enc(PK,random)是加密信息。签名消息Sig(data)是使用私钥EncSK对RegisterRequest.data进行签名的结果。
(3)预言机收到注册请求RegisterRequest后,验证注册请求RegisterRequest的有效性,主要的验证步骤包括:
①预言机根据链外数据源D的标识ID,从区块链系统的链上获取链外数据源D的公钥EncPK(对应步骤S401)。
从而,预言机可对签名信息Sig(data)进行验签。若签名验证失败,则说明链外数据源D是非法数据源,预言机会拒绝链外数据源D的注册请求。若验证通过,则转步骤②对链外数据源D的可信性进行审核;
②预言机对链外数据源D的可信性进行审核。在审核期间,预言机会向链外数据源D发起挑战(即步骤S403中的第六请求),链外数据源D需要向预言机提供链外数据源D的身份可信性证明信息;
(4)链外数据源D的身份可信性证明信息审核通过后,预言机将注册请求RegisterRequest转发到区块链系统的链上(即步骤S302中的第四请求),并调用数据接入合约,向群主节点发送请求(即步骤S302中的第五请求),该请求用于请求群主节点为链外数据源D颁发链外数据源D的认证密钥GSK;
(5)群主节点获取注册请求RegisterRequest,为链外数据源D颁发链外数据源D的认证密钥GSK。为了防止预言机的故意作恶,群主节点首先对注册请求RegisterRequest进行验证,具体流程如下:
①群主节点从注册请求RegisterRequest中获取签名信息,并使用链外数据源D的公钥EncPK,验证签名信息Sig(data)的有效性。若验证失败,则群主节点拒绝链外数据源D的接入请求,并向预言机发送通知(即步骤S503中的第二通知)。若签名验证通过,则转步骤②,为链外数据源D颁发链外数据源D的认证密钥GSK;
②群主节点从注册请求RegisterRequest中获取加密后的随机数信息Enc(PK,random),使用私钥SK对加密信息Enc(PK,random)进行解密,获取随机数random,并调用如通用的群签名密钥颁发算法,基于第二私钥GMSK、第二公钥GPK以及随机数random为链外数据源D颁发链外数据源D的认证密钥GSK;
③群主节点使用链外数据源D的公钥EncPK对生成的认证密钥GSK进行加密,生成链外数据源D的密文信息Enc(EncPK,GSK),并调用数据接入合约,将链外数据源D的标识ID与Enc(EncPK,GSK)之间的映射关系保存在数据源信任列表中,并触发数据源接入成功的事件通知到预言机(即步骤S404中的第五响应);
(6)预言机收到群主节点发送的数据源接入成功的事件通知后,从区块链系统的链上获取链外数据源D的密文信息Enc(EncPK,GSK),并将链外数据源D的密文信息Enc(EncPK,GSK)转发给链外数据源D(即对应步骤S406和S407);
(7)链外数据源D从预言机收到链外数据源D的密文信息Enc(EncPK,GSK)后,使用私钥EncSK对链外数据源D的密文信息Enc(EncPK,GSK)进行解密,从中获取链外数据源D的认证密钥GSK。
通过上述操作流程,区块链系统完成了链外数据的接入,在链外数据的接入过程中,主要参与方包括:链外数据源、预言机、群主节点、智能合约的区块链节点、数据接入合约。链外数据源向预言机请求接入并提供链外数据源的身份可信性证明信息,预言机对链外数据源的可信性进行验证,并将合法数据源的请求转发给群主节点,群主节点为链外数据源颁发链外数据源的认证密钥,并通过执行数据接入合约将链外数据源D的标识ID与Enc(EncPK,GSK)之间的映射关系发布到数据源信任列表且向预言机传输对链外数据源的认证密钥加密得到的密文信息,预言机负责将密文信息转发给链外数据源,链外数据源解密密文信息便可获取认证密钥,持有认证密钥的链外数据源才可为区块链节点提供链外数据的访问功能。
下面,基于上述内容,介绍链外数据源验证机制的具体实现过程。
链外数据源验证机制中,在链外数据源提供链外数据时,需要链外数据源使用链外数据源的认证密钥GSK对链外数据进行签名,保证了链外数据源的可验证性和可追踪性。
在区块链系统请求目标链外数据时,链外数据源验证机制具体包括如下步骤:
1、智能合约A的区块链节点在执行一个智能合约A时,确定智能合约A需要访问目标链外数据。此时,智能合约A的区块链节点可向预言机请求访问目标链外数据;
2、预言机监听到智能合约A的区块链节点的请求(即S201中的第二请求),并找到持有被请求的目标链外数据的链外数据源D;
3、预言机向链外数据源D发起数据访问请求(即S202中的第一请求);
4、链外数据源D使用链外数据源D的认证私钥GSK对预言机需要访问的目标链外数据进行签名,并将请求的目标链外数据以及第一签名信息携带在一个响应responseData中发送给预言机(即S203中的第一响应)。
其中,该响应responseData={groupSig(GSK,data),data}。GSK是链外数据源D的认证私钥,data是预言机需要访问的目标链外数据。第二签名信息groupSig(GSK,data)是链外数据源D使用链外数据源D的认证密钥GSK生成的群签名;
5、预言机获取链外数据源D回复的响应responseData后,从响应responseData中取出第二签名信息groupSig(GSK,data),并使用第二公钥GPK对第二签名信息进行验证。
若签名认证成功,则预言机可调用数据收集合约,将目标链外数据返回给智能合约A。另外,数据收集合约也可使用第二公钥GPK对第二签名信息进行验证,仅将目标链外数据中签名验证通过的链外数据返回给智能合约A。
若签名验证失败,则预言机拒绝链外数据源D的目标链外数据,可向链外数据D发送通知(即S407中的第一通知),并尝试从其他链外数据源获取目标链外数据。
通过上述操作流程,区块链系统可保证区块链节点访问的链外数据均是经过认证的可信数据源提供的,且上述的第二签名信息不会暴露数据签名者的身份信息,即:预言机和数据收集合约仅可通过群签名验证了链外数据是由可信数据源提供的,无需通过群签名追踪到链外数据源的身份信息,进一步保障了链外数据源身份信息的隐私性。
下面,基于上述内容,介绍链外数据审计机制的具体实现过程。
链外数据源接入机制和链外数据源验证机制中,预言机与普通的区块链节点(即非群主节点)均无法通过链外数据源的第二签名信息获取链外数据源的身份信息。虽然保证了链外数据源的隐私,但增加了数据审计的难度。
故,本申请实施例提供了一种链外数据审计机制。链外数据审计机制中,在发现预言机提供的链外数据为恶意数据时,可追踪到具体的链外数据源的身份信息,具体流程如下:
1、智能合约A在发现智能合约A访问的链外数据不符合预期条件时,可确定当前恶意的链外数据在区块链节点上,且该区块链节点的块高为blockNumber,并计算出该区块链节点对应的群主节点groupManager为第blockHash(blockNumber)%period个区块链节点。其中,blockHash(blockNumber)是块高为blockNumber的区块的哈希。
从而,智能合约A可向群主节点groupManager发起审计请求auditRequest(即步骤S601中的第七请求),审计请求auditRequest包含恶意数据、恶意数据签名信息以及作恶证明,记为auditRequest={cheatData,sig(cheatData),cheatProof}。其中,cheatData是恶意的链外数据。sig(cheatData)是恶意的链外数据对应的第三签名信息。cheatProof是恶意的链外数据的不可信证明信息。
2、群主节点groupManager接收审计请求auditRequest后,可验证审计发起者提供的链外数据的不可信证明信息是否真实有效。
若无效,则群主节点groupManager拒绝该审计请求。若有效,则群主节点groupManager可使用第二公钥GPK验证恶意的链外数据cheatData的第三签名信息sig(cheatData)是否有效。若无效,则群主节点groupManager拒绝该审计请求,否则转步骤3,来追踪链外数据源的身份信息;
3、群主节点groupManager使用如通用的群签名身份揭露算法,基于恶意的链外数据cheatData的第三签名信息sig(cheatData),使用第二私钥GMSK推导出产生恶意的链外数据的链外数据源的身份信息(即该链外数据源的标识ID’)。
通过上述操作流程,区块链系统在获取作恶数据源的身份信息后,可按需对链外数据源采取相应的惩罚措施。例如,群主节点groupManager可访问数据源信任列表,将该作恶的链外数据源对应的映射关系从数据源信任列表中移除,并撤销该链外数据源的认证密钥。由此,该链外数据源将没有权限为区块链系统提供链外数据,有效保证了区块链系统的安全。
基于上述三个机制的描述内容,结合图3,介绍区块链系统的链外数据访问方法的具体实现过程。
请参阅图3,图3为本申请一实施例提供的一种区块链系统的链外数据访问方法的流程示意图。
如图3所示,本申请实施例的区块链系统的链外数据访问方法可以包括:
S201、智能合约的区块链节点在智能合约的执行过程中确定需要访问目标链外数据时,向区块链系统的链上传输第二请求,第二请求用于请求目标链外数据。
在一个智能合约的执行过程中,智能合约可能需要访问链外数据。此时,智能合约的区块链节点可向区块链系统的链上传输第二请求,使得预言机能够通过区块链系统的链上及时获取到第二请求。
其中,本申请实施例对第二请求的具体实现方式不做限定。例如,第二请求中携带有目标链外数据的标识。
S202、预言机在区块链系统的链上接收到第二请求后,向链外数据源发送第一请求。
由于预言机实时监测区块链系统的链上,因此,在智能合约的区块链节点向区块链系统的链上发送第二请求后,预言机可从区块链系统的链上接收到第二请求。预言机便可向链外数据源发送第一请求,使得链外数据源准备目标链外数据。
S203、链外数据源向预言机发送第一响应。
链外数据源在准备好链外数据和第一密钥信息后,便可向预言机发送第一响应。
S204、预言机在基于第二公钥验证第一签名信息成功后,调用数据收集合约,向智能合约的区块链节点发送目标链外数据中验证成功的数据,目标链外数据中验证成功的数据是数据收集合约基于第二公钥验证第一签名信息成功的数据。
由于第二公钥已传输在区块链系统的链上,且预言机可实时监测区块链系统的链上,因此,预言机可使用第二公钥,对第一签名信息进行验证,来确定目标链外数据的可信性。
从而,预言机可利用第二公钥,对第一签名信息进行验证。在第一签名信息验证成功后,预言机可向数据收集合约发送目标链外数据。
数据收集合约可利用第二公钥,对第一签名信息进行验证,来判断预言机是否有恶意,有效预防了预言机出现撒谎的情况。从而,数据收集合约将目标链外数据中验证成功的数据发送给智能合约。
S205、智能合约的区块链节点访问目标链外数据。
智能合约在接收到目标链外数据中验证成功的数据后,便可访问目标链外数据中验证成功的数据,实现相应的合约逻辑。
需要说明的是,步骤S201-S205的具体实现过程可参见链外数据源验证机制的描述。
本申请实施例中,链外数据源获取链外数据源的认证密钥的方式包括多种。例如,群主节点可在区块链系统执行链外数据访问方法之前,向链外数据源发送链外数据源的认证密钥。又如,群主节点可将链外数据源的认证密钥携带在第一请求中,发送给链外数据源。
下面,结合图4,介绍群主节点向链外数据源发送链外数据源的认证密钥的具体实现过程。
请参阅图4,图4为本申请一实施例提供的一种区块链系统的链外数据访问方法的流程示意图。
如图4所示,本申请实施例的区块链系统的链外数据访问方法可以包括:
S301、链外数据源向预言机发送第三请求。
链外数据源在需要请求加入区块链系统时,可向预言机发送第三请求。其中,第三请求中携带有链外数据源的标识、加密信息以及第二签名信息,加密信息是链外数据源使用第一公钥对随机数进行加密生成的,第二签名信息是链外数据源使用链外数据源的私钥对加密信息进行签名的结果,链外数据源的私钥与链外数据源的公钥为一对密钥对。
S302、预言机在基于第三请求,确定链外数据源为可信数据源后,向区块链系统的链上传输第四请求,且调用数据接入合约,向群主节点发送第五请求,第五请求用于请求群主节点向链外数据源提供链外数据源的认证密钥。
预言机在接收到第三请求后,可确定链外数据源是否为可信数据源。在确定链外数据源为可信数据源后,预言机可向区块链系统的链上传输第四请求,且调用数据接入合约,向群主节点发送第五请求。
其中,第四请求中携带有链外数据源的标识、加密信息以及第二签名信息。
S303、群主节点响应于接收第五请求,从区块链系统的链上获取第四请求。
S304、群主节点在基于第四请求,确定链外数据源为可信数据源后,使用第一私钥对加密信息进行解密,得到随机数;基于第二私钥、第二公钥以及随机数生成链外数据源的认证密钥;基于使用链外数据源的公钥对链外数据源的认证密钥进行加密,得到链外数据源的密文信息。
S305、群主节点向区块链系统的链上传输链外数据源的密文信息,且向预言机发送第五响应,第五响应用于向预言机通知链外数据源成功接入区块链系统的链上。
S306、预言机响应于接收第五响应,从区块链系统的链上获取链外数据源的密文信息。
S307、预言机向链外数据源发送链外数据源的密文信息。
S308、链外数据源使用链外数据源的私钥对链外数据源的密文信息进行解密,得到链外数据源的认证密钥。
需要说明的是,步骤S301-S307的具体实现过程可参见链外数据源接入机制的描述。
下面,结合图5,介绍S302中预言机可基于第三请求,确定链外数据源为可信数据源的一种可行的实现方式。
请参阅图5,图5为本申请一实施例提供的一种区块链系统的链外数据访问方法的流程示意图。
如图5所示,本申请实施例的区块链系统的链外数据访问方法可以包括:
S401、预言机基于链外数据源的标识,从区块链系统的链上获取链外数据源的公钥。
S402、预言机基于链外数据源的公钥,判断第二签名信息的合法性是否验证通过。
在第二签名信息的合法性验证通过后,预言机执行步骤S403-S405;在第二签名信息的合法性验证失败后,预言机执行步骤S407。
S403、预言机在第二签名信息的合法性验证通过后,向链外数据源发起第六请求。
S404、预言机从链外数据源接收链外数据源的身份可信性证明信息,链外数据源的身份可信性证明信息是链外数据源响应于接收第六请求发送的。
S405、预言机判断链外数据源的身份可信性证明信息审核是否通过。
在链外数据源的身份可信性证明信息审核通过后,预言机执行步骤S406;在链外数据源的身份可信性证明信息审核未通过后,预言机执行步骤S407。
S406、预言机确定链外数据源为可信数据源。
S407、预言机向链外数据源发送第一通知,第一通知用于表示拒绝链外数据源接入区块链系统的链上。
需要说明的是,步骤S401-S407的具体实现过程可参见链外数据源接入机制中的预言机收到注册请求RegisterRequest后,验证注册请求RegisterRequest的有效性的验证步骤。
下面,结合图6,介绍S405中群主节点基于第三请求,确定链外数据源为可信数据源的一种可行的实现方式。
请参阅图6,图6为本申请一实施例提供的一种区块链系统的链外数据访问方法的流程示意图。
如图6所示,本申请实施例的区块链系统的链外数据访问方法可以包括:
S501、群主节点使用链外数据源的公钥对第二签名信息的有效性进行验证。
S502、群主节点在第二签名信息的有效性验证成功后,确定链外数据源为可信数据源。
S503、群主节点在第二签名信息的有效性验证失败后,向预言机发送第二通知,第二通知用于表示拒绝链外数据源接入区块链系统的链上。
需要说明的是,步骤S501-S503的具体实现过程可参见链外数据源接入机制中的群主节点收到注册请求RegisterRequest后,验证注册请求RegisterRequest的有效性的验证步骤。
由于多个区块链节点中除了群主节点之外的区块链节点无法确定链外数据源的身份信息。因此,在链外数据为恶意数据时,区块链节点需要借助群主节点来确定链外数据源的身份信息,防止链外数据源对区块链系统所带来的安全隐患。
下面,结合图7,介绍群主节点认证链外数据源发送链外数据的具体实现过程。
请参阅图7,图7为本申请一实施例提供的一种区块链系统的链外数据访问方法的流程示意图。
如图7所示,本申请实施例的区块链系统的链外数据访问方法可以包括:
S601、智能合约的区块链节点在确定访问的目标链外数据不符合预设条件时,向群主节点发送第七请求。
智能合约的区块链节点在发现访问的目标链外数据如出现不可能的数据或者超过预设值等预设条件时,可向群主节点发送第七请求。其中,第七请求用于请求群主节点对目标链外数据进行审计,第七请求中携带有目标链外数据、目标链外数据的第三签名信息以及目标链外数据的不可信证明信息。
S602、群主节点响应于接收第七请求,对目标链外数据的不可信证明信息的有效性进行验证。
S603、群主节点在目标链外数据的不可信证明信息无效后,向智能合约发送第七响应,第七响应用于表示拒绝对目标链外数据进行审计。
S604、群主节点在目标链外数据的不可信证明信息有效,且基于第二公钥验证第三签名信息成功后,基于第三签名信息,使用第二私钥确定出目标链外数据对应的链外数据源的标识;确定链外数据源的认证密钥无效。
需要说明的是,步骤S601-S604的具体实现过程可参见链外数据审计机制的描述。
示例性地,本申请实施例提供一种区块链系统。本申请实施例的区块链系统可设置在服务器中,可实现上述链外数据访问方法实施例对应于区块链系统的操作。
该系统可以包括:区块链系统,用于向链外数据源发送第一请求,第一请求用于请求区块链系统需要访问的目标链外数据;区块链系统,用于从链外数据源接收第一响应,第一响应中携带有目标链外数据和第一签名信息,第一签名信息是链外数据源使用链外数据源的认证密钥,对目标链外数据生成的群签名,链外数据源的认证密钥是区块链系统中的一个群主节点基于群主节点的第一私钥、群主节点的第一公钥、群主节点的第二私钥、群主节点的第二公钥以及链外数据源提供的随机数得到的,群主节点为区块链系统中多个区块链节点中的一个可信的区块链节点,第一公钥与第一私钥为一对密钥对,第二公钥与第二私钥为一对密钥对;区块链系统,用于在第一签名信息验证成功后,访问目标链外数据。
在一些实施例中,该系统包括:预言机和智能合约的区块链节点,智能合约的区块链节点为群主节点所属的多个区块链节点中的一个。
智能合约的区块链节点,用于在智能合约的执行过程中确定需要访问目标链外数据时,向区块链系统的链上传输第二请求,第二请求用于请求目标链外数据;
预言机,用于在区块链系统的链上接收到第二请求后,向链外数据源发送第一请求;
预言机,用于从链外数据源接收第一响应;
预言机,用于在基于第二公钥验证第一签名信息成功后,调用数据收集合约,向智能合约的区块链节点发送目标链外数据中验证成功的数据,目标链外数据中验证成功的数据是数据收集合约基于第二公钥验证第一签名信息成功的数据;
智能合约的区块链节点,用于访问目标链外数据中验证成功的数据。
在一些实施例中,群主节点,还用于向链外数据源发送链外数据源的认证密钥。
在一些实施例中,预言机,具体用于从链外数据源接收第三请求,第三请求中携带有链外数据源的标识、加密信息以及第二签名信息,加密信息是链外数据源使用第一公钥对随机数进行加密生成的,第二签名信息是链外数据源使用链外数据源的私钥对加密信息进行签名的结果,链外数据源的私钥与链外数据源的公钥为一对密钥对;
预言机,具体用于在基于第三请求,确定链外数据源为可信数据源后,向区块链系统的链上传输第四请求,第四请求中携带有链外数据源的标识、加密信息以及第二签名信息,且调用数据接入合约,向群主节点发送第五请求,第五请求用于请求群主节点向链外数据源提供链外数据源的认证密钥;
群主节点,具体用于响应于接收第五请求,从区块链系统的链上获取第四请求;
群主节点,具体用于在基于第四请求,确定链外数据源为可信数据源后,使用第一私钥对加密信息进行解密,得到随机数;基于第二私钥、第二公钥以及随机数生成链外数据源的认证密钥;基于使用链外数据源的公钥对链外数据源的认证密钥进行加密,得到链外数据源的密文信息;
群主节点,具体用于向区块链系统的链上传输链外数据源的密文信息,且向预言机发送第五响应,第五响应用于向预言机通知链外数据源成功接入区块链系统的链上;
预言机,具体用于响应于接收第五响应,从区块链系统的链上获取链外数据源的密文信息;
预言机,具体用于向链外数据源发送链外数据源的密文信息,以使链外数据源使用链外数据源的私钥对链外数据源的密文信息进行解密,得到链外数据源的认证密钥。
在一些实施例中,预言机,具体用于基于链外数据源的标识,从区块链系统的链上获取链外数据源的公钥;
预言机,具体用于在基于链外数据源的公钥,确定第二签名信息的合法性验证通过后,向链外数据源发起第六请求;
预言机,具体用于从链外数据源接收链外数据源的身份可信性证明信息,链外数据源的身份可信性证明信息是链外数据源响应于接收第六请求发送的;
预言机,具体用于在链外数据源的身份可信性证明信息审核通过后,确定链外数据源为可信数据源。
在一些实施例中,预言机,还用于在第二签名信息的合法性验证失败或者链外数据源的身份可信性证明信息审核未通过后,向链外数据源发送第一通知,第一通知用于表示拒绝链外数据源接入区块链系统的链上。
在一些实施例中,群主节点,具体用于使用链外数据源的公钥对第二签名信息的有效性进行验证;群主节点,具体用于在第二签名信息的有效性验证成功后,确定链外数据源为可信数据源。
在一些实施例中,群主节点,还用于在第二签名信息的有效性验证失败后,向预言机发送第二通知,第二通知用于表示拒绝链外数据源接入区块链系统的链上。
在一些实施例中,智能合约的区块链节点,还用于在确定访问的目标链外数据不符合预设条件时,向群主节点发送第七请求,第七请求用于请求群主节点对目标链外数据进行审计,第七请求中携带有目标链外数据、目标链外数据的第三签名信息以及目标链外数据的不可信证明信息;
群主节点,还用于响应于接收第七请求,对目标链外数据的不可信证明信息的有效性进行验证;
群主节点,还用于在目标链外数据的不可信证明信息无效后,向智能合约发送第七响应,第七响应用于表示拒绝对目标链外数据进行审计;
群主节点,还用于在目标链外数据的不可信证明信息有效,且基于第二公钥验证第三签名信息成功后,基于第三签名信息,使用第二私钥确定出目标链外数据对应的链外数据源的标识;确定链外数据源的认证密钥无效。
本申请实施例中可以根据上述方法示例对区块链系统进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请各实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
本申请实施例的区块链系统,可以用于执行前文提及的数据生命周期管理方法中第一设备的技术方案,其实现原理和技术效果类似,其中各个模块的实现的操作可以进一步参考方法实施例的相关描述,此处不再赘述。
示例性地,本申请实施例还提供一种电子设备,包括:存储器和处理器;存储器用于存储程序指令;处理器用于调用存储器中的程序指令使得电子设备执行前文实施例中的区块链系统的链外数据访问方法。
示例性地,本申请实施例还提供一种计算机存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行前文实施例中的区块链系统的链外数据访问方法。
示例性地,本申请实施例还提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行前文实施例中的区块链系统的链外数据访问方法。
示例性地,本申请实施例提供一种芯片系统,芯片系统包括:处理器;当处理器执行存储器中存储的计算机指令时,电子设备执行前文实施例中的区块链系统的链外数据访问方法。
在上述实施例中,全部或部分功能可以通过软件、硬件、或者软件加硬件的组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
Claims (12)
1.一种区块链系统的链外数据访问方法,其特征在于,所述方法包括:
所述区块链系统向链外数据源发送第一请求,所述第一请求用于请求所述区块链系统需要访问的目标链外数据;
所述区块链系统从所述链外数据源接收第一响应,所述第一响应中携带有所述目标链外数据和第一签名信息,所述第一签名信息是所述链外数据源使用所述链外数据源的认证密钥,对所述目标链外数据生成的群签名,所述链外数据源的认证密钥是所述区块链系统中的一个群主节点基于所述群主节点的第一私钥、所述群主节点的第一公钥、所述群主节点的第二私钥、所述群主节点的第二公钥以及所述链外数据源提供的随机数得到的,所述群主节点为所述区块链系统中多个区块链节点中的一个可信的区块链节点,所述第一公钥与所述第一私钥为一对密钥对,所述第二公钥与所述第二私钥为一对密钥对;
所述区块链系统在所述第一签名信息验证成功后,访问所述目标链外数据。
2.根据权利要求1所述的方法,其特征在于,所述区块链系统包括:预言机和智能合约的区块链节点,所述智能合约的区块链节点为所述群主节点所属的多个区块链节点中的一个;
所述方法具体包括:
所述智能合约的区块链节点在所述智能合约的执行过程中确定需要访问所述目标链外数据时,向所述区块链系统的链上传输第二请求,所述第二请求用于请求所述目标链外数据;
所述预言机在所述区块链系统的链上接收到所述第二请求后,向所述链外数据源发送所述第一请求;
所述预言机从所述链外数据源接收所述第一响应;
所述预言机在基于所述第二公钥验证所述第一签名信息成功后,调用数据收集合约,向所述智能合约的区块链节点发送所述目标链外数据中验证成功的数据,所述目标链外数据中验证成功的数据是所述数据收集合约基于所述第二公钥验证所述第一签名信息成功的数据;
所述智能合约的区块链节点访问所述目标链外数据中验证成功的数据。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述群主节点向所述链外数据源发送所述链外数据源的认证密钥。
4.根据权利要求3所述的方法,其特征在于,所述群主节点向所述链外数据源发送所述链外数据源的认证密钥,包括:
所述预言机从所述链外数据源接收第三请求,所述第三请求中携带有所述链外数据源的标识、加密信息以及第二签名信息,所述加密信息是所述链外数据源使用所述第一公钥对随机数进行加密生成的,所述第二签名信息是所述链外数据源使用所述链外数据源的私钥对所述加密信息进行签名的结果,所述链外数据源的私钥与所述链外数据源的公钥为一对密钥对;
所述预言机在基于所述第三请求,确定所述链外数据源为可信数据源后,向所述区块链系统的链上传输第四请求,所述第四请求中携带有所述链外数据源的标识、所述加密信息以及所述第二签名信息,且调用所述数据接入合约,向所述群主节点发送第五请求,所述第五请求用于请求所述群主节点向所述链外数据源提供所述链外数据源的认证密钥;
所述群主节点响应于接收所述第五请求,从所述区块链系统的链上获取所述第四请求;
所述群主节点在基于所述第四请求,确定所述链外数据源为可信数据源后,使用所述第一私钥对所述加密信息进行解密,得到所述随机数;基于所述第二私钥、所述第二公钥以及所述随机数生成所述链外数据源的认证密钥;基于使用所述链外数据源的公钥对所述链外数据源的认证密钥进行加密,得到所述链外数据源的密文信息;
所述群主节点向所述区块链系统的链上传输所述链外数据源的密文信息,且向所述预言机发送第五响应,所述第五响应用于向所述预言机通知所述链外数据源成功接入所述区块链系统的链上;
所述预言机响应于接收所述第五响应,从所述区块链系统的链上获取所述链外数据源的密文信息;
所述预言机向所述链外数据源发送所述链外数据源的密文信息,以使所述链外数据源使用所述链外数据源的私钥对所述链外数据源的密文信息进行解密,得到所述链外数据源的认证密钥。
5.根据权利要求4所述的方法,其特征在于,所述预言机基于所述第三请求,确定所述链外数据源为可信数据源,包括:
所述预言机基于链外数据源的标识,从所述区块链系统的链上获取所述链外数据源的公钥;
所述预言机在基于所述链外数据源的公钥,确定所述第二签名信息的合法性验证通过后,向所述链外数据源发起第六请求;
所述预言机从所述链外数据源接收所述链外数据源的身份可信性证明信息,所述链外数据源的身份可信性证明信息是所述链外数据源响应于接收所述第六请求发送的;
所述预言机在所述链外数据源的身份可信性证明信息审核通过后,确定所述链外数据源为可信数据源。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
所述预言机在所述第二签名信息的合法性验证失败或者所述链外数据源的身份可信性证明信息审核未通过后,向所述链外数据源发送第一通知,所述第一通知用于表示拒绝所述链外数据源接入所述区块链系统的链上。
7.根据权利要求4所述的方法,其特征在于,所述群主节点基于所述第三请求,确定所述链外数据源为可信数据源,包括:
所述群主节点使用所述链外数据源的公钥对所述第二签名信息的有效性进行验证;
所述群主节点在所述第二签名信息的有效性验证成功后,确定所述链外数据源为可信数据源。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述群主节点在所述第二签名信息的有效性验证失败后,向所述预言机发送第二通知,所述第二通知用于表示拒绝所述链外数据源接入所述区块链系统的链上。
9.根据权利要求2-8任一项所述的方法,其特征在于,所述方法还包括:
所述智能合约的区块链节点在确定访问的所述目标链外数据不符合预设条件时,向所述群主节点发送第七请求,所述第七请求用于请求所述群主节点对所述目标链外数据进行审计,所述第七请求中携带有所述目标链外数据、所述目标链外数据的第三签名信息以及所述目标链外数据的不可信证明信息;
所述群主节点响应于接收所述第七请求,对所述目标链外数据的不可信证明信息的有效性进行验证;
所述群主节点在目标链外数据的不可信证明信息无效后,向所述智能合约发送第七响应,所述第七响应用于表示拒绝对所述目标链外数据进行审计;
所述群主节点在目标链外数据的不可信证明信息有效,且基于所述第二公钥验证所述第三签名信息成功后,基于所述第三签名信息,使用所述第二私钥确定出所述目标链外数据对应的所述链外数据源的标识;确定所述链外数据源的认证密钥无效。
10.一种区块链系统,其特征在于,所述系统包括:
区块链系统,用于向链外数据源发送第一请求,所述第一请求用于请求所述区块链系统需要访问的目标链外数据;
区块链系统,用于从所述链外数据源接收第一响应,所述第一响应中携带有所述目标链外数据和第一签名信息,所述第一签名信息是所述链外数据源使用所述链外数据源的认证密钥,对所述目标链外数据生成的群签名,所述链外数据源的认证密钥是所述区块链系统中的一个群主节点基于所述群主节点的第一私钥、所述群主节点的第一公钥、所述群主节点的第二私钥、所述群主节点的第二公钥以及所述链外数据源提供的随机数得到的,所述群主节点为所述区块链系统中多个区块链节点中的一个可信的区块链节点,所述第一公钥与所述第一私钥为一对密钥对,所述第二公钥与所述第二私钥为一对密钥对;
区块链系统,用于在所述第一签名信息验证成功后,访问所述目标链外数据。
11.一种电子设备,其特征在于,包括:存储器和处理器;
所述存储器用于存储程序指令;
所述处理器用于调用所述存储器中的程序指令,使得所述电子设备执行权利要求1-9任一项所述的区块链系统的链外数据访问方法。
12.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-9任一项所述的区块链系统的链外数据访问方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011639498.8A CN112651037B (zh) | 2020-12-31 | 2020-12-31 | 区块链系统的链外数据访问方法和系统 |
PCT/CN2021/130769 WO2022142790A1 (zh) | 2020-12-31 | 2021-11-15 | 区块链系统的链外数据访问方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011639498.8A CN112651037B (zh) | 2020-12-31 | 2020-12-31 | 区块链系统的链外数据访问方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112651037A CN112651037A (zh) | 2021-04-13 |
CN112651037B true CN112651037B (zh) | 2024-01-16 |
Family
ID=75366952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011639498.8A Active CN112651037B (zh) | 2020-12-31 | 2020-12-31 | 区块链系统的链外数据访问方法和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112651037B (zh) |
WO (1) | WO2022142790A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112651037B (zh) * | 2020-12-31 | 2024-01-16 | 深圳前海微众银行股份有限公司 | 区块链系统的链外数据访问方法和系统 |
CN113689296B (zh) * | 2021-08-30 | 2023-11-17 | 北京泛融科技有限公司 | 一种异步可信计算的合约调度方法、装置和电子设备 |
CN113676498B (zh) * | 2021-10-25 | 2022-02-11 | 江苏荣泽信息科技股份有限公司 | 基于分布式网络技术存取第三方信息的预言机管理系统 |
CN114362968B (zh) * | 2022-03-15 | 2022-06-17 | 北京百度网讯科技有限公司 | 区块链获取随机数的方法、装置、设备和介质 |
CN114327802B (zh) * | 2022-03-15 | 2022-06-17 | 北京百度网讯科技有限公司 | 区块链访问链外数据的方法、装置、设备和介质 |
CN115208630B (zh) * | 2022-06-15 | 2024-04-09 | 网易(杭州)网络有限公司 | 基于区块链的数据获取方法、系统及区块链系统 |
CN114969724B (zh) * | 2022-07-28 | 2022-11-04 | 山东省计算中心(国家超级计算济南中心) | 一种外部数据源数据可信上链方法及系统 |
CN115065563B (zh) * | 2022-08-17 | 2022-11-04 | 中航信移动科技有限公司 | 一种基于区块链预言机的民航数据处理系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108064440A (zh) * | 2017-05-25 | 2018-05-22 | 深圳前海达闼云端智能科技有限公司 | 基于区块链的fido认证方法、装置及系统 |
CN111737724A (zh) * | 2020-08-26 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、智能设备及存储介质 |
CN112084234A (zh) * | 2020-09-03 | 2020-12-15 | 中国银联股份有限公司 | 数据获取方法、装置、设备和介质 |
CN112149184A (zh) * | 2020-11-25 | 2020-12-29 | 南京可信区块链与算法经济研究院有限公司 | 一种基于限时访问的区块链链外存储系统及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10355869B2 (en) * | 2017-01-12 | 2019-07-16 | International Business Machines Corporation | Private blockchain transaction management and termination |
CN112651037B (zh) * | 2020-12-31 | 2024-01-16 | 深圳前海微众银行股份有限公司 | 区块链系统的链外数据访问方法和系统 |
-
2020
- 2020-12-31 CN CN202011639498.8A patent/CN112651037B/zh active Active
-
2021
- 2021-11-15 WO PCT/CN2021/130769 patent/WO2022142790A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108064440A (zh) * | 2017-05-25 | 2018-05-22 | 深圳前海达闼云端智能科技有限公司 | 基于区块链的fido认证方法、装置及系统 |
CN111737724A (zh) * | 2020-08-26 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、智能设备及存储介质 |
CN112084234A (zh) * | 2020-09-03 | 2020-12-15 | 中国银联股份有限公司 | 数据获取方法、装置、设备和介质 |
CN112149184A (zh) * | 2020-11-25 | 2020-12-29 | 南京可信区块链与算法经济研究院有限公司 | 一种基于限时访问的区块链链外存储系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112651037A (zh) | 2021-04-13 |
WO2022142790A1 (zh) | 2022-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112651037B (zh) | 区块链系统的链外数据访问方法和系统 | |
CN111010410B (zh) | 一种基于证书身份认证的拟态防御系统及证书签发方法 | |
CN110336774B (zh) | 混合加密解密方法、设备及系统 | |
CN113923044B (zh) | 一种基于可信执行环境的跨链系统及方法 | |
EP4318286A1 (en) | Secure multi-party computation | |
KR102469979B1 (ko) | 제1 애플리케이션과 제2 애플리케이션 사이의 상호 대칭 인증을 위한 방법 | |
CN105873031B (zh) | 基于可信平台的分布式无人机密钥协商方法 | |
US7516326B2 (en) | Authentication system and method | |
US20140281500A1 (en) | Systems, methods and apparatuses for remote attestation | |
CN107396350B (zh) | 基于sdn-5g网络架构的sdn组件间安全保护方法 | |
WO2022062517A1 (en) | Authentication method and system | |
US20070179907A1 (en) | Security bootstrapping for distributed architecture devices | |
CN113259123B (zh) | 一种区块链数据写入、访问方法及装置 | |
CN109361508A (zh) | 数据传输方法、电子设备及计算机可读存储介质 | |
CN114139203B (zh) | 基于区块链的异构身份联盟风险评估系统、方法及终端 | |
CN113098697B (zh) | 一种区块链数据写入、访问方法及装置 | |
CN112311718A (zh) | 检测硬件的方法、装置、设备及存储介质 | |
Vanderhallen et al. | Robust authentication for automotive control networks through covert channels | |
CN114338091B (zh) | 数据传输方法、装置、电子设备及存储介质 | |
CN115913677A (zh) | 一种基于区块链的协作边缘存储数据隐私保护系统及方法 | |
CN113196703A (zh) | 保护计算机网络免受中间人攻击的系统和方法 | |
WO2022021256A1 (zh) | 一种关联控制方法及相关装置 | |
CN115348023A (zh) | 一种数据安全处理方法和装置 | |
US11570008B2 (en) | Pseudonym credential configuration method and apparatus | |
CN113259124A (zh) | 一种区块链数据写入、访问方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |