KR20200086284A - 최적화된 확인 가능한 계산을 위해 실행 가능한 명령어를 단순화하기 위한 시스템 - Google Patents

최적화된 확인 가능한 계산을 위해 실행 가능한 명령어를 단순화하기 위한 시스템 Download PDF

Info

Publication number
KR20200086284A
KR20200086284A KR1020207014209A KR20207014209A KR20200086284A KR 20200086284 A KR20200086284 A KR 20200086284A KR 1020207014209 A KR1020207014209 A KR 1020207014209A KR 20207014209 A KR20207014209 A KR 20207014209A KR 20200086284 A KR20200086284 A KR 20200086284A
Authority
KR
South Korea
Prior art keywords
arithmetic operation
operation circuit
computer
logic
implemented method
Prior art date
Application number
KR1020207014209A
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 KR20200086284A publication Critical patent/KR20200086284A/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/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • 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)
  • Data Mining & Analysis (AREA)
  • Power Engineering (AREA)
  • Economics (AREA)
  • Development 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)
  • Mathematical Analysis (AREA)
  • Algebra (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 합의 기반 블록 체인과 같은 분산 원장 기술에 관한 것이다. 스마트 계약서로부터 도출되는 산술 연산 회로를 감소시키기 위한 컴퓨터 구현형 방법이 설명된다. 본 발명은, 예를 들어, 비트 코인 블록 체인일 수 있는 블록 체인 네트워크를 사용하여 구현된다. 제 1 프로그래밍 언어로 인코딩된 조건들의 세트가 획득된다. 상기 조건들의 세트는 제 2 프로그래밍 언어로 인코딩된 프로그래매틱 조건 세트로 변환된다. 상기 프로그래매틱 조건 세트는 사전 컴파일된 프로그램 코드로 사전 컴파일된다. 상기 사전 컴파일된 프로그램 코드는 산술 연산 회로로 변환된다. 상기 산술 연산 회로는 감소된 산술 연산 회로를 형성하기 위해 감소되고, 감소된 산술 연산 회로가 저장된다.

Description

최적화된 확인 가능한 계산을 위해 실행 가능한 명령어를 단순화하기 위한 시스템
본 발명은 일반적으로 블록 체인 기술에 관한 것으로, 보다 구체적으로는 스마트 계약서를 산술 연산 회로로 변환하고 산술 연산 회로를 최소화함으로써 스마트 계약서(smart contract)를 최적화(optimising) 및 난독화(obfuscating)하는 것에 관한 것이다. 본 발명은 또한 블록 체인 네트워크를 통해 수행되는 전자적인 이송(transfer)과 관련한 보안을 강화하기 위해 암호화 및 수학 기술을 이용한다. 본 발명은 스마트 계약서 생성 및 실행에서의 사용에 특히 적합하지만 이에 제한되지는 않는다.
본 문서에서, '블록 체인'이라는 용어는 여러 타입의 전자식의 컴퓨터 기반으로 분산된 원장(electronic, computer-based, distributed ledgers) 중 임의의 원장을 지칭할 수 있다. 이들 원장은 합의 기반의 블록 체인 및 트랜잭션-체인 기술, 허가 및 비허가 원장, 할당된 원장, 및 그 변형을 포함한다. 블록 체인 기술에서 가장 널리 알려진 애플리케이션은 비트 코인 원장(Bitcoin ledger)이지만, 다른 블록 체인 구현예가 제안 및 개발되었다. 비트 코인의 예는 편의 및 예시의 목적상, 본 개시 내용에서 설명되는 기술의 유용한 애플리케이션으로 지칭될 수 있지만, 비트 코인은 본 개시 내용에서 설명되는 기술이 적용될 수 있는 많은 애플리케이션들 중 하나일 뿐이다. 그러나, 주목해야 하는 것은 본 발명은 비트 코인 블록 체인과 함께 사용되는 것으로 제한되지 않으며; 비상업적 애플리케이션을 포함하는 대안적인 블록 체인 구현 및 프로토콜도 본 발명의 범위에 속한다는 것이다. 예를 들어, 본 개시 내용에서 설명되는 기술은 암호 화폐의 교환이 발생하는지 여부에 관계없이, 트랜잭션 내에서 어떤 제약 조건들이 인코딩될 수 있는지에 관해 비트 코인과 유사한 제한이 있는 다른 블록 체인 구현예를 활용할 수 있는 이점을 제공할 것이다.
블록 체인은 블록으로 구성된 컴퓨터 기반의 탈중앙화 시스템으로서 구현되는 피어-투-피어 전자식 원장이며, 이 블록은 다시 트랜잭션 및 다른 정보로 구성될 수 있다. 일부 예에서, "블록 체인 트랜잭션"은 데이터 및 조건들의 세트를 포함하는 구조화된 필드 값들의 수집물을 인코딩하는 입력 메시지를 지칭하며, 여기서 조건들의 세트의 이행은 필드들의 세트가 블록 체인 데이터 구조에 기록되기 위한 전제 조건이 된다. 예를 들어, 비트 코인의 경우, 각각의 트랜잭션은 블록 체인 시스템의 참여자들 사이에서 디지털 자산의 제어권(control)의 이송(transfer)을 인코딩하는 데이터 구조이며, 적어도 하나의 입력 및 적어도 하나의 출력을 포함한다. 일부 실시예에서, "디지털 자산"은 사용 권리와 연관된 이진 데이터를 지칭한다. 디지털 자산의 예로는 비트 코인(Bitcoin), 에테르(ether) 및 라이트 코인(Litecoins)이 있다. 일부 구현예에서, 디지털 자산의 제어권을 이송하는 것은 디지털 자산의 적어도 일부를 제 1 엔티티에서 제 2 엔티티로 재연관시킴으로써 수행될 수 있다. 블록 체인의 각 블록은 이전 블록의 해시를 포함하여, 그 블록들은 처음부터 블록 체인에 기입된 모든 트랜잭션에 대한 영구적이고 변경 불가능한 레코드를 생성하기 위해 함께 체인화되어 있다.
일부 예에서, "스택 기반 스크립팅 언어"는 다양한 스택 기반 또는 스택 지향 실행 모델 및 동작을 지원하는 프로그래밍 언어를 지칭한다. 즉, 스택 기반 스크립팅 언어는 스택을 활용할 수 있다. 스택을 사용하면, 값은 스택의 상단으로 푸시(push)될 수 있거나 스택의 상단으로부터 팝(pop)될 수 있다. 스택에 대해 수행되는 다양한 동작들로 인해, 스택의 상단으로 또는 스택의 상단으로부터 하나 이상의 값의 푸시 또는 팝이 발생할 수 있다. 예를 들어, OP_EQUAL 동작은 스택으로부터의 2 개의 항목을 상단으로 팝하며, 이를 비교하고, 그리고 결과(예컨대, 동일하면 1 또는 동일하지 않으면 0)를 스택의 상단으로 푸시한다. OP_PICK과 같은 스택에 대해 수행된 다른 동작들은 항목이 스택의 상단 이외의 포지션들 중에서 선택되게 할 수 있다. 본 실시예들 중 일부에 의해 이용되는 일부 스크립팅 언어에서는, 적어도 두 개의 스택: 즉, 메인 스택 및 대체 스택이 존재할 수 있다. 스크립팅 언어의 일부 동작은 항목을 한 스택의 상단에서 다른 스택의 상단으로 이동할 수 있다. 예를 들어, OP_TOALTSTACK은 값을 메인 스택의 상단에서 대체 스택의 상단으로 이동시킨다. 주목해야 하는 것은 스택 기반 스크립팅 언어는 경우에 따라 엄격하게 후입 선출(last-in-first-out)(LIFO) 방식으로만 작동하도록 제한되지 않을 수 있다는 것이다. 예를 들어, 스택 기반 스크립팅 언어는 스택의 n 번째 항목을 상단으로 복사하거나 이동하는 동작(예컨대, 비트 코인에서 각각 OP_PICK 및 OP_ROLL)을 지원할 수 있다. 스택 기반 스크립팅 언어로 작성된 스크립트는 벡터, 리스트, 또는 스택과 같은 임의의 적절한 데이터 구조를 사용하여 구현될 수 있는 논리적 스택 상으로 푸시될 수 있다.
트랜잭션이 블록 체인에 기입되기 위해서는 "유효성 검증"이 되어야 한다. 네트워크 노드(채굴 노드)는 각 트랜잭션이 유효하다는 것을 보장하는 작업을 수행하며, 유효하지 않은 트랜잭션은 네트워크에서 거부된다. 노드는 다른 노드와는 상이한 유효성(validity)을 위한 표준을 가질 수 있다. 블록 체인의 유효성은 합의에 기반하기 때문에, 대다수의 노드가 트랜잭션이 유효하다는 데 합의하면 트랜잭션이 유효한 것으로 간주된다. 노드에 설치된 소프트웨어 클라이언트는 사용되지 않은 트랜잭션(unspent transaction)(UTXO)를 부분적으로 참조하는 트랜잭션에 대해 UTXO 잠금 및 잠금 해제 스크립트를 실행함으로써 유효성 검증 작업을 수행한다. 이러한 잠금 및 잠금 해제 스크립트의 실행이 TRUE로 평가되고 다른 유효성 검증 조건이, 적용가능한 경우, 충족된다면, 트랜잭션은 그 노드에 의해 유효성이 검증된다. 유효성 검증된 트랜잭션은 다른 네트워크 노드로 전파되며, 여기서 채굴 노드는 그 트랜잭션을 블록 체인에 포함시키도록 선택할 수 있다. 따라서, 트랜잭션이 블록 체인에 기입되기 위해서는, i) 트랜잭션은 그 트랜잭션을 수신한 제 1 노드에 의해 유효성이 검증되어야 하며 - 그 트랜잭션이 유효하다면, 제 1 노드는 그 트랜잭션을 네트워크 내의 다른 노드에 중계함 -; 그리고 ii) 그 트랜잭션은 채굴 노드에 의해 구축된 새로운 블록에 추가되어야 하며; 그리고 iii) 그 트랜잭션은 채굴, 즉 과거 트랜잭션의 공개 원장에 추가되어야 한다. 트랜잭션을 실질적으로 되돌릴 수 없도록 충분한 수의 블록이 블록 체인에 추가되면 그 트랜잭션은 확정된 것으로 간주된다.
블록 체인 기술이 암호 화폐 구현예의 사용을 위해 가장 널리 알려져 있지만, 디지털 기업가는 비트 코인(Bitcoin)이 기반하고 있는 암호화 보안 시스템과 새로운 시스템을 구현하기 위해 블록 체인에 저장될 수 있는 데이터의 사용을 모색하기 시작했다. 블록 체인이 암호 화폐의 범위에만 제한되지 않는 자동화된 태스크 및 프로세스에 사용될 수 있다면 매우 유리할 것이다. 이러한 솔루션은 블록 체인의 이점(예를 들어, 이벤트에 대한 영구적인 부정조작 방지 레코드, 분산 처리 등)을 활용할 수 있을뿐만 아니라 그 응용 분야가 더욱 다양하다.
본 개시 내용은 하나 이상의 블록 체인 기반 컴퓨터 프로그램의 기술적 양태를 설명하고 있다. 블록 체인 기반 컴퓨터 프로그램은 블록 체인 트랜잭션에 기록된 머신 판독 가능 및 실행 가능 프로그램일 수 있다. 블록 체인 기반 컴퓨터 프로그램은 입력을 처리하여 결과를 생성할 수 있는 규칙을 포함할 수 있으며, 이 결과는 이후 액션이 그 결과에 따라 수행될 수 있게 할 수 있다. 현재 연구의 한 분야는 "스마트 계약서"를 구현하기 위해 블록 체인 기반의 컴퓨터 프로그램을 사용하는 것이다. 자연어로 작성될 전통적인 계약서와는 달리, 스마트 계약서는 머신 판독 가능한 계약서 또는 합의서의 조항의 실행을 자동화하도록 설계된 컴퓨터 프로그램일 수 있다.
실시예에서, 특정 엔티티와의 상호 작용이 스마트 계약서에서 특정 단계로 인코딩될 수 있지만, 스마트 계약서는 이와는 다르게 자동으로 실행되고 자체 시행될 수 있다. 스마트 계약서는 머신 판독 가능하고 실행 가능하다. 일부 예에서, 자동 실행은 UTXO의 이송(transfer)을 가능하게 하기 위해 성공적으로 수행된 스마트 계약서의 실행을 지칭한다. 주목할 것은 이러한 예에서, UTXO의 이송을 야기할 수 있는 "엔티티"는 일부의 비밀에 대한 지식을 증명할 필요없이 잠금 해제 스크립트를 생성할 수 있는 엔티티를 지칭한다는 것이다. 다시 말해서, 잠금 해제 트랜잭션은 데이터의 소스(예컨대, 잠금 해제 트랜잭션을 생성한 엔티티)가 암호 비밀(예컨대, 개인 비대칭 키, 대칭 키 등)에 액세스했는지를 확인하지 않고도 유효성 검증될 수 있다. 또한, 이러한 예에서, 자체 시행은 블록 체인 네트워크의 검증 노드가 제약 조건에 따라 잠금 해제 트랜잭션을 시행하도록 야기되는 것을 지칭한다. 일부 예에서, UTXO를 "잠금 해제"(UTXO를 "사용"하는 것으로도 알려짐)하는 것은 기술적 의미로 UTXO를 참조하고 유효한 것으로 실행되는 잠금 해제 트랜잭션을 생성하는 것을 지칭하는 것으로 사용된다.
블록 체인 트랜잭션 출력은 잠금 스크립트(locking script)와, 비트 코인과 같은 디지털 자산의 소유권에 관한 정보를 포함한다. 부담(encumbrance)이라고 지칭될 수도 있는 잠금 스크립트는 UTXO를 이송하기 위해 충족되어야 하는 조건을 지정함으로써 디지털 자산을 "잠금"한다. 예를 들어, 잠금 스크립트는 관련 디지털 자산을 잠금 해제하기 위해서는 잠금 해제 스크립트에 특정 데이터가 제공될 것을 요구할 수 있다. 잠금 스크립트는 또한 비트 코인에서 "scriptPubKey"라고 알려지기도 한다. 디지털 자산을 잠금 해제하기 위해 당사자에게 데이터를 제공하도록 요구하는 기술은 잠금 스크립트 내에 데이터의 해시를 임베딩하는 것을 포함한다. 그러나, 이는 잠금 스크립트가 생성될 때 데이터가 결정되지 않는다면(예를 들어, 알려지고 고정되지 않는다면) 문제를 일으킨다.
본 발명은 확인 방법/시스템, 및/또는 블록 체인 트랜잭션의 유효성 검증을 제어하기 위한 제어 방법/시스템으로서 설명될 수 있다. 일부 실시예에서, 블록 체인 트랜잭션이 유효성 검증되면 블록 체인에 그 트랜잭션이 기록되며, 일부 애플리케이션에서는 블록 체인을 통해 디지털 자산의 교환(exchange) 또는 이송(transfer)을 초래할 수 있다. 디지털 자산은 블록 체인에 의해 관리되는 리소스의 유닛일 수 있다. 디지털 자산은 일부 실시예에서는 암호 화폐로서 사용될 수 있지만, 디지털 자산은, 실시예들에서, 다른 상황에서 추가적으로 또는 대안적으로 사용될 수 있는 것으로 고려된다. 주목할 것은, 본 발명은 디지털 자산의 제어에 적용할 수 있지만, 본질적으로는 기술적인 것이며, 디지털 자산의 이송을 반드시 수반하지 않고도 블록 체인 데이터 구조를 이용하는 다른 상황에 사용될 수 있다는 것이다.
따라서, 이러한 하나 이상의 양태에서 블록 체인 기술을 개선하는 방법 및 시스템을 제공하는 것이 바람직하다. 이러한 해결된 솔루션이 이제 고안되었다. 따라서, 본 발명에 따르면 첨부된 청구항에 정의된 방법이 제공된다.
따라서, 컴퓨터 구현형 방법을 제공하는 것이 바람직하며, 컴퓨터 구현형 방법은:
제 1 프로그래밍 언어로 인코딩된 조건들의 세트를 제 2 프로그래밍 언어로 인코딩된 프로그래매틱 조건 세트(programmatic set of conditions)로 변환하는 단계;
프로그래매틱 조건 세트를 사전 컴파일된 프로그램 코드로 사전 컴파일하는 단계;
사전 컴파일된 프로그램 코드를 산술 연산 회로로 변환하는 단계; 및
감소된 산술 연산 회로를 형성하기 위해 산술 연산 회로를 감소시키는 단계를 포함한다.
상기 방법은 제 1 프로그래밍 언어로 인코딩된 조건 세트를 획득하는 단계를 포함할 수 있다. 이것은 변환 단계 전에 수행될 수 있다.
상기 방법은 감소된 산술 연산 회로를 저장하는 단계를 포함할 수 있다.
산술 연산 회로를 감소시키는 단계는 감소된 산술 연산 회로를 생성하기 위해 산술 연산 회로를 최소화하는 단계를 포함할 수 있다.
산술 연산 회로는 지향성 비 주기적 그래프(directed acyclical graph)일 수 있다. 추가적으로 또는 대안적으로, 지향성 비 주기적 그래프(directed acyclical graph)는 로직 게이트 및 입력을 나타내는 노드들의 세트를 포함할 수 있다. 추가적으로 또는 대안적으로, 지향성 비 주기적 그래프는 로직 게이트와 입력 사이의 와이어를 나타내는 노드를 연결하는 엣지들의 세트를 포함할 수 있다.
산술 연산 회로는 노드들의 세트의 적절한 서브 세트를 포함하는 로직 서브 모듈을 포함할 수 있다. 추가적으로 또는 대안적으로, 산술 연산 회로를 감소시키는 단계는 산술 연산 회로의 나머지와는 별도로 로직 서브 모듈을 감소시키는 단계를 포함할 수 있다.
로직 서브 모듈 내의 로직 게이트들 간의 와이어는 1-비트 폭일 수 있다.
산술 연산 회로는 노드들 세트 중 다른 서브 세트를 포함하는 다른 로직 서브 모듈을 더 포함할 수 있다. 추가적으로, 노드들의 서브 세트 및 노드들의 다른 서브 세트는 교차하지 않을 수 있다. 추가적으로, 산술 연산 회로를 감소시키는 단계는 제 1 프로세서 코어를 사용하여 로직 서브 모듈을 감소시키는 것과 동시에 제 2 프로세서 코어를 사용하여 다른 로직 서브 모듈을 감소시키는 단계를 더 포함할 수 있다.
컴퓨터 구현형 방법은 또한 계산 리소스 사용을 최적화하기 위한 휴리스틱(heuristic)에 따라 로직 서브 모듈을 제 1 프로세서 코어에 할당하고 다른 로직 서브 모듈을 제 2 프로세서 코어에 할당하는 단계를 포함할 수 있다.
휴리스틱은 최장 처리 시간 그리디 알고리즘(longest processing time greedy algorithm)일 수 있다.
산술 연산 회로를 감소시키는 단계는 산술 연산 회로의 프라임 임플리컨트들의 세트(a set of prime implicants)를 결정하는 단계를 포함할 수 있다. 추가적으로, 산술 연산 회로를 감소시키는 단계는 프라임 임플리컨트들의 세트를, 제 1 곱셈 항 및 제 2 곱셈 항을 포함하는 합계의 곱셈(product of sums)으로서 표현하는 단계를 포함할 수 있다. 추가적으로, 산술 연산 회로를 감소시키는 단계는 제 1 곱셈 항 및 제 2 곱셈 항을 단순화하는 단계를 포함할 수 있다.
제 1 곱셈 항 및 제 2 곱셈 항을 단순화하는 단계는 제 1 곱셈 항 및 제 2 곱셈 항에 불린 최소화 규칙(Boolean minimisation rule)을 적용함으로써 수행될 수 있다.
제 2 프로그래밍 언어는 C++일 수 있다.
제 1 프로그래밍 언어는 머신 판독 가능 금융 계약서를 구성하도록 고안된 컴퓨터 프로그래밍 언어일 수 있다.
컴퓨터 구현형 방법은 감소된 산술 연산 회로를 기술하는 다항식들의 세트를 포함하는 2 차 프로그램(quadratic program)을 생성하는 단계를 더 포함할 수 있다. 추가적으로, 컴퓨터 구현형 방법은 2 차 프로그램의 수행에서 블록 체인 네트워크의 노드에 의해 사용될 파라미터들의 세트를 생성하는 단계를 더 포함할 수 있다.
시스템을 제공하는 것이 또한 바람직하며, 상기 시스템은: 프로세서; 및 상기 프로세서에 의한 실행의 결과로서, 상기 시스템으로 하여금 청구된 바와 같은 방법들 중 임의의 방법을 수행하게 하는 실행 가능한 명령어를 포함하는 메모리를 포함한다.
또한, 비일시적 컴퓨터 판독 가능 저장 매체를 제공하는 것이 바람직하며, 상기 컴퓨터 판독 가능 저장 매체는 컴퓨터 시스템의 하나 이상의 프로세서에 의한 실행의 결과로서, 상기 컴퓨터 시스템으로 하여금 청구된 바와 같은 방법들 중 임의의 방법을 적어도 수행하게 하는 실행 가능한 명령어를 저장한다.
본 발명은 확인 방법/시스템, 및/또는 블록 체인을 통해 디지털 자산의 교환 또는 이송을 제어하기 위한 제어 방법/시스템으로서 설명될 수 있다. 일부 실시예에서, 디지털 자산은 토큰 또는 암호 화폐의 일부이다. 이하에서 설명되는 바와 같이, 본 발명은 또한 블록 체인 네트워크 또는 플랫폼을 통해 동작을 수행하는 새롭고, 개선되고 유리한 방식을 위한 안전한 방법/시스템으로서 설명될 수 있다. 추가적으로 또는 대안적으로, 본 발명은 개선된 블록 체인 프로그래밍 툴 또는 지원을 제공할 수 있다. 본 발명은 분산되고 확인 가능한 계산을 용이하게 하거나 가능하게 하는 개선되고 효율적이며 최적화된 배열체를 제공할 수 있다.
본 발명의 이들 및 다른 양태는 본원에 설명되는 실시예로부터 명백할 것이고 이들 실시예를 참조하여 자세히 설명될 것이다. 본 발명의 실시예는 이제 첨부된 도면을 참조하여 예로서만 설명될 것이다.
도 1은 다양한 실시예가 구현될 수 있는 블록 체인 환경을 예시하고 있다.
도 2는 일 실시예에 따른 로직 감소의 일 예를 예시하고 있다.
도 3은 일 실시예와 관련한 확인 가능한 계산 및 행위자의 일 예를 예시한 스윔 다이어그램(swim diagram)이다.
도 4는 일 실시예에 따른 도메인 특정 언어 계약서에서 2 차 산술 연산 프로그램으로의 워크플로우의 일 예를 예시하고 있다.
도 5는 일 실시예에 따른 로직 서브 모듈을 포함하는 산술 연산 회로의 일 예를 예시하고 있다.
도 6은 일 실시예에 따른 로직 서브 모듈을 동시에 처리하는 일 예를 예시하고 있다.
도 7은 일 실시예에 따른 프라임 임플리컨트 감소의 일 예를 예시하고 있다.
도 8은 일 실시예에 따른 도메인 특정 언어 계약서를 감소된 산술 연산 회로로 변환시키는 일 예를 예시하는 플로우차트이다.
도 9는 일 실시예에 따른 산술 연산 회로 감소의 일 예를 예시하는 플로우차트이다.
도 10은 다양한 실시예가 구현될 수 있는 컴퓨팅 환경을 예시하고 있다.
먼저 도 1을 참조하면, 도 1은 본 개시 내용의 일 실시예에 따른 블록 체인과 연관된 일 예시적인 블록 체인 네트워크(100)를 예시하고 있다. 실시예에서, 예시적인 블록 체인 네트워크(100)는 피어 투 피어 분산 전자 디바이스(peer-to-peer distributed electronic devices)로서 구현되는 블록 체인 노드를 포함하고, 각각의 블록 체인 노드는 노드(102)의 운영자 사이에서 적어도 부분적으로 합의되는 블록 체인 프로토콜을 따르는 동작을 수행하는 소프트웨어 및/또는 하드웨어의 인스턴스를 실행한다. 일부 예에서, "노드"는 블록 체인 네트워크 사이에 분산되는 피어 투 피어 전자 디바이스를 지칭한다. 블록 체인 프로토콜의 일 예는 비트 코인 프로토콜이다.
일부 실시예에서, 노드(102)는 임의의 적절한 컴퓨팅 디바이스로 (예컨대, 데이터 센터 내의 서버에 의해, 클라이언트 컴퓨팅 디바이스(예컨대, 데스크탑 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 스마트폰 등)에 의해, 컴퓨팅 리소스 서비스 제공자의 분산 시스템 내의 다수의 컴퓨팅 디바이스에 의해, 또는 도 10의 컴퓨팅 디바이스(1000)와 같은 임의의 적절한 전자 클라이언트 디바이스에 의해) 구성될 수 있다. 일부 실시예에서, 노드(102)는 트랜잭션(104)과 같은 제안된 트랜잭션을 나타내는 데이터 메시지 또는 객체를 수신하기 위한 입력을 갖는다. 일부 실시예에서, 노드는 유지하고 있는 정보에 대해, 예컨대, 트랜잭션(104)의 상태의 정보에 대해 질의 가능하다.
도 1에 도시된 바와 같이, 일부 노드(102)는 하나 이상의 다른 노드(102)에 통신 가능하게 연결된다. 이러한 통신 연결은 유선 또는 무선 통신 중 하나 이상을 포함할 수 있다. 실시예에서, 노드(102)는 각각 블록 체인 내의 모든 트랜잭션의 "원장"의 적어도 일부를 유지하고 있다. 이러한 방식으로, 원장은 분산된 원장일 것이다. 원장에 영향을 미치는 노드에 의해 처리된 트랜잭션은 원장의 무결성이 유지되도록 하나 이상의 다른 노드에 의해 확인 가능하다.
어느 노드(102)가 어느 다른 노드와 통신할 수 있는지에 대해, 예시적인 블록 체인 네트워크(100)의 각 노드가 하나 이상의 다른 노드(102)와 통신할 수 있다면 충분한 것일 수 있으며, 그에 따라, 노드들 사이에서 전달되는 메시지는 블록 체인 프로토콜이 나타내는 것이 포워딩되어야 하는 것으로 가정할 경우, 예시적인 블록 체인 네트워크(100)(또는 그 일부의 중요 부분)를 통해 전파될 수 있게 된다. 그러한 하나의 메시지는 노드(102) 중 하나, 예컨대, 노드(102A)에 의한 제안된 트랜잭션의 발행일 수 있으며, 이는 그 후 경로(106)와 같은 경로를 따라 전파될 것이다. 또 다른 메시지는 블록 체인에 포함되도록 제안된 새로운 블록의 발행일 수 있다.
일 실시예에서, 노드(102) 중 적어도 일부는 암호화 문제 해결과 같은 복잡한 계산을 수행하는 채굴 노드이다. 암호화 문제를 해결하는 채굴 노드는 블록 체인을 위한 새로운 블록을 생성하고 새로운 블록을 노드(102) 중 다른 노드에게 브로드캐스트한다. 노드(102) 중 다른 노드는 채굴 노드의 작업을 확인하고, 확인시에 (예를 들어, 블록 체인의 분산 원장에 블록을 추가함으로써) 블록 체인에 블록을 수용한다. 일부 예에서, 블록은 트랜잭션들의 그룹이며, 종종 이전 블록의 타임스탬프 및 "지문"(예를 들어, 해시)으로 표시된다. 이러한 방식으로, 각각의 블록은 이전 블록에 연결될 수 있고, 이에 의해 블록 체인의 블록을 연결하는 "체인"을 생성할 수 있다. 실시예에서, 유효 블록은 노드(102)의 합의에 의해 블록 체인에 추가된다. 또한 일부 예에서, 블록 체인은 유효성 검증된 블록들의 리스트를 포함한다.
일 실시예에서, 노드(102) 중 적어도 일부는 본 개시 내용에 설명되는 바와 같은 트랜잭션을 유효성 검증하는 유효성 검증 노드로서 동작한다. 일부 예에서, 트랜잭션은 디지털 자산(예를 들어, 다수의 비트 코인)의 소유권의 증명을 제공하는 데이터 및 디지털 자산의 소유권/제어권을 수용 또는 이전하기 위한 조건을 포함한다. 일부 예에서, "잠금 해제 트랜잭션"은 블록 체인 주소와 연관된 엔티티에, UTXO에 의해 표시되는 이전 트랜잭션의 디지털 자산의 적어도 일부를 재연관시키는(예를 들어, 소유권 또는 제어권을 이전하는) 블록 체인 트랜잭션을 지칭한다. 일부 예에서, "이전 트랜잭션"은 잠금 해제 트랜잭션에 의해 참조되는 UTXO를 포함하는 블록 체인 트랜잭션을 지칭한다. 일부 실시예에서, 트랜잭션은 소유권/제어권이 이송("잠금 해제")될 수 있기 전에 충족되어야 하는 조건으로 트랜잭션에 부담을 부과하는 "잠금 스크립트"를 포함한다.
일부 실시예에서, 블록 체인 주소는 디지털 자산의 적어도 일부의 제어권이 이송/재연관되는 엔티티와 연관되는 영숫자 문자열이다. 일부 실시예에서 구현된 일부 블록 체인 프로토콜에서는, 엔티티와 연관된 공개 키와 블록 체인 주소 간의 일대일 대응 관계가 존재한다. 일부 실시예에서, 트랜잭션의 유효성 검증은 잠금 스크립트 및/또는 잠금 해제 스크립트에 지정된 하나 이상의 조건을 유효성 검증하는 것을 포함한다. 트랜잭션(104)의 유효성 검증이 성공하면, 유효성 검증 노드는 트랜잭션(104)을 블록 체인에 추가하고 이를 노드(102)에 분산시킨다.
도 2는 본 개시 내용의 일 실시예의 예(200)를 예시하고 있다. 구체적으로, 도 2는 산술 연산 회로(214)로 변환되는 스마트 계약서(206)를 도시하며, 이 산술 연산 회로(214)는 산술 연산 회로 최적화 모듈에 의해 감소되어 블록 체인 내의 작업자 노드(250)가 스마트 계약서(206)의 결과를 결정하는 데 필요한 필수 리소스를 감소시킨다.
일 실시예에서, 스마트 계약서(202)는 컴퓨팅 디바이스가 계약서의 조항을 실행하게 하거나 및/또는 계약서의 조항이 이행되었는지를 결정하게 하는 포맷으로 작성된 계약서 또는 합의서이다. 스마트 계약서(202)는, 입력 값들의 세트에 대해 평가된 결과로서, 컴퓨팅 디바이스가 스마트 계약서(202)의 결과를 결정하게 하는 규칙들 및/또는 조건들의 세트를 포함할 수 있으며, 이 규칙들 및/또는 조건들의 세트는 이후에 상기 결과에 따라 추가 액션이 수행될 수 있게 한다.
본 개시 내용의 목적은 엔티티가 도메인 특정 프로그래밍 언어를 사용하여 규칙들의 세트 및/또는 조건들의 세트, 예를 들어, 스마트 계약서(202)의 규칙들의 세트 및/또는 조건들의 세트를 구성하게 하는 프로토콜을 설명하는 것이다. 일부 예에서, 도메인 특정 프로그래밍 언어 또는 "도메인 특정 언어(DSL)"는 특정 사용 분야에서 사용하도록 설계된 컴퓨터 프로그래밍 언어를 지칭한다. DSL의 예는 하이퍼텍스트 마크업 언어(Hypertext Markup Language)(HTML), 액튤러스 모델링 언어(Actulus Modeling Language)(AML), 디지털 자산 모델링 언어(Digital Asset Modeling Language)(DAML), 금융 상품 마크업 언어(Financial Products Markup Language)(FpML), 및 이맥스 리스프(Emacs Lisp)를 포함한다.
일부 예에서, DSL과는 대조적으로, 범용 프로그래밍 언어 또는 "범용 언어(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, 파이크, PL/I, Python, Ring, RPG, Ruby, Rust, Scala, Simula, Swift, 및 Tcl을 포함한다. 본 개시 내용의 실시예에서 언급될 수 있는 C++는 명령형, 객체 지향 및 일반적인 프로그래밍 특징을 갖는 범용 프로그래밍 언어이며, 이는 또한 로우 레벨 메모리 조작(low-level memory manipulation)을 위한 기능을 제공한다.
일 실시예에서, 산술 연산 회로(214)는 스마트 계약서(202)를 나타내는 지향성 비 주기적 그래프(directed acyclical graph)(DAG)이다. 즉, DAG의 엣지("와이어")는 그래프 내의 노드들 간의 입력 값 또는 값을 나타낼 수 있고, 노드는 산술 연산 동작(예컨대, 합계, 곱셈 등)을 나타낼 수 있다. 따라서, 산술 연산 회로(214)에 대한 입력 값은 스마트 계약서에 대한 입력 값과 연관되고, 실시예에서, 스마트 계약서의 결과는 산술 연산 회로(214)의 결과와 매칭된다. 주목되는 것은 다양한 실시예에서, 매칭은 반드시 동일성(equality)을 요구하는 것은 아니라는 것이다. 예를 들어, 두 개의 값이 동일하지는 않지만 수학적으로 동등한 경우 두 개의 값은 매칭될 수 있다. 다른 예로서, 두 개의 값이 공통 객체(예컨대, 값)에 대응하거나 일부의 사전 결정된 방식으로 상보적이고/이거나 하나 이상의 매칭 기준을 만족하는 경우, 두 개의 값은 매칭될 수 있다. 일반적으로, 매칭이 존재하는지를 결정하는 임의의 방식이 사용될 수 있다.
일 실시예에서, 감소된 산술 연산 회로(216)는 산술 연산 회로가 불린 최소화 규칙(Boolean minimisation rules) 또는 다른 수학적 동등성 규칙(mathematic equivalency rules)에 따라 산술 연산 회로 감소 모듈(220)에 의해 감소된 결과이다. 예를 들어, 불린 대수에서, 표현
Figure pct00001
는 간단히
Figure pct00002
로 최소화될 수 있고, 마찬가지로 산술 연산 회로는 다음과 같으며:
Figure pct00003
간단히 다음과 같이 최소화될 수 있다:
Figure pct00004
따라서, 산술 연산 회로 감소 모듈(220)은 산술 연산 회로를 감소 또는 최소화하는 방식에 대해 산술 연산 회로(214)를 평가함으로써 산술 연산 회로(214)를 감소/단순화할 수 있고, 이로써 산술 연산 회로 감소 모듈(220)이 출력하는 감소된 산술 연산 회로(216)를 생성할 수 있다.
일 실시예에서, 산술 연산 회로 감소 모듈(220)은, 실행의 결과로서, 불린 최소화 규칙 또는 다른 수학적 동등성 규칙을 사용하여 산술 연산 회로(214)에서 곱셈 항들을 비교하는 동작을 수행함으로써 감소된 산술 연산 회로(216)를 생성하여 산술 연산 회로(214)가 어디에서 그리고 어떻게 감소될 수 있는지를 결정하는 하드웨어 또는 소프트웨어이다. 산술 연산 회로 감소 모듈(220)에 의해 수행되는 동작에 대한 추가 세부 사항은 도 7 내지 도 9의 설명에서 찾을 수 있다.
일 실시예에서, 작업자 노드(250)는 도 1의 노드(102) 및 도 3의 작업자 노드(350)와 유사한 블록 체인 네트워크의 노드이다. 즉, 작업자 노드(250)는 블록 체인 네트워크 내의 하나 이상의 다른 노드에 통신 가능하게 연결된 블록 체인 트랜잭션을 처리 및/또는 유효성 검증하도록 구성된 컴퓨팅 디바이스일 수 있다. 작업자 노드(250)는, 일부 실시예에서, 입력 값들의 세트가 주어지면, 축소된 산술 연산 회로(216)와 같은 산술 연산 회로의 출력을 결정하도록 설계될 수 있다.
실시예에서, 계약서의 실행은 신뢰할 수 없는 당사자에게 아웃소싱될 수 있지만, 계약서 실행의 정확성은 공개적으로 확인될 수 있다. 실시예에서, 프로토콜은 완전성, 건전성 및 제로 지식을 보장하는 암호화 프리미티브를 이용한다. 일부 예에서, "완전성"은 검증자가 프로토콜을 정확하게 따르는 경우 확인자가 출력의 유효성을 결정할 수 있다는 것을 지칭한다. 일부 예에서, "건전성"은 출력의 진위에 대해 검증자가 확인자를 속이는 것이 불가능하다는 것을 지칭한다. 일부 예에서, "제로 지식"은 출력을 생성하는 데 사용된 입력을 도출할 수 없이도 출력을 유효성 검증하는 확인자의 능력을 지칭한다.
이러한 방식으로, 비전문가 프로그래머가 임의의 암호화를 스스로 구현하지 않아도 사람이 스마트 계약서를 보다 쉽게 작성하고 판독하도록 설계된 DSL이 스마트 계약서를 생성하는 데 사용될 수 있다. 본 개시 내용의 실시예에서, 컴파일러/번역기는 사용자로부터의 DSL 소스 코드를 블록 체인과 함께 사용 가능한 암호화 프로토콜로 자동으로 컴파일할 것이다. 본 개시 내용에서, 실시예는 간단한 산술 연산 게이트의 관점에서 복잡한 계약서의 표현에 대해 고도로 최적화된 솔루션을 제공한다. 이 표현은 분산 확인 가능한 계산을 제공할 수 있는 포괄적인 파이프 라인을 구축하기 위한 솔루션 또는 툴로 간주될 수 있다.
도 3은 본 개시 내용의 실시예에 관련된 확인 가능한 계산 및 행위자의 프로세스(300)의 예를 예시하는 도면이다. 도 3에 도시된 바와 같이, 확인 가능한 계산의 프로세스(300)는 본 개시 내용의 실시예의 확인 가능한 계산 프로토콜에서 단계들을 수행하는 것과 관련된 클라이언트 노드 (340), 작업자 노드(350), 및 확인자 노드(360)를 포함할 수 있다. 실시예에서, 클라이언트 노드(340), 작업자 노드(350) 또는 확인자 노드(360) 중 하나 이상은 도 1의 예시적인 블록 체인 네트워크(100)의 노드(102)와 같은 블록 체인 네트워크의 노드이다.
일 실시예에서, 셋업 단계는 DSL로 계약서를 작성하는 것을 포함한다. 클라이언트 노드(340)일 수 있는 번역기는 소스 코드를 입력으로 받아 산술 연산 회로
Figure pct00005
를 생성하며, 이는 필드
Figure pct00006
로부터 값을 운반하며 가산 및 승산 게이트에 연결되는 "와이어"로 구성된다. 주목되는 것은 산술 연산 회로 자체가 하드웨어 회로라기 보다는 DAG일 수 있으며 와이어는 DAG의 엣지일 수 있다는 것이다. 그러나, 산술 연산 회로는 와이어 및 로직 게이트를 갖는 물리적 회로에서 구현될 수 있는 것으로 고려된다. 302에서, 클라이언트 노드(340)는 GPL로 작성된 계산
Figure pct00007
를 산술 연산 회로
Figure pct00008
로 컴파일한다. 본 실시예에서, 클라이언트 노드(340)는 산술 연산 회로
Figure pct00009
및 입력
Figure pct00010
를 작업자 노드(350)에 공급한다.
산술 연산 회로
Figure pct00011
로부터, 본 개시 내용의 실시예는 2 차 프로그램
Figure pct00012
를 생성할 수 있으며, 이 프로그램은 오리지널 회로
Figure pct00013
의 완전한 설명을 제공하는 다항식들의 세트를 포함한다. 이후, 2 차 프로그램을 수행하고 확인할 때 작업자 노드(350) 및 확인자 노드(360)에 의해 사용될 공개 파라미터(public parameters)가 생성될 수 있다.
304에서, 작업자 노드(350)는 회로
Figure pct00014
또는 입력
Figure pct00015
상의 2 차 프로그램
Figure pct00016
를 실행하여 그 출력이
Figure pct00017
임을 주장한다. 일부 실시예에서, 작업자 노드(350)(즉, 검증자)는
Figure pct00018
에 대한 유효한 트랜스크립트를 획득할 것으로 예상되며, 따라서, 프로세스(300)의 306에서, 작업자 노드(350)는 트랜스크립트를 인코딩한다. 일부 예에서,
Figure pct00019
에 대한 유효한 트랜스크립트는, 입력 와이어에 할당된 값이
Figure pct00020
의 값이 되고, 중간 값이
Figure pct00021
에서 각 게이트의 정확한 동작에 대응하며, 그리고 출력 와이어(들)에 할당된 값이
Figure pct00022
이 되도록, 회로 와이어에 대한 값들의 할당이 되며; 주장한 출력이 정확하지 않으면(즉,
Figure pct00023
),
Figure pct00024
에 대한 유효한 트랜스크립트는 존재하지 않는다.
308에서, 작업자 노드(350)는 출력
Figure pct00025
를 클라이언트 노드(340)에 제공한다. 실시예에서, 공개 평가 키
Figure pct00026
및 공개 확인 키
Figure pct00027
는 클라이언트 노드(340)에 의해 또는 클라이언트 노드(340)로부터 선택된 비밀 값
Figure pct00028
를 사용하여 도출된다. 실시예에서, 작업자 노드(350)는 이러한 공개 키를 사용하여 특정 입력
Figure pct00029
에 대한 계산을 평가한다. 실시예에서, 출력
Figure pct00030
, 내부 회로 와이어의 값, 및
Figure pct00031
는 정확성 증명
Figure pct00032
를 생성하는 데 사용된다. 정확성 증명
Figure pct00033
는 블록 체인에 저장될 수 있고, 작업자 노드(350)가 다수의 당사자와 개별로 상호 작용할 것을 요구하지 않고도 다수의 당사자(예컨대, 확인자 노드(360)에 의해 확인될 수 있다. 이런 방식으로, 확인자 노드(360)는 공개 확인 키
Figure pct00034
및 증명
Figure pct00035
를 사용하여 310에서 트랜잭션을 유효성 검증할 수 있으며, 이로써 계약서를 유효성 검증할 수 있다.
도 4는 본 개시 내용의 실시예에 따른 DSL로 인코딩된 스마트 계약서로부터 2 차 산술 연산 프로그램(QAP)으로의 워크플로우의 예(400)를 예시한다. 구체적으로, 도 4는 변환기(404)에 의해 GPL 계약서(406)로 변환되는 DSL 스마트 계약서(402)를 도시한다. GPL 프리컴파일러(precompiler)(408)(프리 프로세서로 알려지기도 함)는 GPL 사전 처리된 계약서(412)를 생성하기 위해 GPL 계약서(406)에 의해 참조되는 외부 라이브러리(410)를 포함한다. GPL 사전 처리된 계약서(412)는 QAP 다항식(418)이 도출되는 감소된 산술 연산 회로(416)를 생성하도록 최적화된 산술 연산 회로(414)로 변환된다.
일 실시예에서, DSL 스마트 계약서(402)는 정확한 의미를 갖는 공식 언어로 작성된 계약서이다. 실시예에서, DSL 스마트 계약서(402)는 조건들의 세트를 포함하고, DSL 스마트 계약서(402)의 결과는 조건들의 세트의 이행에 의존한다. 스마트 계약서의 예는 피보험자의 보험료 및 보험회사에 의한 피보험자에게로의 잠재적 배달물을 입력으로서 취하는 보험 계약서이다. 피보험자가 스마트 계약서 기간 동안 상실(예컨대, 제 1 조건의 이행의 상실)을 겪는 경우, 스마트 계약서의 실행은 보험회사에게 보험료를 배부하고 피보험자에게 그 상실에 대한 배달물을 제공한다. 한편, 피보험자가 스마트 계약서 기간 동안 상실을 겪지 않는 경우, 스마트 계약의 실행은 보험회사에게 보험료를 배부하고 잠재적 배달물을 보험회사에게 리턴한다.
일 실시예에서, 변환기(404)는, 실행의 결과로서, DSL로 작성된 DSL 스마트 계약서(402)와 같은 조건들의 세트를 수신하고 DSL 코드를 GPL 소스 코드로, 예컨대, GPL 계약서(406)로 변환하는 소프트웨어 프로그램이다. 일 실시예에서, GPL 계약서(406)은 DSL 스마트 계약서(402)에 정의된 계약서를 포함하는 C++ 프로그램과 같은 GPL 프로그램이다.
일 실시예에서, GPL 프리컴파일러(408)는 독립형 GPL 사전 처리된 계약서(412)를 생성하기 위해 GPL 계약서(406) 및 필수 외부 라이브러리(410)를 처리하는 컴퓨터 실행 가능 프로그램이다. 실시예에서, GPL 프리컴파일러(408)는 상수 표현을 평가하고 GPL 계약서(406)에서 발견된 심볼을 등록한다.
일 실시예에서, 외부 라이브러리(410)는 호출에 의해 GPL 계약서(406)에 의해 활용되는 미리 작성된 서브 루틴, 함수, 클래스, 컨테이너, 값, 및/또는 변수 타입의 집합체이다. 예를 들어, 외부 라이브러리(410)를 호출함으로써, GPL 계약서(406)는 기능 자체를 구현하지 않고도 그 라이브러리의 기능을 얻는다.
일 실시예에서, GPL 사전 처리된 계약서(412)는 표현들 및 연산자들의 세트를 포함한다. 연산자는 산술 연산자(예컨대, 가산(+), 승산(*) 등), 비교 연산자(예컨대, 미만(<), 동일(==), 크거나 동일(>=) 등), 조건문(예컨대, if-then(?, :)), 또는 로직 연산자(예컨대, AND (&&), OR (||), NOT (!), XOR (
Figure pct00036
) 등)를 포함할 수 있다. 일부 실시예에서, 메인 기능은 미리 정의된 이름 및 포맷을 갖도록 생성된다.
일 실시예에서, 산술 연산 회로(414)는 변수들의 세트에 대한 DAG이다. 일 실시예에서, 제로의 인디그리(indegree)를 갖는 DAG의 모든 노드는 변수(예컨대,
Figure pct00037
)를 나타내는 입력 게이트이며, DAG의 다른 모든 노드는 합계 게이트(+) 또는 곱셈 게이트(×)이다. 실시예에서, 모든 게이트(노드)는 1의 아웃디그리(outdegree)를 가지므로, 기본 그래프는 지향성 트리가 된다. 실시예에서, 산술 연산 회로(414)는 두 개의 복잡도의 측정치: 즉 크기 및 깊이를 갖는다. 일부 예에서, 산술 연산 회로의 "크기"는 산술 연산 회로(414) 내의 다수의 게이트에 기반하고 있다. 일부 예에서, 산술 연산 회로의 "깊이"는 산술 연산 회로 내에서 최장 지향 경로(longest directed path)의 길이에 기반하고 있다.
산술 연산 회로(414)는 생성된 후 감소될 수 있다. 불린 대수에서, 모든 불린 함수는 최소 정규 형태(minterm canonical form)로 표현될 수 있다.
Figure pct00038
개의 변수의 함수
Figure pct00039
에 대해, 각 변수가 자연적 형태 또는 보수적 형태로 한 번 나타나는 곱셈 항은 최소항으로 지칭될 수 있다. 즉, 일부 예에서 "최소항"은 보수 연산자(')와 결합 연산자()만을 사용하는
Figure pct00040
개의 변수의 논리적 표현이다. 예를 들어,
Figure pct00041
Figure pct00042
Figure pct00043
의 두 개의 최소항이다. 이런 방식으로,
Figure pct00044
개의 변수에는
Figure pct00045
개의
Figure pct00046
가 존재할 것이다.
일부 예에서, "임플리컨트"는
Figure pct00047
의 최소항들의 그룹을 커버하는 곱셈을 지칭한다(즉, 곱셈들의 합계에서 곱셈 항
Figure pct00048
는,
Figure pct00049
가 1과 동일할 때마다 만약
Figure pct00050
가 값 1을 취하게 되면,
Figure pct00051
의 임플리컨트가 된다). 예를 들어, 다음의 함수에 대해:
Figure pct00052
이며,
Figure pct00053
,
Figure pct00054
,
Figure pct00055
,
Figure pct00056
, 및
Figure pct00057
Figure pct00058
의 임플리컨트의 예이다. 일부 예에서, "프라임 임플리컨트"는 보다 일반적인 (예를 들어, 더 적은 리터럴(literals)을 가진) 임플리컨트에 의해 커버될 수 없는 임플리컨트를 지칭한다. 즉, 프라임 임플리컨트는 곱셈 항
Figure pct00059
이며, 이는 임의의 리터럴이
Figure pct00060
로부터 제거된다면,
Figure pct00061
에 대한 넌 임플리컨트(non-implicant)를 야기하게 된다. 위의 예를 사용하면,
Figure pct00062
는 프라임 임플리컨트가 아닌데, 그 이유는 리터럴이 제거되어 (프라임 임플리컨트가 될
Figure pct00063
에 대해) 프라임을 만들 수 있기 때문이며, 그 후
Figure pct00064
Figure pct00065
Figure pct00066
및 c=0 및 d=1인 경우에만 1과 동일해야 한다.
그러나, 알 수 있듯이,
Figure pct00067
는,
Figure pct00068
,
Figure pct00069
, 및
Figure pct00070
가 제거되면(즉,
Figure pct00071
인 경우) 1과 동일할 수 있다. 마찬가지로,
Figure pct00072
는,
Figure pct00073
Figure pct00074
가 제거되면(즉,
Figure pct00075
인 경우) 1과 동일할 수 있다. 마찬가지로,
Figure pct00076
는,
Figure pct00077
Figure pct00078
가 제거되면(즉,
Figure pct00079
인 경우) 1과 동일할 수 있다. 불린 항으로부터 리터럴을 제거하는 프로세스는 "확장"이라고 지칭될 수 있다. 하나의 리터럴로 확장하면 항이 참인 입력 조합의 수가 두 배로 된다. 예를 들어,
Figure pct00080
Figure pct00081
의 커버를 변경하지 않고도
Figure pct00082
또는
Figure pct00083
로 확장될 수 있다.
불린 함수의 모든 프라임 임플리컨트의 합계는 "블레이크 정규 형태(Blake canonical form)"라고 지칭될 수 있다. 다른 프라임 임플리컨트의 조합이 커버할 수 없는 함수의 출력을 커버하는 프라임 임플리컨트는 "필수 프라임 임플리컨트"라고 지칭될 수 있다.
Figure pct00084
개의 입력 변수를 갖는 로직 함수의 프라임 임플리컨트의 개수는
Figure pct00085
개 만큼일 수 있다. 최소 프라임 커버(minimum prime cover)의 추출은 비 결정적 다항식 시간 완료(nondeterministic polynomial time-complete)(NP-완료) 문제의 클래스에 속하는 것으로 알려져 있다. 다음의 방법은 Quine-McCluskey 알고리즘을 사용하여 프라임 임플리컨트의 챠트를 작성하는 예를 예시하고 있다.
McCluskey의 불린 함수 최소화(Minimization of Boolean Functions)(1956)에서 발견된 Quine-McCluskey 알고리즘은 불린 함수의 프라임 임플리컨트의 완성 리스트를 리턴한다. 일 실시예에서, 리턴된 프라임 임플리컨트는 프라임 임플리컨트 테이블을 작성하는 데 사용되며, 이 테이블은 함수의 필수 프라임 임플리컨트를 추출하기 위한 하나 이상의 알고리즘에 대한 입력으로 사용될 수 있다. 감소될 불린 함수
Figure pct00086
는 다음과 같이 표현될 수 있다:
Figure pct00087
출력 1을 제공하기 위해
Figure pct00088
를 표현하는 데 사용되는
Figure pct00089
개의 최소항
Figure pct00090
는 인덱스 벡터
Figure pct00091
에 포함된다. 각 인덱스
Figure pct00092
는 주어진 입력 시퀀스의 이진 인코딩을 나타낸다:
Figure pct00093
따라서,
Figure pct00094
에서의 각 최소항은
Figure pct00095
값에 따라 자연 입력 또는 보수 입력의 곱셈으로 표현될 수 있다. 한 자릿수 변경으로 최소항의 쌍의 표현이 변화하는 경우 최소항의 쌍은 결합될 수 있다. 더 이상 결합될 수 없는 항은 프라임 임플리컨트가 된다. 필수 프라임 임플리컨트 테이블은 더 이상 감소불가능한 프라임 임플리컨트의 리스트를 사용하여 구성된다.
예를 들어,
Figure pct00096
,
Figure pct00097
, 및
Figure pct00098
를 갖는 불린 함수
Figure pct00099
가 주어지면, 프라임 임플리컨트를 추출하여 프라임 임플리컨트 테이블을 생성하는 Quine-McCluskey 알고리즘은 다음과 같이 나타날 것이다:
Figure pct00100
따라서,
Figure pct00101
는 다음과 같은 최소항의 합계로 표현될 수 있다:
·
Figure pct00102
·
Figure pct00103
·
Figure pct00104
·
Figure pct00105
·
Figure pct00106
·
Figure pct00107
4 개의 입력의 경우, 최소항은 범위
Figure pct00108
내에 있으며, 여기서,
Figure pct00109
Figure pct00110
이 된다.
Figure pct00111
에 대한 정규 곱셉 합계의 표현은 다음과 같다:
Figure pct00112
한 자릿수가 변경되면 최소항이 결합되고, 해당 입력은 "-"로 설정된다. 이로 인해 크기가 2인 임플리컨트가 다음과 같이 생성된다:
Figure pct00113
[더 이상 감소불가능]
Figure pct00114
Figure pct00115
Figure pct00116
Figure pct00117
Figure pct00118
Figure pct00119
Figure pct00120
Figure pct00121
Figure pct00122
크기가 2인 일부의 임플리컨트는 더 이상 감소불가능한 것이 아니라, 다시 결합되어 크기가 4인 임플리컨트를 생성할 수 있다:
Figure pct00123
[더 이상 감소불가능]
Figure pct00124
[더 이상 감소불가능]
Figure pct00125
[더 이상 감소불가능]
이번에는 크기가 4인 모든 임플리컨트가 더 이상 감소불가능하다. 더 이상 감소불가능한 임플리컨트의 리스트는 불린 함수의 프라임 임플리컨트에 대응한다. 최종 단계로서, 필수 프라임 임플리컨트 테이블은 더 이상 감소불가능한 프라임 임플리컨트의 리스트를 사용하여 구성될 수 있다. 프라임 임플리컨트 테이블의 일 예는 아래의 표 1에 표시되어 있다:
표 1:
Figure pct00126
표에서 "틱 (tick)"은 참이 되도록 주어진 인덱스 벡터, 즉 주어진 입력 시퀀스를 필요로 하는 프라임 임플리컨트에 대응한다.
Figure pct00127
의 컬럼이 하나의 틱만을 가지면, 대응하는 최소항은 하나의 프라임 임플리컨트에 의해서만 커버될 수 있다. 이러한 프라임 임플리컨트는
Figure pct00128
에 대해서는 필수적이다.일 실시예에서, 감소된 산술 연산 회로(416)는 입력들의 세트가 주어질 때 DSL 스마트 계약서(402)에 특정된 것과 같은 조건들의 세트의 결과를 결정하는 데 사용될 수 있는 감소되거나 최소화된 지향성 비 주기적 그래프(DAG)이다. 일부 실시예에서, 감소된 산술 연산 회로(416)는 최소화된(즉, 최소로 감소된) 산술 연산 회로이다. 일부 실시예에서, 가장 최적의 산술 연산 회로는 반드시 가장 작은 산술 연산 회로일 필요는 없으며(예를 들어, 특정의 크기의 산술 연산 회로는 회로 내의 산술 연산 동작의 수 및 타입에 따라 보다 큰 산술 연산 회로보다 더 빠르게 평가될 수 있으며), 그러한 실시예에서, 감소된 산술 연산 회로(416)는 (예를 들어, 최대 속도, 적은 메모리 사용량, 가장 효율적인 프로세서 이용도 등을 위해) 최적화되어 있지만, 반드시 최소화된 산술 연산 회로일 필요는 없다.
일 실시예에서, QAP 다항식(418)은 오리지널 산술 연산 회로(예를 들어, 도 4의 산술 연산 회로(414))의 완전한 설명을 제공하는 수학 공식으로 표현된 변수 및 계수를 포함하는 하나 이상의 표현이다. 실시예에서, QAP 다항식의 다항식은 Gennaro, R. 등에 의한 PCP가 없는 2 차 스팬 프로그램 및 Succint NIZK (Quadratic Span Programs and Succint NIZKs without PCPs)(2013)에 설명된 바와 같은 산술 연산 회로의 루트(root)에서의 그들의 평가치의 관점에서 정의된다. 실시예에서, QAP 다항식은 스마트 계약서의 표현으로서 블록 체인 트랜잭션의 잠금 스크립트로 인코딩된다. 실시예에서, 잠금 스크립트는, 실행시, (예를 들어, 잠금 스크립트의 실행 결과로서) 스마트 계약서의 결과가 결정되도록 QAP 다항식에 변수로서 입력되는 파라미터 값들의 세트를 수신한다.
실시예에서, GPL 프리컴파일러(408)는 GPL 사전 처리된 계약서(412)를 생성하며, 이는 산술 연산 게이트로 구성된 산술 연산 회로일 수 있다. 그러나, 복잡한 산술 연산 회로는 조건문 및 흐름 제어문으로 인해 로직 서브 모듈을 또한 임베딩하고 있음에 주목해야 한다. 실시예에서, 이들 서브 모듈은 여전히 산술 연산 회로로 변환되지만, 도 5에서 볼 수 있는 바와 같이 1-비트 폭 게이트 연결부에 의해 특징지어 진다.
도 5는 본 개시 내용의 일 실시예에 따른 로직 서브 모듈을 포함하는 산술 연산 회로(500)의 일 예시적인 모델을 예시하고 있다. 도 5에 예시된 바와 같이, 산술 연산 회로(500)는 출력(510)을 생성하기 위해 로직 서브 모듈(508A-508B) 및/또는 그룹화되지 않은 산술 연산 게이트(506A-506D)를 통과하는 입력들의 그룹(504), 및 1-비트 입력(502)을 포함할 수 있다. 도 5의 굵은 선은 1-비트 폭 와이어(예컨대, 버스)들의 그룹을 나타내고, 가는 선은 1-비트 비트 와이어를 나타낸다. 로직 및 산술 연산 1-비트 폭 회로는 이중이므로(예를 들어, 적어도 두 개의 방식으로, 즉, 합계들의 곱셈으로 또는 곱셈들의 합계로서 표현될 수 있음), 로직 회로 감소는 산술 연산 회로(500) 내의 로직 서브 모듈(508A-508B)에 적용될 수 있다.
로직 서브 모듈(508A-508B)의 각각은 산술 연산 회로 내의 노드들의 세트의 적절한(엄격한) 서브 세트를 포함할 수 있다. 다시 말해서, 로직 서브 모듈은 전체 산술 연산 회로를 포함하지 않을 수 있다. 또한, 일부 실시예에서, 로직 서브 모듈(508A-508B)은 교차하지 않고; 즉, 이러한 실시예에서 로직 서브 모듈(508A-508B)은 어떠한 내부 게이트도 공유하지 않을 것이다. 더욱이, 이러한 실시예에서 로직 서브 모듈(508A-508B)은 어떠한 내부 게이트도 공유하지 않기 때문에, 동작의 시간 복잡성을 감소시키기 위해 감소 절차가 병렬화될 수 있다(예를 들어, 로직 서브 모듈(508A-508B)의 각각이 병렬로 감소될 수 있다).
일 실시예에서, 1-비트 입력(502)은 1 또는 0을 나타내는 값을 운반할 수 있는 와이어인 반면, 입력들의 그룹(504)은 복수의 1-비트 와이어를 나타낸다. 복잡한 산술 연산 회로는 조건문 및 흐름 제어문으로부터 도출되는 로직 서브 모듈을 임베딩할 수 있다. 실시예에서, 이들 로직 서브 모듈은 또한 산술 연산 회로로 변환되지만, 도시된 로직 서브 모듈(508a-508b)과 같은 1-비트 폭 게이트 연결부에 의해 특징지어 질 수 있다. 일부 실시예에서, 로직 서브 모듈(508A-508B)의 와이어는 1-비트 폭만이다.
로직 및 산술 연산 1-비트 폭 회로는 이중이기 때문에, 로직 감소는 또한 로직 서브 모듈(508A-508B)에 적용될 수 있다. 더욱이, 로직 서브 모듈(508A-508B)은 어떠한 내부 게이트도 공유하지 않기 때문에, 산술 연산 회로(500)의 시간 복잡성을 감소시키기 위해 감소 절차가 병렬화될 수 있으며; 예를 들어, 각각의 로직 서브 모듈(508A-508B)에 대해 로직 감소를 수행하도록 별도의 프로세서 코어가 할당될 수 있다. 일 실시예에서, 로직 서브 모듈(508A-508B)을 로직 감소를 위한 상이한 프로세싱 코어에 할당하도록 계산적으로 최적화된 휴리스틱이 활용될 수 있다. 계산적으로 최적화된 휴리스틱은 계산 리소스 사용을 최적화하도록 설계된 휴리스틱일 수 있다. 사용될 수 있는 계산적으로 최적화된 휴리스틱의 일 예는 최장 처리 시간(longest processing time)(LPT) 그리디 알고리즘이다. 이러한 휴리스틱에서, 로직 서브 모듈(508A-508B)이 처리 시간에 의해 정렬되고 지금까지 가장 빠른 종료 시간을 갖는 머신에 할당되면, 스케줄러는 각 트랜잭션에 대한 계산 부하의 균형을 맞추려고 시도한다. 추가 세부 사항은 아래의 도 7의 설명에서 찾을 수 있다. 대조적으로, 실시예에서, 그룹화되지 않은 산술 연산 게이트(506A-506D)는, 그룹화되지 않은 산술 연산 게이트(506A-506D)가 입력들의 그룹(504)과 같은 1-비트 와이어들의 그룹에 의해 공유되기 때문에, 병렬로 감소되지 않을 수 있다. 주목할 것은 실시예에서, 감소는 게이트의 수에 적용되지만, 입력들의 수(예를 들어, 1-비트 입력(502) 및 입력들의 그룹(504))는 동일하게 유지된다는 것이다.
일 실시예에서, 출력(510)은 산술 연산 회로(500)에 따라 입력(502 및 504)에 대해 수행된 동작의 결과이다. 일부 실시예에서, 결과는 참 또는 거짓의 값이다. 다른 실시예에서, 결과는 하나 이상의 1-비트 값들의 세트이다. 다른 실시예에서, 결과는 산술 연산 회로에 의해 지원되는 임의의 다른 값 또는 값일 수있다.
전술한 바와 같이, 실시예에서, Quine-McCluskey 알고리즘은 불린 함수 f의 프라임 임플리컨트의 완전한 리스트를 리턴할 수 있다. 또한, 페트릭(Petrick)에 의한 프라임 임플리컨트들의 세트로부터 불린 함수의 중복되지 않은 형태의 직접 결정(A Direct Determination of the Irredundant Forms of a Boolean Function from the Set of Prime Implicants)(1956)(페트릭의 방법(Petrick's method))은 f를 아래에 설명되는 바와 같이 필수 프라임 임플리컨트의 구성으로 표현하기 위해 프라임 임플리컨트의 수를 감소시키는 데 사용될 수 있다.
프라임 임플리컨트 테이블 내에서 표현되는 불린 함수 f는 보조 불린 함수
Figure pct00129
를 사용하여 이중 형태로 표현될 수 있다. 보조 불린 함수
Figure pct00130
는 프라임 임플리컨트 테이블의 모든 컬럼이 커버될 때 참이 된다. 따라서,
Figure pct00131
는 각각의 인덱스 벡터
Figure pct00132
에 기여하는(즉, f의 각 출력에 기여하는) 프라임 임플리컨트들의 합계
Figure pct00133
의 곱셈으로 표현될 수 있다:
Figure pct00134
예를 들어, 표 1의 프라임 임플리컨트들에 대한
Figure pct00135
항들의 리스트는 다음과 같이 된다:
Figure pct00136
Figure pct00137
Figure pct00138
Figure pct00139
Figure pct00140
Figure pct00141
따라서, 이중 함수
Figure pct00142
는 다음과 같이 된다:
Figure pct00143
Figure pct00144
Figure pct00145
의 개별 최소항으로 표현하면, 함수는 다음과 같이 다시 작성될 수 있다:
Figure pct00146
불린 함수는 아래에 표시된 규칙과 같은 특정 불린 규칙을 사용하여 더 단순화될 수 있다:
1.
Figure pct00147
2.
Figure pct00148
3.
Figure pct00149
주목할 것은, 다른 불린 단순화 규칙이 존재하고, 본 개시 내용의 실시예에서 보다 적거나, 보다 많거나, 또는 다른 불린 단순화 규칙이 사용될 수 있다는 것이 본 개시 내용의 범위 내에서 고려된다는 것이다. 그러나, 위의 규칙을 사용하면,
Figure pct00150
에 대해 다음과 같은 단순화가 수행될 수 있다:
Figure pct00151
(규칙 3)
Figure pct00152
(규칙 1)
Figure pct00153
에 대해 몇 몇의 추가적인 단순화를 적용하면,
Figure pct00154
는 다음과 같은 감소를 겪을 수 있다:
Figure pct00155
Figure pct00156
Figure pct00157
Figure pct00158
Figure pct00159
따라서, 함수
Figure pct00160
Figure pct00161
Figure pct00162
에 의해 커버될 수 있고, 두 항은 모두 최소 수의 최소항을 포함한다(다른 이중 함수
Figure pct00163
를 고려할 때, 항
Figure pct00164
는 보다 작은 수의 최소항으로 인해
Figure pct00165
를 나타내는 데 사용될 것이다). 따라서, f는 다음과 같이 단순화될 수 있다:
Figure pct00166
또는, 대안적으로:
Figure pct00167
이런 방식으로, 보조 불린 함수
Figure pct00168
Figure pct00169
의 각 출력에 기여하는 프라임 임플리컨트들의 합계
Figure pct00170
의 곱셈으로 표현될 수 있다:
Figure pct00171
여기서,
Figure pct00172
Figure pct00173
를 표현하는 데 사용되는 최소항의 수이고, 항
Figure pct00174
는 다음과 같이 표현된다:
Figure pct00175
따라서,
Figure pct00176
는 합계
Figure pct00177
에 기여하는 k 번째 프라임 임플리컨트를 나타낸다.
Figure pct00178
Figure pct00179
...
Figure pct00180
도 6은 본 개시 내용의 일 실시예의 로직 서브 모듈을 감소시키는 예(600)를 예시하고 있다. 구체적으로, 도 6은 4 개의 프로세서 코어(622)를 사용하여 8 개의 로직 서브 모듈(608A-608H)을 처리하는 시스템의 예시적인 예를 도시한다. 예(600)에서, LPT 그리디 알고리즘은 시스템의 프로세서 사용을 최적화하기 위해 모든 프로세서 코어가 가능한한 동시에 처리를 완료하는 것을 목표로 사용된다. 초기에, 로직 서브 모듈(608A-608H)은 서로에 대한 로직 서브 모듈(608A-608H)의 처리 시간의 평가치로서의 복잡성(예컨대, 로직 서브 모듈(608A-608H) 내의 로직 게이트의 수)에 의해 순서화될 수 있다. 그러나, 로직 서브 모듈(608A-608H)에 대한 처리 시간을 평가하는 다른 방법이 사용될 수 있다는 것이 고려된다.
예(600)에서, 최장 평가 처리 시간을 갖는 제 1의 4 개의 로직 서브 모듈(608A-608D)은 프로세서 코어(622) 사이에서 라운드 로빈 또는 의사 랜덤 방식으로 분산될 수 있다. 알 수 있는 바와 같이, 4 개 중 최소로 평가된 처리 시간을 가지며 코어 4에 의해 처리되는 로직 서브 모듈(608D)이 먼저 완료된다. 결과적으로, 코어 4에는 제 5 최장 평가 처리 시간을 갖는 처리되지 않은 로직 서브 모듈, 즉, 로직 서브 모듈(608E)이 할당된다. 코어 3은 로직 서브 모듈(608C)의 처리를 완료하고, 다음에 코어 3에는 제 6 최장 평가 프로세싱 시간을 갖는 로직 서브 모듈, 즉 로직 서브 모듈(608F)이 할당된다. 코어 2는 로직 서브 모듈(608B)의 처리를 완료하고, 로직 서브 모듈(608G)을 수신한다. 마지막으로, 코어 1은 최장 평가 처리 시간을 갖는 로직 서브 모듈의 처리를 완료하고, 8 개의 로직 서브 모듈(608A-608H) 중 최단 평가 처리 시간을 갖는 로직 서브 모듈, 즉 로직 서브 모듈(608H)을 수신한다. 예(600)에서 알 수 있는 바와 같이, 4 개의 모든 프로세서 코어(622)는 8 개의 로직 서브 모듈(608A-608H)의 처리를 거의 동시에 완료하여 프로세서 유휴 시간을 감소시킨다.
도 7은 본 개시 내용의 일 실시예의 프라임 임플리컨트 감소의 예(700)를 예시하고 있다. 구체적으로, 도 7은 전술한 단계에 따라, 예를 들어, 도 2의 산술 연산 회로 감소 모듈(220)에 의해 단순화되는 프라임 임플리컨트들
Figure pct00181
내지
Figure pct00182
의 세트를 도시한다. 예를 들어, 곱셈 항
Figure pct00183
을 리스트
Figure pct00184
로서 고려한다. 실시예에서, 각각의 단계에서, 리스트의 2 개의 멤버("좌측" 및 "우측" 멤버로 지칭됨)가 비교되고 가능하다면 단순화된다. 예(700)에서, 시간 t1에서 좌측 멤버(702A)(
Figure pct00185
)는 우측 멤버(704A)(
Figure pct00186
)와 쌍을 이루며,
Figure pct00187
의 곱셈 항들은 위에 나열된 것과 같은 불린 단순화 규칙을 사용하여 단순화된다. 좌측 멤버(702A) 및 우측 멤버(704A)가 단순화될 수 있다면, 좌측 멤버는 새로운 항
Figure pct00188
으로 대체될 것이다. 그러나, 예(700)에서, 좌측 멤버(702A) 및 우측 멤버(704A)는 추가로 단순화될 수 없음을 알 수 있다.
이어서, 시간 t2에서, 좌측 멤버(702B)(
Figure pct00189
)는 우측 멤버(704B)(
Figure pct00190
)와 함께 참여하여 불린 단순화 규칙에 따라 처리된다. 이 경우, 예(700)에서 좌측 멤버(702B) 및 우측 멤버(704B)는
Figure pct00191
로 단순화될 수 있음을 알 수 있다. 따라서, 시간 t3에서, 좌측 멤버(702C)(
Figure pct00192
)는 우측 멤버(704C)(
Figure pct00193
)와 비교된다. 예(700)에서, 좌측 멤버(702C) 및 우측 멤버(704C)는 추가로 단순화될 수 없다.
마찬가지로, 시간 t4에서, 좌측 멤버(702D) 및 우측 멤버(704D)(
Figure pct00194
)는 마찬가지로 추가로 단순화될 수 없다. 모든 우측 멤버가 체킹된 후, 좌측 멤버는 그 리스트에서 그 다음 멤버로 설정되며, 예(700)에서 그 다음 멤버는
Figure pct00195
가 된다. 결과적으로, 시간 t5에서, 좌측 멤버(702E)(
Figure pct00196
)는 우측 멤버(704E)(
Figure pct00197
)와 함께 참여하고, 불린 단순화 규칙에 따라 이들은 좌측 멤버의 값이 되는
Figure pct00198
로 단순화된다. 따라서, 시간 t6에서, 좌측 멤버(702F)(
Figure pct00199
)는 우측 멤버(
Figure pct00200
)와 함께 참여하고 처리되어,
Figure pct00201
로 단순화된다. 프로세스는 더 이상의 체킹이 이용될 수 없을 경우 종료되며, 이는 시간 t7에서 알 수 있다.
실시예에서, 단순화 단계의 수는
Figure pct00202
에 의해 한정되는 상한이 된다. 실시예에서, 한 쌍(좌측, 우측)에 대한 각각의 단순화 단계는 다음 동작의 실행으로 구성된다:
1.규칙 1에 따른 (좌측, 우측) 단순화 시도,
2.규칙 2에 따른 (좌측, 우측) 단순화 시도,
3.규칙 3에 따른 (좌측, 우측) 단순화 시도.
실시예에서, 규칙 1, 2 및 3의
Figure pct00203
항은 (좌측, 우측) 쌍의 공통 부분을 나타낸다. 실시예에서 좌측 및 우측 멤버의 부록들 사이의 교차 체킹(교차점)은 특정 구현예(예컨대, 나이브 또는 정렬된 리스트(naive or sorted lists))에 따라, 시간 복잡성
Figure pct00204
또는
Figure pct00205
에 의해 특징지어 진다.
실시예에서, 단순화 프로세스가 완료된 후, 나머지 곱셈 항
Figure pct00206
은 시간 복잡성
Figure pct00207
을 갖는
Figure pct00208
개의 항
Figure pct00209
의 합계로서 명시적인 형태로 표현될 수 있다. 따라서, 함수
Figure pct00210
는 각 항에 의해 독립적으로 커버될 수 있다:
Figure pct00211
주목할 것은
Figure pct00212
의 값은 성공적인 단순화 동작의 수에 따라 달라진다는 것이다. 실시예에서, 항
Figure pct00213
의 각각이 실제로는 프라임 임플리컨트
Figure pct00214
의 곱셈이기 때문에, 함수
Figure pct00215
는 최소 수의 프라임 임플리컨트를 포함하는
Figure pct00216
에서 최소항
Figure pct00217
에 의해 커버될 수 있다:
Figure pct00218
여기서,
Figure pct00219
이고, 함수
Figure pct00220
Figure pct00221
에 포함된 프라임 임플리컨트
Figure pct00222
의 수를 카운트한다. 마지막으로, 이중 함수
Figure pct00223
는 다음과 같이 표현될 수 있다:
Figure pct00224
실시예에서, 도 5의 로직 서브 모듈(508A-508B)과 같은 개별 로직 서브 모듈은 보다 빠른 프로세싱을 위해 상이한 프로세싱 코어들에 의해 병렬로 단순화될 수 있는 것으로 고려된다. 이러한 실시예에서, 개별 로직 서브 모듈을 LPT 그리디 알고리즘이라 불리는 로직 감소 스테이지를 위한 상이한 프로세싱 코어에 할당하도록 스케줄러에 의해 계산적으로 최적화된 휴리스틱이 수행된다. 작업들이 그들의 처리 시간에 의해 정렬된 후 지금까지 종료 시간이 가장 빠른 머신(프로세싱 코어)에 할당된다면, 스케줄러는 처리중인 각 로직 서브 모듈에 대한 계산 부하의 균형을 맞추려고 한다.
실시예에서, 로직 서브 모듈(
Figure pct00225
)의 초기 게이트
Figure pct00226
의 수는
Figure pct00227
를 감소시키는 데 필요한 예상 시간의 적절한 지표인 것으로 추정된다(예를 들어, 게이트의 수가 많을수록 예상 처리 시간이 길어진다). 따라서, 감소시킬
Figure pct00228
개의 코어와
Figure pct00229
개의 서브 모듈을 가진 머신이 주어지면, 서브 모듈
Figure pct00230
는 그들의
Figure pct00231
값 (
Figure pct00232
)에 의해 정렬되고 이후 소정의 시간
Figure pct00233
에 최저 집계
Figure pct00234
메트릭을 가진 코어
Figure pct00235
의 리스트
Figure pct00236
에 할당된다:
Figure pct00237
대안적으로, 서브 모듈
Figure pct00238
Figure pct00239
값을 고려하지 않고 라운드 로빈 방식으로 프로세싱 코어에 할당될 수 있다. 예를 들어,
Figure pct00240
Figure pct00241
일 때 코어
Figure pct00242
에 할당될 수 있다.
도 8은 다양한 실시예에 따른 DSL 계약서를 감소된 산술 연산 회로로 변환시키는 일 프로세스(800)를 예시하는 플로우차트이다. 프로세스(800)의 일부 또는 전부(또는 설명된 임의의 다른 프로세스, 또는 이들 프로세스의 변형 및/또는 조합)는 실행 가능한 명령어 및/또는 다른 데이터로 구성된 하나 이상의 컴퓨터 시스템의 제어하에 수행될 수 있고, 하나 이상의 프로세서에서 집합적으로 실행되는 실행 가능한 명령어로 구현될 수 있다. 실행 가능한 명령어 및/또는 다른 데이터는 비일시적 컴퓨터 판독 가능 저장 매체(예컨대, 자기, 광학, 또는 플래시 매체에 영구 저장되는 컴퓨터 프로그램)에 저장될 수 있다.
예를 들어, 프로세스(800)의 일부 또는 전부는 하나 이상의 컴퓨팅 디바이스에 의해(예컨대, 데이터 센터 내의 서버에 의해, 클라이언트 컴퓨팅 디바이스에 의해, 컴퓨팅 리소스 서비스 제공자의 분산 시스템 내의 다수의 컴퓨팅 디바이스에 의해, 또는 도 10의 컴퓨팅 디바이스(1000)와 같은 임의의 적절한 전자 클라이언트 디바이스에 의해) 수행될 수 있다. 프로세스(800)는 DSL로 작성된 스마트 계약서가 GPL로 변환되고, 사전 컴파일되고, 그리고 산술 연산 회로로 변환되는 일련의 동작을 포함한다. 산술 연산 회로는 본 개시 내용에서 설명된 기술에 따라 감소되어 출력된다.
802에서, 프로세스(800)를 수행하는 시스템은 DSL로 작성된 스마트 계약서를 획득한다. 위에서 언급한 바와 같이, DSL은 특정 분야에서 사용하도록 설계된 컴퓨터 프로그래밍 언어일 수 있다. 실시예에서, 스마트 계약서와 같은 금융 상품을 구성하기 위해 고안된 DSL이 사용될 수 있다. 이러한 DSL은 일반 사용자가 보다 쉽게 스마트 계약서를 작성하고 판독할 수 있게 하며, 비전문가 프로그래머가 어떠한 암호화도 구현하지 않고도 스마트 계약서를 작성할 수 있게 할 수 있다.
804에서, 프로세스(800)를 수행하는 시스템은 스마트 계약서를 GPL로 변환한다. 이러한 방식으로, DSL 스마트 계약서는 블록 체인에서 사용하기 위한 암호화 프로토콜로 컴파일/번역될 수 있는 일반적인 형태로 변환된다. 실시예에서, GPL은 C++ 소스 코드이지만 다른 GPL 언어가 사용될 수 있다는 것이 고려된다.
806에서, GPL 소스 코드는 사전 컴파일되며, 이는 라이브러리 파일 및/또는 다른 의존성을 사전 컴파일된 소스 코드로 가져 오는 것을 포함할 수 있다. 사전 컴파일링 프로세스는 또한 변수 이름을 난독화할 수 있으며, 이는 스마트 계약서가 블록 체인에 커밋(commit)된 후 대중으로부터 스마트 계약서의 특성을 위장하는 이점을 가질 수 있다.
808에서, 프로세스(800)를 수행하는 시스템은, 예를 들어, 다양한 커맨드, 조건문, 변수, 산술 연산 동작을 산술 연산 알고리즘으로 변환함으로써 사전 컴파일된 소스 코드를 산술 연산 회로로 변환한다. 이 산술 연산 알고리즘은 도 5에 도시된 것과 유사한 지향성 주기적 그래프로 표현될 수 있다.
810에서, 프로세스(800)를 수행하는 시스템은 808에서 생성된 산술 연산 알고리즘에 대해 감소 프로세스를 수행한다. 감소 프로세스는 도 9의 프로세스(900)와 유사할 수 있다. 이 감소 프로세스는 도 1의 노드(102)와 같은 블록 체인 노드에 의해 보다 효율적으로 처리될 수 있는 더 작고 단순화된 산술 연산 알고리즘을 야기할 수 있다.
812에서, 프로세스(800)를 수행하는 시스템은 감소된 산술 연산 회로를 출력한다. 일부 실시예에서, 시스템은 감소된 회로를 다른 프로세스에 제공하며, 이 프로세스는 이 감소된 회로를 도 4의 QAP 다항식(418)과 같은 QAP 다항식으로 변환한다. 다른 실시예에서, 시스템은 감소된 회로를 향후 사용을 위해 데이터 저장소 또는 다른 저장 리소스에 제공한다. 또 다른 실시예에서, 시스템은, 예를 들어, 사용자 인터페이스의 디스플레이를 통해, 감소된 회로를 하나 이상의 엔티티(예컨대, 사용자 인터페이스를 통해 오리지널 DSL 계약서를 생성하거나 이에 의해 영향을 받는 엔티티)에 제공한다. 주목할 것은 802-812에서 수행되는 하나 이상의 동작은 병렬을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 것이다.
도 9는 다양한 실시예에 따른 사전 컴파일된 GPL 스마트 계약서의 산술 연산 회로 감소를 위한 일 예의 프로세스(900)를 예시하는 플로우차트이다. 프로세스(900)의 일부 또는 전부(또는 설명된 임의의 다른 프로세스, 또는 이들 프로세스의 변형 및/또는 조합)는 실행 가능한 명령어 및/또는 다른 데이터로 구성된 하나 이상의 컴퓨터 시스템의 제어하에 수행될 수 있고, 하나 이상의 프로세서에서 집합적으로 실행되는 실행 가능한 명령어로 구현될 수 있다. 실행 가능한 명령어 및/또는 다른 데이터는 비일시적 컴퓨터 판독 가능 저장 매체(예컨대, 자기, 광학, 또는 플래시 매체에 영구 저장되는 컴퓨터 프로그램)에 저장될 수 있다.
예를 들어, 프로세스(900)의 일부 또는 전부는 하나 이상의 컴퓨팅 디바이스에 의해(예컨대, 데이터 센터 내의 서버에 의해, 클라이언트 컴퓨팅 디바이스에 의해, 컴퓨팅 리소스 서비스 제공자의 분산 시스템 내의 다수의 컴퓨팅 디바이스에 의해, 또는 도 10의 컴퓨팅 디바이스(1000)와 같은 임의의 적절한 전자 클라이언트 디바이스에 의해) 수행될 수 있다. 예를 들어, 프로세스(900)는 도 2의 산술 연산 회로 감소 모듈(220)을 실행한 결과로서 수행될 수 있다. 프로세스(900)는 일련의 동작을 포함하고, 여기서 산술 로직 회로의 프라임 임플리컨트가 결정되어 합계의 곱셈으로서 표현되고, 곱셈 항들의 각 쌍은 로직 규칙과 비교되어 곱셈 항이 단순화될 수 있는지를 결정하고, 그리고 모든 쌍이 단순화된 후에, 산술 연산 회로는 감소된 형태로 출력된다. 프로세스(900)의 동작은 도 8의 810의 동작에 따라 확장된다.
902에서, 프로세스(900)를 수행하는 시스템은 감소된 산술 연산 회로를 획득한다. 산술 연산 회로는 최소항들의 세트로 구성될 수 있다. 실시예에서, 획득된 산술 연산 회로는 도 4의 GPL 사전 처리된 계약서(412)와 같은 사전 컴파일된 GPL 소스 코드로부터 변환될 수 있다. 실시예에서, 획득된 산술 연산 회로는 스마트 계약서를 나타낸다. 일부 실시예에서, 스마트 계약서는 이전에 DSL 포맷으로 작성되어 GPL 포맷으로 변환되었다.
904에서, 프로세스를 수행하는 시스템은, 예를 들어, 도 4와 관련하여 전술한 방식으로, 산술 연산 로직 회로의 프라임 임플리컨트를 분리시킨다. 즉, 시스템은 산술 연산 회로의 최소항들의 세트로부터 임플리컨트들의 세트를 결정할 수 있다. 시스템은 임플리컨트들의 세트 중 어떠한 멤버가 산술 연산 회로의 프라임 임플리컨트들의 세트(즉, 임의의 리터럴이 제거되면 넌 임플리컨트(non-implicant)를 초래하는 곱셈 항들)를 포함하는지를 결정할 수 있다.
906에서, 프라임 임플리컨트들의 세트는, 예를 들어, 도 5와 관련하여 전술한 방식으로, 프라임 임플리컨트들의 합계
Figure pct00243
의 곱셈으로 취급될 수 있다. 908에서, 프로세스(900)를 수행하는 시스템은 제 1 쌍의 곱셈 항
Figure pct00244
Figure pct00245
를 비교하여 910에서 제 1 쌍이 도 7과 관련하여 설명된 방식과 같이 불린 로직 규칙에 따라 단순화될 수 있는지를 결정한다. 그렇지 않으면, 시스템은 914로 진행한다. 이와는 달리, 만약 그러하다면, 시스템은 912에서 제 1 쌍을 결합하여 단순화하며, 그 후 시스템은 914로 진행한다.
914에서, 프로세스(900)를 수행하는 시스템은 모든 쌍의 곱셈 항이 비교되어 더 이상 감소불가능하게 되었는지를 결정한다. 그렇지 않으면, 시스템은 908로 리턴하여 다음 쌍의 곱셈 항을 비교한다. 이와는 달리, 916에서, 시스템은 감소된 곱셈 항을 감소된 산술 연산 회로가 되는 곱셈들의 합계로서 출력한다. 도 8의 812와 관련하여 위에서 언급한 바와 같이, 시스템은 감소된 산술 연산 회로를 추가 처리를 위한 다른 프로세스, 데이터 저장소, 데이터 파일, 또는 사용자 인터페이스로 출력할 수 있다. 주목할 것은 902-916에서 수행되는 하나 이상의 동작은 병렬을 포함하여 다양한 순서 및 조합으로 수행될 수 있다는 것이다.
주목할 것은, 개시된 실시예를 설명하는 맥락에서, 달리 명시되지 않는 한, "명령어"가 일반적으로 지원되지 않는 것(예컨대, 데이터의 전송, 계산 등)을 수행하지 않는 동작을 수행하는 실행 가능한 명령어(이는 또한 코드, 애플리케이션, 에이전트 등으로 지칭됨)에 관한 표현의 사용은 명령어가 머신에 의해 실행되고 있음을 나타내므로 머신이 지정된 작업을 수행하게 된다는 것이다.
도 10은 본 개시 내용의 적어도 하나의 실시예를 구현하는 데 사용될 수 있는 컴퓨팅 디바이스(1000)의 단순화된 블럭도를 예시하고 있다. 다양한 실시예에서, 컴퓨팅 디바이스(1000)는 위에서 예시되고 설명된 임의의 시스템을 구현하는 데 사용될 수 있다. 예를 들어, 컴퓨팅 디바이스(1000)는 데이터 서버, 웹 서버, 휴대용 컴퓨팅 디바이스, 퍼스널 컴퓨터, 또는 임의의 전자 컴퓨팅 디바이스로서 사용되도록 구성될 수 있다. 도 10에 도시된 바와 같이, 컴퓨팅 디바이스(1000)는, 실시예에서, 버스 서브 시스템(1004)을 통해 다수의 주변 서브 시스템과 통신하고 이와 동작 가능하게 연결된 하나 이상의 프로세서(1002)를 포함할 수 있다. 일부 실시예에서, 이러한 주변 서브 시스템은 메모리 서브 시스템(1008) 및 파일/디스크 저장 서브 시스템(1010)을 구비한 저장 서브 시스템(1006), 하나 이상의 사용자 인터페이스 입력 디바이스(1012), 하나 이상의 사용자 인터페이스 출력 디바이스(1014), 및 네트워크 인터페이스 서브 시스템(1016)을 포함한다. 이러한 저장 서브 시스템(1006)은 정보의 임시 또는 장기 저장을 위해 사용될 수 있다.
일부 실시예에서, 버스 서브 시스템(1004)은 컴퓨팅 디바이스(1000)의 다양한 컴포넌트들 및 서브 시스템들이 의도된 대로 서로 통신하게 하는 메커니즘을 제공한다. 버스 서브 시스템(1004)이 단일 버스로서 개략적으로 도시되어 있지만, 버스 서브 시스템의 대안적인 실시예는 다수의 버스들을 이용한다. 일부 실시예에서, 네트워크 인터페이스 서브 시스템(1016)은 다른 컴퓨팅 디바이스 및 네트워크에 대한 인터페이스를 제공한다. 네트워크 인터페이스 서브 시스템(1016)은, 일부 실시예에서, 컴퓨팅 디바이스(1000) 중의 다른 시스템으로부터 데이터를 수신하고 다른 시스템으로 데이터를 송신하기 위한 인터페이스로서 기능한다. 일부 실시예에서, 버스 서브 시스템(1004)은 세부 사항, 검색항 등과 같은 데이터를 통신하는 데 이용된다.
일부 실시예에서, 사용자 인터페이스 입력 디바이스(1012)는 키보드와 같은 하나 이상의 사용자 입력 디바이스; 포인팅 디바이스, 예컨대, 통합된 마우스, 트랙볼, 터치 패드, 또는 그래픽 태블릿; 스캐너; 바코드 스캐너; 디스플레이에 통합된 터치 스크린; 오디오 입력 디바이스, 예컨대, 음성 인식 시스템, 마이크로폰; 및 다른 타입의 입력 디바이스를 포함할 수 있다. 일반적으로, "입력 디바이스"라는 용어의 사용은 정보를 컴퓨팅 디바이스(1000)에 입력하기 위한 모든 가능한 타입의 디바이스 및 메커니즘을 포함하도록 의도된다. 일부 실시예에서, 하나 이상의 사용자 인터페이스 출력 디바이스(1014)는 디스플레이 서브 시스템, 프린터, 또는 오디오 출력 디바이스 등과 같은 비 시각적 디스플레이를 포함한다. 일부 실시예에서, 디스플레이 서브 시스템은 음극선관(CRT), 액정 디스플레이(LCD)와 같은 평면 패널 디바이스, 발광 다이오드(LED) 디바이스, 또는 프로젝션 또는 다른 디스플레이 디바이스를 포함한다. 일반적으로, "출력 디바이스"라는 용어의 사용은 정보를 컴퓨팅 디바이스(1000)에 출력하기 위한 모든 가능한 타입의 디바이스 및 메커니즘을 포함하도록 의도된다. 하나 이상의 사용자 인터페이스 출력 디바이스(1014)는, 예를 들어, 설명된 프로세스 및 그 변형을 수행하는 애플리케이션과의 사용자 상호 작용이 적절한 경우, 그 상호 작용을 가능하게 하는 사용자 인터페이스를 제시하는 데 사용될 수 있다.
일부 실시예에서, 저장 서브 시스템(1006)은 본 개시 내용의 적어도 하나의 실시예의 기능을 제공하는 기본 프로그래밍 및 데이터 구성을 저장하기 위한 컴퓨터 판독 가능 저장 매체를 제공한다. 애플리케이션(프로그램, 코드 모듈, 명령어)은, 일부 실시예에서 하나 이상의 프로세서에 의해 실행될 때, 본 개시 내용의 하나 이상의 실시예의 기능을 제공하고, 저장 서브 시스템(1006)에 저장된다. 이들 애플리케이션 모듈 또는 명령어는 하나 이상의 프로세서(1002)에 의해 실행될 수 있다. 다양한 실시예에서, 저장 서브 시스템(1006)은 본 개시 내용에 따라 사용되는 데이터를 저장하기 위한 저장소(repository)를 추가로 제공한다. 일부 실시예에서, 저장 서브 시스템(1006)은 메모리 서브 시스템(1008) 및 파일/디스크 저장 서브 시스템(1010)을 포함한다.
실시예에서, 메모리 서브 시스템(1008)은 프로그램 실행 동안 명령어 및 데이터를 저장하기 위한 메인 랜덤 액세스 메모리(RAM)(1018) 및 고정 명령어가 저장될 수 있는 판독 전용 메모리(ROM)(1020)와 같은 다수의 메모리를 포함한다. 일부 실시예에서, 파일/디스크 저장 서브 시스템(1010)은 프로그램 및 데이터 파일을 위한 비일시적 영구(비휘발성) 스토리지를 제공하고, 하드 디스크 드라이브, 플로피 디스크 드라이브 및 관련 이동식 매체, 컴팩트 디스크 판독 메모리(CD-ROM) 드라이브, 광학 드라이브, 이동식 미디어 카트리지, 또는 기타 유사한 저장 매체를 포함할 수 있다.
일부 실시예에서, 컴퓨팅 디바이스(1000)는 적어도 하나의 로컬 클럭(1024)을 포함한다. 적어도 하나의 로컬 클럭(1024)은, 일부 실시예에서, 특정 시작 날짜로부터 발생된 틱의 수를 나타내는 카운터이며, 일부 실시예에서, 컴퓨팅 디바이스(1000) 내에 일체로 위치된다. 다양한 실시예에서, 적어도 하나의 로컬 클럭(1024)은 컴퓨팅 디바이스(1000) 및 그 내부에 포함된 서브 시스템들에 대한 프로세서들에서의 데이터 전송을 특정 클럭 펄스에서 동기화하는 데 사용되며, 데이터 센터 내의 컴퓨팅 디바이스(1000)와 다른 시스템들 사이의 동기 동작을 조정하는 데 사용될 수 있다. 다른 실시예에서, 로컬 클럭은 프로그램 가능 간격 타이머(programmable interval timer)이다.
컴퓨팅 디바이스(1000)는 휴대용 컴퓨터 디바이스, 태블릿 컴퓨터, 워크스테이션, 또는 후술하는 임의의 다른 디바이스를 포함하는 다양한 타입 중 임의의 한 타입일 수 있다. 추가적으로, 컴퓨팅 디바이스(1000)는, 일부 실시예에서, 하나 이상의 포트(예컨대, USB, 헤드폰 잭, 광 커넥터 등)를 통해 컴퓨팅 디바이스(1000)에 연결될 수 있는 다른 디바이스를 포함할 수 있다. 실시예에서, 이러한 디바이스는 광섬유 커넥터를 수용하는 포트를 포함한다. 따라서, 일부 실시예에서, 이러한 디바이스는 광학 신호를 처리를 위해 디바이스를 컴퓨팅 디바이스(1000)에 연결하는 포트를 통해 송신되는 전기 신호로 변환하는 것이다. 컴퓨터 및 네트워크의 끊임없이 변화하는 특성으로 인해, 도 10에 도시된 컴퓨팅 디바이스(1000)의 설명은 디바이스의 바람직한 실시예를 예시하기 위한 목적의 특정 예로서만 의도된다. 도 10에 도시된 시스템보다 더 많거나 적은 컴포넌트를 갖는 많은 다른 구성이 가능하다.
따라서, 명세서 및 도면은 제한적인 의미라기보다는 예시적인 것으로 간주되어야 한다. 그러나, 청구항에 열거된 바와 같은 발명의 영역으로부터 벗어나지 않으면서 다양한 변형 및 변경이 이루어질 수 있다는 것이 명백할 것이다. 마찬가지로, 다른 변형은 본 개시 내용의 영역 내에 있다. 따라서, 개시된 기술은 다양한 변형 및 대안적인 구성에 취약하지만, 개시된 기술의 특정 실시예가 도면에 도시되어 있고 위에서 상세히 설명되었다. 그러나, 본 발명을 개시된 특정 형태로 제한하고자 하는 의도는 없지만, 반대로, 본 발명은 첨부된 청구항에 정의된 바와 같이 본 발명의 영역 내의 모든 수정례, 대안의 구성 및 등가물을 포함한다는 것을 이해해야 한다.
개시된 실시예를 설명하는 맥락에서 (특히, 다음의 청구항의 맥락에서) 단수 형태의 용어의 사용은 달리 표시되지 않거나 문맥상 모순되지 않는 한, 단수 및 복수의 형태를 모두 포함하는 것으로 해석되어야 한다. "포함하는", "갖는", "구비하는" 및 "함유하는"이라는 용어는 달리 언급되지 않는 한 개방형 용어(즉, "포함하지만 이에 제한되지 않는"을 의미함)로 해석되어야 한다. "연결된"이라는 용어는 수정되지 않고 물리적인 연결을 지칭할 때, 어떤 것이 중간에 개입되더라도 부분적으로 또는 전체적으로 포함되거나, 부착되거나, 또는 함께 결합되는 것으로 해석되어야 한다. 본 개시 내용에서 값의 범위의 언급은 달리 표시되지 않는 한, 범위 내에 속하는 각각의 개별 값을 개별적으로 지칭하는 약칭 방법으로서 기능하고, 각각의 개별 값이 마치 개별적으로 열거되는 것처럼 명세서에 포함되는 것으로 의도된다. 달리 언급되지 않거나 문맥상 모순되지 않는 한, 용어 "세트"(예컨대, "항목들의 세트") 또는 "서브 세트"의 사용은 하나 이상의 멤버를 포함하는 비어 있지 않은 집합체로 해석되어야 한다. 또한, 달리 언급되지 않거나 문맥상 모순되지 않는 한, 대응하는 세트의 "서브 세트"라는 용어는 반드시 대응하는 세트의 적절한 서브 세트를 나타내는 것은 아니지만, 서브 세트 및 해당 세트는 동일할 수 있다.
달리 특별하게 언급되지 않거나 문맥상 명확하게 모순되지 않는 한, "A, B, 및 C 중 적어도 하나" 또는 "A, B, 및 C 중 적어도 하나" 형태의 문구와 같은 결합 언어는 다른 방식으로 항목, 용어 등이 A 또는 B 또는 C일 수 있거나, A 및 B 및 C 세트 중 임의의 비어 있지 않은 서브 세트일 수 있음을 나타내는 데 일반적으로 사용되는 문맥으로 이해된다. 예를 들어, 3 개의 멤버를 갖는 세트의 예시적인 예에서, "A, B, 및 C 중 적어도 하나" 및 "A, B, 및 C 중 적어도 하나"의 결합 문구는 다음 세트 중 임의의 것을 지칭한다: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. 따라서, 이러한 결합 언어는 일반적으로 특정 실시예가 각각 A를 적어도 하나, B를 적어도 하나, 및 C를 적어도 하나 요구함을 의미하는 것으로 의도되지는 않는다.
설명된 프로세스들의 동작은 달리 표시되지 않거나 문맥상 명확하게 모순되지 않는 한 임의의 적절한 순서로 수행될 수 있다. 설명된 프로세스(또는 그 변형 및/또는 이들의 조합)는 실행 가능한 명령어로 구성된 하나 이상의 컴퓨터 시스템의 제어하에 수행될 수 있고, 하드웨어 또는 이들의 조합에 의해, 하나 이상의 프로세서에서 집합적으로 실행되는 코드(예컨대, 실행 가능한 명령어, 하나 이상의 컴퓨터 프로그램, 또는 하나 이상의 애플리케이션)로서 구현될 수 있다. 일부 실시예에서, 코드는, 예를 들어, 하나 이상의 프로세서에 의해 실행 가능한 복수의 명령어를 포함하는 컴퓨터 프로그램의 형태로 컴퓨터 판독 가능 저장 매체에 저장될 수 있다. 일부 실시예에서, 컴퓨터 판독 가능 저장 매체는 비일시적이다.
제공된 임의의 및 모든 예들 또는 예시적인 언어(예컨대, “와 같은”)의 사용은 단지 본 발명의 실시예를 보다 잘 나타내도록 의도된 것에 불과하며, 달리 청구되지 않는 한, 본 발명의 영역에 대한 제한을 두는 것이 아니다. 본 명세서에서 어떠한 언어도 임의의 청구되지 않은 요소를 본 발명의 실시에 필수적인 것으로 나타내는 것으로 해석되어서는 안된다.
본 발명을 수행하기 위해 본 발명자에게 알려진 최상의 모드를 포함하는 본 개시 내용의 실시예가 설명된다. 이들 실시예의 변형은 전술한 설명을 읽으면 본 기술 분야의 통상의 기술자에게는 명백해질 것이다. 본 발명자는 기술자가 이러한 변형을 적절히 이용할 것으로 예상하며, 본 개시 내용의 실시예가 구체적으로 설명된 것과 다르게 실시되도록 의도한다. 따라서, 본 개시 내용의 영역은 적용 가능한 법률에 의해 허용되는 바와 같이 본 명세서에 첨부된 청구항에 열거되는 발명의 대상의 모든 수정례 및 등가물을 포함한다. 더욱이, 모든 가능한 변형에서 전술한 요소들의 임의의 조합은 달리 표시되지 않거나 문맥상 명확하게 모순되지 않는 한 본 개시 내용의 영역에 포함된다.
인용된 간행물, 특허 출원, 및 특허를 포함한 모든 참고 문헌은 각각의 참고 문헌이 개별적으로 그리고 구체적으로 참고로 포함되도록 표시되고 전체적으로 제시된 것과 동일한 정도로 참고로 포함된다.
주목해야 하는 것은, 전술한 실시예가 본 발명을 제한하기보다는 예시하는 것이고, 본 기술 분야의 기술자가 첨부된 청구항에 의해 정의된 본 발명의 범주를 벗어나지 않고 많은 대안의 실시예를 설계할 수 있을 것이라는 것이다. 청구항에서, 괄호 내에 배치된 임의의 참조 부호는 청구항을 제한하는 것으로 해석되어서는 안된다. "포함하는" 및 "포함한다" 등의 단어는 임의의 청구항 또는 명세서 전체에 열거된 것 이외의 요소 또는 단계의 존재를 배제하지는 않는다. 본 명세서에서, "포함한다"는 "구비하거나 구성된다"를 의미하고, "포함하는"은 "구비하거나 구성되는"을 의미한다. 요소의 단일 참조 형태는 그러한 요소의 복수의 형태를 배제하지 않으며 그 반대도 마찬가지이다. 본 발명은 수 개의 별개의 요소를 포함하는 하드웨어 및 적절하게 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 수 개의 수단을 열거하는 디바이스 청구항에서, 이들 수단 중 일부는 하나의 동일한 하드웨어 항목에 의해 구현될 수 있다. 특정 수단들이 서로 다른 종속항들에 열거되어 있다는 단순한 사실은 이러한 수단들의 조합이 더 나은 효과를 가져오는 데 사용될 수 없다는 것을 나타내는 것은 아니다.
요약
본 개시 내용에서 설명되고 제안된 신규 기술은 블록 체인 데이터 구조 내에 저장된 데이터의 무결성을 보장하는 블록 체인의 속성을 방해하지 않고도 블록 체인의 기능을 확장한다. 예를 들어, 이러한 기술은 컴퓨팅 분야, 특히 유효성 검증 조건이 레코드에 임베딩된 블록 체인 트랜잭션 내에 정의되는 디지털 레코드 유효성 검증 분야를 개선할 수 있다. 본 개시 내용에서 설명되고 제안된 기술은, 블록 체인 노드가 블록 체인에서 유효성 검증되는 스마트 계약서를 단순화하여 프로세싱 리소스 사용을 최적화할 수 있게 함으로써 스마트 계약서 생성 및 실행 분야에서의 컴퓨팅 분야를 더욱 개선시킬 수 있다. 추가적으로, 본 개시 내용에서 설명되고 제안된 기술은 스마트 계약서를 2 차 산술 연산 프로그램이 도출될 수 있는 감소된 산술 연산 회로로 변환함으로써 블록 체인 노드의 효율성을 개선시킬 수 있고, 이에 의해 블록 체인 노드가 스마트 계약서를 보다 효율적으로 실행할 수 있게 한다.
더욱이, 본 개시 내용에서 설명되고 제안된 기술은 스마트 계약서를 DSL로부터 GPL로 변환하고 다시 감소된 산술 연산 회로로 변환함으로써, 스마트 계약서가 블록 체인에 커밋되는 경우, 특히 스마트 계약서 세부 사항을 공개적으로 볼 수 있게 되는 것으로부터 발생하는 문제를 극복하는 컴퓨터 기술에 필수적으로 바탕을 둘 수 있으며, 그 결과, 스마트 계약서의 일부 세부 사항이 난독화될 수 있다.

Claims (15)

  1. 제 1 프로그래밍 언어로 인코딩된 조건들의 세트를 획득하는 단계;
    상기 조건들의 세트를 제 2 프로그래밍 언어로 인코딩된 프로그래매틱 조건 세트(programmatic set of conditions)로 변환하는 단계;
    상기 프로그래매틱 조건 세트를 사전 컴파일된 프로그램 코드로 사전 컴파일(precompiling)하는 단계;
    상기 사전 컴파일된 프로그램 코드를 산술 연산 회로로 변환하는 단계;
    감소된 산술 연산 회로를 형성하기 위해 상기 산술 연산 회로를 감소시키는 단계; 및
    상기 감소된 산술 연산 회로를 저장하는 단계를 포함하는
    컴퓨터 구현형 방법.
  2. 제1항에 있어서,
    상기 산술 연산 회로를 감소시키는 단계는 상기 감소된 산술 연산 회로를 생성하기 위해 상기 산술 연산 회로를 최소화하는 단계를 포함하는
    컴퓨터 구현형 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 산술 연산 회로는 지향성 비 주기적 그래프이며, 상기 지향성 비 주기적 그래프는:
    로직 게이트 및 입력을 나타내는 노드들의 세트; 및
    상기 로직 게이트와 상기 입력 사이의 와이어를 나타내는 상기 노드들을 연결하는 엣지들의 세트를 포함하는
    컴퓨터 구현형 방법.
  4. 제3항에 있어서,
    상기 산술 연산 회로는 상기 노드들의 세트의 적절한 서브 세트를 포함하는 로직 서브 모듈을 포함하며; 그리고
    상기 산술 연산 회로를 감소시키는 단계는 상기 산술 연산 회로의 나머지와는 별도로 상기 로직 서브 모듈을 감소시키는 단계를 포함하는
    컴퓨터 구현형 방법.
  5. 제4항에 있어서,
    상기 로직 서브 모듈 내의 로직 게이트 간의 와이어는 1-비트 폭인
    컴퓨터 구현형 방법.
  6. 제4항 또는 제5항에 있어서,
    상기 산술 연산 회로는 상기 노드들의 세트의 다른 서브 세트를 포함하는 다른 로직 서브 모듈을 더 포함하고, 상기 노드들의 서브 세트 및 상기 노드들의 다른 서브 세트는 교차하지 않으며; 그리고
    상기 산술 연산 회로를 감소시키는 단계는 제 1 프로세서 코어를 사용하여 상기 로직 서브 모듈을 감소시키는 것과 동시에 제 2 프로세서 코어를 사용하여 다른 로직 서브 모듈을 감소시키는 단계를 더 포함하는
    컴퓨터 구현형 방법.
  7. 제6항에 있어서,
    계산 리소스 사용을 최적화하기 위한 휴리스틱(heuristic)에 따라 상기 로직 서브 모듈을 상기 제 1 프로세서 코어에 할당하고 상기 다른 로직 서브 모듈을 상기 제 2 프로세서 코어에 할당하는 단계를 더 포함하는
    컴퓨터 구현형 방법.
  8. 제7항에 있어서,
    상기 휴리스틱은 최장 처리 시간 그리디 알고리즘인
    컴퓨터 구현형 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 산술 연산 회로를 감소시키는 단계는:
    상기 산술 연산 회로의 프라임 임플리컨트들의 세트를 결정하는 단계;
    상기 프라임 임플리컨트들의 세트를, 제 1 곱셈 항 및 제 2 곱셈 항을 포함하는 합계의 곱셈(product of sums)으로서 표현하는 단계; 및
    상기 제 1 곱셈 항 및 상기 제 2 곱셈 항을 단순화하는 단계를 포함하는
    컴퓨터 구현형 방법.
  10. 제9항에 있어서,
    상기 제 1 곱셈 항 및 상기 제 2 곱셈 항을 단순화하는 단계는 상기 제 1 곱셈 항 및 상기 제 2 곱셈 항에 불린 최소화 규칙(Boolean minimisation rule)을 적용함으로써 수행되는
    컴퓨터 구현형 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 제 2 프로그래밍 언어는 C++인
    컴퓨터 구현형 방법.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 제 1 프로그래밍 언어는 머신 판독 가능한 금융 계약서를 구성하기 위해 고안된 컴퓨터 프로그래밍 언어인
    컴퓨터 구현형 방법.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서,
    상기 감소된 산술 연산 회로를 기술하는 다항식들의 세트를 포함하는 2 차 프로그램(quadratic program)을 생성하는 단계; 및
    상기 2 차 프로그램의 수행에서 블록 체인 네트워크의 노드에 의해 사용될 파라미터들의 세트를 생성하는 단계를 더 포함하는
    컴퓨터 구현형 방법.
  14. 시스템으로서,
    프로세서; 및
    상기 프로세서에 의해 실행된 결과로서, 상기 시스템이 제1항 내지 제13항 중 어느 한 항에 따른 컴퓨터 구현형 방법을 수행하게 하는 실행 가능한 명령어를 포함하는 메모리를 포함하는
    시스템.
  15. 비일시적 컴퓨터 판독 가능 저장 매체로서,
    상기 비일시적 컴퓨터 판독 가능 저장 매체는, 컴퓨터 시스템의 프로세서에 의해 실행된 결과로서, 상기 컴퓨터 시스템이 적어도 제1항 내지 제13항 중 어느 한 항에 따른 컴퓨터 구현형 방법을 수행하게 하는 실행 가능한 명령어를 저장한
    비일시적 컴퓨터 판독 가능 저장 매체.
KR1020207014209A 2017-11-09 2018-10-29 최적화된 확인 가능한 계산을 위해 실행 가능한 명령어를 단순화하기 위한 시스템 KR20200086284A (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
GB1719998.5 2017-11-30
GBGB1719998.5A GB201719998D0 (en) 2017-11-30 2017-11-30 Computer-Implemented system and method
GBGB1720768.9A GB201720768D0 (en) 2017-12-13 2017-12-13 Computer-implemented system and method
GB1720768.9 2017-12-13
GB1801753.3 2018-02-02
GBGB1801753.3A GB201801753D0 (en) 2018-02-02 2018-02-02 Computer-implemented system and method
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/058432 WO2019092542A1 (en) 2017-11-09 2018-10-29 System for simplifying executable instructions for optimised verifiable computation

Publications (1)

Publication Number Publication Date
KR20200086284A true KR20200086284A (ko) 2020-07-16

Family

ID=64100702

Family Applications (5)

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

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020207014108A KR20200086282A (ko) 2017-11-09 2018-10-29 검증 가능한 계산을 위한 c-형 스마트 계약의 산술 연산 강화

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020207014213A KR20200079503A (ko) 2017-11-09 2018-10-29 확인 키를 변경으로부터 보호하고 정확성 증명의 유효성을 확인하기 위한 시스템
KR1020207014203A KR20200080265A (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) EP4312403A3 (ko)
JP (10) JP7221954B2 (ko)
KR (5) KR20200086282A (ko)
CN (6) CN111316595A (ko)
SG (5) SG11202004148PA (ko)
TW (1) TWI806918B (ko)
WO (5) WO2019092542A1 (ko)
ZA (1) ZA202002575B (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11783679B2 (en) 2014-04-08 2023-10-10 Micro-Gaming Ventures, LLC Location-based wagering via remote devices
US10903997B2 (en) * 2017-10-19 2021-01-26 Autnhive Corporation Generating keys using controlled corruption in computer networks
US20210377041A1 (en) 2017-11-09 2021-12-02 nChain Holdings Limited System for recording verification keys on a blockchain
CN110032568B (zh) * 2018-12-20 2020-05-12 阿里巴巴集团控股有限公司 数据结构的读取及更新方法、装置、电子设备
US20220191037A1 (en) * 2019-03-27 2022-06-16 Koc Universitesi Distributed hash table based blockchain architecture for resource constrained environments
US11711202B2 (en) 2019-05-29 2023-07-25 International Business Machines Corporation Committing data to blockchain based on approximate hash verification
US11570002B2 (en) 2019-05-29 2023-01-31 International Business Machines Corporation Reduced-step blockchain verification of media file
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
US11516000B2 (en) * 2019-05-29 2022-11-29 International Business Machines Corporation Approximate hash verification of unused blockchain output
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 百度在线网络技术(北京)有限公司 区块链中事务请求处理方法、装置、设备和介质
CN111768187A (zh) 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种部署智能合约的方法、区块链节点和存储介质
CA3091660A1 (en) * 2020-08-31 2021-11-03 Polymath Inc. Method, system, and medium for blockchain-enabled atomic settlement
CN112926979A (zh) * 2020-09-07 2021-06-08 陈建芸 结合区块链通信的支付信息处理方法及区块链信息平台
US11029920B1 (en) * 2020-10-21 2021-06-08 Chariot Technologies Lab, Inc. Execution of a conditional statement by an arithmetic and/or bitwise unit
US11456871B2 (en) * 2020-11-03 2022-09-27 Provide Technologies, Inc. System and method for autonomous mapping of enterprise identity
KR102346292B1 (ko) * 2020-11-11 2022-01-03 엘에스웨어(주) 키 정보를 이용한 트랜잭션 분류 시스템 및 방법
KR102346293B1 (ko) * 2020-12-08 2022-01-03 엘에스웨어(주) 공통 키셋정보를 이용한 트랜잭션 분산처리를 위한 블록체인 시스템 및 수행방법
GB2602010A (en) * 2020-12-15 2022-06-22 Nchain Holdings Ltd Generating and validating blockchain transactions
CN113222747B (zh) * 2020-12-31 2024-01-26 上海零数众合信息科技有限公司 一种区块链隐私交易方法
KR102594655B1 (ko) * 2021-01-11 2023-10-27 충남대학교 산학협력단 동적 연산을 통한 검증이 가능한 영지식 증명 시스템 및 증명 방법
US20220417044A1 (en) * 2021-06-25 2022-12-29 Prateek GOEL System and method to manage large data in blockchain
CN113469690B (zh) * 2021-07-23 2024-03-26 佳乔(深圳)投资有限公司 一种基于区块链的交易结算方法
CN113610474B (zh) * 2021-08-16 2023-09-22 傲林科技有限公司 一种基于事件网的库存管理方法和管理系统
US20230298064A1 (en) * 2022-01-26 2023-09-21 Seek Xr, Inc. Systems and methods for facilitating redemption of unique digital asset utility
GB2618106A (en) * 2022-04-27 2023-11-01 Nchain Licensing Ag Messaging protocol for compact script transactions
US11818207B1 (en) * 2022-07-08 2023-11-14 T-Mobile Innovations Llc Methods and systems for ledger based content delivery using a mobile edge computing (MEC) server
CN114978514B (zh) * 2022-07-27 2022-11-01 杭州友恭科技有限公司 密钥管理方法、系统、装置、电子装置和存储介质
US11792259B1 (en) 2022-09-28 2023-10-17 T-Mobile Innovations Llc Methods and systems for distributing rendering across devices in a customer premise
CN115801288B (zh) * 2023-01-10 2023-04-18 南方科技大学 一种基于区块链和零知识证明的验证方法、系统及设备
CN116610362B (zh) * 2023-04-27 2024-02-23 合芯科技(苏州)有限公司 一种处理器指令集译码方法、系统、设备和存储介质
US11882216B1 (en) * 2023-06-08 2024-01-23 Auradine, Inc. End-to-end hardware acceleration for ZKP from witness generation to proof generation

Family Cites Families (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4667290A (en) 1984-09-10 1987-05-19 501 Philon, Inc. Compilers using a universal intermediate language
JPH03126133A (ja) 1989-10-11 1991-05-29 Matsushita Electric Ind Co Ltd コンパイラ処理方法
JPH05252336A (ja) 1992-03-04 1993-09-28 Toshiba Corp 画像形成装置
US5499191A (en) 1992-06-15 1996-03-12 Minc Incorporated Multi-level logic optimization in programmable logic devices
US5297150A (en) 1992-06-17 1994-03-22 International Business Machines Corporation Rule-based method for testing of programming segments
US8639625B1 (en) * 1995-02-13 2014-01-28 Intertrust Technologies Corporation Systems and methods for secure transaction management and electronic rights protection
JPH08305547A (ja) * 1995-05-11 1996-11-22 Oki Electric Ind Co Ltd Pldによるコンピュータおよびコンパイラおよびオペレーティングシステム
US5920830A (en) 1997-07-09 1999-07-06 General Electric Company Methods and apparatus for generating test vectors and validating ASIC designs
US6519754B1 (en) 1999-05-17 2003-02-11 Synplicity, Inc. Methods and apparatuses for designing integrated circuits
EP1283422A1 (en) 2001-08-07 2003-02-12 Lucent Technologies Inc. Testbench for the validation of a device under test
AU2002347870A1 (en) * 2001-10-11 2003-04-22 California Institute Of Technology Method and system for compiling circuit designs
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
ES2509345T3 (es) * 2005-12-13 2014-10-17 Koninklijke Philips N.V. Cálculo de protocolo de descifrado de umbral de seguridad
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
US20100067686A1 (en) 2006-10-30 2010-03-18 Kazuhiro Minematsu Shared key block cipher apparatus, 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.
US8543885B2 (en) 2007-11-18 2013-09-24 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 日本電気株式会社 符号化装置、誤り訂正符号構成方法およびそのプログラム
EP2721766A4 (en) 2011-03-18 2015-01-28 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.
RU2015121749A (ru) * 2012-11-07 2016-12-27 Конинклейке Филипс Н.В. Компилятор, генерирующий безоператорный код
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
PL3073670T4 (pl) 2015-03-27 2021-08-23 Black Gold Coin, Inc. System i sposób osobistej identyfikacji i weryfikacji
WO2016161073A1 (en) * 2015-03-31 2016-10-06 Nasdaq, Inc. Systems and methods of blockchain transaction recordation
US10911235B2 (en) * 2015-03-31 2021-02-02 Nec Corporation 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 阿里巴巴集团控股有限公司 分布式流计算系统、方法和装置
EP3320475B1 (en) 2015-07-10 2020-03-04 Nec Corporation 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
US11648754B2 (en) * 2015-09-30 2023-05-16 Sekisui Chemical Co., Ltd. Interlayer for laminated glass, and laminated glass
US20180331832A1 (en) 2015-11-05 2018-11-15 Allen Pulsifer Cryptographic Transactions System
US10269012B2 (en) 2015-11-06 2019-04-23 Swfl, Inc. Systems and methods for secure and private communications
US10048952B2 (en) 2015-11-11 2018-08-14 Oracle International Corporation Compiler optimized data model evaluation
US20170140408A1 (en) 2015-11-16 2017-05-18 Bank Of America Corporation Transparent self-managing rewards program using blockchain and smart contracts
FR3043811B1 (fr) 2015-11-16 2017-11-10 Morpho Procede d'identification d'une entite
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
JP6877448B2 (ja) * 2016-02-23 2021-05-26 エヌチェーン ホールディングス リミテッドNchain Holdings Limited 分散ハッシュテーブル及びブロックチェーンを用いてコンピュータソフトウェアを保証する方法及びシステム
GB2561729A (en) 2016-02-23 2018-10-24 Nchain Holdings Ltd Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system
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
WO2017148527A1 (en) 2016-03-03 2017-09-08 Nec Europe Ltd. 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
WO2017173399A1 (en) 2016-03-31 2017-10-05 Clause, Inc. System and method for creating and executing data-driven legal contracts
US10545739B2 (en) 2016-04-05 2020-01-28 International Business Machines Corporation LLVM-based system C compiler for architecture synthesis
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
KR102608099B1 (ko) 2016-04-11 2023-12-01 엔체인 홀딩스 리미티드 블록체인에서 안전한 피어-투-피어 통신을 위한 방법
US20170300897A1 (en) * 2016-04-14 2017-10-19 American Express Travel Related Services Company, Inc. Systems and Methods for an Electronic Wallet Payment Tool
US10529041B2 (en) * 2016-04-18 2020-01-07 Rs Ltd. System and method for managing transactions in dynamic digital documents
TWI770022B (zh) * 2016-04-29 2022-07-11 安地卡及巴布達商區塊鏈控股有限公司 電腦實施之控制方法、系統及控制系統
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 索尼公司 基于区块链的系统以及系统中的电子设备和方法
FR3052286B1 (fr) 2016-06-06 2018-06-15 Morpho Procede de verification d'un droit d'acces d'un individu
US10447478B2 (en) 2016-06-06 2019-10-15 Microsoft Technology Licensing, Llc Cryptographic applications for a blockchain system
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 贵州大学 一种基于比特币协议的首价密封交易方法
US10268829B2 (en) 2017-08-11 2019-04-23 Dragonchain, Inc. Security systems and methods based on cryptographic utility token inventory tenure
US10135607B1 (en) * 2017-08-11 2018-11-20 Dragonchain, Inc. Distributed ledger interaction systems and methods
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
US20210377041A1 (en) 2017-11-09 2021-12-02 nChain Holdings Limited System for recording verification keys on a blockchain

Also Published As

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

Similar Documents

Publication Publication Date Title
JP7477674B2 (ja) 最適化された検証可能な計算のための実行可能命令を簡略化するためのシステム
JP7493571B2 (ja) トラストレスな決定論的ステートマシン
US11941624B2 (en) Concurrent state machine processing using a blockchain
Covaci et al. NECTAR: non-interactive smart contract protocol using blockchain technology
TWI837103B (zh) 電腦實施方法及系統

Legal Events

Date Code Title Description
E902 Notification of reason for refusal