KR20230149870A - 블록체인을 사용해서 데이터 레코드를 분산하기 위한 시스템 및 방법 - Google Patents

블록체인을 사용해서 데이터 레코드를 분산하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20230149870A
KR20230149870A KR1020237035641A KR20237035641A KR20230149870A KR 20230149870 A KR20230149870 A KR 20230149870A KR 1020237035641 A KR1020237035641 A KR 1020237035641A KR 20237035641 A KR20237035641 A KR 20237035641A KR 20230149870 A KR20230149870 A KR 20230149870A
Authority
KR
South Korea
Prior art keywords
output
public key
data record
blockchain
node
Prior art date
Application number
KR1020237035641A
Other languages
English (en)
Inventor
마틴 소우웰
다니엘 조셉
Original Assignee
엔체인 홀딩스 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엔체인 홀딩스 리미티드 filed Critical 엔체인 홀딩스 리미티드
Publication of KR20230149870A publication Critical patent/KR20230149870A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/02Banking, e.g. interest calculation or account maintenance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/02Payment architectures, schemes or protocols involving a neutral party, e.g. certification authority, notary or trusted third party [TTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/22Payment schemes or models
    • G06Q20/223Payment schemes or models based on the use of peer-to-peer networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/12Accounting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key 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/0825Key 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0852Quantum cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • G06Q20/0655Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed centrally
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Finance (AREA)
  • Technology Law (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Electromagnetism (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Power Engineering (AREA)
  • Peptides Or Proteins (AREA)

Abstract

블록체인을 사용하여 입력 노드로부터 출력 노드로 전체 데이터 레코드를 전송하는 컴퓨터-구현 방법이다. 전체 데이터 레코드는, 경우에 따라, 예를 들면 비트코인을 사용하는 전체 지불일 수 있다. 출력 노드는 공개 키 자료를 공유하고, 입력 노드는 전체 가치를 지불하는 데 사용하기 위해 아직 소비되지 않은 트랜잭션 출력을 선택하고 고정된 액면가로 출력 노드에 지불해야 하는 복수의 출력을 결정한다. 입력 노드는 공개 키 자료 및 각각의 난수를 사용해서 각각의 출력에 대하여 출력 어드레스를 생성하고, 하나 이상의 코인 믹싱 트랜잭션에서 입력 및 출력을 혼합한다. 각각의 난수에 기초하여 생성되는 각각의 출력에 대한 논스 공개 키는 별도로 또는 블록체인을 통해 출력 노드와 공유되고, 출력 노드는 각각의 출력 어드레스에 대하여 상응하는 개인 키를 도출할 수 있으며, 이는 나중에 소유권을 주장할 수 있는 출력을 검색 및 식별할 수 있게 한다.

Description

블록체인을 사용해서 데이터 레코드를 분산하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR DISTRIBUTING DATA RECORDS USING A BLOCKCHAIN}
본 발명은 일반적으로 블록체인 트랜잭션(blockchain transaction)에 관한 것으로, 특히 데이터 레코드 분산 트랜잭션을 생성 및 수행하는 방법 및 장치에 관한 것이다.
본 명세서에 있어서는, '블록체인(blockchain)'이라는 용어를 모든 형태의 전자적인, 컴퓨터-기반의, 분산 원장(distributed ledgers)을 포함한다는 의미로 사용한다. 이는 블록체인 및 트랜잭션-체인 기술, 허가 및 무허가 원장, 공유 원장 및 이들의 변형을 포함하지만, 이들에 한정되는 것은 아니다. 다른 블록체인 구현예들이 제안되고 개발되었지만, 가장 널리 알려져 있는 블록체인 기술의 용례는 비트코인(Bitcoin) 원장이다. 본 명세서에서는 편의 및 예시의 목적으로 비트코인이 언급될 수 있지만, 본 발명은 비트코인 블록체인에 사용하는 것으로 한정되지 않으며 대안적인 블록체인 구현예 및 프로토콜도 본 발명의 범위 내에 있는 것이라는 점에 유의해야 한다.
블록체인은, 결국 트랜잭션들로 구성된 블록들로 구성되는 컴퓨터-기반의 탈-중앙집중형 분산 시스템으로 구현된 컨센서스-기반의 전자 원장이다. 각각의 트랜잭션은 블록체인 시스템 참여자들 사이의 디지털 자산의 제어의 전송을 인코딩하는 데이터 구조이며, 적어도 하나의 입력 및 적어도 하나의 출력을 포함한다. 각각의 블록이 이전 블록의 해시를 포함하므로, 블록들이 함께 연쇄되어 그 개시 이래로 블록체인에 작성된 모든 트랜잭션의 영구적인 불변의 레코드를 생성한다. 트랜잭션은 그 입력 및 출력에 내재된 스크립트라고 하는 소규모 프로그램을 포함하고, 이는 트랜잭션의 출력에 액세스할 수 있는 방법 및 대상을 특정한다. 비트코인 플랫폼의 경우, 이러한 스크립트는 스택-기반 스크립팅 언어를 사용해서 작성된다.
블록체인에 트랜잭션이 작성되게 하기 위해서는, 트랜잭션이 "유효성 검증(validated)"되어야 한다. 네트워크 노드(채굴자)는, 각각의 트랜잭션이 유효함을 보장하고, 무효한 트랜잭션이 네트워크로부터 거부되게 하는 작업을 수행한다. 노드에 인스톨된 소프트웨어 클라이언트는 그 잠금 해제 스크립트에 이어 잠금 스크립트를 실행함으로써 아직 소비되지 않은 트랜잭션(unspent transaction)(UTXO)에 대하여 이 유효성 검증 작업을 수행한다. 잠금 해제 스크립트에 이은 잠금 스트립트의 실행이 TRUE로 평가되면, 트랜잭션은 유효하고, 트랜잭션이 블록체인에 작성된다. 따라서, 블록체인에 트랜잭션이 작성되게 하기 위해서는, i) 트랜잭션을 수신하는 제1 노드에 의해 유효성 검증되어야 하고 ― 트랜잭션이 유효성 검증되면, 해당 노드가 네트워크 내의 다른 노드들에 트랜잭션을 중계하고; ii) 채굴자에 의해 구축되는 신규 블록에 추가되어야 하고; iii) 채굴, 즉 과거 트랜잭션들의 공공 원장에 추가되어야 한다.
비트코인과 같은 블록체인 기술의 인식되어 있는 장점들 중 하나는 그 익명성과 보안이다. 즉, 비트코인 원장은 트랜잭션에 참여한 참여자들에 관한 어떠한 개인 정보도 포함하지 않고; 공개 어드레스 정보만을 포함한다. 그러나, 외부 데이터 및 분석 기법을 사용하면, 특정 트랜잭션들 및 어드레스들을 개인과 성공적으로 연계시킬 수 있다.
비트코인 같은 일부 디지털 통화의 단점 중 하나는, 프라이버시에 대한 대중적인 명성에도 불구하고, 블록체인에서의 비트코인의 흐름은 완전히 공개적이고 체인을 통한 가치(value)의 이동을 추적하기 위해 분석될 수 있다는 점이다. 이는 프라이버시를 위협하는 상황을 초래할 수 있다. 예를 들어, 어떤 사람이 격주 급여 지불과 같이 아직 소비되지 않은 큰 트랜잭션 출력(UTXO)을 포함하는 지갑을 갖고 있고, 아직 소비되지 않은 트랜잭션 출력이 다른 사람에게 소액을 지불하기 위한 입력으로 사용되는 경우, 트랜잭션을 보고 있는 그 밖의 사람 및 다른 어떤 사람이 트랜잭션에서 반환되는 거스름돈에 부분적으로 기초하여, 지불하는 사람의 재산, 및 가능하게는 급여에 관한 정보를 얻게 될 것이다. 큰 입력 및/또는 큰 거스름돈 트랜잭션이 사용자들의 프라이버시를 위협할 수 있는 다른 상황들이 일어날 수 있다.
따라서, 입출력에 관한 향상된 불추적성 및 불연계성을 통해 강화된 보안 및 보다 강력한 암호화를 제공하면서도 효율적이고 효과적인 암호화폐 지불 메커니즘을 생성하는 향상된 방법 및 장치를 제공하는 것이 바람직하다.
암호화폐 구현용으로 블록체인 기술이 가장 널리 알려져 있지만, 디지털 사업가는 비트코인이 기초로 하는 암호화 보안 시스템 및 신규 시스템을 구현하기 위해 블록체인에 저장될 수 있는 데이터를 모두 이용하는 것을 모색하기 시작했다. 블록체인이 암호화폐의 영역에 한정되지 않는 자동화된 태스크 및 프로세스에 사용될 수 있다면 매우 유리할 것이다. 이러한 해법은 블록체인의 이점(예컨대, 영구적인 변조 방지 이벤트 레코드, 분산 처리 등)을 활용할 수 있으면서 그 용례에 있어서 더욱 다용도이다. 따라서, 본원은 블록체인에 대하여 기록되는 "데이터 레코드(data record)"를 지칭할 수 있다. 데이터 레코드는, 예를 들어, 문서, 처리 능력 또는 시간의 측정치, 암호화폐 수량, 자산의 소유권을 나타내는 보안 또는 다른 토큰, 또는 해당 엔티티가 해당 데이터 레코드를 사용 또는 이동시키는 것을 허용하는 암호화 자료를 소유한 엔티티에 의해 제어될 수 있는 그 밖의 그러한 것들을 포함할 수 있다.
블록체인 내의 레코드들의 잠재적인 추적성은 특정 용례에 악영향을 끼칠 수 있는 구현 결함을 드러낸다. 예시적인 용례는, 표시를 위한 검사지 또는 서류의 제출, 익명의 범죄 보고서의 제출, 익명의 조사 또는 인구조사 보고서의 제출, 또는 참여자 노드들의 그룹들이, 제출 이후 데이터를 변경할 수 없는 상황하에서, 데이터 레코드를 하나 이상의 다른 노드들에 안전하고 기밀하게 전송할 필요가 있는 그 밖의 이러한 용례들을 포함한다. 암호화폐와 마찬가지로, 다른 유형의 데이터 레코드들의 이동은 레코드들 자체의 특성에 기초하여 추적 가능하며, 그에 따라 노드의 사용자의 프라이버시 또는 안전을 위협할 수 있거나, 또는 분산 또는 제출 프로세스의 익명성의 무결성을 훼손할 수 있는, 특정 노드로의 제출 추적이 가능해진다. 또한, 네트워크의 노드들이 하나의 노드를 다른 노드에 전송된 문서의 소스로서 식별할 수 있으면, 스푸핑(spoofing) 및 그 밖의 컴퓨터 보안 공격과 같은 공격을 통해 네트워크의 보안을 위협하는 이들 관찰자 노드의 능력이 증가된다.
블록체인의 공공성은, 암호화폐 또는 임의의 다른 유형의 데이터 레코드에 관계없이, 데이터 레코드 분산 프로세스를 구성함에 있어서, 특정한 구체적인 노드들 사이의 데이터 레코드의 전송을 추적할 기회를 최소화하면서 분산 프로세스의 보안 및 무결성을 보다 효과적으로 보장하는 것이 기술적인 과제이다.
그래서, 이러한 향상된 해법이 고안되었다.
따라서, 본 발명에 따르면, 첨부된 청구항들에서 정의되는 바와 같은 방법 및 장치가 제공된다.
유리하게는, 본원은 트랜잭션의 프라이버시 및 보안을 향상시키는 블록체인-기반의 데이터 레코드 분산을 위한 향상된 방법, 장치 및 시스템을 제공한다. 스텔스 어드레싱(stealth addressing), 레코드 분산, 및 레코드의 미리 정해진 데이터 레코드 특성으로의 해체의 고유한 조합을 사용해서, 전체 데이터 레코드(들)가 입력을 출력으로부터 연결 해제하면서 전송되어 입력 노드 또는 출력 노드에 관한 정보의 공개를 방지하고 추적 활동을 방해한다.
본 발명은 컴퓨터-구현 방법 및 상응하는 시스템을 제공할 수 있다. 방법/시스템은 블록체인-구현 방법/시스템으로서 설명될 수 있다. 본 발명은 보안 방법 또는 암호화 방법/시스템으로서 설명될 수 있다. 약간의 또는 다량의 암호화폐와 같은 디지털 자산 또는 데이터 레코드의 안전한 전송을 제공할 수 있다. 부가적으로 또는 대안으로서, 약간의 또는 다량의 암호화폐와 같은 디지털 자산의 전송을 제어하기 위한 제어 메커니즘을 제공할 수 있다.
부가적으로 또는 대안으로서, 본원은 블록체인을 사용하여 입력 노드와 출력 노드 사이에서 전체 데이터 레코드를 전송하는 컴퓨터-구현 방법을 설명할 수 있다. 입력 노드에서 구현되는 방법은, 출력 노드와 연계되는 공개 키 자료를 취득하는 단계; 전체 데이터 레코드 및 입력 노드에 의해 제어되는 가용 데이터 레코드에 기초하여, 가용 데이터 레코드로부터 선택되는 하나 이상의 입력― 하나 이상의 입력의 누적 총계는 전체 데이터 레코드 이상임 ―, 및 복수의 출력― 각각의 출력은 일련의 미리 정해진 데이터 레코드 특성으로부터 선택되는 각각의 데이터 레코드 특성에 대한 것이고, 복수의 출력의 합계는 전체 데이터 레코드와 일치함 ―을 결정하는 단계; 출력들 각각에 대하여, 무작위로 수를 선택하고, 공개 키 자료 및 난수에 기초하여 출력 어드레스를 생성하고, 해당 출력의 각각의 데이터 레코드 특성을 갖는 데이터 레코드가 할당되도록 출력 어드레스를 레코드 분산 트랜잭션에 삽입하고, 난수로부터 논스(nonce) 공개 키를 생성하고, 논스 공개 키를 출력 노드와 공유하는 단계; 및 하나 이상의 입력에 서명하는 단계를 포함할 수 있다.
부가적으로 또는 대안으로서, 본원은 블록체인을 사용하여 입력 노드와 출력 노드 사이에서 전체 데이터 레코드를 전송하는 컴퓨터-구현 방법을 설명할 수 있다. 출력 노드에서 구현되는 방법은, 출력 노드와 연계되는 공개 키 자료를 입력 노드에 제공하는 단계; 논스 공개 키를 입력 노드로부터 취득하는 단계; 데이터 레코드 분산 트랜잭션에 대하여 블록체인을 검색― 데이터 레코드 분산 트랜잭션은 다수의 입력 어드레스 및 다수의 출력 어드레스를 갖고, 각각의 출력 어드레스에는 일련의 미리 정해진 데이터 레코드 특성의 각각의 데이터 레코드 특성을 갖는 데이터 레코드가 할당됨 ―하는 단계; 논스 공개 키 및 공개 키 자료에 기초하여 공개-개인 키 쌍을 결정하는 단계; 공개-개인 키 쌍으로부터의 공개 키를 데이터 레코드 분산 트랜잭션에서의 출력 어드레스들 중 하나와 일치시키고, 해당 일치에 기초하여, 해당 출력 어드레스에 할당되는 데이터 레코드를 중간 데이터 레코드 컴파일(compilation)에 추가하는 단계; 및 중간 데이터 레코드 컴파일이 전체 데이터 레코드보다 작은지의 여부를 결정하고, 작으면, 중간 데이터 레코드 컴파일이 전체 데이터 레코드와 일치할 때까지 검색, 결정 및 일치를 계속하는 단계를 포함한다.
부가적으로 또는 대안으로서, 본원은 블록체인을 사용하여 입력 노드와 출력 노드 사이에서 전체 가치를 전송하는 컴퓨터-구현 방법을 설명할 수 있다. 입력 노드에서 구현되는 방법은, 출력 노드와 연계되는 공개 키 자료를 취득하는 단계; 입력 노드에 의해 소유되는 전체 가치 및 아직 소비되지 않은 가용 출력 트랜잭션에 기초하여, 아직 소비되지 않은 출력 트랜잭션으로부터 선택되는 하나 이상의 입력― 하나 이상의 입력의 누적 가치는 전체 가치 이상임 ―, 및 복수의 출력― 각각의 출력은 일련의 미리 정해진 액면가(denomination)로부터 선택되는 각각의 액면가에 대한 것이고, 복수의 출력의 합계는 전체 가치와 일치함 ―을 결정하는 단계를 포함할 수 있다. 방법은, 출력들 각각에 대하여, 무작위로 수를 선택하고, 공개 키 자료 및 난수에 기초하여 출력 어드레스를 생성하고, 해당 출력의 각각의 액면가가 할당되도록 출력 어드레스를 코인 믹싱(coin mixing) 트랜잭션에 삽입하고, 난수로부터 논스 공개 키를 생성하고, 논스 공개 키를 출력 노드와 공유하는 단계를 더 포함한다. 입력 노드는 하나 이상의 입력에 서명한다.
일부 구현예에 있어서, 하나 이상의 입력 및 복수의 출력을 결정하는 단계는 가용 코인 믹싱 트랜잭션에 부분적으로 기초한다. 가용 코인 믹싱 트랜잭션들은 각각 특정 액면가들을 혼합하는 것을 수반한다. 하나 이상의 입력 및 복수의 출력을 결정하는 단계는 하나 이상의 입력 및 복수의 출력의 각각의 가치를 특정 액면가들의 각각의 액면가에 일치시키는 것에 부분적으로 기초한다.
일부 구현예에 있어서, 복수의 출력에 대하여 출력 어드레스를 삽입하는 단계는 모든 출력 어드레스를 복수의 서로 다른 액면가를 혼합하도록 구성되는 단일의 코인 믹싱 트랜잭션에 출력으로서 삽입하는 단계를 포함한다. 일부 다른 구현예에 있어서, 복수의 출력에 대하여 출력 어드레스를 삽입하는 단계는 적어도 하나의 출력 어드레스를 제1 코인 믹싱 트랜잭션에 삽입하고, 적어도 다른 출력 어드레스를 제2 코인 믹싱 트랜잭션에 삽입하는 단계를 포함하고, 제1 코인 믹싱 트랜잭션은 제2 코인 믹싱 트랜잭션에서 혼합되는 액면가들과는 다른 액면가들을 혼합하기 위한 것이다.
일부 구현예에 있어서, 일련의 미리 정해진 액면가는 최대 코인 가치 및 최대 코인 가치의 배로 정의되는 급수(series)에 기초하고, 여기서 n은 양의 정수이다. 다른 구현예들에서는 다른 급수가 사용될 수 있다.
일부 구현예에 있어서, 공개 키 자료는 2개의 공개 키, 즉 BPubx 및 BPuby를 포함하고, 출력 i에 대한 출력 어드레스는 다음 식에 의해 주어진다:
여기서, G는 타원 곡선 기준점이고, H()는 해시 함수이며, ri는 출력 i에 대하여 선택되는 난수이다. 논스 공개 키 Ri는 Ri = riG로서 생성될 수 있다.
일부 구현예에 있어서, 논스 공개 키를 공유하는 단계는 논스 공개 키를 코인 믹싱 트랜잭션에서 비-트랜잭션 데이터 필드에 삽입하는 단계; 논스 공개 키를 코인 믹싱 트랜잭션과는 다른 별도의 트랜잭션에서 비-트랜잭션 데이터 필드에 삽입하는 단계; 또는 논스 공개 키를 비-블록체인 통신을 사용하여 출력 노드에 송신하는 단계를 포함한다.
부가적으로 또는 대안으로서, 본원은, 출력 노드와 연계되는 공개 키 자료를 입력 노드에 제공하는 단계; 논스 공개 키를 입력 노드로부터 취득하는 단계; 코인 믹싱 트랜잭션에 대하여 블록체인을 검색― 코인 믹싱 트랜잭션은 다수의 입력 어드레스 및 다수의 출력 어드레스를 갖고, 각각의 출력 어드레스에는 일련의 미리 정해진 액면가 중 한 액면가에 일치하는 가치가 할당됨 ―하는 단계를 포함하는, 출력 노드에 의해 구현되는 방법을 설명할 수 있다. 방법은, 논스 공개 키 및 공개 키 자료에 기초하여 공개-개인 키 쌍을 결정하는 단계; 공개-개인 키 쌍으로부터의 공개 키를 코인 믹싱 트랜잭션에서의 출력 어드레스들 중 하나와 일치시키고, 해당 일치에 기초하여, 해당 출력 어드레스에 할당되는 가치를 지불된 금액에 추가하는 단계; 및 지불된 금액이 전체 가치보다 작은지의 여부를 결정하고, 작으면, 지불된 금액이 전체 가치와 일치할 때까지 검색, 결정 및 일치를 계속하는 단계를 더 포함한다.
일부 구현예에 있어서, 공개 키 자료는 2개의 공개 키, 즉 BPubx 및 BPuby를 포함하고, 2개의 공개 키는 상응하는 각각의 개인 키, 즉 BPrivx 및 BPrivy를 갖는다. i번째 공개-개인 키 쌍을 결정하는 것은 다음을 결정하는 것을 포함할 수 있다:
여기서, BPrivi는 공개-개인 키 쌍의 개인 키를 포함하고, H()는 해시 함수이며, Ri는 논스 공개 키이고, i번째 공개-개인 키 쌍의 공개 키는 BPubi = BPriviG로서 결정되고, G는 타원 곡선 기준점이다.
일부 구현예에 있어서, 블록체인을 검색하는 단계는 비-트랜잭션 코드를 포함하는 코인 믹싱 트랜잭션을 식별하는 단계를 포함하고, 논스 공개 키를 취득하는 단계는 코인 믹싱 트랜잭션의 비-트랜잭션 데이터 필드로부터 논스 공개 키를 추출하는 단계를 포함한다. 일부 다른 구현예에 있어서, 논스 공개 키를 취득하는 단계는 비-트랜잭션 코드를 포함하는 트랜잭션에 대하여 블록체인을 검색하는 단계, 및 식별시에, 트랜잭션에서 비-트랜잭션 데이터 필드로부터 논스 공개 키를 추출하는 단계를 포함한다.
본 명세서에서 설명되는 또 다른 구현예는, 메모리, 프로세서(들), 및 실행시에, 프로세서로 하여금 본 명세서에서 설명되는 하나 이상의 방법의 동작들을 수행하게 하는 실행 가능 명령어를 갖는 컴퓨팅 장치를 포함한다.
본 발명의 일 양태 또는 실시형태에 관련하여 설명되는 임의의 특징은 하나 이상의 다른 양태/실시형태에 대해서도 사용될 수 있다. 본 발명의 이들 및 다른 양태들은 본 명세서에서 설명되는 실시형태로부터 분명해지며 이를 참조하여 설명될 것이다. 이제, 본 발명의 실시형태가 첨부 도면을 참조하여 단지 예시로서 설명될 것이다:
도 1은 노드들의 예시적인 블록체인 네트워크를 예시하고;
도 2는 데이터 레코드 분산 프로세스의 일 실시형태를 개략적으로 예시하고;
도 3은 블록체인 트랜잭션에서 데이터 레코드 분산을 위한 예시적인 프로세스를 흐름도 형태로 도시하고;
도 4는 본원의 실시형태에 따른 데이터 레코드 분산 동작에 입력 노드로서 참여하기 위한 예시적인 프로세스를 흐름도 형태로 도시하고;
도 5는 본원의 실시형태에 따른 데이터 레코드 분산 동작에 출력 노드로서 참여하기 위한 예시적인 프로세스를 흐름도 형태로 도시하고;
도 6은 간략화된 참여 노드의 블록도를 도시한다.
본원에 있어서, "및/또는(and/or)"이라는 용어는, 열거된 요소들 중 어느 하나를 단독으로 포함하거나, 임의의 하위-조합을 포함하거나, 또는 요소들을 모두 포함하되, 추가적인 요소들을 반드시 제외하는 것은 아닌, 열거된 요소들의 가능한 모든 조합 및 하위-조합을 포함하기 위한 것이다.
본원에 있어서, "... 또는 ... 중 적어도 하나(at least one of ... or ...)"라는 문구는, 열거된 요소들 중 어느 하나를 단독으로 포함하거나, 임의의 하위-조합을 포함하거나, 또는 요소들을 모두 포함하되, 임의의 추가적인 요소들을 반드시 제외하는 것은 아니며, 또한 반드시 요소들을 모두 필요로 하는 것은 아닌, 열거된 요소들의 어느 하나 이상을 포함하기 위한 것이다.
아래의 설명에서는 때때로, 가치를 포함하는 데이터 필드를 포함할 수 있는 데이터 레코드를 참조할 것이다. 전체 데이터 레코드는, 경우에 따라, 복수의 데이터 레코드의 가치들의 합계로 형성될 수 있다. 경우에 따라, 가치는 암호화폐와 같은 디지털 자산 또는 그 수량을 나타낼 수 있지만, 컴퓨팅 리소스, 시간 등과 같은 몇몇 다른 자산을 나타낼 수도 있다. 데이터 레코드 특성에 대한 참조는 데이터 레코드의 속성을 나타낼 수 있다. 일부 실시예에 있어서, 이는 데이터 레코드에서 지시되는 가치를 포함할 수 있고, 미리 정해진 일련의 데이터 레코드 특성은 일련의 미리 정해진 가치를 포함할 수 있다. 가치는 경우에 따라 정수 또는 소수 값일 수 있다. 경우에 따라, 가치는 암호화폐 금액을 나타내고, 액면가라고 할 수도 있다.
블록체인과 연계되는 예시적인 블록체인 네트워크(100)를 블록도 형태로 예시하는 도 1을 먼저 참조한다. 블록체인 네트워크는 초대 없이 또는 다른 맴버들의 동의 없이 누구나 가담할 수 있는 피어-투-피어(peer-to-peer) 개방형 멤버십 네트워크이다. 블록체인 네트워크(100)가 동작하고 있는 블록체인 프로토콜의 인스턴스를 실행하는 분산 전자 장치는 블록체인 네트워크(100)에 참여할 수 있다. 이러한 분산 전자 장치를 노드(102)라고 할 수 있다. 블록체인 프로토콜은, 예를 들어, 비트코인 프로토콜 또는 다른 암호화폐일 수 있다.
블록체인 프로토콜을 실행하고 블록체인 네트워크(100)의 노드(102)를 형성하는 전자 장치는, 예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 서버와 같은 컴퓨터, 스마트폰과 같은 모바일 장치, 스마트 워치와 같은 웨어러블 컴퓨터 또는 그 밖의 전자 장치를 포함하는 다양한 유형으로 될 수 있다.
블록체인 네트워크(100)의 노드(102)들은 유선 및 무선 통신 기술을 포함할 수 있는 적절한 통신 기술을 사용해서 서로 연결된다. 많은 경우에, 블록체인 네트워크(100)는 적어도 부분적으로 인터넷을 통해 구현되고, 개별 노드(102)들 중 일부는 지리적으로 분산된 장소에 위치될 수 있다.
노드(102)들은 블록체인 상의 모든 트랜잭션의 글로벌 원장을 유지한다. 글로벌 원장은 분산 원장이며, 각각의 노드(102)는 글로벌 원장의 전체 복사본 또는 부분 복사본을 저장할 수 있다. 글로벌 원장에 영향을 미치는 노드(102)에 의한 트랜잭션들은 다른 노드(102)들에 의해 검증되어 글로벌 원장의 유효성이 유지된다. 비트코인 프로토콜을 사용하는 것과 같이, 블록체인 네트워크를 구현하고 동작하는 세부내용이 당업자에게 이해될 것이다.
각각의 트랜잭션은 하나 이상의 입력 및 하나 이상의 출력을 갖는 것이 일반적이다. 입력 및 출력에 내재된 스크립트는 트랜잭션의 출력에 액세스할 수 있는 방법 및 대상을 특정한다. 트랜잭션의 출력은 트랜잭션의 결과로서 가치가 전송된 어드레스를 포함한다. 이후, 해당 가치는 아직 소비되지 않은 트랜잭션 출력(UTXO)으로서 해당 출력 어드레스와 연계된다. 이후, 후속 트랜잭션은 해당 가치를 소비하거나 또는 그 소유권을 재할당하기 위해 해당 어드레스를 입력으로서 참조할 수 있다.
트랜잭션들은 블록체인 원장 상의 트랜잭션들에 개인 정보를 포함하고 있지 않은 의사-익명 트랜?션이지만, 연쇄 트랜잭션에서 데이터 레코드의 전송을 추적하는 것이 가능하며, 경우에 따라, 외부 데이터를 사용해서 데이터 레코드를 개개의 또는 특정 노드에 연결하는 것이 가능하다. 보안을 높이기 위해, 데이터 레코드 분산 트랜잭션, 예를 들어 코인 믹싱 트랜잭션을 사용하여 다양한 소스로부터의 입력들을 모집하고 나서 모집된 데이터 레코드를 분할하여 출력들에 할당할 수 있다. 입력들 및 출력들이 모두 동일한 특성을 갖는 데이터 레코드이면, 특정 입력을 특정 출력과 연결하는 것이 어렵다. 그러나, 이러한 트랜잭션에 있어서는 적어도 하나의 참여 노드가 다른 참여 노드에 의해 특정되는 입력 어드레스들과 출력 어드레스들 사이의 연결관계를 알고 있다. 비트코인 프로토콜에서의 CoinJoin 동작과 같은 이러한 코인 믹싱 트랜잭션에 있어서는, 다수의 입력 및 다수의 출력을 갖는 단일의 트랜잭션이 가치들을 혼합하는 데 사용된다.
입력과 출력 사이의 연결이 드러나는 것을 피하기 위해, 다양한 유효성을 가진 스텔스 어드레스와 같은 일부 다른 기술이 사용된다. 스텔스 어드레스는 추적성을 깨기 위해 특정 출력 노드로부터 데이터 레코드가 송신되는 출력 어드레스를 연결 해제하려 한다.
본원에 따르면, 분산의 프라이버시 및 보안을 증가시키고, 분산을 특정 입력 및/또는 출력에 연결하는 것 및 분산을 추적하거나 또는 입력 노드에 관한 연관 정보를 드러내는 것에 대한 저해요인을 제공하는 방식으로 입력 노드로부터 출력 노드로의 전체 데이터 레코드의 전송을 용이하게 하는 방법 및 장치가 설명된다. 보안을 보장하면서 블록체인 프로토콜의 구조 내에서 그와 같이 행하는 것은 중요한 기술적인 구현 과제를 나타낸다. 아래의 설명은 그러한 기술적인 구현 과제에 대한 해법의 적어도 하나의 실시형태를 제공한다.
본 명세서의 설명에 있어서는, "입력 노드(input node)", "출력 노드(output node)", "참여 노드(participating node)", "입력 어드레스(input address)", 및 "출력 어드레스(output address)"라는 용어들이 사용될 수 있다. 노드의 "어드레스(address)"에 대한 참조는 물리적인 노드의 네트워크 어드레스를 지칭하는 것을 의미하지 않는다. 대신에, "어드레스(address)"는 물리적인 노드가 트랜잭션 상의 서명에 대응하는 키를 가짐으로써 소유권을 주장할 수 있는 아직 소비지 않은 가치를 갖는 블록체인 상의 트랜잭션에 지정되는 어드레스이다. 이러한 의미에서, "출력 어드레스(output address)"는 참여 노드의 어드레스가 아니라, 참여 출력 노드에 의해 소유된 또는 그것과 연계된 블록체인 트랜잭션 출력 어드레스이다. 마찬가지로, "입력 어드레스(input address)"는 참여 입력 노드에 의해 소유된 또는 그것과 연계된 아직 소비되지 않은 트랜잭션 출력(unspent transaction output)(UTXO)의 어드레스이다.
타원 곡선 디지털 서명(Elliptic Curve Digital Signatures)
비트코인과 같은 일부 블록체인 기술은 디지털 서명을 위한 수학적 스킴으로서 타원 곡선 디지털 서명 알고리즘(Elliptic Curve Digital Signature Algorithm)(ECDSA)을 사용한다. ECDSA는 UTXO와 연계되는 가치가 그 적법한 소유자에 의해서만 소비될 수 있게 하는데 사용되는 암호화 디지털 서명이다. ECDSA 서명에 필요한 파라미터는 다음을 포함한다:
E ― 타원 곡선 함수
G ― 위수 n:n×G = 0 인 타원 곡선 상의 기준점
n ― 큰 소수(prime number)
q ― 하위그룹 위수
키 쌍이 난수 x로부터 생성되고, 여기서 0<x<n이다. 난수 x는 개인 키로서의 역할을 하고, 공개 키 P가 P=x×G로서 생성된다.
메시지 m, 난수 k 및 개인 키 x가 주어지면, 쌍 (r,s)를 갖는 서명이 생성된다. 난수 k는 0<k<q가 되도록 선택된다. 이후, r=k×G가 계산되고, s = k-1(m+xr) mod n이 계산되며, 여기서 k-1은 k mod n:k-1k ≡ 1 mod n의 역수이다. 이는 서명 (r,s)를 제공한다.
서명 (r,s), 메시지 m 및 공개 키 P가 주어지면, 서명이 검증될 수 있다. 서명을 검증하기 위해, v = s-1m×G+s-1r×y가 계산된다. 이 식에서, s-1은 s-1s ≡ 1 mod n이 되도록 하는 s mod q의 역수이다. 서명은 v = r인 경우에 유효하다. G에는 위수 n이 있으므로, s-1의 mod n 부분은 EC 점을 G와 곱할 때 없어진다는 점에 유의해야 한다.
모집된 분해 데이터 레코드(Pooled Decomposed Data Records)
이제, 데이터 레코드 분산 프로세스(200)의 일 실시형태를 개략적으로 예시하는 도 2를 참조한다. 이 실시예에 있어서, 데이터 레코드는 암호화폐와 관련되며, 전체 데이터 레코드는 전체 가치의 지불이다. 입력 노드(202)는 "지갑 A(Wallet A)"로 지정된다. 입력 노드(202)는 지불을 하고 지불을 받도록 설계되는 라이트웨이트 노드(lightweight node)일 수 있지만, 블록체인의 복사본을 저장하는 풀 노드(full node)는 아니다. 경우에 따라, 입력 노드(202)는 풀 노드일 수 있거나, 심지어 채굴 노드일 수 있지만, 본 실시예에 있어서는, 입력 노드(202)가 여러 경우에 "지갑"이라고 지칭될 수 있는 라이트웨이트 노드이다. 비트코인 프로토콜에 있어서는, 이러한 노드를 간략화된 지불 검증(simplified payment verification)(SPV) 노드라고 할 수 있다. 출력 노드(204)는 "지갑 B(Wallet B)"로 지정된다. 입력 노드(202)와 마찬가지로, 이 실시예에 있어서는 출력 노드(204)도 라이트웨이트 노드이다. 노드(202) 및 노드(204)를 본 명세서에서는 참여자 또는 참여 노드라고 할 수 있다.
입력 노드(202)는 참조 번호 206으로 지시되는 가변적인 가치들의 다수의 UTXO를 "소유(own)"(제어)한다. 입력 노드(202)는, 블록체인 트랜잭션에 대한 입력으로서 입력 노드(202)가 해당 UTXO(206)를 "소비하는(spending)" 스크립트에 서명할 수 있게 하는 각각의 UTXO(206)에 대응하는 개인 키를 입력 노드(202)가 보유한다는 점에서, 이들 UTXO를 소유한다. 각각의 UTXO(206)는 입력 노드(202)에 송신 또는 반환되는 이전의 트랜잭션의 아직 소비되지 않은 출력이다. UTXO(206)들은 적용 가능한 암호화폐에서의 가치의 금액을 변경하기 위한 것일 수 있다.
출력 노드(204)는 (BPubx, BPrivx) 및 (BPuby, BPrivy)로 지정되는 2개의 공개-개인 키 쌍을 갖고, 여기서 BPub = BPrivG이다. 출력 노드(204)는 공개 키(BPubx 및 BPuby)를 입력 노드(202)와 공유하고, 또한 가능하게는 다른 노드들과도 공유한다.
이 상황에서, 입력 노드(202)의 소유자는 전체 가치를 출력 노드(204)의 소유자에게 전송하려고 한다. 전체 가치는, 일부 구현예에 있어서는, 상품 또는 서비스에 대한 지불을 반영할 수 있다.
본원의 양태에 따르면, 입력 노드(202)는 지불을 행하는 트랜잭션에 대한 입력으로 기능하도록 UTXO(206)들 중 하나 이상을 선택한다. 하나 이상의 UTXO(206)의 누적 가치는 출력 노드(204)에 대하여 이루어질 지불의 전체 가치 이상이다. UTXO(206)의 선택은, 거스름돈을 초래하게 되는, 또는 적어도 입력 노드(202)에 되돌아오는 상당한 거스름돈을 초래하게 되는 하나의 큰 UTXO(206)를 사용하기보다는, 전체 가치를 구성하는 보다 작은 액면가의 복수의 UTXO(206)를 사용하는 것에 부분적으로 기초할 수 있다.
일부 구현예에 있어서, 입력 노드(202)는, UTXO(206)의 수를 최소화하면서, 지불의 전체 가치 이상인 입력들의 합계를 생성하는 탐욕적 알고리즘(greedy algorithm)을 사용해서 최적의 또는 유리한 복수의 UTXO(206)를 결정할 수 있다. 분석에 있어서의 추가적인 인자는 거스름돈의 생성을 최소화하는 것, 즉 선택되는 UTXO(206)들의 누적 가치가 가용 UTXO(206)들에 주어질 수 있는 최소 금액만큼 전체 가치를 초과할 수 있게 하는 것을 포함할 수 있다. 일부 구현예에 있어서, UTXO(206)들은 그들의 가치에 기초하여 우선순위가 정해질 수 있으며; 즉, 아래에서 더 설명되는 바와 같이, 가치에 있어서 소정의 일련의 액면가들 중 하나에 대응하는 UTXO(206)들이 바람직할 수 있다.
일부 구현예에 있어서, 최적의 UTXO(206) 세트의 선택은 전체 가치(또는 전체 가치 + 수수료, 그 이유는, 입력 노드(202)는 제출된 입력들이 트랜잭션(들)에 대한 수수료를 충분히 충당하도록 포함할 수 있게 할 필요가 있기 때문임), 및 소액을 지불하도록 큰 UTXO(206)의 사용을 회피하는 규칙에 기초할 수 있다. 즉, 입력 노드(202)는 전체 지불보다 작은 UTXO(206)를 사용해서 우선순위가 정해질 수 있다. 입력 노드(202)는 국부적으로 최적의 또는 적어도 적절한 UTXO(206)들의 선택을 찾기 위한 동적 프로그래밍, 탐욕적 알고리즘, 또는 임의의 다른 적절한 프로그래밍 기술을 사용해서 UTXO 선택 프로세스를 구현할 수 있다.
본원의 다른 양태에 따르면, 가치의 전송은 비트코인 프로토콜에서의 CoinJoin 트랜잭션과 같은 하나 이상의 코인 믹싱 트랜잭션을 통해 이루어진다. 즉, 선택된 UTXO(206)들은 하나 이상의 코인 믹싱 트랜잭션에 대한 입력이다.
입력 노드(202)는 또한, 전체 지불을 구성하기 위해 복수의 출력을 결정한다. 출력들의 누적 가치는 출력 노드(204)에 대하여 이루어지는 지불의 전체 가치와 일치한다. 각각의 출력은 일련의 미리 정해진 액면가들로부터 선택되는 각각의 액면가에 대한 것으로 결정된다. 일 실시예에 있어서, 액면가들은 적용 가능한 암호화폐의 미리 정해진 일련의 지분가액(fractions)일 수 있다. 일 실시예에 있어서, 액면가는 암호화폐의 기본 단위에 을 곱해서 주어질 수 있으며, 여기서 n = 0, 1, 2, 3 등이다. 실시예로서, 비트코인을 사용하면, 액면가는 다음과 같이 될 수 있다:
1 BTC, 0.1 BTC, 0.01 BTC, 0.001 BTC, ..., 내지 1 satoshi(사토시).
다른 예시적인 액면가는 반드시 기수-10으로 관련되지 않을 수도 있으며, 예를 들면, 다음과 같이,
1 BTC, 0.5 BTC, 0.2 BTC, 0.1 BTC, 0.05 BTC, 0.02 BTC, 0.001 BTC, ...등이다.
일부 구현예에 있어서, 적어도 입력들 중 하나를 제외한 모든 입력은 동일한 가치의 상응하는 출력을 갖는다(그 이유는, 입력들의 누적 가치가 전체 지불을 초과할 경우, 입력들 중 하나는 입력 노드에 다시 지불해야 하는 거스름돈 및/또는 트랜잭션에서 지불해야 하는 수수료에 기인하는 초과액을 초래할 수 있기 때문임). 가치에 있어서 상응하는 출력들과 일치하는 입력들이 동일한 코인 믹싱 트랜잭션에 포함될 수 있으며, 여기서 해당 트랜잭션은 모두 동일한 가치를 갖는 복수의 입력들 및 출력들을 혼합하도록 설계된다.
입력 노드(202)가 입력으로서 기능하도록 하나 이상의 UTXO(206)를 결정하고, 복수의 출력 및 그들 각각의 가치를 결정했으면, 입력 노드(202)는 UTXO(206)들을 입력으로서 삽입하고 각각의 출력에 대응하는 각각의 출력 어드레스를 삽입함으로써 하나 이상의 코인 믹싱 트랜잭션에 가담한다.
본원의 추가적인 양태에 있어서, 입력 노드(202)는 출력 노드의 공개 어드레스(들)를 출력 어드레스(들)로서 사용하지 않고, 출력 노드(204)에 대한 공통 어드레스에 출력들을 모집하지 않는다. 대신에, 입력 노드(202)는 각각의 출력에 대하여 새로운 비밀 출력 어드레스를 생성한다. 각각의 새로운 비밀 출력 어드레스는 출력 노드에 의해 제공되는 공개 키(BPubx 및 BPuby) 및 난수 ri에 기초하여 생성된다. 난수 ri를 논스(nonce)라고 할 수 있다. 이와 관련하여, 출력 노드(204)로부터의 2개의 공개 키는 비밀 어드레스를 생성하기 위한 시드(seeds)로서의 역할을 할 것이라는 점에서 함께 "스텔스 어드레스(stealth address)"로서 작용하지만, 출력 노드(204)와 새로운 비밀 어드레스 사이의 연결은 입력 노드(202)에게만 알려진다. 이는 실제 출력 어드레스들이 출력 노드(204)와 연계되어 있는 것으로 알려지지 않기 때문에 트랜잭션에서의 수취인의 신원을 보호하지만, 출력 노드(204)의 공개된 공개 키 어드레스에 지불이 이루어졌다면, 이는 출력 노드(204)와 식별 가능하게 연계될 것이다.
이 실시예에 있어서, 입력 노드(202)는 구체적으로 다음 식에 기초하여 새로운 비밀 출력 어드레스, BPubi를 생성한다:
여기서, G는 타원 곡선 기준점이고, H()는 해시 함수이다. 입력 노드(202)는 또한, Ri = riG에 기초하여 난수 ri로부터 논스 공개 키 Ri를 계산한다.
입력 노드(202)는 각각의 출력에 대하여 새로운 비밀 출력 어드레스 BPubi를 생성한다. 입력 노드는 또한, 각각의 출력에 대한 논스 공개 키 Ri를 출력 노드(204)와 공유한다. 이후, 출력 노드(204)는 논스 공개 키 Ri 및 개인 키 BPrivx 및 BPrivy를 사용해서, 다음 식을 이용하여 트랜잭션의 출력 어드레스들 중 하나에 대응하는 개인 키를 생성하려고 한다:
생성된 개인 키가 공개 키 BPubi를 취득하는 데 사용될 수 있을 경우, 출력 노드(204)는 해당 출력 어드레스로 지향되는 트랜잭션 출력을 잠금 해제하기 위한 정확한 개인 키를 갖는다.
논스 공개 키 Ri를 공유하는 메커니즘은 구현에 따라 다른 형태를 취할 수 있다. 일 구현예에 있어서, 논스 공개 키 Ri는 출력 어드레스가 사용되는 코인 믹싱 트랜잭션의 비-트랜잭션 필드에 삽입된다. 출력 노드(204)는 비-트랜잭션 필드에 데이터를 갖는 코인 믹싱 트랜잭션을 찾기 위해 블록체인을 검색한다. 비트코인 프로토콜에 있어서, 예를 들어, OP_RETURN 코드는 무효한 트랜잭션 출력을 표시하는 데 사용되는 스크립트 연산 부호이다. 비트코인 지불을 처리함에 있어서는 OP_RETURN 코드 이후에 배치되는 임의의 데이터가 무시되기 때문에, 이는 트랜잭션 내의 메시지 또는 데이터 저장 필드로서 효과적으로 작용할 수 있다. 따라서, 비트코인 프로토콜에 기초한 일 구현예에 있어서, 코인 믹싱 트랜잭션은 논스 공개 키 Ri로 이어지는 OP_RETURN 코드 또는 기능상 등가의 것을 갖는 출력을 포함한다. 일반적인 용어로, 비-트랜잭션 데이터 또는 정보가 트랜잭션에 포함되어 있음을 나타내는 코드를 본 명세서에서는 "비-트랜잭션 코드(non-transactional code)"라고 할 수 있다.
그러나, 비트코인 같은 몇몇 프로토콜은 이러한 유형의 비-트랜잭션 데이터 필드를 트랜잭션에서 사용하는 능력을 제한할 수 있다. 실시예로서, 비트코인은 트랜잭션당 하나의 OP_RETURN 코드만을 허용할 수 있으며, 이는 하나의 Ri만이 코인 믹싱 트랜잭션에서 지정될 수 있음을 의미한다. 경우에 따라 Ri 키들을 단일의 비-트랜잭션 데이터 필드에 결부시키는 것이 가능하지만, 일부 실시형태에 있어서는 필드 길이 및 키들의 사이즈에 대한 제약 때문에, 그것이 비현실적인 것으로 될 수 있다. 따라서, 코인 믹싱 트랜잭션에서 다수의 출력에 대한 논스 공개 키 Ri는 다른 메커니즘을 이용해서 공유될 수 있다.
예시적인 일 실시형태에 있어서, 입력 노드(202)는 Ri 논스 공개 키들 중 하나를 포함하도록 각각 비-트랜잭션 데이터 필드를 갖는 추가적인 트랜잭션(212)들을 생성한다. 추가적인 트랜잭션의 수는 출력의 수와 일치할 수 있다. 이후, 출력 노드(204)는 OP_RETURN 코드와 같은 비-트랜잭션 데이터를 포함하는 트랜잭션들의 존재에 대하여 블록체인을 검색 또는 모니터링한다. 출력 노드가 그러한 트랜잭션을 찾으면, 논스 공개 키일 수 있다는 점에 기초하여 비-트랜잭션 데이터를 추출하고 해당 데이터를 그 공개 키 자료와 함께 사용해서 가능한 출력 어드레스를 생성한다. 이후, 출력 노드(204)는 생성된 가능한 출력 어드레스가 블록체인 상에 코인 믹싱 트랜잭션의 출력으로 나타나는지의 여부를 평가한다.
예시적인 다른 구현예에 있어서, 입력 노드(202)는 별도의, 바람직하게는 암호화된, 통신 채널을 사용해서 논스 공개 키 Ri를 블록체인 자체의 외부에 있는 출력 노드(204)에 전송한다. 이후, 출력 노드(204)는 상응하는 공개 키 BPubi를 생성하고, 가치를 해당 어드레스에 전송하는 코인 믹싱 트랜잭션에 대하여 블록체인을 검색한다.
출력 노드(204)가 논스 공개 키 Ri를 직접적으로 제공받는 것이 아니라, 오히려 비-트랜잭션 데이터를 포함하고 코인 믹싱 트랜잭션에서 상응하는 출력을 식별하려고 하는 트랜잭션을 찾기 위해 블록체인을 검색하는 경우에, 출력 노드(204)는 입력 노드(202)에 의해 전송된 전체 가치에 누적적으로 합산되는 출력 세트를 찾을 때까지 해당 검색을 계속할 수 있다.
도 2는 입력 노드(202)가 0.49 코인을 전송하는 일 실시예를 도시한다. 코인은 비트코인, 알트코인(altcoins), 또는 임의의 다른 암호화폐일 수 있다. 이 예시적인 실시예에 있어서, 코인 믹싱 트랜잭션(210)은 입력 노드(202)가 가담하는 데 이용할 수 있고, (미리 정해진 고정된 액면가들로) 다수의 액면가가 혼합되고 있다. 즉, 트랜잭션은 복수의 1 코인 입력 및 출력, 복수의 0.1 코인 입력 및 출력, 복수의 0.01 코인 입력 및 출력, 및 복수의 0.001 코인 입력 및 출력 등을 포함한다. 다른 실시예들에 있어서는 기수-10이 아닌 액면가들을 포함하는 추가적인 액면가들이 포함될 수 있다.
이 실시예에 있어서, 입력 노드(202)는 각각 0.1 코인 금액의 5개의 가용 UTXO(206)를 사용해서 0.49 코인을 모은다. 입력 노드(202)가 0.1 코인 액면가의 충분한 UTXO(206)들을 갖지 못하면, 지불을 구성하도록 다른 액면가의 UTXO들을 선택하게 된다. 이 실시예에 있어서, 입력 노드(202)가 0.49 코인 지불을 만들기 위해 0.5 코인을 입력하고 있는 경우, 입력 노드는 0.01 코인의 거스름돈에 대한 권한이 있지만, 트랜잭션은 이 실시예에서처럼 수수료를 수반할 수 있다. 9×0.001 코인 금액의 거스름돈이 입력 노드(202)에 반환되고, 이는 수수료가 0.001 코인임을 암시한다.
5개의 입력 각각은 입력 노드(202)가 소유한 서로 다른 UTXO(206)에서 비롯된다. 출력은 4×0.1 코인 및 9×0.01 코인을 포함한다. 이 실시예에 있어서, 입력 노드(202)는 BPub1, BPub2, ..., BPub13으로 지시되는 13개의 출력 어드레스를 생성한다.
13개의 논스 공개 키, 즉 Ri(i=1, 2, ... 13)가 출력 노드(204)와 공유된다. 위에서 설명한 바와 같이, 일부 프로토콜에 있어서는, 코인 믹싱 트랜잭션 내의 각각의 비-트랜잭션 데이터 필드에 키를 삽입하는 것이 가능할 수 있다. 비-트랜잭션 데이터 필드는 트랜잭션에 부정적인 영향을 미치지 않는 몇 가지 유형의 데이터 필드이다. 데이터 필드는 트랜잭션과 관련이 없는 코멘트, 텍스트, 또는 임의의 그와 같은 데이터에 대하여 지정된 필드일 수 있다. 경우에 따라, 데이터 필드는 해당 필드가 비-트랜잭션 데이터를 포함한다는 것을 나타내기 위해 특정 코드 또는 신호에 의해 표시 또는 지정될 수 있다. 위에서 설명한 바와 같이, 비트코인 프로토콜에 있어서는, OP_RETURN 코드가 이러한 목적에 사용될 수 있지만; 비트코인 프로토콜은 13개의 논스 공개 키 Ri 전부가 코인 믹싱 트랜잭션에 삽입될 수 없도록 비-트랜잭션 출력의 사용을 제한한다.
논스 공개 키 Ri가 코인 믹싱 트랜잭션 자체의 비-트랜잭션 필드 내에서 공유될 수 없을 경우에는, 입력 노드(202)가 그들을 다른 방식으로 공유한다. 일 실시예에 있어서, 입력 노드(202)는 그들을 별도의 암호화된 채널 또는 통신을 통해 출력 노드(204)에 송신한다. 다른 실시예에 있어서, 입력 노드(202)는 각각의 논스 공개 키 Ri를 각각의 트랜잭션의 비-트랜잭션 데이터 필드에 넣음으로써 그들을 블록체인을 통해 공유한다.
출력 노드(204)는 입력 노드(202)로부터의 지불을 포함할 수 있는 트랜잭션들을 찾기 위해 블록체인을 스캔한다. 검색은, 잠재적으로 논스 공개 키(들)일 수 있는, 비-트랜잭션 데이터의 존재를 나타내는 특정 신호 또는 코드를 포함하는 트랜잭션들을 식별하는 것에 기초할 수 있다. 일 구현예에 있어서, 검출된 신호는, 코드에 이어지는 데이터가 비-트랜잭션 데이터임을 나타내는, 비트코인 프로토콜에서의 OP_RETURN(또는 그것과 기능상 등가의 것)과 같은 비-트랜잭션 코드이다.
이 실시예에 있어서는, 코인 믹싱 트랜잭션(210) 자체에 또는 13개의 추가적인 트랜잭션(212) 세트에 비-트랜잭션 데이터를 포함하는 적어도 13개의 널(null) 출력이 존재한다. 각각의 필드에 대해, 결국, 출력 노드(204)는 데이터(논스 공개 키 Ri일 수 있을 것으로 상정함)를 추출하고, 그 BPrivx 및 BPrivy와 다음 식에 기초하여 BPrivi 및 상응하는 BPubi를 계산한다:
추출된 데이터가 비밀 출력 어드레스를 생성하기 위해 입력 노드(202)에 의해 사용되는 논스 공개 키 Ri 중 하나일 경우, 출력 노드(204)는 트랜잭션(210)에서 출력 어드레스들 중 하나와 일치하는 BPubi를 성공적으로 생성했을 것이다. 계산된 BPubi를 트랜잭션(210)에 대한 출력 어드레스와 단순 비교해서 그것이 지불들 중 하나를 정확하게 식별했는지를 검증할 수 있다. 이제, 상응하는 개인 키 BPrivi를 가지므로, 출력 노드(204)가 해당 UTXO를 소유한다.
도 2의 실시예는, 누적적으로 지불을 구성하고 트랜잭션(210)에 가담할 수 있는 UTXO(206)들의 조합을 입력 노드(202)가 찾을 수 있는 충분한 수량으로 복수의 기수-10 액면가들을 혼합하는 트랜잭션(210)을 수반한다는 점을 이해할 것이다. 상황에 따라, 이러한 코인 믹싱 트랜잭션은 가담할 수 없거나, 또는 완료되지 못할 수도 있다.
도 2의 실시예는, 아래의 논의에 있어서, 암호화폐 및 지불의 분산에 특정되는 반면, 설명된 프로세스 및 시스템은 미리 정해진 데이터 레코드 특성과 일치하는 데이터 레코드 특성(그 일례는 미리 정해진 액면가들과 일치하는 가치들임)에 기초하여 데이터 레코드(그 일례는 암호화폐 가치임)의 분산에도 적용 가능하다는 점을 또한 이해할 것이다.
도 3은 다수의 코인 믹싱 트랜잭션(302, 304)이 사용되는 예시적인 다른 지불 프로세스(300)를 예시한다.
이 실시예에 있어서, 입력 노드(202)는 가용 코인 믹싱 트랜잭션(302, 304)에 기초하여 가용 UTXO(206)를 선택하는 것에 제약을 받는다. 이 예시적인 실시예에 있어서는, 하나의 코인 믹싱 트랜잭션(302)은 0.1 코인 액면가를 혼합하기 위한 것이고, 다른 코인 믹싱 트랜잭션(304)은 0.01 코인 액면가를 혼합하기 위한 것이라고 상정된다. 각각의 트랜잭션(302, 304)에의 참여는, 이 실시예에서는 0.00001 코인인, 트랜잭션 수수료를 요하고, 이는 초과 지불 및 거스름돈에 의존하기보다는, 별개의 UTXO(206)들을 해당 수량으로 사용해서 입력 노드(202)에 의해 트랜잭션에 입력된다.
코인 믹싱 트랜잭션(302)이 반드시 0.01의 거스름돈을 반환하도록 설계되는 것은 아니고, 출력 노드(204)에의 출력 지불이 0.01 코인의 초과 지불을 초래할 것이기 때문에, 입력 노드(202)는 이전의 실시예에서처럼 5×0.1 코인을 사용할 수 없다. 따라서, 입력 노드(202)는 트랜잭션(302)에서 혼합되는 4×0.1 코인 및 트랜잭션(304)에서 혼합되는 9×0.01 코인을 사용해서 지불을 구성할 수 있다. 출력도 마찬가지로 트랜잭션(302)으로부터 4×0.1 및 트랜잭션(304)으로부터 9×0.01 코인일 것이다. 사용되는 특정한 구현/프로토콜에 있어서 다수의 비-트랜잭션 데이터 필드가 허용되면, 논스 공개 키 R1, R2, R3, R4는 트랜잭션(302)에서의 비-트랜잭션 데이터 필드에 배치될 것이고, 나머지 논스 공개 키 R5 내지 R13은 트랜잭션(304)에서의 비-트랜잭션 데이터 필드에 배치될 것이다. 대안으로서, 논스 공개 키 Ri는 별도의 통신 채널을 통해 출력 노드(204)와 공유되거나, 또는 비-트랜잭션 데이터 필드에 논스 공개 키 Ri 중 하나를 각각 포함하는 별도의 개별 블록체인 트랜잭션을 통해 공유된다.
당업자라면, 또 다른 예시적인 프로세스가 다른 액면가들 및 코인 믹싱 트랜잭션들을 사용해서 지불을 수행할 수 있음을 이해할 것이다.
위에서 설명한 프로세스(200) 및 프로세스(300)에 참여하기 위해 입력 노드(202)가 정확한 액면가의 이용 가능한 충분한 UTXO(206)들을 갖는다는 것을 또한 이해할 것이다. 입력 노드(202)가 소유한 UTXO(206)들은 미리 정해진 액면가로 코인 믹싱에 참여하기에는 정확한 액면가가 아닌 상황이 있을 수 있다. 일 구현예에 있어서, 입력 노드(202)는 후속하여 수행하려는 지불에 이용 가능한 UTXO를 갖게 되도록, 미리 정해진 액면가로 지불받기를 원한다는 것을 지불자에게 신호하도록 구성될 수 있다. 경우에 따라, 입력 노드(202)는 그 UTXO(206)를 미리 정해진 액면가를 갖는 다수의 UTXO(206)로 사전에 세분 또는 분해하도록 구성될 수 있다. 이러한 기능은, 트랜잭션이 무시할 수 있을 정도의 또는 제로(zero)의 트랜잭션 수수료로 구현될 수 있다면, UTXO(206)를 미리 정해진 액면가로 분해하도록 사전에 이러한 트랜잭션을 생성할 수 있는, 전자 지갑 소프트웨어에 구축될 수 있다. 경우에 따라, 전자 지갑 소프트웨어는 이 기능을 활성화 또는 비활성화하도록 구성될 수 있다. 활성화되면, 전자 지갑 소프트웨어는 이들 트랜잭션을 백그라운드에서 생성 및 실행할 수 있다. 일부 구현예에 있어서, 해당 소프트웨어는, 특히 분해 트랜잭션에 대하여 임의의 수수료를 지불해야 하는 경우, 트랜잭션을 실행하기 전에 사용자 승인을 위해 제안된 분해 트랜잭션을 디스플레이할 수 있다.
이제, 본원의 양태에 따라 입력 노드로부터 출력 노드에 블록체인-기반의 지불을 하기 위한 예시적인 일 방법(400)을 흐름도 형태로 도시하는 도 4를 참조한다. 방법(400)은 동작(402)에서 출력 노드로부터 공개 키 자료를 취득하는 단계를 포함한다. 이 실시예에 있어서는, 공개 키 자료가 BPrivx 및 BPrivy를 포함하지만, 일부 다른 구현예에 있어서는, 출력 노드 공개 키 자료가 다른 형태를 취할 수 있다.
이후, 동작(404)에서, 입력 노드는 그 가용 UTXO들의 풀(pool)로부터 UTXO를 선택해서 출력 노드에의 지불을 구성한다. 선택된 UTXO는 가용 코인 믹싱 트랜잭션의 액면가에 기초할 수 있다. 선택된 UTXO는 또한, 수반되는 UTXO의 수를 최소화하는 것에 기초할 수 있다. 선택된 UTXO는 또한, 입력 노드에 반환되는 거스름돈을 최소화하는 것에 기초할 수 있다. 지불을 구성하는 UTXO들을 식별하기 위한 선택 프로세스에서 다른 인자들이 사용될 수도 있다. 많은 경우에 지불이 다수의 UTXO로 구성될 수 있지만, 어떤 경우에는, 단일의 UTXO가 선택될 수 있다. UTXO의 누적 가치는 전체 지불 금액 이상이다.
동작(404)에서, 입력 노드는 또한 출력 노드에의 지불을 구성하는 출력들의 수 및 액면가를 결정한다. 출력 액면가는 미리 정해진 액면가들로부터 선택되고, 가용 코인 믹싱 트랙잭션의 액면가에 기초하여 선택될 수 있다.
출력의 수를 결정했으면, 동작(406)에서, 입력 노드는 각각의 출력에 대하여 난수 ri를 선택하고, 그 연계된 난수 ri 및 출력 노드로부터의 공개 키 자료에 기초하여 각각의 출력에 대한 BPubi 출력 어드레스를 생성한다.
이후, 동작(408)에서, 입력 노드는 입력 및 출력을 하나 이상의 코인 믹싱 트랜잭션에 삽입한다.
동작(410)에서, 입력 노드는 논스 공개 키 Ri를 출력 노드와 공유한다. 각각의 논스 공개 키 Ri는 각각의 출력 어드레스 BPubi를 생성하는 데 사용되는 난수 ri들 각각에 대응한다. 일부 구현예에 있어서, 논스 공개 키 Ri는 코인 믹싱 트랜잭션(들)에서 하나 이상의 비-트랜잭션 데이터 필드에 삽입된다. 일부 구현예에 있어서, 논스 공개 키 Ri는 별도의 추가적인 트랜잭션에서 비-트랜잭션 데이터 필드에 삽입된다; 각각의 논스 공개 키 Ri마다 최대 하나의 트랜잭션. 또 다른 구현예에 있어서, 입력 노드는 논스 공개 키 Ri를 블록체인 프로토콜 외부의 별도의 통신 채널을 통해 출력 노드와 공유한다.
이후, 동작(412)에서, 입력 노드는 하나 이상의 트랜잭션에 삽입한 입력들 각각에 서명한다.
도 5는 블록체인 기술을 사용하여 출력 노드에서 지불을 받기 위한 예시적인 한 방법(500)을 흐름도 형태로 도시한다. 출력 노드는 먼저, 동작(502)에서, 그 공개 키 자료를 공개 또는 이용 가능하게 한다. 이 예시적인 방법(500)에서, 공개 키 자료는 2개의 공개 키: BPubx 및 BPuby이다. 출력 노드에 지불하려고 하는 입력 노드에 이 자료를 제공할 수 있다. 이 실시예에 있어서는, 출력 노드가 도래하는 지불 및 지불 금액을 알고 있을 것으로 상정된다. 그러나, 출력 노드가 그 공개 키 자료를 일반적으로 공개하고 사전에 알 수 없는 금액으로 임의의 수의 가능한 소스로부터 지불을 받을 수 있는 경우가 있을 수 있다. 이러한 경우에, 출력 노드는 비-트랜잭션 데이터에 대하여 블록체인을 간헐적으로 스캔하고, 아래에서 설명되는 바와 같이, 이렇게 찾은 임의의 데이터를 테스트한다.
동작(504)에서, 출력 노드는 입력 노드로부터의 지불과 관련될 수 있는 트랜잭션에 대하여 블록체인을 검색하기 시작한다. 특히, 출력 노드는 비-트랜잭션 데이터의 존재를 나타내는 비-트랜잭션 신호 또는 코드를 포함하는 트랜잭션을 검색한다. 일부 실시형태에 있어서, 출력 노드는 비-트랜잭션 데이터를 포함하는 코인 믹싱 트랜잭션에 대한 그 검색을 제한할 수 있다. 이 실시예는 비-트랜잭션 데이터가 코인 믹싱 트랜잭션 자체에 포함되어 있다는 것을 상정한다는 점을 이해할 것이다. 위에서 논의된 바와 같이, 가능하지 않을 수도 있는 일부 구현예에 있어서, 논스 공개 키 자료는, 비-트랜잭션 데이터 필드를 포함하는 추가적인 트랜잭션을 통하거나, 또는 별도의 비-블록체인 통신 채널을 통하는 바와 같은 다른 방식으로 출력 노드와 공유될 수 있다. 예를 들어, 논스 공개 키들이 각각 별도의 트랜잭션에 있으면, 출력 노드는 하나의 P2PKH 출력 및 하나의 Null Data 출력을 포함하는 트랜잭션을 검색할 수 있다.
비-트랜잭션 데이터를 포함하는 후보 트랜잭션을 식별했으면, 동작(506)에서, 출력 노드는 비-트랜잭션 데이터를 추출하고, 해당 데이터가 트랜잭션에서 출력 어드레스들 중 하나를 생성하는 데 사용될 수 있는지의 여부를 테스트한다. 위에서 설명한 바와 같이, 비-트랜잭션 데이터가 논스 공개 키 Ri이면, 출력 노드는 그 공개 키 자료를 사용해서 공개-개인 키 쌍 BPrivi 및 BPubi를 생성할 수 있을 것이고, 생성된 공개 키 BPubi는 출력 어드레스들 중 하나와 일치할 것이다. 동작(508)에서, 출력 노드는 생성된 키가 트랜잭션에서 출력 어드레스와 일치하는지의 여부를 평가한다. 일치하지 않으면, 비-트랜잭션 데이터를 폐기하고 블록체인을 검색하는 것으로 돌아가거나, 또는 현재의 후보 트랜잭션에서 추가적인 비-트랜잭션 데이터가 있을 경우에는, 추가적인 비-트랜잭션 데이터를 테스트한다.
출력 노드가, 동작(508)에서, BPrivi 및 BPubi를 결정함으로써 지불들 중 하나를 성공적으로 식별했다고 결정하면, 동작(510)에 의해 지시된 바와 같이, BPubi에 할당되는 해당 지불을 입력 노드에 의해 지불되는 전체 금액에 가산하게 된다. 동작(512)에서, 출력 노드는 입력 노드로부터의 지불들의 누적 가치가 전체 지불을 완료했는지의 여부를 평가할 수 있다. 전체 지불을 완료하지 않았으면, 검색을 계속한다.
상기 예시적인 실시형태에서 설명한 동작들 중 일부는 프로세스에 실질적으로 영향을 미치지 않으면서 일부 구현예에서는 동시에 또는 상이한 순서로 발생할 수 있다는 점이 이해될 것이다. 본원은 그러한 변경 및 수정을 포함한다.
일부 구현예에 있어서는 코인 믹싱 트랜잭션들이 중앙 서버로부터 실행될 수 있다. 그러나, 모든 입력 노드가 은닉-서명(blind-signing) 서버로서의 역할을 하는 경우에는, 코인 믹싱 트랜잭션들이 완전히 분산될 수도 있다. 비트코인과 관련하여, JoinMarket은 참여를 장려하고 유동성을 증가시키는 코인 믹싱의 탈-중앙집중형 구현의 실시예이다.
이제, 참여 노드(600)의 간략화된 실시예를 블록도 형태로 도시하는 도 6을 참조한다. 노드(600)는 입력 노드 또는 출력 노드일 수 있다. 노드(600)는 하나 이상의 마이크로프로세서, 주문형 집적회로(ASIC), 마이크로컨트롤러, 또는 유사한 컴퓨터 처리 장치를 포함할 수 있는 프로세서(602)를 포함한다. 노드(600)는 가치, 변수, 및 경우에 따라 프로세서-실행 가능 프로그램 명령어를 저장하기 위한 영구적 및 일시적 메모리를 포함할 수 있는 메모리(604), 및 유선 또는 무선 네트워크를 통해 네트워크 연결을 제공하기 위한 네트워크 인터페이스(606)를 더 포함한다.
노드(600)는, 실행시에, 프로세서(602)로 하여금, 본 명세서에서 설명되는 하나 이상의 기능 또는 동작을 수행하게 하는 프로세서-실행 가능 명령어를 포함하는 프로세서-실행 가능 블록체인 애플리케이션(608)을 포함한다.
노드를 구성하기 위해 본 명세서에서 설명되는 장치 및 프로세스와, 설명된 방법/프로세스를 구현하는 임의의 모듈, 루틴, 프로세스, 스레드, 애플리케이션, 또는 그 밖의 소프트웨어 컴포넌트는 표준 컴퓨터 프로그래밍 기술 및 언어를 사용해서 실현될 수 있다는 점이 이해될 것이다. 본원은 특정한 프로세서, 컴퓨터 언어, 컴퓨터 프로그래밍 관례, 데이터 구조, 그 밖의 이러한 구현 상세에 한정되지 않는다.
전술한 실시형태들은 본 발명을 한정하는 것이 아니라 예시하는 것이며, 당업자라면, 첨부된 청구항들에 의해 규정되는 바와 같은 발명의 범위로부터 일탈함이 없이, 다양한 대안적인 실시형태들을 설계할 수 있을 것이라는 점에 유의해야 한다. 청구항들에 있어서, 괄호 안의 임의의 참조 부호는 해당 청구항들을 제한하는 것으로 해석되지 않아야 한다. "포함하는(comprising)" 및 "포함한다(comprises)" 등의 단어는 전체적으로 임의의 청구항 또는 명세서에 열거된 요소들 또는 단계들 이외의 것들의 존재를 배제하지 않는다. 본 명세서에 있어서, "포함한다"는 "구비한다 또는 구성된다(includes or consists of)"를 의미하고, "포함하는"은 "구비하는 또는 구성되는(including or consisting of)"을 의미한다. 요소의 단수형 참조는 그러한 요소들의 복수형 참조를 배제하지 않으며, 그 반대도 마찬가지이다. 본 발명은 몇 개의 별개의 요소를 포함하는 하드웨어에 의해, 그리고 적절하게 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 몇 개의 수단을 열거하는 장치 청구항에 있어서, 이들 수단 중 몇몇은 하나의 동일한 하드웨어 아이템에 의해 구체화될 수 있다. 단지 특정 조치들이 서로 다른 종속 청구항들에서 인용된다는 사실만으로 이들 조치의 조합이 유리하게 사용될 수 없다는 것을 나타내는 것은 아니다.

Claims (10)

  1. 블록체인을 사용하여 입력 노드와 출력 노드 사이에서 전체 데이터 레코드를 전송하는 컴퓨터-구현 방법으로서, 상기 출력 노드에서 구현되는 상기 방법은,
    상기 출력 노드와 연계되는 공개 키 자료를 상기 입력 노드에 제공하는 단계와,
    상기 입력 노드로부터 논스 공개 키를 취득하는 단계와,
    데이터 레코드 분산 트랜잭션을 찾도록 블록체인을 검색하는 단계 ― 상기 데이터 레코드 분산 트랜잭션은 다수의 입력 어드레스 및 다수의 출력 어드레스를 갖고, 각각의 출력 어드레스에는 일련의 미리 정해진 데이터 레코드 특성에서의 각각의 데이터 레코드 특성을 갖는 데이터 레코드가 할당됨 ― 와,
    상기 논스 공개 키 및 상기 공개 키 자료에 기초하여 공개-개인 키 쌍을 결정하는 단계와,
    상기 공개-개인 키 쌍으로부터의 공개 키를 상기 데이터 레코드 분산 트랜잭션에서의 출력 어드레스들 중 하나와 일치시키고, 해당 일치에 기초하여, 해당 출력 어드레스에 할당되는 상기 데이터 레코드를 중간 데이터 레코드 컴파일(compilation)에 추가하는 단계와,
    상기 중간 데이터 레코드 컴파일이 상기 전체 데이터 레코드보다 작은지 여부를 결정하고, 작으면, 상기 중간 데이터 레코드 컴파일이 상기 전체 데이터 레코드와 일치할 때까지 상기 검색하는 것, 상기 결정하는 것 및 상기 일치시키는 것을 계속하는 단계를 포함하는,
    방법.
  2. 제1항에 있어서,
    상기 공개 키 자료는 2개의 공개 키인 BPubx 및 BPuby를 포함하고, 상기 2개의 공개 키는 상응하는 각각의 개인 키인 BPrivx 및 BPrivy를 갖는,
    방법.
  3. 제2항에 있어서,
    i번째 공개-개인 키 쌍을 결정하는 단계는 다음을 결정하는 단계를 포함하고:

    여기서, BPrivi는 상기 공개-개인 키 쌍의 개인 키를 포함하고, H()는 해시 함수이며, Ri는 상기 논스 공개 키이고, 상기 i번째 공개-개인 키 쌍의 공개 키는 BPubi = BPriviG로서 결정되고, G는 타원 곡선 기준점인,
    방법.
  4. 제3항에 있어서,
    상기 논스 공개 키 Ri는 Ri = riG로서 생성되는,
    방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 블록체인을 검색하는 단계는 비-트랜잭션 코드를 포함하는 데이터 레코드 분산 트랜잭션을 식별하는 단계를 포함하고, 상기 논스 공개 키를 취득하는 단계는 상기 데이터 레코드 분산 트랜잭션의 비-트랜잭션 데이터 필드로부터 상기 논스 공개 키를 추출하는 단계를 포함하는,
    방법.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 논스 공개 키를 취득하는 단계는 비-트랜잭션 코드를 포함하는 트랜잭션을 찾도록 상기 블록체인을 검색하는 단계와, 식별될 경우, 상기 트랜잭션에서 비-트랜잭션 데이터 필드로부터 상기 논스 공개 키를 추출하는 단계를 포함하는,
    방법.
  7. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 데이터 레코드 특성은 상기 데이터 레코드에 지정되는 가치(value)이고, 상기 일련의 미리 정해진 데이터 레코드 특성은 최대 가치 및 상기 최대 가치의 배로 정의되는 급수(series)에 기초하는 일련의 가치이며, 여기서 n은 양의 정수인,
    방법.
  8. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 블록체인을 검색하는 단계는 비-트랜잭션 코드를 포함하는 코인 믹싱 트랜잭션(coin mixing transactions)을 식별하는 단계를 포함하고, 상기 논스 공개 키를 취득하는 단계는 상기 코인 믹싱 트랜잭션의 비-트랜잭션 데이터 필드로부터 상기 논스 공개 키를 추출하는 단계를 포함하는,
    방법.
  9. 블록체인을 사용하여 입력 노드와 출력 노드 사이에서 전체 데이터 레코드를 전송하는 컴퓨팅 장치로서,
    상기 컴퓨팅 장치는 상기 입력 노드 또는 상기 출력 노드 중 하나이고, 상기 컴퓨팅 장치는,
    프로세서와,
    메모리와,
    네트워크 연결을 제공하기 위한 네트워크 인터페이스와,
    상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 제1항 내지 제4항 중 어느 한 항에 청구된 방법을 수행하게 하는 컴퓨터-실행가능 명령어를 포함하는 블록체인 애플리케이션을 포함하는,
    컴퓨팅 장치.
  10. 블록체인을 사용하여 입력 노드와 출력 노드 사이에서 전체 데이터 레코드를 전송하기 위한 프로세서-실행가능 명령어를 저장하는 비일시적인 프로세서-판독가능 매체로서,
    상기 프로세서-실행가능 명령어는, 상기 입력 노드 또는 상기 출력 노드 중 하나에서의 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 제1항 내지 제4항 중 어느 한 항에 청구된 방법을 수행하게 하는,
    비일시적인 프로세서-판독가능 매체.
KR1020237035641A 2017-04-11 2018-04-10 블록체인을 사용해서 데이터 레코드를 분산하기 위한 시스템 및 방법 KR20230149870A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GB1705858.7 2017-04-11
GBGB1705858.7A GB201705858D0 (en) 2017-04-11 2017-04-11 Computer-implemented system and method
PCT/IB2018/052488 WO2018189667A1 (en) 2017-04-11 2018-04-10 System and method for distributing data records using a blockchain
KR1020197030808A KR102595998B1 (ko) 2017-04-11 2018-04-10 블록체인을 사용해서 데이터 레코드를 분산하기 위한 시스템 및 방법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197030808A Division KR102595998B1 (ko) 2017-04-11 2018-04-10 블록체인을 사용해서 데이터 레코드를 분산하기 위한 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR20230149870A true KR20230149870A (ko) 2023-10-27

Family

ID=58744815

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197030808A KR102595998B1 (ko) 2017-04-11 2018-04-10 블록체인을 사용해서 데이터 레코드를 분산하기 위한 시스템 및 방법
KR1020237035641A KR20230149870A (ko) 2017-04-11 2018-04-10 블록체인을 사용해서 데이터 레코드를 분산하기 위한 시스템 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020197030808A KR102595998B1 (ko) 2017-04-11 2018-04-10 블록체인을 사용해서 데이터 레코드를 분산하기 위한 시스템 및 방법

Country Status (8)

Country Link
US (1) US11886420B2 (ko)
EP (1) EP3610448A1 (ko)
JP (2) JP7210466B2 (ko)
KR (2) KR102595998B1 (ko)
CN (1) CN110546672A (ko)
GB (1) GB201705858D0 (ko)
SG (2) SG11201908756SA (ko)
WO (1) WO2018189667A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11989208B2 (en) * 2018-08-06 2024-05-21 Inveniam Capital Partners, Inc. Transactional sharding of blockchain transactions
CN109377215B (zh) 2018-08-06 2020-04-21 阿里巴巴集团控股有限公司 区块链交易方法及装置、电子设备
CN110084604B (zh) * 2018-10-25 2020-04-28 阿里巴巴集团控股有限公司 基于区块链的交易处理方法及装置、电子设备
CN111899103B (zh) 2018-10-25 2024-05-03 创新先进技术有限公司 基于区块链的交易处理方法及装置、电子设备
CN109474589B (zh) * 2018-11-05 2020-12-01 江苏大学 基于以太坊的隐私保护传输方法
US10700850B2 (en) 2018-11-27 2020-06-30 Alibaba Group Holding Limited System and method for information protection
CN113169881A (zh) * 2018-11-27 2021-07-23 区块链控股有限公司 经由区块链网络高效且安全地处理、访问和传输数据的系统和方法
US11218455B2 (en) 2018-11-27 2022-01-04 Advanced New Technologies Co., Ltd. System and method for information protection
US11127002B2 (en) 2018-11-27 2021-09-21 Advanced New Technologies Co., Ltd. System and method for information protection
WO2019072275A2 (en) 2018-11-27 2019-04-18 Alibaba Group Holding Limited SYSTEM AND METHOD FOR INFORMATION PROTECTION
EP3866382B1 (en) 2018-11-27 2023-06-21 Advanced New Technologies Co., Ltd. System and method for information protection
MX2019004543A (es) 2018-11-27 2019-11-11 Alibaba Group Holding Ltd Sistema y metodo para la proteccion de informacion.
ES2880453T3 (es) * 2018-11-30 2021-11-24 Advanced New Technologies Co Ltd Utilizar tabla de números de un solo uso para resolver fallas de transacciones concurrentes de cadena de bloques
CN109685657B (zh) * 2018-12-25 2023-07-21 众安信息技术服务有限公司 在区块链网络中处理交易的方法和节点设备以及存储介质
US20200242593A1 (en) * 2019-01-25 2020-07-30 International Business Machines Corporation Value optimizing data store
CN111680735B (zh) * 2020-06-02 2022-09-06 浙江大学 一种基于启发式交易分析的混币服务分析方法
WO2022003518A1 (en) * 2020-06-29 2022-01-06 Kirobo LTD. Reversible blockchain transaction techniques
US11784798B2 (en) * 2021-03-30 2023-10-10 Visa International Service Association System, method, and computer program product for data security
CN113438072B (zh) * 2021-06-09 2022-04-08 北京理工大学 一种基于派生链的区块链隐蔽通信方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002216428A (ja) * 2001-01-22 2002-08-02 Victor Co Of Japan Ltd 補助情報記録方法、補助情報記録装置、補助情報再生方法、補助情報再生装置、情報記録媒体、情報伝送装置、情報伝送方法、データ再生方法、およびデータ再生装置
US7088822B2 (en) * 2001-02-13 2006-08-08 Sony Corporation Information playback device, information recording device, information playback method, information recording method, and information recording medium and program storage medium used therewith
ES2297178T3 (es) * 2002-07-23 2008-05-01 Samsung Electronics Co., Ltd. Estructura de indice de metadatos, metodo para suministrar indices de metadatos, metodo de busqueda de metadatos y dispositivo que utiliza dichos indices de metadatos.
US20150120569A1 (en) * 2013-10-31 2015-04-30 Bitgo, Inc. Virtual currency address security
US10423961B1 (en) * 2014-02-19 2019-09-24 Hrl Laboratories, Llc System and method for operating a proactive digital currency ledger
US9398018B2 (en) * 2014-03-18 2016-07-19 nTrust Technology Solutions Corp. Virtual currency system
US10776761B2 (en) * 2014-03-18 2020-09-15 nChain Holdings Limited Virtual currency system
CA2943230C (en) * 2014-03-18 2018-07-17 nTrust Technology Solutions Corp. Virtual currency system
US9858569B2 (en) * 2014-03-21 2018-01-02 Ramanan Navaratnam Systems and methods in support of authentication of an item
US10346814B2 (en) * 2014-06-04 2019-07-09 MONI Limited System and method for executing financial transactions
US20150356523A1 (en) 2014-06-07 2015-12-10 ChainID LLC Decentralized identity verification systems and methods
CN105323064B (zh) * 2014-07-01 2018-07-10 柯呈翰 于线上加上即时文件动态标签、加密的系统及方法
CN104320262B (zh) * 2014-11-05 2017-07-21 中国科学院合肥物质科学研究院 基于加密数字货币公开账本技术的用户公钥地址绑定、检索和校验的方法及系统
US9735958B2 (en) 2015-05-19 2017-08-15 Coinbase, Inc. Key ceremony of a security system forming part of a host computer for cryptographic transactions
US20170048209A1 (en) 2015-07-14 2017-02-16 Fmr Llc Crypto Key Recovery and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems
US20170085555A1 (en) 2015-07-14 2017-03-23 Fmr Llc Point-to-Point Transaction Guidance Apparatuses, Methods and Systems
US20180253702A1 (en) * 2015-11-24 2018-09-06 Gartland & Mellina Group Blockchain solutions for financial services and other transactions-based industries
US10769600B2 (en) * 2016-09-26 2020-09-08 International Business Machines Corporation Cryptocurrency transactions using debit and credit values
CN106549749B (zh) 2016-12-06 2019-12-24 杭州趣链科技有限公司 一种基于加法同态加密的区块链隐私保护方法

Also Published As

Publication number Publication date
JP2023040202A (ja) 2023-03-22
JP2020513176A (ja) 2020-04-30
CN110546672A (zh) 2019-12-06
WO2018189667A1 (en) 2018-10-18
US20210124731A1 (en) 2021-04-29
KR20190138803A (ko) 2019-12-16
SG10202110666RA (en) 2021-11-29
KR102595998B1 (ko) 2023-11-01
EP3610448A1 (en) 2020-02-19
US11886420B2 (en) 2024-01-30
JP7210466B2 (ja) 2023-01-23
GB201705858D0 (en) 2017-05-24
SG11201908756SA (en) 2019-10-30

Similar Documents

Publication Publication Date Title
KR102595998B1 (ko) 블록체인을 사용해서 데이터 레코드를 분산하기 위한 시스템 및 방법
JP7320092B2 (ja) ブロックチェーンを使用した安全なデータレコード配信のための方法及びシステム
Shackelford et al. Block-by-block: leveraging the power of blockchain technology to build trust and promote cyber peace
EP3449452B1 (en) Implementing logic gate functionality using a blockchain
JP6689946B2 (ja) ネットワークを介して互いに通信する複数のノードのいずれか1つで資源を運営する方法、および、ネットワークを介して互いに通信する複数のノードのいずれか1つとして動作するコンピュータ装置
Burkhardt et al. Distributed ledger
US20230412358A1 (en) Blockchain-implemented security systems and methods for blinded outcome selection
Nica et al. Cryptocurrencies: Concept and current market structure
Bilal et al. Blockchain technology: Opportunities & challenges
Pothavarjula et al. An investigation of decentralized ledger applications using ethereum in a blockchain network
Larionov et al. Bitcoin Shared Send Transactions Untangling in Numbers
Sharma et al. Introduction to blockchain and distributed systems—fundamental theories and concepts
Jain et al. Plasma chain and blockchain security model
Ferraro et al. Distributed ledger technologies and the collaborative economy
Kizza Blockchains, Cryptocurrency, and Smart Contracts Technologies: Security Considerations
Swammy et al. Creation of a distributed ledger
Yang et al. Agricultural Information Data Sharing Model of Mobile Communication Network Based on Blockchain
Gulame et al. Security Aspects of Blockchain Technology
Das Design of blockchain based annonymous secure voting system using smart contract
Jaafar et al. Educational Certificate Verification System: Enhancing Security and Authenticity using Ethereum Blockchain and IPFS
Sabry et al. Adapting blockchain’s proof-of-work mechanism for multiple traveling salesmen problem optimization
Manfredi A decentralized marketplace for m2m economy within smart cities
Maurer Towards a new vision of customer identity management in European banking using emerging distributed ledger and cryptographic approaches: the case for and against blockchain
Jain Study of Bitcoin Address Graph: Linking Addresses and Estimating Overall Balance of a User

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal