KR20200086282A - 검증 가능한 계산을 위한 c-형 스마트 계약의 산술 연산 강화 - Google Patents

검증 가능한 계산을 위한 c-형 스마트 계약의 산술 연산 강화 Download PDF

Info

Publication number
KR20200086282A
KR20200086282A KR1020207014108A KR20207014108A KR20200086282A KR 20200086282 A KR20200086282 A KR 20200086282A KR 1020207014108 A KR1020207014108 A KR 1020207014108A KR 20207014108 A KR20207014108 A KR 20207014108A KR 20200086282 A KR20200086282 A KR 20200086282A
Authority
KR
South Korea
Prior art keywords
source code
arithmetic operation
way
arithmetic
operation circuit
Prior art date
Application number
KR1020207014108A
Other languages
English (en)
Inventor
알렉산드라 코바시
시몬 마데오
패트릭 모틸린스키
스테판 빈센트
Original Assignee
엔체인 홀딩스 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
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 엔체인 홀딩스 리미티드 filed Critical 엔체인 홀딩스 리미티드
Publication of KR20200086282A publication Critical patent/KR20200086282A/ko

Links

Images

Classifications

    • 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
    • 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
    • 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
    • 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
    • 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
    • H04L2209/38
    • 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

본 발명은 고급 소스 코드를 소스 코드로 표현되는 기능을 나타내는 산술 연산 회로로 변환하기 위한 시스템 및 방법을 제공한다. 본 발명은 이 변환을 수행하기 위한 번역/해석 컴포넌트를 포함한다. 바람직한 실시형태에 있어서, 소스 코드는 블록체인 플랫폼과 관련하여 사용되는 것과 같은 스마트 계약이다. 본 발명은, 예를 들어, 비트코인 네트워크와 관련하여 사용될 수 있다. 실시형태에 따른 방법은 고급 소스 코드(예컨대, 스마트 계약)의 일부를 처리하여 산술 연산 회로를 생성하는 단계를 포함한다. 산술 연산 회로는 소스 코드로 표현되는 기능의 적어도 일부를 나타내도록 구성되는 하나 이상의 산술 연산 게이트를 포함한다. 처리하는 단계는 소스 코드에서 제공되는 하나 이상의 상수를 평가하여 불린(Boolean) 연산자 및/또는 산술 연산 연산자를 포함하는 하나 이상의 식을 생성하는 단계를 포함한다. 산술 연산 회로는 산술 연산 게이트에 연결되는 n-비트 와이어를 포함하고; 하드웨어 및/또는 소프트웨어 회로를 제공하는 데 사용될 수 있다. 산술 연산 회로는 프로세서에서 실행될 수 있는 이차 프로그램을 생성하는 데 사용될 수 있다.

Description

검증 가능한 계산을 위한 C-형 스마트 계약의 산술 연산 강화
본 발명은 일반적으로 고급 소스 코드를 다른 형태로 변환하기 위한 툴, 기술 및 시스템 분야, 예컨대 인터프리터에 관한 것이다. 이는 블록체인 기술과도 관련되며, 특히, 블록체인-구현 해법을 구축하기 위한 툴과 관련된다. 또한, 예를 들어, 블록체인에서 실행되도록 구성되는 스마트 계약과 같은 개선된 기계-실행 가능 기술의 생성과 관련된다.
본 명세서에서, '블록체인(blockchain)'이라는 용어는 몇 가지 타입의 전자적인, 컴퓨터-기반의, 분산 원장(distributed ledger) 중 어느 것을 의미한다. 이는 컨센서스-기반의 블록체인 및 트랜잭션-체인 기술, 허가 및 무허가 원장, 공유 원장 및 이들의 변형을 포함한다. 또한, 개인 및 공공 블록체인도 포함한다.
다른 블록체인 구현예들이 제안되고 개발되었지만, 가장 널리 알려져 있는 블록체인 기술의 용례는 비트코인(Bitcoin) 원장이다. 본 개시물에서는 편의 및 예시의 목적으로 비트코인의 실시예가 언급될 수 있지만, 본 발명은 비트코인 블록체인 또는 연관된 프로토콜의 임의의 특정 구현예 또는 변형예에 사용하는 것으로 제한되지 않으며, 대안적인 블록체인 구현예 및 프로토콜도 본 발명의 범위에 속하는 것이라는 점에 유의해야 한다.
블록체인은, 결국 트랜잭션들로 구성된 블록들로 구성되는 컴퓨터-기반의 탈-중앙집중형 시스템으로 구현된 피어-투-피어(peer-to-peer) 전자 원장이다. 각각의 트랜잭션은 블록체인 시스템 참여자들 사이의 디지털 자산의 제어의 전송을 인코딩하는 데이터 구조이며, 적어도 하나의 입력 및 적어도 하나의 출력을 포함한다. 각각의 블록이 이전 블록의 해시를 포함하고, 해당 블록들이 함께 연쇄되어 그 개시 이래로 블록체인에 작성된 모든 트랜잭션의 영구적인 불변의 레코드를 생성한다.
스크립트(Script)로 알려져 있는 비트코인 블록체인의 스크립팅 언어는 스택(stack) 기반이다. 아이템들이 스택의 상위에 푸시(밀어넣기)되고 스택의 상위로부터 팝(꺼내기)될 수 있다. 예를 들어, OP_EQUAL 연산은 스택으로부터 상위 2개의 아이템을 꺼내고, 이들을 비교하고, 결과(예컨대, 같으면 1 또는 같지 않으면 0)를 스택의 상위에 밀어넣는다. 본 발명의 일부 실시형태에 의해 채용되는 일부 스크립팅 언어에 있어서는, 적어도 2개의 스택: 즉, 메인 스택 및 대체 스택이 있을 수 있다.
블록체인에 트랜잭션이 작성되게 하기 위해서는, 트랜잭션이 "유효성 검증(validated)"되어야 한다. 네트워크 노드(채굴자)는, 각각의 트랜잭션이 유효함을 보장하고, 무효한 트랜잭션이 네트워크로부터 거부되게 하는 작업을 수행한다. 한 노드는 다른 노드들과는 다른 유효성에 대한 표준을 가질 수 있다. 블록체인에서의 유효성이 컨센서스 기반으로 되기 때문에, 트랜잭션은 대부분의 노드가 트랜잭션이 유효하다고 동의할 경우에 유효한 것으로 간주된다. 노드에 인스톨된 소프트웨어 클라이언트는 아직 소비되지 않은 트랜잭션(UTXO)의 잠금 및 잠금 해제 스크립트를 실행함으로써 UTXO를 부분적으로 참조하는 트랜잭션에 대한 이 유효성 검증 작업을 수행한다. 잠금 및 잠금 해제 스크립트의 실행이 TRUE로 평가하고, 적용 가능할 경우, 다른 유효성 검증 조건들이 충족되면, 트랜잭션은 노드에 의해 유효성 검증된다. 유효성 검증된 트랜잭션은 다른 네트워크 노드들에 전파되고, 그 결과 채굴자 노드는 블록체인에 트랜잭션을 포함시키도록 선택할 수 있다.
따라서, 블록체인에 트랜잭션이 작성되게 하기 위해서는, 트랜잭션은 i) 트랜잭션을 수신하는 제1 노드에 의해 유효성 검증되어야 하고 ― 트랜잭션이 유효성 검증되면, 해당 노드가 네트워크 내의 다른 노드들에 트랜잭션을 중계하고; ii) 채굴자에 의해 구축되는 신규 블록에 추가되어야 하고; iii) 채굴, 즉 과거 트랜잭션들의 공공 원장에 추가되어야 한다. 트랜잭션을 사실상 불가역적으로 만들기 위해 충분한 수의 블록들이 블록체인에 추가된 경우, 트랜잭션은 확인된 것으로 간주된다.
암호화폐 구현용으로 블록체인 기술이 가장 널리 알려져 있지만, 디지털 사업가는 비트코인이 기초로 하는 암호학적 보안 시스템 및 신규 시스템을 구현하기 위해 블록체인에 저장될 수 있는 데이터를 모두 이용하는 것을 모색하기 시작했다. 블록체인이 암호화폐의 영역으로 제한되지 않는 자동화된 태스크 및 프로세스에 사용될 수 있다면 매우 유리할 것이다. 이러한 해법은 블록체인의 이점(예컨대, 영구적인 변조 방지 이벤트 레코드, 분산 처리 등)을 활용할 수 있으면서 그 용례에 있어서 더욱 다용도이다.
현재 연구의 한 영역은 "스마트 계약(smart contracts)"을 구현하기 위해 블록체인을 사용하는 것이다. 스마트 계약은 기계-판독 가능 계약서 또는 합의서의 조건의 실행을 자동화하도록 설계되는 컴퓨터 프로그램이다. 자연 언어로 작성되는 종래의 계약과 달리, 스마트 계약은 결과를 생성하기 위해 입력을 처리할 수 있는 규칙을 포함하는 기계 실행 가능 프로그램이고, 해당 결과에 따라 동작이 수행되게 할 수 있다.
실시형태들에 있어서, 스마트 계약은 생성자, 또는 일부 다른 특정 엔티티가 스마트 계약의 집행 및/또는 실행에 필요하지 않다는 점에서 "스마트(smart)"하다. 인간 상호작용은 실행 또는 집행에 필요하지 않다. 즉, 특정 엔티티들과의 상호작용이 스마트 계약의 특정 단계들에서 인코딩될 수 있지만, 스마트 계약은 자동으로 실행 및 자력-집행될 수도 있다. 기계 판독 가능 및 실행 가능하다는 것이다. 일부 실시예에 있어서, 자동 실행은 임의의 엔티티가 UTXO를 소비할 수 있고 그렇게 하기 위한 인센티브(예컨대, 보상)를 갖는다는 것을 의미한다. 이러한 실시예들에 있어서, UTXO를 소비할 수 있는 "임의의 엔티티(any entity)"는 일부 비밀에 대한 지식을 증명할 필요 없이 잠금 해제 스크립트를 생성할 수 있는 엔티티를 의미한다는 점에 유의한다. 다시 말해, 소비 트랜잭션은 데이터의 소스가 암호학적 비밀(예컨대, 개인 비대칭 키, 대칭 키 등)에 액세스할 수 있는지를 검증하지 않고 유효성 검증될 수 있다. 또한, 이러한 실시예들에 있어서, 자력 집행은 블록체인 네트워크의 유효성 검증 노드가 제약에 따라 소비 트랜잭션을 집행하게 된다는 것을 의미한다. 일부 실시예에 있어서, UTXO를 "소비(spending)"한다는 것은 UTXO를 참조하고 유효한 것으로서 실행하는 소비 트랜잭션을 생성한다는 것을 의미한다.
따라서, 단순히 암호화폐 지불을 위한 수단이 아닌, 블록체인 기술을 적용할 수 있는 용도를 둘러싼 많은 관심이 있다. 이는 IoT 장치, A.I. 기술을 포함한 지능형 시스템 등의 제어를 포함한다.
그러나, C, C++, Java(자바) 등과 같은 고급 언어를 사용하여 프로그래밍하는 당업자가 많이 있지만, 블록체인을 위한 애플리케이션을 만들 수 있는 이들은 그 수가 비교적 적다. 이는, 부분적으로 현재로서는 메인 스택 및 대체 스택을 조작하는 op_code(연산 부호)를 사용해서 블록체인을 상대적으로 저수준으로 코딩해야 하기 때문이다. 특히, 블록체인의 구현을 위한 스마트 계약의 프로그래밍은 어렵고 에러가 발생하기 쉽다고 알려져 있으며 ― Delmolino, K., 등의 'Step by Step Towards Creating a Safe Smart Contract: Lessons and Insights from a Cryptocurrency Lab'(2015), 및 Juels, A., 등의 'The Ring of Gyges: Using Smart Contracts for Crime'(2013)에서 분석된 바와 같다.
블록체인과 함께 사용될 수 있는 해법 및 애플리케이션을 만들 수 있게 함으로써, 개선된 블록체인 및 연관 플랫폼이 제공된다. 산술 연산 게이트의 계산을 위한 해법도 제공된다. 산술 연산 회로는 술어(predicate)로서의 또는 술어의 실행을 위해 구성될 수 있다. 본 발명은 (종래기술의 개시 내용에 따라 단순히 검증 또는 증명을 제공하는 것과는 달리) 실행 가능 프로그램의 생성 및 인코딩을 가능하게 한다.
따라서, 하나 이상의 양태에서 블록체인 및 분산 컴퓨팅 기술을 개선하는 방법 및 시스템을 제공하는 것이 바람직하다. 그래서, 이러한 개선된 해법이 고안되었다. 따라서, 본 발명에 따르면, 첨부된 청구항들에서 정의되는 바와 같은 방법 및 시스템이 제공된다.
본 발명은 탈-중앙집중형 시스템에서의 프로그래밍 능력을 제공 및 용이하게 하도록 구성되는 시스템 및 방법을 포함할 수 있다. 예를 들어, 암호화폐 시스템, 블록체인-구현 시스템 및/또는 분산 계산 시스템일 수 있다. 한 가지 관점에서, 프로그래밍 프로세스 동안 에러가 감소되고, 요구되는 시간, 노력, 비용 및 리소스가 절감된다. 따라서, 기술적인 문제에 대한 기술적인 해법이 제공된다. 다른 관점에서는, 에러 및 버그의 감소로 인해 강화된 블록체인 해법이 제공된다. 소프트웨어 무결성도 보존된다.
유리하게는, 기존의 인터프리터 및 컴파일러와 달리, 본 발명은 아키텍처-독립적 해법을 제공한다. 또한, 실행을 가능하게 하기 위한 가상 기계(VM)의 사용도 필요로 하지 않는다.
본 발명은 소스 코드를 입력으로서 취하여 산술 연산 회로(C)를 생성하는 컴퓨터-구현 시스템 및 방법을 제공할 수 있다. 결과적인 회로(C)는 (검증을 위한 증명과는 달리) HLL 소스 코드의 기능의 표현일 수 있다. 실행시에, 산술 연산 회로(C)는 계산의 결과를 제공할 수 있으며, 이는 나중에 검증될 수 있다. 회로(C)는 기계 실행 가능한 회로일 수 있거나, 또는 기계에서 실행되도록 처리될 수 있다. 소스 코드는 계산을 표현할 수 있거나 또는 나타낼 수 있다.
이 회로는 필드(F)로부터 값들을 운반하여 덧셈 및 곱셈 게이트에 연결하는 "와이어(wire)"들로 구성될 수 있다. 산술 연산 회로는 소프트웨어로 구체화될 수 있거나, 및/또는 와이어 및 논리 게이트를 갖는 물리적 회로로 구체화될 수 있다. 소스 코드는 HLL 또는 GPL로 작성되는 기능 또는 계산(P)의 일부 또는 전부를 포함하거나 나타낼 수 있다. 본 발명은 해당 계산을 산술 연산 회로(C)로 변환하기 위한 인터프리터로서 설명될 수 있다. 산술 연산 회로(C) 및 일부 입력(x)이 실행을 위해 엔티티에 공급될 수 있다.
본 발명은 소스 코드로 표현되는 계산을 (기계/프로세서에 의해) 실행될 수 있는 술어로 변환 또는 번역할 수 있다. (HLL/GPL) 소스 코드는 사전-컴파일되거나 또는 사전-처리될 수 있다.
하나 이상의 실시형태에 있어서, 공개 평가 키(EK) 및 공개 검증 키(VK)는 비밀 값(s)을 사용하여 도출될 수 있다. 방법은 EK 및 VK를 사용하여 특정 입력(x)에 대한 계산을 평가하는 단계를 포함할 수 있다. 출력(y), 하나 이상의 와이어의 값들 및 EK는 정확성 증명(proof-of-correctness)(π)을 생성하는 데 사용될 수 있다. 증명(π)은 블록체인에 저장될 수 있다. 이는 블록체인 트랜잭션에서 저장될 수 있다. 방법은 블록체인 트랜잭션에서 증명을 제공하는 단계를 포함할 수 있다. 방법은 트랜잭션을 블록체인에 제출하고 및/또는 트랜잭션을 블록체인에 저장하는 단계를 포함할 수 있다.
방법은 블록체인에 저장된 증명을 검증하는 단계를 포함할 수 있다. 증명은 하나 이상의 당사자에 의해 검증될 수 있다. 유리하게는, 증명은 증명자(prover)가 당사자들 각각과 별도로 상호작용할 필요 없이 다수의 당사자에 의해 검증될 수 있다. 이는 종래기술에 비해 더욱 효율적이며 신속한 해법을 제공한다.
블록체인 네트워크(예컨대, 비트코인)의 노드들 중 일부 또는 전부가 트랜잭션을 검증할 수 있다. 스마트 계약을 검증하기 위해 공개 검증 키(VK) 및 증명(π)을 사용해서 검증이 수행될 수 있다.
본 발명의 장점은 채굴자들이 이미 알려진 종래의 블록체인 프로토콜들에 따라 트랜잭션을 검증한다는 점이다. 검증 프로세스는 네트워크 내에서 채굴자의 역할의 일부이다. 따라서, 본 발명은, 필수적인 기존의 연산들의 일부로서 검증이 수행되기 때문에, 노드들에 의해 이루어진 노력을 기술적인 장점에 이용할 수 있다. 이는 종래기술에 비해 효율적인 구성을 제공한다.
일부 실시형태에 있어서, 본 발명은, 도 1에 도시된 바와 같이, DSL로 인코딩된 스마트 계약으로부터 이차 산술 연산 프로그램(quadratic arithmetic program)(QAP)까지의 작업 흐름의 일부를 형성할 수 있다.
도 2에 도시된 바와 같이, 도메인 특정 언어(Domain Specific Language)(DSL) 스마트 계약은 고급 언어(High Level Language) 계약으로 변환될 수 있다. DSL 스마트 계약은 정확한 의미를 갖는 형식 언어로 작성될 수 있다. DSL 스마트 계약은 조건 세트를 포함할 수 있다. DSL 스마트 계약의 결과는 조건 세트가 충족되는지에 달려 있다.
HLL 프리컴파일러(프리프로세서라고 할 수도 있음)는 HLL 사전-처리된 계약을 생성하기 위해 HLL 계약에 의해 참조되는 외부 라이브러리를 통합할 수 있다. HLL 프리컴파일러는 도 2에서 C 프리컴파일러라고 할 수 있다. HLL 계약은 도 2에서 C-언어 계약이라고 할 수 있다.
이어서, HLL 사전-처리된 계약(즉, 소스 코드)이 본 발명의 실시형태에 따른 산술 연산 회로로 변환될 수 있다. 이 산술 연산 회로는 QAP 다항식이 도출되는 축소된 산술 연산 회로를 생성하도록 최적화될 수 있다.
사전-처리 변환은, 실행의 결과로서, DSL로 작성된 DSL 스마트 계약과 같은 조건 세트를 수신하고 DSL 코드를 HLL 계약과 같은 HLL 소스 코드로 번역하는 소프트웨어 프로그램(도 2에서 C 프리컴파일러라고 하는 프로그램)에 의해 수행될 수 있다. 이는 도 2에서 "C-언어 사전처리된 계약(C-language preprocessed contract)"이라고 할 수 있다. 본 명세서에서는, 간단히 "소스 코드(the source code)"라고 할 수도 있다. HLL 계약은 DSL 스마트 계약에서 정의되는 계약을 포함하는, C++ 프로그램과 같은, HLL 프로그램일 수 있다. HLL 프리컴파일러는 HLL 계약, 및 독립형 HLL 사전-처리된 계약(즉, 소스 코드)을 생성하는 데 필요한 외부 라이브러리를 처리하는 컴퓨터-실행 가능 프로그램일 수 있다.
외부 라이브러리는 호출에 의해 HLL 계약에 의해 이용되는 사전-작성된 서브루틴, 함수, 클래스, 컨테이너, 값, 및/또는 변수 타입의 집합일 수 있다. 예를 들어, HLL 계약은, 외부 라이브러리를 호출함으로써, 기능 자체를 구현하지 않고도 해당 라이브러리의 기능을 취득한다. HLL 사전-처리된 계약은 식 및 연산자 세트를 포함할 수 있다. 연산자는 산술 연산 연산자(예컨대, 덧셈(+), 곱셈(*) 등), 비교 연산자(예컨대, 미만(<), 동등(==), 이상(>=) 등), 조건문(예컨대, if-then(?, :)), 또는 논리 연산자(예컨대, AND(&&), OR(||), NOT(!), XOR(
Figure pct00001
) 등)를 포함할 수 있다. 일부 실시형태에 있어서, 주된 함수(진입점(point of entry))는 미리 정의된 이름 및 포맷을 갖는다.
산술 연산 회로는 변수 세트에 대한 방향성 비순환 그래프(DAG)일 수 있다. 진입 차수(indegree)가 0(zero)인 DAG의 모든 노드는 변수(예컨대, xi)를 나타내는 입력 게이트일 수 있고, DAG의 다른 모든 노드는 합 게이트(+) 또는 곱 게이트(×)일 수 있다. 모든 게이트(노드)는 출력 차수(outdegree)가 1(one)일 수 있으므로, 기본 그래프는 방향성 트리일 수 있다. 산술 연산 회로는 2가지의 복잡성의 척도: 즉, 크기 및 깊이를 가질 수 있다. 일부 실시예에 있어서, 산술 연산 회로의 "크기(size)"는 산술 연산 회로 내의 게이트의 수에 기초할 수 있다. 일부 실시예에 있어서, 산술 연산 회로의 "깊이(depth)"는 산술 연산 회로 내의 최장 방향성 경로의 길이에 기초할 수 있다.
산술 연산 회로는 생성된 후에 축소될 수 있다.
본 발명에 따른 컴퓨터-구현 방법은 (실행 가능한) 산술 연산 회로를 생성하기 위해 소스 코드의 일부를 처리하는 단계를 포함할 수 있다. 소스 코드는 고급 프로그래밍 언어로 작성될 수 있으며; 산술 연산 회로는 소스 코드로 표현되는 일부 기능 또는 계산을 나타내도록 구성되는 하나 이상의 산술 연산 게이트를 포함할 수 있다.
이는, HLL 소스 코드를 산술 연산 회로로 변환하지 않는, 종래기술에 알려져 있는 컴파일러 및 인터프리터와는 대조적이다.
산술 연산 회로는 프로세서에서 실행될 수 있다. 회로는 블록체인 트랜잭션에서 제공될 수 있다.
이는 계산 또는 논리 회로의 검증을 교시하거나 및/또는 (영 지식) 증명의 출력을 초래하는 종래기술의 개시 내용과 대조된다. 예를 들어, 피노키오(Pinocchio) 시스템이 일반적인 계산을 검증하기 위한 영-지식 증명(zero-knowledge proof)을 생성한다 ― "Communications of the ACM"; Vol. 59, No 2; 2016 Parno B 등; "Pinocchio: Nearly Practical Verifiable Computations"; 103-112 (Parno). 따라서, 피노키오와 같은 종래기술의 검증 시스템이 검증을 위해 본 발명과 함께 사용될 수 있고, 본 발명은 종래기술을 넘어 확장되는 기능 및 결과를 제공한다.
따라서, 본 발명은 계산을 나타내거나 및/또는 제공하는 기계 실행 가능 출력을 제공한다. 이어서, 이를 검증할 수 있다. 이는, 예를 들어, 계산을 수행하도록 구성된 (별도의) 프로그램을 유효성 검증하기 위해 검증 스크립트를 컴파일하여, 두 부분으로 구성된 프로세스를 포함하게 되는 피노키오 시스템과는 대조적이다. 대신에, 본 발명은 한 부분으로 구성된 접근법을 사용한다, 즉 고급 계산 자체를 산술 연산 회로로 컴파일한다. 따라서, 본 발명은 이러한 종래기술과는 매우 상이한 접근법을 사용하여 상이한 기술적인 문제를 해결한다.
바람직하게는, 소스 코드가 스마트 계약이다. 소스 코드는 전술한 바와 같이 사전-처리될 수 있다.
바람직하게는, 처리 단계는 소스 코드에서 제공되는 하나 이상의 상수를 평가하는 하위 단계를 포함한다. 이는 불린(Boolean) 연산자 및/또는 산술 연산 연산자를 포함하는 하나 이상의 식을 제공할 수 있다.
방법은 산술 연산 회로를 사용하여 하드웨어 및/또는 소프트웨어 회로를 제공하는 단계를 더 포함할 수 있다. 산술 연산 회로는 산술 연산 게이트에 연결되는 n-비트 와이어를 포함할 수 있다. 산술 연산 회로는 아키텍처 독립적 회로이다. 즉, 특정 하드웨어 또는 소프트웨어 아키텍처 또는 플랫폼과 함께 연산 또는 사용하도록 구성되지 않는다. 가상 기계(Virtual Machine)를 사용할 필요가 없다. 이는 아키텍처 특정이거나 VM의 사용을 요구하는 종래기술의 컴파일러 및 인터프리터와는 대조적이다.
방법은 소스 코드를 사전-처리하여 하나 이상의 상수를 결정하는 단계를 더 포함할 수 있다. 사전-처리하는 단계는 다음과 같은 단계들 중 하나 이상을 포함할 수 있다:
코멘트를 제거하는 단계;
헤더 파일로부터 소스 파일로 헤더 선언을 임포트(import)하는 단계;
다수의 소스 파일을 병합하는 단계;
지시문(directive) 및 매크로(macro)를 해결 또는 평가하는 단계.
방법은 소스 코드에서 선언되는 모든 글로벌 변수를 검출하는 단계를 더 포함할 수 있고, 글로벌 변수는 실행을 위한 함수, 구조 또는 클래스, 상수 및/또는 진입점과 관련된다.
방법은 심볼들(식별자들)의 테이블을 생성하여 소스 코드에서 제공되는 각각의 심볼(즉, 식별자)을 소스 코드에서 제공되는 선언 정보와 연계시키는 단계를 더 포함할 수 있다. 테이블에서의 심볼들은 글로벌 심볼 및/또는 로컬 심볼일 수 있다.
방법은 하나 이상의 출력 변수를 하나 이상의 입력 변수에 적용되는 논리 연산 및/또는 산술 연산의 조합으로서 표현하는 산술 및/또는 논리 식을 초래하는 소스 코드의 라인별 평가(line-by-line evaluation)를 수행하는 단계를 더 포함할 수 있다.
이는 타입의 디코딩; 식의 디코딩; 식의 평가; 및/또는 상기 기능에 의해 요구되는 데이터 구조에 대한 메모리의 할당 단계를 더 포함할 수 있다.
방법은 식의 산술 및/또는 논리 연산을 산술 연산 게이트에 맵핑하는 단계를 더 포함할 수 있다. 맵핑 단계는 와이어 확장을 수행하거나; 및/또는 와이어 압축을 수행하는 하위 단계를 포함할 수 있다.
방법은 산술 연산 회로를 사용하여, 회로의 설명을 제공하는 다항식 세트를 포함하는 이차 프로그램을 생성하는 단계를 더 포함할 수 있다. 이 방법은 하나 이상의 입력을 사용해서 이차 프로그램을 실행하기 위해 이차 프로그램을 엔티티에 제공하는 단계를 더 포함할 수 있다.
또한, 본 발명은 전술한 방법 단계들 중 어느 하나를 구현 또는 실행하도록 구성되는 시스템을 제공할 수 있다. 시스템은 소스 코드의 처리를 수행하도록 구성되는 번역 또는 변환 컴포넌트(즉, 인터프리터/컴파일러)를 포함할 수 있다. (영 지식) 증명의 생성을 위한 컴파일러들이 본 기술분야에 공지(예컨대, 전술한 바와 같은 "Pinocchio: Nearly Practical Verifiable Computations"(Parno) 참조)되어 있지만, 이들은 본 발명에 따라 산술 연산 회로에 컴파일되지 않는다. 본 발명은 해답의 증명 또는 검증이 아닌, 해답을 생성하는 것이다.
컴퓨터-구현 시스템은:
프로세서; 및
프로세서에 의한 실행의 결과로서, 시스템으로 하여금 본 명세서에서 설명 또는 청구된 바와 같은 발명/방법의 하나 이상의 실시형태 중 컴퓨터-구현 방법의 임의의 실시형태를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함한다. 명령어는 소스 코드의 처리를 수행하도록 구성되는 번역 또는 변환 컴포넌트(즉, 인터프리터/컴파일러)를 제공하기 위한 명령어를 포함할 수 있다.
비일시적인 컴퓨터-판독 가능 저장 매체는, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 본 명세서에서 설명 또는 청구된 바와 같은 발명/방법의 하나 이상의 실시형태를 적어도 수행하게 하는 실행 가능 명령어를 저장한다.
본 발명의 이들 및 다른 양태들은 본 명세서에서 설명되는 실시형태로부터 분명해지며 이를 참조하여 설명될 것이다. 이제, 본 발명의 실시형태가 첨부 도면을 참조하여 단지 예시로서 설명될 것이다:
도 1은 본 발명의 예시적인 용도 및 실시형태에 수반되는 검증 가능한 계산 및 행위 주체들의 프로토콜을 예시한다. 이들 행위 주체는: 클라이언트(Client), 작업자(Worker)("증명자(prover)"라고도 함) 및 검증자(Verifier)이다.
도 2는 본 발명의 실시형태에 따른 DSL 계약으로부터 이차 산술 연산 프로그램(Quadratic Arithmetic Programs)(QAPs)으로의 번역 프로세스를 도시한다.
도 3은 본 발명의 실시형태에 따른 산술 연산 회로의 실시예를 도시한다.
도 4는 본 발명의 실시형태에 따른 회로 표현을 포함하는 패킷(헤더 + 본문)의 고수준 설명을 도시한다.
도 5는 후술하는 실시예에 따라, 스테이트먼트(문) "Check if variable <a> is even(변수 <a>가 짝수인지 확인한다)"을 나타내는 4-비트 와이어 익스팬더(4-bit wire expander)의 구현예를 도시한다.
도 6은, 구축 블록이 조건문을 구현하는, 본 발명의 예시적인 구현예에 따른 구축 블록을 도시한다.
도 7은 본 발명의 실시형태에 따른 상수 생성기 모듈이 산술 연산 회로에 의해 사용되는 상수의 생성을 어떻게 담당할 수 있는지를 예시한다. 예시된 실시예에서는, 3개의 상수(C1, C2 및 C3)에 더하여 디폴트 일(1) 및 영(0) 값이 생성된다.
도 8은 다양한 실시형태가 구현될 수 있는 컴퓨팅 환경을 예시하는 개략도이다.
개요(Overview)
이제, 본 발명이 일 실시형태에 따른 작업 실시에 어떻게 적용될 수 있는지에 대한 예시를 제공한다. 이 실시예에 있어서는, 고급 언어 계약(예컨대, C/C++ 언어)을 산술 연산 게이트를 포함하는 회로로 변환하도록 구성되는 인터프리터의 가능한 구현예를 설명한다. 그러나, 본 발명은 다른 HLL 언어들을 번역하도록 구성될 수 있다. 이러한 변환을 용이하게 하기 위해 특정 구조 또는 구축 블록이 사용될 수 있다. 하나 이상의 실시형태에 있어서, 이 표현은 분산 검증 가능한 계산을 제공할 수 있는 포괄적인 파이프라인의 구성을 위한 제1 단계로 볼 수 있다.
이 실시예에서 제시되는 구축 블록들은 본 발명의 실시형태에 의해 취급되는 가능한 모든 고급 언어 구성들의 완전한 목록을 의도하는 것은 아니다. 또한, 제시된 실시예들의 대안적인 구현예들이 제공될 수 있다. 이들은 당업자의 범주에 속한다.
이제, 본 발명의 예시적인 실시형태를 제공한다. 그러나, 이는 본 발명이 사용될 수 있는 용례의 실시예라는 점에 유의하는 것이 중요하다. 당업자라면, 본 발명이 다른 상황 및 용례에서 유리하게 사용될 수 있음을 이해할 것이다. 본 발명은 스마트 계약 또는 금융 상품과 관련하여 사용되는 것으로 제한되지 않는다.
발명의 예시적인 실시형태 및 예시적인 사용 사례(Illustrative Embodiment of the Invention & Example Use case)
실시예로서, 사용자들이 도메인 특정 언어(Domain Specific Language)(DSL)를 사용해서 금융 상품에 대한 계약을 생성할 수 있게 하는 프로토콜을 고려한다. 계약이 생성되면, 그 실행이 신뢰할 수 없는 당사자들("작업자들" 또는 "증명자들"이라고 함)에게 외부 위탁될 수 있지만, 그 정확성은 공개적으로 검증될 수 있다. 프로토콜은 다음을 보장하는 암호학적 프리미티브를 이용한다:
· 완전성(Completeness), 즉 정직한 검증자는 프로토콜이 정확하게 준수되면 출력의 유효성을 확신할 것이다;
· 건실성(Soundness), 즉 부정행위를 하는 증명자는 출력의 진본성에 관하여 정직한 검증자를 확신시킬 수 없다;
· 영-지식성(Zero-knowledge), 즉 부정행위를 하는 검증자는 출력의 유효성 외에는 아무것도 학습할 수 없다.
프로토콜의 주된 이점은 다음과 같다:
· 참여자들간의 통신이 요청되지 않기 때문에, 중간자 공격(man-in-the-middle attack)이 방지된다.
· 블록체인 기술의 사용으로 인해, 악의적인 노드가 데이터를 변조하기 어렵게 만든다.
· 신뢰할 수 있는 하드웨어 장치와 같은 신뢰할 수 있는 제3자가 회피된다.
· 계약 유효성 검증은 코드 재실행을 의미하는 것이 아니다. 계산은 네트워크 내의 모든 노드에 의해 복제되지 않는다. 대신에, 정직한 실행의 증명이 공공 블록체인에 저장되고 유효성 검증 목적으로만 사용된다.
이러한 시스템은, 금융 용례 또는 용도로 제한되는 것이 아니라, 다양한 타입의 태스크 및 제품에 대응하는 다양한 타입의 스마트 계약을 취급할 수 있을 것이다. 그 탈-중앙집중 및 분산 특성으로 인해, (비트코인) 블록체인은 둘 이상의 당사자간에 합의를 보기에 적합한 환경을 제공한다.
이러한 시스템은 탈-중앙집중형 암호화폐 시스템에서의 프로그래밍 능력을 제공 및 용이하게 할 필요가 있다. 그러나, 본 기술분야에서는 스마트 계약 프로그래밍이 에러가 발생하기 쉬운 프로세스라고 인식되고 있다. Delmolino, K. 등의 'Step by Step Towards Creating a Safe Smart Contract: Lessons and Insights from a Cryptocurrency Lab'(2015), 및 Juels, A. 등의 'The Ring of Gyges: Using Smart Contracts for Crime'(2013)을 참조한다.
따라서, 프로그래머가 스마트 계약을 보다 쉽게 작성 및 판독할 수 있게 하는 DSL을 사용할 수 있다는 점이 유리하고, 그에 따라 프로그래밍 프로세스 동안 에러가 감소되고, 시간, 노력, 비용 및 리소스가 절감된다. 이상적으로, 비-전문가 프로그래머가 어떠한 암호화도 구현할 필요 없이 계약을 작성할 수 있게 된다. 대신에, 컴파일러/인터프리터가 사용자들과 블록체인 사이의 암호학적 프로토콜에 소스 코드를 자동으로 컴파일하게 된다. 이는 본 발명에 의해 해결되는 기술적인 문제들 중 하나이다. 이러한 장점은 증명의 검증 및 생성을 위한 종래의 기술에 의해서는 제공되지 않는다.
이 프레임워크는 최첨단의 암호학적으로 검증 가능한 계산(Gennaro, R. 등의 'Quadratic Span Programs and Succint NIZKs without PCPs'(2013) 참조)을 이용하고, 정확한 함수 평가를 보장한다: 즉, 민감한 정보를 취득한 적대자가 검증 가능한 계산을 이용하더라도 결과를 조작할 수 없게 된다. 이 모델은 블록체인 기술을 이용하여 정확성 증명(proof-of-correctness)을 저장하게 하고 "CBC(correct-by-construction)" 암호화 해법을 스마트 계약과 결합한다.
이 실시예에 있어서는, 고급 언어 계약(예컨대, C/C++ 언어)을 산술 연산 게이트를 포함하는 회로로 변환할 수 있는 번역 컴포넌트의 구현에 중점을 둔다. 결과적인 회로는 (검증 목적의 증명과는 대조적으로) HLL 소스 코드의 기계 실행 가능한 표현이다. 이러한 변환을 용이하게 하기 위해 특정 구조 또는 구축 블록이 사용된다. 실시예에 있어서, 본 발명은 분산 검증 가능한 계산 시스템을 구현하도록 구성된 파이프라인의 구성에서 제1 단계를 제공하는 데 사용될 수 있다. 그러나, 본 발명은 이러한 사용 사례로 제한되지 않으며 보다 넓은 범위의 용례 및 상황에서 유효하게 사용될 수 있는 것이라는 점에 다시 한번 주목한다.
예시적인 구현예를 설명하기 위해, 검증 가능한 계산을 위한 프레임워크의 개요를 제공하고, 이어서 본 발명에 따른 스마트 계약의 회로 표현을 소개한다.
예시적인 용도: 검증 가능한 계산: 프레임워크(Illustrative use: Verifiable Computation: framework)
문제 스테이트먼트(Problem statement). 클라이언트는 계산(P)의 사양 및 입력(x)을 신뢰할 수 없는 증명자(작업자)에게 송신한다. 작업자는 출력(y)을 계산해서 클라이언트에게 반환한다. y = P(x)이면, 정확한 증명자는 정확성의 인증을 생성하고 y의 정확성을 (클라이언트 뿐만이 아니라) 누구에게나 확신시킬 수 있어야 한다. 그렇지 않으면, 검증자가 높은 확률로 y를 거부해야 한다.
프로토콜은 검증자가 P(x)를 로컬에서 실행하는 것보다 적은 비용이 들여야 하거나, 또는 프로토콜은 검증자가 자체적으로 실행할 수 없는 계산(P)을 취급해야 한다. 또한, 작업자의 거동의 정확성에 관한 가정은 필요하지 않다.
데이터 액세스(Data Access). 시스템에 존재하는 2개의 별개의 탈-중앙집중형 데이터베이스, 즉 (i) DHT ― 오프-체인 데이터가 DHT에 저장되고, 데이터는 노드들 사이에서 충분히 무작위화되고 복제되어 높은 가용성을 보장함 ― 및 (ii) 공공 원장(Public ledger) ― 정확한 실행의 증명이 블록체인에 저장되고 감사를 받을 수 있음 ― 이 있다.
프로토콜(Protocol). 프로토콜에 필요한 단계들은 도 1에 묘사된다. 계산(P)은 회로(C)에 의해 표현된다. 클라이언트는 입력(x)을 공급하고, 작업자는 입력(x)에 대하여 회로(C)를 실행하고 출력이 y라고 주장한다. 증명자는 {C, x, y}에 대한 유효한 트랜스크립트를 취득할 것으로 예상된다. {C, x, y}에 대한 유효한 트랜스크립트는 다음과 같이 회로 와이어에 값을 할당하는 것이다:
· 입력 와이어에 할당되는 값은 x이고;
· 중간 값은 C 내의 각각의 게이트의 정확한 연산에 대응하고;
· 출력 와이어에 할당되는 값은 y이다.
주장된 출력이 부정확하면, 즉 y≠P(x)이면, {C, x, y}에 대한 유효한 트랜스크립트는 존재하지 않는다.
설정 단계는 계약서를 정확한 의미를 갖는 형식 언어로 작성하는 것을 수반한다. 본 발명에 따르면, 인터프리터는 소스 코드를 입력으로서 취하고, 필드(F)로부터 값들을 운반하여 덧셈 및 곱셈 게이트에 연결하는 와이어로 구성된 산술 연산 회로(C)를 생성한다. 일부 실시형태에 있어서, 영국 특허 출원 제1718505.9호에서 설명되는 바와 같은 산술 연산 회로 최적화 기술은 스마트 계약의 결과를 결정하는 동안 필요한 필수 리소스를 절감하기 위해 이용될 수 있다.
회로(C)로부터, 시스템은 이차 프로그램(Q)을 생성하고, 즉 Q는 원래의 회로(C)의 완전한 설명을 제공하는 다항식 세트를 포함한다. 이어서, 모든 증명자 및 검증자에 의해 사용될 공개 파라미터가 생성된다.
공개 평가 키(EK) 및 공개 검증 키(VK)는 클라이언트에 의해 선택되는 비밀 값을 사용하여 도출된다. 작업자는 이들 공개 정보를 사용하여 특정 입력(x)에 대한 계산을 평가한다. 출력(y), 내부 회로 와이어들의 값들 및 EK는 정확성 증명(π)을 생성하는 데 사용된다. 증명(π)은 블록체인에 저장될 수 있으며, 증명자에게 이들 엔티티 각각과 개별적으로 상호작용하도록 요구할 필요 없이 다수의 당사자에 의해 검증될 수 있다.
모든 비트코인 노드는 공개 검증 키(VK) 및 증명(π)을 사용하여 지불 트랜잭션을 유효성 검증할 수 있고, 그에 따라 계약이 유효성 검증된다.
스마트 계약 및 회로 표현(Smart Contracts and Circuit Representation)
스마트 계약을 구현하기 위해, 예컨대, AML(Actulus Modeling Language), DAML(Digital Asset Modeling Language), FpML(Financial Products Markup Language)과 같은, 도메인-특정 언어(DSL)가 필요하지만, 예시의 간략화를 위해, 본 명세서에서는 고급 언어(High Level Language)(HLL), 즉 C와 같이 보다 넓은 범위의 타입, 연산자 및 구성을 제공할 수 있는 보다 일반적인 언어의 사용을 설명한다. 그러나, 본 발명은 상이한 DSL 언어들을 전용 툴을 사용하여 C(또는 다른 HLL)로 변환하도록 구성될 수 있다.
본 명세서에서 사용되는 실시예에 있어서, 인터프리터는 C로 작성되는 소스 코드를 처리한다. 본 발명은 다른 고급 언어("범용 언어(general-purpose language)"(GPL)라고 할 수도 있음)로 작업하도록 구성될 수 있다. 범용 프로그래밍 언어는 Ada, ALGOL, Assembly language, 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 프리컴파일러는 필요한 모든 리소스를 이용할 수 있는지에 대한 확인을 담당한다. 프리프로세서 지시문들도 평가된다.
· 상수 식들이 평가되고 모든 심볼들이 등록된다. 결과는, 덧셈(+), 곱셈(*), 비교(<), 동등(==), 조건문(?, :) 및 논리 연산자(and, or, not, xor)와 같은 C-형 연산자들의 식 세트이다. 주된 함수가 미리 정의된 이름 및 포맷을 갖게 할 필요가 있다. 산술 연산 회로(도 3 참조)는 기본 산술 연산 게이트, 예컨대 덧셈 및 곱셈에 연결되는 n-비트 와이어로 심볼들을 표현함으로써 구축된다.
· 이차 산술 연산 프로그램(Quadratic Arithmetic Program)(QAP)의 다항식은 Gennaro, R. 등의 'Quadratic Span Programs and Succinct NIZKs Without PCPs'(2013)에서 소개되는 바와 같은 산술 연산 회로의 루트에서의 그 평가에 관하여 정의된다.
도 3은 산술 연산 회로의 실시예를 도시한다. 각각의 와이어는 필드(F)에서 비롯되며, 모든 연산이 필드(F)에서 수행된다. 이 회로는 y = x1 + x2·x3·(x3 + x4)를 계산한다. 회로의 최종 출력이 합이므로, 추가적인 곱셈 게이트(상수 1로 곱하기)가 필요해진다.
C-언어 인터프리터(C-Language Interpreter)
본 발명의 예시적인 일 실시형태에 따라, 이제, 프리프로세서 지시문, 조건문, 산술 연산 및 비트단위 불린 연산자, 글로벌 함수를 포함하는 C 프로그래밍 언어에 대하여 정의되는 명령어의 서브세트를 인식할 수 있는 인터프리터를 설명한다. 당업자에 의해 쉽게 이해되는 바와 같이, 어레이 및 구성에 대한 지원이 또한 가외의 논리 없이 제공될 수 있다.
인터프리터는 곱셈, 덧셈 및 하기의 "산술 연산 프리미티브의 생성(Generation of arithmetic primitives)"이라는 제목의 단락에서 제시되는 특정 구축 블록을 사용하여 식을 산술 연산 게이트 언어로 강화한다. 각각의 와이어는 지정된 비트-폭을 가질 것이다. 1-비트 폭의 경우, 와이어는 이진 변수를 나타낸다.
블록체인에서 구현하기 위한 C-형 프로그램의 산술 연산 강화(Arithmetic enhancement of C-Like Programs for Implementation on a Blockchain)
이제, C 소스 코드로 표현된 기능을 나타내는 산술 연산 회로의 구성에 대한 프로세스를 상세하게 설명한다. 프로세스의 각각의 단계에서, 예기치 않은 거동(예컨대, 심볼 누락, 잘못된 신택스 또는 미지의 연산자)은 적절한 코드 에러로 프로그램 실행의 즉각적인 종료를 초래하게 된다.
사전-처리(Pre-Processing)
도 2에 도시된 바와 같이, 스마트 계약은 다수의 파일 및 라이브러리로 구성될 수 있다. 프로토콜의 제1 단계는 계약을 구현하는 데 필요한 전체 명령어 세트를 포함하는 단일 소스 파일을 생성하는 것이다. 개별적인 하위 단계들은 다음과 같이 열거될 수 있다:
· 모든 코멘트가 제거된다.
· 헤더 선언은 헤더 파일로부터 소스 파일로 임포트된다.
· 모든 소스 파일들이 병합된다.
· 프리프로세서 C 지시문 및 매크로가 해결되거나 또는 평가된다. 이들은 #define 지시문 및 조건 #ifdef 지시문을 포함한다.
이 단계의 종료시에, 모든 프리프로세서 상수의 실제 값을 알아야 한다. 소스 코드에서 사용되는 변수의 값은 계약의 입력의 값에만 의존해야 한다. 또한, 소스 코드에서 진입점의 선언은 다음과 같은 신택스를 가져야 한다:
Figure pct00002
타입 inputType 및 outputType은 사용자에 의해 정의된다. 다음과 같은 소스 코드 박스는 2개의 부호 없는 정수(unsigned integer) 입력 사이의 단일 합 연산을 포함하는 스마트 계약의 간단한 실시예를 도시한다.
Figure pct00003
출력은 특정 계약에 따라 상이한 타입의 변수들로 나타내질 수 있다. 상기의 경우, 단일 출력은 단순히 산술 연산의 결과에 연결된다.
정수 및 실수(Integer and Real Numbers)
예시적인 실시형태에 있어서, 간략화를 위해, (부호 붙임 또는 부호 없는) 정수들 사이의 연산만이 이용 가능하다고 가정한다. 이 가정이 제거되면, 회로 구축 블록("산술 연산 프리미티브의 생성(Generation of the arithmetic primitives)" 단락 참조)은 확장되어야 한다. 따라서, 실수들 사이의 연산은 정수들 사이의 연산으로 변환되어야 한다. 다음과 같은 계약 부분을 고려해보면:
"Check if the average salary of the employees is greater than $32.5K.(직원들의 평균 급여가 $32.5K를 초과하는지 확인한다)"
이 스테이트먼트는 평균 값을 계산하기 위해 (N명의 직원에 의한) 나눗셈을 필요로 한다. 그러나, 스테이트먼트는 다음과 같은 정수들 사이의 식으로 변환될 수 있다:
Figure pct00004
여기서, si는 i-번째 직원의 급여를 나타낸다.
글로벌 심볼 테이블의 생성(Creation of the Global Table of Symbols)
컴퓨터 과학에서, 심볼 테이블(Table of Symbols)은 소스 코드 내의 각각의 식별자(심볼)를 그 선언과 관련되는 정보와 연계시키기 위해 컴파일러/인터프리터에 의해 사용되는 데이터 구조이다. 이 제2 단계에서, 인터프리터는 소스 파일에서 선언된 모든 글로벌 심볼을 검출한다:
· 함수
· 구조(또는 클래스)
주: 클래스(C++과 같은 OOP 언어)를 사용하려면, 공개, 보호 및 개인 섹션의 범위를 확인하기 위한 추가적인 논리가 필요하다.
· 상수
(글로벌 변수도 허용되지만 권장되지는 않는다. 계약(...) 함수 범위는 독립적인 블랙 박스로서 취급되어야 한다. 그 거동은 외부 변수에 의존하지 않아야 한다.)
이들 심볼 각각에 대하여, 그 식별자의 내부 선언을 나타내는 로컬 심볼들의 계층구조가 구축된다. 이 단계의 종료시에, 테이블 내의 각각의 글로벌 심볼(이름, 타입 및 값)은 추가적인 처리를 위해 직접 지정될 수 있다.
계약의 진입점의 검출(Detection of the entry point of the contract)
글로벌 심볼들 중 하나는 계약의 진입점이어야 한다("사전-설정(pre-processing)" 단락의 계약 함수). 예상 신택스에 대하여 그 파라미터들의 이름, 수 및 타입을 확인한다. 추가적인 논리는 모든 입력 구조가 계약 내에서 사용되고 모든 출력 구조가 계약의 일부 부분에 연결되는지를 확인하는 것으로 구성될 수 있다.
라인별 평가(Line-by-line Evaluation)
각각의 코드 라인이 독립적으로 분석된다. 식별자들의 내부 선언을 나타내는 로컬 심볼들은 글로벌 심볼 테이블의 계층구조에 포함된다. 보다 구체적으로, 이 단계는 다음과 같은 태스크들을 담당한다:
· 타입의 디코딩(Decoding of types), 구조 및 어레이의 선언, 기본 타입(불린, 정수 등) 및 포인터를 포함하는 타입의 디코딩.
· 식의 디코딩(Decoding of expressions), 예컨대 단항 또는 이진 연산, 상수, 식별자, 데이터 구조 및 함수 호출의 디코딩.
· 식의 평가(Evaluation of expressions), 즉 입력 값에 의존하지 않는 (수치) 식의 평가.
· 메모리 할당(Memory allocation), 즉 계약 기능에 필요한 데이터 구조에 대한 임시 스토리지 할당.
이 단계는 공간(즉, 사용된 메모리) 및 시간(즉, 연산자 우선순위) 관점에서 산술 연산 식의 모든 스테이트먼트들을 연결한다. 따라서, 각각의 출력 변수는 입력 변수들에 적용되는 논리 및 산술 연산들의 조합으로 표현된다.
명시적 산술 연산 식의 생성(Creation of the explicit arithmetic expressions)
"라인별 평가(line-by-line evaluation)" 단락에서 정의된 데이터 구조를 사용하여, 일반적인 산술 연산/논리 식(e)은 다음과 같은 신택스에 따라 명시적인 형태로 나타내기 위해 축소된다:
Figure pct00005
이 신택스에 따르면, 임의의 연산자(OPi+1)가 연산자(OPi) 뒤에 e에 적용된다.
예를 들면, 다음과 같은 코드가 주어진다:
Figure pct00006
명시적인 식(e)은 다음과 같이 표현될 수 있다:
Figure pct00007
"산술 연산 프리미티브의 생성(Generation of the arithmetic Primitives)" 단락에서 설명되는 바와 같이, 식(e)은 계약 기능을 나타내는 데 필요한 산술 연산 프리미티브를 생성하는 데 사용된다.
산술 연산 프리미티브의 생성(Generation of the arithmetic primitives)
이 단계에서, 인터프리터는 식(e)을 생성하는 데 사용되는 연산과 회로에서 이들 기능을 구현하는 데 필요한 구조 사이에 일대일 맵핑을 할 준비가 된다.
회로를 생성하는 데 필요한 중요한 파라미터는 비트-폭(nbit), 즉 부호 붙임(또는 부호 없는) 정수를 나타내는 데 사용되는 비트의 수이다. 상이한 컴퓨터 아키텍처들은 상이한 nbit 값들에 의해 특정된다. 클라이언트가 작업자의 선호하는 비트-폭 값을 알지 못하면, 도 4에 도시된 바와 같이, 그 값은 추가 정보와 함께 회로의 헤더에서 임의로 선택 및 지정되게 된다. (특정 대상 아키텍처에 대하여 컴파일이 수행되는 것처럼, 비트-폭 값을 알면 회로를 보다 효율적으로 구현 및 실행할 수 있다.)
버전(version) 필드는 회로에서 특정 구축 블록을 생성하는 데 사용되는 특정 알고리즘에 관한 중요한 정보를 제공한다. 대안적인 구현예에 있어서, 부호 붙임 정수의 2의 보수 이진 표현을 선택했다.
덧셈 및 곱셈 연산(Addition and multiplication operations)
덧셈 및 곱셈 연산은 회로에서 덧셈 및 곱셈 게이트에 일대일로 맵핑된다. 2개의 n-비트 와이어 입력이 주어지면, 덧셈 와이어 출력은 n+1 비트를 필요로 하고 곱셈 와이어 출력은 2n 비트를 필요로 한다. 예를 들면, 2개의 nbit 와이어(a 및 b) 사이의 곱셈은 다음과 같이 표현될 수 있다:
Figure pct00008
(회로에서 모든 산술 연산 또는 불린 와이어(x)는 값(idx)에 의해 일의적으로 식별될 수 있다. 이진 변수에 대해서는, 값 영부터 계수를 시작한다.) 결과(c)는 2nbit 비트로 자동으로 표현되게 된다.
불린 연산(Boolean operations)
전체 불린 게이트 세트는 산술 연산 게이트를 사용해서 계산될 수 있다. 2개의 불린 값(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-비트 정수 값을 구축한다("와이어 압축(Wire Compression)" 단락 참조).
와이어 확장(Wire Expansion)
와이어 확장은 일반적으로 산술 연산 와이어(a)를 na-비트 출력 와이어로 번역하는 데 사용되고, na는 a로 표현될 수 있는 최대 값의 밑이 2인 로그이다. 예를 들어, 다음과 같은 계약 부분을 고려해보면:
"Check if variable <a> is even(변수 <a>가 짝수인지 확인한다)"
na = 4이면, 이 스테이트먼트는 도 5에 도시된 바와 같은 와이어 확장을 사용해서 구현된다. a0은 a의 최하위 비트를 나타내고, 스테이트먼트의 출력은 a0 자체와 같다. 이 회로 구축 블록은 다음과 같이 표현될 수 있다:
Figure pct00009
회로를 더 자세히 보면, a의 단 하나의 비트만이 추가적인 처리에 필요해지고, 나머지 1-비트 와이어들은 제거될 수 있다. 인터프리터는 계약의 나머지 부분에서 사용되는 개별적인 1-비트 와이어들만을 생성할 수 있다. 도 5는 스테이트먼트 "Check if variable <a> is even(변수 <a>가 짝수인지 확인한다)"을 나타내는 4-비트 와이어 익스팬더의 구현예를 도시한다.
인터프리터는 최적화된 와이어 익스팬더에 대하여 특정 신택스를 적용한다.
Figure pct00010
즉, 최하위 1-비트 와이어(즉, 식별자 번호 0)만이 취해지고, 식별자(ida0)가 거기에 할당된다. na가 클수록, 최적화가 더욱 효율적일 수 있다. (이 맥락에서, 최적화를, 저장 공간을 절약하거나 산술 연산 회로를 나타내는 데 사용되는 저수준 지시문을 전송할 가능성으로서 정의한다.)
와이어 압축(Wire Compression)
와이어 압축은 1-비트 와이어(ai)를 다시 na-비트 출력 와이어에 결합하는 데 사용된다:
Figure pct00011
이 구축 블록은 상수에 의한 덧셈 및 곱셈으로 구성되므로, QAP 다항식의 크기는 영향을 받지 않는다(Genaro R. 등의 'Quadratic Span Programs and Succinct NIZKs Without PCPs'(2013) 참조). na = 256이고 [ida0, ida255] 범위에서의 식별자들이 연속적이라고 가정하면, 이 구축 블록을 나타내는 최적화된 방법은 다음과 같다:
Figure pct00012
결과적인 와이어(a)는 ida에 의해 식별될 것이다.
부정 연산(Negate Operation)
부정 연산은 2개의 변수를 비교하는 데 필요하고, 그 이유는 그 차이를 값 0과 비교할 수 있기 때문이다. nbit-비트 와이어를 부정하는 것은 상수 -1에 의한 곱셈으로 구현될 수 있다. 이 상수는 다음과 같이 표현되어야 한다:
Figure pct00013
영과 같음 연산(Equal To Zero Operation)
nbit-비트 와이어(a)에 대한 이 구축 블록은 다음과 같이 구현될 수 있다:
· nbit 비트에 대한 와이어 확장(a0, ..., anbit-1);
· 각각의 1-비트 와이어 부정(ai → bi);
· 결과적인 bi 와이어들의 곱셈:
Figure pct00014
따라서, a = 0인 경우에만, 1-비트 변수 c = 1이다.
영과 비교 연산(Compare To Zero Operation)
"보다 큰(greater than)" 연산은 간단한 방정식 규칙을 사용하여 "보다 작은(lower than)" 연산으로 변환될 수 있다. 2의 보수 표현에 있어서, 이 연산들은 2개의 부호 붙임 정수 사이의 차가 양 또는 음(또는 "이하(lower or equal than)" 연산의 경우에는 영과 같음)인지를 확인하는 것에 대응한다. 차의 부호의 판별식 c = a - b는 최상위 비트 x에 의해 이진 표현으로 주어지고: 음수는 x = 1에 의해 특정되는 반면, 양수는 x = 0에 의해 특정된다:
Figure pct00015
비교의 타입(양과 음)에 따라, 이진 값 x가 부정될 필요가 있다.
조건문(Conditional Statement)
고급 언어의 조건문은 다음과 같은 형태로 표현될 수 있다:
Figure pct00016
스테이트먼트(Sc)가 계약의 입력에 의존하기 때문에, 양 브랜치(Sa 및 Sb)가 모두 회로에서 구현되어야 한다. 논리 흐름은 도 6에 묘사된다. 스테이트먼트(Sc)의 (이진) 츨력에 따라, 스테이트먼트(Sa) 또는 스테이트먼트(Sb)가 실행되게 된다. 이진 연산 x + 1은 x를 부정하는 데 사용된다.
상수의 생성(Generation of constants)
상수 값은 회로의 입력 와이어에 의존하지 않는다. mul-by-const-c 형태의 전용 단항 곱셈 게이트를 사용하면, 다음과 같은 추가적인 회로를 제공하여 계약에 필요한 상수 값을 생성한다:
· 상수 0은 입력 와이어에 0을 곱해서 계산된다. (상수는 적어도 하나의 입력을 가져야 한다. 따라서, 식별자 1을 갖는 입력(예컨대, 도 7의 in1)이 상수 0을 생성하는 데 사용될 수 있다.)
· 상수 1은 상수 0에 1을 더해서 계산된다.
· 임의의 추가적인 상수 ci는 상수 1에 대하여 mul-by-const-ci를 사용해서 계산된다.
상수 0 및 1이 항상 회로에 더해지기 때문에, k개의 임의의 상수의 구현은 k+2개의 게이트를 필요로 한다. 이 프로세스는 도 7에 묘사된다. 본 발명의 실시형태에 따라 제공되는 상수 생성기 모듈은 산술 연산 회로에 의해 사용되는 상수의 생성을 담당한다. 실시예에 있어서, 3개의 상수(C1, C2 및 C3)에 더하여 디폴트 일(1) 및 영(0) 값이 생성된다.
상수는 2의 보수 표준에 의해 지정된 기지의 비트-폭을 갖는다.
이제, 도 8을 참조하면, 본 개시물의 적어도 하나의 실시형태를 실시하는 데 사용될 수 있는 컴퓨팅 장치(2600)의 예시적인 간략화된 블록도가 제공된다. 다양한 실시형태들에 있어서, 컴퓨팅 장치(2600)는 상기에 예시 및 설명된 시스템들 중 어느 하나를 구현하는 데 사용될 수 있다. 예를 들어, 컴퓨팅 장치(2600)는 데이터 서버, 웹 서버, 휴대용 컴퓨팅 장치, 개인용 컴퓨터, 또는 임의의 전자 컴퓨팅 장치로서 사용하도록 구성될 수 있다. 도 8에 도시된 바와 같이, 컴퓨팅 장치(2600)는, 메인 메모리(2608) 및 영구 스토리지(2610)를 포함하는 스토리지 서브시스템(2606)과 통신하도록 구성될 수 있는, 하나 이상의 캐시 메모리 레벨 및 메모리 제어기를 갖는 하나 이상의 프로세서(총괄하여 2602로 표시됨)를 포함할 수 있다. 메인 메모리(2608)는 도시된 바와 같이 동적 랜덤-액세스 메모리(DRAM)(2618) 및 리드-온리 메모리(ROM)(2620)를 포함할 수 있다. 스토리지 서브시스템(2606) 및 캐시 메모리(2602)는 본 개시물에서 설명되는 바와 같은 트랜잭션 및 블록과 연계되는 세부사항과 같은 정보의 저장에 사용될 수 있다. 프로세서(들)(2602)는 본 개시물에서 설명되는 바와 같은 임의의 실시형태의 단계 또는 기능을 제공하기 위해 이용될 수 있다.
프로세서(들)(2602)는 또한, 하나 이상의 사용자 인터페이스 입력 장치(2612), 하나 이상의 사용자 인터페이스 출력 장치(2614), 및 네트워크 인터페이스 서브시스템(2616)과 통신할 수 있다.
버스 서브시스템(2604)은 컴퓨팅 장치(2600)의 다양한 컴포넌트들 및 서브시스템들이 의도된 대로 서로 통신할 수 있게 하는 메커니즘을 제공할 수 있다. 버스 서브시스템(2604)이 단일의 버스로서 개략적으로 도시되어 있지만, 버스 서브시스템의 대체 실시형태들은 다수의 버스를 이용할 수 있다.
네트워크 인터페이스 서브시스템(2616)은 다른 컴퓨팅 장치들 및 네트워크들에 대한 인터페이스를 제공할 수 있다. 네트워크 인터페이스 서브시스템(2616)은 컴퓨팅 장치(2600)로부터 다른 시스템들에 데이터를 전송하고 다른 시스템들로부터 데이터를 수신하기 위한 인터페이스로서 기능할 수 있다. 예를 들어, 네트워크 인터페이스 서브시스템(2616)은 데이터 기술자가 데이터 센터와 같은 원격 위치에 있는 장치로 데이터를 전송하고 또한 해당 장치로부터 데이터를 수신할 수 있도록 데이터 기술자가 장치를 네트워크에 연결하게 할 수 있다.
사용자 인터페이스 입력 장치(2612)는 키보드와 같은 하나 이상의 사용자 입력 장치; 통합형 마우스, 트랙볼, 터치패드, 또는 그래픽스 태블릿과 같은 포인팅 장치; 스캐너; 바코드 스캐너; 디스플레이에 포함되는 터치 스크린; 음성 인식 시스템, 마이크로폰과 같은 오디오 입력 장치; 및 그 밖의 유형의 입력 장치들을 포함할 수 있다. 일반적으로, "입력 장치(input device)"라는 용어의 사용은 컴퓨팅 장치(2600)에 정보를 입력하기 위한 가능한 모든 유형의 장치 및 메커니즘을 포함하도록 의도된다.
하나 이상의 사용자 인터페이스 츨력 장치(2614)는 디스플레이 서브시스템, 프린터, 또는 오디오 출력 장치와 같은 비-시각적 디스플레이 등을 포함할 수 있다. 디스플레이 서브시스템은 CRT(cathode ray tube), 또는 LCD(liquid crystal display), LED(light emitting diode) 디스플레이, 또는 프로젝션과 같은 플랫-패널 장치 또는 그 밖의 디스플레이 장치일 수 있다. 일반적으로, "출력 장치(output device)"라는 용어의 사용은 컴퓨팅 장치(2600)로부터 정보를 출력하기 위한 가능한 모든 유형의 장치 및 메커니즘을 포함하도록 의도된다. 하나 이상의 사용자 인터페이스 출력 장치(2614)는, 예를 들어, 사용자 상호작용이 적절할 수 있을 경우, 설명되는 프로세스들 및 그 변형들을 수행하는 애플리케이션들과의 그러한 사용자 상호작용을 용이하게 하기 위해 사용자 인터페이스를 제시하는 데 사용될 수 있다.
스토리지 서브시스템(2606)은 본 개시물의 적어도 하나의 실시형태의 기능을 제공할 수 있는 기본 프로그래밍 및 데이터 구조를 저장하기 위한 컴퓨터 판독 가능 저장 매체를 제공할 수 있다. 하나 이상의 프로세서에 의한 실행시에, 애플리케이션(프로그램, 코드 모듈, 명령어)은 본 개시물의 하나 이상의 실시형태의 기능을 제공할 수 있고, 스토리지 서브시스템(2606)에 저장될 수 있다. 이들 애플리케이션 모듈 또는 명령어는 하나 이상의 프로세서(2602)에 의해 실행될 수 있다. 스토리지 서브시스템(2606)은 본 개시물에 따라 사용되는 데이터를 저장하기 위한 저장소를 부가적으로 제공할 수 있다. 예를 들어, 메인 메모리(2608) 및 캐시 메모리(2602)는 프로그램 및 데이터를 위한 휘발성 스토리지를 제공할 수 있다. 영구 스토리지(2610)는 프로그램 및 데이터에 대한 영구적인 (비-휘발성) 스토리지를 제공할 수 있으며, 플래시 메모리, 하나 이상의 솔리드 스테이트 드라이브, 하나 이상의 자기 하드 디스크 드라이브, 이동식 매체와 연계되는 하나 이상의 플로피 디스크 드라이브, 이동식 매체와 연계되는 하나 이상의 광학 드라이브(예컨대, CD-ROM 또는 DVD 또는 블루레이(Blue-Ray)), 및 그 밖의 유사한 스토리지 매체를 포함할 수 있다. 이러한 프로그램 및 데이터는 본 개시물에서 설명된 바와 같은 하나 이상의 실시형태의 단계들을 수행하기 위한 프로그램 뿐만 아니라, 본 개시물에서 설명된 바와 같은 트랜잭션 및 블록과 연계되는 데이터를 포함할 수 있다.
컴퓨팅 장치(2600)는 휴대용 컴퓨터 장치, 태블릿 컴퓨터, 워크스테이션, 또는 후술되는 임의의 다른 장치를 포함하여, 다양한 유형으로 될 수 있다. 부가적으로, 컴퓨팅 장치(2600)는 하나 이상의 포트(예컨대, USB, 헤드폰 잭, 라이트닝(Lightning) 커넥터 등)를 통해 컴퓨팅 장치(2600)에 연결될 수 있는 다른 장치를 포함할 수 있다. 컴퓨팅 장치(2600)에 연결될 수 있는 장치는 광섬유 커넥터를 수용하도록 구성되는 복수의 포트를 포함할 수 있다. 따라서, 이 장치는 광 신호를, 처리를 위해 장치를 컴퓨팅 장치(2600)에 연결하는 포트를 통해 전송될 수 있는 전기 신호로 변환하도록 구성될 수 있다. 컴퓨터 및 네트워크는 시시각각 변하기 때문에, 도 8에서 묘사되는 컴퓨팅 장치(2600)의 설명은 장치의 바람직한 실시형태를 예시할 목적으로 특정 실시예로서만 의도된다. 도 8에서 묘사되는 시스템보다 더 많거나 적은 컴포넌트를 갖는 많은 다른 구성들이 가능하다.
전술한 실시형태들은 본 발명을 제한하는 것이 아니라 예시하는 것이며, 당업자라면, 첨부된 청구항들에 의해 규정되는 바와 같은 발명의 범위로부터 일탈함이 없이, 다양한 대안적인 실시형태들을 설계할 수 있을 것이라는 점에 유의해야 한다. 청구항들에 있어서, 괄호 안의 임의의 참조 부호는 해당 청구항들을 제한하는 것으로 해석되지 않아야 한다. "포함하는" 및 "포함한다" 등의 단어는 전체적으로 임의의 청구항 또는 명세서에 열거된 요소들 또는 단계들 이외의 것들의 존재를 배제하지 않는다. 본 명세서에 있어서, "포함한다"는 "구비한다 또는 구성된다"를 의미하고, "포함하는"은 "구비하는 또는 구성되는"을 의미한다. 요소의 단수형 참조는 그러한 요소들의 복수형 참조를 배제하지 않으며, 그 반대도 마찬가지이다. 본 발명은 몇 개의 별개의 요소를 포함하는 하드웨어에 의해, 그리고 적절하게 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 몇 개의 수단을 열거하는 장치 청구항에 있어서, 이들 수단 중 몇몇은 하나의 동일한 하드웨어 아이템에 의해 구체화될 수 있다. 단지 특정 조치들이 서로 다른 종속 청구항들에서 인용된다는 사실만으로 이들 조치의 조합이 유리하게 사용될 수 없다는 것을 나타내는 것은 아니다.
본 명세서에서 인용되는 공보, 특허 출원, 및 특허를 포함하는 모든 참고 문헌은 이로써 각각의 참고 문헌이 개별적으로 및 구체적으로 참조로 포함되는 것으로 지시되었고 전부 본 명세서에서 제시되었던 것처럼 동일한 정도로 참조로 포함된다. 이는 영국 특허 출원 번호: GB1719998.5, GB1718505.9, GB1720768.9를 포함한다.

Claims (16)

  1. 컴퓨터-구현 방법으로서,
    소스 코드의 일부를 처리하여 산술 연산 회로를 생성하는 처리 단계를 포함하고,
    상기 소스 코드는 고급 프로그래밍 언어로 작성되고;
    상기 산술 연산 회로는 상기 소스 코드로 표현되는 기능의 일부 또는 전부를 나타내도록 구성되는 하나 이상의 산술 연산 게이트를 포함하는
    방법.
  2. 제1항에 있어서,
    i) 상기 산술 연산 회로는 상기 소스 코드의 기계 실행 가능 버전이고, 결과를 계산하도록 구성되고; 및/또는
    ii) 상기 소스 코드는 스마트 계약인
    방법.
  3. 제1항 또는 제2항에 있어서,
    상기 처리 단계는, 상기 소스 코드에서 제공되는 하나 이상의 상수를 평가하여 불린(Boolean) 연산자 및/또는 산술 연산 연산자를 포함하는 하나 이상의 식을 제공하는 단계를 포함하는
    방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 산술 연산 회로를 사용하여 하드웨어 및/또는 소프트웨어 회로를 제공하는 단계를 더 포함하는
    방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 산술 연산 회로는 산술 연산 게이트에 연결되는 n-비트 와이어를 포함하는
    방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 산술 연산 회로는 아키텍처 독립적 회로인
    방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 방법은 상기 소스 코드를 사전-처리하여 하나 이상의 상수를 결정하는 사전-처리 단계를 더 포함하고, 상기 사전-처리 단계는,
    코멘트를 제거하는 단계;
    헤더 파일로부터 소스 파일로 헤더 선언(header declarations)을 임포트(import)하는 단계;
    다수의 소스 파일을 병합하는 단계;
    지시문(directive) 및 매크로(macro)를 해결(solving) 또는 평가하는 단계 중 하나 이상의 단계를 포함하는
    방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 방법은 상기 소스 코드에서 선언된 모든 글로벌 변수를 검출하는 단계를 더 포함하고, 글로벌 변수는 실행을 위한 함수, 구조 또는 클래스, 상수 및/또는 진입점(entry point)과 관련되는
    방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 방법은 심볼들의 테이블을 생성하여 상기 소스 코드에서 제공되는 각각의 심볼(즉, 식별자)을 상기 소스 코드에서 제공되는 선언 정보와 연계시키는 단계를 더 포함하고, 상기 테이블 내의 심볼들은 글로벌 심볼 및/또는 로컬 심볼인
    방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 방법은 상기 소스 코드의 라인별 평가(line-by-line evaluation)를 수행하는 단계 - 상기 소스 코드의 라인별 평가를 수행한 결과, 하나 이상의 출력 변수를 하나 이상의 입력 변수에 적용되는 논리 연산 및/또는 산술 연산의 조합으로서 표현하는 산술 및/또는 논리 식이 생성됨 - 를 더 포함하는
    방법.
  11. 제10항에 있어서,
    상기 라인별 평가는,
    타입을 디코딩하는 하위 단계;
    식을 디코딩하는 하위 단계;
    식을 평가하는 하위 단계; 및/또는
    상기 기능에 필요한 데이터 구조에 대하여 메모리를 할당하는 하위 단계를 포함하는
    방법.
  12. 제10항 또는 제11항에 있어서,
    상기 식의 산술 및/또는 논리 연산을 산술 연산 게이트에 맵핑하는 단계를 더 포함하는
    방법.
  13. 제12항에 있어서,
    상기 맵핑하는 단계는,
    와이어 확장(wire expansion)을 수행하는 하위 단계; 및/또는
    와이어 압축(wire compression)을 수행하는 하위 단계를 포함하는
    방법.
  14. 제1항 내지 제13항 중 어느 한 항에 있어서,
    상기 산술 연산 회로를 사용하여, 상기 회로의 설명을 제공하는 다항식 세트를 포함하는 이차 프로그램을 생성하는 단계를 더 포함하는
    방법.
  15. 제14항에 있어서,
    하나 이상의 입력을 사용해서 상기 이차 프로그램을 실행하기 위해 상기 이차 프로그램을 엔티티에 제공하는 단계를 더 포함하는
    방법.
  16. 제1항 내지 제15항 중 어느 한 항에 기재된 단계들을 수행하도록 구성되는 컴퓨터-구현 시스템으로서, 바람직하게는 상기 소스 코드의 처리를 수행하도록 구성되는 인터프리터를 포함하는
    컴퓨터-구현 시스템.
KR1020207014108A 2017-11-09 2018-10-29 검증 가능한 계산을 위한 c-형 스마트 계약의 산술 연산 강화 KR20200086282A (ko)

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
KR20200086282A true KR20200086282A (ko) 2020-07-16

Family

ID=64100702

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020207014203A KR20200080265A (ko) 2017-11-09 2018-10-29 블록체인 상에 확인 키를 기록하기 위한 시스템
KR1020207014209A KR20200086284A (ko) 2017-11-09 2018-10-29 최적화된 확인 가능한 계산을 위해 실행 가능한 명령어를 단순화하기 위한 시스템
KR1020207014108A KR20200086282A (ko) 2017-11-09 2018-10-29 검증 가능한 계산을 위한 c-형 스마트 계약의 산술 연산 강화
KR1020207014213A KR20200079503A (ko) 2017-11-09 2018-10-29 확인 키를 변경으로부터 보호하고 정확성 증명의 유효성을 확인하기 위한 시스템
KR1020207014106A KR20200086281A (ko) 2017-11-09 2018-11-01 분산형 컴퓨팅 시스템 및 방법

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020207014203A KR20200080265A (ko) 2017-11-09 2018-10-29 블록체인 상에 확인 키를 기록하기 위한 시스템
KR1020207014209A KR20200086284A (ko) 2017-11-09 2018-10-29 최적화된 확인 가능한 계산을 위해 실행 가능한 명령어를 단순화하기 위한 시스템

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020207014213A KR20200079503A (ko) 2017-11-09 2018-10-29 확인 키를 변경으로부터 보호하고 정확성 증명의 유효성을 확인하기 위한 시스템
KR1020207014106A KR20200086281A (ko) 2017-11-09 2018-11-01 분산형 컴퓨팅 시스템 및 방법

Country Status (9)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220101469A (ko) * 2021-01-11 2022-07-19 충남대학교산학협력단 동적 연산을 통한 검증이 가능한 영지식 증명 시스템 및 증명 방법

Families Citing this family (39)

* 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 (ko) * 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 上海零数众合信息科技有限公司 一种区块链隐私交易方法
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220101469A (ko) * 2021-01-11 2022-07-19 충남대학교산학협력단 동적 연산을 통한 검증이 가능한 영지식 증명 시스템 및 증명 방법

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
CN117640170A (zh) 2024-03-01
WO2019092542A1 (en) 2019-05-16
EP4312403A2 (en) 2024-01-31
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
US20230318804A1 (en) Arithmetic enhancement of c-like smart contracts for verifiable computation
Wahby et al. Efficient RAM and control flow in verifiable outsourced computation
US10699269B1 (en) System and method for smart contract publishing
KR20200021993A (ko) 블록체인 컴파일러
Chin et al. Leo: A programming language for formally verified, zero-knowledge applications
US20230109846A1 (en) Computer-implemented systems and methods for serialisation of arithmetic circuits
Wen et al. Practical Security Analysis of Zero-Knowledge Proof Circuits.
US11513815B1 (en) Defining data storage within smart contracts
Bollig Logic for communicating automata with parameterized topology
KR20210074358A (ko) 공개 키 조합 검증을 포함하는 컴퓨터-구현된 시스템 및 방법
TWI837103B (zh) 電腦實施方法及系統
KR102398543B1 (ko) 영지식 증명 알고리즘이 적용된 검증 가능한 블록체인 가상머신
US11657391B1 (en) System and method for invoking smart contracts
MIKEK et al. SMT Theory Arbitrage: Approximating Unbounded Constraints using Bounded Theories
CN117591087A (zh) 一种针对复杂数据处理需求的高效形式化代码构建方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal