CN117640170A - 用于简化可执行指令以优化可验证计算的系统 - Google Patents

用于简化可执行指令以优化可验证计算的系统 Download PDF

Info

Publication number
CN117640170A
CN117640170A CN202311496467.5A CN202311496467A CN117640170A CN 117640170 A CN117640170 A CN 117640170A CN 202311496467 A CN202311496467 A CN 202311496467A CN 117640170 A CN117640170 A CN 117640170A
Authority
CN
China
Prior art keywords
arithmetic circuit
computer
implemented method
simplified
arithmetic
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.)
Pending
Application number
CN202311496467.5A
Other languages
English (en)
Inventor
亚历山卓·科瓦奇
西蒙娜·马代奥
帕特里克·莫蒂林斯基
史蒂芬·文森特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nchain Holdings Ltd
Original Assignee
Nchain Holdings Ltd
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
Priority claimed from GBGB1718505.9A external-priority patent/GB201718505D0/en
Priority claimed from GBGB1719998.5A external-priority patent/GB201719998D0/en
Priority claimed from GBGB1720768.9A external-priority patent/GB201720768D0/en
Priority claimed from GBGB1801753.3A external-priority patent/GB201801753D0/en
Priority claimed from GBGB1805948.5A external-priority patent/GB201805948D0/en
Priority claimed from GBGB1806444.4A external-priority patent/GB201806444D0/en
Application filed by Nchain Holdings Ltd filed Critical Nchain Holdings Ltd
Publication of CN117640170A publication Critical patent/CN117640170A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3218Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/423Preprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/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
    • 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/405Establishing or using transaction specific rules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Accounting & Taxation (AREA)
  • Computing Systems (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Power Engineering (AREA)
  • Data Mining & Analysis (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Devices For Executing Special Programs (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及分布式分类账技术,例如基于共识的区块链。描述了用于简化从智能合约导出的算术电路的计算机实现的方法。使用区块链网络来实现本发明。获得用第一编程语言编码的条件集合。将该条件集合转换为用第二编程语言编码的编程条件集合。将该编程条件集合预编译为预编译的程序代码。将该预编译的程序代码转换为算术电路。对该算术电路进行简化,形成简化的算术电路,并存储该简化的算术电路。

Description

用于简化可执行指令以优化可验证计算的系统
本申请为中国申请号为201880072678.7,申请日为2018年10月29日,名称为“用于简化可执行指令以优化可验证计算的系统”的专利申请的分案申请。
技术领域
本发明主要涉及区块链技术,尤其涉及通过将智能合约转换为算术电路并简化该算术电路,来优化和模糊智能合约。本发明还利用密码学技术和数学技术来加强与通过区块链网络进行电子转账相关的安全性。本发明尤其适用于,但不限于,用于智能合约的生成和执行。
背景技术
在本文中,“区块链”这一术语可指几种类型的基于计算机的电子分布式分类账中的任何一种。这些包括基于共识的区块链和事务链技术、经过许可和未经许可的分类账、共享分类账及其变种。应注意,本发明不限于用在特定区块链;包括非商业应用在内的替代区块链(alternative blockchain)实现方式和协议也落入本发明的范围内。例如,本发明中描述的技术都可以提供优势用于优化其它区块链应用。
区块链是点对点的电子分类账,其是基于计算机的,去中心化分布式系统实现的,该系统由区块组成,区块又由事务(transaction)和其它信息组成。在一些示例中,“区块链事务”是指对字段值的结构化集合进行编码的输入消息,该字段值集合包括数据和条件集合。满足该条件集合是将字段集写入区块链数据结构的前提条件。例如,每个事务都可以是对在区块链系统中参与者之间的数字资产的控制的转移进行编码的数据结构,并且包括至少一个输入和至少一个输出。在一些实施例中,“数字资产”是指与使用权相关联的二进制数据。在一些实施例中,可以通过将数字资产的至少一部分从第一实体重新关联到第二实体来执行对数字资产的控制的转移。区块链的每个区块包括前一个区块的散列,因此区块被链接在一起以创建永久的不可变的事务记录,该记录自起初就被写入区块链。
在一些例子中,“基于堆栈的脚本语言”是指一种支持各种基于堆栈或面向堆栈的执行模型和操作的编程语言。也就是说,基于堆栈的脚本语言可以使用堆栈。使用堆栈,可以将值压入堆栈的顶部或从堆栈的顶部弹出。对堆栈执行的各种操作可以使得将一个或多个值推入堆栈的顶部或从堆栈的顶部弹出。例如,OP_EQUAL操作会从堆栈中弹出顶部两项,将它们进行比较,然后将结果(例如,如果相等则为1,如果不相等则为0)压入堆栈的顶部。对堆栈执行的其它操作,例如OP_PICK,可以允许从堆栈顶部以外的位置选择项。在一些本发明的实施例采用的一些脚本语言中,可能至少有两个堆栈:主堆栈和备用堆栈。脚本语言的一些操作可以将项从一个堆栈的顶部移动到另一个堆栈的顶部。例如,OP_TOALTSTACK将值从主堆栈的顶部移动到备用堆栈的顶部。应当注意的是,在某些情况下,基于堆栈的脚本语言可能不仅仅限于以严格的后进先出(LIFO)的方式操作。例如,基于堆栈的脚本语言可以支持将堆栈中的第n项复制或移动到顶部的操作(例如,OP_PICK和OP_ROLL)。使用基于堆栈的脚本语言编写的脚本可以被压入到逻辑堆栈上,该逻辑堆栈可以通过使用任何合适的数据结构(如向量、列表或堆栈)来实现。
为了将事务写入区块链,必须对其进行“验证(validated)”。网络节点执行工作以确保每个事务均有效,而无效事务则被网络拒绝。节点可以具有不同于其它节点的有效性标准。由于区块链中的有效性是基于共识的,因此,如果大多数节点同意事务有效,则事务被视为有效。安装在节点上的软件客户端通过执行未花费事务(UTXO)锁定和解锁脚本来对部分引用UTXO的事务执行此验证工作。如果锁定和解锁脚本的执行评估为真(TRUE),并且满足其它验证条件(如果适用),则事务被节点验证为有效。将经验证的事务传播到其它网络节点,随后可以选择将该事务包括在区块链中。因此,为了将事务写入区块链,必须:i)由接收事务的第一节点验证事务-如果事务被验证,则该节点将事务中继到网络中的其它节点;且ii)将事务添加到构建的新区块;且iii)挖掘事务,即将事务添加到过去事务的公共分类账。当将足够数量的区块添加到区块链以使事务实际上不可逆时,事务被视为已确认。
为了实现新系统,数字企业家已经开始探索使用加密安全系统,以及可以存储在区块链上的数据。如果区块链可以用于自动化任务和流程,那将是非常有利的。这些解决方案在其应用中更加通用的同时,将能够利用区块链的好处(例如,事件的永久性防篡改记录、分布式处理等)。
本发明描述了一个或多个基于区块链的计算机程序的技术方面。基于区块链的计算机程序可以是记录在区块链事务中的机器可读和可执行程序。基于区块链的计算机程序可以包括能够处理输入以产生结果的规则,然后可以根据这些结果执行操作。当前研究的一个领域是使用基于区块链的计算机程序来实现“智能合约”。与以自然语言编写的传统合约不同,智能合约可以是设计成自动执行机器可读合约或协议条款的计算机程序。
在实施例中,尽管可以在智能合约的特定步骤中对与特定实体的交互进行编码,还可以用其它方式自动执行和自我执行智能合约。这个智能合约是机器可读和可执行的。在一些示例中,自动执行是指成功实现UTXO的转移的智能合约的执行。应注意,在此类示例中,能够使得UTXO转移的“实体”是指其能够创建解锁脚本而无需证明某些秘密知识的实体。换句话说,可以在不验证数据来源(例如,创建了解锁事务的实体)是否有权访问加密秘密(例如,私有非对称密钥、对称密钥等)的情况下验证解锁事务。此外,在此类示例中,自我执行是指使得区块链网络的验证节点根据约束来执行解锁事务。在一些示例中,从技术意义上使用“解锁”UTXO(也称为“花费”UTXO)是指创建解锁事务,该解锁事务引用UTXO并作为有效执行。
区块链事务输出包括锁定脚本和与数字资产所有权有关的所有权的信息。锁定脚本,也可以称为负载(encumbrance),通过指定转移UTXO所需符合的条件来“锁定”数字资产。例如,锁定脚本可以要求在解锁脚本中提供某些数据以解锁相关联的数字资产。锁定脚本也称为“脚本公钥(scriptPubKey)”。要求一方提供数据以解锁数字资产的技术涉及将数据的散列嵌入锁定脚本内。然而,如果在创建锁定脚本时数据是未确定的(例如,未知的且未固定的),则会出现问题。
本发明可以描述为验证方法/系统,和/或描述为用于控制区块链事务的验证的控制方法/系统。在一些实施例中,经验证的区块链事务使得事务记录在区块链上,这在一些应用中可以使得数字资产经由区块链进行交换或转移。数字资产可以是由区块链管理的资源的单元。尽管在一些实施例中,数字资产可以用作加密货币,但是在实施例中,设想数字资产可以另外或替代地用于其它情形。应注意,本发明虽然适用于数字资产的控制,但是本发明本质上是技术性的,并且可以在利用区块链数据结构而不一定涉及数字资产转移的其它情形使用。
发明内容
因此,期望提供在这些方面中的一个或多个方面中改进区块链技术的方法和系统。现在已经设计出了这样一种改进的解决方案。
因此,期望提供一种计算机实现的方法,该计算机实现的方法包括:
将用第一编程语言编码的条件集合转换为用第二编程语言编码的编程条件集合;
将该编程条件集合预编译为预编译的程序代码;
将预编译的程序代码转换为算术电路;以及,
对算术电路进行简化,形成简化的算术电路。
该方法可以包括获得用第一编程语言编码的条件集合的步骤。该步骤可以在上述转换步骤之前执行。
该方法可以包括存储简化的算术电路的步骤。
对算术电路进行简化可以涉及最大程度地简化算术电路,从而产生简化的算术电路。
算术电路可以是有向无环图。另外或替代地,有向无环图可以包括表示逻辑门和输入的节点集合。另外或替代地,有向无环图可以包括边线集合,该边线集合连接表示逻辑门和输入之间的导线的节点。
算术电路可以包括逻辑子模块,该逻辑子模块包括节点集合的真子集。另外或替代地,对算术电路进行简化可以包括减少逻辑子模块,把逻辑子模块与其余的算术电路分开。
逻辑子模块中逻辑门之间的导线宽度可以是1位。
算术电路还可以包括另一逻辑子模块,该逻辑子模块包括节点集合的另一子集。另外,节点子集和节点的其他子集可以是不相交的。另外,对算术电路进行简化还可以包括通过使用第一处理器核心来减少逻辑子模块,与通过使用第二处理器核心来减少其他逻辑子模块同时进行。
该计算机实现的方法还可以包括根据优化计算资源使用的启发式算法,将逻辑子模块分配给第一处理器核心,并将另一逻辑子模块分配给第二处理器核心。
启发式算法可以是最长处理时间贪心算法。
对算术电路进行简化可以包括确定算术电路的质蕴涵项集合。另外,对算术电路进行简化还可以包括将该质蕴涵项集合表示为和之积,该和之积包括第一乘积项和第二乘积项。另外,对算术电路进行简化还可以包括简化第一乘积项和第二乘积项。
通过把布尔最小化规则应用到第一乘积项和第二乘积项,可以简化第一乘积项和第二乘积项。
第二编程语言可以是C++。
第一编程语言可以是一种用于撰写机器可读金融合同的计算机编程语言。
该计算机实现的方法还可以包括生成二次程序,该二次程序包括用于描述简化的算术电路的多项式集合。另外,计算机实现的方法还可以包括生成参数集合,区块链网络中的节点在执行二次程序时将会使用该参数集合。
还期望提供一种系统,该系统包括:处理器;以及包含可执行指令的存储器,处理器执行可执行指令会导致该系统执行所要求保护的任何方法。
还期望提供一种其上存储有可执行指令的非暂时性计算机可读存储介质,计算机系统的一个或多个处理器执行可执行指令会导致该计算机系统至少执行所要求保护的任何方法。
本发明可以描述为一种验证方法/系统和/或一种控制方法/系统,用于通过区块链控制数字资产的交换或转移。在一些实施例中,数字资产是令牌(token)。如下文所述,本发明还可以描述为一种安全方法/系统,用于通过区块链网络或平台执行操作的新的、改进的和有利的方法。另外或替代地,本发明还可以提供一种改进的区块链编程工具或辅助设备。本发明可以提供一种改进的、有效的和优化的安排方式,用于促进或实现分布式可验证的计算。
附图说明
本发明的这些方面和其它方面将从本文中描述的实施例显而易见,且参考本文中描述的实施例进行阐明。现在将仅通过举例的方式并参考附图来描述本发明的实施例,其中:
图1示出可以在其中实现各种实施例的区块链环境;
图2示出根据实施例进行逻辑简化的示例;
图3示出根据实施例的可验证计算和参与者的示例的泳道图;
图4示出根据实施例从领域专用语言合约到二次算术程序的工作流程的示例;
图5示出根据实施例的包含逻辑子模块的算术电路的示例;
图6示出根据实施例的并行处理逻辑子模块的示例;
图7示出根据实施例进行质蕴涵项简化的示例;
图8示出根据实施例将领域专用语言合约转换为简化的算术电路的示例的流程图;
图9示出根据实施例的算术电路简化示例的流程图;以及
图10示出可以在其中实现各种实施例的计算环境。
具体实施方式
首先将参考图1,其示出根据本发明的实施例的与区块链相关联的示例区块链网络100。在本实施例中,示例区块链网络100包括实施为点对点分布式电子装置的区块链节点,每个节点都运行软件和/或硬件的实例,软件和/或硬件执行遵循区块链协议的操作,至少部分的该区块链协议在节点102的操作者之间是约定的。在一些示例中,“节点”指分布在区块链网络中的点对点电子装置。
在一些实施例中,节点102可以包括任何合适的计算装置(例如,数据中心中的服务器、客户端计算装置(例如,台式电脑、笔记本电脑、平板电脑、智能手机等)、计算资源服务提供者的分布式系统中的多个计算装置、或例如,图10的计算装置1000等任何合适的电子客户端装置)。在一些实施例中,节点102具有用于接收数据消息或对象的输入,该数据消息或对象代表所提议的事务(例如事务104)。在一些实施例中,可查询节点所维护的信息,例如事务104的状态信息。
如图1所示,一些节点102通信连接到一个或多个其他节点102。这种通信连接可以包括有线或无线通信中的一个或多个。在该实施例中,节点102各自维护区块链中所有事务的“分类账”的至少一部分。以这种方式,分类账是分布式分类账。由影响分类账的节点处理的事务可以由其它节点中的一个或多个验证,从而保持分类账的完整性。
关于哪些节点102可以与哪些其他节点通信,示例区块链网络100中的每个节点能够与一个或多个其他节点102通信就足够了,从而在节点之间传递的消息可以在示例区块链网络100(或其相当大的一部分)中传播,假设该消息是区块链协议指示应该被转发的消息。一个这样的消息可以是由节点102中的一个(例如节点102A)所提议的事务的发布,该消息随后将沿着路径(如路径106)传播。另一个这样的信息可以是一个新的区块的发布,该新的区块被提议包含在区块链中。
在实施例中,节点102中的至少一些节点是网络节点,这些网络节点执行复杂的计算,例如解决加密问题。解决加密问题的网络节点为区块链创建新区块,并将该新区块广播到节点102中的其它节点。节点102中的其它节点验证网络节点的工作,并在验证后将区块接受到区块链中(例如,通过将其添加到区块链的分布式分类账中)。在一些示例中,区块是一组事务,通常用前一个区块的时间戳和“指纹”(例如,散列)标记。通过这种方式,每个区块都可以链接到前一个区块,从而在区块链中创建链接区块的“链”。在实施例中,通过节点102的共识将有效区块添加到区块链。另外,在一些示例中,区块链包括经过验证的区块的列表。
在实施例中,如本发明中所描述的,节点102中的至少一些节点用作验证事务的验证节点。在一些示例中,事务包括提供数字资产所有权的证明的数据以及用于接受或转移数字资产所有权/控制权的条件。在一些示例中,“解锁事务”是指按照先前事务的UTXO指示,将数字资产的至少一部分重新关联(例如,转移所有权或控制权)到与区块链地址相关联的实体的事务。在一些示例中,“先前事务”是指包括UTXO的区块链事务,该UTXO由解锁事务引用。在一些实施例中,事务包括“锁定脚本”,该“锁定脚本”在能够转移所有权/控制权(“解锁”)之前用必须满足的条件阻塞事务。
在一些实施例中,区块链地址是与实体相关联的一串字母数字字符,数字资产的至少一部分的控制转移到/重新关联到该实体。在一些实施例中实现的一些区块链协议中,和实体相关联的公钥与区块链地址之间存在一一对应的关系。在一些实施例中,事务的验证可以包括验证锁定脚本和/或解锁脚本中指定的一个或多个条件。在成功验证事务104后,验证节点将事务104添加到区块链并将其分发到节点102。
图2示出本发明实施例中的示例200。具体地,图2描绘了转换为算术电路214的智能合约206,算术电路优化模块随后会简化该算术电路214,从而减少区块链中的工作节点250确定智能合约206的结果所需的资源。
在实施例中,智能合约202是以一种格式编写的合约或协议,这种格式使计算装置能够执行该合约的条款和/或确定该合约的条款是否已经履行。智能合约202可以包括规则集合和/或条件集合,根据一组输入值对该规则集合和/或条件集合进行评估得到的结果,使计算装置能够确定智能合约202的结果,然后从而可以根据结果执行进一步的动作。
本发明的一个目的是描述一种协议,该协议允许实体通过使用领域专用编程语言来编写规则集合和/或条件集合,例如智能合约202的规则集合和/或条件集合。在一些示例中,领域专用编程语言或“领域专用语言”(domain-specific language,简称DSL)是指用于特定使用领域的计算机编程语言。DSL的示例包括超文本标记语言(Hypertext MarkupLanguage,简称“HTML”)、动作建模语言(Actulus Modeling language,简称“AML”)、数字资产建模语言(Digital Asset Modeling Language,简称“DAML”)、金融产品标记语言(Financial Products Markup Language,简称“FpML”)和列表式编程语言(Emacs Lisp)。
在一些示例中,与DSL相比,通用编程语言或“通用语言”(general-purposelanguage,GPL)适用范围更广泛。通用编程语言的示例包括Ada、ALGOL、Assemblylanguage、BASIC、Boo、C、C++、C#、Clojure、COBOL、Crystal、D、Dart、Elixir、Erlang、F#、Fortran、Go、Harbour、Haskell、Idris、Java、JavaScript、Julia、Lisp、Lua、Modula-2、NPL、Oberon、Objective-C、Pascal、Perl、PHP、Pike、PL/I、Python、Ring、RPG、Ruby、Rust、Scala、Simula、Swift、以及Tcl。C++可以在本发明的实施例中查阅,是一种具有命令性、面向对象和通用编程特性的通用编程语言,同时还提供用于低级存储器操作的便利性。
在实施例中,算术电路214是表示智能合约202的有向无环图(DAG)。也就是说,DAG的边线(“导线”)可以表示输入值或图中节点之间的值,而节点可以表示算术运算(例如,求和、乘积等)。因此,算术电路214的输入值与智能合约的输入值相关联,并且在实施例中,智能合约的结果与算术电路214的结果相匹配。应当注意,在各种实施例中,匹配不一定要求相等。例如,如果两个值不相等但在数学上等价,则这两个值可以匹配。在另一示例中,如果两个值对应于公共对象(例如,值),或者以某种预定方式互补和/或它们满足一个或多个匹配条件,则这两个值可以匹配。通常,可以使用任何一种确定是否存在匹配的方法。
在实施例中,简化的算术电路216是算术电路减少模块220根据布尔最小化规则或其他数学等价规则对算术电路进行简化的结果。例如,在布尔代数中,表达式u+uv可以简单地最小化为u,同样地算术电路:
可以最小化为:
因此,算术电路减少模块220可以通过评估算术电路214来减少或最小化电路的方式来减少/简化算术电路214,从而产生算术电路减少模块220所输出的简化的算术电路216。
在实施例中,算术电路减少模块220是硬件或软件,该硬件或者软件运行后,通过执行将算术电路214中的乘积项与布尔最小化规则或其他数学等价规则进行比较的操作,以确定在何处和何种方式可以简化算术电路214,从而导致产生简化的算术电路216。有关算术电路减少模块220所执行的操作的更多细节,请参见图7-图9的描述。
在实施例中,工作节点250是区块链网络中的节点,类似于图1中的节点102和图3中的工作节点350。也就是说,工作节点250可以是一种通信连接到区块链网络中的一个或多个其他节点的计算装置,用于处理和/或验证区块链事务。在一些实施例中,工作节点250可以用于在给定输入值集合的情况下确定算术电路(例如简化的算术电路216)的输出。
在实施例中,可以将合约的执行外包给不可信的当事方,同时可以公开地验证合约执行的正确性。在实施例中,协议使用能确保完整性、可靠性和零知识的加密基元(Cryptographic Primitives)。在一些示例中,“完整性”指的是如果证明器(prover)正确遵循协议,验证器(verifier)能够判断输出的有效性。在一些示例中,“可靠性”指的是验证器不能在输出的真实性方面欺骗证明器。在一些示例中,“零知识”指的是验证器能够验证输出,而不能获得用于生成该输出的输入。
以这种方式,可以使用DSL来生成智能合约,因为DSL旨在使智能合约的编写和阅读对人类来说更加容易,而无需非专业程序员自己实现任何加密。在本发明的实施例中,编译器/解释器将自动把用户DSL源代码编译为可用于区块链的加密协议。在本发明中,实施例提供了根据简单算术门(Arithmetic Gates)来表示复杂合约的高度优化的解决方案。这种表示可以看作是构建能够提供分布式可验证计算的综合管道的解决方案或工具。
图3示出本发明实施例中涉及的可验证计算的过程300和参与者的示例。如图3所示,可验证计算的过程300可以包括客户端节点340、工作节点350和验证器节点360,在本发明的实施例中这些节点参与执行可验证计算协议中的步骤。在实施例中,客户端节点340、工作节点350或验证器节点360中的一个或多个是区块链网络中的节点,例如图1的示例区块链网络100中的节点102。
在实施例中,设置阶段涉及用DSL编写合约。解释器可以是客户端节点340,解释器将源代码作为输入并产生由“导线”组成的算术电路导线从字段/>携带值并连接到加法和乘法门。应当注意,算术电路本身可能是DAG,而不是硬件电路,并且导线可能是DAG中的边线。但是,可以想到,算术电路可以体现在具有导线和逻辑门的物理电路中。在302中,客户端节点340把用GPL编写的计算/>编译为算术电路/>在上述实施例中,客户端节点340向工作节点350提供算术电路/>和输入/>
根据本发明的实施例,可以从电路中生成二次程序/>该二次程序包括能够完整描述原始电路/>的多项式集合。然后,可以生成公共参数,以供工作节点350和验证器节点360用于执行和验证二次程序。
在304中,工作节点350在输入上执行电路/>或二次程序/>并声称输出是/>在一些实施例中,工作节点350(即证明器)被期望获得/>的有效脚本;因此,在过程300的306中,工作节点350对脚本进行编码。在一些示例中,/>的有效脚本是对电路导线的值的分配,以便分配给输入导线的值是/>中间值对应于/>中每个门的正确操作,并且分配给输出导线的值为/>如果声称的输出不正确(即/>),则/>的有效脚本不存在。
在308中,工作节点350向客户端节点340提供输出在实施例中,通过使用由客户端节点340或从客户端节点340选择秘密值s,以获得公共评估密钥EK和公共验证密钥VK。在实施例中,工作节点350使用这些公钥来评估特定输入/>上的计算。在实施例中,输出/>内部电路导线的值,以及EK用于产生正确性证明π。证明π可以存储在区块链上并由多方(例如,验证器节点360)验证,而不需要工作节点350单独与多方交互。以这种方式,验证器节点360可以使用公共验证密钥VK和证明π来验证310中的事务,从而验证合约。
图4示出根据本发明实施例的从用DSL编码的智能合约到二次算术程序(quadratic arithmetic program,简称QAP)的工作流的示例400。具体来说,图4描绘了转换器404将DSL智能合约402转换为GPL合约406。GPL预编译器408(也称为预处理器)包含GPL合约406引用的外部库410,以生成GPL预处理合约412。将GPL预处理合约412转换为算术电路414,对算术电路414进行优化以生成简化的算术电路416,从算术电路416中可以获得QAP多项式418。
在实施例中,DSL智能合约402是用具有精确语义的形式语言编写的合约。在实施例中,DSL智能合约402包括条件集合,并且DSL智能合约402的结果取决于是否满足该条件集合。智能合约的一个示例是保险合同,该保险合同以被保险人的保费和保险人对被保险人的潜在分配作为输入。如果被保险人在智能合约期限内遭受损失(例如,满足第一条件),则智能合约的执行将保费分配给保险人,并将损失的分配分发给被保险人。另一方面,如果被保险人在智能合约期限内没有遭受损失,则智能合约的执行将保费分配给保险人,并将潜在分配返还给保险人。
在实施例中,转换器404是软件程序,该软件程序执行后接收条件集合,例如用DSL编写的DSL智能合约402,并将DSL代码转换为GPL源代码,例如GPL合约406。在实施例中,GPL合约406是GPL程序,例如C++程序,该GPL程序包含DSL智能合约402中定义的合约。
在实施例中,GPL预编译器408是计算机可执行程序,该计算机可执行程序处理GPL合约406和所需的外部库410,以产生独立的GPL预处理合约412。在实施例中,GPL预编译器408评估常数表达式,并且注册在GPL合约406中找到的符号。
在一个实施例中,外部库410是通过GPL合约406调用预写好的子程序,函数,类,容器,值和/或变量类型的集合。例如,通过调用外部库410,GPL合约406获得了该库的功能,而不必自己去实现该功能。
在实施例中,GPL预处理合约412包括表达式和运算符的集合。运算符可以包括算术运算符(例如,加法(+),乘法(*)等),比较运算符(例如,小于(<),等于(==),大于或等于(>=)等),条件语句(例如if-then(?,:))或逻辑运算符(例如,AND(&&),OR(||),NOT(!),XOR(⊕)等)。在一些实施例中,所产生的主函数是具有预定义的名称和格式。
在实施例中,算术电路414是变量集合上的DAG。在实施例中,入度(indegree)为0的DAG的每个节点是代表变量(例如,xi)的输入门,而DAG的每个其他节点是求和门(+)或乘积门(×)。在实施例中,每个门(节点)的出度(outdegree)为1,因此基础图(theunderlying graph)是有向树。在实施例中,算术电路414具有两个复杂度的量度:大小和深度。在一些示例中,算术电路的“大小”基于算术电路414中的门的数量。在一些示例中,算术电路的“深度”基于算术电路中最长的有向路径的长度。
生成算术电路414之后,可以将其简化。在布尔代数中,任何布尔函数都可以以最小项规范形式(minterm canonical form)表示。对于n个变量的函数f(x1,…,xn),其中每个变量以其自然(natural)形式或补码(complemented)形式出现一次的乘积项可以称为最小项。也就是说,在某些示例中,“最小项”是n个变量的逻辑表达式,该逻辑表达式仅使用求补(complement)算符(‘)和与(conjunction)算符()。例如,abcd和ab’cd’是f(a,b,c,d)的两个最小项。以这种方式,n个变量中将会有2n个f。
在某些示例中,“蕴涵项(implicant)”是指包括一组f的最小项的乘积(即每当乘积项P等于1,如果f取值1,则乘积之和中的乘积项P是f的蕴涵项。例如,对于以下函数:
f(a,b,c,d)=ab+bc′+d
ab、bc’、abc’、abc’d、和d是f的蕴涵项示例。在一些示例中,“质蕴涵项(primeimplicant)”是指不能被更通用的(例如,具有更少的文字(literals))蕴涵项所涵盖的蕴涵项。也就是说,质蕴涵项是一个乘积项P,如果从P中删除了任何文字,则会产生f的非蕴涵项。使用上面的示例,abc’d不是质蕴涵项,因为可以删除文字以使其成质蕴涵项(如果abc’d要成为质蕴涵项,则f(a,b,c,d)必须等于1,且必须a=1且b=1且c=0且d=1。
但是,可以看出,如果删除a、b、和c’,f(a,b,c,d)可以等于1(即,如果d=1)。同样,如果删除c’和d,f(a,b,c,d)可以等于1(即,如果ab=1)。同样,如果删除a和d,f(a,b,c,d)可以等于1(即,如果bc’=1)。从布尔项中删除文字的过程可以称为“扩展(expansion)”。一个文字会导致该项为true的输入组合的数量加倍。例如,在不改变f的覆盖(cover)的情况下,abc’可以扩展为ab或bc’。
布尔函数的所有质蕴涵项之和可以称为“布莱克规范形式(Blake canonicalform)”。如果质蕴涵项涵盖了其他质蕴涵项的组合无法涵盖的函数输出,该则质蕴涵项可以称为“必要质蕴涵项(essential prime implicants)”。具有n个输入变量的逻辑函数的质蕴涵项的数量可以等于3n/n。总所周知,最小质蕴涵覆盖(minimum prime cover)的提取属于多项式复杂程度的非确定性(nondeterministic polynomial time-complete,NP-complete)问题中的一类问题。以下方法说明了使用奎因-麦克拉斯基算法(Quine-McCluskey算法)构建质蕴涵项图的一个示例。
对于在McCluske的《布尔函数的最小化》(Minimization of Boolean Functions)(1956)文章中的Quine-McCluskey算法,该算法返回了布尔函数的质蕴涵项的完整列表。在一个实施例中,返回的质蕴涵项用于建立质蕴涵项表,其可用作一个或多个算法的输入,以提取函数的必要质蕴涵项。将要简化的布尔函数f(x1,…,xn)可以表示为:
用于表示f输出1的M个最小项mi包括在索引向量(index vector)v中。每个索引vi代表给定输入序列的二进制编码:
因此,v中的每个最小项可以根据xi值表示为自然形式或补码形式输入的乘积。如果成对的最小项的表示形式以单个数的变化而变化,则可以将这些最小项组合在一起。无法进一步组合的项是质蕴涵项。必要质蕴涵项表是通过使用不可约质蕴涵项列表而构建的。
在一个示例中,给定n=4,M=6,和v={4,8,10,11,12,15}的布尔函数f(x1,…,xn),Quine-McCluskey算法用于提取质蕴涵项,以生成质蕴涵项表,如下所示:
因此,f可以表示为以下最小项的和:
m4=f(0,1,0,0)=a′bc′d′
m8=f(1,0,0,0)=ab′c′d′
m10=f(1,0,1,0)=ab′cd′
m11=f(1,0,1,1)=ab′cd
m12=f(1,1,0,0)=abc′d′
m15=f(1,1,1,1)=abcd
在有4个输入的情况下,最小项在[m0,m15]范围内,其中m0=f(0,0,0,0)且m15=f(1,1,1,1)。f的标准积之和表达式如下所示:
f(a,b,c,d)=a’bc’d’+ab’c’d’+ab’cd’+ab’cd+abc’d’+abcd
当单个数发生变化时,最小项被合并,并且相应的输入设置为“-”。这将产生大小为2的蕴涵项:
m4,12=f(-,1,0,0)[不可约]
m_(8,9)=f(1,0,0,-)
m8,10=f(1,0,-,0)
m8,12=f(1,-,0,0)
m9,11=f(1,0,-,1)
m10,11=f(1,0,1,-)
m10,14=f(1,-,1,0)
m12,14=f(1,1,-,0)
m11,15=f(1,-,1,1)
m14,15=f(1,1,1,-)
一些大小为2的蕴涵项可能不是不可约的,但可能再次组合而产生大小为4的蕴涵项:
m8,9,10,11=f(1,0,-,-)[不可约]
m8,10,12,14=f(1,-,-,0)[不可约]
m10,11,14,15=f(1,-,1,-)[不可约]
这次,所有大小为4的蕴涵项都是不可约的。不可约蕴含项列表对应于布尔函数的质蕴涵项。最后一步,可以使用质蕴涵项列表来构建必要质蕴涵项表。如下表格1中显示了质蕴涵项表的示例:
表1:
表中的“勾号”对应于需要给定索引向量的质蕴涵项;也就是给定的输入序列,以便为真。如果的v列只有一个勾号,则相应的最小项只能由一个质蕴涵项覆盖。这样的质蕴涵项对于f是必要质蕴涵项。
在实施例中,简化的算术电路416是简化或最小化的有向无环图(DAG),在给定一组输入的情况下,该有向无环图可用于在给定输入集合下确定条件集合的结果,例如在DSL智能合约402中所指定的条件。在一些实施例中,简化的算术电路416是最小化(即,简化到最小程度)的算术电路。在一些实施例中,最佳算术电路可以不一定是最小算术电路(例如,根据电路中算术运算的数量和类型,某些较大的算术电路可以比较小的算术电路更快地评估),并且在这些实施例中,简化的算术电路416是经优化的(例如,最大速度,内存使用更少,最有效的处理器利用率等),但是不一定是最小化的算术电路。
在实施例中,QAP多项式418是一个或多个表达式,包括以数学公式表示的变量和系数,该数学公式提供了对原始算术电路(例如,图4中的算术电路414)的完整描述。在实施例中,QAP多项式中的多项式是根据它们在算术电路的根处的评估来定义的,例如在格纳罗(Gennaro,R.)等人的题为《二次跨度程序和没有优先级码点的简明非交互式零知识(Quadratic Span Programs and Succinct NIZKs without PCPs)》(2013)的文章中进行了描述。在实施例中,QAP多项式被编码到区块链事务的锁定脚本中,以代表智能合约。在实施例中,锁定脚本在执行时接收参数值集合(例如,作为执行锁定脚本的结果),这些参数值作为变量输入到QAP多项式中,从而确定智能合约的结果。
在实施例中,GPL预编译器408产生GPL预处理合约412,其可以是包含算术门的算术电路。但是需要注意,由于条件和流控制语句,复杂的算术电路也嵌入了逻辑子模块。在实施例中,这些子模块仍然被转换为算术电路,但是它们的特点是以1位宽度的门连接,如图5所示。
图5示出了包含本发明实施例的逻辑子模块的算术电路500的示例模型。如图5所示,算术电路500可以包含1位输入502和输入组504,它们进入逻辑子模块508A-08B和/或未分组的算术门506A-06D,以产生输出510。图5中的粗线代表1位宽度的导线组(例如,总线),细线代表1位导线。由于逻辑和算术1位宽度电路是双重电路(例如,可以用至少两种方式表示—和之积或积之和),因此可以将逻辑电路简化应用于算术电路500中的逻辑子模块508A-08B。
逻辑子模块*508A-08B中的每一个都可以包括算术电路中的节点集合的真(严格)子集。也就是说,逻辑子模块可以不包含整个算术电路。此外,在一些实施例中,逻辑子模块*508A-08B是不相交的;例如,即,在这样的实施例中,逻辑子模块*508A-08B不共享任何内部门。而且,由于在这样的实施例中逻辑子模块508A-08B不共享任何内部门,因此简化过程可以并行(例如,可以并行地精简每一个逻辑子模块508A-08B),从而减少运算的时间复杂度。
在一个实施例中,1位输入502是可以携带代表1或0的值的导线,而输入组504代表多条1位导线。复杂的算术电路可以嵌入从条件和流控制语句派生的逻辑子模块。在实施例中,这些逻辑子模块也被转换成算术电路,但是它们的特点可以是以1位宽度的门连接,例如所描述的逻辑子模块508A-08B。在一些实施例中,逻辑子模块508A-08B中的导线的宽度只有1位。
由于逻辑和算术1位宽度电路是双重电路,因此逻辑简化也可以应用于逻辑子模块508A-08B。此外,由于逻辑子模块508A-08B不共享任何内部门,因此简化过程可以并行,以减少算术电路500的时间复杂度;例如,可以分配单独的处理器核心,以对逻辑子模块508A-08B中的每一个进行逻辑简化。在一个实施例中,可以利用计算优化的启发式算法,将逻辑子模块508A-08B分配给不同的处理核心以进行逻辑简化。该计算优化的启发式算法可以是用于优化计算资源使用的启发式算法。可以使用计算优化启发式算法的一个示例是最长处理时间(the longest processing time,LPT)贪心算法(greedy algorithm)。在这种启发式算法中,如果按处理时间对逻辑子模块508A-08B进行分类,并以迄今为止的最早结束时间把逻辑子模块508A-08B分配给机器,则调度程序(scheduler)将尝试平衡每个事务的计算量。可以在以下图7的说明中找到更多详细信息。相反,在实施例中,未分组的算术门506A-06D可能不会并行减少,因为未分组的算术门506A-06D由1位导线组共享,例如,输入组504。应当注意,在实施例中,简化应用于门的数量,但是输入(例如,1位输入502和输入组504)的数量仍保持不变。
在一个实施例中,输出510是根据算术电路500在输入502和504上执行的运算的结果。在一些实施例中,结果是真值或假值。在其他实施例中,结果是一个或多个1位值的集合。在其他实施例中,结果可以是任何其他值或算术电路支持的值。
如上所述,在实施例中,Quine-McCluskey算法可以返回布尔函数f的质蕴涵项的完整列表。此外,可以使用彼得里克(Petrick)的《从质蕴涵项集直接确定布尔函数的无冗余形式(A Direct Determination of the Irredundant Forms of a Boolean Functionfrom the Set of Prime Implicants)》(1956)的文章中描述的方法(Petrick方法)来减少质蕴涵项的数量,以便将f表示为如下所述的必要质蕴涵项的一个组成。
可以使用辅助布尔函数f*以对偶形式来表示质蕴涵项表(例如质蕴涵项表1)中表示的布尔函数f。当覆盖质蕴涵项表的所有列时,辅助布尔函数f*为真。因此,f*可以表示为对每个索引向量vi有贡献(即对f的每个输出有贡献)的质蕴涵项之和σi的乘积:
例如,表1中质蕴涵项的σi项列表变为:
σ0=σ(v0=4)=bc’d’
σ1=σ(v1=8)=ab’+ad’
σ2=σ(v2=10)=ab’+ad’+ac
σ3=σ(v3=11)=ab’+ac
σ4=σ(v4=12)=bc’d’+ad’
σ5=σ(v5=15)=ac
因此,对偶函数f*变为:
f*=(bc’d’)(ab’+ad’)(ab’+ad’+ac)(ab’+ac)(bc’d’+ad’)(ac)
如果我们让zi代表f*中的单个最小项,则该函数可以重写为:
f*=z0(z1+z2)(z1+z2+z3)(z1+z3)(z0+z2)z3
可以使用某些布尔规则来进一步简化布尔函数,例如以下所示的规则:
1.u+uv=u
2.u+u’v=u+v
3.(u+v)(u+w)=u+vw
注意,存在其他布尔简化规则,并且在本发明的范围内可以预期,在本发明的实施例中可以使用更少,更多或不同的布尔简化规则。但是,使用上述规则,可以对f*进行以下简化:
(z1+z2)(z1+z3)=z1+z2z3 (规则3)
z0(z0+z2)=z0 (规则1)
通过对f*进行更多简化,f*可以经历以下简化:
f*=z0z3(z1+z2z3) (z1+z2+z3)
f*=z0z3(z1z1+z1z2+z1z3+z1z2z3+z2z2z3+z2z3z3)
f*=z0z3(z1+z1z2+z1z3+z1z2z3+z2z3+z2z3)
f*=z0z3(z1+z2z3)
f*=z0z1z3+z0z2z3
因此,函数f*可以由z0z1z3和z0z2z3覆盖,并且两个项均包含最小数量的最小项(考虑到不同的对偶函数f*=z0z1z3+z0z2,由于其更小数量的项,因此z0z2项将用于表示f)。因此,f可以简化为:
f=z0+z1+z3=bc’d’+ab’+ac
或者:
f=z0+z2+z3=bc’d’+ad’+ac
以这种方式,辅助布尔函数f*可以表示为对f的每个输出有贡献的质蕴涵项之和σi的乘积:
其中M是用于表示f最小项的个数,而σi项表示如下:
/>
因此,zik表示贡献和σi的第k个质蕴涵项。
σ1=z11+z12+…+z1|z1|
σ2=z21+z22+…+z2|z2|
σM=zM1+zM2+…+zM|zM|
图6示出了本申请实施例中的精简逻辑子模块的示例600。具体地,图6描绘了使用四个处理器核心622处理八个逻辑子模块608A-08H的系统的说明性示例。在示例600中,使用LPT贪婪算法,目标是所有处理器核心几乎同时完成处理,以优化对系统处理器的使用。最初,逻辑子模块608A-08H可以按照复杂度(例如,逻辑子模块608A-08H中逻辑门的编号)排序,作为逻辑子模块608A-08H相对于彼此的处理时间的估计。但是,可以考虑使用其他方法估算逻辑子模块608A-08H的处理时间。
在示例600中,对于具有最长预估处理时间的前四个逻辑子模块608A-08D来说,它们可能以循环或伪随机的方式分布在处理器核心622之间。可以看出,正在由核心4处理的逻辑子模块608D是四个逻辑子模块中预估处理时间最少的,并且是第一个完成的。因此,为核心4分配了具有第五长的预估处理时间的未处理逻辑子模块,即逻辑子模块608E。核心3接下来完成对逻辑子模块608C的处理,并为核心分配了具有第六长的预估处理时间的逻辑子模块,即逻辑子模块608F。核心2完成对逻辑子模块608B的处理,并接收逻辑子模块608G。最后,核心1完成对具有最长预估处理时间的逻辑子模块的处理,并接收八个逻辑子模块608A-08H中预估处理时间最短的逻辑子模块,即逻辑子模块608H。从示例600中可以看出,所有四个处理器核心622几乎同时完成了对八个逻辑子模块608A-08H的处理,从而减少了处理器的空闲时间。
图7示出了本发明的实施例的精简质蕴涵项的示例700。具体来说,图7描绘了质蕴涵项集合σ15,它们根据上述步骤进行了简化,例如通过图2的算术电路减少模块220。例如,将乘积项σi视为列表{σ1,…,σM}。在实施例中,在每个步骤,比较列表的两个成员(称为“左”侧成员和“右”侧成员),并在可能的情况下对这两个成员进行简化。在示例700中,在时间t1处,左侧成员702A(σ1)与右侧成员704A(σ2)配对,并且通过使用布尔简化规则对f*的乘积项进行简化,例如上面所列出的那些。如果可以简化左侧成员702A和右侧成员704A,则左侧成员将会替换成新项σ12。但是,在示例700中可以看出,左侧成员702A和右侧成员704A无法进一步简化。
随后,在时间t2处,左侧成员702B(σ1)与右侧成员704B(σ3)合并,并根据布尔简化规则进行处理。在这种情况下,在示例700中可以看出,左侧成员702B和右侧成员704B可以简化为σ13。因此,在时间t3处,将左侧成员702C(σ13)与右侧成员704C(σ4)进行比较。在示例700中,左侧成员702C和右侧成员704C无法进一步简化。
类似地,在时间t4处,同样无法进一步简化左侧成员702D和右左侧成员704D(σ5)。检查完所有右侧成员后,将左侧成员设置为其列表中的下一个成员,在示例700中,下一个成员为σ2。因此,在时间t5处,左侧成员702E(σ2)与右侧成员704E(σ4)合并,并且根据布尔简化规则,它们简化为σ24,成为左侧成员的值。因此,在时间t6处,左侧成员702F(σ24)与右侧成员(σ5)合并、处理、并简化为σ245。在时间t7处,当没有更多检查可用时,则该过程结束。
在实施例中,简化步骤的数量的上限是个。在实施例中,一对(左,右)的每个简化步骤包括执行以下操作:
1.尝试根据规则1简化(左,右),
2.尝试根据规则2简化(左,右),
3.尝试根据规则3简化(左,右),
在实施例中,规则1、2和3中的u项表示(左,右)对中的共同部分。实施例中左右侧成员的加数之间的交叉检查(交叉)的特征在于时间复杂度O(n2)或O(n log n),这取决于特定的实现方式(例如,朴素(naive)列表或排序(sorted)列表)。
在实施例中,在简化过程完成之后,剩余乘积项σi可以以显式形式表示为时间复杂度为O(1)的p项σ*之和。因此,每个项可以独立地涵盖函数f*
注意,p的值取决于简化操作成功的次数。在实施例中,由于每个项实际上是质蕴涵项zi的乘积,因此可以用包含最小数目的质蕴涵项的σ*中的最小项/>来覆盖函数f*
其中且函数/>用于计算包含在/>中的质蕴涵项的数量。最后,对偶函数f可以表示为:
在实施例中,可以预期,可以通过不同的处理核并行地简化各个逻辑子模块,例如图5的逻辑子模块508A-08B,以进行更快的处理。在这样的实施例中,由调度程序执行计算优化的启发式算法,将各个逻辑子模块分配给用于逻辑简化阶段的不同处理核心,计算优化的启发式算法称为LPT贪心算法。如果按作业的处理时间对作业进行排序,然后以迄今为止的最早结束时间将作业分配给机器(处理核心),则调度程序将尝试平衡每个要处理的逻辑子模块的计算量。
在实施例中,假定将逻辑子模块(Si)的初始门gi的数量作为简化Si所需的期望时间的合适指标(例如,门的数量越大,预期的处理时间越长)。因此,假如给定要精简的具有N个核心和n个子模块的机器,子模块Si按其gi值(1≤i≤n)进行排序,然后在给定的时间t’处分配给具有最低集合Gj(t’)度量的核心j的表{listj}:
或者,可以以循环方式将子模块Si分配给处理核心,而不考虑gi值。例如,当i(modulo N)=j时,可以把Si分配给核心j。
图8示出根据各种实施例将DSL合约转换为简化的算术电路的过程800的示例的流程图。过程800中的一些或全部(或所描述的任何其它过程,或这些过程的变化形式和/或组合)可以在配置有可执行指令和/或其它数据的一个或多个计算机系统的控制下执行,并且可以实现为在一个或多个处理器上共同执行的可执行指令。可执行指令和/或其它数据可以存储在非暂时性计算机可读存储介质上(例如,永久存储在磁、光或闪存介质上的计算机程序)。
例如,过程800的一些或全部可以由一个或多个合适的计算装置执行(例如,由数据中心中的服务器、由客户端计算装置、由计算资源服务提供者的分布式系统中的多个计算装置、或由如图10的计算装置1000的任何合适的电子客户端装置)过程800包括一系列操作,其中用DSL编写的智能合约转换为GPL,进行预编译,并转换成算术电路。根据本申请中描述的技术,对算术电路进行简化并输出。
在802中,执行过程800的系统获得用DSL编写的智能合约。如上所述,DSL可以是用于特定领域的计算机编程语言。在实施例中,可以使用用于组成金融工具(例如智能合约)的DSL。这样的DSL可以使普通用户更容易编写和阅读智能合约,并且可以允许非专业程序员编写智能合约,而无需实现任何加密。
在804中,执行流程800的系统将智能合约转换为GPL。以这种方式,DSL智能合约转换为通用形式,可以把该通用形式编译/解释进用于区块链的加密协议。在实施例中,通用语言是C++源代码,但是可以预期的是,可以使用其他通用语言。
在806中,GPL源代码是预编译的,可能包括将库文件和/或其他依存项带入预编译的源代码中。预编译的过程可能还会模糊变量名,好处可以是在将智能合约提交到区块链后,在公众面前掩饰其智能合约的性质。
在808中,执行过程800的系统把预编译的源代码转换为算术电路,例如通过将各种命令,条件语句,变量,算术运算转换为算术算法。这种算术算法可以表示为有向循环图,类似于图5所示的有向循环图。
在810中,执行过程800的系统对808中产生的算术算法执行简化过程。该简化过程可以类似于图9的过程900。该简化过程可以导致产生较小的简化算术算法,该算术算法可以由区块链节点(例如图1的节点102)更有效地处理。
在812中,执行处理800的系统输出简化的算术电路。在一些实施例中,系统把简化的电路提供给另一过程,该另一过程把简化的电路转换成QAP多项式,例如图4的QAP多项式418。在其他实施例中,系统把简化的电路提供给数据存储或其他存储资源,供将来使用。在其他实施例中,系统通过例如用户界面的显示,向原始DSL合约的一个或多个实体(例如,创建实体或受其影响的实体)提供简化的电路。应注意,可以以多种顺序和组合(包括并行地)执行在802到812中执行的一个或多个操作。
图9是示出根据各种实施例的用于预编译的GPL智能合约的算术电路简化的过程900的示例的流程图。过程900中的一些或全部(或所描述的任何其它过程,或这些过程的变化形式和/或组合)可以在配置有可执行指令和/或其它数据的一个或多个计算机系统的控制下执行,并且可以实现为在一个或多个处理器上共同执行的可执行指令。可执行指令和/或其它数据可以存储在非暂时性计算机可读存储介质上(例如,永久存储在磁、光或闪存介质上的计算机程序)。
例如,过程900的一些或全部可以由一个或多个合适的计算装置执行(例如,由数据中心中的服务器、由客户端计算装置、由计算资源服务提供者的分布式系统中的多个计算装置、或由例如图10的计算装置1000等任何合适的电子客户端装置)。例如,过程900可以作为执行图2的算术电路减少模块220的结果而执行。过程900包括一系列操作,其中确定算术逻辑电路的质蕴涵项,并将其表示为和之积,将每对乘积项与逻辑规则进行比较,以确定是否可以简化乘积项,并在简化所有对之后,以简化形式输出算术电路。过程900的操作进一步说明了图8中810的操作。
在902,执行处理900的系统获得算术电路。算术电路可以由最小项集合组成。在实施例中,所获得的算术电路可以从预编译的GPL源代码(例如,从图4的GPL预处理合约412)转换而来。在实施例中,所获得的算术电路表示智能合约。在一些实施例中,智能合约先前以DSL格式撰写,然后转换为GPL格式。
在904中,执行该过程的系统,以例如上述关于图4的方式,隔离算术逻辑电路的质蕴涵项。也就是说,系统可以从算术电路最小项集合中确定蕴涵项集合。系统可以确定蕴涵项集合的哪些成员包含算术电路的质蕴涵项集合(即,如果除去任何文字,则导致产生非蕴涵项的乘积项)。
在906中,质蕴涵项集合可以视为质蕴涵项之和σi的乘积,例如以上面关于图5所述的方式。在908中,执行过程900的系统比较第一对乘积项σL和σR,从而在910中确定是否可以根据布尔逻辑规则对这一对乘积项进行简化,例如以参照图7所述的方式。如果不可以,系统进行到914。否则,如果可以,则系统在912中组合并简化这一对乘积项,系统随后进行到914。
在914中,执行过程900的系统确定是否已比较所有对的乘积项,以及是否得出不可约。如果不是,则系统返回到908,以比较下一对乘积项。否则,在916中,系统输出简化的乘积项,该简化的乘积项作为简化的算术电路的积之和。如以上关于图8的812所述,系统可以将简化的算术电路输出到另一个过程以进行进一步处理,输出到数据存储,输出到数据文件,或输出到用户界面。应注意,可以以各种顺序和组合(包括并行地)执行在902到916中执行的一个或多个操作。
应注意,在描述所公开的实施例的上下文中,除非另有说明,否则使用关于执行“指令”通常不独立执行(例如,传输数据、计算等)的操作的可执行指令(也称为代码、应用程序、代理等)的表述表示机器正在执行指令,从而使机器执行指定的操作。
图10是可以用于实践本发明的至少一个实施例的计算装置1000的示意性简化框图。在各种实施例中,计算装置1000可以用于实现以上示出和描述的任何系统。例如,计算装置1000可以配置成用作数据服务器、网络服务器、便携式计算装置、个人计算机或任何电子计算装置。如图10所示,计算装置1000可以包括一个或多个处理器1002,其在实施例中通过总线子系统1004与多个外围子系统通信并且可操作地连接到多个外围子系统。在一些实施例中,这些外围子系统包括存储子系统1006,该存储子系统包括存储器子系统1008和文件/磁盘存储子系统1010、一个或多个用户界面输入装置1012、一个或多个用户界面输出装置1014以及网络接口子系统1016。此类存储子系统1006可以用于信息的临时或长期存储。
在一些实施例中,总线子系统1004提供用于使计算装置1000的各个组件和子系统能够按预期彼此通信的机制。尽管总线子系统1004被示意性地示出为单个总线,但是总线子系统的替代实施例可以利用多个总线。在一些实施例中,网络接口子系统1016提供到其它计算装置和网络的接口。在一些实施例中,网络接口子系统1016用作从计算装置1000接收数据并将数据传输到其他系统的接口。在一些实施例中,总线子系统1004用于传输例如细节、搜索项等的数据。
在一些实施例中,用户界面输入装置1012包括一个或多个用户输入装置,例如键盘;指向装置,例如集成鼠标、轨迹球、触摸板或图形输入板;扫描仪;条形码扫描仪;嵌入显示器中的触摸屏;音频输入装置,例如语音识别系统、麦克风;以及其它类型的输入装置。通常,术语“输入装置”的使用旨在包括所有可能的类型的装置和用于向计算装置1000输入信息的机制。在一些实施例中,一个或多个用户界面输出装置1014包括显示子系统、打印机或非视觉显示器,例如音频输出装置等。在一些实施例中,显示子系统包括阴极射线管(CRT)、例如液晶显示器(LCD)等平板装置、发光二极管(LED)显示器或投影或其它显示装置。通常,术语“输出装置”的使用旨在包括所有可能类型的装置和用于从计算装置1000输出信息的机制。一个或多个用户界面输出装置1014可以用于例如呈现用户界面以便于用户与应用程序交互,在这样的交互可能适当时执行所描述的过程及其中的变化形式。
在一些实施例中,存储子系统1006提供计算机可读存储介质,用于存储提供本发明的至少一个实施例的功能的基本编程和数据构造。当由在一些实施例中的一个或多个处理器执行时,应用程序(程序、代码模块、指令)提供本发明的一个或多个实施例的功能,并且在实施例中被存储在存储子系统1006中。这些应用程序模块或指令可以由一个或多个处理器1002执行。在各种实施例中,存储子系统1006另外提供用于存储根据本发明使用的数据的存储库。在一些实施例中,存储子系统1006包括存储器子系统1008和文件/磁盘存储子系统1010。
在实施例中,存储器子系统1008包括多个存储器,包括用于在程序执行期间存储指令和数据的主随机存取存储器(RAM)1018和/或可以存储固定指令的只读存储器(ROM)1020。在一些实施例中,文件/磁盘存储子系统1010为程序和数据文件提供非暂时性永久性(非易失性)存储,并且可以包括硬盘驱动器、软盘驱动器以及相关联的可移动介质、光盘只读存储器(CD-ROM)驱动器、光盘驱动器、可移动介质盒式磁盘以及其它类似的存储介质。
在一些实施例中,计算装置1000包括至少一个本地时钟1024。在一些实施例中,本地时钟1024是表示从特定开始日期开始发生的滴答数的计数器,并且在一些实施例中可以一体地位于计算装置1000内。在各种实施例中,本地时钟1024用于以特定的时钟脉冲来同步计算装置1000的处理器和其中所包括的所有子系统的处理器中的数据传送,并且可以用于协调计算装置1000与数据中心中的其它系统之间的同步操作。在另一个实施例中,本地时钟是可编程间隔计时器。
计算装置1000可以具有各种类型,包括便携式计算机装置、平板计算机、工作站或下文描述的任何其它装置。另外,计算装置1000可以包括另一装置,通过一个或多个端口(例如,USB、耳机插孔、闪电接口等),该装置在一些实施例中可以连接到计算装置1000。在实施例中,这种装置包括接受光纤连接器的端口。因此,在一些实施例中,此装置用于将光信号转换为电信号,该电信号可以通过将该装置连接到计算装置1000的端口进行传输以用于处理。由于计算机和网络的不断变化的性质,因此图10中描绘的计算装置1000的描述是为了说明装置的优选实施例的特定示例。具有比图10中描绘的系统更多或更少组件的许多其它配置也是可能的。
因此,说明书和附图应被认为是说明性的而不是限制性的。然而,显而易见的是,在不脱离如本发明的范围的情况下,可以对其进行各种修改和改变。同样,其它变化形式也在本发明的范围内。因此,尽管所公开的技术易于进行各种修改和替换构造,但是其某些图示的实施例在附图中示出并且已在上文详细描述。然而,应了解,无意将本发明限制于所公开的特定形式,相反,其目的是涵盖落入本发明范围内的所有修改、替代构造和等效物。
除非本文另有说明或与上下文明显矛盾,否则在描述本公开的内容中使用术语“a”和“an”和“the(所述)”以及类似指示对象应理解为涵盖单数以及复数。除非另有指出,否则术语“包括(comprising)”、“具有(having)”、“包括(including)”和“包含(containing)应理解为开放式术语(即,意指“包括但不限于”)。术语“连接(connected)”,当未经修改且指物理连接时,应被解释为部分或全部包括在内、附接或接合在一起,即使存在某些干预。除非另外指示,否则本公开中值范围的列举仅旨在用作分别指代落入所述范围内的每个单独值的速记方法,并且每个单独值都并入说明书中,如同单独地列举一般。除非另有说明或与上下文相矛盾,否则术语“集(set)”(例如,“项目集(a set of items)”)或“子集(subset)”的使用应被解释为包括一个或多个组成部分的非空集合。此外,除非另有说明或与上下文相矛盾,否则术语对应集的“子集(subset)”不一定表示对应集的真子集,而是子集和对应集可以相同。
除非另有明确说明或上下文明显矛盾,否则连接语言,例如“A、B、和C中的至少一个”或“A、B和C中的至少一个”形式的短语,通过上下文以另外的方式理解为一般用于表示项目、术语等,可以是A或B或C,或A和B和C的集的任何非空子集。例如,在具有三个组成部分的集的说明性示例中,连接短语“A、B、和C中的至少一个”和“A、B和C中的至少一个”指的是以下任何集:{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}。因此,此类连接语言通常并不意味着暗示某些实施例要求至少一个A、至少一个B和至少一个C均要存在。
除非另有说明或上下文明显矛盾,否则所描述的过程的操作可以任何合适的顺序执行。所描述的过程(或其变化形式和/或组合)可以在配置了可执行指令的一个或多个计算机系统的控制下执行,并且可以实现为通过硬件或其组合在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)。在一些实施例中,代码可以存储在计算机可读存储介质上,例如,呈包括可由一个或多个处理器执行的多个指令的计算机程序的形式。在一些实施例中,计算机可读存储介质是非暂时性的。
除非另外要求,否则所提供的任何和所有示例或示例性语言(如,“例如”)的使用仅在于更好地阐明本发明的实施例,且不对本发明的范围施加限制。本说明书中的任何语言均不应理解为指示实施本发明所必需的任何未主张要素。
描述了本发明的实施例,包括发明人已知的用于实施本发明的最佳模式。在阅读前面的描述后,这些实施例的变化对于所属领域的一般技术人员而言将变得显而易见。发明人期望熟练技术人员适当地采用这些变化形式,并且发明人意图以不同于所具体描述的方式实践本发明的实施例。因此,本发明的范围包括适用法律所允许的所叙述主题的所有修改和等效物。此外,除非另有说明或上下文明显矛盾,否则上述元件的所有可能变化形式的任何组合都包括在本发明的范围内。
所引用的所有参考文献,包括出版物、专利申请以及专利特此以引用的方式并入,其引用程度就如同每一参考文献单独地并且特定地指示为以引用的方式并入并且全文阐述一般。
应注意,上文提及的实施例说明本发明而非限制本发明,且所属领域的技术人员将能够在不脱离本发明的范围的情况下设计许多替代实施例。在权利要求书中,放置在圆括号内的任何附图标记不应被解释为限制权利要求。词语“包括(comprising,compries)”等不排除任何权利要求或整个说明书中列出的元件或步骤之外的元件或步骤的存在。在本说明书中,“包括(comprises)”意味着“包括(includes)或由...组成(consists of)”,并且“包括(comprising)”意味着“包括(including)或由...组成(consisting of)”。对元件的单数引用并不排除对此类元件的复数引用,且反之亦然。本发明可以通过包括几个不同元件的硬件以及通过适当编程的计算机来实现。在列出若干构件的装置权利要求项中,可以通过硬件中的同一个物件实施若干这些构件。在彼此不同的附属权利要求项中叙述某些措施这一单纯事实并不指示不能使用这些措施的组合来获得效果。
本发明中描述和建议的新颖技术扩展了区块链的功能,而没有破坏能确保区块链数据结构内存储的数据完整性的区块链特性。例如,这些技术可以改善计算领域,尤其是在数字记录验证领域,在记录中嵌入的区块链事务中定义了验证条件。本发明中描述和建议的技术可以通过使区块链节点能够通过简化在区块链上被验证的智能合约来优化处理资源的使用,来进一步改善智能合约生成和实现领域中的计算领域。另外,本发明中描述和建议的技术可通过将智能合约转换成可从其推导二次算术程序的简化算术电路来提高区块链节点的效率,从而使区块链节点能够更有效地执行智能合约。
此外,通过将智能合约从DSL转换为GPL,然后转换为简化的算术,一旦将智能合约提交到区块链,就可以公开看到智能合约细节,从而特别带来问题,为了克服这种问题,本发明中描述和建议的技术可以必须植根于计算机技术中,这样可以导致模糊智能合约的某些细节。

Claims (16)

1.一种计算机实现的方法,包括:
获得用第一编程语言编码的条件集合,其中所述第一编程语言是领域专用语言,其中所述条件集合包含于智能合约;
将所述条件集合转换为用第二编程语言编码的编程条件集合,其中所述第二编程语言是通用编程语言;
将所述编程条件集合预编译为预编译的程序代码;
将所述预编译的程序代码转换为算术电路;
对所述算术电路进行简化,形成简化的算术电路;和
存储所述简化的算术电路。
2.根据权利要求1所述的计算机实现的方法,其中,所述的将所述编程条件集合预编译包括:模糊变量名。
3.根据权利要求1所述的计算机实现的方法,其中,对所述算术电路进行简化涉及最大程度地简化所述算术电路,从而产生所述简化的算术电路。
4.根据前述权利要求中任一项所述的计算机实现的方法,其中,所述算术电路是有向无环图,包括:
表示逻辑门和输入的节点集合;和
连接表示逻辑门和输入之间的导线的节点的边线集合。
5.根据权利要求4所述的计算机实现的方法,其中:
所述算术电路包括逻辑子模块,所述逻辑子模块包括所述节点集合的真子集;和
对所述算术电路进行简化包括减少逻辑子模块,把逻辑子模块与其余的算术电路分开。
6.根据权利要求5所述的计算机实现的方法,其中,所述逻辑子模块中逻辑门之间的所述导线的宽度是1位。
7.根据权利要求5或6中的任一项所述的计算机实现的方法,其中:
所述算术电路还包括另一逻辑子模块,所述另一逻辑子模块包括所述节点集合的另一子集,并且所述节点子集和节点的其他子集是不相交的;和
对所述算术电路进行简化还包括通过使用第一处理器核心来减少所述逻辑子模块,与通过使用第二处理器核心来减少其他逻辑子模块同时进行。
8.根据权利要求7所述的计算机实现的方法,还包括:根据优化计算资源使用的启发式算法,将所述逻辑子模块分配给第一处理器核心,并将所述另一逻辑子模块分配给第二处理器核心。
9.根据权利要求8所述的计算机实现的方法,其中,所述启发式算法是最长处理时间贪心算法。
10.根据任一前述权利要求所述的计算机实现的方法,其中,对所述算术电路进行简化包括:
确定所述算术电路的质蕴涵项集合;
将所述质蕴涵项集合表示为和之积,所述和之积包括第一乘积项和第二乘积项;和
简化第一乘积项和第二乘积项。
11.根据权利要求10所述的计算机实现的方法,其中,通过把布尔最小化规则应用到所述第一乘积项和所述第二乘积项,简化所述第一乘积项和所述第二乘积项。
12.根据任一前述权利要求所述的计算机实现的方法,其中,所述第二编程语言是C++。
13.根据任一前述权利要求所述的计算机实现的方法,其中,所述第一编程语言是一种用于撰写机器可读金融合同的计算机编程语言。
14.根据任一前述权利要求所述的计算机实现的方法,还包括:
生成二次程序,所述二次程序包括用于描述所述简化的算术电路的多项式集合;和
生成参数集合,区块链网络中的节点在执行二次程序时使用所述参数集合。
15.一种系统,包括:
处理器;和
包含可执行指令的存储器,所述处理器执行所述可执行指令会导致所述系统执行根据前述权利要求中任一项所述的计算机实现的方法。
16.一种存储有可执行指令的非暂时性计算机可读存储介质,计算机系统的处理器执行所述可执行指令会导致所述计算机系统至少执行根据权利要求1至14中任一项所述的计算机实现的方法。
CN202311496467.5A 2017-11-09 2018-10-29 用于简化可执行指令以优化可验证计算的系统 Pending CN117640170A (zh)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
GB1718505.9 2017-11-09
GBGB1718505.9A GB201718505D0 (en) 2017-11-09 2017-11-09 Computer-implemented system and method
GBGB1719998.5A GB201719998D0 (en) 2017-11-30 2017-11-30 Computer-Implemented system and method
GB1719998.5 2017-11-30
GBGB1720768.9A GB201720768D0 (en) 2017-12-13 2017-12-13 Computer-implemented system and method
GB1720768.9 2017-12-13
GBGB1801753.3A GB201801753D0 (en) 2018-02-02 2018-02-02 Computer-implemented system and method
GB1801753.3 2018-02-02
GBGB1805948.5A GB201805948D0 (en) 2018-04-10 2018-04-10 Computer-implemented system and method
GB1805948.5 2018-04-10
GBGB1806444.4A GB201806444D0 (en) 2018-04-20 2018-04-20 Computer-implemented system and method
GB1806444.4 2018-04-20
PCT/IB2018/058432 WO2019092542A1 (en) 2017-11-09 2018-10-29 System for simplifying executable instructions for optimised verifiable computation
CN201880072678.7A CN111345004B (zh) 2017-11-09 2018-10-29 用于简化可执行指令以优化可验证计算的系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201880072678.7A Division CN111345004B (zh) 2017-11-09 2018-10-29 用于简化可执行指令以优化可验证计算的系统

Publications (1)

Publication Number Publication Date
CN117640170A true CN117640170A (zh) 2024-03-01

Family

ID=64100702

Family Applications (6)

Application Number Title Priority Date Filing Date
CN202311496467.5A Pending CN117640170A (zh) 2017-11-09 2018-10-29 用于简化可执行指令以优化可验证计算的系统
CN201880073019.5A Pending CN111345005A (zh) 2017-11-09 2018-10-29 在区块链上记录验证密钥的系统
CN201880072678.7A Active CN111345004B (zh) 2017-11-09 2018-10-29 用于简化可执行指令以优化可验证计算的系统
CN201880072801.5A Pending CN111316595A (zh) 2017-11-09 2018-10-29 用于保护验证密钥不被更改并验证正确性证明的有效性的系统
CN201880072692.7A Pending CN111406379A (zh) 2017-11-09 2018-10-29 用于可证实计算的类似c的智能合约的算术增强
CN201880072729.6A Pending CN111316594A (zh) 2017-11-09 2018-11-01 分布式计算系统和方法

Family Applications After (5)

Application Number Title Priority Date Filing Date
CN201880073019.5A Pending CN111345005A (zh) 2017-11-09 2018-10-29 在区块链上记录验证密钥的系统
CN201880072678.7A Active CN111345004B (zh) 2017-11-09 2018-10-29 用于简化可执行指令以优化可验证计算的系统
CN201880072801.5A Pending CN111316595A (zh) 2017-11-09 2018-10-29 用于保护验证密钥不被更改并验证正确性证明的有效性的系统
CN201880072692.7A Pending CN111406379A (zh) 2017-11-09 2018-10-29 用于可证实计算的类似c的智能合约的算术增强
CN201880072729.6A Pending CN111316594A (zh) 2017-11-09 2018-11-01 分布式计算系统和方法

Country Status (9)

Country Link
US (8) US20210377041A1 (zh)
EP (7) EP3707855A1 (zh)
JP (10) JP7208989B2 (zh)
KR (5) KR20200080265A (zh)
CN (6) CN117640170A (zh)
SG (5) SG11202004149UA (zh)
TW (1) TWI806918B (zh)
WO (5) WO2019092542A1 (zh)
ZA (1) ZA202002575B (zh)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11783679B2 (en) 2014-04-08 2023-10-10 Micro-Gaming Ventures, LLC Location-based wagering via remote devices
US10903997B2 (en) * 2017-10-19 2021-01-26 Autnhive Corporation Generating keys using controlled corruption in computer networks
EP3707855A1 (en) 2017-11-09 2020-09-16 Nchain Holdings Limited System for securing verification key from alteration and verifying validity of a proof of correctness
CN110032568B (zh) * 2018-12-20 2020-05-12 阿里巴巴集团控股有限公司 数据结构的读取及更新方法、装置、电子设备
WO2020197514A1 (en) * 2019-03-27 2020-10-01 Koc Universitesi A distributed hash table based blockchain architecture for resource constrained environments
US11516000B2 (en) * 2019-05-29 2022-11-29 International Business Machines Corporation Approximate hash verification of unused blockchain output
US11711202B2 (en) 2019-05-29 2023-07-25 International Business Machines Corporation Committing data to blockchain based on approximate hash verification
US11539527B2 (en) 2019-05-29 2022-12-27 International Business Machines Corporation Peer node recovery via approximate hash verification
US11429738B2 (en) 2019-05-29 2022-08-30 International Business Machines Corporation Blockchain endorsement with approximate hash verification
US11570002B2 (en) 2019-05-29 2023-01-31 International Business Machines Corporation Reduced-step blockchain verification of media file
EP3754899B1 (en) * 2019-06-20 2022-03-02 Telefónica Iot & Big Data Tech, S.A. Method and system for inter-dlt networks trust enhancement
CN110445755A (zh) * 2019-07-04 2019-11-12 杭州复杂美科技有限公司 交易攻击的防御方法、设备和存储介质
GB201913143D0 (en) * 2019-09-12 2019-10-30 Nchain Holdings Ltd Running a program from a blockchain
JP7284064B2 (ja) * 2019-10-16 2023-05-30 株式会社日立製作所 コンソーシアムブロックチェーンシステム、計算機、トランザクション承認方法
CN111143859A (zh) * 2020-01-07 2020-05-12 杭州宇链科技有限公司 一种采集可信数据的模组以及数据传输方法
US11792022B2 (en) 2020-02-21 2023-10-17 International Business Machines Corporation Resolution of conflicting data
JPWO2021166782A1 (zh) * 2020-02-21 2021-08-26
US11188316B2 (en) * 2020-03-09 2021-11-30 International Business Machines Corporation Performance optimization of class instance comparisons
CN111506783B (zh) * 2020-04-08 2023-12-22 百度在线网络技术(北京)有限公司 区块链中事务请求处理方法、装置、设备和介质
CA3091660A1 (en) * 2020-08-31 2021-11-03 Polymath Inc. Method, system, and medium for blockchain-enabled atomic settlement
CN111768187A (zh) 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质
CN112132576B (zh) * 2020-09-07 2021-08-06 易宝支付有限公司 基于区块链通信的支付信息处理方法及区块链信息平台
US11029920B1 (en) * 2020-10-21 2021-06-08 Chariot Technologies Lab, Inc. Execution of a conditional statement by an arithmetic and/or bitwise unit
US11456871B2 (en) * 2020-11-03 2022-09-27 Provide Technologies, Inc. System and method for autonomous mapping of enterprise identity
KR102346292B1 (ko) * 2020-11-11 2022-01-03 엘에스웨어(주) 키 정보를 이용한 트랜잭션 분류 시스템 및 방법
KR102346293B1 (ko) * 2020-12-08 2022-01-03 엘에스웨어(주) 공통 키셋정보를 이용한 트랜잭션 분산처리를 위한 블록체인 시스템 및 수행방법
GB2602010A (en) * 2020-12-15 2022-06-22 Nchain Holdings Ltd Generating and validating blockchain transactions
CN113222747B (zh) * 2020-12-31 2024-01-26 上海零数众合信息科技有限公司 一种区块链隐私交易方法
KR102594655B1 (ko) * 2021-01-11 2023-10-27 충남대학교 산학협력단 동적 연산을 통한 검증이 가능한 영지식 증명 시스템 및 증명 방법
US20220417044A1 (en) * 2021-06-25 2022-12-29 Prateek GOEL System and method to manage large data in blockchain
CN113469690B (zh) * 2021-07-23 2024-03-26 佳乔(深圳)投资有限公司 一种基于区块链的交易结算方法
CN113610474B (zh) * 2021-08-16 2023-09-22 傲林科技有限公司 一种基于事件网的库存管理方法和管理系统
US20230298064A1 (en) * 2022-01-26 2023-09-21 Seek Xr, Inc. Systems and methods for facilitating redemption of unique digital asset utility
GB2618106A (en) * 2022-04-27 2023-11-01 Nchain Licensing Ag Messaging protocol for compact script transactions
US11818207B1 (en) * 2022-07-08 2023-11-14 T-Mobile Innovations Llc Methods and systems for ledger based content delivery using a mobile edge computing (MEC) server
CN114978514B (zh) * 2022-07-27 2022-11-01 杭州友恭科技有限公司 密钥管理方法、系统、装置、电子装置和存储介质
US11792259B1 (en) 2022-09-28 2023-10-17 T-Mobile Innovations Llc Methods and systems for distributing rendering across devices in a customer premise
CN115801288B (zh) * 2023-01-10 2023-04-18 南方科技大学 一种基于区块链和零知识证明的验证方法、系统及设备
CN116610362B (zh) * 2023-04-27 2024-02-23 合芯科技(苏州)有限公司 一种处理器指令集译码方法、系统、设备和存储介质
US11882216B1 (en) * 2023-06-08 2024-01-23 Auradine, Inc. End-to-end hardware acceleration for ZKP from witness generation to proof generation

Family Cites Families (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4667290A (en) 1984-09-10 1987-05-19 501 Philon, Inc. Compilers using a universal intermediate language
JPH03126133A (ja) 1989-10-11 1991-05-29 Matsushita Electric Ind Co Ltd コンパイラ処理方法
JPH05252336A (ja) 1992-03-04 1993-09-28 Toshiba Corp 画像形成装置
US5499191A (en) 1992-06-15 1996-03-12 Minc Incorporated Multi-level logic optimization in programmable logic devices
US5297150A (en) 1992-06-17 1994-03-22 International Business Machines Corporation Rule-based method for testing of programming segments
US8639625B1 (en) * 1995-02-13 2014-01-28 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
JPH08305547A (ja) * 1995-05-11 1996-11-22 Oki Electric Ind Co Ltd Pldによるコンピュータおよびコンパイラおよびオペレーティングシステム
US5920830A (en) 1997-07-09 1999-07-06 General Electric Company Methods and apparatus for generating test vectors and validating ASIC designs
US6519754B1 (en) * 1999-05-17 2003-02-11 Synplicity, Inc. Methods and apparatuses for designing integrated circuits
EP1283422A1 (en) 2001-08-07 2003-02-12 Lucent Technologies Inc. Testbench for the validation of a device under test
WO2003032490A2 (en) * 2001-10-11 2003-04-17 California Institute Of Technology Method and apparatus for an asynchronous pulse logic circuit
US7209555B2 (en) 2001-10-25 2007-04-24 Matsushita Electric Industrial Co., Ltd. Elliptic curve converting device, elliptic curve converting method, elliptic curve utilization device and elliptic curve generating device
US7085701B2 (en) * 2002-01-02 2006-08-01 International Business Machines Corporation Size reduction techniques for vital compliant VHDL simulation models
US7281017B2 (en) * 2002-06-21 2007-10-09 Sumisho Computer Systems Corporation Views for software atomization
US6983456B2 (en) * 2002-10-31 2006-01-03 Src Computers, Inc. Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms
US7178118B2 (en) * 2003-05-30 2007-02-13 Synplicity, Inc. Method and apparatus for automated circuit design
US20060149962A1 (en) 2003-07-11 2006-07-06 Ingrian Networks, Inc. Network attached encryption
US7590236B1 (en) 2004-06-04 2009-09-15 Voltage Security, Inc. Identity-based-encryption system
US7697691B2 (en) * 2004-07-14 2010-04-13 Intel Corporation Method of delivering Direct Proof private keys to devices using an on-line service
US8200700B2 (en) 2005-02-01 2012-06-12 Newsilike Media Group, Inc Systems and methods for use of structured and unstructured distributed data
US20160004820A1 (en) 2005-02-01 2016-01-07 Newsilike Media Group, Inc. Security facility for maintaining health care data pools
JP5537032B2 (ja) * 2005-12-13 2014-07-02 コーニンクレッカ フィリップス エヌ ヴェ 安全な閾値復号プロトコル計算
TW200725415A (en) 2005-12-30 2007-07-01 Tatung Co Ltd Method for automatically translating high level programming language into hardware description language
JP4547503B2 (ja) * 2006-03-07 2010-09-22 国立大学法人徳島大学 算術符号化装置、算術符号化方法、算術符号化プログラム及びプログラムを格納したコンピュータで読み取り可能な記録媒体
US7926040B2 (en) 2006-09-06 2011-04-12 International Business Machines Corporation Method and system for timing code execution in a korn shell script
WO2008053650A1 (en) 2006-10-30 2008-05-08 Nec Corporation Common key block encrypting device, its method, its program, and recording medium
FR2918525A1 (fr) 2007-07-06 2009-01-09 France Telecom Procede asymetrique de chiffrement ou de verification de signature.
WO2009064122A1 (en) 2007-11-18 2009-05-22 Lg Electronics Inc. Methods of joint coding in mobile communication system
US8336036B2 (en) 2008-11-21 2012-12-18 Korea University Industrial & Academic Collaboration Foundation System and method for translating high programming level languages code into hardware description language code
US8165287B2 (en) 2008-12-30 2012-04-24 King Fahd University Of Petroleum & Minerals Cryptographic hash functions using elliptic polynomial cryptography
FR2947404B1 (fr) 2009-06-30 2011-12-16 Sagem Securite Cryptographie par parametrisation sur une courbe elliptique
US8189775B2 (en) 2010-02-18 2012-05-29 King Fahd University Of Petroleum & Minerals Method of performing cipher block chaining using elliptic polynomial cryptography
WO2011136089A1 (ja) 2010-04-27 2011-11-03 日本電気株式会社 符号化装置、誤り訂正符号構成方法およびそのプログラム
WO2012126086A1 (en) 2011-03-18 2012-09-27 Certicom Corp. Secure financial transactions
US8924966B1 (en) * 2011-03-31 2014-12-30 Emc Corporation Capture/revert module for complex assets of distributed information technology infrastructure
US9569771B2 (en) 2011-04-29 2017-02-14 Stephen Lesavich Method and system for storage and retrieval of blockchain blocks using galois fields
US8607129B2 (en) 2011-07-01 2013-12-10 Intel Corporation Efficient and scalable cyclic redundancy check circuit using Galois-field arithmetic
JP5697153B2 (ja) 2011-08-04 2015-04-08 キヤノンマーケティングジャパン株式会社 情報処理システム、携帯端末、制御方法、及びプログラム
US8745376B2 (en) 2011-10-14 2014-06-03 Certicom Corp. Verifying implicit certificates and digital signatures
US9215076B1 (en) * 2012-03-27 2015-12-15 Amazon Technologies, Inc. Key generation for hierarchical data access
US20150379510A1 (en) 2012-07-10 2015-12-31 Stanley Benjamin Smith Method and system to use a block chain infrastructure and Smart Contracts to monetize data transactions involving changes to data included into a data supply chain.
BR112015010016A2 (pt) * 2012-11-07 2017-07-11 Koninklijke Philips Nv compilador, computador, método de compilação e programa de computador
US9306738B2 (en) * 2012-12-21 2016-04-05 Microsoft Technology Licensing, Llc Managed secure computations on encrypted data
US20140321644A1 (en) 2013-04-29 2014-10-30 Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of National Defence Method and system for calculations on encrypted data
US9026978B1 (en) 2013-10-24 2015-05-05 Cadence Design Systems, Inc. Reverse interface logic model for optimizing physical hierarchy under full chip constraint
JP5842255B2 (ja) * 2013-12-12 2016-01-13 国立大学法人東京工業大学 プログラミング言語による論理回路記述から論理回路を生成するための装置及び方法
FR3018378A1 (fr) 2014-03-12 2015-09-11 Enrico Maim Systeme et procede transactionnels a architecture repartie fondees sur des transactions de transferts d'unites de compte entre adresses
US9830580B2 (en) * 2014-03-18 2017-11-28 nChain Holdings Limited Virtual currency system
US10320781B2 (en) 2016-12-08 2019-06-11 Sensoriant, Inc. System and methods for sharing and trading user data and preferences between computer programs and other entities while preserving user privacy
US9645794B2 (en) 2014-09-23 2017-05-09 Texas Instruments Incorporated Homogeneous atomic pattern for double, add, and subtract operations for digital authentication using elliptic curve cryptography
US10409827B2 (en) * 2014-10-31 2019-09-10 21, Inc. Digital currency mining circuitry having shared processing logic
US20160162897A1 (en) 2014-12-03 2016-06-09 The Filing Cabinet, LLC System and method for user authentication using crypto-currency transactions as access tokens
PL3073670T3 (pl) 2015-03-27 2021-08-23 Black Gold Coin, Inc. System i sposób osobistej identyfikacji i weryfikacji
AU2016242888A1 (en) * 2015-03-31 2017-11-16 Nasdaq, Inc. Systems and methods of blockchain transaction recordation
WO2016155804A1 (en) 2015-03-31 2016-10-06 Nec Europe Ltd. Method for verifying information
US20160321751A1 (en) * 2015-04-28 2016-11-03 Domus Tower, Inc. Real-time settlement of securities trades over append-only ledgers
US20160342977A1 (en) * 2015-05-20 2016-11-24 Vennd.io Pty Ltd Device, method and system for virtual asset transactions
JP2017004044A (ja) 2015-06-04 2017-01-05 富士通株式会社 ライセンス管理プログラム、ライセンス管理方法、およびライセンス管理システム
CN106293892B (zh) 2015-06-26 2019-03-19 阿里巴巴集团控股有限公司 分布式流计算系统、方法和装置
WO2017008829A1 (en) 2015-07-10 2017-01-19 Nec Europe Ltd. A method and a system for reliable computation of a program
US10366204B2 (en) * 2015-08-03 2019-07-30 Change Healthcare Holdings, Llc System and method for decentralized autonomous healthcare economy platform
US20170091726A1 (en) * 2015-09-07 2017-03-30 NXT-ID, Inc. Low bandwidth crypto currency transaction execution and synchronization method and system
EP3357892A4 (en) * 2015-09-30 2019-05-29 Sekisui Chemical Co., Ltd. INTERMEDIATE LAYER FOR LAMINATED GLASS AND LAMINATED GLASS
US20180331832A1 (en) 2015-11-05 2018-11-15 Allen Pulsifer Cryptographic Transactions System
US20170132621A1 (en) 2015-11-06 2017-05-11 SWFL, Inc., d/b/a "Filament" Systems and methods for autonomous device transacting
US10048952B2 (en) 2015-11-11 2018-08-14 Oracle International Corporation Compiler optimized data model evaluation
FR3043811B1 (fr) 2015-11-16 2017-11-10 Morpho Procede d'identification d'une entite
US20170140408A1 (en) 2015-11-16 2017-05-18 Bank Of America Corporation Transparent self-managing rewards program using blockchain and smart contracts
US10841082B2 (en) * 2015-11-24 2020-11-17 Adi BEN-ARI System and method for blockchain smart contract data privacy
US11423498B2 (en) 2015-12-16 2022-08-23 International Business Machines Corporation Multimedia content player with digital rights management while maintaining privacy of users
US9715373B2 (en) 2015-12-18 2017-07-25 International Business Machines Corporation Dynamic recompilation techniques for machine learning programs
US10044696B2 (en) 2015-12-22 2018-08-07 Mcafee, Llc Simplified sensor integrity
US9483596B1 (en) * 2016-01-08 2016-11-01 International Business Machines Corporation Multi power synthesis in digital circuit design
US10108812B2 (en) 2016-01-28 2018-10-23 Nasdaq, Inc. Systems and methods for securing and disseminating time sensitive information using a blockchain
AU2017223129A1 (en) 2016-02-23 2018-07-12 nChain Holdings Limited Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system
EP4369273A2 (en) 2016-02-23 2024-05-15 nChain Licensing AG A method and system for securing computer software using a distributed hash table and a blockchain
US10387988B2 (en) 2016-02-26 2019-08-20 Google Llc Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
US11170371B2 (en) 2016-03-03 2021-11-09 Nec Corporation Method for managing data in a network of nodes
US11017387B2 (en) 2016-03-24 2021-05-25 International Business Machines Corporation Cryptographically assured zero-knowledge cloud services for elemental transactions
US11017388B2 (en) 2016-03-25 2021-05-25 International Business Machines Corporation Cryptographically assured zero-knowledge cloud service for composable atomic transactions
US10839096B2 (en) 2016-03-28 2020-11-17 International Business Machines Corporation Cryptographically provable zero-knowledge content distribution network
US20170287090A1 (en) 2016-03-31 2017-10-05 Clause, Inc. System and method for creating and executing data-driven legal contracts
WO2017175073A1 (en) 2016-04-05 2017-10-12 Vchain Technology Limited Method and system for managing personal information within independent computer systems and digital networks
US10545739B2 (en) 2016-04-05 2020-01-28 International Business Machines Corporation LLVM-based system C compiler for architecture synthesis
CN108885761B (zh) 2016-04-11 2023-09-29 区块链控股有限公司 用于区块链上的安全点对点通信的方法
US20170300897A1 (en) * 2016-04-14 2017-10-19 American Express Travel Related Services Company, Inc. Systems and Methods for an Electronic Wallet Payment Tool
US10803537B2 (en) * 2016-04-18 2020-10-13 R3 Ltd. System and method for managing transactions in dynamic digital documents
EP3449450B1 (en) * 2016-04-29 2022-06-15 Nchain Holdings Limited Implementing logic gate functionality using a blockchain
US10333705B2 (en) * 2016-04-30 2019-06-25 Civic Technologies, Inc. Methods and apparatus for providing attestation of information using a centralized or distributed ledger
US10046228B2 (en) 2016-05-02 2018-08-14 Bao Tran Smart device
US20170337319A1 (en) 2016-05-20 2017-11-23 Ecole polytechnique fédérale de Lausanne (EPFL) System and Method for Optimization of Digital Circuits with Timing and Behavior Co-Designed by Introduction and Exploitation of False Paths
CN107438002B (zh) 2016-05-27 2022-02-11 索尼公司 基于区块链的系统以及系统中的电子设备和方法
US10447478B2 (en) 2016-06-06 2019-10-15 Microsoft Technology Licensing, Llc Cryptographic applications for a blockchain system
FR3052286B1 (fr) 2016-06-06 2018-06-15 Morpho Procede de verification d'un droit d'acces d'un individu
US20180018738A1 (en) 2016-07-14 2018-01-18 Digital Asset Holdings Digital asset platform
US10417217B2 (en) 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
CN106780032A (zh) * 2016-12-16 2017-05-31 杭州云象网络技术有限公司 一种多链场景下的区块链链间资产转移方法
US11088823B2 (en) 2017-01-06 2021-08-10 Koninklijke Philips N.V. Pinocchio/Trinocchio on authenticated data
US11362829B2 (en) 2017-01-06 2022-06-14 Koninklijke Philips N.V. Distributed privacy-preserving verifiable computation
CN106790253A (zh) * 2017-01-25 2017-05-31 中钞信用卡产业发展有限公司北京智能卡技术研究院 基于区块链的认证方法和装置
CN107274184A (zh) 2017-05-11 2017-10-20 上海点融信息科技有限责任公司 基于零知识证明的区块链数据处理
CN107179932A (zh) 2017-05-26 2017-09-19 福建师范大学 基于fpga高层次综合指令的优化方法及其系统
CN107330775A (zh) * 2017-07-05 2017-11-07 贵州大学 一种基于比特币协议的首价密封交易方法
US10135607B1 (en) 2017-08-11 2018-11-20 Dragonchain, Inc. Distributed ledger interaction systems and methods
US10268829B2 (en) 2017-08-11 2019-04-23 Dragonchain, Inc. Security systems and methods based on cryptographic utility token inventory tenure
US10333710B2 (en) 2017-09-12 2019-06-25 Qed-It Systems Ltd. Method and system for determining desired size of private randomness using Tsallis entropy
US10521616B2 (en) 2017-11-08 2019-12-31 Analog Devices, Inc. Remote re-enrollment of physical unclonable functions
EP3707855A1 (en) 2017-11-09 2020-09-16 Nchain Holdings Limited System for securing verification key from alteration and verifying validity of a proof of correctness

Also Published As

Publication number Publication date
US20210192514A1 (en) 2021-06-24
EP3707871B1 (en) 2022-05-18
US11575511B2 (en) 2023-02-07
CN111316595A (zh) 2020-06-19
JP2023052834A (ja) 2023-04-12
EP3707623A1 (en) 2020-09-16
KR20200086281A (ko) 2020-07-16
WO2019092544A1 (en) 2019-05-16
KR20200079503A (ko) 2020-07-03
US11635950B2 (en) 2023-04-25
ZA202002575B (en) 2023-12-20
US20200366492A1 (en) 2020-11-19
WO2019092561A1 (en) 2019-05-16
US20210377041A1 (en) 2021-12-02
JP2021502746A (ja) 2021-01-28
CN111345004B (zh) 2023-12-01
SG11202004146WA (en) 2020-06-29
US20200348916A1 (en) 2020-11-05
JP2023182741A (ja) 2023-12-26
JP2021502634A (ja) 2021-01-28
SG11202004153UA (en) 2020-06-29
TW201923567A (zh) 2019-06-16
EP3707856A1 (en) 2020-09-16
SG11202004149UA (en) 2020-06-29
CN111316594A (zh) 2020-06-19
US11658801B2 (en) 2023-05-23
JP2021502636A (ja) 2021-01-28
JP7234229B2 (ja) 2023-03-07
SG11202004147RA (en) 2020-06-29
TW201923648A (zh) 2019-06-16
TWI806918B (zh) 2023-07-01
JP2023179687A (ja) 2023-12-19
US20200266985A1 (en) 2020-08-20
WO2019092542A1 (en) 2019-05-16
EP4312403A2 (en) 2024-01-31
KR20200086282A (ko) 2020-07-16
JP2023075152A (ja) 2023-05-30
WO2019092543A1 (en) 2019-05-16
CN111406379A (zh) 2020-07-10
JP7208989B2 (ja) 2023-01-19
WO2019092545A1 (en) 2019-05-16
JP2021502747A (ja) 2021-01-28
SG11202004148PA (en) 2020-06-29
CN111345004A (zh) 2020-06-26
US20230318804A1 (en) 2023-10-05
KR20200080265A (ko) 2020-07-06
JP2023036962A (ja) 2023-03-14
EP3707855A1 (en) 2020-09-16
US20230269070A1 (en) 2023-08-24
KR20200086284A (ko) 2020-07-16
JP7477674B2 (ja) 2024-05-01
EP3707852A1 (en) 2020-09-16
US20230318805A1 (en) 2023-10-05
EP3707871A1 (en) 2020-09-16
JP2021502745A (ja) 2021-01-28
EP4092953A1 (en) 2022-11-23
JP7221954B2 (ja) 2023-02-14
CN111345005A (zh) 2020-06-26
EP4312403A3 (en) 2024-02-21

Similar Documents

Publication Publication Date Title
CN111345004B (zh) 用于简化可执行指令以优化可验证计算的系统
JP2024041977A (ja) 演算回路のシリアル化のためのコンピュータにより実装されるシステム及び方法
TWI837103B (zh) 電腦實施方法及系統
KR102398543B1 (ko) 영지식 증명 알고리즘이 적용된 검증 가능한 블록체인 가상머신

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