KR20200079503A - 확인 키를 변경으로부터 보호하고 정확성 증명의 유효성을 확인하기 위한 시스템 - Google Patents
확인 키를 변경으로부터 보호하고 정확성 증명의 유효성을 확인하기 위한 시스템 Download PDFInfo
- Publication number
- KR20200079503A KR20200079503A KR1020207014213A KR20207014213A KR20200079503A KR 20200079503 A KR20200079503 A KR 20200079503A KR 1020207014213 A KR1020207014213 A KR 1020207014213A KR 20207014213 A KR20207014213 A KR 20207014213A KR 20200079503 A KR20200079503 A KR 20200079503A
- Authority
- KR
- South Korea
- Prior art keywords
- script
- transaction
- computer
- blockchain
- implemented method
- Prior art date
Links
- 230000008859 change Effects 0.000 title description 3
- 238000010200 validation analysis Methods 0.000 title description 3
- 238000013515 script Methods 0.000 claims abstract description 196
- 238000012795 verification Methods 0.000 claims abstract description 57
- 238000000034 method Methods 0.000 claims description 66
- 238000012790 confirmation Methods 0.000 claims description 31
- 230000015654 memory Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 2
- 238000004364 calculation method Methods 0.000 abstract description 16
- 238000005516 engineering process Methods 0.000 abstract description 9
- 238000004422 calculation algorithm Methods 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 18
- 238000011156 evaluation Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 15
- 238000012546 transfer Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 238000005065 mining Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- BQCADISMDOOEFD-UHFFFAOYSA-N Silver Chemical compound [Ag] BQCADISMDOOEFD-UHFFFAOYSA-N 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 229910052709 silver Inorganic materials 0.000 description 3
- 239000004332 silver Substances 0.000 description 3
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000017105 transposition Effects 0.000 description 2
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 1
- 241000238876 Acari Species 0.000 description 1
- OAICVXFJPJFONN-UHFFFAOYSA-N Phosphorus Chemical group [P] OAICVXFJPJFONN-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000013259 porous coordination polymer Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013518 transcription Methods 0.000 description 1
- 230000035897 transcription Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3218—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/423—Preprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/405—Establishing or using transaction specific rules
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/0442—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0877—Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3218—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
- H04L9/3221—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs interactive zero-knowledge proofs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/127—Trusted platform modules [TPM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/34—Encoding or coding, e.g. Huffman coding or error correction
-
- H04L2209/38—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Strategic Management (AREA)
- Finance (AREA)
- General Business, Economics & Management (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Power Engineering (AREA)
- Mathematical Physics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Mathematical Optimization (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)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Executing Machine-Instructions (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
발명은 합의 기반 블록체인과 같은 분산 원장 기술에 관련된다. 블록체인 트랜잭션은 부담부 리소스가 사용(가령, 부담부 리소스의 소유권/제어를 전이하는 것)될 수 있기 전에 이행되어야 하는 조건의 세트를 인코딩하는 잠금 스크립트에 의해 부담부로 된 디지털 리소스를 포함할 수 있다. 작업자(가령, 컴퓨터 시스템)는 잠금해제 스크립트의 일부로서 인코딩된 증명을 생성하는 하나 이상의 계산을 수행한다. 확인 알고리즘은 트랜잭션의 디지털 자산이 전송되어야 함을 확인하기 위해 증명, 확인 키, 그리고 작업자와 연관된 암호학적 자료(가령, 디지털 서명)와 같은 추가적인 데이터를 활용한다. 이 트랜잭션의 검증의 결과로서, 임의의 제3자는 계약을 재실행하기보다 정확하게 계약이 실행되었음을 체크할 수 있는바, 계산 전력을 절감한다.
Description
본 발명은 일반적으로 블록체인 기술에 관련되고 더욱 구체적으로 확인 키(verification key)를 변경으로부터 보호하고 정확성 증명(proof of correctness)의 유효성(validity)을 확인하기 위해 잠금 스크립트(locking script)를 활용함으로써 블록체인 상에서의 영 지식(zero-knowledge) 프로토콜의 실행을 가능하게 하는 것에 관련된다. 이 발명은 블록체인 네트워크를 통하여 수행되는 전자적 전이(electronic transfer)에 관한 보안을 시행하기 위해 암호학적(cryptographic) 및 수학적 기법을 또한 활용한다. 발명은 스마트 계약(smart contract) 생성 및 실행에서의 사용에 특히 적합하나, 이에 한정되지 않는다.
이 문헌에서, 용어 '블록체인'은 몇몇 유형의 전자적인, 컴퓨터 기반의 분산 원장(distributed ledger) 중 임의의 것을 가리킬 수 있다. 이는, 합의(consensus) 기반 블록체인 및 트랜잭션 체인(transaction-chain) 기술, 허가형(permissioned) 및 비허가형(un-permissioned) 원장, 공유형(shared) 원장 및 이들의 변형을 포함하나, 이에 한정되지 않는다. 비록 다른 블록체인 구현이 제안되고 개발되었기는 하나, 블록체인 기술의 가장 널리 알려진 애플리케이션은 비트코인 원장이다. 편의 및 예시의 목적으로 본 개시에서 기술된 기술의 유용한 애플리케이션(application)으로서 비트코인이 언급될 수 있으나, 비트코인은 본 개시에 기술된 기술이 적용될 수 있는 많은 애플리케이션 중 하나일 뿐이다. 그러나, 발명은 비트코인 블록체인과의 사용에 한정되지 않는데; 비상업적 애플리케이션을 포함하는, 대안적인 블록체인 구현 및 프로토콜이 본 발명의 범위 내에 또한 속한다는 점에 유의하여야 한다.
블록체인은, 결국 트랜잭션 및 다른 정보로 구성될 수 있는 블록으로 구성된, 컴퓨터 기반의 탈중앙화된(decentralized) 분산된(distributed) 시스템으로서 구현되는 피어 대 피어(peer-to-peer) 전자적 원장이다. 몇몇 예에서, "블록체인 트랜잭션"은 조건의 세트 및 데이터를 포함하는 필드 값의 구조화된 모음(structured collection)을 인코딩하는 입력 메시지를 가리킨다(조건의 세트의 이행(fulfilment)은 필드의 세트가 블록체인 데이터 구조에 기입되기 위한 전제조건임). 예를 들어, 비트코인에 있어서 각각의 트랜잭션은 블록체인 시스템 내의 참여자 간의 디지털 자산(digital asset)의 제어의 전이(transfer of control)를 인코딩하는 데이터 구조이며, 적어도 하나의 입력 및 적어도 하나의 출력을 포함한다. 몇몇 실시예에서, "디지털 자산"은 사용할 권리와 연관된 이진(binary) 데이터를 가리킨다. 디지털 자산의 예는 비트코인, 이더(ether) 및 라이트코인(Litecoin)을 포함한다. 몇몇 구현에서, 디지털 자산의 제어를 전이하는 것은 제1 개체로부터 제2 개체에 디지털 자산의 적어도 일부분을 재연관시킴으로써 수행될 수 있다. 블록체인에 그 개시 이래 기입된 모든 트랜잭션의 영속적인 불변의 기록을 생성하기 위하여 블록이 함께 연쇄되게(chained) 되도록 블록체인의 각각의 블록은 이전 블록의 해시(hash)를 포함할 수 있다.
몇몇 예에서, "스택 기반의 스크립팅 언어"(stack-based scripting language)는 다양한 스택 기반 또는 스택 지향(stack-oriented) 실행 모델 및 동작을 지원하는 프로그래밍 언어를 가리킨다. 즉, 스택 기반의 스크립팅 언어는 스택을 활용할 수 있다. 스택으로써, 값이 스택의 최상부 상에 푸시되거나(pushed) 스택의 최상부로부터 팝될(popped) 수 있다. 스택에 수행되는 다양한 동작은 스택의 최상부에 또는 이로부터 값 중 하나 이상을 푸시하거나 팝하는 것을 초래할 수 있다. 예를 들어, OP_EQUAL 동작은 스택으로부터 최상부의 두 아이템을 팝하고, 그것들을 비교하며, 결과(가령, 만일 같으면 1 또는 만일 같지 않으면 0)를 스택의 최상부에 푸시한다. 스택에 수행되는 다른 동작, 예컨대 OP_PICK은, 아이템으로 하여금 스택의 최상부가 아닌 위치로부터 선택될 수 있도록 할 수 있다. 본 실시예 중 몇몇에 의해 쓰이는 몇몇 스크립팅 언어에서, 적어도 2개의 스택이 있을 수 있다: 주 스택(main stack) 및 대체 스택(alternate stack). 스크립팅 언어의 몇몇 동작은 아이템을 하나의 스택의 최상부로부터 다른 스택의 최상부로 이동시킬 수 있다. 예를 들어, OP_TOALTSTACK은, 주 스택의 최상부로부터 대체 스택의 최상부로 값을 이동시킨다. 스택 기반 스크립팅 언어는, 몇몇 경우에, 엄격하게 후입 선출(Last-In-First-Out: LIFO)인 방식에서의 동작에만 한정되지는 않을 수 있음에 유의하여야 한다. 예를 들어, 스택 기반 스크립팅 언어는 스택 내의 제n 아이템을 최상부로 복사하거나 이동시키는 동작(가령, 비트코인에서, 각각 OP_PICK 및 OP_ROLL)을 지원할 수 있다. 스택 기반 스크립팅 언어로 작성된 스크립트는 벡터(vector), 리스트(list), 또는 스택과 같은 임의의 적합한 데이터 구조를 사용하여 구현될 수 있는 논리적 스택 상으로 푸시될 수 있다.
트랜잭션이 블록체인에 기입되기 위해서, 그것은 "검증되어야"(validated) 한다. 네트워크 노드(채굴 노드)는 각각의 거래가 유효함을 보장하기 위하여 작업을 수행하는데, 무효한(invalid) 거래는 네트워크로부터 거부된다. 노드는 다른 노드와는 상이한 유효성에 대한 표준을 가질 수 있다. 블록체인에서의 유효성이 합의 기반이므로, 트랜잭션은 만일 대다수의 노드가 트랜잭션이 유효함에 동의하는 경우 유효하다고 간주된다. 노드 상에 설치된 소프트웨어 클라이언트는 UTXO 잠금(locking) 및 잠금해제(unlocking) 스크립트를 실행함으로써 부분적으로 UTXO를 참조하는 트랜잭션에 대해 이 검증 작업을 수행한다. 만일 잠금 및 잠금해제 스크립트의 실행이 참(TRUE)으로 평가되고, 적용가능하다면, 다른 검증 조건이 충족되는 경우, 트랜잭션은 노드에 의해 검증된다. 검증된 트랜잭션은 다른 네트워크 노드에 전파되니, 그래서 채굴 노드는 트랜잭션을 블록체인에 포함시키기로 선택할 수 있다. 그러므로, 트랜잭션이 블록체인에 기입되기 위해서, 그것은 i) 트랜잭션을 수신하는 첫 번째 노드에 의해 검증되어야 하고 - 만일 트랜잭션이 검증되면, 노드는 그것을 네트워크 내의 다른 노드에 중계함; ii) 채굴 노드에 의해 이룩된 새로운 블록에 추가되어야 하며; iii) 채굴되어야, 즉 과거의 트랜잭션의 공개 원장(public ledger)에 추가되어야 한다. 트랜잭션은 트랜잭션을 실제로 비가역적(irreversible)이게 하기 위해 충분한 수의 블록이 블록체인에 추가된 경우에 확증된다(confirmed)고 간주된다.
블록체인 기술은 암호화폐(cryptocurrency) 구현의 사용으로 가장 널리 알려져 있지만, 새로운 시스템을 구현하기 위하여 디지털 기업가는 비트코인이 기반을 둔 암호학적 보안 시스템 및 블록체인 상에 저장될 수 있는 데이터 양자 모두의 사용을 살펴보기 시작했다. 암호화폐 부문에 한정되지 않는 자동화된 직무 및 프로세스를 위해 블록체인이 사용될 수가 있다면 대단히 유리할 것이다. 그러한 솔루션은 그것의 애플리케이션에서 더욱 다방면적이면서도 블록체인의 이득(가령 이벤트의 영속적인 부당변경 방지 기록(tamper proof record), 분산된 처리 등)을 활용할 수 있을 것이다.
본 개시는 하나 이상의 블록체인 기반 컴퓨터 프로그램의 기술적 측면을 기술한다. 블록체인 기반 컴퓨터 프로그램은 블록체인 트랜잭션 내에 기록된 머신 판독가능 및 실행가능 프로그램일 수 있다. 블록체인 기반 컴퓨터 프로그램은 결과를 산출하기 위해서 입력을 처리할 수 있는 규칙을 포함할 수 있는데, 이는 이후 그 결과에 의존하여 행동(action)이 수행되도록 할 수 있다. 현재의 연구의 한 영역은 "스마트 계약"의 구현을 위한 블록체인 기반 컴퓨터 프로그램의 사용이다. 자연 언어로 기입될 전통적인 계약과 달리, 스마트 계약은 머신 판독가능 계약 또는 동의의 조항의 실행을 자동화하기 위해 설계된 컴퓨터 프로그램일 수 있다.
블록체인 관련 관심의 다른 영역은 블록체인을 통해 실세계 개체를 표현하고 전이하기 위한 '토큰'(token) (또는 '컬러드 코인'(coloured coin))의 사용이다. 잠재적으로 민감한 또는 시크릿(secret) 아이템은 어떤 분간가능한 의미나 가치도 갖지 않는 토큰에 의해 나타내어질 수 있다. 그러므로 토큰은 실세계 아이템이 블록체인으로부터 참조될 수 있도록 하는 식별자(identifier)로서의 역할을 한다.
실시예에서, 특정 개체와의 상호작용이 스마트 계약에서의 특정 단계에서 인코딩될 수 있지만, 스마트 계약은 달리 자동으로 실행되고 자가 시행될(self-enforced) 수 있다. 그것은 머신 판독가능 및 실행가능하다. 몇몇 예에서, 자동 실행은 UTXO의 전이를 가능하게 하기 위해 성공적으로 수행되는 스마트 계약의 실행을 가리킨다. 그러한 예에서, UTXO의 전이를 야기할 수 있는 "개체"는 어떤 시크릿을 알고 있음을 증명하도록 요구되지 않고서 잠금해제 스크립트를 생성할 수 있는 개체를 가리킴에 유의하시오. 다시 말해, 잠금해제 트랜잭션은 데이터의 소스(source)(가령, 잠금해제 트랜잭션을 생성한 개체)가 암호학적 시크릿(가령, 개인 비대칭 키(private asymmetric key), 대칭 키(symmetric key) 등)에 대한 액세스(access)를 가짐을 확인하지 않고서 검증될 수 있다. 또한, 그러한 예에서, 자가 실행은 블록체인 네트워크의 검증 노드가 제약에 따라 잠금해제 트랜잭션을 시행하게 됨을 가리킨다. 몇몇 예에서, UTXO를 "잠금해제함"(또한 UTXO를 "지출함"으로 알려짐)은 기술적 의미로 사용되는바, UTXO를 참조하고 유효한 것으로서 실행되는 잠금해제 트랜잭션을 생성하는 것을 가리킨다.
블록체인 트랜잭션 출력은 잠금 스크립트와, 비트코인과 같은 디지털 자산의 소유권에 관한 정보를 포함한다. 부담(encumbrance)으로 또한 지칭될 수 있는 잠금 스크립트는 UTXO를 전이하기 위해서 충족되도록 요구되는 조건을 명시함으로써 디지털 자산을 "잠근다". 예를 들어, 잠금 스크립트는 연관된 디지털 자산을 잠금해제하기 위해 잠금해제 스크립트 내에 어떤 데이터가 제공될 것을 요구할 수가 있다. 잠금 스크립트는 또한 비트코인에서 "scriptPubKey"로 알려져 있다. 디지털 자산을 잠금해제하기 위해 데이터를 제공할 것을 당사자에게 요구하기 위한 기법은 잠금 스크립트 내부에 데이터의 해시를 임베딩하는 것(embedding)을 수반한다.
그러므로, 이들 측면 중 하나 이상에서 블록체인 기술을 개선하는 방법 및 시스템을 제공하는 것이 바람직하다. 그러한 개선된 해결안이 이제 안출되었다. 그러므로, 본 발명에 따르면 부기된 청구항에 정의된 바와 같은 방법이 제공된다.
그러한 개선된 해결안이 이제 안출되었다.
그러므로, 본 발명에 따르면 부기된 청구항에 정의된 바와 같은 시스템 및 방법이 제공된다.
발명에 따르면 블록체인 네트워크의 노드를 위한 컴퓨터 구현형 방법이 제공될 수 있는데, 컴퓨터 구현형 방법은 다음을 포함한다: 디지털 자산의 표시(indication)와, 디지털 자산의 제어를 전이하기 위한 조건의 세트를 인코딩하는 잠금 스크립트를 포함하는 트랜잭션의 트랜잭션 출력을 생성하는 것(조건의 세트의 만족은 확인 키(verification key) 및 증명(proof)에 적어도 부분적으로 기반하여 판정될 것임); 트랜잭션의 트랜잭션 입력을 생성하는 것(트랜잭션 입력은: 트랜잭션 출력과 연관된 식별자; 및 증명을 포함하는 잠금해제 스크립트를 포함함); 및 잠금 스크립트 및 잠금해제 스크립트에 적어도 부분적으로 기반하여 조건의 세트가 만족됨을 확인하는 것; 및 조건의 세트의 만족을 확인하는 것에 응답하여 디지털 자산의 제어를 전이하는 것.
확인 키는 유한 필드(finite field)의 제1 복수의 요소를 포함할 수 있고 증명은 유한 필드의 제2 복수의 요소를 포함한다.
필드의 요소는 타원 곡선(elliptic curve) 상의 점일 수 있다.
유한 필드의 요소는 압축된 포맷(compressed format)으로 인코딩될 수 있다.
바람직하게, 방법은 클라이언트(client)가 클라이언트와 연관된 제1 디지털 인증서(certificate) 및 확인 키로써 트랜잭션 입력을 인코딩하는 것 및 작업자(worker)가 작업자와 연관된 제2 디지털 인증서 및 증명으로써 트랜잭션 입력을 인코딩하는 것을 포함할 수 있다.
잠금 스크립트는 조건의 세트 중의 조건이 잠금해제 스크립트에 의해 불만족됨에 부수하여(contingent), 디지털 자산의 제공자를 위해 디지털 자산을 수복하는(reclaim) 명령어를 포함할 수 있다.
잠금 스크립트는 리딤 스크립트(redeem script)를 더 포함할 수 있는데, 확인 키 및 리딤 스크립트는 조건의 세트의 적어도 서브세트의 만족을 판정하기 위해 충분한 정보를 인코딩하고; 잠금 스크립트는 리딤 스크립트의 해시가 사전결정된 값과 매칭됨(match)을, 조건의 세트의 하나의 조건으로서, 인코딩한다.
리딤 스크립트는 사전결정된 최대 크기, 예컨대 520 바이트(bytes)보다 작거나 같을 수 있다.
잠금해제 스크립트는 확인 키의 하나 이상의 요소를 포함할 수 있고, 리딤 스크립트는 확인의 나머지 요소 중 적어도 일부를 포함할 수 있다. 잠금해제 스크립트 및 리딤 스크립트는 집합적으로(collectively) 확인 키를 포함할 수 있다.
트랜잭션의 잠금 스크립트, 잠금해제 스크립트 및 리딤 스크립트는 비트코인 기반 프로토콜의 스크립트 해시에의 지불(Pay-to-Script-Hash) 트랜잭션 또는 이의 변형에 따를 수 있다.
트랜잭션은 비트코인 프로토콜과 같은 블록체인 기반 프로토콜의 표준(standard) 트랜잭션에 따를 수 있다.
스크립트, 예컨대 잠금 스크립트 및 잠금해제 스크립트는, 스택 기반 스크립팅 언어로 커맨드 및 데이터로써 인코딩될 수 있는데, 커맨드 및 데이터는 후입선출(last-in-first-out) 순서로 스택 상에 놓인다.
조건의 세트는 하나 이상의 이선형(bilinear) 제약을 포함할 수 있다.
다음을 포함하는 시스템을 제공하는 것이 또한 바람직하다: 프로세서(processor); 및 프로세서에 의한 실행의 결과로서, 시스템으로 하여금 청구된 바와 같은 방법 중 임의의 것을 수행하게 하는 실행가능 명령어를 포함하는 메모리.
컴퓨터 시스템의 하나 이상의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 청구된 바와 같은 방법 중 임의의 것을 적어도 수행하게 하는 실행가능 명령어가 저장된 비일시적 컴퓨터 판독가능 저장 매체(non-transitory computer-readable storage medium)를 제공하는 것이 또한 바람직하다.
발명은 블록체인을 통한 디지털 자산의 교환 또는 전이를 제어하기 위한 제어 방법/시스템으로서, 그리고/또는 확인 방법/시스템으로서 기술될 수 있다. 몇몇 실시예에서, 디지털 자산은 암호화폐의 일부분 또는 토큰이다. 아래에서 설명되는 바와 같이, 발명은 또한 블록체인 네트워크 또는 플랫폼을 통해 동작을 수행하는 새로운, 개선된, 그리고 유리한 방식을 위한 안전한 방법/시스템으로서 기술될 수 있다.
본 발명의 이들 및 다른 양상은 본 문서에 기술된 실시예로부터 명백하고 이를 참조하여 설명될 것이다. 오직 예로서, 그리고 첨부된 도면을 참조하여, 본 발명의 실시예가 이제 기술될 것인데, 첨부된 도면에서,
도 1은 다양한 실시예가 구현될 수 있는 블록체인 환경을 예시하고,
도 2는 다양한 실시예에 따라 프로토콜을 구현하는 데에 활용될 수 있는 컴퓨팅 환경을 예시하며,
도 3은 확인가능한 계산(verifiable computation)의 수행에 적합한 환경의 도해를 예시하고,
도 4는 실시예에 따라, 잠금 또는 잠금해제 스크립트와 같은 블록체인 스크립트와의 사용에 적합한 압축된 및 압축되지 않은 인코딩을 사용하여 타원 곡선 상의 점이 나타내어지는 예시적인 도해를 예시하며,
도 5는 클라이언트가 증명의 검증에서 사용될 확인 키를 공급하는 도해를 예시하고,
도 6는 작업자가 증명의 검증에서 사용될 확인 키를 공급하는 도해를 예시하며,
도 7은 실시예에 따라 리딤 스크립트를 생성하기 위한 프로세스(700)의 도해를 예시하고,
도 8은 본 개시의 적어도 하나의 실시예를 실시하는 데에 사용될 수 있는 컴퓨팅 디바이스를 예시한다.
도 1은 다양한 실시예가 구현될 수 있는 블록체인 환경을 예시하고,
도 2는 다양한 실시예에 따라 프로토콜을 구현하는 데에 활용될 수 있는 컴퓨팅 환경을 예시하며,
도 3은 확인가능한 계산(verifiable computation)의 수행에 적합한 환경의 도해를 예시하고,
도 4는 실시예에 따라, 잠금 또는 잠금해제 스크립트와 같은 블록체인 스크립트와의 사용에 적합한 압축된 및 압축되지 않은 인코딩을 사용하여 타원 곡선 상의 점이 나타내어지는 예시적인 도해를 예시하며,
도 5는 클라이언트가 증명의 검증에서 사용될 확인 키를 공급하는 도해를 예시하고,
도 6는 작업자가 증명의 검증에서 사용될 확인 키를 공급하는 도해를 예시하며,
도 7은 실시예에 따라 리딤 스크립트를 생성하기 위한 프로세스(700)의 도해를 예시하고,
도 8은 본 개시의 적어도 하나의 실시예를 실시하는 데에 사용될 수 있는 컴퓨팅 디바이스를 예시한다.
우선 도 1이 참조될 것인데, 이는 본 개시의 실시예에 따라 블록체인과 연관된 예시적인 블록체인 네트워크(100)를 보여준다. 실시예에서, 예시적인 블록체인 네트워크(100)는 피어 대 피어의 분산된 전자 디바이스로서 구현된 블록체인 노드를 포함하는데, 각각은 노드(102)의 운영자 간에 적어도 부분적으로 동의된 블록체인 프로토콜을 따르는 동작을 수행하는 소프트웨어 및/또는 하드웨어의 인스턴스(instance)를 가동한다(running). 몇몇 예에서, "노드"는 블록체인 네트워크 간에 분산된 피어 대 피어 전자 디바이스를 가리킨다. 블록체인 프로토콜의 예는 비트코인 프로토콜이다.
몇몇 실시예에서, 노드(102)는 임의의 적합한 컴퓨팅 디바이스로 (가령, 데이터 센터 내의 서버에 의해, 클라이언트 컴퓨팅 디바이스(가령, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트폰 등)에 의해, 컴퓨팅 리소스 서비스 제공자의 분산된 시스템 내의 여러 컴퓨팅 디바이스에 의해, 또는 도 8의 컴퓨팅 디바이스(800)와 같은 임의의 적합한 전자 클라이언트 디바이스에 의해) 구성될 수 있다. 몇몇 실시예에서, 노드(102)는 제안된(proposed) 트랜잭션, 예컨대 트랜잭션(104)을 나타내는 데이터 메시지 또는 객체를 수신하기 위해 입력부를 갖는다. 노드는, 몇몇 실시예에서, 그것이 유지하는 정보에 대해, 예컨대 트랜잭션(104)의 상태의 정보에 대해, 질의를 받을 수 있다(queryable).
도 1에 도시된 바와 같이, 노드(102) 중 일부는 노드(102) 중 하나 이상의 다른 것에 통신가능하게 커플링된다(communicatively coupled). 그러한 통신가능한 커플링은 유선 또는 무선 통신 중 하나 이상을 포함할 수 있다. 실시예에서, 노드(102)는 각각 블록체인 내의 모든 트랜잭션의 "원장"(ledger)의 적어도 일부분을 유지한다. 이 방식으로, 원장은 분산 원장일 것이다. 원장에 영향을 미치는 노드에 의해 처리된 트랜잭션은 원장의 무결성(integrity)이 유지되도록 다른 노드 중 하나 이상에 의해 확인가능하다.
어느 노드(102)가 어느 다른 노드와 통신할 수 있는지에 관해서라면, 노드 간에 전해지는 메시지가, 그 메시지는 포워딩되어야(forwarded) 한다고 블록체인 프로토콜이 나타내는 것이라고 가정할 때, 예시적인 블록체인 네트워크(100)(또는 그것의 어떤 상당 부분) 도처에 전파될 수 있도록 예시적인 블록체인 네트워크(100) 내의 노드 각각은 노드(102) 중 하나 이상의 다른 것과 통신할 수 있다는 것으로 충분할 수 있다. 하나의 그러한 메시지는 노드(102) 중 하나, 예컨대 노드(102A)에 의한 제안된 트랜잭션의 공개(publication)(이는 이후에 경로(106)와 같은 경로를 따라 전파될 것임)일 수 있다. 다른 그러한 메시지는 블록체인 상에의 포함을 위해 제안된 새로운 블록의 공개일 수 있다.
실시예에서, 노드(102) 중 적어도 일부는 복잡한 계산, 예컨대 암호학적 문제를 푸는 것을 수행하는 채굴 노드이다. 암호학적 문제를 푸는 채굴 노드는 블록체인을 위해 새로운 블록을 생성하고 새로운 블록을 노드(102) 중 다른 것에 브로드캐스트한다(broadcast). 노드(102) 중 다른 것은 채굴 노드의 작업을 확인하고, 확인 시에, 블록을 블록체인 내에 (가령, 그것을 블록체인의 분산 원장에 추가함으로써) 수용한다. 몇몇 예에서, 블록은, 흔히 이전의 블록의 "지문"(fingerprint)(가령, 해시) 및 타임스탬프(timestamp)로써 마킹된(marked) 트랜잭션의 그룹이다. 이 방식으로, 각각의 블록은 이전의 블록에 연계되게(linked) 될 수 있는바, 이로써 블록체인 내의 블록을 연계하는 "체인"(chain)을 생성한다. 실시예에서, 노드(102)의 합의에 의해 블록체인에 유효 블록이 추가된다. 또한 몇몇 실시예에서, 블록체인은 검증된 블록의 리스트를 포함한다.
실시예에서, 노드(102) 중 적어도 일부는 본 개시에 기술된 바와 같이 트랜잭션을 검증하는 검증 노드로서 동작한다. 몇몇 예에서, 트랜잭션은 디지털 자산의 소유권의 증명 및 디지털 자산의 소유권/제어를 수용하거나 전이하기 위한 조건을 제공하는 데이터를 포함한다. 몇몇 예에서, "잠금해제 트랜잭션"은 이전의 트랜잭션의 UTXO에 의해 나타내어진, 디지털 자산의 적어도 일부분을, 블록체인 주소(address)와 연관된 개체에 재연관시키는 블록체인 트랜잭션을 가리킨다. 몇몇 예에서, "이전의 트랜잭션"은 잠금해제 트랜잭션에 의해 참조되는 UTXO를 포함한 블록체인 트랜잭션을 가리킨다. 몇몇 실시예에서, 트랜잭션은 소유권/제어가 전이될("잠금해제될") 수 있기 전에 이행되어야 하는 조건으로써 트랜잭션에 부담을 붙이는(encumber) "잠금 스크립트"를 포함한다.
몇몇 실시예에서, 블록체인 주소는 개체(이에 디지털 자산의 적어도 일부분의 제어가 전이되고/재연관되고 있음)와 연관된 문자숫자(alphanumeric) 부호의 스트링(string)이다. 몇몇 실시예에서 구현된 몇몇 블록체인 프로토콜에서, 개체와 연관된 공개 키 및 블록체인 주소 간에 일대일 대응관계가 있다. 몇몇 실시예에서, 트랜잭션의 검증은 잠금 스크립트 및/또는 잠금해제 스크립트 내에 명시된 하나 이상의 조건을 검증하는 것을 수반한다. 트랜잭션(104)의 성공적인 검증 시에, 검증 노드는 트랜잭션(104)을 블록체인에 추가하고 그것을 노드(102)에 분산한다.
본 문서에서 기술된 시스템 및 방법은 확인 키 를 변경으로부터 보호하는 잠금 스크립트를 가능하게 하고 증명 의 유효성을 체크하는바, 이로써 트랜잭션 검증 동안 블록체인 상에서의 영 지식 프로토콜의 실행을 가능하게 하는 것에 관련된다.
확인가능한 계산은 계산 증명의 발생을 가능하게 하는 기법이다. 실시예에서, 그러한 기법은 입력 x에 대한 함수 f의 평가(evaluation)를, 본 문서에서 작업자로 지칭되는 다른 컴퓨팅 개체에, 아웃소싱하기(outsource) 위해 클라이언트에 의해 활용된다. 몇몇 경우에, 클라이언트는 계산상(computationally) 제한되어서 클라이언트가 함수의 평가를 수행하는 것이 실현불가한데(가령, 클라이언트가 이용할 수 있는 컴퓨팅 리소스를 사용하는 계산의 기대되는 런타임(runtime)이 최대 수용가능 임계를 초과함), 다만 실정이 그러할 필요는 없으며, 클라이언트는, 일반적으로 말하면, 임의의 적합한 기준, 예컨대 계산 런타임(computational runtime), 계산 비용(computational cost)(가령, 함수의 평가를 수행하기 위해 컴퓨팅 리소스를 할당하는 것의 금융 비용), 그리고 더 많은 것에 기반하여 입력 x에 대한 함수 f의 평가를 위임할(delegate) 수 있다.
작업자는, 실시예에서, 임의의 적합한 컴퓨팅 개체, 예컨대 본 개시에서 다른 데에 더 상세히 기술된 바와 같은 블록체인 노드이다. 실시예에서, 작업자(가령, 블록체인 노드)는 입력 x에 대해 함수 f를 평가하고, 출력 y와, 위에서 기술된 바와 같은 클라이언트 및/또는 블록체인 네트워크의 다른 노드와 같은 다른 컴퓨팅 개체에 의해 확인될 수 있는 출력 y의 정확성의 증명 을 생성한다. 논증(argument)으로 또한 지칭될 수 있는 증명은 실제의 계산을 하는 것보다 더 빠르게 확인될 수 있는데 - 따라서, 위에서 기술된 작업자에 의해 생성된 출력의 정확성을 판정하기 위해 입력 x에 대해서 함수 f를 재계산하는 것 대신에 증명의 정확성을 확인함으로써 계산 오버헤드(computational overhead)가 감소될 수 있다(가령, 컴퓨팅 리소스에 전력을 공급하고 가동하는 것과 연관된 비용 및 전력 오버헤드를 감소시킴). 영 지식 확인가능 계산에서 작업자는 작업자가 특정한 속성을 가진 입력을 안다는 입증을 클라이언트에 제공한다.
지식의 영 지식 증명(zero-knowledge proof of knowledge)의 효율적인 변형은 zk_SNARK(Succinct Non-interactive ARgument of Knowledge((간결한 비상호작용적 지식 논증))이다. 실시예에서, 모든 페어링(pairing) 기반의 zk-SNARK는 작업자가 포괄적인 그룹 동작을 사용하여 다수의 그룹 요소를 계산하고 확인자(verifier)가 다수의 페어링 승적(product) 식을 사용하여 증명을 체크하는 프로세스를 포함한다. 실시예에서, 선형의 상호작용적 증명은 유한 필드(finite field) 상에서 작동되며, 작업자의, 그리고 확인자의 메시지는 필드 요소의 벡터를 판정하기 위해 사용가능한 정보를 포함하거나, 인코딩하거나, 참조하거나, 달리 포함한다.
실시예에서, 본 문서에 기술된 시스템 및 방법은 블록체인의 채굴 노드로 하여금 계산(가령, 입력 x에 대한 함수 f의 평가)을 한 번 수행하고 출력의 정확성을 확인하는 데에 사용될 수 있는 증명을 생성할 수 있도록 하는데 증명의 정확성을 평가하는 것은 함수를 평가하는 것보다 계산상 덜 비싸다. 이 맥락에서, 동작 및 과업의 비용(즉, 얼마나 비싼지)은 동작 또는 과업을 수행하는 것의 계산 복잡도(computational complexity)를 가리킬 수 있다. 실시예에서, 계산 복잡도는 정렬 알고리즘(sorting algorithm)을 수행하는 것의 평균적인 계산 비용 또는 최악의 계산 비용을 가리키는데 - 예를 들어, 힙정렬 알고리즘(heapsort algorithm) 및 퀵정렬 알고리즘(quicksort algorithm) 양자 모두는 의 평균적인 계산 비용을 가지나, 퀵정렬은 의 최악의 계산 비용을 갖는 반면에 힙정렬은 의 최악의 계산 비용을 갖는다. 실시예에서, 입력 x에 대해 함수 f를 평가하는 것의 평균적인 계산 비용 및/또는 최악의 계산 비용은 증명의 정확성을 평가하는 것보다 더 안 좋다. 따라서, 본 문서에 기술된 시스템 및 방법의 사용은 대단히 유리하며, 예를 들어, 보다 계산상 비싼 계약으로 하여금, 그러한 계약이 비례적으로(proportionally) 블록체인을 검증하는 데에 요구되는 시간을 증가시키지 않을 것일 때, 가동될 수 있도록 할 수 있다. 추가의 이점은 확인자 시스템의 전력 소모에서의 감소를 포함할 수 있는바, 이로써 확인자 컴퓨터 시스템의 효율을 개선하고 증명의 정확성을 평가하는 데에서 그러한 확인자 컴퓨터 시스템을 가동하는 것과 연관된 에너지 비용을 감소시킨다. 현재, 스마트 계약은 모든 노드 상에서 실행되고 검증되어야 하는데 - 이 제약은 스마트 계약의 복잡도를 제한한다. 본 문서에 기술된 방법 및 시스템은 정확성 증명(proof of correctness)을 생성하기 위해 한 번 계약을 실행함으로써 블록체인의 효율을 개선하는 시스템을 구현하는 데에 활용될 수 있고, 작업자에 의해 제공된 정확성 증명 및 클라이언트에 의해 제공된 확인 키에 기반하여, 블록체인의 모든 노드는 계약의 유효성을 확인할 수 있다. 이 방식으로, 블록체인의 효율은 보다 계산상 비싼 스마트 계약의 계산을 가능하게 하고/거나 블록체인의 노드에 의해 합쳐서(in aggregate) 수행될 수 있는 스마트 계약의 쓰루풋(throughput)을 증가시킴으로써 개선된다.
실시예에서, 확인 키 또는 이의 부분은 영 지식 프로토콜의 셋업 국면(setup phase)에서 생성된 공개 파라미터로부터 추출되고, 작업자에 의해 제공된, 전칭된(alleged) 정확성 증명 계산을 확인하기 위해 입력/출력 데이터와, 증명 와 함께 사용될 수 있다. 예를 들어, 위에서 또 아래에서 더 상세히 기술되는 바와 같이, 잠금 스크립트를 허용하는 시스템 및 방법은 확인 키 를 변경으로부터 보호하고 증명 의 유효성을 체크하는바, 트랜잭션 검증 동안 블록체인 상에서의 영 지식 프로토콜의 실행을 가능하게 한다. 따라서, 본 개시는 계산의 확인에서 사용되는 요소를 저장하기 위해 (가령, 비트코인 기반 네트워크에서) 블록체인 스크립트를 사용하여 확인 국면을 실행하는 시스템 및 방법을 제시한다.
도 2는 다양한 실시예에 따라 프로토콜을 구현하는 데에 활용될 수 있는 컴퓨팅 환경(200)을 예시한다. 프로토콜은 정확성 증명을 저장하고 "구축에 의한 정확함"(correct-by-construction) 암호학적 접근법을 스마트 계약과 조합하기 위해 블록체인 기술을 사용하여 구현될 수 있다. 실시예에서, 공개적 확인가능 계산 방안은 3개의 국면을 포함한다: 셋업 국면, 계산 국면 및 확인 국면.
셋업 국면은 계산 과업(computational task)의 수행을 아웃소싱하기 위해 프로세스의 일부로서 수행될 수 있다. 클라이언트는, 아래에서 언급되는 바와 같이, 계산 과업의 수행을 상이한 컴퓨터 시스템일 수 있는 작업자에 위임하는 고객 또는 클라이언트 컴퓨터 시스템과 같은 개체를 가리킬 수 있다. 클라이언트는, 일반적으로 말하면, 한정된 컴퓨팅 리소스, 컴퓨팅 리소스의 부족, 과업을 수행하기 위해 클라이언트 컴퓨터 시스템을 활용하는 것과 연관된 금융 비용, 과업을 수행하기 위해 클라이언트 컴퓨터 시스템을 활용하는 것과 연관된 에너지 비용(가령, 전력을 위해 배터리에 의존하는 모바일 디바이스 또는 랩톱은 계산상 집약적인 과업을 수행하기 위해 작업자를 활용할 수 있는바, 이로써 전력을 절감하고 배터리 전력공급형(battery-powered) 디바이스의 사용을 장기화함(prolonging)), 그리고 더 많은 것을 포함하나 이에 한정되지 않는 갖가지 이유로 계산 과업의 수행을 위임할 수 있다.
실시예에서, 셋업 국면은 클라이언트, 고객, 조직의 종업원, 또는 적확한 의미론(semantics)을 가진 형식 언어(formal language)로 계약을 작성하는 임의의 다른 적합한 개체를 수반한다. 계약은 C 또는 Java와 같은 고수준 프로그래밍 언어로 작성될 수 있다. 일반적으로 말하면, 계약은 컴퓨터 시스템에 의해 조작될(manipulated) 수 있는 포맷(format)으로 변환되거나 변환될 수 있는 임의의 언어 또는 구문론(syntax)으로 표현될 수 있다. 실시예에서, 도메인 특정적 언어(domain specific language)가, 한정된 목적으로, 유형 안전(type-safety)을 제공할 수 있고 제한된 표현성이 활용될 수 있다. 생성된 소스 코드는 계약의 적확한 서술일 수 있다.
컴파일러(compiler)(202)는 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행되는 경우 시스템으로 하여금, 입력으로서, 소스 코드(206)를 취하게 하고 회로(circuit)를 산출하는 실행가능 코드를 포함하는 임의의 하드웨어, 소프트웨어 또는 이의 조합일 수 있다. 컴파일러(202)는 이진 코드와 같은 머신 판독가능 포맷으로 컴파일된 명령어에 기반하여 명령어를 실행하거나 수행하는 컴퓨터 프로그램을 가리킬 수 있다. 컴파일러(202)가 예시되나, 소스 코드를 회로로 변환하는 데에 인터프리터(interpreter), 어셈블러(assembler) 및 다른 적합한 소프트웨어 및/또는 하드웨어 컴포넌트가 활용될 수 있음에 유의하여야 한다. 실시예에서, 회로는 필드 로부터의 값을 싣고(carry) 논리(logical) 및/또는 산술(arithmetic) 게이트에 연결되는 배선(wire)을 포함하는 산술 회로이다. 실시예에서, 회로 는 원래의 회로 의 완전한 서술을 제공하는 다항식의 세트를 포함하는 이차 프로그램(quadratic program) (208)을 생성하기 위해 시스템에 의해 사용된다.
실시예에서, 컴파일러(202)는, 전처리기 지시(pre-processor directive), 정적 초기화자(static initializer), 전역(global) 및 로컬(local) 함수, 블록 범위 변수(block-scoped variable), 어레이(array), 데이터 구조(data structure), 포인터(pointer), 함수 호출(function call), 함수 연산자(function operator)(가령, 펑터(functor)), 조건문(conditional)과 루프(loop), 그리고 산술 및 비트별(bitwise) 부울 연산자(Boolean operator)를 포함하나 이에 한정되지 않는, C 또는 Java와 같은 프로그래밍 언어의 실질적 서브세트(substantial subset)를 인식할 수 있다. 실시예에서, 컴파일러(202)는 그러나 프로그래밍 언어의 표준에 따른 커맨드의 전체 세트를 지원하지 않는다(이는, 몇몇 경우에, 어떤 유형의 알고리즘이 스마트 계약에서 실행되지 못하게 하기 위해, 예컨대 재귀적(recursive) 알고리즘을 금지하기 위해, 의도될 수 있다). 실시예에서, 컴파일러는 산술 회로를 산출하기 위해 소스 코드의 표현을 산술 게이트 언어(arithmetic gate language)로 확장한다. 과거에 "Zero-Knowledge Contingent Payments Revisited: Attacks and Payments for Services"에서 Campanelli, M. 등 (2017)에 의해, 그리고 "Circuits of Basic Functions Suitable For MPC and FHE"에서 Tillich, S. 및 Smart, B에 의해 회로 구현이 숙고되었다. 산술 회로는 컴파일러(202) 또는 임의의 다른 적합한 하드웨어, 소프트웨어, 또는 이의 조합(가령, 도 2에 예시되지 않은 소프트웨어 모듈)에 의해 이차 산술 문제(Quadratic Arithmetic Problem: QAP)를 조성하는 데에 활용될 수 있다. 이차 프로그램은 실시예에 따라 클라이언트를 위한 (가령, 키 생성 및 확인) 그리고 작업자를 위한 (가령, 계산 및 증명 생성) 암호학적 루틴의 세트로 컴파일된다. 몇몇 실시예에서, 작업자가 스마트 계약의 결과를 판정하는 데에 필요한 요구되는 리소스를 감소시키기 위해서 영국 특허 출원 제1718505.9호에서 기술된 것과 같은 산술 회로 최적화 기법이 활용될 수 있다.
실시예에서, 키 생성자(key generator)(204)는 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행되는 경우 시스템으로 하여금 평가 키 및 확인 키를 이차 프로그램으로부터 생성하게 하는 실행가능 코드를 포함하는 임의의 하드웨어, 소프트웨어 또는 이의 조합이다. 이차 프로그램으로서 계산을 인코딩하기 위한 기법이 Gennaro, R. 등 (2013)에 의한 "Quadratic Span Programs and Succinct NIZKs without PCPs"에서 숙고된다. 실시예에서, 이차 산술 문제(Quadratic Arithmetic Problem: QAP) 는 필드 상에서 회로 를 인코딩하고 m+1개의 다항식의 세트를 포함한다:
이되 이다. 타겟 다항식 이 또한 정의된다. 의 개의 요소를 입력으로서 취하고 개의 요소를 출력하되, 인 함수 가 주어지면, 는 만일 가 의 입력 및 출력의 그룹의 유효한 할당인 경우 그리고 만일 가 를 나누어 떨어지게 하도록 계수의 리스트 가 존재하는 경우 를 계산한다:
실시예에서, 산술 회로를 위해 QAP를 조성하는 것은 회로 내의 각각의 곱셈 게이트 에 대해 임의적인 루트(root) 를 고르는 것 및 타겟 다항식을 이라고 정의하는 것을 포함한다. 실시예에서, 인덱스 는 회로의 각각의 입력에, 그리고 곱셈 게이트로부터의 각각의 출력에 연관된다. 내의 다항식은 각각의 게이트에의 좌측 입력을 인코딩하고, 는 각각의 게이트에의 우측 입력을 인코딩하며, 는 출력을 인코딩한다. 예를 들면, 제k 배선이 게이트 에의 좌측 입력인 경우 이고, 그렇지 않으면 이다. 따라서, 특정한 게이트 및 그것의 루트 에 대해, 이전의 식은 다음과 같이 단순화될 수 있다:
게이트의 출력 값은 그것의 입력의 승적과 같다. 정제성(divisibility) 체크는 개별 체크로 분해되는데, 이도록, 의 각 게이트 및 루트 에 대해 하나씩이다. 덧셈 게이트 및 상수와의 곱셈 게이트는 QAP의 크기 또는 차수에 기여하지 않는다.
실시예에서, QAP는 필드 에 대해 정의되는데, 는 큰 소수(prime)이다. 실시예에서, 에 대한 QAP가 모듈로(modulo) 의 덧셈 및 곱셈의 측면에서 표현될 수 있는 임의의 함수를 효율적으로 계산함이 바람직하다. 내에 있는 것으로 알려진 산술 배선 를 k 개의 이진 출력 배선으로 바꾸도록 산술 분할(split) 게이트가 설계될 수 있다. 따라서, 산술 게이트를 사용하여 부울 함수가 표현될 수 있다는 것이 된다. 예를 들면, 이다. 각각의 임베딩된 부울 게이트는 단지 하나의 곱셈을 요한다. 더욱이, 분할과 같은 새로운 게이트가 독립형(standalone)으로서 정의되고 다른 게이트와 함께 구성될 수 있다. 내에 있는 것으로 알려진 입력 이 주어지면, 분할 게이트는 이고 각각의 는 0 아니면 1이도록 의 이진 숫자 를 유지하는 개의 배선을 출력한다.
끝으로, 모든 증명자 및 확인자에 의해 사용될 공개 파라미터는 셋업 국면의 일부로서 시스템에 의해 생성된다. 평가 키 및 확인 키 는 클라이언트에 의해 선택된 시크릿 값을 사용하여 도출됨에 유의하여야 한다. 키 생성자(204)는 평가 키 (210) 및 확인 키 (212) 를 생성하기 위해 키 생성 알고리즘과 관련하여 이차 산술 프로그램(Quadratic Arithmetic Program: QAP)을 활용할 수 있다.
실시예에서, 계산 과업을 수행하는 것은 작업자에 의한 입력(216)에 대한 함수의 계산(즉, f(x)를 평가하기 위한 프로세스)을 수반한다. 실시예에서, 작업자는 임의의 적합한 컴퓨터 시스템(이에 클라이언트가 계산 과업을 위임할 수 있음)이다. 입력(216)은, 실시예에서, 작업자와 연관된 개인 키를 사용하여 생성된 디지털 서명과 같은, 작업자의 신원(identity)을 입증하는 정보를 포함한다. 실시예에서, 작업자는 (가령, 디지털 자산의 전이를 통해) 클라이언트가 성공적인 계산에 대해 요금을 지불하는 컴퓨터 시스템이다. 클라이언트는, 실시예에서 작업자에게 입력 x 및 평가 키 를 제공하고, 작업자는 출력 y (즉, y=f(x) 여기서 입력은 x이고 함수는 f임)를 계산하기 위해 컴퓨트 루틴(compute routine)에 평가 모듈(214)을 사용하고 정확성 증명(218)을 산출하기 위해 평가 키 (210)를 사용한다. 평가 모듈은, 실시예에서, 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행되는 경우 컴퓨터 시스템으로 하여금 QAP(208)의 내부 회로 배선의 값을 평가하고 QAP의 출력 y를 산출하게 하는 명령어를 포함하는 하드웨어 및/또는 소프트웨어이다.
실시예에서, 이차 프로그램의 각각의 다항식 은 이선형(bilinear) 그룹 내의 요소 에 맵핑되는데, 는 클라이언트에 의해 선택된 시크릿 값이고, 는 그룹의 생성자이고, 는 의 이산 대수(discrete logarithm)의 필드이다. 실시예에서, 주어진 입력에 대해, 작업자는 이차 프로그램의 계수 에 대응하는 내부 회로 배선의 값 및 출력을 획득하기 위해 회로를 평가한다. 따라서, 작업자는 를 얻기 위해 를 평가하고; w(s) 및 y(s)를 계산하고; 를 계산하고; 평가 키 내에서 및 항을 사용하여 를 계산할 수 있다. 실시예에서, 정확성 증명(218)은 을 포함하고 확인자는 임을 체크하기 위해 이선형 맵을 사용한다. 실시예에서, 증명 은 나중의 사용을 위해 블록체인(222) 상에 저장되거나 여러 당사자에 의해, 이들 각각과 개별적으로 상호작용할 것을 증명자(prover)에게 요구하는 것 없이, 확인될 수 있다. 실시예에서, 정확성 증명의 회로 저장의 평가는 트랜잭션의 잠금 스크립트에 의해 부담부로 된(encumbered) 디지털 자산을 잠금해제하기 위해 수행될 수 있다.
실시예에서, 증명 은 블록체인 네트워크에 브로드캐스트되고 증명을 확인하는 데에 확인자(220)가 사용된다. 실시예에서, 확인자(220)는 블록 체인 상의 노드와 같은 임의의 적합한 컴퓨팅 개체이다. 몇몇 경우에, 평가 키 및 확인 키 를 생성하는 동일한 컴퓨팅 개체가 또한 증명을 확인함에 또한 유의하여야 한다. 실시예에서, 블록체인의 노드는 확인 키 및 증명 를 사용하여 지불 트랜잭션(payment transaction)을 검증할 수 있는바, 이로써 만일 확인이 성공적인 경우 계약을 검증한다. 프로토콜의 한 가지 요구사항은 작업자가, 설사 그것이 확인 키 를 아는 경우에도, 부정확한 증명을 제공할 수 없다는 것이다. 그러므로, 이 프로토콜에서, 클라이언트에 의해 또는 적어도 평가 키 및 확인 키 를 공개하는 신뢰되는(trusted) 제3자에 의해 공통 참조 스트링(Common Reference String: CRS)이 산출된다. 실시예에서, 공개된 확인 키 는 계산을 확인하기 위해 임의의 컴퓨팅 개체에 의해 사용될 수 있다.
본 문서에 기술된 기법을 사용하여, 클라이언트는 블록체인 트랜잭션의 수령자의 신원과 같은 트랜잭션 데이터를 부분적으로 난독화할 수 있다. 실시예에서, 잠금해제 스크립트는 수령자의 주소 및 수령자의 공개 키를 노출시키지 않는다. 그러나, 몇몇 경우에, 트랜잭션의 가치(가령, 전이되는 디지털 자산의 양)는 블록체인 네트워크의 노드에 가시적(visible)일 수 있다. 실시예에서, 위에서 또 아래에서 기술되는 바와 같은 암호학적 기법은 잠금 스크립트를 이차 산술 프로그램으로 변환하기 위해 클라이언트에 의해 그리고 증명을 생성하기 위해 산술 프로그램을 풀기 위해 작업자에 의해 활용된다.
일반적으로 말하면, 클라이언트는 상대편 당사자(counterparty) 또는 작업자에게 지불하기(pay) 위해 P2PK 및 P2PKH와 같은 표준 트랜잭션(가령, 비트코인 기반 블록체인 네트워크에서 정의된 바와 같은 표준 트랜잭션)을 사용할 수 있다. 예를 들어, 실시예에서, 클라이언트는 P2PK 잠금 스크립트를 산술 회로로 변환하고 회로로부터 도출된 퍼즐(puzzle)을 포함하는 지불 트랜잭션을 브로드캐스트한다. 상대편 당사자 또는 작업자는 회로를 수신하고, 적절한 입력(가령, 클라이언트 및 작업자 간의 공유된 시크릿 또는 작업자의 개인 키를 사용하여 생성된 디지털 서명과 같은 작업자의 신원을 입증하는 정보)을 제공하며, 정확성 증명 을 생성하기 위해 회로를 가동한다. 실시예에서, 증명은 디지털 자산을 잠금해제하는 데에 사용되며, 나아가, 상대편 당사자 또는 작업자를 식별하는 정보(가령, 상대편 당사자 또는 작업자와 연관된 공개 키 및/또는 디지털 서명)는 난독화되지 않은 포맷으로 블록체인에 기록되지 않는다는 실정일 수 있다.
확인자는 복수의 타원 곡선 곱셈(가령, 각각의 공개 입력 변수에 대해 하나씩) 및 5개의 페어 체크(이 중의 하나는 추가적인 페어링 곱셈을 포함함)를 계산한다.
그러므로, 위에서 기술된 섹션으로부터의 표기법 및 이 개시에 기술된 예를 고려할 때, 하나의 실시예에 따르면, 확인은 다음의 요소의 페어 체크의 세트를 포함한다:
도 3은 확인가능한 계산의 수행을 조정하기(coordinating) 위한 도해(300)를 예시한다. 클라이언트(302), 작업자(304) 및 확인자(306)는 블록체인 네트워크의 노드일 수 있다. 클라이언트(302)는 컴퓨터 시스템의 하나 이상의 프로세서에 의해 실행되는 경우 컴퓨터 시스템으로 하여금 스마트 계약(308)을 수신하도록 하는 실행가능 코드를 포함할 수 있는 임의의 적합한 컴퓨터 시스템일 수 있다. 실시예에서, 스마트 계약(308)은 C, C++ 또는 Java와 같은 소스 코드로서 고수준 프로그래밍 언어로 인코딩된다. 실시예에서, 스마트 계약(308)을 산술 회로(310)(이는 필드 로부터의 값을 싣고 덧셈 및 곱셈 게이트에 연결되는 "배선"으로 이루어짐)로 변형하는 데에 컴파일러, 인터프리터 및/또는 어셈블러와 같은 소프트웨어가 활용될 수 있다. 산술 회로는 물리적 배선에 의해 연결된 (가령, 7400-시리즈 게이트, 플립 플롭, 버퍼, 디코더, 멀티플렉서 및 유사한 것과 같은 트랜지스터-트랜지스터 로직(Transistor-Transistor Logic: TTL) 집적 회로를 사용하는) 일련의 물리적 게이트를 포함하는 물리적 회로에 의해 구현될 수 있는 논리 회로를 가리킬 수 있음에 유의하여야 한다.
실시예에서, 클라이언트(302)는 산술 회로(310) 및 회로에의 입력(312)을 작업자(304)에 제공한다. 회로(310)는 원래의 회로의 완전한 서술을 제공하는 다항식의 세트를 포함하는 이차 프로그램 을 생성하기 위해 사용될 수 있다. 어느 경우든, 작업자(304)는 하나 이상의 출력(314)을 생성하기 위해 입력(312)에 대해 회로 또는 이차 프로그램 을 실행할 수 있다. 몇몇 실시예에서, 작업자(즉, 증명자)는 입력 배선에 할당된 값이 의 것이고, 중간 값은 내의 각 게이트의 정확한 동작에 대응하며, 출력 배선(들)에 할당된 값은 이도록 회로 배선에의 값의 할당인 를 위한 유효한 전사본(transcript)을 출력으로서 획득할 것으로 기대되는데; 만일 요청된(claimed) 출력이 부정확하면(즉, ), 를 위한 유효한 전사본은 존재하지 않는다. 실시예에서, 작업자는 회로 배선의 값의 서브세트를 제공할 것으로 기대되는데, 회로 배선의 값의 선택된 서브세트는 선험적으로(a priori) 작업자에 알려지지 않는다.
실시예에서, 출력 , 내부 회로 배선(또는 이의 서브세트)의 값 및 평가 키 는 정확성 증명(316)을 산출하는 데에 사용된다. 증명 은 블록체인 상에 저장되고 여러 당사자에 의해, 여러 당사자와 개별로 상호작용할 것을 작업자(304)에게 요구하지 않고서, 확인될 수 있다. 이 방식으로, 확인자(306)는 공개 확인 키 및 증명 을 사용하여 지불 트랜잭션을 검증할 수 있는바, 이로써 계약을 검증한다. 몇몇 경우에, 클라이언트(302)는 만일 확인이 실패하는 경우 지불 트랜잭션에 의해 부담부로 된 디지털 자산을 수복할 수 있다. 몇몇 경우에, 확인자(306) 및 클라이언트(302)는 동일한 컴퓨터 시스템이다.
도 4는 본 개시의 실시예의 도해(400)를 예시한다. 구체적으로, 도 4는 비트코인 기반 잠금 및 잠금해제 스크립트와 같은 블록체인 기반 스크립트에서의 사용에 적합한 다양한 포맷으로 인코딩된 타원 곡선(402) 상의 점을 묘사한다.
다양한 실시예에서, 타원 곡선 점은 트랜잭션과 연관이 되어 실행되는 잠금 및 잠금해제 스크립트 내에 인코딩될 수 있다. 비트코인 기반 시스템 상에서, 이들 스크립트는 스택 기반의 스크립팅 언어로 기입될 수 있다. 예를 들어, 확인 키 는 를 포함할 수 있고 증명 은 요소의 세트 를 포함할 수 있는데 및 는 유한 필드 에 대한 타원 곡선 상의 점이다. 도 4는 잠금 또는 잠금해제 스크립트와 같은 블록체인 스크립트와의 사용에 적합한 압축된(compressed)() 아니면 압축되지 않은(uncompressed)() 인코딩을 사용하여 타원 곡선(402) 상의 점이 나타내어지는 예시적인 도해(400)를 보여준다.
실시예에서, 을 타원 곡선 상의 점이라고 하자. 만일 인 경우, 점은 그것의 아핀(affine) 좌표에 의해 나타내어진다. 압축되지 않은 인코딩(404)에서 점 P는 압축되지 않은 인코딩을 나타내는 정보(가령, 아래에서 기술된 파라미터 'C'와 같은 전치(prefix)(406)) 및 2개의 필드 요소(x 및 y 좌표(408 및 410))에 의해 나타내어지는 한편, 압축된 인코딩에서 점은 그것의 x 좌표, 그리고 추가적인 비트(y 좌표를 고유하게 식별하기 위함)에 의해서만 나타내어진다. 따라서, 실시예에서, 인데:
여기서 이중 파이프 연산자 ""는 연접(concatenation) 동작을 가리키며 FieldElements2OctetString() 함수는 필드(가령, 유한 필드)의 요소를 꼭 8개의 비트를 포함하는 옥텟(octet) 스트링으로 변환하는 데에 사용될 수 있다. 압축된 인코딩에 관하여, 인데:
실시예에서, 압축되지 않은 인코딩(404)은 타원 곡선 상의 점의 x 좌표(408) 및 y 좌표(410)와 같은 유한 필드(즉, )의 점 P를 포함한다. 압축되지 않은 인코딩(404)은 인코딩이 압축되지 않은 인코딩임을 판정하는 데에 사용가능한 정보(가령, x 좌표(408) 및 y 좌표(410)에 전치부가된(prepended)/부가된(appended) 전치(406) 값)를 더 포함한다. 반대로, 압축된 인코딩(412)은 (가령, 위에서 기술된 바와 같은) 유한 필드의 점 P의 인코딩, 그리고 인코딩이 압축된 인코딩임을 판정하는 데에 사용가능한 정보를 포함한다. 예를 들어, 압축된 인코딩(412A)은 전치(414) 및 점 P의 x 좌표(408)를 인코딩하는데, 대응하는 y 좌표는 전치(414)에 적어도 부분적으로 기반하여 판정가능하다. 예를 들어, 전치(414)는 y 좌표가 짝수(even)임을 나타낸다. 반대로, 제2 압축된 인코딩(412B)은 상이한 전치(416) 및 점 P의 x 좌표(408)를 인코딩하며, 홀수(odd)인 y 좌표를 판정하는 데에 사용된다.
일반적으로 말하면, 압축되지 않은 점 은 이 압축되지 않은 타원 곡선 점임을 판정하는 데에 사용가능한 정보와, 점의 x 좌표와, 점의 y 좌표를 인코딩하는 임의의 적합한 포맷으로 표현될 수 있음에 유의하여야 한다. 유사하게, 압축된 점 은 이 압축된 타원 곡선 점임을 판정하는 데에 사용가능한 정보와, 점의 x 좌표 및 y 좌표를 판정하는 데에 사용가능한 압축된 정보를 인코딩하는 임의의 적합한 포맷으로 표현될 수 있다.
예로서, 비트코인 기반 시스템에서의 secp256k1 타원 곡선의 점의 표현을 고려하자. 압축되지 않은 점이 나타내어지는 실시예에서, 압축되지 않은 타원 곡선 P의 인코딩된 비트 스트링 내의 제1 옥텟은 0x04이되 점의 X 좌표 및 점의 Y 좌표에 대응하는 2개의 256 비트 수가 이어진다(즉, ). 예로서, 차별화된 인코딩 규칙(Distinguished Encoding Rules: DER) 인코딩 포맷이 사용되는데, 다만 기본 인코딩 규칙(Basic Encoding Rules: BER) 및 정규 인코딩 규칙(Canonical Encoding Rules: CER)과 같은 다른 적합한 인코딩 포맷이 이 개시의 범위 내에서 숙고된다.
실시예에서, 타원 곡선 점의 길이를 포함하는 1바이트 스크립트 옵코드(opcode)가 실제의 점에 연접된다(가령, 길이는 실제의 점 앞에 연접된다). 예를 들어, 만일:
실시예에서, 클라이언트는 스마트 계약의 당사자이며 계약의 실행을 위해 블록체인을 활용하기로 정한다. 판정의 일부로서, 클라이언트는 증명 을 공개하는 당사자(가령, 작업자)에게 클라이언트에 의해 제어되는 디지털 자산을 전이하기 위해 지불 트랜지션을 블록체인에 포스팅한다(post). 위에서 기술된 것과 같은 확인자 컴퓨트 시스템은 증명 이 정확함을 판정하기 위해 확인 루틴을 수행할 수 있다.
프로토콜에 따르면, 클라이언트는 증명 의 산출 및 생성을 위해 공통 참조 스트링(common reference string)을 생성할 수 있다. 몇몇 실시예에서, 공통 참조 스트링은 신뢰되는 자(가령, 제3자)에 의해 생성된다. 신뢰되는 제3자는 공통 참조 스트링을 생성할 수 있는 한편, 프로토콜에의 신뢰되는 제3자의 도입은 선택적임 - 프로토콜은 클라이언트 및 작업자를 요구하며 추가적인 제3자 없이 수행될 수 있음 - 에 유의하여야 한다.
프로토콜을 계속하면, 계산의 확인은 트랜잭션의 확인 스테이지(stage)의 일부로서 일어난다. 비트코인 기반 네트워크와 같은 실시예에서, 클라이언트 또는 작업자는 잠금 스크립트 및/또는 잠금해제 스크립트의 일부로서 을 제공하도록 제약된다. 이 제약은 다양한 방식으로 달성될 수 있다. 예를 들어, 실시예에서, 작업자는 그것의 잠금해제 스크립트 중 하나 내에 을 포함하는 직렬화된 잠금해제 트랜잭션을 주입하는 것을 통해서 확인 키 를 제공한다. 제2 예로서, 클라이언트는 트랜잭션을 브로드캐스트하는데 여기서 잠금 스크립트는 , 그리고 검증 국면에서 활용되는 식을 포함하며, 확인 키 를 포함하는 SIGHASH_NONE | SIGHASH_ANYONECANPAY로써 서명된 트랜잭션 입력을 생성한다. 클라이언트는 을 추가하고, 서명하고, 브로드캐스트할 필요가 있는 작업자에게 이 입력을 전한다. 또 다른 예로서, 작업자는 실행에 대해 지불하는 트랜잭션의 잠금 스크립트 내의 고정 길이 스크립트 해시(가령, 20 바이트 스크립트 해시)를 사용함으로써 확인 키 를 제공한다. 물론, 이들은 어떻게 가 잠금 스크립트, 잠금해제 스크립트, 또는 임의의 다른 적합한 스크립트 또는 동작(임의의 적합한 프로토콜에 따라 트랜잭션의 확인의 일부로서 실행되는 것임)의 일부로서 제공되는지의 예시적인 예일 뿐이다. 실시예에서, 작업자는 잠금해제 스크립트의 일부로서 을 제공하고 증명 은 만일 그것이 출력 스크립트 내의 조건 세트를 충족하는 경우 인가된다(authorised).
비트코인 기반 시스템과 같은 블록체인 기반 시스템은, 실시예에서, Script(가령, 비트코인 기반 시스템은 Script를 지원함)와 같은 스크립팅 언어에 따라 동작(또한 옵코드 및 커맨드로 지칭됨)의 실행을 지원한다. 실시예에서, 트랜잭션은 잠금(출력) 및 잠금해제(입력) 스크립트를 포함하며 표준 유형의 리스트 중의 하나로서 식별가능할 수 있다. 예를 들어, 비트코인 기반 시스템에서, 5개의 표준 유형이 있다: 공개 키에의 지불(Pay-to-Public-Key: P2PK), 공개 키 해시에의 지불(Pay-to-Public-Key-Hash: P2PKH), 다중 서명(Multi-signature), 스크립트 해시에의 지불(Pay-to-Script-Hash: P2SH) 및 OP_RETURN.
본 문서에 기술된 바와 같은 제안된 zk-프로토콜을 가동하는 데에서, 공통 참조 스트링과 같은 정보, 증명 및/또는 이의 부분은 블록체인 상에 저장된다. 나아가, 검증 프로세스의 일부로서, 시스템이 트랜잭션 검증 프로세스에서 스택 상에 푸시된 특정 요소를 추출하고 위에서 기술된 바와 같은 검증 국면으로부터 페어링을 체크하여야 하는 것이 또한 실정일 수 있다.
트랜잭션은 그것의 입력 및 출력 내에 임베딩된 스크립트로 알려진 작은 프로그램을 포함하는데, 이는 트랜잭션의 출력이 어떻게, 그리고 누구에 의해 액세스될 수 있는지를 명시한다. 비트코인 플랫폼 상에서, 이들 스크립트는 스택 기반의 스크립팅 언어를 사용하여 기입된다. 실시예에서, 프로토콜은 트랜잭션이 표준 트랜잭션인지 또는 비표준 트랜잭션인지를 판정하는 트랜잭션에 대한 다양한 기술적 규칙 및 구문론 기반 제한을 포함한다. 실시예에서, 실행 스택 상에 푸시되는 요소의 크기에, 그리고 입력 스크립트의 총 크기에 대해 제한이 있다. 예를 들어, 비트코인 기반 시스템에서, 실행 스택 상에 푸시된 하나하나의 요소는 520 바이트에 한정되며 각각의 입력 스크립트는 1650 바이트에 한정된다. 실시예에서, 스크립트 실행 후에, 스택은 꼭 하나의 거짓 아닌(non-false) 요소를 포함한다. 입력 스크립트는 (리딤 스크립트 부분을 제외하고) OP_PUSHDATA가 아닌 어떤 OP 코드도 포함할 수 없다. 실시예에서, 비트코인 기반 시스템은 546 사토시(satoshi)의 최소 출력 값을 요구하는데, 다만 상이한 블록체인 시스템은 상이한 양 및/또는 단위의 디지털 자산이 출력 값(가령, 트랜잭션의 채굴 노드에의 최소 지불)으로서 포함된다고 정의할 수 있음에 유의하여야 한다. 실시예에서, 최소 출력 값은 0이다(즉, 디지털 자산의 어떤 요구되는 전이도 없음). 이들 규칙으로부터 벗어나는 트랜잭션은 비표준적이라고 간주된다.
검증 국면의 일부로서, 확인자(가령, 클라이언트)는 증명 및 확인 키 의 요소를 추출하고 이를 페어링 체크에서 사용한다. 실시예에서, 확인 체크는 제약의 세트를 만족시키는 이선형 맵핑을 포함한다. 예로서, 예컨대 다음의 방식으로, 형태 의 제약을 만족시키는 이선형 맵핑 )을 고려하자:
위에서 기술된 그러한 페어링은 예시 목적임에 유의하여야 하는데 - 그러한 맵핑은, 글자 그대로는(verbatim), 암호학적 시스템에서의 애플리케이션에 유용하지 않을 수 있으나, 이선형 제약을 확인하기 위한 프로세스는 동일한 채로 있는바 이선형 맵이 타원 곡선에 파급됨에 유의하여야 한다. 역시, 예시 목적으로, 비트코인 스크립트를 사용하여 검증 국면에서 증명 과, 공통 참조 스트링으로부터의 정보(가령, 확인 키 )를 어떻게 추출하고 사용하는지에 대한 예가 아래에 보여진다:
위에서 제공된 예에서 페어 체크의 예를 보여주는 데에 사용될 뿐이며 도 2와 관련하여, 위에서 논의된 것과 같은, 추가적인 제약을 포함할 수 있음에 유의하여야 한다.
증명 의 검증과 관련한 사용을 위해 확인 키 를 제공하기 위한 다양한 기법이 있다. 도 5는 클라이언트(510)가 증명 의 검증에서 사용될 확인 키 를 공급하는 예시적인 도해(500)이다. 실시예에서, 클라이언트는 트랜잭션 출력(502)을 생성하는데, 트랜잭션은 출력 값(504)(가령, 계약 실행을 위한 작업자에의 디지털 자산의 지불), 그리고 제약의 세트를 만족시키는 이선형 맵핑을 포함하는 확인 체크를 수행하는 잠금 스크립트(508)을 포함하거나 그렇지 않으면 이와 연관된다. 실시예에서, 잠금 스크립트는 클라이언트의 디지털 서명에 적어도 부분적으로 기반하여 확인 키 의 무결성을 확인한다. 몇몇 경우에, 잠금 스크립트는 만일 검증이 실패하는 경우, 클라이언트가 트랜잭션과 관련하여, 위에서 기술된 바와 같이 디지털 자산을 수복할 수 있음을 명시할 수 있다. 그러한 트랜잭션은 블록체인 네트워크의 노드(가령, 작업자)에 의해 채굴되도록 블록체인 네트워크에 발신될 수 있다. 몇몇 블록체인 시스템에서, 트랜잭션은, 도 5와 관련하여 예시된 바와 같이, 잠금 스크립트 크기(506)로 지칭될 수 있는, 잠금 스크립트의 (가령, 바이트로 된) 크기를 나타내는 파라미터를, 잠금 스크립트와 연관하여 인코딩한다.
예로서, 잠금 스크립트는 다음에 기반하여 기술될 수 있다:
위에서 제공된 예는 잠금 스크립트를 묘사하며, 반드시 글자 그대로 잠금 스크립트(508) 그 자체인 것은 아님에 유의하여야 한다. 예를 들어 괄호 안에 기술된 위의 몇몇 필드 - 예컨대 클라이언트의 공개 키를 가리킬 수 있는 "<PubKey Client>" - 는 글자 그대로 잠금 스크립트(508) 내에 포함되지는 않는다. 유사하게, 소괄호 안의 몇몇 필드는 수학적 계산에 기반할 수 있는데 - 예를 들어, 위에서 기술된 바와 같은 "OP_(i+1)"는 잠금 스크립트에 글자 그대로 포함되지 않을 수 있고, 오히려 수학적 계산에 적어도 부분적으로 기반하여 판정된 옵코드 또는 커맨드를 가리키니 - 이 경우에, 'i'는 증명 의 요소의 개수를 가리키며, 따라서, 증명 인 예에서 "OP_(i+1)"는 스택 기반 스크립팅 언어로 "OP_7"로 잠금 스크립트 내에 나타내어질 수 있다. 위의 이중 슬래시 "//"에 뒤따르는 텍스트는 실행가능 코드에 대응하지 않는 코멘트를 가리킴에 또한 유의하여야 한다. 예를 들어, "//verify the pairings"는 실행가능 코드에 맵핑되지 않으며 단지, 사람에게, 코멘트 뒤에 나오는 텍스트가 페어링의 확인을 수행하는 데에 활용됨을 나타낸다.
위에서 기술된 바와 같은 트랜잭션 출력(502)은 단지 예시적이며, 그러한 변형이 존재할 수 있음 - 트랜잭션은 임의의 적합한 측정 단위로 된 임의의 적합한 지불 양을 포함할 수 있음 -, 그리고 위에서 기술된 바와 같은 잠금 스크립트의 일부 또는 모든 기능성을 활용하는 것과 같은, 다양한 잠금 스크립트가 존재할 수 있음에 역시 유의하여야 한다. 일반적으로 말하면, 잠금 스크립트(508)는 페어링 체크의 세트를 수행하는, 커맨드의 임의의 적합한 세트일 수 있다. 실시예에서, 잠금 스크립트(508)는 적어도, 클라이언트와 연관된 비대칭 공개 키를 사용하는 확인 키 의 무결성 체크를 포함한다. 실시예에서, 잠금 스크립트는 클라이언트로 하여금 만일 검증이 실패하는 경우 디지털 자산을 수복할 수 있도록 한다. 실시예에서, 잠금 스크립트(508)는 임계 지속기간(threshold duration)(가령, 위에서 기술된 바와 같은 "<n days>"에 대응하는 값) 후에 무효인 것으로 트랜잭션을 마킹하는 명령어를 포함한다.
이 개시에서 다른 데에 기술된 것과 같은 클라이언트일 수 있는 클라이언트(510)는 위에서 기술된 트랜잭션(502)을 참조하고 그것을 상대편 당사자(가령, 일러지는(purported) 바로는 유효한 증명 을 계산할 작업자)에 송신하는 트랜잭션 입력(512)을 생성할 수 있다. 실시예에서, 트랜잭션 입력(512)은 트랜잭션 출력(502)과 연관된 식별자(514), 트랜잭션 출력(502)과 연관된 트랜잭션 출력 인덱스(index)(516)(가령, 몇몇 경우에, 인덱스는 0 기반임(zero-based)), 잠금해제 스크립트(520), 잠금해제 스크립트 크기(518)로 지칭될 수 있는, 잠금해제 스크립트의 (가령, 바이트로 된) 크기를 나타내는 파라미터, 시퀀스 번호(522), 그리고 이의 임의의 적합한 조합을 인코딩할 수 있다. 예를 들어, 몇몇 실시예에서, 잠금해제 스크립트 크기는 트랜잭션 입력(512) 내에 명시적으로 인코딩되지 않으며 (가령, 잠금해제 스크립트의 종단을 나타내는 특정 종료 시퀀스의 검출을 통해서) 달리 도출가능하다. 실시예에서, 잠금해제 스크립트(518)는 클라이언트와 연관된 디지털 서명(526) 및 확인 키 (524)를 포함한다. 몇몇 경우에, 잠금해제 스크립트(518)는 추가적인 정보, 예컨대 확인 프로세스의 실행을 제어하는 분기(branching) 정보의 표시를 포함한다.
예로서, 잠금해제 스크립트는 다음에 기반하여 기술될 수 있다:
위에서 제공된 예는 잠금해제 스크립트를 묘사하며, 반드시 글자 그대로 잠금해제 스크립트 그 자체인 것은 아님에 유의하여야 한다. 예를 들어 괄호 안에 기술된 위의 몇몇 필드는 잠금해제 스크립트(518) 내에 글자 그대로 포함되지는 않는다. 잠금해제 스크립트를 묘사하는 위의 예로 돌아가면, 잠금해제 스크립트(518)는 확인 키 (524)의 요소, 클라이언트와 연관된 디지털 서명(526) 및 분기 정보의 순서화된 또는 순서화되지 않은 시퀀스를 포함할 수 있다. 실시예에서, 디지털 서명(526)은 해시 유형 플래그(hash type flag)를 포함한다. 실시예에서, 해시 플래그는 비트코인 기반 시스템에 따라 SIGHASH_NONE | SIGHASH_ANYONECANPAY 이다. 잠금해제 스크립트(518)는 트랜잭션을 검증하기 위해 잠금 스크립트와 함께 사용가능한 실행 제어 정보를 포함할 수 있다. 예를 들어, 위에 기술된 예에서, "1"은 잠금해제 스크립트 내의 제어문(control statement)의 제1 분기에 스크립트가 들어가야 함을 나타낸다(가령, OP_ELSE 분기 대신 OP_IF 분기).
실시예에서, 작업자(528)는 증명 (530)을 계산하고 그것을 작업자와 연관된 디지털 서명(532)과 함께 잠금해제 스크립트(518)에 부가하며 (가령, 블록체인 네트워크의 하나 이상의 노드 및/또는 클라이언트에) 트랜잭션을 브로드캐스트한다.
예로서, 증명 및 작업자의 디지털 서명을 갖는 잠금해제 스크립트는 다음에 기반하여 기술될 수 있다:
따라서, 실시예에서, 바로 위에서의 설명에 따른 잠금해제 스크립트는 잠금 스크립트에 의해 출력에 놓인 조건을 만족시킬 수 있고 (가령, 출력 값에 의해 나타내어지는 바와 같은) 디지털 자산이 지출될 수 있도록 할 수 있다.
증명 의 검증과 관련한 사용을 위해 검증 키 를 제공하기 위한 다양한 기법이 있다. 도 6은 작업자가 증명 의 검증에서 사용될 확인 키 를 공급하는 예시적인 도해(600)이다. 트랜잭션 출력(602)은 비트코인 기반 시스템에 따를 수 있고 출력 값(604), (선택적으로, 몇몇 시스템에서) 잠금 스크립트(606), 그리고 잠금 스크립트(608)를 포함할 수 있다. 실시예에서, 트랜잭션은 비트코인 기반 시스템에 따른 스크립트 해시에의 지불(Pay-to-Script-Hash)(P2SH) 트랜잭션이다. 실시예에서, 트랜잭션 출력(612)은 비트코인 기반 시스템에 따르며 위의 도 5와 관련하여 기술된 바와 같이 트랜잭션 ID(614), 출력 인덱스(616), 잠금해제 스크립트 크기(618), 잠금해제 스크립트(618) 및 시퀀스 번호(622)를 포함한다. 도 6에 기술된 트랜잭션의 구조는 도 5에 기술된 것에 따를 수 있는 한편, 도 6은, 특히, P2SH 트랜잭션에 따른 잠금 스크립트(608) 및 잠금해제 스크립트(618)를 포함할 수 있음에 유의하여야 한다. 클라이언트(610)는 확인 키 및 리딤 스크립트(628)를 생성하고 이를 작업자(624)에 제공할 수 있다.
실시예에서, 블록체인 시스템은 다양한 유형의 트랜잭션을 지원한다. 실시예에서, 지원되는 트랜잭션(가령, 표준 트랜잭션)은 비트코인 기반 시스템에 따른 스크립트 해시에의 지불(Pay-to-Script-Hash)(P2SH) 트랜잭션과 같은 스크립트 해시 기반(script-hash-based) 트랜잭션이다. 일반적으로 말하면, 스크립트 해시 기반 트랜잭션은 잠금해제 스크립트의 유효성을 확인하는 것이 지정된 해시 값과 매칭되는 스크립트를 제공하는 것을 포함하는 임의의 트랜잭션을 가리킨다. 예를 들어, 비트코인 기반 P2SH 트랜잭션에서, 잠금해제 스크립트(620)는 리딤 스크립트(628)를 포함하고 잠금 스크립트(608)는 잠금해제 스크립트에 의해 공급되는 리딤 스크립트의 해시가 지정된 값과 매칭된다는 적어도 하나의 조건을 포함한다. 예를 들어, 비트코인 기반 시스템에서, 잠금 스크립트는 다음에 기반하여 기술될 수 있다:
몇몇 경우에, 작업자(624)는 검증 국면에서 사용될 확인 키 (626)를 제공한다. 검증 국면을 체크하는 잠금해제 조건은, 실시예에서, 리딤 스크립트 내에 저장될 수 있다. 실시예에서, P2SH 트랜잭션의 잠금 스크립트는 리딤 스크립트의 해시를 포함하고, 몇몇 경우에, 리딤 스크립트는 비밀로 유지되며(가령, 작업자에 의해 암호화됨) 출력 값의 전이를 야기하는 표시 상에 드러날 뿐이다.
실시예에서, 클라이언트(610)는 리딤 스크립트를 식별함으로써 P2SH 미지출 트랜잭션 출력(unspent transaction output)을 생성하고 그것에 해시를 적용한다(가령, HASH160). UTXO를 전이하기 위하여, 클라이언트는 리딤 스크립트를 포함하고/거나 그렇지 않으면 참조하는 입력 스크립트(이는 UTXO를 참조함)를 생성한다. 실시예에서, 리딤 스크립트는 임의적인 데이터를 저장하기에 적합한데, 다만 블록체인 기반 시스템은 리딤 스크립트에 포함될 수 있는 데이터의 유형 또는 양에 대해 제한을 가질 수 있음에 유의하여야 한다. 예를 들어, 비트코인 기반 시스템과 관련하여 스택에 공개될 수 있는 데이터의 크기에 대해 한도가 있을 수 있다(가령, PUSHDATA 동작은 520 바이트의 데이터에 한정됨). 실시예에서, 리딤 스크립트는 도 4와 관련하여 기술된 바와 같이, 각각, 압축된 및 압축되지 않은 점 및 을 포함한다. 따라서, 실시예에서, 비트코인 기반 프로토콜에 따라 리딤 스크립트 내에 저장될 수 있는 타원 곡선 점의 최대 개수는 15개의 압축된 점(가령, 15개의 점 * 34 바이트/점 = 510 바이트) 또는 7개의 압축되지 않은 점(7개의 점 * 66 바이트/점 = 462 바이트)이다. 실시예에서, 잠금해제 스크립트(618)는 증명(630), 리딤 스크립트(628) 및 커맨드(가령, 옵코드)(잠금 스크립트(608) 내에 인코딩된 조건의 세트를 만족시키는 데에 집합적으로 사용될 수 있음)를 포함한다.
도 7은 실시예에 따라 리딤 스크립트를 생성하기 위한 프로세스(700)의 예시적인 도해이다. 실시예에서, 프로세스(700)는 하드웨어, 소프트웨어, 또는 이의 조합을 사용하여 구현된다. 프로세스를 수행하기 위한 적합한 시스템은 도 6의 논의와 관련하여 P2SH 잠금해제 스크립트를 공급하는 작업자를 포함한다.
실시예에서, 시스템은 확인 키 가 충분한 기수(cardinality)의 것임을 판정한다. 실시예에서, 시스템은 확인 키의 각각의 요소 및 제약의 세트를 체크하는 스크립트를 포함하는 리딤 스크립트의 크기를 판정하는데(702), 리딤 스크립트 및 증명 은 대응하는 잠금 스크립트를 잠금해제하기에 충분하다. 시스템은 그러한 리딤 스크립트의 크기가 사전결정된 임계(이는 블록체인 프로토콜에 의해 부과된 크기 한도에 기반할 수 있는데 - 예를 들어, 블록체인 프로토콜은 리딤 스크립트가 크기에 있어서 520 바이트 이하일 것을 요구할 수 있음)를 초과하는지를(704) 판정할 수 있다. 만일 리딤 스크립트가 충분한 크기의 것인 경우, 시스템은 리딤 스크립트 및 잠금해제 스크립트를 생성하는데(706) 리딤 스크립트는 제약의 세트를 체크하는 스크립트 및 확인 키를 포함하며 잠금해제 스크립트는 증명 을 포함하되, 리딤 스크립트 및 잠금해제 스크립트는 함께, 지불 트랜잭션을 검증하기에 충분한 커맨드의 세트를 포함한다.
여기서 리딤 스크립트 및 잠금해제 스크립트는 잠금 스크립트를 잠금해제하기에 충분하다.
만일 리딤 스크립트가 사전결정된 임계를 초과하는 경우, 시스템은 리딤 스크립트의 총 크기가 임계 내에 있도록 리딤 스크립트에 선행하는 잠금해제 스크립트의 부분에 확인 키 의 하나 이상의 요소를 저장하는 잠금해제 스크립트를 생성하고(708) 위에서 기술된 바와 같이 제약 및 확인 키의 요소로써 리딤 스크립트를 생성한다(710). 실시예에서, 확인 키 의 하나 이상의 요소는 잠금해제 스크립트 내에서 다른 데에 인코딩될 수 있다. 예를 들어, 의 기수가 15보다 큰 경우에 그것은 다음일 수 있다:
여기서 리딤 스크립트 및 잠금해제 스크립트는 잠금 스크립트를 잠금해제하기에 충분하다.
그러므로, 잠금 스크립트 내에 검증 국면에서 필요한 스테이지를 인코딩함으로써, 트랜잭션의 검증은 zk-프로토콜의 검증 국면과 등가 프로세스가 되겠다. 실시예에서, OP_VERIFYPROOF 옵 코드는 다음과 같이 사용될 수 있다.
잠금해제 및 잠금 스크립트는 임의의 적합한 방식으로 구현될 수 있다. 잠금해제 스크립트는 잠금해제 스크립트가 및 확인 키 를 인코딩하는 임의의 적합한 방식으로 구현된다. 유사하게, 잠금 스크립트는 및 가 추출되고 페어링 호출이 행해지는 임의의 적합한 방식으로 구현될 수 있다. 실시예에서, 위에서 기술된 바와 같은 OP_PAIRING은 식 에 의해 정의된 bn128 곡선과 같은 효율적인 이선형 맵핑으로써 타원 곡선을 지원하는 옵 코드이다.
도 8은 본 개시의 적어도 하나의 실시예를 실시하는 데에 사용될 수 있는 컴퓨팅 디바이스(800)의 예시적인, 단순화된 블록도이다. 다양한 실시예에서, 컴퓨팅 디바이스(800)는 위에서 예시되고 기술된 시스템 중 임의의 것을 구현하는 데에 사용될 수 있다. 예를 들어, 컴퓨팅 디바이스(800)는 데이터 서버(data server), 웹 서버(web server), 휴대가능 컴퓨팅 디바이스(portable computing device), 개인용 컴퓨터(personal computer), 또는 임의의 전자 컴퓨팅 디바이스로서의 사용을 위해 구성될 수 있다. 도 8에 도시된 바와 같이, 컴퓨팅 디바이스(800)는, 실시예에서, 버스 서브시스템(804)를 통해 다수의 주변 서브시스템과 통신하고 이에 동작가능하게 커플링된 하나 이상의 프로세서(802)를 포함할 수가 있다. 몇몇 실시예에서, 이들 주변 서브시스템은 메모리 서브시스템(808) 및 파일/디스크 저장 서브시스템(810)을 포함하는 저장 서브시스템(806)과, 하나 이상의 사용자 인터페이스 입력 디바이스(812)와, 하나 이상의 사용자 인터페이스 출력 디바이스(814)와, 네트워크 인터페이스 서브시스템(816)을 포함한다. 그러한 저장 서브시스템(806)은 정보의 임시적(temporary) 또는 장기(long-term) 저장을 위해 사용될 수가 있다.
몇몇 실시예에서, 버스 서브시스템(804)은 컴퓨팅 디바이스(800)의 다양한 컴포넌트 및 서브시스템으로 하여금 의도된 바와 같이 서로 통신할 수 있게 하기 위한 메커니즘을 제공한다. 버스 서브시스템(804)이 단일 버스로서 도식적으로 도시되나, 버스 서브시스템의 대안적인 실시예는 여러 버스를 활용한다. 몇몇 실시예에서, 네트워크 인터페이스 서브시스템(816)은 다른 컴퓨팅 디바이스 및 네트워크에 인터페이스를 제공한다. 네트워크 인터페이스 서브시스템(816)은, 몇몇 실시예에서, 컴퓨팅 디바이스(800)로부터 다른 시스템에 데이터를 송신하고, 이로부터 데이터를 수신하기 위한 인터페이스로서의 역할을 한다. 몇몇 실시예에서, 버스 서브시스템(804)은 상세사항, 검색 용어 및 기타 등등과 같은 데이터를 통신하기 위해 활용된다.
몇몇 실시예에서, 사용자 인터페이스 입력 디바이스(812)는 하나 이상의 사용자 입력 디바이스, 예컨대 키보드; 포인팅(pointing) 디바이스, 예컨대 일체화된 마우스(mouse), 트랙볼(trackball), 터치패드(touchpad), 또는 그래픽스 태블릿(graphics tablet); 스캐너(scanner); 바코드(barcode) 스캐너; 디스플레이 내에 통합된 터치 스크린(touch screen); 오디오 입력 디바이스, 예컨대 음성 인식 시스템, 마이크(microphone); 및 다른 유형의 입력 디바이스를 포함한다. 일반적으로, 용어 "입력 디바이스"의 사용은 컴퓨팅 디바이스(800)에 정보를 입력하기 위한 모든 가능한 유형의 디바이스 및 메커니즘을 포함하도록 의도된다. 몇몇 실시예에서, 하나 이상의 사용자 인터페이스 출력 디바이스(814)는 디스플레이 서브시스템, 프린터, 또는 비시각적(non-visual) 디스플레이, 예컨대 오디오 출력 디바이스 등을 포함한다. 몇몇 실시예에서, 디스플레이 서브시스템은 음극선관(Cathode Ray Tube: CRT), 평판 디바이스(flat-panel device), 예컨대 액정 디스플레이(Liquid Crystal Display: LCD), 발광 다이오드(Light Emitting Diode: LED) 디스플레이, 또는 프로젝션(projection) 또는 다른 디스플레이 디바이스를 포함한다. 일반적으로, 용어 "출력 디바이스"의 사용은 컴퓨팅 디바이스(800)로부터 정보를 출력하기 위한 모든 가능한 유형의 디바이스 및 메커니즘을 포함하도록 의도된다. 하나 이상의 사용자 인터페이스 출력 디바이스(814)는, 예를 들어, 기술된 프로세스 및 거기에서의 변형을 수행하는 애플리케이션과의 사용자 상호작용을, 그러한 상호작용이 적절할 수 있는 경우에 수월하게 하기 위해 사용자 인터페이스를 제시하는 데에, 사용될 수 있다.
몇몇 실시예에서, 저장 서브시스템(806)은 본 개시의 적어도 하나의 실시예의 기능성을 제공하는 기본적인 프로그래밍 및 데이터 구성체를 저장하기 위한 컴퓨터 판독가능 저장 매체를 제공한다. 애플리케이션(프로그램, 코드 모듈, 명령어)은, 몇몇 실시예에서 하나 이상의 프로세서에 의해 실행되는 경우에, 본 개시의 하나 이상의 실시예의 기능성을 제공하고, 실시예에서, 저장 서브시스템(806) 내에 저장된다. 이들 애플리케이션 모듈 또는 명령어는 하나 이상의 프로세서(802)에 의해 실행될 수 있다. 다양한 실시예에서, 저장 서브시스템(806)은 본 개시에 따라 사용되는 데이터를 저장하기 위한 저장소(repository)를 추가적으로 제공한다. 몇몇 실시예에서, 저장 서브시스템(806)은 메모리 서브시스템(808) 및 파일/디스크 저장 서브시스템(810)을 포함한다.
실시예에서, 메모리 서브시스템(808)은 다수의 메모리, 예컨대 프로그램 실행 동안 명령어 및 데이터의 저장을 위한 주(main) 랜덤 액세스 메모리(Random Access Memory: RAM)(818) 및/또는 고정된 명령어가 저장될 수 있는 판독 전용 메모리(Read Only Memory: ROM)(820)를 포함한다. 몇몇 실시예에서, 파일/디스크 저장 서브시스템(810)은 프로그램 및 데이터 파일을 위한 비일시적인 영속적(비휘발성(non-volatile)) 저장을 제공하며 하드 디스크 드라이브(hard disk drive), 연관된 탈거가능(removable) 매체와 함께인 플로피 디스크 드라이브(floppy disk drive), 컴팩트 디스크 판독 전용 메모리(Compact Disk Read Only Memory: CD-ROM) 드라이브, 광학 드라이브(optical drive), 탈거가능 매체 카트리지(cartridge), 또는 다른 비슷한 저장 매체를 포함할 수 있다.
몇몇 실시예에서, 컴퓨팅 디바이스(800)는 적어도 하나의 로컬 클록(local clock)(824)을 포함한다. 로컬 클록(824)은, 몇몇 실시예에서, 특정한 시작 날짜로부터 발생한 틱(tick)의 수를 나타내는 카운터(counter)이고, 몇몇 실시예에서, 컴퓨팅 디바이스(800) 내에 일체화되어(integrally) 위치된다. 다양한 실시예에서, 로컬 클록(824)은 컴퓨팅 디바이스(800)을 위한 프로세서 및 거기에 포함된 서브시스템에서 데이터 전송을 동기화하는 데에 사용되며 컴퓨팅 디바이스(800) 및 데이터 센터 내의 다른 시스템 간의 동기식 동작을 조정하는 데에 사용될 수 있다. 다른 실시예에서, 로컬 클록은 프로그램가능 간격 타이머(programmable interval timer)이다.
컴퓨팅 디바이스(800)는 휴대가능 컴퓨터 디바이스(portable computer device), 태블릿 컴퓨터(tablet computer), 워크스테이션(workstation), 또는 아래에 기술된 임의의 다른 디바이스를 포함하는 다양한 유형 중 임의의 것일 수가 있다. 추가적으로, 컴퓨팅 디바이스(800)는, 몇몇 실시예에서, 하나 이상의 포트(port)(가령, USB, 헤드폰 잭(headphone jack), 라이트닝 커넥터(Lightning connector) 등)를 통해서 컴퓨팅 디바이스(800)에 연결될 수 있는 다른 디바이스를 포함할 수 있다. 실시예에서, 그러한 디바이스는 광섬유 커넥터(fibre-optic connector)를 수용하는 포트를 포함한다. 따라서, 몇몇 실시예에서, 이 디바이스는 광학 신호를, 처리를 위해 디바이스를 컴퓨팅 디바이스(800)에 연결하는 포트를 통해서 송신되는 전기 신호로 변환하는 것이다. 컴퓨터 및 네트워크의 늘 변화하는 성질로 인해, 도 8에 묘사된 컴퓨팅 디바이스(800)의 설명은 디바이스의 바람직한 실시예를 예시하는 목적으로 단지 구체적인 예로서 의도된다. 도 8에 묘사된 시스템보다 더 많거나 더 적은 컴포넌트를 갖는 많은 다른 구성이 가능하다.
앞서 언급된 실시예는 발명을 한정하기보다는 예시한다는 점, 그리고 당업자는 부기된 청구항에 의해 정의된 바와 같은 발명의 범위로부터 벗어나지 않고서 많은 대안적인 실시예를 설계하는 것이 가능할 것이라는 점에 유의하여야 한다. 청구항에서, 괄호 안에 놓인 임의의 참조 부호는 청구항을 한정하는 것으로 해석되어서는 안 된다. 단어 "포함하는"(comprising) 및 "포함한다"(comprises), 그리고 유사한 것은, 전체적으로 명세서 또는 임의의 청구항 내에 열거된 것이 아닌 요소 또는 단계의 존재를 배제하지 않는다. 본 명세서에서, "comprises"는 "includes or consists of"를 의미하고 "comprising"은 "including or consisting of"를 의미한다. 요소의 단수형 참조는 그러한 요소의 복수형 참조를 배제하지 않으며 반대로도 마찬가지이다. 발명은 몇 개의 구별되는 요소를 포함하는 하드웨어에 의해서, 그리고 적절하게 프로그래밍된 컴퓨터에 의해서 구현될 수 있다. 몇 개의 수단을 나열하는 디바이스 청구항에서, 이들 수단 중 몇 개는 하드웨어의 동일한 한 아이템에 의해 체현될(embodied) 수 있다. 상호간에 상이한 종속 청구항에서 어떤 조치가 상술된다는 단순한 사실이 이들 조치의 조합이 이익이 되도록 사용될 수 없음을 나타내지는 않는다.
본 문서에서 인용된, 간행물, 특허 출원 및 특허를 포함하는 모든 참조문은 이로써 마치 각각의 참조문이 참조에 의해 포함되도록 개별적으로 그리고 구체적으로 나타내어지고 본 문서에서 전체로서 개진된 것과 동일한 정도로 참조에 의해 포함된다.
Claims (15)
- 디지털 자산의 표시와, 상기 디지털 자산의 제어를 전이하기(transferring) 위한 조건의 세트를 인코딩하는 잠금 스크립트(locking script)를 포함하는 트랜잭션(transaction)의 트랜잭션 출력을 생성하는 단계 - 조건의 상기 세트의 만족은 확인 키(verification key) 및 증명(proof)에 적어도 부분적으로 기반하여 판정될 것임 - 와,
상기 트랜잭션의 트랜잭션 입력을 생성하는 단계 - 상기 트랜잭션 입력은, 상기 트랜잭션 출력과 연관된 식별자와, 상기 증명을 포함하는 잠금해제 스크립트(unlocking script)를 포함함 - 와,
상기 잠금 스크립트 및 상기 잠금해제 스크립트에 적어도 부분적으로 기반하여 조건의 상기 세트가 만족됨을 확인하는 단계와,
조건의 상기 세트의 만족을 확인하는 것에 응답하여 상기 디지털 자산의 제어를 전이하는 단계를 포함하는
컴퓨터 구현형 방법. - 제1항에 있어서,
상기 확인 키는 유한 필드(finite field)의 제1 복수의 요소를 포함하고 상기 증명은 상기 유한 필드의 제2 복수의 요소를 포함하는,
컴퓨터 구현형 방법. - 제2항에 있어서,
상기 유한 필드의 요소는 타원 곡선 상의 점인,
컴퓨터 구현형 방법. - 제2항 또는 제3항에 있어서,
상기 유한 필드의 상기 요소는 압축된 포맷(compressed format)으로 인코딩된,
컴퓨터 구현형 방법. - 제1항 내지 제4항 중 어느 한 항에 있어서,
클라이언트가 상기 클라이언트와 연관된 제1 디지털 인증서(certificate) 및 상기 확인 키로써 상기 트랜잭션 입력을 인코딩하고, 작업자가 상기 작업자와 연관된 제2 디지털 인증서 및 상기 증명으로써 상기 트랜잭션 입력을 인코딩하는,
컴퓨터 구현형 방법. - 제1항 내지 제5항 중 어느 한 항에 있어서,
상기 잠금 스크립트는 조건의 상기 세트 중의 조건이 상기 잠금해제 스크립트에 의해 불만족됨에 부수하여, 상기 디지털 자산의 제공자를 위해 상기 디지털 자산을 수복하는(reclaim) 명령어를 포함하는,
컴퓨터 구현형 방법. - 제1항 내지 제6항 중 어느 한 항에 있어서,
상기 잠금해제 스크립트는 리딤 스크립트(redeem script)를 더 포함하되, 상기 확인 키 및 상기 리딤 스크립트는 조건의 상기 세트를 만족할 것이고,
상기 잠금 스크립트는 조건의 상기 세트 중의 조건을 상기 리딤 스크립트의 해시(hash)가 사전결정된 값과 매칭됨으로 인코딩하는,
컴퓨터 구현형 방법. - 제7항에 있어서,
상기 리딤 스크립트는 크기가 520 바이트 이하인,
컴퓨터 구현형 방법. - 제7항 또는 제8항에 있어서,
상기 잠금해제 스크립트는 상기 확인 키의 하나 이상의 요소를 포함하는,
컴퓨터 구현형 방법. - 제7항 내지 제9항 중 어느 한 항에 있어서,
상기 트랜잭션은 비트코인 기반 프로토콜에 따른 P2SH 트랜잭션인,
컴퓨터 구현형 방법. - 제1항 내지 제10항 중 어느 한 항에 있어서,
상기 트랜잭션은 블록체인 기반 프로토콜에 따른 표준 트랜잭션인,
컴퓨터 구현형 방법. - 제1항 내지 제11항 중 어느 한 항에 있어서,
상기 잠금 스크립트 및 잠금해제 스크립트는 스택 기반 스크립팅 언어(stack-based scripting language)로 인코딩된,
컴퓨터 구현형 방법. - 제1항 내지 제12항 중 어느 한 항에 있어서,
조건의 상기 세트는 이선형(bilinear) 제약을 포함하는,
컴퓨터 구현형 방법. - 시스템으로서,
프로세서와,
상기 프로세서에 의해 실행되는 것의 결과로서, 상기 시스템으로 하여금 제1항 내지 제13항 중 어느 한 항에 따른 컴퓨터 구현형 방법을 수행하게 하는 실행가능 명령어를 포함하는 메모리를 포함하는,
시스템. - 컴퓨터 시스템의 프로세서에 의해 실행되는 것의 결과로서, 상기 컴퓨터 시스템으로 하여금 제1항 내지 제13항 중 어느 한 항에 따른 컴퓨터 구현형 방법을 적어도 수행하게 하는 실행가능 명령어가 저장된 비일시적 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (13)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1718505.9 | 2017-11-09 | ||
GBGB1718505.9A GB201718505D0 (en) | 2017-11-09 | 2017-11-09 | Computer-implemented system and method |
GBGB1719998.5A GB201719998D0 (en) | 2017-11-30 | 2017-11-30 | Computer-Implemented system and method |
GB1719998.5 | 2017-11-30 | ||
GBGB1720768.9A GB201720768D0 (en) | 2017-12-13 | 2017-12-13 | Computer-implemented system and method |
GB1720768.9 | 2017-12-13 | ||
GB1801753.3 | 2018-02-02 | ||
GBGB1801753.3A GB201801753D0 (en) | 2018-02-02 | 2018-02-02 | Computer-implemented system and method |
GBGB1805948.5A GB201805948D0 (en) | 2018-04-10 | 2018-04-10 | Computer-implemented system and method |
GB1805948.5 | 2018-04-10 | ||
GBGB1806444.4A GB201806444D0 (en) | 2018-04-20 | 2018-04-20 | Computer-implemented system and method |
GB1806444.4 | 2018-04-20 | ||
PCT/IB2018/058433 WO2019092543A1 (en) | 2017-11-09 | 2018-10-29 | System for securing verification key from alteration and verifying validity of a proof of correctness |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200079503A true KR20200079503A (ko) | 2020-07-03 |
Family
ID=64100702
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207014209A KR20200086284A (ko) | 2017-11-09 | 2018-10-29 | 최적화된 확인 가능한 계산을 위해 실행 가능한 명령어를 단순화하기 위한 시스템 |
KR1020207014108A KR20200086282A (ko) | 2017-11-09 | 2018-10-29 | 검증 가능한 계산을 위한 c-형 스마트 계약의 산술 연산 강화 |
KR1020207014203A KR20200080265A (ko) | 2017-11-09 | 2018-10-29 | 블록체인 상에 확인 키를 기록하기 위한 시스템 |
KR1020207014213A KR20200079503A (ko) | 2017-11-09 | 2018-10-29 | 확인 키를 변경으로부터 보호하고 정확성 증명의 유효성을 확인하기 위한 시스템 |
KR1020207014106A KR20200086281A (ko) | 2017-11-09 | 2018-11-01 | 분산형 컴퓨팅 시스템 및 방법 |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207014209A KR20200086284A (ko) | 2017-11-09 | 2018-10-29 | 최적화된 확인 가능한 계산을 위해 실행 가능한 명령어를 단순화하기 위한 시스템 |
KR1020207014108A KR20200086282A (ko) | 2017-11-09 | 2018-10-29 | 검증 가능한 계산을 위한 c-형 스마트 계약의 산술 연산 강화 |
KR1020207014203A KR20200080265A (ko) | 2017-11-09 | 2018-10-29 | 블록체인 상에 확인 키를 기록하기 위한 시스템 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207014106A KR20200086281A (ko) | 2017-11-09 | 2018-11-01 | 분산형 컴퓨팅 시스템 및 방법 |
Country Status (9)
Country | Link |
---|---|
US (9) | US11575511B2 (ko) |
EP (7) | EP3707623A1 (ko) |
JP (10) | JP2021502636A (ko) |
KR (5) | KR20200086284A (ko) |
CN (7) | CN111406379A (ko) |
SG (5) | SG11202004149UA (ko) |
TW (2) | TWI806918B (ko) |
WO (5) | WO2019092545A1 (ko) |
ZA (1) | ZA202002575B (ko) |
Families Citing this family (49)
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 |
JP2021502636A (ja) | 2017-11-09 | 2021-01-28 | エヌチェーン ホールディングス リミテッドNchain Holdings Limited | 検証可能な計算のためのcライクなスマートコントラクトの算術的強化 |
CN110032568B (zh) * | 2018-12-20 | 2020-05-12 | 阿里巴巴集团控股有限公司 | 数据结构的读取及更新方法、装置、电子设备 |
WO2020197514A1 (en) * | 2019-03-27 | 2020-10-01 | Koc Universitesi | A distributed hash table based blockchain architecture for resource constrained environments |
GB201907396D0 (en) | 2019-05-24 | 2019-07-10 | Nchain Holdings Ltd | Hash function attacks |
GB201907347D0 (en) * | 2019-05-24 | 2019-07-10 | Nchain Holdings Ltd | In-script functions within a blockchain transaction |
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 |
US11539527B2 (en) | 2019-05-29 | 2022-12-27 | International Business Machines Corporation | Peer node recovery via approximate hash verification |
US11570002B2 (en) | 2019-05-29 | 2023-01-31 | International Business Machines Corporation | Reduced-step blockchain verification of media file |
US11711202B2 (en) | 2019-05-29 | 2023-07-25 | International Business Machines Corporation | Committing data to blockchain based on approximate hash verification |
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 |
CN111095338B (zh) * | 2019-06-28 | 2023-06-30 | 创新先进技术有限公司 | 用于执行不同类型区块链合约的系统和方法 |
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 | 杭州宇链科技有限公司 | 一种采集可信数据的模组以及数据传输方法 |
JPWO2021166782A1 (ko) * | 2020-02-21 | 2021-08-26 | ||
US11792022B2 (en) | 2020-02-21 | 2023-10-17 | International Business Machines Corporation | Resolution of conflicting data |
US11188316B2 (en) * | 2020-03-09 | 2021-11-30 | International Business Machines Corporation | Performance optimization of class instance comparisons |
CN111506783B (zh) * | 2020-04-08 | 2023-12-22 | 百度在线网络技术(北京)有限公司 | 区块链中事务请求处理方法、装置、设备和介质 |
CA3091660A1 (en) * | 2020-08-31 | 2021-11-03 | Polymath Inc. | Method, system, and medium for blockchain-enabled atomic settlement |
CN111768187A (zh) | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种部署智能合约的方法、区块链节点和存储介质 |
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 | 엘에스웨어(주) | 키 정보를 이용한 트랜잭션 분류 시스템 및 방법 |
EP4256751A1 (en) * | 2020-12-02 | 2023-10-11 | Trock, Stanislav | Blockchain |
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 | 충남대학교 산학협력단 | 동적 연산을 통한 검증이 가능한 영지식 증명 시스템 및 증명 방법 |
US11144978B1 (en) * | 2021-02-25 | 2021-10-12 | Mythical, Inc. | Systems and methods to support custom bundling of virtual items within an online game |
US12041190B2 (en) * | 2021-06-25 | 2024-07-16 | 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 |
CN116820419A (zh) * | 2022-03-22 | 2023-09-29 | 瑞昱半导体股份有限公司 | 源代码校验方法及非暂态计算机可读存储介质装置 |
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 | 南方科技大学 | 一种基于区块链和零知识证明的验证方法、系统及设备 |
GB2627756A (en) * | 2023-02-28 | 2024-09-04 | Nchain Licensing Ag | Verification of scalar multiplication of elliptic curve points in script |
GB2627757A (en) * | 2023-02-28 | 2024-09-04 | Nchain Licensing Ag | Verification of scalar multiplication of elliptic curve points in script |
GB2627758A (en) * | 2023-02-28 | 2024-09-04 | Nchain Licensing Ag | Verification of scalar multiplication of elliptic curve points in script |
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 (118)
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 |
US6732336B2 (en) * | 2001-10-11 | 2004-05-04 | California Institute Of Technology | Method and apparatus for an asynchronous pulse logic circuit |
US7209555B2 (en) | 2001-10-25 | 2007-04-24 | Matsushita Electric Industrial Co., Ltd. | Elliptic curve converting device, elliptic curve converting method, elliptic curve utilization device and elliptic curve generating device |
US7085701B2 (en) | 2002-01-02 | 2006-08-01 | International Business Machines Corporation | Size reduction techniques for vital compliant VHDL simulation models |
US7281017B2 (en) * | 2002-06-21 | 2007-10-09 | Sumisho Computer Systems Corporation | Views for software atomization |
US6983456B2 (en) | 2002-10-31 | 2006-01-03 | Src Computers, Inc. | Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms |
US7178118B2 (en) * | 2003-05-30 | 2007-02-13 | Synplicity, Inc. | Method and apparatus for automated circuit design |
US20060149962A1 (en) | 2003-07-11 | 2006-07-06 | Ingrian Networks, Inc. | Network attached encryption |
US7590236B1 (en) | 2004-06-04 | 2009-09-15 | Voltage Security, Inc. | Identity-based-encryption system |
US7697691B2 (en) * | 2004-07-14 | 2010-04-13 | Intel Corporation | Method of delivering Direct Proof private keys to devices using an on-line service |
US8200700B2 (en) | 2005-02-01 | 2012-06-12 | Newsilike Media Group, Inc | Systems and methods for use of structured and unstructured distributed data |
US20160004820A1 (en) * | 2005-02-01 | 2016-01-07 | Newsilike Media Group, Inc. | Security facility for maintaining health care data pools |
EP1964305B1 (en) * | 2005-12-13 | 2014-07-30 | Koninklijke Philips N.V. | Secure threshold decryption protocol computation |
TW200725415A (en) | 2005-12-30 | 2007-07-01 | Tatung Co Ltd | Method for automatically translating high level programming language into hardware description language |
JP4547503B2 (ja) * | 2006-03-07 | 2010-09-22 | 国立大学法人徳島大学 | 算術符号化装置、算術符号化方法、算術符号化プログラム及びプログラムを格納したコンピュータで読み取り可能な記録媒体 |
US7926040B2 (en) | 2006-09-06 | 2011-04-12 | International Business Machines Corporation | Method and system for timing code execution in a korn shell script |
WO2008053650A1 (en) | 2006-10-30 | 2008-05-08 | Nec Corporation | Common key block encrypting device, its method, its program, and recording medium |
FR2918525A1 (fr) | 2007-07-06 | 2009-01-09 | France Telecom | Procede asymetrique de chiffrement ou de verification de signature. |
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 |
US8667301B2 (en) * | 2010-04-01 | 2014-03-04 | Apple Inc. | Obfuscating transformations on data array content and addresses |
RU2527207C2 (ru) | 2010-04-27 | 2014-08-27 | Нек Корпорейшн | Устройство кодирования, способ конфигурирования кода с исправлением ошибок и программа для них |
WO2012126086A1 (en) | 2011-03-18 | 2012-09-27 | Certicom Corp. | Secure financial transactions |
US8924966B1 (en) * | 2011-03-31 | 2014-12-30 | Emc Corporation | Capture/revert module for complex assets of distributed information technology infrastructure |
US9569771B2 (en) | 2011-04-29 | 2017-02-14 | Stephen Lesavich | Method and system for storage and retrieval of blockchain blocks using galois fields |
US8607129B2 (en) | 2011-07-01 | 2013-12-10 | Intel Corporation | Efficient and scalable cyclic redundancy check circuit using Galois-field arithmetic |
JP5697153B2 (ja) | 2011-08-04 | 2015-04-08 | キヤノンマーケティングジャパン株式会社 | 情報処理システム、携帯端末、制御方法、及びプログラム |
US8745376B2 (en) | 2011-10-14 | 2014-06-03 | Certicom Corp. | Verifying implicit certificates and digital signatures |
US9215076B1 (en) * | 2012-03-27 | 2015-12-15 | Amazon Technologies, Inc. | Key generation for hierarchical data access |
US20150379510A1 (en) | 2012-07-10 | 2015-12-31 | Stanley Benjamin Smith | Method and system to use a block chain infrastructure and Smart Contracts to monetize data transactions involving changes to data included into a data supply chain. |
CN104823161B (zh) * | 2012-11-07 | 2018-10-09 | 皇家飞利浦有限公司 | 生成无运算符代码的编译器 |
US9306738B2 (en) * | 2012-12-21 | 2016-04-05 | Microsoft Technology Licensing, Llc | Managed secure computations on encrypted data |
EP2946329A4 (en) * | 2013-01-16 | 2016-08-31 | Mcafee Inc | MALIGNANT SCRIPT LANGUAGE CODE DETECTION IN A NETWORK ENVIRONMENT |
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 |
SI3073670T1 (sl) | 2015-03-27 | 2021-07-30 | Black Gold Coin, Inc. | Sistem in postopek za osebno identifikacijo in verifikacijo |
WO2016155804A1 (en) | 2015-03-31 | 2016-10-06 | Nec Europe Ltd. | Method for verifying information |
AU2016242888A1 (en) * | 2015-03-31 | 2017-11-16 | Nasdaq, Inc. | Systems and methods of blockchain transaction recordation |
US20160321751A1 (en) * | 2015-04-28 | 2016-11-03 | Domus Tower, Inc. | Real-time settlement of securities trades over append-only ledgers |
US20160342977A1 (en) * | 2015-05-20 | 2016-11-24 | Vennd.io Pty Ltd | Device, method and system for virtual asset transactions |
JP2017004044A (ja) | 2015-06-04 | 2017-01-05 | 富士通株式会社 | ライセンス管理プログラム、ライセンス管理方法、およびライセンス管理システム |
CN106293892B (zh) | 2015-06-26 | 2019-03-19 | 阿里巴巴集团控股有限公司 | 分布式流计算系统、方法和装置 |
WO2017008829A1 (en) | 2015-07-10 | 2017-01-19 | Nec Europe Ltd. | A method and a system for reliable computation of a program |
US10366204B2 (en) * | 2015-08-03 | 2019-07-30 | Change Healthcare Holdings, Llc | System and method for decentralized autonomous healthcare economy platform |
US20170091726A1 (en) * | 2015-09-07 | 2017-03-30 | NXT-ID, Inc. | Low bandwidth crypto currency transaction execution and synchronization method and system |
CN113320249B (zh) * | 2015-09-30 | 2023-03-14 | 积水化学工业株式会社 | 夹层玻璃用中间膜及夹层玻璃 |
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 |
WO2017090041A1 (en) * | 2015-11-24 | 2017-06-01 | Ben-Ari Adi | A 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 |
US11604889B2 (en) * | 2015-12-22 | 2023-03-14 | Intel Corporation | Efficient and secure sharing of large data repositories |
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 |
ES2680851T3 (es) * | 2016-02-23 | 2018-09-11 | nChain Holdings Limited | Registro y método de gestión automática para contratos inteligentes ejecutados por cadena de bloques |
CN117611331A (zh) * | 2016-02-23 | 2024-02-27 | 区块链控股有限公司 | 用于使用区块链在点对点分布式账簿上有效转移实体的方法及系统 |
SG10202007904SA (en) | 2016-02-23 | 2020-10-29 | Nchain Holdings Ltd | A method and system for securing computer software using a distributed hash table and a blockchain |
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 |
US11170371B2 (en) | 2016-03-03 | 2021-11-09 | Nec Corporation | Method for managing data in a network of nodes |
US11017387B2 (en) | 2016-03-24 | 2021-05-25 | International Business Machines Corporation | Cryptographically assured zero-knowledge cloud services for elemental transactions |
US11017388B2 (en) | 2016-03-25 | 2021-05-25 | International Business Machines Corporation | Cryptographically assured zero-knowledge cloud service for composable atomic transactions |
US10839096B2 (en) | 2016-03-28 | 2020-11-17 | International Business Machines Corporation | Cryptographically provable zero-knowledge content distribution network |
US20170287090A1 (en) | 2016-03-31 | 2017-10-05 | Clause, Inc. | System and method for creating and executing data-driven legal contracts |
PT3440823T (pt) | 2016-04-05 | 2020-12-04 | Zamna Tech Limited | Método e sistema para gestão de informações pessoais dentro de sistemas informáticos independentes e redes digitais |
US10545739B2 (en) | 2016-04-05 | 2020-01-28 | International Business Machines Corporation | LLVM-based system C compiler for architecture synthesis |
US11455630B2 (en) | 2016-04-11 | 2022-09-27 | nChain Holdings Limited | Method for secure peer-to-peer communication on a blockchain |
US20170300897A1 (en) * | 2016-04-14 | 2017-10-19 | American Express Travel Related Services Company, Inc. | Systems and Methods for an Electronic Wallet Payment Tool |
US10803537B2 (en) * | 2016-04-18 | 2020-10-13 | R3 Ltd. | System and method for managing transactions in dynamic digital documents |
GB2564200A (en) * | 2016-04-29 | 2019-01-09 | Nchain Holdings Ltd | Implementing logic gate functionality using a blockchain |
US10333705B2 (en) | 2016-04-30 | 2019-06-25 | Civic Technologies, Inc. | Methods and apparatus for providing attestation of information using a centralized or distributed ledger |
US10046228B2 (en) | 2016-05-02 | 2018-08-14 | Bao Tran | Smart device |
US20170337319A1 (en) | 2016-05-20 | 2017-11-23 | Ecole polytechnique fédérale de Lausanne (EPFL) | System and Method for Optimization of Digital Circuits with Timing and Behavior Co-Designed by Introduction and Exploitation of False Paths |
CN107438002B (zh) | 2016-05-27 | 2022-02-11 | 索尼公司 | 基于区块链的系统以及系统中的电子设备和方法 |
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 |
TWM543413U (zh) * | 2016-12-05 | 2017-06-11 | Taiwan United Financial Technology Co Ltd | 利用區塊鏈技術進行交易的網路借貸平台 |
CN106780032A (zh) * | 2016-12-16 | 2017-05-31 | 杭州云象网络技术有限公司 | 一种多链场景下的区块链链间资产转移方法 |
EP3566384B1 (en) | 2017-01-06 | 2021-02-17 | Koninklijke Philips N.V. | Pinocchio / trinocchio on authenticated data |
EP3566389B1 (en) | 2017-01-06 | 2021-08-18 | 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 | 贵州大学 | 一种基于比特币协议的首价密封交易方法 |
WO2019033074A1 (en) * | 2017-08-11 | 2019-02-14 | Dragonchain, Inc. | SYSTEMS AND METHODS OF INTERACTION WITH DISTRIBUTED REGISTERS |
US10268829B2 (en) * | 2017-08-11 | 2019-04-23 | Dragonchain, Inc. | Security systems and methods based on cryptographic utility token inventory tenure |
US10333710B2 (en) | 2017-09-12 | 2019-06-25 | Qed-It Systems Ltd. | Method and system for determining desired size of private randomness using Tsallis entropy |
US10521616B2 (en) | 2017-11-08 | 2019-12-31 | Analog Devices, Inc. | Remote re-enrollment of physical unclonable functions |
JP2021502636A (ja) | 2017-11-09 | 2021-01-28 | エヌチェーン ホールディングス リミテッドNchain Holdings Limited | 検証可能な計算のためのcライクなスマートコントラクトの算術的強化 |
US10715317B2 (en) * | 2017-12-12 | 2020-07-14 | International Business Machines Corporation | Protection of confidentiality, privacy and financial fairness in a blockchain based decentralized identity management system |
US20210342490A1 (en) * | 2020-05-04 | 2021-11-04 | Cerebri AI Inc. | Auditable secure reverse engineering proof machine learning pipeline and methods |
US11226799B1 (en) * | 2020-08-31 | 2022-01-18 | International Business Machines Corporation | Deriving profile data for compiler optimization |
CN118051910A (zh) * | 2021-09-13 | 2024-05-17 | 支付宝(杭州)信息技术有限公司 | 针对移动端应用的基于安全切面的智能混淆方法和系统 |
-
2018
- 2018-10-29 JP JP2020524517A patent/JP2021502636A/ja active Pending
- 2018-10-29 EP EP18797157.7A patent/EP3707623A1/en active Pending
- 2018-10-29 CN CN201880072692.7A patent/CN111406379A/zh active Pending
- 2018-10-29 US US16/762,466 patent/US11575511B2/en active Active
- 2018-10-29 JP JP2020524532A patent/JP7208989B2/ja active Active
- 2018-10-29 JP JP2020524541A patent/JP7221954B2/ja active Active
- 2018-10-29 WO PCT/IB2018/058437 patent/WO2019092545A1/en unknown
- 2018-10-29 KR KR1020207014209A patent/KR20200086284A/ko not_active Application Discontinuation
- 2018-10-29 EP EP18797158.5A patent/EP3707855A1/en active Pending
- 2018-10-29 EP EP22170376.2A patent/EP4092953A1/en active Pending
- 2018-10-29 US US16/762,475 patent/US11635950B2/en active Active
- 2018-10-29 EP EP18796782.3A patent/EP3707871B1/en active Active
- 2018-10-29 SG SG11202004149UA patent/SG11202004149UA/en unknown
- 2018-10-29 KR KR1020207014108A patent/KR20200086282A/ko not_active Application Discontinuation
- 2018-10-29 SG SG11202004148PA patent/SG11202004148PA/en unknown
- 2018-10-29 CN CN201880072801.5A patent/CN111316595B/zh active Active
- 2018-10-29 CN CN202410422365.7A patent/CN118413305A/zh active Pending
- 2018-10-29 US US16/762,471 patent/US11658801B2/en active Active
- 2018-10-29 KR KR1020207014203A patent/KR20200080265A/ko not_active Application Discontinuation
- 2018-10-29 SG SG11202004147RA patent/SG11202004147RA/en unknown
- 2018-10-29 EP EP23216404.6A patent/EP4312403A3/en active Pending
- 2018-10-29 WO PCT/IB2018/058432 patent/WO2019092542A1/en unknown
- 2018-10-29 KR KR1020207014213A patent/KR20200079503A/ko active IP Right Grant
- 2018-10-29 WO PCT/IB2018/058433 patent/WO2019092543A1/en unknown
- 2018-10-29 CN CN201880073019.5A patent/CN111345005A/zh active Pending
- 2018-10-29 EP EP18796783.1A patent/EP3707852B1/en active Active
- 2018-10-29 WO PCT/IB2018/058434 patent/WO2019092544A1/en unknown
- 2018-10-29 CN CN202311496467.5A patent/CN117640170A/zh active Pending
- 2018-10-29 CN CN201880072678.7A patent/CN111345004B/zh active Active
- 2018-10-29 JP JP2020524430A patent/JP7234229B2/ja active Active
- 2018-10-29 SG SG11202004146WA patent/SG11202004146WA/en unknown
- 2018-10-29 US US16/762,461 patent/US20210377041A1/en active Pending
- 2018-11-01 CN CN201880072729.6A patent/CN111316594A/zh active Pending
- 2018-11-01 US US16/762,490 patent/US20210192514A1/en active Pending
- 2018-11-01 JP JP2020524561A patent/JP2021502747A/ja active Pending
- 2018-11-01 SG SG11202004153UA patent/SG11202004153UA/en unknown
- 2018-11-01 EP EP18800333.9A patent/EP3707856A1/en active Pending
- 2018-11-01 WO PCT/IB2018/058583 patent/WO2019092561A1/en unknown
- 2018-11-01 KR KR1020207014106A patent/KR20200086281A/ko not_active Application Discontinuation
- 2018-11-08 TW TW107139662A patent/TWI806918B/zh active
- 2018-11-08 TW TW107139685A patent/TWI837103B/zh active
-
2020
- 2020-05-08 ZA ZA2020/02575A patent/ZA202002575B/en unknown
-
2023
- 2023-02-02 JP JP2023014319A patent/JP7534024B2/ja active Active
- 2023-02-03 US US18/105,672 patent/US20230269070A1/en active Pending
- 2023-02-22 JP JP2023026258A patent/JP7477674B2/ja active Active
- 2023-04-03 US US18/130,373 patent/US20230318804A1/en active Pending
- 2023-04-13 US US18/134,276 patent/US20230318805A1/en active Pending
- 2023-10-05 JP JP2023173507A patent/JP2023182741A/ja active Pending
- 2023-10-12 JP JP2023176820A patent/JP2023179687A/ja active Pending
-
2024
- 2024-04-18 JP JP2024067707A patent/JP2024099659A/ja active Pending
- 2024-05-17 US US18/667,910 patent/US20240313947A1/en active Pending
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7534024B2 (ja) | 変更から検証鍵を保護し、正当性のプルーフの有効性を確かめるためのシステム | |
KR102687781B1 (ko) | 증명 검증에 기초하여 오프-체인 데이터를 인증하기 위한 시스템 및 방법 | |
TW201924278A (zh) | 用以使用調解方電腦系統來確保電腦程式正確執行的系統與方法 | |
Covaci et al. | NECTAR: non-interactive smart contract protocol using blockchain technology | |
JP7572468B2 (ja) | ブロックチェーン上に検証鍵を記録するためのシステム | |
KR102398543B1 (ko) | 영지식 증명 알고리즘이 적용된 검증 가능한 블록체인 가상머신 | |
TWI854899B (zh) | 用以基於證明驗證來認證資料饋入之電腦實施方法、運算系統及非暫時性電腦可讀儲存媒體 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |