CN111406379A - 用于可证实计算的类似c的智能合约的算术增强 - Google Patents
用于可证实计算的类似c的智能合约的算术增强 Download PDFInfo
- Publication number
- CN111406379A CN111406379A CN201880072692.7A CN201880072692A CN111406379A CN 111406379 A CN111406379 A CN 111406379A CN 201880072692 A CN201880072692 A CN 201880072692A CN 111406379 A CN111406379 A CN 111406379A
- Authority
- CN
- China
- Prior art keywords
- arithmetic
- source code
- steps
- circuitry
- contract
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3218—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/423—Preprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, 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/401—Transaction verification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, 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/405—Establishing or using transaction specific rules
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0877—Generation 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3239—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3263—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/127—Trusted platform modules [TPM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/34—Encoding or coding, e.g. Huffman coding or error correction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public 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
本发明提供了一种系统和方法,用于将高级源代码转换成表示该源代码中表达的功能的算术电路。本发明包括用于执行该转换的翻译/解释组件。在优选实施方式中,源代码是智能合约,例如与区块链平台相关地使用的合约。例如,本发明可以与比特币网络相关地使用。根据实施方式的方法包括以下步骤:处理一部分高级源代码(例如,智能合约)以生成算术电路。算术电路包括一个或更多个算术门,该算术门被布置为表示在源代码中表达的功能中的至少一些。该处理涉及评估源代码中提供的一个或更多个常量,以产生一个或更多个包含布尔和/或算术运算符的表达式。算术电路包括连接到算术门的n位线;它可以用来提供硬件和/或软件电路。算术电路可以用于生成可以在处理器上执行的二次规划。
Description
技术领域
本发明总体上涉及用于将高级源代码转换成另一种形式的工具、技术和系统比如解释器的领域。本发明还涉及区块链技术,尤其涉及用于构建区块链实现的解决方案的工具。本发明还涉及改进的一代机器可执行技术,比如被设置为在区块链上执行的智能合约。
背景技术
在本文中,术语“区块链”指的是一些类型的基于计算机的电子分布式账本中的任意一种。这些包括基于共识的区块链和交易链技术、经许可和未经许可的账本、共享账本及其变体。其还包括私有区块链和公有区块链。
区块链技术最广为人知的应用是比特币账本,尽管已经提出并开发了其他区块链实现方式。虽然出于方便和说明的目的在本公开中可以参考比特币的示例,然而应当注意,本发明不限于与比特币区块链或相关协议的任何特定实现方式或变体一起使用,并且替代性的区块链实现方式和协议落入本发明的范围内。
区块链是一种点对点的电子账本,其被实现为基于计算机的去中心化的系统,该系统由区块组成,而区块又由交易组成。每个交易是这样的数据结构,该数据结构对区块链系统中的参与方之间的数字资产的控制转移进行编码,并包括至少一个输入和至少一个输出。每个区块包含前一个区块的哈希,以使这些区块变为链接在一起,以创建自区块链开始以来就已经写入区块链的所有交易的永久、不可更改的记录。
比特币区块链的脚本语言(称为Script)是基于堆栈的。可以将项目推到堆栈顶部或从堆栈顶部弹出。例如,OP_EQUAL操作会从堆栈中弹出顶部的两个项目,对其进行比较,然后将结果(例如,如果相等则为1,如果不相等则为0)推入堆栈的顶部。在一些本实施方式采用的某些脚本语言中,可能至少有两个堆栈:主堆栈和备用堆栈。
为了将交易写入区块链,必须对其进行“验证”。网络节点(矿工)进行工作以确保每次交易都有效,而无效交易从网络中被拒绝。一个节点可以具有不同于其他节点的有效性标准。由于区块链中的有效性是基于共识的,因此,如果大多数节点同意交易有效,则该交易被视为有效。安装在节点上的软件客户端通过执行未耗用交易(UTXO)锁定和解锁脚本,来部分地对引用该未耗用交易(UTXO)的交易进行该验证工作。如果锁定和解锁脚本的执行评估为TRUE且满足其他验证条件(适用的情况下),则交易被节点验证。经过验证的交易将传播到其他网络节点,随后矿工节点可以选择将该交易包括在区块链中。
因此,为了将交易写入区块链,该交易必须i)由接收交易的第一节点来验证-如果交易被验证,则节点将其中继到网络中的其他节点;ii)被加入由矿工构建的新区块;并且iii)被挖掘,即加入过去交易的公共账本。当将足够数量的区块被添加到区块链以使交易实际上不可逆时,该交易被视为已确认。
虽然区块链技术最广为人知的地方在于使用加密货币实现方式,但是数字企业家已经开始探索使用比特币所基于的加密安全系统以及可以存储在区块链上的数据这两者以实现新系统。如果区块链可用于并不限于加密货币领域的自动化任务和过程,这将是非常有利的。这样的解决方案将能够利用区块链的好处(例如,事件的永久性、防篡改记录,分布式处理等),同时在其应用中更通用。
当前研究的一个领域是使用区块链来实施“智能合约”。这些是旨在使机器可读合约或协议的条款的执行自动化的计算机程序。与将用自然语言编写的传统合约不同,智能合约是一种机器可执行程序,其包含可处理输入以产生结果的规则,然后可根据这些结果促使动作被执行。
在实施方式中,就智能合约的强制执行和/或执行不需要创建者或某些其他特定实体的意义而言,智能合约是“智能”的。执行或强制执行不需要人工交互。也就是说,尽管可以在智能合约中的特定步骤对与特定实体的交互进行编码,但是智能合约也可另外地自动执行和自我执行。智能合约是机器可读和可执行的。在一些示例中,自动执行是指能够耗用UTXO并具有对于这样做的激励(例如,奖励)的任何实体。请注意,在此类示例中,能够耗用UTXO的“任何实体”是指能够创建解锁脚本而无需证明知晓某些私密的实体。换句话说,可以在不证实数据源能够访问加密的私密(例如,私密非对称密钥,对称密钥等)的情况下验证耗用交易。另外,在这样的示例中,自我执行是指使区块链网络的验证节点根据约束来强制执行耗用交易。在一些示例中,“耗用”UTXO指创建这样的耗用交易,该耗用交易引用UTXO并在有效时执行。
因此,除了简单地用作加密货币支付的工具外,围绕区块链技术可投入的用途引起了很多兴趣。这包括对IoT设备的控制,结合A.I.技术的智能系统等。
但是,尽管有许多使用高级语言(例如C,C++,Java等)进行编程的技术人员,但是能够为区块链创建应用程序的人数相对较少。这部分是因为当前需要使用操纵主堆栈和alt堆栈的op_code在相对较低的级别为区块链进行编码。特别是,众所周知,为实现区块链而对智能合约进行编程是困难且容易出错的-正如以下文献中所探讨的那样:Delmolino,K.等人,(2015),Step by Step Towards Creating a Safe Smart Contract:Lessons andInsights from a Cryptocurrency Lab,以及Juels,A.等人,(2013),The Ring of Gyges:Using Smart Contracts for Crime。
通过使得能够创建可与区块链结合使用的解决方案和应用程序,可以提供一种改进的区块链和相关平台。还提供了一种计算算术门的解决方案。算术电路可以被设置为作为谓词执行或执行谓词。本发明使得能够创建和编码可执行程序(与根据现有技术公开的仅提供证实或证明相反)。
发明内容
因此,期望提供一种在一个或更多个方面改进区块链和分布式计算技术的方法和系统。现已设计出这种改进型方案。因此,根据本发明,提供了如所附权利要求中所限定的方法和系统。
本发明可包括被设置成提供且便利于去中心化系统中的可编程性的系统和方法。例如,其可以是加密货币系统、区块链实现的系统和/或分布式计算系统。从一个角度来说,其减少了编程过程期间所需的误差、时间、精力、成本和资源。因此,其提供了对技术问题的技术方案。从另一个角度来说,因为减少了误差和缺陷,其提供了增强型的区块链方案。其还保留了软件完整性。
有利的是,与已知的解释器和编译器不同,本发明提供了一种与架构无关的方案。此外,其不需要使用虚拟机(VM)来实现执行。
本发明可以提供一种计算机实现的系统和方法,该系统和方法以源代码作为输入,且产生算术电路C。所得到的电路C可以代表HLL源代码的功能(与用于证实的证明相反)。在执行时,算术电路C可以提供计算结果,然后可以对计算结果进行证实。电路C可以是机器可执行的或被处理以在机器上执行。源代码可以表达或表示计算。
该电路可以包括“导线(wire)”,导线携带来自字段的值且连接到加法和乘法门。算术电路可以以软件和/或以具有导线和逻辑门的物理电路来实现。源代码可以包括或表示以HLL或GPL编写的功能或计算的一些或全部。本发明可以被描述为用于将该计算转换为算术电路C的解释器。算术电路C和一些输入x可被提供至实体以用于执行。
本发明可以将以源代码表示的计算转换或翻译成可(由机器/处理器)执行的谓词。可对(HLL/GPL)源代码进行预编译或预处理。
在一个或更多个实施方式中,可使用私密值s得出公共评估密钥EK和公共证实密钥VK。该方法可以包括步骤:使用EK和VK来评估对特定输入x的计算。输出y、一个或更多个电路导线的值以及EK可用于产生正确性证明π。证明π可以存储在区块链上。其可存储在区块链交易中。该方法可包括步骤:在区块链交易中提供证明。其可包括步骤:将交易递交至区块链和/或将其存储在区块链上。
该方法可包括步骤:证实存储在区块链上的证明。其可由一方或多方证实。有利的是,其可由多方证实,无需证明方与各方分别交互。这与现有技术相比提供了更高效且更快速的解决方案。
区块链网络(比如比特币)中的所有节点或一些节点可以证实交易。证实可使用公共证实密钥VK和证明π来执行,从而证实智能合约。
本发明的优点在于矿工根据已知的传统区块链协议来证实交易。证实过程是网络内矿工角色的一部分。因此,本发明能够在技术上有利地使用节点做出的努力,因为证实作为所需的现有操作的一部分而执行。这与现有技术相比提供了高效的布置。
在一些实施方式中,如图1所示,本发明可以形成从以DSL编码的智能合约到二次算术规划(quadratic arithmetic program,QAP)的工作流的一部分。
如图2所示,可以将域特定语言(DSL)智能合约转换为高级语言合约。DSL智能合约可以用具有精确语义的形式语言编写。DSL智能合约可以包括一组条件。DSL智能合约的结果可以依赖于对一组条件的满足。
HLL预编译器(也可以称为预处理器)可以合并HLL合约引用的外部库,以生成HLL预处理合约。HLL预编译器在图2中可以称为C预编译器。HLL合约在图2中可以称为C语言合约。
然后,根据本发明的实施方式,可以将HLL预处理合约(即源代码)转换成算术电路。该算术电路可以被优化以产生从其得出QAP多项式的简化的算术电路。
预处理转换可以由软件程序(图2中称为C预编译器的程序)执行,作为执行的结果该软件程序接收一组条件(例如以DSL编写的DSL智能合约),并将DSL代码翻译为HLL源代码,例如HLL合约。在图2中,这可以称为“C语言预处理合约”。在此也可以将其简称为“源代码”。HLL合约可以是包含DSL智能合约中定义的合约的HLL程序,例如C++程序。HLL预编译器可以是处理HLL合约和所需的外部库以生成独立的HLL预处理合约(即源代码)的计算机可执行程序。
外部库可以是HLL合约通过调用使用的预编写的子例程、函数、类、容器、值和/或变量类型的集合。例如,通过调用外部库,HLL合约无需实现功能本身即可获得该库的功能。HLL预处理合约可以包含一组表达式和运算符。运算符可以包括算术运算符(例如加法(+),乘法(*)等),比较运算符(例如小于(<),等于(==),大于或等于(>=)等)),条件语句(例如if-then(?,:))或逻辑运算符(例如AND(&&),OR(||),NOT(!),XOR(⊕)等)。在一些实施方式中,主函数(入口点)具有预定义的名称和格式。
算术电路可以是一组变量上的有向无环图DAG。DAG的入度为零的每个节点可以是代表变量(例如xi)的输入门,而DAG的每个其他节点可以是求和门(+)或乘积门(×)。每个门(节点)的出度可以为1,因此基础图可以是有向树。算术电路可以具有两种复杂性度量:大小和深度。在一些示例中,算术电路的“大小”可以基于算术电路内的门的数量。在一些示例中,算术电路的“深度”可以基于算术电路内的最长有向路径的长度。
在生成算术电路之后,可以缩减该电路。
根据本发明的计算机实现的方法可以包括以下步骤:处理一部分源代码以生成(可执行的)算术电路。源代码可以用高级编程语言编写;以及算术电路可以包括一个或更多个算术门,所述一个或更多个算术门被设置为代表在所述源代码中表达的一些功能或计算。
这与现有技术中已知的编译器和解释器相反,现有技术中的编译器和解释器不将HLL源代码转换成算术电路。
算术电路可以在处理器上执行。电路可以设置在区块链交易中。
这与教导对计算或逻辑电路进行证实和/或导致(零知识)证明的输出的现有技术公开相反。例如,匹诺曹系统生成一个零知识证明,以证实通用计算-“Communications ofthe ACM(ACM通讯)”;卷59,第2册;2016Parno B等人;“Pinocchio:Nearly PracticalVerifiable Computations”;103-112(Parno)。因此,可以将诸如Pinocchio(匹诺曹)之类的现有技术证实系统与本发明结合使用以用于证实,本发明提供了超出现有技术的功能和结果。
因此,本发明提供了代表和/或提供计算的机器可执行输出。然后可以对此进行证实。例如,这与匹诺曹系统形成对比,该匹诺曹系统编译证实脚本,以验证被设置成执行计算的(单独的)程序,因此包括两部分的过程。替代地,本发明使用一种单部分的方式,即将高级计算本身编译成算术电路。因此,本发明使用与这种现有技术非常不同的方式解决了不同的技术问题。
优选地,源代码是智能合约。源代码可以如上所述被预处理。
优选地,处理步骤包括以下子步骤:评估所述源代码中提供的一个或更多个常量。这可以提供一个或更多个包含布尔运算符和/或算术运算符的表达式。
该方法还可以包括以下步骤:使用算术电路提供硬件和/或软件电路。算术电路可以包括连接到算术门的n位导线。所述算术电路与架构无关。也就是说,其不被设置成以特定硬件或软件架构或平台来操作或使用。其不需要使用虚拟机。这与现有技术的编译器和解释器相反,现有技术的编译器和解释器要么是架构特定的,要么需要使用虚拟机。
该方法还可以包括以下步骤:对所述源代码进行预处理以确定一个或更多个常量。预处理可以包括以下步骤中的一个或更多个:
去除注释;将头部声明从头文件导入到所述源文件;
合并多个源文件;
处理或评估指令和宏。
该方法还可以包括以下步骤:检测在源代码中声明的所有全局变量,其中,全局变量与函数、结构或类、常量和/或执行的入口点有关。
该方法还可以包括以下步骤:生成符号(标识符)表,以将源代码中提供的每个符号(即标识符)与源代码中提供的声明信息相关联。所述表中的符号是全局和/或局部符号。
该方法还可以包括以下步骤:对所述源代码进行逐行评估,从而得到算术和/或逻辑表达式,所述算术和/或逻辑表达式将一个或更多个输出变量表示为应用于一个或更多个输入变量上的逻辑和/或算术运算的组合。
这还可以包括以下步骤:对类型进行解码;对表达式进行解码;评估表达式;和/或为所述功能所需的数据结构分配内存。
该方法还可以包括以下步骤:将表达式的算术运算和/或逻辑运算映射到算术门。该映射步骤可以包括以下子步骤:执行导线扩展;和/或执行导线压缩。
该方法还可以包括以下步骤:使用算术电路来生成包括一组多项式的二次规划,所述一组多项式提供了对所述电路的描述。该方法还可以包括以下步骤:将所述二次规划提供给实体以使用一个或更多个输入执行所述二次规划。
本发明还可以提供一种系统,其被布置为实现或执行任意前述方法步骤。该系统可以包括翻译或转换组件(即解释器/编译器),被设置为执行对源代码的处理。尽管现有技术已知用于生成(零知识)证明的编译器(例如参见以上引用的“Pinocchio:NearlyPractical Verifiable Computations”(Parno)),然而这些不按照本发明那样编译成算术电路。本发明生成答案而不是证明或证实答案。
一种计算机实现的系统,包括:
处理器;以及
存储器,包括可执行指令,作为被处理器执行的结果,可执行指令使系统执行此处所述和主张权利的本发明一个或多个实施方式中计算机实现的任意实施方式。指令可以包括:用于提供翻译或转换组件(即解释器/编译器)的指令,翻译或转换组件被设置成执行对源代码的处理。
一种非暂态计算机可读存储介质,其上存储有可执行指令,作为计算机系统的处理器执行的结果,该可执行指令使计算机系统至少执行此处所述或主张权利的本发明/方法的一个或更多个实施方式。
附图说明
通过在此描述的实施方式,本发明的这些和其他方面将变得明显,且将参考在此所述的实施方式阐述本发明的这些和其他方面。现在参考附图仅作为示例描述本发明的实施方式,在附图中:
图1示出了本发明的示例性使用和实施方式中涉及的可证实计算和参与者的协议。这些参与方是:客户端、工作方(也称为“证明方”)和证实方。
图2示出了根据本发明实施方式的从DSL合约到二次算术规划(QAP)的转换过程。
图3示出了根据本发明实施方式的算术电路的示例。
图4示出了根据本发明实施方式的包含电路表示的数据包(头部+主体)的高级描述。
图5示出了根据以下描述的示例的4位线扩展器的实现,其表示语句“检查变量<a>是否为偶数”。
图6示出了根据本发明的示例性实施方式的构造块,其中构造块实现条件语句。
图7示出了根据本发明的实施方式的常量生成器模块可以如何负责创建算术电路使用的常量。在使用的示例中,将生成三个常量(C1,C2和C3)加上默认的一(1)和零(0)值。
图8是示出其中可以实现各种实施方式的计算环境的示意图。
具体实施方式
概要
现在说明如何根据一个实施方式将本发明付诸实践。在该示例中,描述了被设为将高级语言合约(例如C/C++语言)转换为包括算术门的电路的解释器的可能实现方式。然而,本发明可以被设置为翻译其他HLL语言。特定的结构或构造块可以用来促进这种转换。在一个或更多个实施方式中,该表示可被视为构造能够提供分布式可证实计算的综合性管道(pipeline)的第一步骤。
在该示例中呈现的构造块不意在作为本发明的实施方式处理的所有可能的高级语言结构的穷尽性列表。此外,可以提供所呈现示例的替代实施方式。这些都属于本领域技术人员的范围。
现在提供本发明的示例性实施方式。然而,重要的是要注意,这是可以使用本发明的应用的示例。本领域技术人员将理解,可以在其他上下文和应用中有利地使用本发明。本发明不限于与智能合约或金融工具有关的用途。
本发明的示例性实施方式和示例用例
对于我们的示例,考虑如下协议,该协议允许用户使用域特定语言(DSL)为金融工具生成合约。一旦生成合约,就可以将其执行外包给不受信任的各方(称为“工作方”或“证明方”),同时可以公开证实其正确性。该协议利用加密原语,加密原语可确保:
·完整性,即如果正确遵循协议,诚实的证实方将确信输出的有效性;
·可靠性(soundness),即作弊的证明方不能使诚实的证实方相信其输出的真实性;
·零知识,即作弊的证实方不能学习除输出有效性之外的任何信息。
该协议的主要好处是:
·由于不需要参与方之间的通信,因此可以防止中间人攻击。
·由于使用了区块链技术,恶意节点很难篡改数据。
·避免受信任的第三方,例如受信任的硬件设备。
·合约验证并不意味着代码重新执行。计算不被网络中的每个节点复制。相反,诚实执行的证据存储在公共区块链中,且仅用于验证目的。
这样的系统将能够处理对应于各种任务和产品的各种类型的智能合约,并且不限于金融应用或用途。由于其去中心化和分布式的性质,(比特币)区块链为两方或更多方之间达成协议提供了一个适当的环境。
这样的系统需要在去中心化的加密货币系统中提供并促进可编程性。然而,在本领域中已经认识到智能合约编程是容易出错的处理。参见Delmolino,K.等人,(2015),Stepby Step Towards Creating a Safe Smart Contract:Lessons and Insights from aCryptocurrency Lab(逐步创建安全的智能合约:来自加密货币实验室的课程和洞见),以及Juels,A.等人,(2013)的The Ring of Gyges:Using Smart Contracts for Crime。
因此,能够使用DSL是有利的,DSL使智能合约更容易由程序员编写和阅读,从而减少错误,减少编程过程中的时间、精力、成本和资源。理想情况下,非专业的程序员无需执行任何加密即可编写合约。替代的,编译器/解释器将自动将源代码编译为用户与区块链之间的加密协议。这些是本发明解决的技术问题。现有技术没有提供这样的优点用于证实和产生证明。
该框架使用最新的可加密证实的计算(请参阅Gennaro,R.等人(2013年),Quadratic Span Programs and Succint NIZKs without PCPs),并确保正确的功能评估:由于使用了可证实的计算,获取敏感信息的对手将不能操纵结果。该模型利用区块链技术来存储正确性证明,并将“逐项修正(correct by construction)”加密方法与智能合约相结合。
在该示例中,聚焦于能够将高级语言合约(例如C/C++语言)转换为包括算术门的电路的翻译组件的实现。所得到的电路是HLL源代码的机器可执行表示(与用于证实目的的证明相对)。使用特定的结构或构造块来促进这种转换。在我们的示例中,本发明可用于提供构造管道的第一步骤,该管道被布置为实现分布式可证实计算系统。但是,请注意,我们再次指出本发明不限于这种使用情况,并且可以在更广泛的应用和环境中发生作用。
为了描述示例性实施方式,我们提供了用于可证实计算的框架的概述,随后介绍根据本发明的智能合约的电路表示。
示例性用途:可证实的计算:框架
问题陈述。客户端将计算P的规范和输入x发送到不受信任的证明方(工作方)。工作方计算输出y并将其返回给客户端。如果y=P(x),则正确的证明方应该能够产生正确性证明,并使任何人(不仅仅是客户端)相信y的正确性。否则,证实方应有很大可能会拒绝y。
协议应该对于证实方来说比在本地执行P(x)更便宜,或者协议应该处理证实方自身无法执行的计算P。此外,无需假设工作方行为的正确性。
数据访问。系统中存在两个不同的去中心化的数据库(i)DHT-链下数据存储在DHT中。数据在节点之间被充分随机化并进行复制,以确保高可用性,以及(ii)公共账本-正确执行的证据被存储在区块链上并可以被审核。
协议。协议所需的步骤如图1所示。计算P由电路C表示。客户端提供输入x,工作方对输入x执行电路C,并声称输出为y。预计证明方获得{C,x,y}的副本。{C,x,y}的有效副本是对电路导线分配值,从而:
·分配给输入导线的值是x的值;
·中间值对应于C中每个门的正确操作;
设置阶段涉及使用具有精确语义的正式语言编写合约。根据本发明,解释器将源代码作为输入,并产生算术电路C,该算术电路C包括带有来自字段的值且连接到加法和乘法门的导线。在一些实施方式中,可以利用算术电路优化技术例如在英国专利申请No.1718505.9中所述的技术,从而减少确定智能合约结果时所需的必要资源。
系统从电路C生成二次规划Q,即Q包含一组多项式,该一组多项式提供了对原始电路C的完整描述。然后,生成所有证明方和证实方使用的公共参数。
使用由客户端选择的私密值s得出公共评估密钥EK和公共证实密钥VK。工作方使用这些公共信息来评估对特定输入x进行的计算。输出y、内部电路导线的值和EK用于产生正确性证明π。证明π可以存储在区块链上并由多方证实,而无需证明方分别与这些实体中的每一个交互。
所有的比特币节点都可以使用公共证实密钥VK和证明π来验证支付交易,从而验证合约。
智能合约和电路表示
尽管需要域特定语言(DSL)来实现智能合约,例如Actulus建模语言(AML),数字资产建模语言(DAML),金融产品标记语言(FpML),为便于说明,我们在此描述的是使用更通用的语言,该语言能够提供更大范围的类型、运算符和结构,比如高级语言(HLL)、C。然而,也可将本发明设置成使用专用工具将不同的DSL语言转换成C(或其他HLL)。
在本文使用的示例中,解释器处理用C语言编写的源代码。本发明可以适于与其他高级语言(也可以称为“通用语言”(GPL))一起使用。通用编程语言的例子包括Ada,ALGOL,汇编语言,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。
在图2中示出了用于将高级语言翻译成逻辑电路的综合性管道。根据本发明,聚焦于图2中的虚线框中突出显示的模块。
·包含合约的高级C程序和所需的外部库链接在一起,以形成独立的预处理合约。在此阶段,C预编译器负责检查所有所需的资源可用。预处理器指令也会被评估。
·评估常量表达式并登记所有符号。结果是一组类似于C的运算符的表达式,例如加法(+),乘法(*),比较(<),等式(==),条件语句(?,:)和逻辑运算符(and,or,not,xor)。我们要求主函数具有预定义的名称和格式。算术电路(见图3)是通过用连接到基本算术门(比如加法和乘法)的n位导线表示符号来构建的。
·二次算术规划(QAP)中的多项式是根据其在算术电路的根部处进行的评估来定义的,如Gennaro,R.等人(2013)的Quadratic Span Programs and Succinct NIZKsWithout PCPs中介绍的那样。
图3示出了算术电路的示例。每个导线都来自字段F,且所有操作都在字段F上执行。该电路计算y=x1+x2·x3·(x3+x4)。由于电路的最终输出是总和,因此需要附加的乘法门(乘以常量1)。
C语言解释器
根据本发明的一个示例性实施方式,现在描述一种解释器,该解释器能够识别为C编程语言定义的指令的子集,包括:预处理器指令、条件、算术和按位布尔运算符、全局函数。如本领域技术人员容易理解的,还可以在没有额外逻辑的情况下提供对阵列和结构的支持。
解释器使用下面标题为“算术原语的生成”的部分中呈现的乘法、加法和特定构造块,将表达式增强为算术门语言。每个导线将具有指定的位宽度。在1位宽度的情况下,导线表示二进制变量。
对类似C的程序进行算术增强以在区块链上实现
现在详细描述构造算术电路的过程,该算术电路代表由C源代码表达的功能。在该过程的每个阶段,非预期行为(例如,缺少符号、错误的语法或未知的运算符)都会导致以适当的代码错误立即终止程序执行。
预处理
如图2所示,智能合约可以包含多个文件和库。协议的第一步骤涉及创建单个源文件,该单个源文件包含实施合约所需的整个指令集合。各个子步骤可以列出如下:
·所有注释被删除。
·头部声明从头文件被导入到源文件。
·所有源文件被合并。
·处理或评估预处理器C指令和宏。它们包括#define指令和条件#ifdef指令。
在该步骤末尾,必须知道所有预处理器常量的实际值。源代码中使用的变量的值必须仅取决于合约的输入的值。此外,源代码中入口点的声明必须具有以下语法:
void contract(inputType*in,outputType*out) |
类类型inputType和outputType由用户定义。下面的源代码框显示了一个智能合约的简单示例,该合约包含两个无符号整数输入之间的单个求和运算。
根据特定合约,输出可以用不同类型的变量表示。在上述情况下,单个输出仅连接到算术运算的结果。
整数和实数
在该示例性实施方式中,为简便起见,假设仅整数(有符号或无符号)之间的运算是可行的。如果去除了此假设,则必须扩展电路构造块(请参见“算术原语的生成”部分)。因此,实数之间的运算必须转换为整数之间的运算。考虑合约的以下部分:
“Check if the average salary of the employees is greater than$32.5K.”(检查雇员的平均薪水是否大于$32.5K)
该语句需要除法(除以N个雇员)以计算平均值。但是,该语句可以转换为整数之间的以下表达式:
其中si表示第i个员工的薪水。
创建全局符号表
在计算机科学中,符号表是编译器/解释器用来将源代码中的每个标识符(符号)和与其声明相关信息相关联的数据结构。在该第二步骤中,解释器检测源文件中声明的所有全局符号:
·函数
·结构(或类)
注意:使用类(OOP语言,例如C++)需要附加的逻辑来检查公共、受保护和私密部分的范围。
·常量
(也可以使用全局变量,但不建议使用全局变量。contract(…)函数的范围应视为独立的黑盒子。其行为不应依赖于外部变量)。
对于这些符号中的每一个,都建立了表示其标识符的内部声明的局部符号的层次结构。在此阶段末尾,表中的每个全局符号(名称、类型和值)可被直接寻址,以进行进一步处理。
检测合约的入口点
全局符号中的一个必须是合约的入口点(“预处理”部分中的合约函数)。根据预期语法检查其参数的名称、数量和类型。附加逻辑可以主要是检查所有输入结构在合约内被使用且所有输出结构都链接到合约的某些部分。
逐行评估
每个代码行被独立分析。代表标识符内部声明的局部符号包含在全局符号表的层次结构中。更详细地说,此阶段负责以下任务:
·类型的解码,包括结构和数组的声明,基本类型(布尔值,整数等)和指针。
·表达式的解码,例如一元或二进制运算,常量,标识符,数据结构和函数调用。
·表达式的评估,即,不依赖于输入值的(数字)表达式的评估。
·内存分配,即合约功能所需的数据结构的临时存储分配。
该阶段从空间(即使用的内存)角度和时间(即运算符优先级)角度将算术表达式的所有语句链接在一起。因此,每个输出变量都表达为应用于输入变量的逻辑和算术运算的组合。
创建显式算术表达式
使用“逐行”部分中定义的数据结构,通用算术/逻辑表达式e会折叠起来,以便根据以下语法以显式形式表示:
OPN(OPN-1(…(OP1(OP0))…))
根据此语法,在运算符OPi之后将任意运算符OPi+1应用于e。
例如,给定以下代码:
显式表达式e可以表示为:
out0=(?(<15(ADD(ADD(ADD in0 in1)in0)in1))50(MUL(MUL in0 in1)in1))
如“算术原语的生成”部分中所述,表达式e用于创建表示合约功能所需的算术原语。
算术原语的生成
在此阶段,解释器准备好在用于生成表达式e的操作与在电路上实现这些功能所需的结构之间进行一对一映射。
创建电路所需的一个重要参数是位宽nbit,即用来表示有符号(或无符号)整数的位数。不同的计算机架构以不同的nbit值来表征。如果客户端不知道工作方的偏好位宽值,则在电路的头部中随意选择和指定其值以及其他信息,如图4所示。(如同针对特定目标架构进行编译一样,知道位宽值可能会导致电路的更有效的实现和执行。)
版本字段提供了有关用于在电路中创建特定构造块的特定算法的重要信息。在示例性实现方案中,选择带符号整数的二补数二进制表示。
加法和乘法运算
加法和乘法运算一对一映射到电路中的加法和乘法门中。给定两个n位导线输入,加法导线输出需要n+1位,乘法导线输出需要2n位。例如,两个nbit导线a和b之间的乘法可以表示为:
MUL[ida idb]TO[idc]
(电路中的每个算术或布尔导线x都可以通过值idx唯一标识。至于二进制变量,从值0开始计数)。结果c将自动以2nbit位表示。
布尔运算
整组布尔门可以使用算术门来计算。给定两个布尔值a和b,以下等效是有效的:
·AND(a,b)=ab
·NAND(a,b)=1-ab
·OR(a,b)=1-(1-a)(1-b)
·NOR(a,b)=(1-a)(1-b)
·XOR(a,b)=(1-a)b+(1-b)a
除了XOR运算符外,每个布尔门仅需要一个乘法。所有算术运算均在1位宽度导线上执行。
对n位宽度的输入进行按位布尔运算需要n个1位乘法(对于AND)或加法(对于OR)。从最低有效输出位开始,然后将每个元素乘以2并加到下一个元素,以生成作为结果的n位整数值(请参见“导线压缩”部分)。
导线扩展
导线扩展通常用于将算术导线a转换为na位输出导线,其中na是可以用a表达的最大值的以2为底的对数。例如,考虑合约的以下部分:
“Check if variable<a>is even(检查变量<a>是否为偶数)”
如果na=4,则使用导线扩展实现该语句,如图5所示。假定a0表示a的最低有效位,则该语句的输出等于a0本身。该电路构造块可以表示为:
EXPAND[ida]TO[ida3 ida2 ida1 ida0](将[ida]扩展为[ida3 ida2 ida1 ida0])
仔细观察一下电路,明显仅需要a的一位对其进行进一步处理,而其余的1位导线则可以去除。解释器可以仅生成合约其余部分中使用的各个1位导线。图5示出了4位导线扩展器的实现,其表示语句“Check if variable<a>is even(检查变量<a>是否为偶数)”。
解释器对优化的导线扩展器应用特定的语法:
EXPAND[ida]TO[0->ida0](将[ida]扩展为[0->ida0])
即,仅采用最低有效的1位导线(即,标识符编号为零),并且将标识符ida0分配给它。na越大,优化可能越有效。(在本上下文中,将优化定义为节省空间来存储或传输用于表示算术电路的低级指令的可能性)。
导线压缩
导线压缩用于将1位导线ai组合回na位输出导线:
此构造块包括常量加法和乘法,因此QAP多项式的大小不受影响(请参阅GenaroR.等人(2013)Quadratic Span Programs and Succinct NIZKs Without PCPs)。假设na=256并且范围[ida0,ida255]内的标识符是连续的,表示该构造块的一种优化方式如下:
COMPRESS[ida0:ida255]TO[ida](压缩[ida0:ida255]到[ida])
然后所得到的导线a以ida来标识。
求负运算
需要求负运算来比较两个变量,因为可以将它们的差与值零进行比较。求负nbit位导线可以实现为乘以常量-1。此常量必须表示为:
等于零操作
nbit-位导线a的该构造块可以按以下方式实现:
·nbit位(a0,…,anbit-1)上进行导线扩展;
·对每个1位导线求负(ai→bi);
因此,当且仅当a=0时,1位变量c=1。
与零操作比较
可以使用简单的等式规则将“大于”运算转换为“小于”运算。在二补数表示中,此操作对应于检查两个有符号整数之间的差是正还是负(或,在“小于或等于”运算的情况下,检查是否等于零)。差c=a–b的符号的判别由二进制表示中的最高有效位x给出:负数的特征在于x=1,而正数的特征在于x=0:
EXPAND[idc]TO[nbit-1->x](展开[idc]至[nbit-1->x])
根据比较的类型(正vs负),需要对二进制值x求负。
条件语句
可以使用以下形式来表示高级语言中的条件语句:
IF(Sc)Sa ELSE Sb(如果(Sc)Sa否则Sb)
由于语句Sc取决于合约的输入,因此分支Sa和Sb都必须在电路中实现。逻辑流程如图6所示。根据语句Sc的(二进制)输出,来执行语句Sa或语句Sb。二进制运算x+1用于对x求反。
生成常量
常量值不取决于电路的输入导线。使用mul-by-const-c形式的专用一元乘法门,提供以下附加电路来生成合约所需的常量值:
·通过将输入导线乘以零来计算常量zero。
(合约必须至少有一个输入。因此,标识符为1的输入(例如,图7中的in1)可用于生成常量zero。)
·通过将常量zero加一来计算常量one。
·通过在常量one上使用mul-by-const-ci,来计算任何其他常量ci。
由于常量zero和one总是添加到电路中,因此要实现k个任意常量需要k+2个门。在图7中描绘了该过程。根据本发明实施方式提供的常量生成器模块负责创建由算术电路使用的常量。在该示例中,生成三个常量(C1,C2和C3)加上默认的一(1)和零(0)值。
常量具有二补数标准所指定的已知位宽。
现在转向图8,图8提供了可用于实践本公开的至少一个实施方式的计算设备2600的示例性简化框图。在各种实施方式中,计算设备2600可以用于实现以上示出和描述的任何系统。例如,计算设备2600可以被配置为用作数据服务器、网络服务器、便携式计算设备、个人计算机或任何电子计算设备。如图8所示,计算设备2600可以包括具有一个或更多个级别的高速缓存存储器和存储控制器的一个或更多个处理器(统一标为2602),其可被配置为与包括主存储器2608和永久存储器2610的存储子系统2606通信。主存储器2608可包括动态随机存取存储器(DRAM)2618和只读存储器(ROM)2620,如图所示。存储子系统2606和高速缓存存储器2602可以用于存储信息,诸如与本公开中所描述的交易和块相关联的细节。处理器2602可用于提供本公开中所描述的任何实施方式的步骤或功能。
处理器2602还可以与一个或更多个用户界面输入设备2612、一个或更多个用户界面输出设备2614以及网络接口子系统2616通信。
总线子系统2604可以提供用于使计算设备2600的各个组件和子系统能够按期望彼此通信的机制。尽管总线子系统2604被示意性地示出为单个总线,但是总线子系统的替代实施方式可以利用多个总线。
网络接口子系统2616可以提供到其他计算设备和网络的接口。网络接口子系统2616可以用作从其他系统接收数据以及从计算设备2600向其他系统发送数据的接口。例如,网络接口子系统2616可以使数据技术人员能够将设备连接至网络,使得数据技术人员能够在远程位置(例如数据中心)将数据传输到设备并从设备接收数据。
用户界面输入设备2612可以包括一个或更多个用户输入设备,诸如键盘;指向设备例如集成鼠标、跟踪球、触摸板或图形输入板;扫描仪;条形码扫描仪;并入显示器中的触摸屏;音频输入设备,例如语音识别系统,麦克风;和其他类型的输入设备。通常,术语“输入设备”的使用旨在包括用于将信息输入到计算设备2600的所有可能类型的设备和机制。
一个或更多个用户界面输出设备2614可以包括显示子系统、打印机或诸如音频输出设备等的非可视显示器。显示子系统可以是阴极射线管(CRT),平板设备比如液晶显示器(LCD),发光二极管(LED)显示器、或投影仪或其他显示设备。通常,术语“输出设备”的使用旨在包括用于从计算设备2600输出信息的所有可能类型的设备和机制。一个或更多个用户界面输出设备2614可以用于例如呈现用户界面以促进用户与执行所述处理以及其变体的应用程序相交互的接口—在这样的交互适当时。
存储子系统2606可以提供计算机可读存储介质,该计算机可读存储介质用于存储可以提供本公开的至少一个实施方式的功能的基本编程和数据结构。当由一个或更多个处理器执行时,应用程序(程序、代码模块、指令)可以提供本公开的一个或更多个实施方式的功能,并且可以被存储在存储子系统2606中。这些应用程序模块或指令可以由一个或更多个处理器2602来执行。存储子系统2606可以另外提供用于存储根据本公开使用的数据的存储库。例如,主存储器2608和高速缓存存储器2602可以为程序和数据提供易失性存储。永久性存储装置2610可以为程序和数据提供永久性(非易失性)存储,并且可以包括闪存、一个或更多个固态驱动器、一个或更多个磁盘驱动器、一个或更多个具有相关可移除介质的软盘驱动器、一个或更多个具有相关可移除介质以及其他类似存储介质的光驱(例如CD-ROM或DVD或Blue-Ray)驱动器。这样的程序和数据可以包括用于执行如本公开中所描述的一个或更多个实施方式的步骤的程序,以及与如本公开中所描述的交易和块相关联的数据。
计算设备2600可以是各种类型,包括便携式计算机设备、平板计算机、工作站或以下描述的任何其他设备。另外,计算设备2600可以包括可以通过一个或更多个端口(例如,USB、耳机插孔、闪电连接器等)连接到计算设备2600的另一设备。可以连接到计算设备2600的设备可以包括被配置为接受光纤连接器的多个端口。因此,该设备可以被配置为将光信号转换为电信号,该电信号可以通过用于将该设备连接至计算设备2600的端口进行传输以进行处理。由于计算机和网络的不断变化的性质,对图8所绘计算设备2600的描述仅作为特定例子,用于阐述设备的优选实施方式。与图8所绘系统相比具有更多或更少组件的许多其他配置也是可以的。
应当注意,上述实施方式说明而不是限制本发明,并且本领域技术人员将能够设计许多替代实施方式而不脱离由所附权利要求限定的本发明的范围。在权利要求中,括号中的任何附图标记都不应被理解为是对权利要求的限制。词语“包括”(“comprising”和“comprises”)等不排除还存在任何权利要求或说明书作为一个整体列出的元件或步骤之外的其他元件或步骤。在本说明书中,“包括”是指“包括或由……组成”。元件的单数形式并不排除此类元件的复数形式,反之亦然。本发明可以通过包括若干不同元件的硬件以及通过适当编程的计算机来实现。在列举若干装置的设备权利要求中,这些装置中的若干个可以由一项且同一项硬件来实现。在互不相同的从属权利要求中记载某些措施这一事实并不意味着不能有利地使用这些措施的组合。
本文所引用的所有参考文献,包括出版物、专利申请和专利,均通过引用并入本文,其引用程度如同:每个参考文献被单独具体指示为通过引用并入,且其整体被阐述。参考文献包括英国专利申请号:GB1719998.5、GB 1718505.9、GB 1720768.9。
Claims (16)
1.一种计算机实现的方法,包括以下步骤:
处理一部分源代码以生成算术电路,其中:
所述源代码是用高级编程语言编写的;以及
所述算术电路包括一个或更多个算术门,所述一个或更多个算术门被设置为代表在所述源代码中表达的一些功能或全部功能。
2.根据权利要求1所述的方法,其中:
i)所述算术电路是所述源代码的机器可执行版本,并且被设置为对结果进行计算;和/或
ii)所述源代码是智能合约。
3.根据权利要求1或2所述的方法,其中,所述处理步骤包括:
评估在所述源代码中提供的一个或更多个常量,以提供一个或更多个包含布尔运算符和/或算术运算符的表达式。
4.根据任一前述权利要求所述的方法,还包括以下步骤:
使用所述算术电路来提供硬件和/或软件电路。
5.根据任一前述权利要求所述的方法,其中:
所述算术电路包括连接到算术门的n位导线。
6.根据任一前述权利要求所述的方法,其中:
所述算术电路与架构无关。
7.根据任一前述权利要求所述的方法,其中所述方法还包括对所述源代码进行预处理以确定一个或更多个常量,所述预处理包括以下步骤中的一个或更多个:
去除注释;
将头部声明从头文件导入到源文件;
合并多个源文件;
处理或评估指令和宏。
8.根据任一前述权利要求所述的方法,其中,所述方法还包括以下步骤:检测在所述源代码中声明的所有全局变量,其中,全局变量与函数、结构或类、常量和/或执行的入口点有关。
9.根据任一前述权利要求所述的方法,其中,所述方法还包括以下步骤:
生成符号表,以将所述源代码中提供的每个符号(即标识符)与所述源代码中提供的声明信息相关联,所述表中的符号是全局符号和/或局部符号。
10.根据任一前述权利要求所述的方法,其中,所述方法还包括以下步骤:对所述源代码进行逐行评估,从而得到算术表达式和/或逻辑表达式,所述算术表达式和/或逻辑表达式将一个或更多个输出变量表示为应用于一个或更多个输入变量上的逻辑运算和/或算术运算的组合。
11.根据权利要求10所述的方法,其中,所述逐行评估包括以下子步骤:
对类型进行解码;
对表达式进行解码;
评估表达式;和/或
为所述功能所需的数据结构分配内存。
12.根据权利要求10或11所述的方法,还包括以下步骤:
将所述表达式的算术运算和/或逻辑运算映射到算术门。
13.根据权利要求12所述的方法,其中,所述映射步骤包括以下子步骤:
执行导线扩展;和/或
执行导线压缩。
14.根据任一前述权利要求所述的方法,还包括以下步骤:
使用所述算术电路来生成包括一组多项式的二次规划,所述一组多项式提供了对所述电路的描述。
15.根据权利要求14所述的方法,还包括以下步骤:
将所述二次规划提供给实体以使用一个或更多个输入执行所述二次规划。
16.一种计算机实现的系统,其被布置为执行任一前述权利要求的步骤,优选地,其中,所述系统包括被设置为执行对所述源代码的处理的解释器。
Applications Claiming Priority (13)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB1718505.9A GB201718505D0 (en) | 2017-11-09 | 2017-11-09 | Computer-implemented system and method |
GB1718505.9 | 2017-11-09 | ||
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 | ||
GB1805948.5 | 2018-04-10 | ||
GBGB1805948.5A GB201805948D0 (en) | 2018-04-10 | 2018-04-10 | Computer-implemented system and method |
GB1806444.4 | 2018-04-20 | ||
GBGB1806444.4A GB201806444D0 (en) | 2018-04-20 | 2018-04-20 | Computer-implemented system and method |
PCT/IB2018/058437 WO2019092545A1 (en) | 2017-11-09 | 2018-10-29 | Arithmetic enhancement of c-like smart contracts for verifiable computation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111406379A true CN111406379A (zh) | 2020-07-10 |
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 Before (4)
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 | 用于保护验证密钥不被更改并验证正确性证明的有效性的系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
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)
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 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08305547A (ja) * | 1995-05-11 | 1996-11-22 | Oki Electric Ind Co Ltd | Pldによるコンピュータおよびコンパイラおよびオペレーティングシステム |
WO2003032490A2 (en) * | 2001-10-11 | 2003-04-17 | California Institute Of Technology | Method and apparatus for an asynchronous pulse logic circuit |
CN104823161A (zh) * | 2012-11-07 | 2015-08-05 | 皇家飞利浦有限公司 | 生成无运算符代码的编译器 |
CN105814568A (zh) * | 2013-12-12 | 2016-07-27 | 国立大学法人东京工业大学 | 逻辑电路生成装置以及方法 |
CA3019270A1 (en) * | 2016-04-29 | 2017-11-02 | nChain Holdings Limited | Implementing logic gate functionality using a blockchain |
Family Cites Families (103)
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 |
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 |
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. |
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 |
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 |
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 |
-
2018
- 2018-10-29 EP EP18797158.5A patent/EP3707855A1/en active Pending
- 2018-10-29 US US16/762,461 patent/US20210377041A1/en active Pending
- 2018-10-29 WO PCT/IB2018/058432 patent/WO2019092542A1/en unknown
- 2018-10-29 WO PCT/IB2018/058434 patent/WO2019092544A1/en unknown
- 2018-10-29 KR KR1020207014203A patent/KR20200080265A/ko not_active Application Discontinuation
- 2018-10-29 SG SG11202004149UA patent/SG11202004149UA/en unknown
- 2018-10-29 CN CN202311496467.5A patent/CN117640170A/zh active Pending
- 2018-10-29 EP EP18796783.1A patent/EP3707852A1/en active Pending
- 2018-10-29 WO PCT/IB2018/058437 patent/WO2019092545A1/en unknown
- 2018-10-29 JP JP2020524532A patent/JP7208989B2/ja active Active
- 2018-10-29 CN CN201880073019.5A patent/CN111345005A/zh active Pending
- 2018-10-29 EP EP18796782.3A patent/EP3707871B1/en active Active
- 2018-10-29 CN CN201880072678.7A patent/CN111345004B/zh active Active
- 2018-10-29 SG SG11202004146WA patent/SG11202004146WA/en unknown
- 2018-10-29 EP EP18797157.7A patent/EP3707623A1/en active Pending
- 2018-10-29 JP JP2020524517A patent/JP2021502636A/ja active Pending
- 2018-10-29 US US16/762,471 patent/US11658801B2/en active Active
- 2018-10-29 JP JP2020524430A patent/JP7234229B2/ja active Active
- 2018-10-29 SG SG11202004147RA patent/SG11202004147RA/en unknown
- 2018-10-29 EP EP23216404.6A patent/EP4312403A3/en active Pending
- 2018-10-29 KR KR1020207014209A patent/KR20200086284A/ko not_active Application Discontinuation
- 2018-10-29 US US16/762,475 patent/US11635950B2/en active Active
- 2018-10-29 US US16/762,466 patent/US11575511B2/en active Active
- 2018-10-29 JP JP2020524541A patent/JP7221954B2/ja active Active
- 2018-10-29 WO PCT/IB2018/058433 patent/WO2019092543A1/en unknown
- 2018-10-29 KR KR1020207014108A patent/KR20200086282A/ko not_active Application Discontinuation
- 2018-10-29 EP EP22170376.2A patent/EP4092953A1/en active Pending
- 2018-10-29 SG SG11202004148PA patent/SG11202004148PA/en unknown
- 2018-10-29 KR KR1020207014213A patent/KR20200079503A/ko not_active Application Discontinuation
- 2018-10-29 CN CN201880072801.5A patent/CN111316595A/zh active Pending
- 2018-10-29 CN CN201880072692.7A patent/CN111406379A/zh active Pending
- 2018-11-01 CN CN201880072729.6A patent/CN111316594A/zh active Pending
- 2018-11-01 SG SG11202004153UA patent/SG11202004153UA/en unknown
- 2018-11-01 JP JP2020524561A patent/JP2021502747A/ja active Pending
- 2018-11-01 WO PCT/IB2018/058583 patent/WO2019092561A1/en unknown
- 2018-11-01 US US16/762,490 patent/US20210192514A1/en active Pending
- 2018-11-01 EP EP18800333.9A patent/EP3707856A1/en active Pending
- 2018-11-01 KR KR1020207014106A patent/KR20200086281A/ko not_active Application Discontinuation
- 2018-11-08 TW TW107139662A patent/TWI806918B/zh active
-
2020
- 2020-05-08 ZA ZA2020/02575A patent/ZA202002575B/en unknown
-
2023
- 2023-01-06 JP JP2023000947A patent/JP2023036962A/ja active Pending
- 2023-02-02 JP JP2023014319A patent/JP2023052834A/ja active Pending
- 2023-02-03 US US18/105,672 patent/US20230269070A1/en active Pending
- 2023-02-22 JP JP2023026258A patent/JP7477674B2/ja active Active
- 2023-04-03 US US18/130,373 patent/US20230318804A1/en active Pending
- 2023-04-13 US US18/134,276 patent/US20230318805A1/en active Pending
- 2023-10-05 JP JP2023173507A patent/JP2023182741A/ja active Pending
- 2023-10-12 JP JP2023176820A patent/JP2023179687A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08305547A (ja) * | 1995-05-11 | 1996-11-22 | Oki Electric Ind Co Ltd | Pldによるコンピュータおよびコンパイラおよびオペレーティングシステム |
WO2003032490A2 (en) * | 2001-10-11 | 2003-04-17 | California Institute Of Technology | Method and apparatus for an asynchronous pulse logic circuit |
CN104823161A (zh) * | 2012-11-07 | 2015-08-05 | 皇家飞利浦有限公司 | 生成无运算符代码的编译器 |
CN105814568A (zh) * | 2013-12-12 | 2016-07-27 | 国立大学法人东京工业大学 | 逻辑电路生成装置以及方法 |
CA3019270A1 (en) * | 2016-04-29 | 2017-11-02 | nChain Holdings Limited | Implementing logic gate functionality using a blockchain |
Non-Patent Citations (1)
Title |
---|
BRTAN PARNO等: "Pinocchio: Nearly Practical Verifiable Computation", 《INTERNATIONAL ASSOCIATION FOR CRYPTOLOGIC RESEARCH》, pages 1 - 16 * |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111406379A (zh) | 用于可证实计算的类似c的智能合约的算术增强 | |
CN112100054B (zh) | 一种面向数据管控的程序静态分析方法和系统 | |
US10699269B1 (en) | System and method for smart contract publishing | |
CN110870249A (zh) | 用于将高级语言代码编译为区块链平台上可执行的脚本的系统和方法 | |
US20230109846A1 (en) | Computer-implemented systems and methods for serialisation of arithmetic circuits | |
US11513815B1 (en) | Defining data storage within smart contracts | |
Zhu et al. | Formal verification of solidity contracts in event-b | |
EP3868054A1 (en) | Computer-implemented system and method including public key combination verification | |
TWI837103B (zh) | 電腦實施方法及系統 | |
Halter et al. | A compositional framework for scientific model augmentation | |
KR102398543B1 (ko) | 영지식 증명 알고리즘이 적용된 검증 가능한 블록체인 가상머신 | |
MIKEK et al. | SMT Theory Arbitrage: Approximating Unbounded Constraints using Bounded Theories | |
CN117591087A (zh) | 一种针对复杂数据处理需求的高效形式化代码构建方法 | |
CN115795476A (zh) | 基于不可区分混淆的智能合约漏洞隐藏方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |