WO2023015840A1 - 链结构处理、交易数据处理、数据验证方法、装置和介质 - Google Patents

链结构处理、交易数据处理、数据验证方法、装置和介质 Download PDF

Info

Publication number
WO2023015840A1
WO2023015840A1 PCT/CN2022/070739 CN2022070739W WO2023015840A1 WO 2023015840 A1 WO2023015840 A1 WO 2023015840A1 CN 2022070739 W CN2022070739 W CN 2022070739W WO 2023015840 A1 WO2023015840 A1 WO 2023015840A1
Authority
WO
WIPO (PCT)
Prior art keywords
chain
transaction
data
commitment
permission
Prior art date
Application number
PCT/CN2022/070739
Other languages
English (en)
French (fr)
Inventor
郑杰骞
Original Assignee
郑杰骞
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 郑杰骞 filed Critical 郑杰骞
Publication of WO2023015840A1 publication Critical patent/WO2023015840A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/10Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification

Landscapes

  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Theoretical Computer Science (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Technology Law (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

提供了一种链结构处理、交易数据处理、数据验证方法、装置和介质,链式结构为许可链,许可链包括UTXO模型的交易数据和余额模型的交易数据,链式结构的处理方法包括:UTXO模型进行向余额模型的转入交易,和/或余额模型进行向UTXO模型的转出交易。交易数据处理方法包括:进行许可链的UTXO模型与余额模型的代币的流转,得到转入交易的数据和/或转出交易的数据;将多个属于同一联盟链的许可链的系统外验证数据合并为所述联盟链的账本数据,系统外验证数据包括以下一种或多种:转入交易的数据、转出交易的数据与UTXO模型的交易数据。

Description

链结构处理、交易数据处理、数据验证方法、装置和介质
本申请要求于2021年8月13日提交中国专利局、申请号为CN202110931943.6、发明名称为“链结构处理、交易数据处理、数据验证方法、装置和介质”的中国专利申请的优先权,其内容应理解为通过引用的方式并入本申请中。
技术领域
本公开实施例涉及但不限于计算机数据处理技术领域,尤指一种链式结构处理方法、交易数据处理方法、交易处理方法、数据验证方法、装置及计算机可读存储介质。
背景技术
为使多个独立的私有链系统形成联盟,能共同流转联盟所发行的代币(token),可以合并私有链UTXO(Unspent Transaction Outputs,未花费交易输出)模型的交易数据为联盟链账本。
发明概述
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本文提供一种链式结构的处理方法、交易数据处理方法、数据验证方法、存储介质和计算机装置。
一方面,本公开实施例提供一种链式结构的处理方法,所述链式结构为许可链,所述许可链包括UTXO模型的交易数据和余额模型的交易数据,所述处理方法包括:
所述UTXO模型进行向所述余额模型的转入交易,和/或
所述余额模型进行向所述UTXO模型的转出交易。
另一方面,本公开实施例还提供一种链式结构交易数据处理方法,所述链式结构为许可链,所述许可链包括UTXO模型的交易数据和余额模型的交易数据,所述交易数据处理方法包括:
采用前述任一种所述链式结构处理方法实现所述许可链的所述UTXO模型与所述余额模型的代币的流转,得到转入交易的数据和/或转出交易的数据;
将多个属于同一联盟链的许可链的系统外验证数据合并为所述联盟链的账本数据,其中,许可链的系统外验证数据包括以下一种或多种:所述转入交易的数据、转出交易的数据与所述UTXO模型的交易数据。
再一方面,本公开实施例还提供了一种链式结构交易处理方法,用于所述第一许可链和第二许可链的跨链交易,所述第一许可链使用第一算法,所述第二许可链使用第二算法,所述链式结构交易处理方法包括:
第一许可链与第二许可链跨链交易时,生成跨链输出的第一算法的第一佩德森承诺、第二算法的第二佩德森承诺,以及所述第一佩德森承诺和所述第二佩德森承诺所承诺的第二生成元系数所表示的第一数额相等的证明数据。
再一方面,本公开实施例还提供了一种链式结构数据验证方法,所述链式结构为许可链,所述许可链包括UTXO模型的交易数据和余额模型的交易数据,所述数据验证方法包括:
采用前述任一种所述链式结构处理方法实现所述许可链的所述UTXO模型与所述余额模型的代币的流转,得到转入交易的数据和/或转出交易的数据;
许可链外的验证者对所述转入交易的数据和/或所述UTXO模型的交易数据进行验证。
再一方面,本公开实施例还提供一种计算机可读存储介质,存储有程序指令,当该程序指令被执行时可实现前述链式结构的处理方法、链式结构交易数据处理方法或链式结构数据验证方法。
再一方面,本公开实施例还提供一种区块链机构,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述 程序时可实现前述链式结构的处理方法、链式结构交易数据处理方法或链式结构数据验证方法。
采用本公开实施例的链式结构处理方法,通过转入交易和转出交易,可以实现UTXO模型和余额模型之间的转账,保证UTXO模型中的token总数额与余额模型中的token总数额之和保持不变。采用本公开实施例的链式结构交易数据处理方法,可以实现许可链数据合并为联盟链账本数据。采用本公开实施例链式结构数据验证方法,保证代币在联盟链内的正确流转。采用本公开实施例链式结构交易处理方法,保证使用不同算法的许可链能够验证数额相等。
本公开的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本公开而了解。本公开的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
在阅读并理解了附图和详细描述后,可以明白其他方面。
附图概述
附图用来提供对本公开技术方案的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开的技术方案,并不构成对本公开技术方案的限制。
图1为本公开实施例链式结构数据处理方法的流程图;
图2为本公开实施例包含验证操作的数据处理方法的流程图;
图3为本公开实施例的数据验证方法的流程图;
图4为本公开实施例许可链区块体中的数据示意图;
图5为本公开实施例具有多种资产类型token的许可链区块中元数据的示例列表;
图6为本公开实施例许可链区块头数据上链联盟链的示意图;
图7为本公开实施例联盟链区块数据示意图;
图8为许可链系统外验证数据合并为逻辑总账本(联盟链)的示意图;
图9为本公开实施例计算机装置的结构示意图。
详述
本公开描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本公开所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在详述中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本公开包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本公开中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本公开实施例的精神和范围内。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
多个独立的私有链可以形成联盟,私有链的UTXO模型交易数据可以合并为联盟链账本,但是对于支持余额模型的私有链或不同算法的私有链,例如SM2国密算法与secp256k1等非国密算法,目前并没有解决方案。
为此本公开实施例提供一种针对许可链的处理方法。许可链是指参与到区块链系统中的每个节点都经过许可。没有经过许可的节点是不可以接入系统中。本文中,许可链包括私有链和联盟链,其中私有链是指机构的链,包括单一机构的链和多个机构共同参与的链(机构的联盟);联盟链是指多个成员链合并得到的联盟链(链的联盟)。本文中的私有链可以等同于许可链。
许可链可认为是属于一个主体的区块链,该主体可以包含一个机构或多个不同的成员机构,该许可链的记账是由成员机构共同完成的,共识记账的是该主体内的交易数据。每个许可链账本可对应一个主体,并不与其它主体共享账本,一个主体是一个账本的管理范围,也即一个主体管理一个账本,一个主体可以包含一个或多个成员机构。主体的许可链账本数据包含交易数据,主体内流转的token是由该主体自己发行和管理的,在无信任的情况下,某主体的token并不能在其它任一主体内自由流转。
本公开实施例提供了一种链式结构的处理方法,所述链式结构为许可链,所述许可链包括UTXO模型的交易数据和余额模型的交易数据,所述处理方法包括:
所述UTXO模型进行向所述余额模型的转入交易,和/或
所述余额模型进行向所述UTXO模型的转出交易。
当既有转入交易又有转出交易时,本实施例并不限制上述转入交易和转出交易的执行顺序。
通过上述转入交易和转出交易,可以实现UTXO模型和余额模型之间的转账,保证UTXO模型中的token总数额与余额模型中的token总数额之和保持不变。
在示例性实施例中,所述UTXO模型进行向余额模型的转入交易,包括:所述UTXO模型进行向所述余额模型的直接转入交易;或者所述UTXO模型进行向所述余额模型的间接转入交易;其中:所述直接转入交易的输入引 用所述UTXO交易的未花费输出,输出为余额模型的用户账户地址;所述间接转入交易包括第一中间交易和第一回执交易,所述第一中间交易的输入引用所述UTXO交易的未花费输出,所述第一回执交易的输出为余额模型的用户账户地址或合约账户地址。在转入过程中,间接交易场景下,只有回执交易完成,才完成实际转账。当引用多个中间交易时,所述回执交易也可称为混淆交易。回执交易输出的余额模型的用户账户地址或合约账户地址不能作为未花费输出,不能被引用花费。
在示例性实施例中,所述间接转入交易中的第一中间交易绑定一个或多个接收者的第一承诺,所述第一中间交易的输出为中间交易地址,所述第一回执交易的输入为一个或多个所述第一中间交易,所述第一回执交易的输出绑定第二承诺,所述第二承诺为所述第一承诺经过运算后得到的新的承诺,所述第二承诺经过第一运算生成的地址为所述余额模型的用户账户地址或合约账户地址。
在本公开实施例中,所述第一承诺可以为用户的公钥乘以第一系数,加上第一生成元乘以第二系数,再加上第二生成元乘以第三系数,其中第一系数例如可以为1,第二系数例如可以为0。通过对所述第一承诺运算得到第二承诺,第二承诺为用户的公钥乘以第四系数,加上第二生成元乘以第五系数,其中第四系数可以等于第一系数,第五系数可以为0。例如用户公钥P,第一生成元G,第二生成元H,第一中间交易绑定某接收者的第一承诺为v 1*P+v 3*H,第一回执交易输出绑定的第二承诺为C=v 4*P+v 5*H。例如,第二承诺可以采用以下方式运算得到:第一承诺乘以一个标量(可以是1,也即不变),再加上第二生成元乘以第六系数得到第二承诺。第二承诺经过第一运算得到输出的用户账户地址为Hash(C),也即v 4=1,v 5=0;或者得到输出的合约账户地址,其中合约账户地址通过用户账户地址和一个nonce值运算得到,所以合约账户地址为Hash(Hash(C-v 5*H)||v 5),也即v 4=1,v 5=nonce,其中Hash(C-v 5*H)是用户账户地址。用户账户地址和合约账户地址可以具有地址类型标识前缀。
在示例性实施例中,所述余额模型进行向所述UTXO模型的转出交易,包括:所述余额模型进行向所述UTXO模型的直接转出交易,或者所述余额 模型进行向所述UTXO模型的间接转出交易;其中:所述直接转出交易的输入为所述余额模型的用户账户地址或合约账户地址,输出为所述UTXO交易的用户一次地址;所述间接转出交易包括第二中间交易和第二回执交易,所述第二中间交易的输入引用余额模型的用户账户地址或合约账户地址,所述第二回执交易的输出为所述UTXO交易的用户一次地址。同样地,在转出过程中,间接交易场景下,只有回执交易完成,才完成实际转账。当引用多个中间交易时,所述回执交易也可称为混淆交易。回执交易输出的用户一次地址可以作为未花费输出,可以被引用花费。
在示例性实施例中,所述间接转出交易中的第二中间交易绑定一个或多个接收者的第三承诺,所述第二中间交易的输出为中间交易地址,所述第二回执交易的输入为一个或多个所述第二中间交易,所述第二回执交易的输出绑定第四承诺,所述第四承诺为所述第三承诺经过运算后得到的新的承诺,所述第四承诺经过第二运算生成的地址为UTXO交易的用户一次地址。
第三承诺可以与第一承诺相同,或者可以不同。相应地,所述第四承诺可以与前述第二承诺相同,或者可以不同。
在本公开实施例中,以第三承诺与第一承诺相同为例。所述第三承诺为用户的公钥乘以第一系数,加上第一生成元乘以第二系数,再加上第二生成元乘以第三系数,其中第一系数例如可以为1,第二系数例如可以为0。通过对所述第三承诺运算得到第四承诺,第四承诺为用户的公钥乘以第四系数,加上第一生成元乘以第五系数,其中第四系数可以等于第一系数,第五系数可以等于第二系数。例如用户公钥P,第一生成元G,第二生成元H,第二中间交易绑定某接收者的第三承诺为v 1*P+v 2*G+v 3*H,第二回执交易输出绑定的第四承诺为C=v 4*P+v 5*G。例如,第四承诺可以采用以下方式运算得到:第三承诺乘以一个标量(可以是1,也即不变),然后再加上第一生成元乘以第六系数和第二生成元乘以第七系数得到第四承诺。第四承诺经过第二运算得到输出的用户一次地址为Hash(C),所对应的公钥即为承诺C,私钥为v 4*d+v 5,其中d为用户私钥,也即P=d*G。通过不同的系数v 4和v 5即可得到不同的公私钥,也即用户一次密钥,所以输出为用户一次地址。用户一次地址可以具有地址类型标识前缀和/或系统标识前缀。
本公开实施例还提供了一种链式结构交易数据处理方法,所述链式结构为许可链,所述许可链包括UTXO模型的交易数据和余额模型的交易数据,所述数据处理方法如图1所示,包括:
步骤11,采用前述任一实施例的链式结构处理方法实现所述许可链的所述UTXO模型与所述余额模型的代币的流转,得到转入交易的数据和/或转出交易的数据;
如果执行UTXO模型向余额模型的转入交易,得到的数据为转入交易的数据,转入交易的数据包括输入、输出、数额等,可选地还可包括签名,例如包括:输入引用为UTXO模型的用户一次地址,或第一中间交易的地址,输出为余额模型的用户账户地址或合约账户地址,以及输出的转入数额的承诺;是否为转入交易通过输入地址(非余额模型)和输出地址(余额模型)进行判断。如果执行余额模型向UTXO模型的转出交易,得到的数据为转出交易的数据,转出交易的数据包括输入、输出等,例如包括:输入引用为余额模型的用户账户地址或合约账户地址,输出为UTXO模型的用户一次地址,或者是第二中间交易的中间交易地址,通过第二回执交易引用第二中间交易,输出UTXO模型的用户一次地址;是否为转出交易通过输入地址(余额模型)和输出地址(非余额模型)进行判断。
步骤12,将多个属于同一联盟链的许可链的系统外验证数据合并为所述联盟链的账本数据,其中,许可链的系统外验证数据包括以下一种或多种:所述转入交易的数据、转出交易的数据与所述UTXO模型的交易数据。
在本公开实施例中,多个主体可以参与形成一个大的联盟,也即多个主体的许可链账本可共同形成一个总账本,即主体的许可链账本合并可以得到联盟链的逻辑总账本。因为许可链限制了非主体节点的参与,所以主体之间(包括联盟的成员主体)并不共享账本,所以该总账本只能是逻辑的,即只是逻辑包含交易数据。多个主体共识记账的是许可链的区块(头)数据。本文中,该逻辑总账本本文称为联盟链,主体的许可链可称为私有链。可以看出这两个链在账本数据上的不同,许可链(私有链)包含交易数据,共识记账的是交易数据;而联盟链只是逻辑上的,并不包含交易数据(可认为是逻辑包含或映射),共识记账的是许可链的区块(头)数据。所以许可链可以 很大,包含很多的交易数据,而联盟链反而很小,但可以逻辑包含多个大规模的许可链账本。
在示例性实施例中,步骤12中所述将多个属于同一联盟链的许可链的系统外验证数据合并为所述联盟链的账本数据,包括:所述多个许可链的区块头数据共识后生成所述联盟链的第一层账本数据,所述许可链的区块头数据对应的系统外验证数据作为所述联盟链的第二层账本数据,本质为将多个许可链的TXO(Transaction Output,交易输出)交易数据链合并为联盟链的TXO交易数据链。
在本公开实施例中为实现该逻辑总账本(联盟链),通过多个主体的许可链账本的交易数据的合并可以形成一个总账本,并且通过交易数据(集)的指纹信息进行共识记账,也即无交易数据(集),仅通过其指纹信息和附加信息(例如限制区块位置的区块头哈希值)进行共识记账,生成正确的逻辑账本。所以可将多个主体的无共享许可链账本的区块数据,将对应的区块头数据(包含区块的指纹信息)共识合并为联盟链的逻辑总账本。上述合并和共识记账都是建立在UTXO模型的交易基础上,所以逻辑总账本映射的是UTXO模型的交易数据。
形成逻辑总账本,可以形成总账本的token(或称为联盟token),该token并不能由任一主体自己发行和管理,由联盟成员主体共同发行和管理(或由一信任主体发行,其它主体流通)。所以比单一主体发行的token具有更高的可信度和更大的流通范围,可在联盟成员主体的许可链账本之间自由流转。并且从本文可知逻辑总账本就是该联盟token的账本,反应了联盟token的流转过程,合并的也是联盟token的流转过程。从而实现多个无共享账本的联盟成员主体之间自由流通联盟的token,并且一个主体的许可链可以同时参与多个不同的联盟,流转多个联盟的token,且合并为多个不同的联盟链。
本文中的一个机构参与的私有链可以使用多个机构参与的许可链替代,参与许可链的多个机构可以认为是一个主体,也即下文中的一个机构的私有链账本可以使用一个主体的许可链账本替代,相关的机构ID亦为主体ID或链ID。也可以认为一个主体对应一个区块链账本,主体可以包含一个机构或多个机构,区块链账本可以是私有链或许可链。所以下文中的一个机构的私 有链账本可以替换为一个主体的许可链账本。
本公开实施例中的联盟链是指成员链的联盟,与机构的联盟不同,本实施例中所述联盟链的账本数据具有两层结构,第一层是多个成员链(例如许可链)的区块头数据,是多个成员链合并为联盟链的结果,第二层是每个成员链对应的系统外验证数据。而机构的联盟链只有一层结构,并不含有其它链的区块头数据作为单独的一层数据,例如比特币或以太坊等区块数据结构。可见,机构的联盟与链的联盟的差别可以体现在链的区块数据结构上不相同。本公开实施例中许可链是具有一层结构的区块链。
本公开实施例中,所述许可链参与交易时使用的地址包含链的唯一标识,,以使不同许可链的交易数据链逻辑隔离。
通过采用上述方法交易数据处理方法,使多个许可链合并为联盟链成为可能。
在示例性实施例中,所述方法还可包括:由验证者对所述许可链区块的系统外验证数据进行验证,例如可包括以下验证中的任意一个:
验证一:验证UTXO模型的交易数据和/或转入交易的数据的输入引用的是否为联盟链上未花费输出;
即验证UTXO模型的交易数据的输入引用的是否为联盟链上未花费输出,和/或转入交易的数据的输入引用的是否为联盟链上未花费输出。
验证二:验证所述许可链的非跨链的UTXO模型的交易数据和/或转入交易的数据的输入引用的是否是所述许可链的前向未花费输出。
即验证所述许可链的UTXO模型的交易数据的输入引用非跨链交易地址的未花费输出是否是所述许可链的前向未花费输出,和/或转入交易的数据的输入引用非跨链交易地址的未花费输出是否是所述许可链的前向未花费输出。
本实施例中由验证者对所述许可链区块的系统外验证数据进行的验证不限于在何时进行,即可以在任意时间段进行。通过验证保证输入引用的正确性,避免交易错误。
在示例性实施例中,在所述将多个属于同一联盟链的许可链的系统外验 证数据合并为所述联盟链的账本数据之前,如图2所示,所述方法还可包括以下步骤13和步骤14:
步骤13,所述联盟链的验证者对待上链的许可链区块的系统外验证数据进行验证,包括以下验证中的任一种:
验证三:验证UTXO模型的交易数据和/或转入交易的数据的输入引用的是否为联盟链上未花费输出;
即验证UTXO模型的交易数据的输入引用的是否为联盟链上未花费输出,和/或转入交易的数据的输入引用的是否为联盟链上未花费输出。
验证四:验证所述许可链的非跨链的UTXO模型的交易数据和/或转入交易的数据的输入引用的是否是所述许可链的前向未花费输出;
即验证所述许可链的UTXO模型的交易数据的输入引用非跨链交易地址的未花费输出是否是所述许可链的前向未花费输出,和/或转入交易的数据的输入引用非跨链交易地址的未花费输出是否是所述许可链的前向未花费输出。并通过许可链区块头数据依次上链联盟链确保上链联盟链后的交易数据输入引用非跨链交易地址的未花费输出也是联盟链上前向的未花费输出。
本实施例中由联盟链的验证者执行的验证是在合并联盟链账本数据之前执行的,当验证通过后,再将多个属于同一联盟链的许可链的系统外验证数据合并为所述联盟链的账本数据,合并方式例如可以是合并许可链的区块头数据。在本实施例中,联盟链的验证者执行的验证是针对待上链的许可链区块的验证。
步骤14,验证通过后,在所述待上链的许可链区块头数据中添加用于表示限制联盟链区块高度的区块头散列值,所述限制联盟链区块高度至少为所述许可链区块中的跨许可链交易所引用的联盟链上的未花费输出所对应的最大区块高度;在示例性实施例中,该限制联盟链区块高度可以大于所述最大区块高度,例如:上一个许可链区块中包含用于表示限制联盟链区块高度的区块头散列值且该限制联盟链区块高度大于前述最大区块高度(两者中取较大值);
通过该限制联盟链区块高度限制上链联盟链的区块只能在该限制联盟链 区块高度的后面,保证跨链交易都引用的是联盟链上前向的未花费输出。并且添加的是对应高度的联盟链区块头散列值,所以联盟链即使在该高度之前分叉,也能判断没有相同散列值的前向区块头,因此许可链区块头不能共识上链联盟链;如果在该高度之后分叉,能判断具有相同散列值的前向区块头,所以许可链区块头能共识上链联盟链。
在示例性实施例中,所述在所述待上链的许可链区块头数据中添加用于表示限制联盟链区块高度的区块头散列值,可以采用以下方式:
当所述待上链的许可链区块中不包含跨许可链交易时,在所述许可链上向前递归到上一个包含跨许可链交易的许可链区块,在联盟链上找到指向所述许可链区块的许可链区块头,将所述许可链区块头中的用于表示限制联盟链区块高度的区块头散列值添加到当前待上链的许可链区块头数据中(显式限制高度方式);或者当所述待上链的许可链区块中不包含跨许可链交易,且在所述许可链上向前递归到包含跨许可链交易的许可链区块(即只要有许可链区块包含跨许可链交易),将第二预设值(例如为FF…FF)添加到当前待上链的许可链区块头数据中(隐式限制高度方式)。
在示例性实施方式中,当在所述许可链上向前递归到创始区块中仍不包含跨许可链交易,则将所述待上链的许可链区块头数据中的用于表示限制联盟链区块高度的区块头散列值设置为第一预设值(例如为零)。
步骤15,所述联盟链的验证者对添加了用于表示限制联盟链区块高度的区块头散列值的许可链区块头数据进行背书签名;
合并联盟链账本数据过程中,联盟链的记账者对经过多个联盟链验证者背书签名的许可链区块头数据进行共识生成联盟链的第一层账本数据,许可链区块头对应的系统外验证数据即组成所述联盟链的第二层账本数据。所以上链联盟链的许可链区块头数据都包含表示限制联盟链区块高度的区块头散列值。因为许可链区块中的跨许可链交易所引用的联盟链上的未花费输出所对应的最大区块高度是一定的,所以不同验证者添加的表示限制联盟链区块高度的区块头散列值是相同的。
联盟链的记账者需保证上链联盟链的许可链区块头对应的表示限制联盟链区块高度的区块头散列值等于某个前向的联盟链区块头散列值,如果散列 值为第一预设值或第二预设值则不限制上链联盟链的区块高度。许可链区块头如果包含第一预设值,可作为上链联盟链的第一个区块头数据,许可链上链联盟链的第一个区块头数据需包含第一预设值;许可链区块头如果包含第二预设值,表示许可链之前的区块中包含跨许可链交易,不能作为上链联盟链的第一个区块头数据,并结合依次上链联盟链的方式隐式限制上链联盟链的区块高度,包含第二预设值的许可链区块头必然是在显式限制上链联盟链的区块高度之后上链联盟链。
在示例性实施例中所述许可链区块头数据中包含所述许可链的唯一标识。通过在区块头中包含链的唯一标识,可以实现不同许可链的区块头数据隔离。
在示例性实施例中,所述许可链的系统外验证数据还可包括元数据,对于任意一种资产类型代币,所述元数据包括所述资产类型代币的UTXO模型向余额模型的累计转入数额承诺和累计转出数额承诺,以及所述累计转入数额承诺与所述累计转出数额承诺之差大于等于零的范围证明数据。每个许可链的区块中可以包含一个元数据。所述元数据用于验证多种资产token总数额的正确性。
当许可链支持多种资产类型代币时,每种资产类型代币分别计算,可以设置多个列表,分别记录每种资产类型代币的累计转入数额承诺、累计转出数额承诺和两者之差大于等于零的范围证明数据。
在示例性实施例中,当存在跨许可链交易或发行交易或回收交易时,对于任意一种资产类型代币,所述元数据还可包括:所述资产类型代币的跨许可链交易的累计输入数额承诺加累计发行数额承诺的第一结果,和跨许可链交易的累计输出数额承诺加累计回收数额承诺的第二结果,以及所述第一结果与第二结果之差大于等于零的范围证明数据。其中,所述第一结果与所述第二结果之差是所述许可链的所述资产类型代币当前总数额的数额承诺。
在其他实施例中,当存在跨许可链交易时,对于任意一种资产类型代币,所述元数据还可包括:所述许可链的所述资产类型代币当前总数额的数额承诺,以及所述数额承诺大于等于零的范围证明数据。其中,所述许可链的所述资产类型代币当前总数额的数额承诺为所述资产类型代币的跨许可链交易的累计输入数额承诺与累计发行数额承诺之和,与跨许可链交易的累计输出 数额承诺与累计回收数额承诺之和的差。
在示例性实施例中,所述大于等于零的范围证明,也即非负数的范围证明,等同于一定范围内的证明,例如[0,2^64),因为负数会大于此范围。
在示例性实施例中,所述方法还包括:所述许可链的系统外验证数据集合生成第一默克尔树,所述许可链的除系统外验证数据的其他数据集合生成第二默克尔树,所述第一默克尔树的树根散列值和所述第二默克尔树的树根散列值记录在所述许可链的区块头数据中。
在示例性实施例中,交易数据通过交易过程获得,所述方法还可包括以下交易过程:
第一许可链生成跨链输出交易数据,输出唯一的跨链交易地址;
第二许可链生成跨链输入交易数据,输入引用所述跨链交易地址;
其中:所述跨链交易地址包含表示当前地址为跨链交易地址的地址类型、第一许可链的唯一标识、第二许可链的唯一标识和第一许可链跨链的唯一数。
上述交易为跨链交易,第一许可链生成的跨链输出交易数据中,输入为所述第一许可链的未花费交易输出,输出为唯一的跨链交易地址,第二许可链生成的跨链输入交易数据,输入引用所述唯一的跨链交易地址,输出为第二许可链的用户的一次地址。跨链输出交易和跨链输入交易都是UTXO模型的交易数据,并通过唯一的跨链交易地址相连接。
在示例性实施例中,所述第一许可链生成跨链输出交易数据,包括:
第一许可链生成跨链输出的第一算法的第一佩德森承诺、第二算法的第二佩德森承诺,以及所述第一佩德森承诺和所述第二佩德森承诺所承诺的第二生成元系数所表示的第一数额v 1相等的证明数据,即用于证明第一佩德森承诺所承诺的第二生成元系数所表示的第一数额v 1和第二佩德森承诺所承诺的第二生成元系数所表示的第一数额v 1相等的证明数据。
第二许可链生成跨链输入交易,使用所述第二算法的所述第二佩德森承诺。
所述证明数据包括:所述第一许可链随机生成的所述第一算法的第三佩德森承诺、所述第二算法的第四佩德森承诺,以及第一标量、第二标量和第 三标量,其中所述第三佩德森承诺和所述第四佩德森承诺所承诺的第二生成元系数所表示的第二数额v 2相等;
所述第一标量为第一散列值乘以所述第一数额,加上第二散列值乘以所述第二数额;
所述第二标量为第一散列值乘以所述第一佩德森承诺的第一生成元系数,加上所述第二散列值乘以所述第三佩德森承诺的第一生成元系数;
所述第三标量为第一散列值乘以所述第二佩德森承诺的第一生成元系数,加上所述第二散列值乘以所述第四佩德森承诺的第一生成元系数;
第一散列值h 1由所述第一佩德森承诺、所述第二佩德森承诺、所述第三佩德森承诺、所述第四佩德森承诺以及所述第一算法的参数和所述第二算法的参数通过第一散列函数得到,第二散列值h 2由所述第一佩德森承诺、所述第二佩德森承诺、所述第三佩德森承诺、所述第四佩德森承诺以及所述第一算法的参数和所述第二算法的参数通过第二散列函数得到。h 1和h 2满足一定长度,如果长度不够可以扩展,例如取值为散列值的平方。
佩德森承诺表示为C=b*G+v*H,其中G为第一生成元,H为第二生成元,b是盲因子,v是所承诺的数额。
输出的承诺为:第一佩德森承诺C 1=b 1*G 1+v 1*H 1和第二佩德森承诺C 2=b 2*G 2+v 1*H 2。其中第一佩德森承诺使用第一算法,即使用生成元G 1和H 1,第二佩德森承诺使用第二算法,即使用生成元G 2和H 2
为证明不同算法中第一数额相等,即C1中的v1与C2中的v1相等,需要以下证明数据:随机生成的承诺以及相关标量。例如:
随机生成的承诺包括:第三佩德森承诺C 3=b 3*G 1+v 2*H 1和第四佩德森承诺C 4=b 4*G 2+v 2*H 2。其中第三佩德森承诺使用第一算法,即使用生成元G 1和H 1,第四佩德森承诺使用第二算法,即使用生成元G 2和H 2,在示例性实施例中,第二数额v 2的范围可以大于第一数额v 1的范围,例如大于2^64。
得到第一散列值h 1=Hash 1(C 1||C 2||C 3||C 4||G 1||H 1||G 2||H 2)和第二散列值h 2=Hash 2(C 1||C 2||C 3||C 4||G 1||H 1||G 2||H 2)
计算证明的标量包括:第一标量m 1=h 1*v 1+h 2*v 2
第二标量m 2=h 1*b 1+h 2*b 3
第三标量m 3=h 1*b 2+h 2*b 4
通过证明m 2*G 1+m 1*H 1等于h 1*C 1+h 2*C 3并且
m 3*G 2+m 1*H 2等于h 1*C 2+h 2*C 4以证明C1中的v1与C2中的v1相等。
因为第一算法或第二算法中的第一生成元G与第二生成元H的离散对数未知,所以只考虑数额相关的第二生成元H的系数。令C1,C2,C3,C4的第二生成元H的系数分别为a1,a2,a3,a4,根据证明等式得到m1=h1*a1+h2*a3并且m1=h1*a2+h2*a4,由于第一散列值h1与第二散列值h2在生成C1,C2,C3,C4之前是无法预测的,所以只有a1=a2且a3=a4才能满足等式成立,因此C1中的v1与C2中的v1相等。
其中G 1和H 1是第一算法的生成元,G 2和H 2是第二算法的生成元。
在示例性实施例中,在交易时使用多重签名子密钥,所述多重签名子密钥中隐含多重签名子密钥的组合关系。
密钥能根据标识生成子密钥,多个密钥能组成多重签名密钥。可以预先将多重签名密钥的不同组合关系进行编码,将不同的编码结果作为不同多重签名子密钥的密钥标识或密钥标识的一部分,根据密钥标识生成多个密钥对应的多个子密钥,将多个子密钥组成多重签名子密钥。此时多重签名子密钥隐藏了组合关系。交易时使用该多重签名子密钥,其他交易者并不知道组合关系,可以防止篡改密钥的组合关系。
本公开实施例还提供一种链式结构交易处理方法,用于第一许可链和第二许可链的跨链交易,所述第一许可链使用第一算法,所述第二许可链使用第二算法,所述链式结构交易处理方法包括:
第一许可链与第二许可链跨链交易时,生成跨链输出的第一算法的第一佩德森承诺、第二算法的第二佩德森承诺,以及所述第一佩德森承诺和所述第二佩德森承诺所承诺的第二生成元系数所表示的第一数额相等的证明数据。
所述第一佩德森承诺和所述第二佩德森承诺所承诺的第二生成元系数所表示的第一数额相等的证明数据是指:证明第一佩德森承诺所承诺的第二生成元系数所表示的第一数额与第二佩德森承诺所承诺的第二生成元系数所表示的第一数额相等的证明数据。
第一许可链与第二许可链之间的跨链交易可以采用本文中前述跨链交易过程。或者可以采用其他跨链交易方法。
采用本实施例所述方法,通过提供证明数据,可以实现不同算法之间所承诺的数额相等证明。为使用不同算法的许可链间实现跨链交易提供可能。
证明数据详细内容参见前文中描述,此处不再赘述。
本公开实施例还提供一种链式结构数据验证方法,所述链式结构为许可链,所述许可链包括UTXO模型的交易数据和余额模型的交易数据,所述数据验证方法如图3所示,包括以下步骤:
步骤21,采用前述任一实施例中的链式结构处理方法实现所述许可链的所述UTXO模型与所述余额模型的代币的流转,得到转入交易的数据和/或转出交易的数据;
步骤22,许可链外的验证者对所述转入交易的数据和/或所述UTXO模型的交易数据进行验证。
其中,所述许可链外的验证者对所述转入交易的数据和/或所述UTXO模型的交易数据进行验证,可以是前述验证一或验证二,此处不再赘述。
采用本公开实施例所述验证方法,保证代币在联盟链内的正确流转。
在示例性实施例中,所述方法还可包括:
许可链外的验证者对元数据进行验证,对于任意一种资产类型代币,所述元数据包括所述资产类型代币的UTXO模型向余额模型的累计转入数额承诺和累计转出数额承诺,以及所述累计转入数额承诺与所述累计转出数额承诺之差大于等于零的范围证明数据。
下面对本公开实施例进行说明。
本文中所述许可链可以同时支持UTXO模型和余额模型,UTXO模型的交易数据可以合并为联盟链账本,余额模型的交易数据并不参与联盟链的合并。本公开实施例提供了一种UTXO模型与余额模型的代币流转方式,或称为转账方式,可以实现在UTXO模型与余额模型之间转入和转出token的交易数据。
本公开实施例所述的许可链包含UTXO模型功能区,能够生成UTXO模型的交易数据。因为UTXO模型的交易数据能形成DAG(有向无环图)结构,通过多个许可链生成的且为逻辑隔离的DAG结构的交易数据,使多个独立的许可链的UTXO模型的交易数据可以合并为联盟链的账本数据。联盟内的许可链可以共同流转联盟所发行的token,并能有效限制联盟token的流转边界。因为跨许可链输出交易需包含有效的跨链交易地址,只能输出到联盟内的许可链。并且跨许可链输入交易的输入引用应是联盟链上的未花费输出,也即所引用的跨链输出交易已上链联盟链,所以合并后跨许可链交易就转换成了联盟链内的交易。
公证者或中继链等跨链交易方式跨链输出到某个许可链后,并不能限制只在许可链内流转,许可链可以通过其他方式流转出去。不同于公证者或中继链等跨链交易方式,本公开实施例合并许可链为联盟链(链的联盟)的方式,限制了token只能在联盟内的许可链之间流转,并不能转出到联盟外的其它链。并且许可链流转token的交易数据,合并后就转换成了联盟链内流转token的交易数据,也即token流转的过程都具有联盟链的有效证明,所以能通过联盟链的SPV(Simplified Payment Verification,简单支付验证)证明验证某个许可链的token是否为有效的联盟所发行的token。
合并后的联盟链包含两层数据结构,第一层是许可链的区块头数据,第二层才是联盟链实际的交易账本数据,是第一层的许可链区块头所对应的许可链账本数据中的UTXO模型的交易数据。联盟链记账者实际生成的第一层账本数据量很小,可以包含多个大规模账本的许可链账本数据,同时区块头也不会泄漏隐私。所以通过分层账本和多级共识(至少是许可链和联盟链两级),解决联盟链的大规模账本数据的记账和安全隐私问题。
上述许可链还可以包含余额模型功能区,生成余额模型的交易数据,能支持用户自定义的智能合约和状态存储。联盟链的验证者不能读取许可链余额模型的交易数据,许可链余额模型的数据也不参与联盟链的合并。所以许可链的区块中数据分为两部分,第一部分是由联盟链的验证者验证并参与联盟链合并的数据,本公开实施例称为系统外验证数据;第二部分则是除系统外验证数据之外的其余的数据,主要包括余额模型的数据。许可链区块头数据包含区块中这两部分数据分别生成的两个默克尔树根散列值。所以许可链的账本数据验证分为系统外部验证(也即联盟链的验证者,只读取并验证系统外验证数据)和内部验证两种方式。内部验证即为许可链内的验证,会验证整个许可链的账本数据。例如内部验证会验证UTXO模型输出的用户一次地址是否有效,因为许可链并不允许输出到非系统用户的一次地址上,所以需要验证输出地址的有效性;而系统外部验证更类似公有链的验证方式,可以输出到任意的地址上,并不验证输出的一次地址是否为有效用户地址,只验证是否为有效的解锁花费并且没有双花,交易的输入数额等于交易的输出数额,也即保证联盟所发行token的正确流转,并且该流转验证并不包含用户,所以是隐私的。而内部验证也是保证token的正确流转,但该流转验证会包含流转到正确的用户地址上。
因此许可链内包含用户关系,会限制流转的地址是否为有效的用户一次地址;合并后的联盟链并不包含用户,只限制token在联盟内的许可链之间流转,不允许流转到非联盟的其它链上,所以不同于公证者或中继链等跨链交易方式,能有效限制联盟token的流转边界。例如许可链的非联盟token可以跨链输出到非联盟的其它链上,并不会有任何限制,所以许可链可以同时参与多个不同的联盟,流转不同联盟所发行的不同资产类型的token。
在示例性实施例中,联盟链也允许许可链从UTXO模型向余额模型的转入token交易,和从余额模型向UTXO模型的转出token交易。实际联盟token转入余额模型后,就超出了联盟链的边界,因为许可链合并得到的联盟链并不包含余额模型,所以转入到余额模型的token也就不再具有联盟链的成员证明,只有重新转出到UTXO模型的token才能具有联盟链的成员证明。因此该转入token交易和转出token交易是限制在许可链的系统内,并且联盟链 的验证者并不读取余额模型的交易,所以许可链给出累计转入数额承诺减去累计转出数额承诺的结果,以及结果大于等于零的范围证明数据。系统外部验证只验证承诺结果是否正确和结果大于等于零的范围证明,即认为转出token交易有效;而内部验证则会验证转出token交易的输入地址所对应的余额是否大于等于转出的token数额。
UTXO模型的交易可以包含一个或多个输入和一个或多个输出,每个输入是引用前向的一个未花费交易输出且变为已花费,并创建一个或多个新的未花费交易输出。其中引用连接可分为显式连接和隐式连接两种方式。解锁脚本需关联对应的锁定脚本,其他人能知道所引用的未花费输出,是显式连接方式,例如“txid+index”或一次地址等方式,其中txid表示输入引用未花费输出的交易ID,index表示序号。花费凭证集合记录了所有已花费输出的指纹因此不能重复花费,其他人并不知道所引用的未花费输出,是隐式连接方式,例如零知识证明或环机密交易等方式。
上述可以看作为花费一个或多个输出(已花费),并创建一个或多个新的输出(未花费),且不断的向后循环,所有的已花费输出STXO和未花费输出UTXO就能够形成一个DAG的结构(有向无环图),而无论之间的连接方式是显式还是隐式。并且该DAG结构反应了token流转的过程,所以称为DAG结构的交易数据链(或TXO交易数据链)。
锁定与解锁之间的显式连接,表明了是交易链上的某个连接,无论引用连接是txid+index或一次地址等方式,只要是能有效引用某个输出并能判断是否未花费即可。使用花费凭证方式的隐式连接,虽然没有表明是交易链上的哪个连接,但通过花费凭证不能够双花,表明是其中的某个连接,并且之前没有被花费过。所以隐式连接即使没有表明也是DAG结构的交易链,只是隐蔽了链的连接(发送者知道所引用的未花费输出而其他人不知道)。
所以无论哪种方式的UTXO模型的交易,都可以抽象为DAG结构的交易链,而DAG结构也是可合并的理论依据。因为DAG结构能够拆分为多个子DAG结构,也可以把多个子DAG结构合并为一个DAG结构。因为联盟链的UTXO模型的交易能够形成一条DAG结构的交易链(使用显式一次地 址连接的方式),然后可拆分为多个子DAG,每个子DAG是由一个私有链的UTXO模型的交易形成,所以可以将多个私有链的UTXO模型的交易进行合并为联盟链的账本。因此合并后的联盟链只包含UTXO模型的数据,并不包含余额模型。
联盟链的DAG结构使用显式一次地址连接的方式,是因为每个地址可以包含链的唯一标识(也即系统ID或链ID)作为前缀,并且地址在私有链内唯一,所以能将交易数据逻辑隔离,且具有全局唯一的连接地址,因此合并为联盟链的交易不会发生冲突。如果直接合并私有链的交易数据,则只能使用显式一次地址连接的方式。但每个私有链的交易数据都是独立验证并上链联盟链,并且联盟链的第一层只有私有链的区块头数据,因此可以将私有链的子DAG结构的内部连接替换为其它方式,包括txid+index或隐式连接等方式,但跨私有链交易需保持一次地址的方式。所以可将多个不同技术方式的私有链的UTXO模型的交易数据合并为联盟链的账本。
上述UTXO模型的交易形成DAG结构的交易链,是默认为一种资产类型的同质化token,但系统中可以具有多种资产类型的同质化token,也可以具有非同质化的token,不同资产类型的token可通过标识区别。非同质化token因为是花费一个已有输出,并创建一个新的输出,所以形成普通的链式结构。同一资产类型的同质化token,是多输入和多输出的结构,所以形成复杂的链式结构。并且系统中有几种资产类型的同质化token,就形成了对应的几条DAG结构的交易链。
联盟内只验证联盟所发行的token,并不处理验证私有链中其它的token,所以合并为联盟链账本,相当于只是合并了联盟所发行token的流转,因此某个私有链内即使流转不同联盟所发行的token,但联盟只验证本联盟的token流转,相当于是不同的DAG结构,所以系统内可以流转两个或更多联盟的token,并且可以无冲突的参与多个联盟链的合并。私有链满足条件后也可以选择加入或离开联盟链,例如系统内没有流转联盟token的未花费输出,则可以离开联盟链。
不同私有链使用不同的密码算法,也是可以进行合并的。例如私有链A使用国密SM2椭圆曲线,私有链B使用secp256k1椭圆曲线。跨私有链交易 时标识输出的用户一次公钥(或承诺地址)的椭圆曲线和算法。然后需要证明A输出的数额承诺与B输入的数额承诺在不同椭圆曲线所承诺的数额相等。例如A输出的数额承诺C 1和B输入的数额承诺C 2:
输出的承诺为:第一佩德森承诺C 1=b 1*G 1+v 1*H 1和第二佩德森承诺C 2=b 2*G 2+v 1*H 2
随机生成的承诺包括:第三佩德森承诺C 3=b 3*G 1+v 2*H 1和第四佩德森承诺C 4=b 4*G 2+v 2*H 2
所以得到第三散列值h 3=Hash 1(C 1||C 2||C 3||C 4||G 1||H 1||G 2||H 2)和第四散列值h 4=Hash 2(C 1||C 2||C 3||C 4||G 1||H 1||G 2||H 2)
其中Hash 1和Hash 2可以是不同的散列函数,例如SHA256和SM3,但h 1和h 2的长度需大于椭圆曲线阶的长度,所以可取值为散列值的平方,即
Figure PCTCN2022070739-appb-000001
Figure PCTCN2022070739-appb-000002
如果使用SHA512,则可以使用散列值,即h 1=h 3且h 2=h 4
计算证明的标量包括:第一标量m 1=h 1*v 1+h 2*v 2
第二标量m 2=h 1*b 1+h 2*b 3
第三标量m 3=h 1*b 2+h 2*b 4
通过证明m 2*G 1+m 1*H 1是否等于h 1*C 1+h 2*C 3并且
m 3*G 2+m 1*H 2是否等于h 1*C 2+h 2*C 4以证明C1中的v1与C2中的v1相等。
上述G 1和H 1是SM2椭圆曲线的生成元,G 2和H 2是secp256k1椭圆曲线的生成元。所以C 1与C 3是SM2椭圆曲线上的点,C 2与C 4是secp256k1椭圆曲线上的点。v 1是转账所承诺的数额,v 2是随机生成的数额,并且v 2可以大于2 64。上述h 1和h 2为64字节,标量m 1同时参与第一算法和第二算法的运算,可以表示为m 1%(n 1*n 2),其中n 1是第一算法的阶,n 2是第二算法的阶,所以标量m 1用64字节存储。标量m 2参与第一算法的运算,标量m 3参与第二算法的运算,可以分别表示为m 2%n 1和m 3%n 2,所以m 2和m 3用32字节存储。所以A输出到B的跨许可链输出交易数据包含不同椭圆曲线的数额承诺C 1和C 2,并给出数额相等的证明。可公开验证C 1和C 2所承诺的数额相等,使不同算法 的许可链可以连接。
UTXO模型的交易数额可使用同态加密方式保密,例如使用佩德森承诺(Pedersen Commitment),表示为Cv=b*G+v*H,其中v是所承诺的数额,b是盲因子,G和H分别是椭圆曲线上的第一生成元和第二生成元。承诺Cv具有加法同态的性质,所以可以使用Cv1+Cv2=(b1+b2)*G+(v1+v2)*H。上述加法也可以是减法,也即Cv1–Cv2=(b1–b2)*G+(v1–v2)*H。并且可以结合范围证明,例如使用防弹(Bulletproofs)协议,证明Cv所承诺的数额v在一定的范围内,例如v∈[0,2^64)。本文中所述大于等于零的范围证明,也即非负数的范围证明,等同于一定范围内的证明,例如[0,2^64)。
为满足私有链系统能支持具有状态存储的智能合约,在私有链系统增加余额模型功能区,也即私有链系统可同时具有UTXO模型功能区和余额模型功能区。
余额模型包含用户账户和合约账户,分别为用户账户地址和合约账户地址。账户状态具有余额(Balance)值,可以进行加法和减法运算,因此可以使用Pedersen承诺来表示。所以UTXO模型的交易数额,或者余额模型的Balance值,都可以是一个承诺Cv,以保密所承诺的数值v。余额模型交易还可以包含一个序号nonce,用于防止余额模型交易数据的重放。
UTXO模型的交易地址(也称为用户一次地址)可以是“地址类型+系统ID(或链ID)+交易方式(可选)+用户一次公钥的散列值”,所述用户一次公钥是由用户的签名公钥和生成私钥生成,例如通过用户签名公钥Pb和生成私钥s,生成一次公钥Qb=Hash(c*s*G)*G+Pb,其中c称为生成系数,所对应的私钥为(Hash(c*s*G)+d)%n,其中d是用户的签名私钥Pb=d*G,n是以G为基点的加法群的阶。或者可以通过Qb=Hash(Hash(c,s)*G)*Pb的方式生成一次公钥,所对应的私钥为(Hash(Hash(c,s)*G)*d)%n。再通过用户一次公钥生成对应的散列值,例如:公钥的散列值Lb=HL(ID,Qb),其中Qb是用户的一次公钥,可称为用户一次地址所对应的一次公钥,HL是地址散列函数。以用户地址为12317466924e4f854afd8e494fa657a4为例,其中1 是用户地址类型,23是系统ID(或链ID),1表示承诺地址交易方式,其余是用户一次公钥的散列值。该用户一次地址需对应某用户一次公钥,引用地址的解锁脚本需给出一次公钥或承诺地址运算(也即承诺地址与用户一次公钥相关联)得到该一次地址,并且需用该一次公钥所对应的私钥签名完成解锁。地址长度不限,并且不同类型地址的长度也可以不同。
余额模型的用户账户地址可以是“地址类型+公钥地址”,所述公钥地址是由用户的签名公钥运算生成的地址,例如:用户账户地址La=8+HL(ID,Pa),其中8是用户账户地址类型,Pa是用户的签名公钥,HL是地址散列函数。余额模型的交易数据可以包含:发送者的账户地址L1,接收者的账户地址L2,转账数额承诺Cv3,发送者的序号计数nonce,以及发送者的签名私钥对交易数据的签名。根据发送者账户地址L1所对应的Balance值Cv1,以及接收者账户地址L2所对应的Balance值Cv2,可以计算转账完成后,L1的Balance值为Cv1–Cv3,L2的Balance值为Cv2+Cv3,交易数据还可以包含Cv1–Cv3>=0以及Cv3∈[0,2^64)的范围证明。余额模型的交易还可以创建和调用合约,但本文的范围并不涉及。
余额模型的合约账户地址可以是“地址类型+散列值”,其中散列值可以是创建合约的用户账户地址La与nonce的散列结果。例如:合约账户地址Lc=9+HL(ID,La||nonce),其中9表示合约账户地址类型,nonce是用户创建合约时的交易计数。所以通过用户账户地址和nonce值就可以计算出对应的合约账户地址。合约账户同样具有Balance值,但只能通过合约控制。
许可链系统为满足管理的需求和灵活性的需求,可以包括直接交易方式和间接交易方式。直接交易方式是发送者生成的交易直接输出接收者的一次公钥或地址;间接交易方式是发送者生成的交易不直接输出接收者的公钥或地址,而是输出中间交易地址,再由许可链的背书节点生成一个回执混淆交易数据引用中间交易地址,输出接收者的一次公钥或地址。由于间接交易方式是由背书节点产生的输出,所以使用与发送者输出的中间交易地址绑定公钥运算的方式。间接交易方式不同于大多数的区块链交易方式,因为发送者不能直接输出跨链交易接收者(非本许可链用户)的一次地址或跨链交易地址,因此跨许可链交易需要使用间接交易方式。
跨许可链交易的交易数据使用跨链交易地址方式,例如由第一许可链的用户生成中间交易,输出中间交易地址,第一许可链的背书节点生成跨链输出交易数据,输入引用该中间交易地址,并输出唯一的跨链交易地址;由第二许可链的背书节点生成跨链输入交易数据,输入引用该跨链交易地址,并输出用户的一次地址。跨链交易地址包含跨链交易地址的地址类型、第一许可链的唯一标识、第二许可链的唯一标识和第一许可链跨链的唯一数。所以该地址是全局唯一的,并指明了由第一许可链跨链输出到第二许可链上,只能由第二许可链的交易输入引用该跨链输出。
UTXO模型与余额模型主要通过转入和转出交易流转token,包括与余额模型的用户账户和合约账户。与交易相似地,系统中可以使用直接或间接的转入和转出交易实现UTXO模型和余额模型之间token的流转,下面分别说明。
直接转入交易:输入为引用UTXO模型的未花费输出,输出为余额模型的用户账户地址L2,并且该输出不能够被引用花费。该输出可以使用数额承诺,输出的数额承诺Cvin即为转入余额模型的数额,所以与L2的Balance值Cv2加法同态运算得到余额结果Cv2+Cvin。交易中可包含Cvin∈[0,2^64)的范围证明。直接转入不支持输出合约账户地址,因为执行合约可能会失败,但转入交易上链后不能被撤销,输出也不能被引用花费,所以需使用间接转入方式输出到合约账户地址。
直接转出交易:输入为余额模型的用户账户地址或合约账户地址,输出为UTXO模型的用户一次地址。由于输入的是余额模型的地址,所以交易中需包含nonce计数以防止重放。如果输入的是用户账户地址,则交易是由用户生成,nonce值为发送者的用户账户交易计数,然后发送者使用签名私钥对交易签名。如果输入的是合约账户地址,则交易是由合约脚本生成,实际是由执行合约的背书节点生成转出交易并签名,nonce值为该合约账户地址生成转出交易的计数。例如输入地址L1(用户账户地址或合约账户地址)的Balance值Cv1,与转出交易输出的数额承诺Cvou减法运算得到余额结果Cv1-Cvou,交易中可包含Cv1-Cvou>=0的范围证明和Cvou∈[0,2^64)的范围 证明。
间接转入交易:间接转入方式是用户生成中间交易(即前述第一中间交易),且该中间交易输出绑定承诺地址,中间交易引用UTXO模型的未花费输出,输出为中间交易地址,背书节点收到中间交易后,生成回执交易(即前述第一回执交易),所述第一回执交易的输入为一个或多个前述第一中间交易,第一回执交易输出包含需转入余额模型的用户账户地址或合约账户地址,并绑定(或关联)中间交易绑定的承诺地址。承诺地址可采用以下方式生成:C=r*P+t*H,其中C为承诺地址,P是用户的签名公钥,H为第二生成元,r为第一系数,t为第二系数。还可以包含第三生成元H2和第三系数u,如C=r*P+t*H+u*H2。
例如转入用户账户地址,混淆交易的输入承诺地址为C1=r1*P+t1*H,C2=r2*C1且r2=(1–r1)/r1,输出的用户账户地址为La=8+HL(ID,P),绑定的承诺地址为C3=C1+C2–(t1/r1)*H=P,可验证La是否等于8+HL(ID,C3)。如果转入合约账户地址,混淆交易的输入承诺地址为C1=r1*P+t1*H+nonce*r1*H2,C2=r2*C1且r2=(1–r1)/r1,输出的合约账户地址为Lc=9+HL(ID,La||nonce)且La=8+HL(ID,P),绑定的承诺地址为C3=C1+C2–(t1/r1)*H=P+nonce*H2,所以可以给出系数nonce,计算La`=8+HL(ID,C3–nonce*H2),即可验证Lc是否正确。上述输出的用户账户地址或合约账户地址同样也不能被引用花费。输出数额承诺Cvin与直接转入类似,累加到对应账户的Balance值。该方式经过混淆后其他人并不知道输出所对应的是哪个输入地址,也即不知道哪个地址生成转入交易,因为中间交易绑定的承诺地址无法辨别是转入还是普通交易,只有背书节点可以知道,但可以通过承诺地址的方式进行验证。上述系数r1也可以等于1,则C2等于单位元,也即椭圆曲线的无穷远点或零点。
间接转入如果输出是合约账户地址,则会调用对应的合约脚本,调用的参数加密保存在中间交易数据里,但合约执行可能会失败。背书节点在生成回执混淆交易的同时,执行对应的合约脚本,如果执行成功,则将执行结果等加密存储在混淆交易对应的备注信息中;如果执行失败,则取消混淆交易输出的合约账户地址,将输入的数额输出到发送者新的一次地址,并将失败 原因等加密存储在回执交易的备注信息中,最后对回执交易背书签名。所以执行合约失败,实际就没有输出合约账户地址,也不会形成转入交易,用户也就能够再次引用花费。
间接转出交易:与直接转出交易类似,不同在于不是直接输出UTXO模型的用户一次地址,而是第二中间交易输出中间交易地址,绑定了输出用户的承诺地址。如果输入的是余额模型的用户账户地址,则是由用户生成中间交易数据;如果输入的是余额模型的合约账户地址,则是由背书节点执行合约时生成中间交易数据,背书节点生成回执交易(即前述第二回执交易),第二回执交易的输入为一个或多个所述第二中间交易,第二回执交易的输出为UTXO模型的用户一次地址,并关联中间交易地址绑定的承诺地址。
所以通过上述UTXO模型与余额模型的转入和转出交易,就能使token在不同模型功能区中流转,支持转入合约账户模型并执行对应的合约脚本,以及执行合约并转出到UTXO模型的用户一次地址。
合并多个私有链账户的UTXO模型交易数据之前,可对交易数据进行验证,正确后才能合并为联盟链(或上链联盟链)。所验证的目的是为了防止私有链产生不正确的交易数据,导致联盟token不为人知的增发,所以能够确认联盟内流转token的总数额。上述增加了余额模型功能区,但余额模型部分的数据不参与合并,需验证UTXO模型交易数据的token正确流转,以及验证转出数额是否有效。并且只需要验证累计转入数额承诺CvinSum>=累计转出数额承诺CvoutSum,就能认为转出的数额有效,而不需要验证余额模型的数据。如果某个系统的私有链的余额状态发生错误,能够确保在该系统内部而不会传递到其他机构系统,避免风险的扩散,保护联盟链的其他成员机构。
如图4所示,所以许可链区块中的数据分为系统外验证数据和其余数据两部分。其中第一部分是系统外验证数据,包括UTXO模型的交易数据,转入交易数据和转出交易数据,可选地还可以包含元数据,所述元数据中包含CvinSum-CvoutSum>=0的范围证明。第二部分是除系统外验证数据之外的其余数据即非系统外验证数据,主要包括余额模型的交易数据等。区块中的 这两部分数据集合分别生成一个Merkle Tree,对应的Merkle Root可记录在私有链的区块头数据中。所以验证也包含系统外部验证和内部验证两种。系统外部验证可以是在合并联盟链时,由其它机构或联盟链的背书节点等联盟链的验证者对许可链需合并的数据进行的验证。外部验证方式只验证以下一种或多种:UTXO模型交易的引用解锁是否有效,交易的输入数额承诺之和是否等于输出数额承诺之和,以及输出数额承诺的范围证明,也即只验证联盟token的流转是否正确。内部验证则可包含许可链内的所有验证,包括输出的地址用户是否存在,合约结果是否正确,用户状态是否正确等。
在示例性实施例中,系统外验证数据集合中的第一个数据可以是元数据,也即每个许可链的区块中可以包含一个元数据,元数据不是交易数据。元数据中包含了转入转出数额承诺的证明数据,也即CvinSum与CvoutSum以及CvinSum-CvoutSum>=0的范围证明,其中CvinSum为UTXO模型向余额模型的累计转入数额承诺,CvoutSum为UTXO模型向余额模型的累计转出数额承诺。CvinSum和CvoutSum可以通过上一个区块中的元数据所包含的CvinSum`和CvoutSum`,以及本区块中所有转入和转出数额累加计算得到,所以验证过程并不需要存储状态。元数据中还可以包含其它额外信息,例如私有链系统当前所流转的token总进款数额的承诺CincomeAll和总出款数额的承诺CoutgoAll以及CincomeAll–CoutgoAll>=0的范围证明等。其中,CincomeAll为跨许可链交易的累计输入数额承诺与累计发行数额承诺之和,CoutgoAll为跨许可链交易的累计输出数额承诺与累计回收数额承诺之和。图5为具有多种资产类型token的许可链区块中元数据的示例列表。
上文分析了系统中包含几种资产类型的同质化token,就形成了对应的几条DAG结构的交易链。所以私有链上可能流转多个联盟发行的token,所以区块中的元数据可包含一个列表,列表中分别记录了不同资产类型token的累计数据和证明。例如CincomeAll=累计的跨链输入数额承诺+累计发行数额承诺,CoutgoAll=累计的跨链输出数额承诺+累计回收数额承诺,并且CincomeAll-CoutgoAll表示系统中某一类资产类型的总数额,而CvinSum-CvoutSum表示系统中某一类资产余额模型部分的总数额,所以这两者的差为系统中某一类资产UTXO模型部分的总数额,元数据中可以给出 这两者差的范围证明。所以元数据的列表中记录了多条不同资产类型的token标识和对应的累计数额承诺以及范围证明数据。
如果私有链系统内部交易使用零知识证明方式,外部验证的联盟链验证者只能验证零知识证明是否正确,并不知道实际的交易数据,并且跨私有链交易需要转换到地址交易方式。为了防止系统转出非法的token,可以通过元数据里的数额证明跨链输出交易的有效性。其原理类似验证UTXO模型与余额模型的累计转入数额承诺大于等于累计转出数额承诺,使系统不能跨私有链输出错误的token到其他机构系统,避免风险的扩散。
在示例性实施例中,合并过程可以为:某个许可链产生新的区块数据后,由联盟链的验证者对该区块数据进行外部验证,也即只验证区块中的系统外验证数据,需要验证待上链数据输入引用的未花费交易是否具有联盟链的成员证明,也即确保上链联盟链的数据都是引用的联盟链上的未花费输出,所以跨许可链交易合并后就转变为联盟链内的交易。验证者验证成功后对许可链区块头数据添加用于表示限制联盟链区块高度的区块头散列值,也即区块中的跨许可链交易所引用的联盟链上的未花费输出所对应的最大区块高度。如果许可链区块中不包含跨许可链交易,则等于许可链区块头所包含前一个许可链区块头对应的表示限制联盟链区块高度的区块头散列值,也即如果不包含跨许可链交易,则限制联盟链区块高度不变。如果上一个区块不包含跨许可链交易,也没有上链联盟链(上链联盟链的区块头都具有表示限制联盟链区块高度的区块头散列值),则需要继续向前递归。如果递归到创始区块中仍不包含跨许可链交易,则区块头的表示限制联盟链区块高度的区块头散列值设置为第一预设值(例如为零)。
如图6所示,联盟链区块头X包含多个许可链的区块头数据,示例性的具有许可链A和许可链B的区块头数据,还可以具有其他许可链的区块头数据。其中许可链B的区块头N1和区块头N2具有表示限制联盟链区块高度的区块头X1的散列值,所以表示N1和N2只能在联盟链区块头X1之后上链联盟链。所以N1上链联盟链区块X2,N2上链联盟链区块Xn。并且联盟链区块X2与Xn之间不包含许可链B的区块头数据,而只包含其它许可链的区块头数据,所以许可链B的区块头数据是依次上链联盟链。同理联盟链 区块Xn还包括许可链B的区块头Nm,表示联盟链的一个区块中可包含某许可链的多个区块头数据,但也需满足依次上链。通过这两个条件保证了上链联盟链所对应许可链的UTXO交易数据的输入引用都是联盟链上前向的未花费输出,并且不会受联盟链分叉的影响。
然后验证者对区块头数据进行背书签名,并发送给联盟链的记账者由记账者对区块头数据进行共识上链联盟链。同理其他系统私有链产生新的区块数据后,也对其验证并将区块头数据共识上链。
联盟链的记账者需保证许可链区块头数据所包含前一个许可链区块头数据在此之前上链联盟链,并且后续没有该许可链的其它区块头数据,也即许可链区块头依次上链。并且许可链区块头对应的用于表示限制联盟链区块高度的区块头散列值等于某个前向的联盟链区块头散列值。散列值为第一预设值则不限制上链联盟链的区块高度,因为没有引用其它许可链的未花费输出,可以在任意区块高度上链联盟链。因为许可链区块中的交易可分为许可链内的交易和跨许可链交易两类。这两个条件分别保证了许可链内的交易上链联盟链的有效性和跨许可链交易上链联盟链的有效性,因为许可链区块头依次上链即能保证许可链内的交易引用许可链内的前向未花费输出。并且如果联盟链产生了分叉,通过用于表示限制联盟链区块高度的区块头散列值能够保证上链联盟链后的交易数据满足输入引用的是联盟链上前向的未花费输出。
记账者验证某许可链区块头依次上链联盟链,以及验证该许可链上链联盟链的第一个区块头是否有效,如果第一个区块头包含的表示限制联盟链区块高度的区块头散列值为非第一预设值,则无法验证是否为有效的第一个区块头,因为该许可链之前的区块中可能包含跨链交易数据。因此某许可链上链联盟链的第一个区块头,包含的表示限制联盟链区块高度的区块头散列值为第一预设值,以表示该许可链之前的区块中都不包含跨链交易数据。如果许可链当前的区块中不包含跨许可链交易,并且许可链之前的区块中包含跨许可链交易,因为许可链区块头依次上链联盟链,所以当前区块头的表示限制联盟链区块高度的区块头散列值可以设置为第二预设值(例如为FF…FF)。包含第二预设值的许可链区块头数据也不限制上链联盟链的区块高度,但表示许可链之前的区块中包含跨许可链交易,不能作为上链联盟链的第一个区 块头数据,并通过依次上链隐式限制上链联盟链的区块高度,因为需在显式限制上链联盟链区块(包含跨链交易)高度之后上链联盟链。
合并后的联盟链具有两层结构,如图7所示,第一层是联盟链的中间层(包含私有链的区块头数据),第二层是联盟链的账本数据(也即私有链区块头所对应的区块数据),许可链区块中的非系统外验证数据不属于联盟链。所以私有链的交易数据没有上链联盟链之前,只有私有链的成员证明,上链联盟链之后,就具有联盟链的成员证明,并且该证明同样也是两层。联盟链使用两层结构,实际需要合并生成的第一层数据量很小,可支持合并多个大量账本数据的私有链,并且只公开了第一层数据因此不会泄露任何隐私信息。所以通过分层账本和多级共识,解决联盟链的大规模账本数据的记账和安全隐私问题。
联盟链其中的几个成员链可以通过建立子联盟链的方式实现更快速的子联盟之间的跨链交易。子联盟链的上链方式与联盟链相同,但参与的成员链较少,并且之间可以相互信任只验证跨链交易,所以能更快速的完成子联盟之间的跨链交易。联盟链的验证者验证子联盟链之间的跨许可链交易是作为子联盟链内的交易方式验证,对于非子联盟链之间的跨许可链交易作为正常的跨链交易方式验证。而链内的交易数据只需引用链内的未花费输出,所以子联盟链的用于表示限制联盟链区块高度的区块头散列值是非子联盟链之间的跨许可链交易所引用的联盟链上的未花费输出所对应的最大区块高度。子联盟链所生成新的第一层区块数据,是由参与子联盟链的许可链区块头数据组成,然后打包在一起并添加用于表示限制联盟链区块高度的区块头散列值并且上链联盟链,所以能保证子联盟链的许可链之间的跨链交易,能够作为子联盟链的链内交易方式处理。
图8说明多个许可链的系统外验证数据可合并为联盟链,也即逻辑总账本。每个许可链的余额模型部分则可实现不同的智能合约,也即每个主体各自实现和管理自己的智能合约,其中每个主体智能合约的技术和类型等都可以不同,但多个主体可以通过UTXO模型部分进行合并,从而实现联盟token的相互流通,可以通过转入转出交易流通到多个主体的余额模型部分。并且一个主体可以同时参与多个不同的联盟,同时流转不同联盟的token,再通过 该主体智能合约实现不同联盟token的相互转换,从而实现不同联盟的主体能够相互流通所转换的本联盟的token。每个主体的许可链通过元数据保证本主体token总数额的正确性,使某主体不能输出超出数额的错误token到其他主体,避免风险的扩散。也即一个主体只要保证自己数据的正确性,其他主体即使错误也不能传递错误的token到该主体上。
余额模型也可以使用独立系统,也即私有链只包含UTXO模型的交易与转入和转出交易(需要能够计算数额承诺,实际转出交易是由余额模型发起)。余额模型使用独立系统,与UTXO模型是不同的共识,不能确保共识的出块时间,并且交易和状态都是以自己区块的数据为依据,因此余额模型和UTXO模型各自都有一套转入和转出交易。例如UTXO模型生成转入交易,余额模型需要复制一份;或者余额模型生成转出交易,UTXO模型同样需要复制一份。为保证两个不同系统的转入和转出交易一一对应,可以通过序号计数方式验证。
上述机构的私有链也可以是多个机构节点共同参与管理的许可链(机构的联盟),也即具有多个机构的背书节点和记账节点,相关的机构ID替换为系统ID或链ID。也即无论是私有链还是机构联盟的许可链,都可以参与合并为链的联盟链,本公开实施例并不作任何限制。并且可以通过子联盟链(链的联盟)再合并为联盟链,例如通过合并第一层的区块头数据实现。
上述用户的签名密钥可以替换为用户的签名子密钥,例如签名子公钥PkId=Hash(su,keyId)*Pk,其中su是用户的生成私钥或查看私钥,Pk是用户的签名公钥,keyId是子密钥的标识,对应的签名子私钥为dkId=Hash(su,keyId)*dk%n,其中dk是Pk的私钥,n是以G为基点的加法群的阶。所以不同场景可使用不同的签名子密钥,保护用户的隐私和安全。
在示例性实施例中,可以使用多重签名密钥的方式,例如用户有5个公钥Pa,Pb,Pc,Pd,Pe,用户需使用5个公钥在私有链上注册,则用户的多重签名公钥为Px=Pa+Pb+Pc+Pd+Pe,用户的多重签名子公钥为h*Px=h*(Pa+Pb+Pc+Pd+Pe),也即为用户每个子公钥的和,其中h=Hash(su,keyId)。但该多重签名密钥缺少组合关系,可以将密钥组合的关系编码为sc,keyId可包含sc信息。
例如上述用户的5个公钥分别是椭圆曲线上的5个点P(x,y),按x的大小依次排序P1-P5,根据密钥的序号和组合关系,例如OP_2(1,3,5)OP_3 OP_CMS AND OP_1(2,4)OP_2 OP_CMS,其中OP_CMS表示验证m-of-n多重签名,其中包含n个公钥,至少m个公钥被签名。所以上述表示1,3,5号密钥2-of-3签名并且2,4号密钥1-of-2签名。将组合关系通过递归长度前缀编码(RLP)为sc。keyID包含sc信息,例如keyID+sc。所以生成的多重签名子密钥也就关联了密钥组合关系,不同组合关系所生成的子密钥互不相同。上述交易中使用的是用户公钥,接收者只需出示一个多重签名公钥或普通公钥给发送者,发送者不能辨别密钥类型,因为都是椭圆曲线上的某个点,但多重签名公钥缺少了组合关系。通过隐含组合关系的多重签名子密钥,用户只需注册原多个公钥,就可以生成任意组合方式的多重签名子公钥,系统也能验证组合关系的有效性,不同场景可以使用不同组合关系的多重签名子密钥,并能防止其他人替换或篡改为其它的组合关系。
本公开一示例性实施例还提供一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令;所述计算机可执行指令被执行后,能够实现前述一个或多个示例性实施例提供的方法,例如,链式结构的处理方法、链式结构的数据处理方法或链式结构的数据验证方法。所述计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。
本公开一示例性实施例还提供了一种计算机装置(或称计算机设备)。所述计算机设备可包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时可实现本公开中链式结构的处理方法、链式结构的数据处理方法或链式结构的数据验证方法。下面通过一个示例对上述计算机装置的结构进行说明。
如图9所示,在一个示例中,计算机设备可包括:处理器101、存储器 102、总线系统103和收发器104,其中,该处理器101、该存储器102和该收发器104通过该总线系统103相连,该存储器10用于存储指令,该处理器101用于执行该存储器102存储的指令,以控制该收发器104发送信号。
应理解,处理器101可以是中央处理单元(Central Processing Unit,简称为“CPU”),处理器101还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器102可以包括只读存储器和随机存取存储器,并向处理器101提供指令和数据。存储器102的一部分还可以包括非易失性随机存取存储器。例如,存储器102还可以存储设备类型的信息。
总线系统103除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图9中将所有总线都标为总线系统103。
在实现过程中,该计算机设备所执行的处理可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。即本公开实施例所公开的方法的步骤可以体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等存储介质中。该存储介质位于存储器102,处理器101读取存储器102中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算 机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
以上显示和描述了本公开的基本原理和主要特征和本公开的优点。本公开不受上述实施例的限制,上述实施例和说明书中描述的只是说明本公开的原理,在不脱离本公开精神和范围的前提下,本公开还会有各种变化和改进,这些变化和改进都落入要求保护的本公开范围内。

Claims (17)

  1. 一种链式结构的处理方法,其特征在于,所述链式结构为许可链,所述许可链包括UTXO模型的交易数据和余额模型的交易数据,所述处理方法包括:
    所述UTXO模型进行向所述余额模型的转入交易,和/或
    所述余额模型进行向所述UTXO模型的转出交易。
  2. 根据权利要求1所述的方法,其中,所述UTXO模型进行向余额模型的转入交易,包括:
    所述UTXO模型进行向所述余额模型的直接转入交易;或者所述UTXO模型进行向所述余额模型的间接转入交易;
    其中:所述直接转入交易的输入引用所述UTXO交易的未花费输出,输出为余额模型的用户账户地址;所述间接转入交易包括第一中间交易和第一回执交易,所述第一中间交易的输入引用所述UTXO交易的未花费输出,所述第一回执交易的输出为余额模型的用户账户地址或合约账户地址。
  3. 根据权利要求2所述的方法,其中,
    所述间接转入交易中的第一中间交易绑定一个或多个接收者的第一承诺,所述第一中间交易的输出为中间交易地址,所述第一回执交易的输入为一个或多个所述第一中间交易,所述第一回执交易的输出绑定第二承诺,所述第二承诺为所述第一承诺经过运算后得到的新的承诺,所述第二承诺经过第一运算生成的地址为所述余额模型的用户账户地址或合约账户地址。
  4. 根据权利要求1所述的方法,其中,所述余额模型进行向所述UTXO模型的转出交易,包括:
    所述余额模型进行向所述UTXO模型的直接转出交易,或者所述余额模型进行向所述UTXO模型的间接转出交易;
    其中:所述直接转出交易的输入为所述余额模型的用户账户地址或合约账户地址,输出为所述UTXO交易的用户一次地址;所述间接转出交易包括第二中间交易和第二回执交易,所述第二中间交易的输入引用余额模型的用 户账户地址或合约账户地址,所述第二回执交易的输出为所述UTXO交易的用户一次地址。
  5. 根据权利要求4所述的方法,其中,
    所述间接转出交易中的第二中间交易绑定一个或多个接收者的第三承诺,所述第二中间交易的输出为中间交易地址,所述第二回执交易的输入为一个或多个所述第二中间交易,所述第二回执交易的输出绑定第四承诺,所述第四承诺为所述第三承诺经过运算后得到的新的承诺,所述第四承诺经过第二运算生成的地址为UTXO交易的用户一次地址。
  6. 一种链式结构交易数据处理方法,其特征在于,所述链式结构为许可链,所述许可链包括UTXO模型的交易数据和余额模型的交易数据,所述交易数据处理方法包括:
    采用如权利要求1-5中任一项所述链式结构处理方法实现所述许可链的所述UTXO模型与所述余额模型的代币的流转,得到转入交易的数据和/或转出交易的数据;
    将多个属于同一联盟链的许可链的系统外验证数据合并为所述联盟链的账本数据,其中,许可链的系统外验证数据包括以下一种或多种:所述转入交易的数据、转出交易的数据与所述UTXO模型的交易数据。
  7. 根据权利要求6所述的方法,其中,所述将多个属于同一联盟链的许可链的系统外验证数据合并为所述联盟链的账本数据,包括:
    所述多个许可链的区块头数据共识后生成所述联盟链的第一层账本数据,所述许可链的区块头数据对应的系统外验证数据作为所述联盟链的第二层账本数据,以将多个许可链的TXO交易数据链合并为联盟链的TXO交易数据链。
  8. 根据权利要求6所述的方法,其中,所述许可链的系统外验证数据还包括元数据,每个许可链的区块中包含一个元数据;
    对于任意一种资产类型代币,所述元数据包括所述资产类型代币的UTXO模型向余额模型的累计转入数额承诺和累计转出数额承诺,以及所述累计转入数额承诺与所述累计转出数额承诺之差大于等于零的范围证明数据;
    所述元数据还包括:所述资产类型代币的跨许可链交易的累计输入数额承诺加累计发行数额承诺的第一结果,和跨许可链交易的累计输出数额承诺加累计回收数额承诺的第二结果,以及所述第一结果与第二结果之差大于等于零的范围证明数据。
  9. 根据权利要求6所述的方法,所述方法还包括:
    所述许可链的系统外验证数据集合生成第一默克尔树,所述许可链的除系统外验证数据的其他数据集合生成第二默克尔树,所述第一默克尔树的树根散列值和所述第二默克尔树的树根散列值记录在所述许可链的区块头数据中。
  10. 根据权利要求6所述的方法,所述方法还包括:
    第一许可链生成跨链输出交易数据,输出唯一的跨链交易地址;
    第二许可链生成跨链输入交易数据,输入引用所述跨链交易地址;
    其中:所述跨链交易地址包含表示当前地址为跨链交易地址的地址类型、第一许可链的唯一标识、第二许可链的唯一标识和第一许可链跨链的唯一数。
  11. 根据权利要求10所述的方法,其中,所述第一许可链生成跨链输出交易数据,包括:
    所述第一许可链生成跨链输出的第一算法的第一佩德森承诺、第二算法的第二佩德森承诺,以及所述第一佩德森承诺和所述第二佩德森承诺所承诺的第二生成元系数所表示的第一数额相等的证明数据。
  12. 一种链式结构交易处理方法,其特征在于,用于第一许可链和第二许可链的跨链交易,所述第一许可链使用第一算法,所述第二许可链使用第二算法,所述链式结构交易处理方法包括:
    第一许可链与第二许可链跨链交易时,生成跨链输出的第一算法的第一佩德森承诺、第二算法的第二佩德森承诺,以及所述第一佩德森承诺和所述第二佩德森承诺所承诺的第二生成元系数所表示的第一数额相等的证明数据。
  13. 根据权利要求12所述的方法,其中,
    所述证明数据包括:所述第一许可链随机生成的所述第一算法的第三佩 德森承诺、所述第二算法的第四佩德森承诺,以及第一标量、第二标量和第三标量,其中所述第三佩德森承诺和所述第四佩德森承诺所承诺的第二生成元系数所表示的第二数额相等;
    所述第一标量为第一散列值乘以所述第一数额,加上第二散列值乘以所述第二数额;
    所述第二标量为第一散列值乘以所述第一佩德森承诺的第一生成元系数,加上所述第二散列值乘以所述第三佩德森承诺的第一生成元系数;
    所述第三标量为第一散列值乘以所述第二佩德森承诺的第一生成元系数,加上所述第二散列值乘以所述第四佩德森承诺的第一生成元系数;
    其中所述第一散列值由所述第一佩德森承诺、所述第二佩德森承诺、所述第三佩德森承诺、所述第四佩德森承诺以及所述第一算法的参数和所述第二算法的参数通过第一散列函数得到;所述第二散列值由所述第一佩德森承诺、所述第二佩德森承诺、所述第三佩德森承诺、所述第四佩德森承诺以及所述第一算法的参数和所述第二算法的参数通过第二散列函数得到。
  14. 一种链式结构数据验证方法,其特征在于,所述链式结构为许可链,所述许可链包括UTXO模型的交易数据和余额模型的交易数据,所述数据验证方法包括:
    采用如权利要求1-5中任一项所述链式结构处理方法实现所述许可链的所述UTXO模型与所述余额模型的代币的流转,得到转入交易的数据和/或转出交易的数据;
    许可链外的验证者对所述转入交易的数据和/或所述UTXO模型的交易数据进行验证。
  15. 根据权利要求14所述的方法,所述方法还包括:
    许可链外的验证者对元数据进行验证,每个许可链的区块中包含一个元数据,对于任意一种资产类型代币,所述元数据包括所述资产类型代币的UTXO模型向余额模型的累计转入数额承诺和累计转出数额承诺,以及所述累计转入数额承诺与所述累计转出数额承诺之差大于等于零的范围证明数据;
    所述元数据还包括:所述资产类型代币的跨许可链交易的累计输入数额 承诺加累计发行数额承诺的第一结果,和跨许可链交易的累计输出数额承诺加累计回收数额承诺的第二结果,以及所述第一结果与第二结果之差大于等于零的范围证明数据。
  16. 一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行权利要求1-5或6-11或12-13或14-15中任一项所述的方法。
  17. 一种计算机装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1-5或6-11或12-13或14-15中任一项所述方法的步骤。
PCT/CN2022/070739 2021-08-13 2022-01-07 链结构处理、交易数据处理、数据验证方法、装置和介质 WO2023015840A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110931943.6 2021-08-13
CN202110931943.6A CN113610643A (zh) 2021-08-13 2021-08-13 链结构处理、交易数据处理、数据验证方法、装置和介质

Publications (1)

Publication Number Publication Date
WO2023015840A1 true WO2023015840A1 (zh) 2023-02-16

Family

ID=78340699

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2022/070739 WO2023015840A1 (zh) 2021-08-13 2022-01-07 链结构处理、交易数据处理、数据验证方法、装置和介质

Country Status (2)

Country Link
CN (1) CN113610643A (zh)
WO (1) WO2023015840A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022227694A1 (zh) * 2021-04-29 2022-11-03 郑杰骞 链式结构地址生成、交易数据处理方法、装置及存储介质
CN113610643A (zh) * 2021-08-13 2021-11-05 郑杰骞 链结构处理、交易数据处理、数据验证方法、装置和介质
CN114301646B (zh) * 2021-12-20 2024-04-05 众安在线财产保险股份有限公司 一种可逆向拆解的帐号合并方法、装置和存储介质
CN115357346B (zh) * 2022-10-13 2023-02-03 北京百度网讯科技有限公司 基于区块链的事务处理方法、装置、电子设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109034801A (zh) * 2018-07-31 2018-12-18 杭州复杂美科技有限公司 一种隐私交易方法及系统、设备和可存储介质
CN110020860A (zh) * 2019-04-09 2019-07-16 湖南天河国云科技有限公司 一种跨链资产转移方法、系统及计算机可读存储介质
CN111275414A (zh) * 2019-12-31 2020-06-12 深圳市网心科技有限公司 一种基于区块链的数字货币兑换方法、装置及系统
CN111275549A (zh) * 2019-12-31 2020-06-12 深圳市网心科技有限公司 基于区块链的数字货币交易方法及相关装置
WO2020240300A1 (en) * 2019-05-24 2020-12-03 nChain Holdings Limited Protocol for validating blockchain transactions
CN113610643A (zh) * 2021-08-13 2021-11-05 郑杰骞 链结构处理、交易数据处理、数据验证方法、装置和介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190251199A1 (en) * 2018-02-14 2019-08-15 Ivan Klianev Transactions Across Blockchain Networks
CN109087098A (zh) * 2018-07-27 2018-12-25 杭州复杂美科技有限公司 一种许可链的交易处理方法、系统、设备和存储介质
CN109034800A (zh) * 2018-07-31 2018-12-18 杭州复杂美科技有限公司 一种隐私交易方法、系统及设备
CN112767153A (zh) * 2019-02-01 2021-05-07 创新先进技术有限公司 区块链交易方法及装置、电子设备、存储介质
CN110008716B (zh) * 2019-02-01 2020-12-11 创新先进技术有限公司 区块链交易方法及装置、电子设备、存储介质
CN110472957A (zh) * 2019-08-20 2019-11-19 深圳市网心科技有限公司 一种区块链交易验证方法及相关设备
CN110555684A (zh) * 2019-08-26 2019-12-10 北京米弘科技有限公司 基于区块链系统的账户及系统
CN110728504A (zh) * 2019-09-06 2020-01-24 平安壹钱包电子商务有限公司 区块链的数据处理方法、装置、设备及可读存储介质
CN112348677B (zh) * 2020-11-11 2024-04-26 郑杰骞 地址生成、区块链在线离线交易方法、装置、系统及介质
CN113127908B (zh) * 2021-04-29 2024-04-26 郑杰骞 链式结构地址生成、交易数据处理方法、装置及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109034801A (zh) * 2018-07-31 2018-12-18 杭州复杂美科技有限公司 一种隐私交易方法及系统、设备和可存储介质
CN110020860A (zh) * 2019-04-09 2019-07-16 湖南天河国云科技有限公司 一种跨链资产转移方法、系统及计算机可读存储介质
WO2020240300A1 (en) * 2019-05-24 2020-12-03 nChain Holdings Limited Protocol for validating blockchain transactions
CN111275414A (zh) * 2019-12-31 2020-06-12 深圳市网心科技有限公司 一种基于区块链的数字货币兑换方法、装置及系统
CN111275549A (zh) * 2019-12-31 2020-06-12 深圳市网心科技有限公司 基于区块链的数字货币交易方法及相关装置
CN113610643A (zh) * 2021-08-13 2021-11-05 郑杰骞 链结构处理、交易数据处理、数据验证方法、装置和介质

Also Published As

Publication number Publication date
CN113610643A (zh) 2021-11-05

Similar Documents

Publication Publication Date Title
TWI749583B (zh) 鏈式結構資料儲存、驗證、實現方法、系統、裝置及媒體
WO2023015840A1 (zh) 链结构处理、交易数据处理、数据验证方法、装置和介质
US11799637B2 (en) Methods and systems for blockchain-implemented event-lock encryption
JP7289298B2 (ja) 低エントロピーパスワードを用いてブロックチェーントランザクションを許可するためのコンピュータ実装されたシステム及び方法
WO2019174430A1 (zh) 区块链数据处理方法、管理端、用户端、转换装置及介质
US11429967B2 (en) Mechanism for efficient validation of finality proof in lightweight distributed ledger clients
US20190305938A1 (en) Threshold secret share authentication proof and secure blockchain voting with hardware security modules
KR100315991B1 (ko) 원격노드로부터의디지털서명계약서
JP2024056954A (ja) 動的ノードグループのための秘密鍵のセキュアな再利用
CN110288480B (zh) 一种区块链的私密交易方法及装置
WO2019100864A1 (zh) 一种数据处理方法和装置
JP2020523838A (ja) ネットワークの障害時におけるオフ・ブロックチェーン・チャネルに関して生じるセキュリティ関連脆弱性に対処するためのシステム及び方法
Blömer et al. Updatable anonymous credentials and applications to incentive systems
US20200334677A1 (en) Transparent blockchain sidechains to support blockchain processing heterogeneity
CN113127908B (zh) 链式结构地址生成、交易数据处理方法、装置及存储介质
EP3966998A1 (en) Hash function attacks
US10805090B1 (en) Address whitelisting using public/private keys and ring signature
JP7284064B2 (ja) コンソーシアムブロックチェーンシステム、計算機、トランザクション承認方法
Gunasinghe et al. PrivIdEx: Privacy Preserving and Secure Exchange of Digital Identity Assets.
US11818271B2 (en) Linking transactions
TW202217620A (zh) 用於憑證驗證之驗證需求文件
TW202231018A (zh) 識別阻斷服務攻擊之技術
CN112184245B (zh) 一种跨区块链的交易身份确认方法及装置
KR102354044B1 (ko) 니모닉 코드를 이용한 개인키 복구 방법
WO2022227694A1 (zh) 链式结构地址生成、交易数据处理方法、装置及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22854845

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE