KR20240011878A - 감시자 풀이 업데이트되는 서로 다른 네트워크들 간의 자산 전송을 위한 안전하고 신뢰할 수 있는 브릿지 - Google Patents

감시자 풀이 업데이트되는 서로 다른 네트워크들 간의 자산 전송을 위한 안전하고 신뢰할 수 있는 브릿지 Download PDF

Info

Publication number
KR20240011878A
KR20240011878A KR1020247001297A KR20247001297A KR20240011878A KR 20240011878 A KR20240011878 A KR 20240011878A KR 1020247001297 A KR1020247001297 A KR 1020247001297A KR 20247001297 A KR20247001297 A KR 20247001297A KR 20240011878 A KR20240011878 A KR 20240011878A
Authority
KR
South Korea
Prior art keywords
watcher
master secret
enclave
blockchain
migration
Prior art date
Application number
KR1020247001297A
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 KR20240011878A publication Critical patent/KR20240011878A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/36Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
    • G06Q20/367Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
    • G06Q20/3674Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes involving authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Accounting & Taxation (AREA)
  • Signal Processing (AREA)
  • Finance (AREA)
  • Theoretical Computer Science (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

본 명세서에는 블록체인 네트워크들 간 자산의 안전한 전송을 제공하는 시스템 및 방법이 개시된다. 이 브릿지 프로그램은, 보안 실행 환경에 의해 실행될 때, 보안 실행 서버로 하여금 오퍼레이션을 수행하게 만드는 명령을 포함할 수 잇고, 이 오퍼레이션은: 제1 마스터 비밀의 일 부분을 수신하는 단계; 제2 마스터 비밀을 생성하는 제1 및/또는 제2 자산의 목록을 수신하는 단계; 대응하는 제2 부분을 생성하는 단계; 주소 정보를 도출하는 단계; 제2 트랜잭션-데이터 및 제1 트랜잭션-데이터를 생성하는 단계; 마이그레이션-준비된 데이터-오브젝트를 생성하는 단계; 대응하는 마이그레이션-준비된 명령을 보내는 단계; 제2 마스터 비밀의 제2 부분을 보내는 단계; 및 완료 마이그레이션 요청을 보내는 단계를 포함한다.

Description

감시자 풀이 업데이트되는 서로 다른 네트워크들 간의 자산 전송을 위한 안전하고 신뢰할 수 있는 브릿지
본 명세서는 보안 엔클레이브 환경(secure enclave environment)을 사용하여 한 네트워크에서 다른 네트워크로 자산을 전송하는 것과 관련된 장치, 시스템 및 방법을 설명한다.
시장 참여자들 간의 트랜잭션(transaction)을 허용하고 처리하는 전자 거래소를 제공하기 위해 다양한 컴퓨터 시스템이 개발되었다. 예를 들어, 시장 참여자들 간에 디지털 자산의 거래를 허용하는 중앙 집중식 및 분산형 거래소가 개발되었다. 중앙 집중식 거래소는 예를 들어 시장 참여자들 간의 자산 소유권을 추적하고 해결하기 위해 중앙 호스트가 유지하는 중앙 원장을 포함할 수 있다. 예를 들어 분산형 거래소는 합의 프로세스(consensus processes)를 통해 시장 참여자들 간의 자산 소유권을 함께 조정하고 해결하는 복수의 다양한 호스트들에 걸쳐 유지되는 복수의 원장을 포함할 수 있다. 분산형 거래소는 블록체인 기술을 이용하여 구현되었다. 각각의 블록체인은 다양한 거래소, 자산, 디지털 통화, 암호화폐 또는 기타 유형의 토큰을 가질 수 있다. 한 블록체인 또는 네트워크로부터 다른 블록체인 또는 네트워크로 자산을 전송하기 위해, 사용자는 상당한 전송 수수료를 지불할 수 있다. 때로는, 이러한 전송 수수료는 전송되는 자산의 금액보다 더 많은 비용이 들 수 있다. 또한, 일부 구현예에서, 블록체인이 크로스-체인 전송(cross-chain transfer)을 지원하지 않으므로 인해 사용자가 한 블록체인에서 다른 블록체인으로 자산을 전송하지 못할 수도 있다.
제3자 행위자(예컨대, 멀웨어)에 의한 관찰, 탐지 또는 조작으로부터 보안 컴퓨팅 환경 내 프로세스의 다양한 양태를 보호할 수 있는 다양한 보안 컴퓨팅 환경이 개발되었다. 예를 들어, 제3자 행위자로부터 처리 중인 오퍼레이션 및/또는 데이터를 보호할 수 있는 암호화된 환경에서 코드를 실행하는 오퍼레이션을 제공하는 컴퓨팅 장치의 하드웨어 컴포넌트를 포함하는 보안 컴퓨팅 엔클레이브가 개발되었다. 예를 들어, 컴퓨팅 장치는 사용자-레벨 및/또는 운영체제 코드가 때때로 엔클레이브라고 불리는 개인 및 암호화된 메모리 영역을 형성할 수 있도록 구성된 하나 이상의 특수 프로세서를 포함할 수 있다.
본 명세서는 토큰, 암호화폐 및/또는 기타 디지털 자산의 전송을 제공하기 위한 안전하고 신뢰할 수 있는 컴퓨팅 브릿지(bridge) 또는 환경에 관한 것이다. 본 개시된 기술은 2개 이상의 블록체인들 사이에 브릿지를 구축하고 엔클레이브와 같은 신뢰없이도 안전한 환경을 통해 해당 브릿지를 운영하는 기능을 제공한다. 엔클레이브가 신뢰없이도 안전하기 때문에, 브릿지는 엔클레이브 및/또는 브릿지의 운영자에 의해 악용될 수 없으며, 제3자 행위자 또는 악의적인 엔티티(entity)가 브릿지를 악용할 수도 없다. 본 명세서에 설명된 브릿지는 그들 각자의 블록체인 상에 있으나 동일한 주소를 갖는 지갑들 간에 자산을 전송함으로써 자산 전송 프로세스를 단순화할 수 있다. 예를 들어, 브릿지는 제1 블록체인에서 제2 블록체인으로 일정량의 토큰을 전송할 수 있다. 제1 블록체인 상의 일정양의 토큰은 제1 블록체인 상의 사용자 지갑으로부터 동일한 블록체인 상의 브릿지 지갑으로 전송될 수 있다. 브릿지는 제2 블록체인에서 토큰을 발행(mint)(예컨대, 토큰을 래핑(wrapping))하고 그 발행된 토큰을 제2 블록체인 상의 사용자 지갑에 넣는 것을 가능하게 할 수 있다. 토큰은 제1 블록체인의 브릿지 지갑으로 전송된 토큰의 수량에 대응하는 수량으로 발행될 수 있다. 그 결과, 사용자는 동일한 개인 키를 사용하여 두 블록체인 상의 두 지갑을 모두 제어할 수 있으므로, 그 수량의 토큰이 잘못된 지갑에 발행될 가능성이 줄어든다. 일부 구현예에서, 본 개시된 기술은 또한 서로 다른 주소를 가진 지갑들 간에 일정양의 토큰을 전송할 수 있다. 본 공개된 기술은 하나의 블록체인에서 다른 블록체인으로 또는 하나 이상의 다른 네트워크들 간에 자산을 전송하기 위한 저비용이며 대기 시간이 짧고 안전한 수단을 제공할 수 있다.
일부 구현예에서, 제1 블록체인으로부터의 자산은 브릿지에 의해 제어되는 주소로 전송될 수 있으며(예컨대, 자산 또는 토큰은 사용자 지갑으로부터 제1 블록체인 상의 브릿지 지갑으로 전송될 수 있음), 엔클레이브(보안 환경)는 제1 블록체인에서 토큰을 보낸 것과 동일한 주소로 제2 블록체인에서 동일한 양의 대응하는 토큰을 발행할 수 있다. 또한, 일부 구현예에서, 래핑된 토큰은 제2 블록체인에서 소각(burn)될 수 있다. 래핑된 토큰은 소각 주소 및/또는 제2 블록체인 상의 브릿지 지갑으로 전송될 수 있다. 제2 블록체인에서 래핑된 토큰을 소각하면 그 래핑된 토큰은 더 이상 사용할 수 없게 될 수 있다. 따라서, 엔클레이브는 제1 블록체인 상의 브릿지 지갑 내의 대응하는 수량의 토큰이 제1 블록체인 상의 사용자 지갑으로 다시 릴리싱(release)되게 만드는 명령을 검증할 수 있다. 보안 엔클레이브를 통해 작동하는 브릿지는 크로스-체인 스마트 계약처럼 작동할 수 있다.
엔클레이브는 하나 이상의 제3자 행위자에 의한 원격 증명(remote attestation)을 통해 검증되어 엔클레이브가 유효하고 안전함을 보장할 수 있다. 예를 들어, 하나 이상의 감시자(warden)는 엔클레이브가 안전하게 작동하는지 검증하는 작업을 맡은 익명의 노드일 수 있다. 또한, 감시자는 각 블록체인에서 발행 및/또는 소각이 시작된 시기를 판정하기 위해 블록체인의 상태 변경을 모니터링하는 작업을 맡을 수도 있다. 감시자는 원격 증명을 사용하여 엔클레이브가 유효하고 안전한 환경에서 작동하고 있는지 검증할 수 있다. 블록체인들에 걸쳐 토큰을 전송하는 사용자와 같은 하나 이상의 다른 엔티티도 엔클레이브의 원격 증명을 수행할 수 있고, 및/또는 감시자가 원격 증명을 수행할 것을 요청할 수 있다.
본 명세서에 설명된 하나 이상의 실시예는 블록체인 네트워크들 간 자산의 안전한 전송을 제공하기 위한 시스템을 포함할 수 있다. 이 시스템은 시스템 상에 설치되어 작동 시 시스템으로 하여금 액션을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합을 가짐으로써, 특정 오퍼레이션 또는 액션을 수행하도록 구성될 수 있는 하나 이상의 컴퓨터를 포함할 수 있다. 하나 이상의 컴퓨터 프로그램은 데이터 처리 장치에 의해 실행될 때 그 장치로 하여금 액션을 수행하게 만드는 명령을 포함함으로써 특정 오퍼레이션 또는 액션을 수행하도록 구성될 수 있다. 일반적인 일 양태는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템을 포함한다. 이 시스템은 제1 블록체인 네트워크와 제2 블록체인 네트워크 간에 자산의 안전한 전송을 가능하게 하기 위해 제1 감시자 서버 풀과 상호작용하기 위해 보안 실행 환경에서 브릿지 프로그램을 실행하도록 구성된 보안 실행 서버를 포함할 수 있다. 이 브릿지 프로그램은, 보안 실행 환경에 의해 실행될 때, 보안 실행 서버로 하여금 오퍼레이션을 수행하게 만드는 명령을 포함할 수 있고, 이 오퍼레이션은: 제1 마스터 비밀로부터 제2 마스터 비밀로의 마이그레이션(migration)의 개시를 결정하는 단계; 제1 감시자 서버 풀의 각각의 감시자 서버로부터 제1 마스터 비밀의 대응하는 부분을 수신하는 단계; 제1 감시자 서버 풀로부터, i) 제2 자산의 목록, 및 제1 자산의 목록을 포함하는 그룹 중 적어도 하나를 수신하는 단계; 제2 마스터 비밀을 생성하는 단계; 제2 마스터 비밀로부터 그리고 제2 감시자 서버 풀의 각각의 감시자 서버에 대해, 제2 마스터 비밀의 대응하는 제2 부분을 생성하는 단계; 제1 블록체인 네트워크 및 제2 블록체인 네트워크에 대한 제2 마스터 비밀로부터 주소 정보를 도출하는 단계; 각각의 제2 자산에 대해, 제2 자산을 제2 블록체인 네트워크의 제2 지갑으로 전송하도록 제2 블록체인 네트워크에 지시하기 위한 제2 트랜잭션-데이터를 생성하는 단계로서, 제2 지갑은 제2 마스터 비밀로부터 도출된 주소 정보로 참조되는 것인, 상기 제2 트랜잭션-데이터를 생성하는 단계; 각각의 제1 자산에 대해, 제1 블록체인 네트워크에 제1 자산을 제1 블록체인 네트워크의 제1 지갑으로 전송하도록 지시하기 위한 제1 트랜잭션-데이터를 생성하는 단계로서, 제1 지갑은 제2 마스터 비밀로부터 도출된 주소 정보로 참조되는 것인, 상기 제1 트랜잭션-데이터를 생성하는 단계; 제2 마스터 비밀의 제2 부분, 제1 트랜잭션-데이터 및 제2 트랜잭션-데이터를 각각 암호화하는 단계를 포함할 수 있는 마이그레이션-준비된 데이터-오브젝트를 생성하는 단계; 제2 풀의 각각의 감시자 서버에 대하여, 제2 마스터 비밀의 대응하는 제2 부분을 이용하여, i) 마이그레이션-준비된 데이터 오브젝트, ii) 제1 마스터 비밀 및 iii) 제2 마스터 비밀을 암호화함으로써, 제2 풀의 감시자 서버에 대응하는 마이그레이션-준비된 명령을 생성하는 단계; 제2 풀의 각각의 감시자 서버에, 대응하는 마이그레이션-준비된 명령을 보내는 단계; 제2 풀의 각각의 감시자 서버에, 제2 마스터 비밀의 대응하는 제2 부분을 보내는 단계; 및 제2 풀의 각각의 감시자 서버로부터, 대응하는 마이그레이션-준비된 명령의 수신에 대한 확인 응답(acknowledge)을 수신한 것에 응답하여, 제2 풀의 각각의 감시자 서버로 하여금 제l 마스터 비밀로부터 제2 마스터 비밀로 마이그레이션하게 하도록 구성된 완료 마이그레이션 요청(complete migration request)을 보내는 단계를 포함한다. 이 양태의 다른 실시예는 대응하는 컴퓨터 시스템, 장치, 및 하나 이상의 컴퓨터 저장 장치 상에 기록된 컴퓨터 프로그램을 포함하며, 이들 각각은 방법의 액션을 수행하도록 구성된다.
구현예는 아래 특징들 중 하나 이상을 포함할 수 있다. 마이그레이션의 개시를 결정하는 단계는 제1 마스터 비밀로부터 제2 마스터 비밀로 마이그레이션하라는, 제1 풀의 감시자 서버 중 적어도 다수로부터의 요청을 수신하는 단계를 포함할 수 있다. 상기 오퍼레이션은 제1 풀의 감시자 서버에 임의의 이전의 마이그레이션-준비된 데이터 오브젝트에 대해 질의(query)하는 단계; 및 적어도 하나의 이전의 마이그레이션-준비된 오브젝트를 수신한 것에 응답하여, 마이그레이션 재설정 메시지를 제1 마이그레이션 서버 풀로 보내는 단계를 더 포함할 수 있다. 상기 오퍼레이션은 더 이상 사용되지 않는(deprecated) 마스터 비밀의 일 부분을 수신한 것에 응답하여, 제1 감시자 서버 풀의 검증을 실패로 하는 단계를 더 포함할 수 있다. 제2 자산의 목록, 제1 자산의 목록 및 제1 마스터 비밀의 대응하는 부분은 감시자 서버의 적어도 다수로부터의 단일 메시지로 수신된다. 제1 트랜잭션-데이터 및 제2 트랜잭션-데이터는 스마트-계약 명령과 무관하여, 제1 블록체인 네트워크의 제1 지갑으로의 제1 자산의 지시된 전송, 및 제2 블록체인 네트워크의 제2 지갑으로의 제2 자산의 스마트 계약의 허용된-발행자 레코드의 지시된 업데이트는 제1 블록체인 네트워크로의 임의의 새로운 스마트 계약의 도입과 무관하게 그리고 제2 블록체인 네트워크로의 임의의 새로운 스마트 계약의 도입과 무관하게 수행된다. 제2 마스터 비밀의 제2 부분, 제1 트랜잭션-데이터 및 제2 트랜잭션-데이터를 각각 암호화하는 단계는 수정을 방지하도록 구성된 보안 실행 환경의 키를 사용한다. 제2 감시자 서버 풀은 마이그레이션 준비된 명령을 복호화하도록 작동 가능하여, 하드웨어 고장으로 인해 완료 마이그레이션 요청을 보낼 수 없게 된 경우에도 마이그레이션의 완료를 가능하게 한다. 상기 오퍼레이션은: 제1 감시자 서버 풀을 생성하기 전에, 제1 풀의 감시자 서버들을 식별하는 단계; 제1 풀의 감시자 서버를 검증하는 단계; 제1 풀의 각각의 감시자 서버에 대해 제1 마스터 비밀의 대응하는 부분을 생성하는 단계; 및 제1 마스터 비밀의 대응하는 부분을 제1 풀의 각각의 감시자 서버에 분배하는 단계를 포함할 수 있는 제1 풀의 감시자 서버로부터 상기 제1 풀을 생성하는 단계를 더 포함할 수 있다. 제1 감시자 서버 풀은 제2 감시자 서버 풀과 동일한 개수의 감시자 서버를 포함한다. 제1 감시자 서버 풀은 제2 감시자 서버 풀보다 많은 개수의 감시자 서버를 포함한다. 제1 감시자 서버 풀은 제2 감시자 서버 풀보다 적은 개수의 감시자 서버를 포함한다. 제1 감시자 서버 풀은 제2 감시자 서버 풀과 동일한 감시자 서버를 포함한다. 제1 감시자 서버 풀은 제2 감시자 서버 풀과 상호 배타적이다. 제1 감시자 서버 풀은 제2 감시자 서버의 전부는 아니지만 일부를 포함한다. 이 시스템은 제1 풀의 감시자 서버 중 적어도 하나의 감시자 서버를 포함할 수 있다. 제2 감시자 서버 풀의 특정 감시자 서버는 또한 제1 감시자 서버 풀의 하나의 감시자 서버이다. 제2 감시자 서버 풀의 특정 감시자 서버는 제1 감시자 서버 풀의 감시자 서버가 아니다. 설명된 기술의 구현예는 하드웨어, 방법 또는 프로세스, 또는 컴퓨터 액세스 가능 매체 상의 컴퓨터 소프트웨어를 포함할 수 있다. 이러한 오퍼레이션은 완료 마이그레이션 요청을 보내기 전에 사용자 인증을 받는 단계를 포함한다.
일반적인 일 양태는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템을 포함한다. 이 시스템은: 브릿지 프로그램으로부터, i) 대응하는 마이그레이션-준비된 명령; ii) 제2 비밀의 대응하는 제2 부분; iii) 완료 마이그레이션 요청을 수신하도록 구성된 제2 감시자 서버 풀 중 특정 감시자 서버를 포함한다. 이 브릿지 프로그램은, 보안 실행 환경에 의해 실행될 때, 보안 실행 서버로 하여금 오퍼레이션을 수행하게 만드는 명령을 포함할 수 있고, 이 오퍼레이션은: 제1 마스터 비밀로부터 제2 마스터 비밀로의 마이그레이션의 개시를 결정하는 단계; 제1 풀의 각각의 감시자 서버로부터 제1 마스터 비밀의 대응하는 부분을 수신하는 단계; 제1 감시자 서버 풀로부터, 제2 자산의 목록을 수신하는 단계; 제1 감시자 서버 풀로부터, 제1 자산의 목록을 수신하는 단계; 제2 마스터 비밀을 생성하는 단계; 제2 마스터 비밀로부터 그리고 제2 감시자 서버 풀의 각각의 감시자 서버에 대해, 제2 마스터 비밀의 대응하는 제2 부분을 생성하는 단계; 제1 블록체인 네트워크 및 제2 블록체인 네트워크에 대한 제2 마스터 비밀로부터 주소 정보를 도출하는 단계; 각각의 제2 자산에 대해, 제2 자산을 제2 블록체인 네트워크의 제2 지갑으로 전송하도록 제2 블록체인 네트워크에 지시하는 제2 트랜잭션-데이터를 생성하는 단계로서, 제2 지갑은 제2 마스터 비밀로부터 도출된 주소 정보로 참조되는 것인, 상기 제2 트랜잭션-데이터를 생성하는 단계; 각각의 제1 자산에 대해, 제1 자산을 제1 블록체인 네트워크의 제1 지갑으로 전송하도록 제1 블록체인 네트워크에 지시하는 제1 트랜잭션-데이터를 생성하는 단계로서, 제1 지갑은 제2 마스터 비밀로부터 도출된 주소 정보로 참조되는 것인, 상기 제1 트랜잭션-데이터를 생성하는 단계; 제2 마스터 비밀의 제2 부분, 제1 트랜잭션-데이터 및 제2 트랜잭션-데이터를 각각 암호화하는 단계를 포함하는 마이그레이션-준비된 데이터-오브젝트를 생성하는 단계; 제2 풀의 각각의 감시자 서버에 대하여, 제2 마스터 비밀의 대응하는 제2 번째 부분을 이용하여, i) 마이그레이션-준비된 데이터 오브젝트, ii) 제1 마스터 비밀 및 iii) 제2 마스터 비밀을 암호화함으로써, 제2 감시자 서버 풀에 대응하는 마이그레이션-준비된 명령을 생성하는 단계; 제2 풀의 각각의 감시자 서버에, 대응하는 마이그레이션-준비된 명령을 보내는 단계; 제2 감시자 서버 풀의 각각의 감시자 서버에, 제2 마스터 비밀의 대응하는 제2 부분을 보내는 단계; 및 제2 풀의 각각의 감시자 서버로부터, 대응하는 마이그레이션-준비된 명령의 수신에 대한 확인 응답을 수신한 것에 응답하여, 제2 풀의 각각의 감시자 서버로 하여금 제l 마스터 비밀로부터 제2 마스터 비밀로 마이그레이션하게 하도록 구성된 완료 마이그레이션 요청을 보내는 단계를 포함할 수 있다. 이 양태의 다른 실시예는 대응하는 컴퓨터 시스템, 장치, 및 하나 이상의 컴퓨터 저장 장치 상에 기록된 컴퓨터 프로그램을 포함하며, 이들 각각은 방법의 액션을 수행하도록 구성된다.
일반적인 일 양태는 제1 블록체인 네트워크와 제2 블록체인 네트워크 간의 자산의 안전한 전송을 가능하게 하기 위해 제1 감시자 서버 풀과 상호작용하기 위해 보안 실행 환경에서 실행하도록 구성된 브릿지 프로그램을 저장하는 비일시적 컴퓨터 판독 가능 매체를 포함한다. 이 브릿지 프로그램은, 보안 실행 환경에 의해 실행될 때, 보안 실행 서버로 하여금 오퍼레이션을 수행하게 만드는 명령을 포함할 수 있고, 이 오퍼레이션은: 제1 마스터 비밀로부터 제2 마스터 비밀로의 마이그레이션의 개시를 결정하는 단계; 제1 풀의 각각의 감시자 서버로부터 제1 마스터 비밀의 대응하는 부분을 수신하는 단계; 제1 감시자 서버 풀로부터, 제2 자산의 목록을 수신하는 단계; 제1 감시자 서버 풀로부터, 제1 자산의 목록을 수신하는 단계; 제2 마스터 비밀을 생성하는 단계; 제2 마스터 비밀로부터 그리고 제2 감시자 서버 풀의 각각의 감시자 서버에 대해, 제2 마스터 비밀의 대응하는 제2 부분을 생성하는 단계; 제1 블록체인 네트워크 및 제2 블록체인 네트워크에 대한 제2 마스터 비밀로부터 주소 정보를 도출하는 단계; 각각의 제2 자산에 대해, 제2 자산을 제2 블록체인 네트워크의 제2 지갑으로 전송하도록 제2 블록체인 네트워크에 지시하는 제2 트랜잭션-데이터를 생성하는 단계로서, 제2 지갑은 제2 마스터 비밀로부터 도출된 주소 정보로 참조되는 것인, 상기 제2 트랜잭션-데이터를 생성하는 단계; 각각의 제1 자산에 대해, 제1 자산을 제1 블록체인 네트워크의 제1 지갑으로 전송하도록 제1 블록체인 네트워크에 지시하는 제1 트랜잭션-데이터를 생성하는 단계로서, 제1 지갑은 상기 제2 마스터 비밀로부터 도출된 주소 정보로 참조되는 것인, 상기 제1 트랜잭션-데이터를 생성하는 단계; 제2 마스터 비밀의 제2 부분, 제1 트랜잭션-데이터 및 제2 트랜잭션-데이터를 각각 암호화하는 단계를 포함할 수 있는 마이그레이션-준비된 데이터-오브젝트를 생성하는 단계; 제2 풀의 각각의 감시자 서버에 대하여, 제2 마스터 비밀의 대응하는 제2 부분을 사용하여, i) 마이그레이션-준비된 데이터 오브젝트, ii) 제1 마스터 비밀 및 iii) 제2 마스터 비밀을 암호화함으로써, 제2 감시자 서버 풀에 대응하는 마이그레이션-준비된 명령을 생성하는 단계; 제2 풀의 각각의 감시자 서버에, 대응하는 마이그레이션-준비된 명령을 보내는 단계; 제2 감시자 서버 풀의 각각의 감시자 서버에, 제2 마스터 비밀의 대응하는 제2 부분을 보내는 단계; 및 제2 풀의 각각의 감시자 서버로부터, 대응하는 마이그레이션-준비된 명령의 수신에 대한 확인 응답을 수신한 것에 응답하여, 제2 풀의 각각의 감시자 서버로 하여금 제l 마스터 비밀로부터 제2 마스터 비밀로 마이그레이션하게 하도록 구성된 완료 마이그레이션 요청을 보내는 단계를 포함할 수 있다. 이 양태의 다른 실시예는 대응하는 컴퓨터 시스템, 장치, 및 하나 이상의 컴퓨터 저장 장치 상에 기록된 컴퓨터 프로그램을 포함하며, 이들 각각은 방법의 액션을 수행하도록 구성된다.
본 명세서에 설명된 장치, 시스템 및 기술은 아래의 장점들 중 하나 이상을 제공할 수 있다. 예를 들어, 본 공개된 기술은 다른 네트워크보다 보안 공격으로부터 더 안전할 수 있다. 본 공개된 기술은 공개 API를 포함하지 않을 수도 있다. 사용자 대면 API(user facing API)가 없으므로, SSL 인증 및 검증 또는 속도 제한이 없을 수 있다. 이러한 작은 공격 표면으로 인해, DDOS 공격에 대한 노출이 제한되거나 전혀 없을 수 있으므로, 엔클레이브를 통한 브릿지 상으로의 자산 전송이 보다 안전한 프로세스가 된다. 이 프로세스가 더 안전해짐에 따라, 사용자는 엔클레이브 환경을 더 신뢰를 할 수 있으며 브릿지를 사용하여 자산을 전송하려는 경향이 더 커질 수 있다.
다른 예로서, 본 개시된 기술은 단순화된 지갑 구조를 제공한다. 엔클레이브는 그 사이에 브릿지가 구축된 블록체인들 각각에서 하나의 주소를 관리할 수 있다. 따라서, 두 블록체인 모두에서 사용자의 지갑을 식별하기 위해 하나의 주소가 사용될 수 있다. 또한, 두 블록체인 모두에서 브릿지 주소를 식별하기 위해 하나의 주소가 사용될 수 있다. 두 블록체인 모두에서 사용자 지갑을 식별하기 위해 하나의 주소를 사용하는 것은 일정양의 토큰 또는 기타 자산이 올바른 지갑으로 전송됨을 보장하는데 유리할 수 있다. 하나의 주소를 사용함으로써 본 공개된 기술의 보안성이 높아지고 본 공개된 기술에 대해 사용자가 가질 수 있는 신뢰도가 높아진다. 또한, 트랜잭션의 비용을 충당하기 위해 자금을 이리저리 이동시키기 위한 추가 지갑 구조가 필요하지 않을 수도 있다. 그 결과, 엔클레이브는 트랜잭션을 생성하고 전송할 수 있으며 동시에 트랜잭션 수수료 비용도 단순한 방식으로 줄일 수 있다.
본 개시된 기술은 또한 더 작은 신뢰할 수 있는 코드 베이스를 제공할 수 있다. 본 개시된 기술은 엔클레이브 외부에서 실행되고 엔클레이브보다 적은 제한을 가지는 감시자와 같은 노드 상에서 트랜잭션을 파싱(parsing)할 수 있다. 그 결과, 엔클레이브의 책임이 최소화될 수 있으며, 이는 보안 관점에서 공격의 위험을 더욱 줄일 수 있다.
또한, 본 공개된 기술은 고객 파악(know-your-customer) 또는 자금세탁 방지 검증(anti-money laundering verification)을 필요로 하지 않을 수 있다. 구축에 의해, 본 공개된 기술은 단일 개인이 보유하는 자산을 이동시킬 수 있다. 즉, 설명한 바와 같이, 동일한 주소를 사용하여 한 블록체인 상의 사용자 지갑으로부터 다른 블록체인 상의 사용자 지갑으로 자산을 전송할 수 있다. 본 공개된 기술은 미리 자산에 대한 접근 권한을 가지지 않은 사용자에게 자금을 이체할 수 없다. 따라서, 다른 블록체인들 또는 네트워크들 간에 자산을 전송하기 위해 필요할 수 있는 고객 파악 및/또는 자금세탁 방지 검증이 더 이상 필요하지 않을 수 있다. 이것은 또한 브릿지의 규제 특성 및 운영을 더 안전하게 만드는데 유리할 수 있다.
본 공개된 기술은 또한 사용자에게 하나 이상의 이점을 제공할 수 있다. 예를 들어, 일부 블록체인은 연료비(gas price)를 부과하는데, 이는 스마트 계약을 통한 상호 작용 및 자산의 전송을 비용이 많이 들고 제한적으로 만든다. 때로는, 블록체인을 통해 자산을 보내는 것은 이동되는 금액 또는 수량보다 거래 수수료가 더 많이 들 수 있다. 본 공개된 기술을 사용하면, 사용자는 그들의 자산을 래핑하기 위한 제1 블록체인 상의 하나의 전송 트랜잭션에 대한 연료비, 및 자산을 언래핑하거나 다른 방식으로 소각하기 위한 제2 블록체인 상의 하나의 전송 트랜잭션에 대한 연료비를 커버하는 트랜잭션 수수료만 지불할 수 있다. 일부 구현예에서, 브릿지 운영자가 운영 비용을 충당하기 위해 소액의 수수료를 부과할 수 있지만, 이 수수료는 블록체인 또는 다른 네트워크의 수수료만큼 엄두도 내지 못할만큼 비싸지는 않을 수 있다. 일부 구현예에서, 본 개시된 기술은 또한 전송되고 있는 자산의 현재 가격에 기초하여 수수료 금액을 결정할 수 있다. 따라서, 브릿지를 통과하는데 드는 수수료는 브릿지 운영자를 위한 정액 전송 수수료 금액과 더불어, 각 블록체인당 하나씩, 2번의 전송에 대한 연료비일 수 있다. 낮은 전송 수수료는 두 블록체인 모두에서 교환에 참여하려는 사용자가 본 공개된 기술을 채택하고 사용하는 것을 더 바람직하게 만든다.
또한, 브릿지와의 사용자 상호작용이 단순화될 수 있다. 사용자는 제1 블록체인 상의 그들의 지갑으로부터 제1 블록체인 상의 브릿지 지갑을 나타내는 고정 주소로 토큰을 전송할 수 있다. 래핑된 토큰은 제2 블록체인 상에 있지만 사용자의 동일한 지갑 주소로 발행될 수 있다. 토큰을 언래핑하기 위해, 사용자는 제2 블록체인 상의 그들의 지갑으로부터 제2 블록체인 상의 고정 소각 주소 및/또는 브릿지 지갑으로 그들의 래핑된 토큰을 보낼 수 있다. 그 다음, 오리지널 토큰은 제1 블록체인 상의 동일한 지갑 주소로 다시 보내질 수 있다. 이 인터페이스는 사용자가 배우고 상호 작용하기 쉬울 수 있으며 사용자가 엔클레이브, 감시자 및/또는 브릿지와 직접 상호 작용할 필요가 없을 수 있다.
또한, 브릿지가 올바르게 작동하는지 검증하기 위해 원격 증명 기술이 사용될 수 있다. 원격 증명은 코드 자체가 엔클레이브에서 실행되는 것을 제외하고, 브릿지 또는 브릿지를 통해 전송되는 자산을 조작하기 위해 액세스할 수 있는 엔티티가 없음을 사용자에게 보장할 수 있다. 안전한 트랜잭션이 수행될 수 있으며 사용자는 본 공개된 기술을 사용하여 엔클레이브를 신뢰할 수 있다.
더욱이, 개시된 기술은 사용자가 서로 다른 블록체인 또는 네트워크 간에 토큰 또는 기타 디지털 자산을 전송할 수 있게 해준다. 전통적으로, 사용자는 다양한 네트워크에 걸쳐 다양한 디지털 자산을 거래할 수 없다. 사용자가 자산을 전송 또는 거래할 수 있는 경우, 그들은 상당한 전송 수수료를 부과 받을 수 있다. 그 결과, 사용자는 다양한 네트워크 및 거래소를 통해 다양한 기회 및 벤처에 투자할 수 있는 능력을 제한 받는다. 따라서, 본 공개된 기술은 사용자가 디지털 자산을 체인들 간에 이동시킬 수 있게 해주며, 이를 통해 다양한 기회 및 벤처에 투자할 수 있는 사용자의 능력이 증대될 수 있다.
하나 이상의 구현예의 세부사항은 첨부 도면 및 아래 설명에 제공되어 있다. 다른 특징 및 장점은 설명과 도면 및 청구범위를 통해 명백해질 것이다.
도 1a 및 도 1b는 블록체인들 간에 토큰을 전송하기 위한 보안 엔클레이브 환경의 개념도이다.
도 2는 본 명세서에 설명된 기술 중 일부를 수행하는 감시자의 개념도이다.
도 3a 내지 도 3d는 본 명세서에 설명된 기술을 사용하여 블록체인에서 토큰을 발행하는 프로세스의 개념도이다.
도 4a 내지 도 4e는 본 명세서에 설명된 기술을 사용하여 블록체인에서 토큰을 릴리싱하는 프로세스의 개념도이다.
도 5는 토큰 발행 프로세스의 스윔레인 다이어그램이다.
도 6은 토큰 릴리싱 프로세스의 스윔레인 다이어그램이다.
도 7a 내지 도 7h는 엔클레이브 시작 프로세스의 스윔레인 다이어그램이다.
도 8은 엔클레이브 시작 동안 엔클레이브의 원격 증명을 위한 프로세스의 스윔레인 다이어그램이다.
도 9는 엔클레이브 재시작 프로세스의 스윔레인 다이어그램이다.
도 10은 다른 엔클레이브 재시작 프로세스의 스윔레인 다이어그램이다.
도 11은 컴퓨팅 장치 및 모바일 컴퓨팅 장치의 예를 도시하는 개략도이다.
다양한 도면에서 동일한 부재번호는 동일한 요소를 나타낸다.
본 명세서는 시스템이 안전하고 올바르게 작동함을 보장하도록 작동하는 감시자 풀을 사용하여 하나의 블록체인 시스템에서 다른 시스템으로 자산을 브릿징하는 시스템과 관련된다. 이 시스템에 참여하는 감시자 풀은 업데이트될 수 있고, 이는 동적 감시자 그룹을 가능하게 한다. 본 명세서는 서로 다른 네트워크들 간에 디지털 자산, 토큰, 및 암호화폐와 같은 자산을 전송하기 위한 보안 엔클레이브 환경에 관한 것이다. 네트워크는 다양한 블록체인일 수 있다. 본 공개된 기술은 둘 이상의 블록체인 사이에 브릿지를 제공할 수 있으며, 이 브릿지는 안전하고 신뢰할 수 있는 엔클레이브에서 작동한다. 자산은 그들 각각의 블록체인 상에 있으나 동일한 주소를 가진 지갑들 사이에서 전송될 수 있고, 이로 인해 사용자는 동일한 개인 키를 사용하여 두 지갑을 모두 제어할 수 있으며 자산이 잘못된 지갑으로 전송될 가능성이 줄어든다. 본 공개된 기술은 지정된 감시자(예컨대, 당사자, 엔티티, 노드)를 통한 원격 증명을 통해 검증될 수 있는 크로스-체인 스마트 계약처럼 작동한다. 자산(예컨대, 스마트 계약)의 전송은 보안 엔클레이브 환경 내에서 이루어질 수 있으므로, 전송은 악의적인 행위자에 의해 변경될 수 없다. 또한, 준신뢰(semi-trusted) 감시자는 원격 증명 기술을 사용하여 엔클레이브 및 엔클레이브 내에서 수행되는 모든 스마트 계약의 무결성을 검증할 수 있다. 복수의 노드 대신 엔클레이브만이 스마트 계약 거래를 수행 또는 실행하므로, 엔클레이브가 서로 다른 블록체인(예컨대, 네트워크)들 간의 전송을 지원하도록 하는 것이 더 실현 가능해질 수 있다.
도 1a는 블록체인들 간에 토큰을 전송하기 위한 보안 엔클레이브 환경(100)의 개념도이다. 제1 블록체인(104A) 및 제2 블록체인(104B)은 네트워크(들)(102)를 통해 통신할 수 있다. 제1 블록체인(104A)은 복수의 노드(106A-N)를 포함할 수 있다. 노드(106A-N) 각각은 서로 통신할 수 있고 제1 블록체인(104A)에서 하나 이상의 오퍼레이션을 수행할 수 있다. 예를 들어, 사용자가 토큰 또는 일정량의 토큰을 제2 블록체인(104B)으로 전송하려고 할 때 노드(106A-N)는 사용자 지갑으로부터 제1 블록체인(104A) 내의 브릿지 지갑으로 토큰을 전송할 수 있다. 또한, 노드(106A-N)는 소각 요청이 이루어지고 제2 블록체인(104B)에서 검증된 때 브릿지 지갑으로부터 사용자 지갑으로 토큰을 릴리싱할 수 있다. 이와 유사하게, 제2 블록체인(104B)은 서로 통신할 수 있고 제2 블록체인(104B)에서 하나 이상의 오퍼레이션을 수행할 수 있는 복수의 노드(108A-N)를 포함할 수 있다. 예를 들어, 사용자가 제2 블록체인(104B)에서 토큰을 소각하면 노드(108A-N)는 제2 블록체인(104B)에서 사용자의 지갑으로부터 토큰을 릴리싱할 수 있다. 노드(106A-N 및 108A-N)는 제1 및 제2 블록체인(104A 및 104B)을 실행하는 익명의 노드일 수 있다.
일부 구현예에서, 제1 및 제2 블록체인(104A 및 104B)은 자산이 트랜잭션에서 생성, 거래, 저장 및/또는 사용될 수 있는 임의의 다른 유형의 네트워크일 수 있다. 토큰과 같은, 자산은 브릿지(114)를 통해 제1 및 제2 블록체인(104A 및 104B) 사이에서 전송될 수 있다. 블록체인(104A 및 104B) 각각은 자신의 고유한 디지털 자산, 암호화폐 및/또는 토큰을 가질 수 있다.
엔클레이브(110)는 제1 및 제2 블록체인(104A 및 104B) 사이의 브릿지(114)를 통해 일정양의 토큰을 전송할 수 있다. 엔클레이브(110)는 둘 이상의 블록체인 또는 다른 네트워크 사이에 존재할 수 있다. 엔클레이브(110)는 그 자체가 독립형 컴퓨팅 환경으로서 실행될 수 있지만, 엔클레이브(110)는 트랜잭션을 발행(예컨대, 발행 및 소각)하여 제1 및 제2 블록체인(104A 및 104B) 모두의 상태에 영향을 미친다. 토큰 전송에 대한 세부적인 사항은 동시에 출원된 "서로 다른 아키텍처를 갖는 네트워크들 간의 자산 전송을 위한 안전하고 신뢰할 수 있는 브릿지"에 설명되어 있으며, 그 내용은 본 명세서에 참조로 포함된다.
엔클레이브(110)는 서버, 컴퓨팅 시스템, 및/또는 서버 네트워크 및/또는 컴퓨팅 시스템 상에서 작동되는 보안 컴퓨팅 환경일 수 있다. 엔클레이브(110)는 무상태이며 지속적으로 변할 수 있다. 이 보안 환경은 운영자에 의해 실행될 수 있다. 또한, 동일한 운영자가 브릿지(114)도 실행할 수 있다. 운영자는 익명일 수 있다. 운영자에 의해 시작될 때, 엔클레이브(110)는 도 7 내지 도 10을 참조하여 추가로 설명되는 바와 같이, 올바른 및 보호된 코드가 올바른 운영자에 의해 실행되고 있음을 보장하기 위해 원격 증명을 사용하여 검증될 수 있다. 예를 들어, 엔클레이브(110)가 다운되면, 감시자(112A-N)는 브릿지(114)가 응답하는지 여부를 서로 독립적으로 판정할 수 있다. 그 다음, 집합적으로 감시자(112A-N)들은 엔클레이브(110)의 운영자에게 연락하여 운영자에게 브릿지(114)를 고칠 필요가 있음을 알릴 수 있다. 때때로, 운영자는 엔클레이브(110)를 종료할 수 있고, 또는 다른 방식으로 엔클레이브(110) 실행을 소멸/중지할 수 있다. 이러한 시나리오에서, 감시자(112A-N)들은 엔클레이브(110)의 운영자가 될 다른 엔티티를 집합적으로 선택할 수 있다. 일부 구현예에서, 운영자는 감시자(112A-N) 중 임의의 하나 또는 보안 엔클레이브 환경(100) 내에서 동작하는 임의의 다른 엔티티일 수 있다. 새로운 운영자가 선택되면, 감시자(112A-N)들은 새로운 엔클레이브에서 그러나 동일한 코드를 실행하기 위해 운영자가 사용할 마스터 비밀 키를 재조립하기 위해 엔클레이브(110)에 대한 마스터 비밀 키의 그들의 개인 쉐어(private share)를 사용할 수 있다. 따라서, 엔클레이브(110)로부터의 트랜잭션 및 활동은 마치 엔클레이브(110)가 결코 다운되지 않았고 새로운 운영자가 선택되지 않았던 것처럼 재개될 수 있다.
엔클레이브(110)는 제1 블록체인(104A)과 같은 하나의 블록체인에서 제2 블록체인(104B)과 같은 다른 블록체인으로의 토큰의 전송을 허용할 수 있다. 예를 들어, 제1 블록체인(104A)으로부터의 일정양의 토큰은 해당 수량의 토큰이 제2 블록체인(104B)에서의 교환에 사용될 수 있도록 제2 블록체인(104B)에서 발행될 수 있다.
일부 구현예에서, 보안 엔클레이브 환경(100)은 2개 이상의 블록체인 간의 통신 및 자산 전송을 제공할 수 있다. 예를 들어, 보안 엔클레이브 환경(100)은 제1 블록체인(104A)과 제2 블록체인(104B) 사이의 브릿지(114) 뿐만 아니라 제2 블록체인(104B)과 제3 블록체인 사이의 제2 브릿지를 제공할 수 있다. 또한, 하나 이상의 추가 블록체인 또는 다른 네트워크가 본 명세서에 설명된 기술을 사용하여 제1 및 제2 블록체인(104A 및 104B) 중 하나 이상과 브릿지될 수 있다.
보안 엔클레이브 환경(100)은 신뢰 코드베이스와 무신뢰 코드베이스로 구성될 수 있다. 신뢰 코드베이스는 엔클레이브(110) 내에서 실행되는 코드베이스의 일부일 수 있고, 무신뢰 코드는 엔클레이브(110) 외부에서 실행될 수 있다. 예를 들어, 무신뢰 코드는 엔클레이브(110)의 초기화 및 시작 뿐만 아니라 엔클레이브(110)의 원격 증명 실행을 담당할 수 있다. 원격 증명은, 아래에 자세히 설명된 바와 같이, 제3 자가 원격 엔티티에 대해 그것이 신뢰할 수 있음을 증명할 수 있게 해주며 그 엔티티와의 인증된 통신 채널을 형성하는 프로세스이다. 증명의 일부로서, 엔클레이브(110)는 자신의 신원, 소스 코드가 탬퍼링(tamper)되지 않았는지, 엔클레이브(110)가 최신 보안 업데이트를 갖춘 정품 지원 플랫폼에서 실행되고 있는지를 증명할 수 있다.
본 명세서에 설명된 바와 같이, 엔클레이브(110)는 브릿지(114)의 오퍼레이션을 지원하기 위해 온-체인 이벤트를 처리하는 것을 담당할 수 있다. 이러한 이벤트는 제1 블록체인(104A)으로부터의 래핑된 토큰을 발행하기 위한 제2 블록체인(104B) 상에서의 스마트 계약의 생성, 제2 블록체인(104A) 상에서의 자산 발행, 제1 블록체인(104A) 상의 제어된 지갑에의 자산 보유 및 제1 블록체인(104A) 상의 토큰 또는 다른 자산의 지정된 주소로의 릴리싱을 포함할 수 있다. 하나 이상의 다른 온-체인 이벤트는 엔클레이브(110)에 의해 처리될 수 있다.
보안 엔클레이브 환경(100)은 또한 복수의 감시자(112A-N)를 포함할 수 있다. 감시자(112A-N)는 엔클레이브(110)의 신뢰할 수 있는 파트너인 원격 서버 또는 다른 컴퓨팅 시스템일 수 있다. 감시자(112A-N)는 익명일 수 있으며 엔클레이브(110) 및 제1 및 제2 블록체인(104A 및 104B)과 통신할 수 있다. 감시자(112A-N)는 사용자의 주소로부터 제1 블록체인(104A) 상의 브릿지 지갑으로 토큰을 전송하고 제2 블록체인(104B) 상에 래핑된 토큰을 릴리싱하는 것과 같은, 온-체인 이벤트에 대해 제1 및 제2 블록체인(104A 및 104B)을 모니터링할 수 있다. 감시자(112A-N)는 이러한 온-체인 이벤트를 검증하고 각각의 블록체인에서 온-체인 이벤트를 실행하기 위한 명령을 브로드캐스팅(broadcast)할 수 있다.
제1 및 제2 블록체인(104A, 104B) 모두에서 엔클레이브(110)에 의해 사용되는 주소에 대한 개인 키는 단일 마스터 비밀 키로부터 도출될 수 있다. 마스터 비밀 키는 엔클레이브(110) 내에 안전하게 보관될 수 있다. 마스터 비밀 키는 비밀 공유 기술을 사용하여 쉐어(share)로 분할될 수 있으며 복수의 감시자(112A-N)에게 분배될 수 있다. 이 비밀 쉐어는 전송 계층 보안(TLS: transport layer security) 및/또는 원격 증명을 통해 전송될 수 있다. 재시작 시, 엔클레이브(110)는 예를 들어 마스터 비밀 키를 재계산하기 위해 감시자(112A-N)로부터 마스터 비밀 키의 N개의 쉐어 중 K개를 불러올(fetch) 수 있다. 그러면, 자산 또는 토큰을 보유하는데 사용될 수 있는 제1 블록체인(104A) 주소에 대한 개인 키 및 스마트 계약을 배치(deploy)하거나 제2 블록체인(104B)에서 새로운 자산 또는 토큰을 발행하는데 사용될 수 있는 제2 블록체인(104B)에 대한 개인 키(들)를 재도출하기 위해 마스터 비밀 키가 사용될 수 있다.
일반적으로, 엔클레이브(110)는 제1 블록체인(104A) 내의 브릿지 지갑으로 이동하는 자금 또는 제2 블록체인(104B)에서의 스마트 계약을 통해 소각되는 자금을 추적할 수 있다. 이 정보는 감시자(112A-N)로부터 엔클레이브(110)로 중계될 수 있고, 엔클레이브(110)가 액션을 취하기 위해서는 N개의 감시자(112A-N)들 간의 K개의 합의가 필요할 수 있다. 이와 유사하게, 감시자(112A-N)들은 어떤 트랜잭션이 엔클레이브(110)에 의해 이미 처리되었는지 추적하는 것을 담당할 수 있다. 엔클레이브(110)는 제1 및/또는 제2 블록체인(104A 및 104B)에 대한 온-체인 컴포넌트를 사용할 수 있다. 예를 들어, 제1 블록체인(104A)에서, 엔클레이브(110)는 제1 블록체인(104A) 상의 표준 지갑(예를 들어, 이하 브릿지 지갑)에 대한 개인 키를 소유할 수 있다. 이 지갑은 제1 블록체인(104A)의 토큰 및 브릿지(114)를 통해 제2 블록체인(104B)으로 이동된 토큰을 포함하는, 자산 또는 토큰의 혼합을 포함할 수 있다. 엔클레이브(110)는 제1 블록체인(104A) 상에 보유된 모든 토큰 자금 및 제2 블록체인(104B) 상의 발행된 토큰(소각된 토큰은 제외)에 대해 일대일 관계를 유지할 수 있다. 제1 블록체인(104A)의 토큰은 일부 구현예에서 제2 블록체인(104B)으로부터 다시 토큰(예컨대, 일정량의 토큰)을 이동시키기 위한 관련 수수료를 지불하기 위해 사용될 수 있다.
다른 예로서, 제2 블록체인(104B)에서, 엔클레이브(110)는 제2 블록체인(104B) 상의 표준 지갑에 대한 개인 키를 소유할 수 있다. 또한, 엔클레이브(110)는 제2 블록체인(104B)으로 이전된 각 자산 유형을 발행하는데 사용될 수 있는 템플릿 토큰(template token)을 가질 수 있다. 제2 블록체인(104B) 상의 지갑은 발행 트랜잭선에 대한 트랜잭션 피드를 지불하는데 사용되는 토큰을 포함할 수 있으며, 추가적으로 토큰 발행이 허용된 유일한 주소일 수 있다. 토큰이 제1 블록체인(104A)에서 제2 블록체인(104B)으로 이동될 때, 수수료 지불로서 토큰 중 작은 부분이 브릿지 운영자의 주소로 발행될 수도 있다. 이와 유사하게, 토큰이 언래핑될 때(예컨대, 제2 블록체인(104B)에서 제1 블록체인(104A)로 이동될 때), 토큰 중 작은 부분이 제1 블록체인(104A)의 운영자 제어 지갑(예컨대, 브릿지 지갑)으로 전송될 수 있다.
엔클레이브(110)가 액션(예를 들어, 토큰 발행 또는 릴리싱)이 취해져야 한다고 판정하면, 엔클레이브(110)는 반대 네트워크에서 액션(예를 들어, 요청)을 처리하기 위해 필요한 트랜잭션을 생성하고 서명할 수 있다. 서명된 트랜잭션을 생성한 후, 엔클레이브(110)는 그것을 마스터 비밀 키로부터 생성된 키를 사용하여 암호화하고 암호화된 트랜잭션을 감시자(112A-N) 각각에 전송할 수 있다. K개의 감시자(112A-N)가 암호화된 트랜잭션의 수신을 확인 응답하면, 엔클레이브(110)는 트랜잭션 유형에 따라, 각각의 블록체인에 브로드캐스팅하기 위해 그들에 대한 암호화되지 않은 트랜잭션을 감시자(112A-N) 각각에게 전송함으로써 이 액션을 완료할 수 있다. 이러한 2단계 프로세스는 단 하나의 감시자(112A-N)가 엔클레이브(110)가 처리하는 트랜잭션을 제어할 수 없음을 보장하는데 유익할 수 있다.
예시적인 예로서, 암호화된 트랜잭션이 감시자(112A-N)에게 먼저 전송되지 않고 그 대신 서명된 트랜잭션이 직접 전송되고, 네트워크 장애, 예상치 못한 오류 또는 악의적인 행위로 인해, 엔클레이브(110)가 감시자(112A-N) 중 하나를 제외한 모두에게 트랜잭션을 전송하는데 실패하는 시나리오를 고려할 수 있다. 엔클레이브(110)가 재시작되어야 하는 경우, 그것은 엔클레이브(110)가 재처리해야 하는 불완전 트랜잭션에 대해 감시자(112A-N)에게 질의(query)할 수 있다. 이 경우, 임계 개수의 감시자(112A-N)는 해당 트랜잭션이 처리되지 않았다고 진실로 말할 수 있지만, 서명된 트랜잭션을 수신했던 단 하나의 감시자(112A-N)는 그것이 서명된 트랜잭션을 브로드캐스팅하지 않았다고 엔클레이브(110)에 아직 보고하지 않은 각각의 블록체인에 그것을 브로드캐스팅 했을 수 있다. 이 단 하나의 감시자(112A-N)는 악의적일 수 있다. 이 경우, 엔클레이브(110)는 요청을 이중으로 처리할 수 있으며, 이는 토큰의 이중 발행으로 이어질 수 있다. 반면에, 본 명세서에 개시된 2단계 프로세스를 사용하면, 임계 개수의 감시자(112A-N)가 먼저 암호화된 트랜잭션의 수신에 대해 확인 응답해야 한다. 엔클레이브(110)만이 트랜잭션을 복호화할 수 있다. 임의의 재시작 시, 엔클레이브(110)는 "준비" 단계에 있는 임의의 트랜잭션에 대해 감시자(112A-N) 각각에게 질문할 수 있고, 그 다음 엔클레이브(110)가 이미 생성했던 이러한 트랜잭션들을 복호화하고 재생할 수 있다. 단 하나의 감시자만이 암호화된 트랜잭션을 수신한 경우에도, 엔클레이브(110)는 그것이 암호화된 트랜잭션 내에 포함된 트랜잭션을 생성했음을 여전히 검증할 수 있다. 임계 개수의 감시자(112A-N)들이 암호화된 트랜잭션의 수신에 대해 확인 응답한 후 단일 감시자만이 암호화되지 않은 서명된 트랜잭션을 수신하는 경우, 재시작 시, 엔클레이브(110)는 이전에 암호화되지 않은 트랜잭션을 수신하지 않았던 감시자(112A-N)들을 재동기화할 수 있다.
본 명세서에 설명된 엔클레이브(110)는 무상태일 수 있다. 그 결과, 언제든지 새로운 브릿지가 생성되거나 이전될 수 있다. 적어도 다수(majority)의 감시자(112A-N)들 간에 합의가 달성되기만 한다면, 새로운 브릿지 및/또는 엔클레이브가 형성될 수 있다. 브릿지는 또한 감시자(112A-N)에 의해 보유되는 엔클레이브(110)의 마스터 개인 키의 비밀 쉐어를 사용하여 재구성될 수 있다. 브릿지를 재구성하는 것은 또한 브릿지 지갑(118)의 이전 버전에서 보유되었던 동일한 양의 토큰을 갖도록 동일한 브릿지 지갑(118)을 구축하는 것을 포함할 수 있다. 도 1a와 관련지어 논의된 오퍼레이션의 일례는 도 1b와 관련지어 설명된다.
도 1b는 작동하는 감시자(112)의 풀을 변경하는 것을 포함할 수 있는, 감시자 비밀을 마이그레이션하기 위한 환경(100)의 오퍼레이션들의 일례를 도시한다. 일부 경우에, 새로운 비밀 쉐어로의 마이그레이션은 현재 비밀 쉐어를 획득하는 단계, 엔클레이브(110) 내에 새로운 마스터 비밀 쉐어를 생성하는 단계, 및 그 후 감시자(112)가 새로운 비밀 쉐어로 업데이트하도록 하는 다수의 오퍼레이션을 수행하는 단계를 포함할 수 있다.
비밀 쉐어의 손실 가능성을 만들지 않으면서 새로운 마스터 비밀로의 안전한 마이그레이션을 보장하기 위해, 엔클레이브(110)는 몇몇 경우에 기존 감시자 풀의 모든 감시자(112A-N)가 온라인이고 마이그레이션 기간 동안 액세스 가능함을 보장할 수 있다. 이것은 다른 부분에서 설명된 n개 중 k개의 활성 요구사항보다 더 엄격한 요구사항일 수 있음이 이해될 것이다. 그러나, 몇몇 다른 경우에는 마이그레이션을 위해 n개 중 k개의 활성과 같은 덜 엄격한 요구사항이 사용될 수도 있다.
최소 활성 요구사항을 포함함으로써, 이 오퍼레이션은 임의의 감시자(112)가 새로운 비밀 쉐어의 수신에 대해 확인 응답하지 않는 경우 엔클레이브(110)가 마이그레이션을 중지한다는 것을 보장할 수 있다. 이것은 감시자(112)가 동기화되지 않고 환경을 잘못 구성된 상태로 만들 가능성을 줄이거나 제거할 수 있다.
다른 트랜잭션이 환경(100)에서 브로드캐스팅되는 방법과 유사하게, 여기에 설명된 오퍼레이션은, 임의의 감시자(112)가 마이그레이션을 수행하는 트랜잭션을 보내는 것이 가능해지기 전에, 마이그레이션을 수행하는데 사용된 모든 정보가 모든 감시자(112)(또는 기술적으로 적절한 감시자(112)의 서브세트)에게 저장됨을 보장하기 위해 2단계 커밋(commit) 프로세스를 사용할 수 있다. 엔클레이브(110)가 비밀-마이그레이션 모드로 시작하면, 엔클레이브(110)는 또한 준비된 비밀 마이그레이션이 존재하는지 확인하고, 그렇다면 에러와 함께 종료할 수 있다. 단일 감시자(112)가 이러한 방식으로의 엔클레이브(110)의 시작을 차단할 수 없음을 보장하기 위해, 엔클레이브(110)는 이 에러를 무시하는 오퍼레이션을 포함할 수 있다. 그러나, 엔클레이브(110)는 초기에 이러한 오버라이드 오퍼레이션을 실행하지 않는 디폴트 구성으로 동작할 수 있다.
감시자(112)와의 비밀-마이그레이션의 준비 요청 및 완료 요청이 검증된다. 예를 들어, 다른 시나리오에서 감시자(112)에 대한 POST 요청은 감시자(112)의 비밀 쉐어를 사용하여 생성된 요청의 HMAC(키 해시 메시지 인증 코드 또는 해시 기반 메시지 인증 코드)를 포함하여 검증될 수 있다. 그러나, 비밀-마이그레이션 오퍼레이션에서, 감시자(112)는 아직 서명을 검증하는데 사용될 비밀 쉐어 세트를 갖고 있지 않을 수 있으며, 그 대신 환경(100)은 각각의 감시자를 통한 원격-증명 프로세스로부터 도출된 비밀 쉐어를 사용하여 비밀-마이그레이션 요청을 준비 및 완료하도록 유리하게 구성될 수 있다.
감시자(112)에 의해 저장된 비밀 쉐어는 연관된 버전 번호를 가질 수 있으며, 이는 단조롭게 증가하는 정수 또는 다른 기술적으로 적절한 포맷일 수 있다. 임의의 주어진 엔클레이브 버전이 최대 한 번의 비밀 마이그레이션만 수행할 수 있음을 보장하기 위해, 그것으로부터 마이그레이션될 비밀 쉐어 버전 및 그것으로 마이그레이션될 비밀 쉐어 버전이 브리지 프로그램 자체의 소스 코드에 포함되도록 구성될 수 있다. 비밀 마이그레이션 모드로 개시될 때, 엔클레이브(110)는 각 감시자(112)에게 그것의 현재 비밀 쉐어에 대해 질의할 수 있다. 반환된 쉐어가 모두 동일한 버전 번호를 갖지 않는 경우, 엔클레이브(110)는 더 이상 사용되지 않는 마스터 비밀의 일부를 수신한 것에 응답하여 제1 풀의 감시자 서버의 검증을 실패로 하는 단계를 포함하여 에러와 함께 종료하는 것과 같은, 적절한 액션을 취할 수 있다.
여기에 제공된 예에서, 환경(100) 내의 활성 감시자 풀은 감시자(112A, B, C 및 N)로 시작된다. 그 다음, 감시자(112A, B, C 및 N)로부터의 현재 비밀 쉐어를 제거하고 동시에 감시자(112A, C, D 및 E)에게 새로운 비밀 쉐어를 제공하는 비밀-마이그레이션 오퍼레이션이 수행된다. 이렇게 함으로써, 환경(100)은 새로운 감시자 풀로 업데이트되고, 그 후에 본 명세서에 설명된 브리징 오퍼레이션은 새로운 감시자 풀(112A, C, D 및 E)로 계속할 수 있다.
도 2는 본 명세서에 설명된 기술 중 일부를 수행하는 감시자(112A-N)의 개념도이다. 도 1을 참조하여 설명된 바와 같이, 복수의 감시자(112A-N)는 네트워크(들)(102)를 통해 제1 및 제2 블록체인(104A 및 104B)과 서로 통신하는 익명의 컴퓨터 서버, 시스템 및/또는 컴퓨팅 장치의 네트워크일 수 있다. 감시자(112A-N)는 오라클 또는 다른 특수 블록체인 클라이언트일 수 있다.
감시자(112A-N)는 또한 개인 데이터 저장소(202) 및 공개 데이터 저장소(200)와 통신할 수 있다. 예를 들어, 일부 구현예에서, 감시자(112A-N) 각각은 다양한 개인 데이터 저장소(202)와 통신할 수 있고, 모든 감시자(112A-N) 동일한 공개 데이터 저장소(200)와 통신할 수 있다. 일부 구현예에서, 감시자(112A-N) 각각은 다양한 개인 및 공개 데이터 저장소와 통신할 수 있다.
감시자(112A-N)는 본 명세서에 걸쳐 설명된 보안 엔클레이브 환경에서 여러 책임을 갖는 신뢰할 수 있는 당사자일 수 있다. 예를 들어, 브릿지는 보안 엔클레이브 환경에 의해 지원되는 제1 및 제2 블록체인(104A 및 104B)의 상태를 읽고 업데이트하기 위해 감시자(112A-N)에 의존할 수 있다. 엔클레이브는 모든 블록체인 요청을 복수의 독립적인 감시자(112A-N)에게 전송하도록 구성될 수 있으며, 이러한 감시자(112A-N)의 정족수는 엔클레이브가 응답을 수락하기 위해 동등한 응답을 제공해야 한다. 이것은 단일 감시자가 거짓말을 할 수 없고 또는 엔클레이브를 속이기 위해 악의적으로 행동할 수 없음을 보장할 수 있다. 더 많은 감시자(112A-N) 및 정족수에 필요한 감시자(112A-N)의 수가 많을수록 브릿지는 더 분산되고 안전해질 수 있다.
도 1을 참조하여 언급된 바와 같이, 감시자(112A-N) 각각은 엔클레이브가 처음 초기화될 때 엔클레이브로부터 마스터 비밀 키의 단일 비밀 쉐어를 수신할 수 있다. 이러한 임계 개수의 구성 가능한 쉐어는 엔클레이브의 마스터 비밀 키를 재생성하는데 충분할 수 있다. 엔클레이브가 재시작될 때마다, 엔클레이브는 비밀 쉐어를 획득하고 엔클레이브의 마스터 비밀 키 값을 재계산하기 위해 감시자(112A-N)에게 질의할 수 있다. 엔클레이브에 의해 사용되는 모든 다른 비밀 값은 마스터 비밀 키로부터 결정론적으로 도출될 수 있다.
감시자(112A-N)는 또한 제1 및 제2 블록체인(104A 및 104B)을 지속적으로 모니터링하거나 색인화할 수 있다. 엔클레이브는 제1 및 제2 블록체인(104A 및 104B) 각각의 특정 주소로 전송된 트랜잭션에 대해 감시자(112A-N)에게 질의할 수 있다. 감시자(112A-N)는 개인 데이터 저장소(202)와 같은 데이터 저장소 내에 트랜잭션의 색인을 구축할 수 있다. 색인을 구축하기 위해, 감시자(112A-N)는 각 블록에 대해 제1 및 제2 블록체인(104A 및 104B)의 노드(106A-N 및 108A-N)에 질의하고 트랜잭션을 반복할 수 있다.
감시자(112A-N)는 또한 어떤 브릿지 요청이 엔클레이브에 의해 처리되었는지 추적할 수 있다. 보다 구체적으로, 감시자들은 래핑 및 언래핑 트랜잭션을 추적할 수 있다. 래핑 트랜잭션을 수신하면, 브릿지의 신뢰 코드베이스는 본 명세서에 설명된 바와 같이, 제2 블록체인(104B)에서 발행 트랜잭션을 생성하고 보낼 수 있다. 이와 유사하게, 브릿지는 그것이 언래핑 트랜잭션을 수신한 때 제1 블록체인(104A)에서 릴리스/전송 트랜잭션을 생성하고 보낼 수 있다. 이러한 트랜잭션을 그들 각각의 네트워크로 보내기 위해, 엔클레이브는 먼저 트랜잭션을 감시자(112A-N)에게 중계해야 하는데, 여기서 트랜잭션은 제1 및 제2 블록체인(104A 및 104B)의 노드(106A-N 및 108A-N)로 브로드캐스팅될 수 있다. 브로드캐스팅된 후, 감시자(112A-N)는 개인 데이터 저장소(202)에서 트랜잭션을 처리된 것으로 표시할 수 있다.
더욱이, 감시자(112A-N)는 래핑된 토큰 쌍을 추적할 수 있다. 본 명세서에 설명된 브릿지는 브릿지가 지원하는 제1 블록체인(104A)의 각 토큰에 대해 제2 블록체인(104B)에서 래핑된 토큰 계약을 생성할 수 있다. 재시작되면, 브릿지는 그것이 지원하는 추가 토큰을 나열하고 새로운 래핑된 토큰 계약을 생성할 수 있다. 브릿지는 그것이 이전에 지원했던 토큰을 목록에서 제외할 수 없다. 브릿지가 지원되는 토큰을 목록에서 제외하지 않음을 보장하기 위해, 모든 지원되는 토큰 및 그것의 대응하는 래핑된 토큰 계약 주소는 감시자(112A-N)(예컨대, 개인 데이터 저장소(202))에 저장되고 시작 시 엔클레이브에 의해 불러질 수 있다.
일부 구현예에서, 감시자(112A-N)는 또한 어떤 사용자 또는 엔티티가 제2 블록체인(104B)에서 자산을 발행하도록 허용되어 있는지를 유지할 수 있다. 감시자(112A-N)가 제2 블록체인(104B)의 스마트 계약을 통해 자산을 발행하는 기능을 제거 및 추가할 수 있도록 브릿지가 구축될 수 있다. 새로운 브릿지가 온라인 상태가 되거나 기존 브릿지가 새로운 주소로 이전해야 하는 경우, 감시자(112A-N)는 그렇게 하기 위한 권한을 명시적으로 부여할 수 있다.
감시자(112A-N)는 또한 공개 정보를 호스팅할 수 있다. 수수료, 최소 전송 요구사항, 어떤 토큰이 지원되는지와 같은 정보는 엔클레이브에서 구성되고 유지될 수 있다. 엔클레이브는 공개적으로 접근 가능하지 않기 때문에, 감시자(112A-N)가 이러한 정보를 공개적으로 호스팅할 책임을 가질 수 있다. 또한, 감시자들은 대중소비(public consumption)를 위한 증명 보고서를 호스팅할 책임을 맡을 수 있다. 이 정보는 공개 데이터 저장소(200)에 저장될 수 있고 감시자(112A-N)에 의해 대중에게 보고될 때 검색될 수 있다.
일부 구현예에서, 감시자(112A-N)는 변경될 수 있다. 특정 보안 엔클레이브 환경에 대한 감시자(112A-N)의 멤버십을 변경하기 위해, 엔클레이브에 의해 실행되는 코드는 보안 엔클레이브 환경에서 작동할 각각의 감시자의 식별자(예를 들어, 도메인)를 포함하도록 수정될 수 있다. 기존 감시자(112A-N)들은 감시자(112A-N)들이 업데이트되기 전에 멤버십 변경에 동의하도록 요청받을 수 있다. 본 명세서에 설명된 감시자(112A-N), 엔클레이브 및 브릿지 사이에 올바르고 안전한 통신이 형성되는 것을 보장하기 위해 표준 TLS 기술이 사용될 수 있다.
더욱이, 일부 구현예에서, 감시자(112A-N)에 관한 정보는 공개될 수 있다. 이 정보는 보안 엔클레이브 환경을 통할하는 감시자(112A-N)를 식별하는 식별자 또는 도메인을 포함할 수 있다. 이러한 정보를 공개하는 것은 감시자들(112A-N)이 서로를 신뢰하도록 돕고 또한 사용자가 보안 엔클레이브 환경을 신뢰하도록 돕는데 유익할 수 있다. 다른 일부 구현예에서, 임의의 하나 이상의 감시자(112A-N)는 상기 엔클레이브 또는 다른 보안 엔클레이브 환경의 다른 엔클레이브의 운영자일 수도 있다.
도 3a 내지 도 3d는 본 명세서에 설명된 기술을 사용하여 블록체인에서 토큰을 발행하는 프로세스의 개념도이다. 도 3a를 참조하고 도 1을 참조하여 설명된 바와 같이, 사용자는 사용자의 지갑(116)으로부터 제1 블록체인(104A) 상의 브릿지 지갑(118)으로의 토큰(126A)의 전송을 시작할 수 있다(단계(A)). 토큰(126A)은 제1 블록체인(104A)의 토큰, 암호화폐 또는 다른 디지털 자산일 수 있다. 토큰(126A)을 전송하는 것은 일정양의 토큰(126A)을 브릿지 지갑(118)으로 전송하는 것을 포함할 수 있다. 토큰(126A)이 브릿지 지갑(118)으로 전송될 때, 사용자는 제2 블록체인(104B)에서 사용하기 위해 제1 블록체인(104A)으로부터 그들의 토큰(126A)을 전송하는 트랜잭션을 시작한다. 즉, 사용자는 제2 블록체인(104B)에서 토큰을 발행하는 트랜잭션을 시작한다.
사용자 지갑(116)은 제2 블록체인(104B) 상의 대응하는 지갑에도 사용될 수 있는 주소를 가질 수 있다. 따라서, 일정양의 토큰(126A)은 동일한 주소를 사용하여 제1 블록체인(104A) 상의 사용자 지갑(116)으로부터 제2 블록체인(104B) 상의 사용자 지갑으로 전송될 수 있다. 이는 일정양의 토큰(126A)이 제2 블록체인(104B) 상의 잘못된 지갑으로 전송될 가능성을 줄여 보안 엔클레이브 환경(100)의 보안성 및 신뢰도를 높이는데 유리할 수 있다.
브릿지 지갑(118)은 엔클레이브(110)에 의해 보유되는 개인 키를 가질 수 있다. 브릿지 지갑(118)은 엔클레이브(110)에 의해 작동될 수 있고, 제1 블록체인(104A) 상의 사용자 지갑으로부터 전송된 토큰(예컨대, 토큰(126A))을 저장 또는 잠글 수 있다. 브릿지 지갑(118)은 예를 들어 소각 요청/트랜잭션이 제2 블록체인(104B)에서 수신될 때까지 토큰(예컨대, 토큰(126A))을 그 안에 보유할 수 있다(예를 들어, 도 4a 내지 도 4d 참조). 토큰(126A)이 브릿지 지갑(118)에 보유되어 있는 한, 토큰(126A)은 복제되거나 또는 다른 방식으로 사용자에 의해 사용될 수 없다. 또한, 제1 블록체인(104A)은 제1 블록체인(104A) 상의 자산, 토큰 및/또는 트랜잭션을 가진 모든 사용자에 대한 사용자 지갑을 유지할 수 있다. 제1 블록체인(104A)의 노드(106A-N)는 토큰(126A)을 사용자 지갑(116)으로부터 브릿지 지갑(118)으로 전송하는 것과 같은 오퍼레이션들을 수행할 수 있다.
도 3a를 참조하면, 감시자(112A-N)는 브릿지 지갑(118)에 대한 업데이트에 대해 제1 블록체인(104A)을 폴링(poll)할 수 있다(단계(B)). 제1 블록체인(104A)을 폴링하는 것은 브릿지 지갑(118)의 상태가 수정 또는 다른 방식으로 변경되었는지 여부를 판정하기 위해 하나 이상의 노드(106A-N)와 통신하는 것을 포함할 수 있다. 예를 들어, 감시자(112A-N)는 사용자가 사용자의 지갑에서 브릿지 지갑(118)으로 토큰을 전송했는지 여부를 판정하기 위해 노드(106A-N)를 폴링할 수 있다. 위에서 언급한 바와 같이, 사용자가 사용자의 지갑으로부터 브릿지 지갑(118)으로 토큰을 전송할 때, 사용자는 토큰을 제2 블록체인(104B)으로 전송하는 프로세스를 시작한다.
하나 이상의 감시자(112A-N)는 매 2초, 분 및/또는 시와 같은 사전 결정된 시간에 제1 블록체인(104A)을 폴링할 수 있다. 예를 들어, 감시자(112A-N)는 5초마다 제1 블록체인(104A)을 폴링할 수 있다. 일부 구현예에서, 엔클레이브(110)는 감시자(112A-N)를 폴링하여 제1 블록체인(104A)을 폴링할 수 있다.
일부 구현예에서, 감시자(112A-N)의 제1 서브세트는 제1 블록체인(104A)을 폴링할 수 있고, 감시자(112A-N)의 하나 이상의 다른 서브세트는 제1 블록체인(104A)을 폴링할 수도 있고 또는 폴링하지 않을 수도 있다. 예를 들어, 감시자(112A-N)의 제1 서브세트는 제1 시간에 제1 블록체인(104A)을 폴링할 수 있고, 감시자(112A-N)의 제2 서브세트는 제1 시간과 상이한 제2 시간에(예를 들어, 제1 시간 이후에, 제1 시간 이전에) 제1 블록체인(104A)을 폴링할 수 있다.
하나 이상의 감시자(112A-N)는 브릿지 지갑(118)에 대한 업데이트를 식별할 수 있다(단계(C)). 도 3a의 예에서, 감시자(112A, 112B, 및 112N)는 사용자 지갑(116)으로부터 브릿지 지갑(118)으로의 토큰(126A)의 전송이 제1 블록체인(104A)에서 발생했음을 식별(예를 들어, 검증)한다. 감시자(112A, 112B, 및 112N)는 엔클레이브(110)에 이러한 토큰 전송을 통지할 수 있다. 따라서, 감시자(112A-N)는 한 사용자 지갑에서 브릿지 지갑(118)으로의 토큰의 온-체인 디포짓(on-chain deposit)을 찾아볼 수 있다. 때때로, 모든 감시자(112A-N)가 토큰 전송이 제1 블록체인(104A)에서 발생했음을 식별할 수 있다. 도 3a에 도시된 바와 같이, 일부 구현예에서, 모든 감시자(112A-N)보다 적은 수의 감시자가 토큰 전송이 발생했음을 식별할 수도 있다.
엔클레이브(110)가 하나 이상의 감시자(112A-N)로부터 토큰 전송에 관한 통지를 수신하면, 엔클레이브(110)는 해당 토큰 전송에 대한 합의가 달성되었는지 여부를 판정할 수 있다(단계(D)). 합의는 제1 블록체인(104A)으로부터 제2 블록체인(104B)으로 일정양의 토큰(126A)의 전송을 진행할 수 있도록 트랜잭션이 발생했음을 검증하는데 필요한 감시자(112A-N)의 최소 수량일 수 있다. 감시자(112A-N)들 사이에서 합의가 달성되었는지 여부를 판정하는 것은 단일 감시자가 브릿지 지갑(118)의 상태에 대해 거짓말을 하지 않음을, 및/또는 엔클레이브(110) 및 토큰 발행 프로세스를 악의적으로 제어하려고 시도하지 않음을 보장하는데 유익할 수 있다. 따라서, 감시자(112A-N)들 간의 합의는 엔클레이브(110)가 감시자(112A-N)를 신뢰할 수 있도록 하여 블록체인들 간에 토큰을 전송하기 위한 보안 환경을 생성할 수 있다.
일부 구현예에서, 합의는 감시자(112A-N)의 50% 이상일 수 있다. 일부 구현예에서, 합의는 감시자(112A-N)의 다수보다 큰 임의의 값일 수 있으며, 55%, 60%, 70%, 80%, 90%, 95% 등을 포함하지만 이에 제한되지는 않는다.
도 3a의 예에서, 합의는 50%일 수 있다. 따라서, 단계(D)에서, 엔클레이브(110)는 50% 이상의 감시자(112A-N)가 사용자 지갑(116)에서 브릿지 지갑(118)으로의 토큰(126A)의 전송을 식별했는지 여부를 판정할 수 있다. 이 예에서는, 4개의 감시자(112A-N) 중 3개가 토큰 전송을 식별했으므로 50% 합의가 충족되었다. 따라서, 프로세스는 도 3b로 진행될 수 있다.
도 3b에 도시된 바와 같이, 합의에 도달했으므로(예를 들어, 도 3a의 단계(D) 참조), 엔클레이브(110)는 제2 블록체인(104B) 상에서 토큰을 발행하기 위한 명령을 생성할 수 있다(단계(E)). 이 명령은 브릿지 지갑(118)으로의 트랜잭션을 개시한 사용자 지갑(116)과 연관된 주소를 식별할 수 있다. 이 명령은 또한 제2 블록체인(104B)에서 정량화되거나 발행되어야 하는 토큰의 수량을 식별할 수도 있다. 도 1을 참조하여 전술한 바와 같이, 제2 블록체인(104B)에서 어떤 지갑이 토큰을 발행할 것인지를 식별하기 위해 사용자 지갑(116)과 연관된 동일한 주소가 사용될 수 있다. 동일한 주소를 사용하는 것은 토큰이 제2 블록체인(104B) 상의 잘못된 지갑으로 발행될 가능성을 줄이는데 유리할 수 있다.
발행을 위한 명령이 생성된 후, 엔클레이브(110)는 그 명령을 암호화할 수 있다(단계(F)). 명령을 암호화하는 것은 사용자의 프라이버시가 유지되고 해당 트랜잭션이 엔클레이브(110) 밖으로 그리고 감시자(112A-N)에게 전송될 때 보호된다는 것을 보장하는데 유익할 수 있다. 이는 또한 엔클레이브(110)가 다운되어 다시 부팅되어야 하는 경우에도 유익할 수 있다. 암호화는 엔클레이브(110) 외부에서 작동하는 악의적인 노드 또는 다른 악의적인 사용자의 활동으로부터 트랜잭션을 보호할 수 있다. 암호화된 명령(302)은 제2 블록체인(104B) 상의 요청하는 사용자의 지갑의 주소 및 제2 블록체인(104B) 상에서 발행될 토큰(126A)의 수량을 포함할 수 있다.
엔클레이브(110)는 검증을 위해 암호화된 명령을 감시자(112A-N)에게 전송할 수 있다(단계(G)). 이 단계를 수행하는 것은 감시자(112A-N) 중 어떤 것도 발행 프로세스를 제어하기 위해 스스로 행동하지 않는다는 것을 보장하는데 유리할 수 있다. 더욱이, 명령을 암호화하는 것은 엔클레이브(110)가 다운되고 재부팅되는 경우에 암호화된 명령이 감시자(112A-N)로부터 엔클레이브(110)에 의해 요청되고, 복호화된 다음, 발행 트랜잭션을 완료하는데 사용될 수 있도록 하는데 유익할 수 있다.
도 3c를 참조하면, 하나 이상의 감시자(112A-N)는 그들이 암호화된 명령을 수신했는지 검증할 수 있다(단계(H)). 엔클레이브(110)는 발행을 위한 실제 명령을 감시자(112A-N)에 전송하기 전에 다수의 감시자(112A-N)로부터의 수신의 확인 응답을 원할 수 있다. 하나 이상의 감시자(112A-N)는 이 검증을 엔클레이브(110)로 다시 전송할 수 있다. 그 다음, 엔클레이브(110)는 K개의 감시자(112A-N)가 암호화 명령의 수신을 검증했는지 여부를 판정할 수 있다(단계(I)). K개의 감시자(112A-N)는 예컨대 50% 또는 감시자(112A-N)의 다수 이상의 몇몇 수량과 같은, 임의의 개수의 감시자(112A-N)일 수 있다(예를 들어, 도 3a에서 단계(D)를 참조하여 설명된 합의 참조). 도 3c의 예에서, K는 감시자(112A-N)의 적어도 절반과 동일할 수 있다. 이 예에서는, 모든 감시자(112A-N)가 단계(H)에서 암호화된 명령의 수신을 검증했다. 따라서, 단계(I)에서, 엔클레이브(110)는 적어도 K개의 감시자들이 수신을 검증했다고 판정할 수 있다.
임계 개수 K가 충족되었으므로, 엔클레이브(110)는 명령을 복호화할 수 있다(단계(J)). 즉, 엔클레이브(110)와 감시자(112A-N) 사이에 보안 연결이 존재한다. 감시자(112A-N)들은 제2 블록체인(104B)에서 토큰을 발행하기 위한 명령을 브로드캐스팅하기 위해 함께 신뢰될 수 있다.
따라서, 복호화된 명령은 감시자(112A-N)에게 전송될 수 있다(단계(K)). 엔클레이브(110)가 모든 트랜잭션에 대해 동일한 복호화 키를 사용할 수 있기 때문에 엔클레이브(110)는 복호화 키를 보유할 수 있다. 따라서, 엔클레이브(110)는 단계(K)에서 완전히 복호화된 명령을 감시자(112A-N)에게 전송할 수 있다.
도 3d를 참조하면, 감시자(112A-N)가 복호화된 발행 명령을 수신한 후, 감시자(112A-N)는 복호화된 명령을 제2 블록체인(104B)으로 브로드캐스팅할 수 있다. 보다 구체적으로, 감시자(112A-N)는 해당 명령을 하나 이상의 노드(108A-N)로 브로드캐스팅할 수 있다.
하나 이상의 노드(108A-N)는 토큰(126B)을 발행할 수 있으며, 이는 발행된 토큰(126B)을 사용자 지갑(120)에 넣는 것을 포함할 수 있다(단계(M)). 앞서 언급한 바와 같이, 사용자 지갑(120)은 사용자 지갑(116)에 사용된 주소와 동일한 주소를 이용하여 식별될 수 있다. 이 주소는 복호화된 명령(302)에서 식별될 수 있다. 사용자 지갑(120)의 주소가 사용자 지갑(116)의 주소와 상이한 일부 구현예에서, 사용자 지갑(120)의 주소는 사용자 지갑(116)으로부터 브릿지 지갑(118)으로의 제1 블록체인(104A)에서 이루어진 전송 트랜잭션의 메모 필드에 포함될 수 있다. 그 다음, 노드(108A-N)는 메모 필드 내의 주소를 사용하여 토큰(126B)을 사용자 지갑(120)에 발행할 수 있다. 목적지 주소가 메모 필드 또는 트랜잭션의 다른 부분에 있는 경우, 메모 필드 내의 목적지 주소가 사용자 지갑(120)의 주소와 일치하는지 검증하기 위해 감시자(112A-N)들이 폴링될 수 있다. 이 프로세스는 토큰(126B)이 잘못된 지갑으로 발행되지 않음을 보장하는데 사용될 수 있다.
토큰(126B)을 발행하는 것은 토큰(126A)를 래핑하는 것을 포함할 수 있다. 즉, 실제 토큰(126A)이 제1 블록체인(104A)에서 제2 블록체인(104B)으로 전송되지 않는다. 그 대신, 토큰(126B)은 IOU로서 역할을 하고 사용자가 토큰(126A)으로서 제1 블록체인(104)에서 얼마나 많은 가치를 갖게 될지를 나타내는 래핑된 토큰(126A)이다. 그러므로, 토큰(126B)을 발행하는 것은 복호화된 명령(302)에서 식별되는 토큰(126A)의 수량에 대응하도록 토큰(126B)을 생성하는 것을 포함할 수 있다. 그 다음, 사용자는 제2 블록체인(104B)의 교환 시 발행된 토큰(126B)을 사용할 수 있다.
도 4a 내지 도 4d는 본 명세서에 설명된 기술을 사용하여 블록체인에서 토큰을 릴리싱하는 프로세스의 개념도이다. 토큰을 릴리싱하는 것은 블록체인에서 토큰을 소각하는 것을 포함할 수 있다. 도 4a를 참조하면, 도 3a 내지 도 3d를 참조하여 설명한 사용자와 같은, 사용자가 토큰(126B)을 사용자 지갑(120)으로부터 제2 블록체인(104B) 상의 소각 주소(122) 및/또는 브릿지 지갑(124)으로 전송할 수 있다(단계(A)). 도 3a 내지 도 3d의 동일한 사용자는 도 4a 내지 도 4d에 설명된 릴리싱 프로세스에 관여하지 않을 수 있다. 그 대신, 크로스 체인을 거래하는 임의의 다른 사용자는 사용자 지갑(120)을 할당받고 그들의 토큰(126B)을 소각 주소(122) 및/또는 브릿지 지갑(124)으로 전송할 수 있다.
사용자는 제2 블록체인(104B)에서 그들의 토큰(126B)을 소각하기 위해 스마트 계약(예컨대, 트랜잭션)을 호출 또는 시작할 수 있다. 그 다음, 노드(108A-N)는 사용자 지갑(120)으로부터 토큰(126B)을 릴리싱할 수 있다. 도 3a 내지 도 3d를 참조하여 설명된 바와 같이, 토큰(126B)은 사용자가 제1 블록체인(104A) 상의 브릿지 지갑(118)으로 이동시킨 토큰(126A) 수량의 발행된 토큰일 수 있다. 따라서, 토큰(126B)은 토큰(126A)을 래핑할 수 있다.
제2 블록체인(104B) 상의 사용자 지갑(120)은 제1 블록체인(104A) 상의 사용자 지갑(116)과 동일한 주소 및 개인 키를 가질 수 있다. 따라서, 동일한 사용자가 사용자 지갑(120) 및 사용자 지갑(116)에 접근할 수 있다. 위에서 설명한 바와 같이, 동일한 주소를 사용하는 것은 토큰 발행 및 소각과 같은 트랜잭션의 보호를 보장하는데 유리할 수 있다. 일부 구현예에서, 사용자 지갑(120) 및 사용자 지갑(116)은 전술한 바와 같이 서로 다른 주소를 가질 수도 있다.
소각 주소(122)는 제2 블록체인(104B)의 공개 주소일 수 있다. 사용자는 토큰 및 다른 암호화폐와 같은 자산을 소각 주소(122)로 보낼 수 있다. 소각 주소(122)로 전송된 후, 소각 주소(122)에 대한 개인 키가 존재하지 않기 때문에 자산은 복구될 수 없다. 소각 주소(122)로 전송된 자산은 본질적으로 소각되어 다시는 사용될 수 없다. 따라서, 사용자가 사용자 지갑(120)에서 소각 주소(122)로 토큰(126B)을 보내면, 사용자는 그들의 지갑(120)으로부터 토큰(126B)을 제거하여 다시는 해당 토큰(126B)에 액세스하거나 사용할 수 없게 된다.
도 4a 내지 도 4d에 도시된 바와 같이, 엔클레이브(110)는 제2 블록체인(104B) 상의 브릿지 지갑(124) 뿐만 아니라 제1 블록체인(104A) 상의 브릿지 지갑(118)을 운영 및 유지할 수 있다. 토큰(126A)과 같은 자산은 이러한 토큰 수량이 모두 사용되거나 및/또는 사용자 지갑(116)의 사용자에게 다시 릴리싱될 때까지 제1 블록체인(104A) 상의 브릿지 지갑(118)에 유지될 수 있다. 토큰(126B)과 같은 자산은 제2 블록체인(104B) 상의 브릿지 지갑(124)에 넣어져, 해당 자산이 소각되고 사용자가 더 이상 사용하거나 복구할 수 없게 될 수 있다. 일부 구현예에서, 자산은 사전 결정된 시간 기간 동안 브릿지 지갑(124)에 유지될 수 있으며, 그 다음 그 자산은 하나 이상의 배치(batch)로 소각될 수 있다. 일부 구현예에서, 브릿지 지갑(124)으로 전송된 자산은 브릿지 지갑(124)에 도착하자마자 소각될 수 있다.
도 4a를 참조하면, 하나 이상의 감시자(112A-N)는 소각 주소(122) 및/또는 브릿지 지갑(124)에 대한 임의의 업데이트에 대해 제2 블록체인(104B)을 폴링할 수 있다(단계(B)). 도 3a의 단계(B)를 참조하여 설명된 바와 같이, 감시자(112A-N)는 매 5초마다와 같이, 사전 결정된 시간에 제2 블록체인(104B)의 상태 변경에 대해 노드(108A-N)를 폴링할 수 있다. 엔클레이브(110)는 또한 사전 결정된 시간에 제2 블록체인(104B)의 노드(108A-N)를 폴링하도록 감시자(112A-N)에게 요청할 수 있다. 감시자(112A-N)는 사용자 지갑(120)(또는 다른 지갑)에서 소각 주소(122) 및/또는 브릿지 지갑(124)으로의 토큰(126B)(또는 다른 토큰)의 전송에 관여했던 노드(108A-N)에 의해 스마트 계약(예컨대, 트랜잭션)이 실행되었는지 여부를 판정하기 위해 제2 블록체인(104B)을 폴링할 수 있다. 따라서, 감시자(112A-N)는 제2 블록체인(104B)의 상태에 대한 임의의 변경을 인식할 수 있으며, 이는 소각 요청이 발생했음을 암시한다.
하나 이상의 감시자(112A-N)는 토큰(126B)의 전송이 제2 블록체인(104B)에서 발생했음을 식별할 수 있다(단계(C)). 도 3a의 단계(C)를 참조하여 설명된 바와 같이, 감시자(112A-N)는 토큰(126B)의 소각을 포함하는 스마트 계약(예컨대, 트랜잭션)이 생성되고 실행되었는지 검증할 수 있다. 더욱이, 전술한 바와 같이, 일부 구현예에서, 모든 감시자(112A-N)보다 적은 수의 감시자가 토큰 전송을 식별할 수 있다. 일부 구현예에서, 모든 감시자(112A-N)가 토큰 전송을 식별할 수 있다. 본 예에서는, 감시자(112A, 112B 및 112N)가 토큰 전송이 발생했음을 식별한다. 감시자(112A, 112B 및 112N)는 토큰 전송에 대한 그들의 식별 정보를 엔클레이브(110)로 전송할 수 있다.
그 다음 엔클레이브는 대응하는 토큰(126A)이 제1 블록체인(104A) 상의 브릿지 지갑(118)으로부터 릴리싱되는 것에 대한 합의에 도달했는지 여부를 판정할 수 있다(단계(D)). 도 3a의 단계(D)를 참조하여 설명된 바와 같이, 합의는 토큰 릴리스 액션을 발생시키기 위해 토큰 전송을 식별해야 하는 감시자(112A-N)의 사전 결정된 개수일 수 있다. 예를 들어, 합의는 감시자(112A-N)의 적어도 다수일 수 있다. 일부 구현예에서, 합의는 단계(B)에서 업데이트에 대해 제2 블록체인(104B)을 폴링하는 감시자(112A-N)의 적어도 다수일 수 있다. 일부 구현예에서, 합의는 보안 엔클레이브 환경(100)을 통할하는 감시자(112A-N)의 적어도 다수일 수 있다. 또한, 일부 구현예에서, 합의는 감시자(112A-N)의 임의의 수치 값, 수량 또는 백분율일 수 있으며, 55%, 60%, 65%, 70%, 75%, 80%, 85%, 90%, 95% 등를 포함하지만 이에 제한되지는 않는다.
도 4a의 예에서, 엔클레이브(110)는 제1 블록체인(104A) 상의 브릿지 지갑(118)으로부터 토큰(126A)을 릴리싱하기 위한 합의에 도달했음을 판정할 수 있다. 이 예에서는, 4개의 감시자(112A-N) 중 3개가 제2 블록체인(104B) 상의 토큰 전송을 식별했는데, 이는 보안 엔클레이브 환경(100)에서 작동하는 감시자(112A-N)의 50% 이상 또는 다수에 해당한다. 따라서, 엔클레이브(110)는 토큰(126B)을 사용자 지갑(120)에서 소각 주소(122) 및/또는 브릿지 지갑(124)으로 전송하기 위해 충분한 수의 감시자(112A-N)가 스마트 계약(예컨대, 트랜잭션)을 검증했다고 판정할 수 있다.
도 4b에 도시된 바와 같이, 엔클레이브(110)는 제1 블록체인(104A) 상의 브릿지 지갑(118)에 대응하는 토큰(126A)을 릴리싱하기 위한 명령을 생성할 수 있다(단계(E)). 도 3b의 단계(E)를 참조하여 설명된 바와 같이, 이 명령은 토큰(126A)이 제1 블록체인(104A)에서 릴리싱되어야 하는 사용자 지갑(116)의 주소를 포함할 수 있다. 이 명령은 또한 제1 블록체인(104A) 상의 브릿지 지갑(118)으로부터 릴리싱되어야 하는 토큰(126A)의 수량을 포함할 수도 있다. 전반적으로 설명된 바와 같이, 사용자 지갑(116)에 대한 주소는 사용자 지갑(120)에 대한 주소와 동일할 수 있다. 일부 구현예에서, 주소는 서로 다를 수 있다. 주소가 서로 다른 경우, 제2 블록체인(104B)에서 토큰(126B)을 전송하기 위해 단계(A)에서 실행된 스마트 계약은, 예컨대 메모 필드 내에 사용자 지갑(116)의 주소를 나타낼 수 있다. 엔클레이브(110)는 제1 블록체인(104A) 상의 사용자 지갑(116)과의 주소 일치를 식별하기 위해 감시자(112A-N)를 폴링함으로써 메모 필드 내의 주소를 검증할 수 있다. 감시자(112A-N)(예를 들어, 적어도 다수의 감시자(112A-N))가 주소를 검증하면, 엔클레이브(110)는 단계(E)에서 생성된 명령 내에 주소를 포함시킬 수 있다.
그 다음, 엔클레이브(110)는 명령을 암호화할 수 있다(단계(F)). 명령을 암호화하는 것은 도 3b 및 도 7 내지 도 10을 참조하여 설명된 바와 같이, 엔클레이브(110)가 다운되어 재부팅되어야 하는 경우 유리할 수 있다. 암호화된 명령(402)은 사용자 지갑(116)에 대한 주소 및 브릿지 지갑(118)으로부터 릴리싱되어야 하는 토큰(126A)의 수량을 포함할 수 있다.
엔클레이브(110)는 검증을 위해 암호화된 명령(402)을 감시자(112A-N)에게 전송할 수 있다(단계(G)). 도 3b 및 도 7 내지 도 10을 참조하여 설명된 바와 같이, 암호화된 명령을 감시자(112A-N)에게 전송하는 것은 감시자(112A-N) 중 어떤 것도 제1 블록체인(104A)에서의 토큰(126A)의 릴리싱을 악의적으로 제어하지 못함을 보장하는데 유리할 수 있다.
도 4c에 도시된 바와 같이, 하나 이상의 감시자(112A-N)는 그들이 암호화된 명령을 수신했는지 검증할 수 있다. 따라서, 이들 감시자(112A-N)는 검증을 엔클레이브(110)에 다시 전송할 수 있다(단계(H)).
엔클레이브(110)가 하나 이상의 감시자(112A-N)로부터 검증을 수신하면, 엔클레이브(110)는 K개의 감시자(112A-N)가 암호화된 명령을 검증했는지 여부를 판정할 수 있다(단계(I)). 도 3c의 단계(I)를 참조하여 설명된 바와 같이, K는 감시자(112A-N)의 다수 이상인 감시자(112A-N)의 임의의 개수(예를 들어, 50%, 55%, 60%, 65%, 70%, 75%, 80%, 85%, 90%, 95% 등)일 수 있다.
도 4c에서는, 모든 감시자(112A-N)가 암호화된 명령의 수신을 검증했다. 따라서, 엔클레이브(110)는 K개의 감시자(112A-N)가 단계(I)에서 암호화된 명령을 검증했다고 판정할 수 있다(이 예에서는 감시자(112A-N)의 100%). K개의 감시자(112A-N)가 검증했으므로, 엔클레이브(110)는 명령을 복호화할 수 있다(단계(J)). 엔클레이브(110)는 감시자(112A-N)와 보안 연결 및 신뢰를 구축했다. 따라서, 엔클레이브(110)는 제1 블록체인(104A)에서 토큰(126A)의 릴리싱을 실행하는 데 필요한 명령을 감시자(112A-N)에게 제공할 수 있다. 엔클레이브(110)가 복호화를 위해 사용되는 개인 키를 유지하므로, 엔클레이브(110)는 명령을 복호화하고 복호화된 명령을 감시자(112A-N)에게 전송할 수 있다(단계(K)). 엔클레이브(110)는 도 4c의 모든 릴리스 트랜잭션을 복호화하기 위해 동일한 개인 키를 사용할 수 있다. 더욱이, 도 7 내지 도 10을 참조하여 추가로 설명된 바와 같이, 개인 복호화 키는 엔클레이브(110)의 마스터 비밀 키로부터 생성될 수 있다. 복호화 키는 엔클레이브(110)만이 알 수 있고, 엔클레이브(110)만이 사용할 수 있다. 복호화 키는 감시자(112A-N)가 명령을 복호화할 수 있도록 암호화된 명령(402)과 함께 감시자(112A-N)에게 전송될 수 없다. 엔클레이브(110)에서 복호화 키를 유지하는 것은 어떤 감시자(112A-N)도 릴리스 트랜잭션과 관련하여 서로 독립적으로 및/또는 악의적으로 행동할 수 없음을 보장하는데 유리할 수 있다. 엔클레이브(110), 감시자(112A-N) 및 릴리스 트랜잭션에 관련된 사용자(들) 사이에서 보안 및 신뢰가 유지될 수 있다.
도 4d에서, 감시자(112A-N)가 복호화된 명령을 수신하면, 감시자(112A-N)는 복호화된 명령을 제1 블록체인(104A)으로 브로드캐스팅할 수 있다(단계(L)). 즉, 복호화된 명령은 제1 블록체인(104A)의 노드(106A-N)로 브로드캐스팅될 수 있다. 하나 이상의 노드(106A-N)는 이 명령을 사용하여 릴리스 트랜잭션을 실행할 수 있다. 예를 들어, 하나 이상의 노드(106A-N)는 브릿지 지갑(118)으로부터 토큰(126A)을 릴리싱할 수 있다(단계(M)). 토큰(126A)을 릴리싱하는 것은 복호화된 명령 내에 표시된 수량의 토큰(126A)을 사용자 지갑(116)으로 다시 반환하는 것을 포함할 수 있다. 본 명세서에 설명된 바와 같이, 노드(106A-N)는 복호화된 명령 내에 포함된 주소를 사용하여 사용자 지갑(116)을 식별할 수 있다. 토큰(126A)이 브릿지 지갑(118)으로부터 릴리싱되면, 토큰(126A)은 더 이상 동결 상태(frozen)가 아니다. 사용자 지갑(116)의 사용자는 제1 블록체인(104A) 상의 트랜잭션, 스마트 계약, 교환 등에서 토큰(126A)을 사용할 수 있다. 예를 들어, 사용자는 또한 브릿지(114)를 통해, 제한하지 않는 예로서 제2 블록체인(104B)을 포함하는, 하나 이상의 다른 블록체인 또는 네트워크로 일정양의 토큰(126A)을 전송할 수도 있다.
도 4e는 본 명세서에 설명된 마이그레이션 프로세스의 일부로서 새로운 지갑으로 마이그레이션되는 블록체인(104A 및 104B) 내 자산을 보여준다. 마이그레이션 프로세스 전에, 환경(100)의 자산은 블록체인(104A 및 104B)의 지갑(400 및 402)에 저장된다. 이해되는 바와 같이, 블록체인(104A 및 104B)은 동일한 주소 지정 스킴을 사용할 수 있으며, 초기 마스터 비밀을 입력으로서 사용하는 주소 지정 함수의 출력은 두 지갑(400 및 402) 모두의 주소(404)를 정의하는데 사용될 수 있다.
일부 경우에, 마이그레이션의 실행을 통해, 지갑(400)의 자산은 새로운 지갑(406)으로 이동될 수 있으며, 지갑(402)의 자산에 대한 스마트 계약의 레코드(예컨대, 허용된-발행자 레코드)는 새로운 지갑(408)의 속성(예컨대, 주소(410))을 참조하도록 업데이트될 수 있다. 다시 말하자면, 이들 두 지갑(406 및 408)은 동일한 주소 지정 함수를 사용하여 찾은 동일한 주소(410)를 사용할 수 있으며, 이 함수는 새로운 마스터 비밀을 사용한다. 이러한 방식으로, 자산은 현재의 비밀 쉐어를 가진 감시자(112)만이 사용할 수 있는 상태로 유지된다(더 이상 사용되지 않는 비밀은 현재 비어 있는 지갑(400 및 402)의 키 및 주소(404)를 생성하는데에만 사용 가능하다.)
일부 경우에는, 마이그레이션의 실행을 통해, 자산은 새로운 지갑(406 및 408)으로 이동될 수 있다. 다시 말하면, 이들 두 지갑(406 및 408)은 동일한 주소 지정 함수를 사용하여 찾은 동일한 주소(410)를 사용할 수 있으며, 이 함수는 새로운 마스터 비밀을 사용한다. 이러한 방식으로, 자산은 현재의 비밀 쉐어를 가진 감시자(112)만이 사용할 수 있는 상태로 유지된다(더 이상 사용되지 않는 비밀은 현재 비어 있는 지갑(400 및 402)의 키 및 주소(404)를 생성하는데에만 사용 가능하다.)
도 5는 토큰 발행 프로세스(500)의 스윔레인 다이어그램이다. 프로세스(500)는 도 3a 내지 도 3d를 참조하여 설명된 토큰 발행 프로세스와 유사하다. 발행은 한 블록체인 상의 사용자가 해당 블록체인에서 다른 블록체인으로 일정양의 토큰을 전송하도록 요청할 때 발생할 수 있다. 일정양의 토큰을 전송하라는 요청은 스마트 계약의 형태로 이루어질 수 있다.
프로세스(500) 내의 하나 이상의 블록은 엔클레이브(110), 감시자(112A-N) 및 제2 블록체인(104B)에 의해 수행될 수 있다. 또한, 프로세스(500) 내의 하나 이상의 블록은 다른 행위자, 서버 및/또는 컴퓨팅 환경에 의해 수행될 수도 있다.
프로세스(500)를 참조하면, 감시자(112A-N)는 제1 블록체인 상의 브릿지 지갑에 대한 업데이트에 대해 도 1 내지 도 4를 참조하여 설명된 블록체인(104A)과 같은, 제1 블록체인을 폴링할 수 있다(502). 도 3a의 단계(B)를 참조할 수 있다. 브릿지 지갑에 대한 업데이트는 사용자 지갑으로부터 브릿지 지갑으로 일정양의 토큰을 전송하는 것을 포함할 수 있다. 이 전송은 스마트 계약을 통해 사용자에 의해 시작될 수 있으며, 제1 블록체인(104A)을 운영하는 하나 이상의 노드에 의해 실행될 수 있다.
하나 이상의 감시자(112A-N)는 (504)에서 브릿지 지갑으로의 토큰 전송이 이루어졌음을 식별할 수 있다. 도 3a의 단계(C)를 참조할 수 있다. 예를 들어, 감시자(112A-N)는 일정량의 토큰이 실제로 사용자 지갑으로부터 제1 블록체인(104A)상의 브릿지 지갑으로 전송되었음을 검증할 수 있다.
그 다음, 엔클레이브(110)는 (506)에서 토큰 전송에 대해 감시자(112A-N)들 간의 합의에 도달되었는지 여부를 판정할 수 있다. 도 3a의 단계(D)를 참조할 수 있다. 감시자(112A-N)들 간의 합의에 도달하지 못한 경우, 프로세스(500)는 블록(502)으로 돌아갈 수 있고, 감시자(112A-N)는 브릿지 지갑에 대해 이루어진 임의의 업데이트에 대해 제1 블록체인(104A)을 지속적으로 폴링할 수 있다. 감시자(112A-N) 중 충분하지 않은 수의 감시자가 업데이트에 대해 제1 블록체인(104A)을 폴링하는 경우, 합의에 도달하지 못할 수 있다. 감시자(112A-N) 중 충분한 수의 감시자가 업데이트에 대해 제1 블록체인(104A)을 폴링하지만 다수에 못미치는 감시자(112A-N)가 토큰 전송이 발생했음을 검증한 경우에도, 합의에 도달하지 못할 수 있다.
감시자들(112A-N) 간의 합의가 달성되면, 엔클레이브(110)는 (508)에서 제2 블록체인(104B)에서 토큰을 발행하기 위한 명령을 생성할 수 있다. 도 3b의 단계(E)를 참조할 수 있다. 이 명령은 토큰이 발행될 수 있는 제2 블록체인(104B) 상의 사용자 지갑의 주소를 나타낼 수 있다. 이 명령은 또한 제2 블록체인(104B)에서 발행되어야 하는 토큰의 수량을 나타낼 수도 있다. 이 수량은 사용자 지갑으로부터 제1 블록체인(104A) 상의 브릿지 지갑으로 전송된 토큰의 수량에 대응할 수 있다.
엔클레이브(110)는 (510)에서 명령을 암호화할 수 있다. 도 3b의 단계(F)를 참조할 수 있다.
그 다음, 엔클레이브(110)는 (512)에서 검증을 위해 암호화된 명령을 감시자(112A-N)에게 전송할 수 있다. 도 3b의 단계(G)를 참조할 수 있다.
감시자(112A-N)는 (514)에서 암호화된 명령을 검증할 수 있다. 도 3c의 단계(H)를 참조할 수 있다. 예를 들어, 감시자(112A-N)는 그들이 암호화된 명령를 수신했음을 검증할 수 있다.
엔클레이브(110)는 (516)에서 K개의 감시자(112A-N)가 암호화된 명령의 수신을 검증하는지 여부를 판정할 수 있다. 도 3c의 단계(I)를 참조할 수 있다. 전반적으로 설명된 바와 같이, K는 감시자(112A-N)의 다수 또는 감시자(112A-N)의 다수보다 큰, 감시자(112A-N)의 임의의 개수일 수 있다.
(516)에서 K개의 감시자(112A-N)가 암호화된 명령의 수신을 검증하지 않으면, 프로세스(500)는 블록(502)으로 돌아갈 수 있다. 블록(506)을 참조하여 전술한 바와 같이, 예를 들어 모든 감시자(112A-N)가 암호화된 명령을 수신하지 않은 경우, K개의 감시자(112A-N)가 수신을 검증하지 않은 것일 수 있다. 모든 감시자(112A-N)가 암호화된 명령을 수신했지만 사전 결정된 시간 기간 내에 다수 미만의 감시자(112A-N)가 엔클레이브(110)에 응답한 경우, K개의 감시자(112A-N)가 수신을 검증하지 않은 것일 수 있다. 예를 들어, 감시자(112A-N)는 엔클레이브(110)로부터의 검증 요청이 만료되기 전에 명령의 수신을 검증해야 하는 임계 시간 기간을 가질 수 있다.
(516)에서 K개의 감시자(112A-N)가 암호화된 명령의 수신을 검증하면, 엔클레이브(110)는 (518)에서 명령을 복호화할 수 있다. 도 3c의 단계(J)를 참조할 수 있다.
그 다음, 엔클레이브(110)는 (520)에서 복호화된 명령을 감시자(112A-N)에게 전송할 수 있다. 도 3c의 단계(K)를 참조할 수 있다.
감시자(112A-N)는 (522)에서 제2 블록체인(104B)에서 토큰을 발행하기 위해 복호화된 명령을 브로드캐스팅할 수 있다. 도 3d의 단계(L)를 참조할 수 있다. 이 명령은 제2 블록체인(104B)을 운영하는 하나 이상의 노드로 브로드캐스팅될 수 있다.
그 다음, 제2 블록체인(104B)은 단계(524)에서 복호화된 명령을 사용하여 토큰을 발행할 수 있다. 도 3d의 단계(M)를 참조할 수 있다. 전술한 바와 같이, 토큰은 제2 블록체인(104B)을 운영하는 하나 이상의 노드에 의해 발행될 수 있다.
도 6은 토큰을 릴리싱하기 위한 프로세스(600)의 스윔레인 다이어그램이다. 프로세스(600)는 도 4a 내지 도 4d를 참조하여 설명된 토큰 릴리싱 프로세스와 유사하다. 토큰의 릴리싱은 한 블록체인의 사용자가 해당 블록체인에서 일정량의 토큰을 요청 또는 소각할 때 발생할 수 있다. 토큰을 소각하는 것은 다른 블록체인 상의 사용자의 대응하는 지갑에 영향을 미친다. 결국, 소각된 한 블록체인 상의 토큰의 수량은 다른 블록체인 상의 브릿지 지갑으로부터 릴리싱되고 다른 블록체인 상의 사용자 지갑으로 반환될 수 있다. 하나의 블록체인 상의 일정량의 토큰을 소각하라는 요청은 스마트 계약의 형태로 이루어질 수 있다.
프로세스(600) 내의 하나 이상의 블록은 엔클레이브(110), 감시자(112A-N) 및 제1 블록체인(104A)에 의해 수행될 수 있다. 또한, 프로세스(600) 내의 하나 이상의 블록은 다른 행위자, 서버 및/또는 컴퓨팅 환경에 의해 수행될 수도 있다.
프로세스(600)를 참조하면, 감시자(112A-N)는 제2 블록체인(104B) 상의 소각 주소 및/또는 브릿지 지갑에 대한 업데이트에 대해, 제2 블록체인(104B)과 같은 제2 블록체인을 폴링할 수 있다(602). 도 4a의 단계(B)를 참조할 수 있다.
하나 이상의 감시자(112A-N)는 (604)에서 사용자의 지갑으로부터 제2 블록체인(104B) 상의 소각 주소 및/또는 브릿지 지갑으로 토큰 전송이 이루어졌음을 식별할 수 있다. 도 4a의 단계(C)를 참조할 수 있다.
엔클레이브(110)는 (606)에서 토큰 전송에 대해 감시자(112A-N)들 간의 합의에 도달되었는지 여부를 판정할 수 있다. 도 4a의 단계(D)를 참조할 수 있다. 합의에 도달하지 못한 경우, 프로세스(600)는 블록(602)으로 돌아갈 수 있다. 감시자(112A-N)들 간의 합의가 이루어지면, 엔클레이브(110)는 (608)에서 제1 블록체인(104A) 상의 브릿지 지갑에 보관된 일정양의 토큰을 릴리싱하기 위한 명령을 생성할 수 있다. 도 4b의 단계(E)를 참조할 수 있다. 이 명령은 일정양의 토큰이 릴리싱될 수 있는 제1 블록체인(104A)의 사용자 지갑의 주소를 나타낼 수 있다. 이 명령은 또한 제1 블록체인(104A) 상의 브릿지 지갑으로부터 릴리싱되어야 할 토큰의 수량을 나타낼 수 있다. 전술한 바와 같이, 브릿지 지갑으로부터 릴리싱되어 제1 블록체인(104A) 상의 사용자의 지갑으로 반환되는 수량은 제2 블록체인(104B)에서 소각된 토큰의 수량에 대응할 수 있다.
다음으로, 엔클레이브(110)는 (610)에서 명령을 암호화할 수 있다. 도 4b의 단계(F)를 참조할 수 있다. 엔클레이브(110)는 명령을 암호화하기 위해 개인 키를 사용할 수 있다. 개인 키는 엔클레이브(110)를 작동하는데 사용되는 마스터 비밀 키로부터 생성될 수 있다.
엔클레이브(110)는 (612)에서 검증을 위해 암호화된 명령을 감시자(112A-N)에게 전송할 수 있다. 도 4b의 단계(G)를 참조할 수 있다.
하나 이상의 감시자(112A-N)는 (614)에서 암호화된 명령의 수신을 검증할 수 있다. 도 4c의 단계(H)를 참조할 수 있다.
그 다음, 엔클레이브(110)는 (616)에서 K개의 감시자(112A-N)가 암호화된 명령의 수신을 검증했는지 여부를 판정할 수 있다. 도 4c의 단계(I)를 참조할 수 있다. K개의 감시자(112A-N)가 수신을 검증하지 않는 경우, 프로세스(600)는 블록(602)으로 돌아갈 수 있다. K개의 감시자(112A-N)가 수신을 검증했다면, 엔클레이브(110)는 (618)에서 명령을 복호화할 수 있다. 도 4c의 단계(J)를 참조할 수 있다. 도 6을 참조하여 전술한 바와 같이, 엔클레이브(110)는 마스터 비밀 키로부터 도출된 개인 복호화 키를 사용하여 명령을 복호화할 수 있다. 엔클레이브(110)는 개인 복호화 키를 보유할 수 있고 그 키를 감시자(112A-N)에게 전송하지 않을 수 있다. 따라서, 엔클레이브(110)는 (620)에서 암호화된 명령 및 복호화 키 대신 복호화된 명령을 감시자(112A-N)에게 전송한다. 도 4c의 단계(K)를 참조할 수 있다.
감시자(112A-N)는 (622)에서 제1 블록체인(104A) 상의 브릿지 지갑으로부터 일정양의 토큰을 릴리싱하기 위해 복호화된 명령을 브로드캐스팅할 수 있다. 도 4d의 단계(L)를 참조할 수 있다. 예를 들어, 감시자(112A-N)는 이 명령을 제1 블록체인(104A)을 운영하는 하나 이상의 노드로 브로드캐스팅한다.
이에 따라, 제1 블록체인(104A)은 (624)에서 브릿지 지갑으로부터 일정양의 토큰을 릴리싱하고, 그 일정양의 토큰을 사용자 지갑으로 반환할 수 있다. 도 4d의 단계(M)를 참조할 수 있다. 예를 들어, 제1 블록체인(104A)의 하나 이상의 노드는 명령에서 식별된 사용자 지갑의 주소를 사용하여, 브릿지 지갑으로부터 제1 블록체인(104A) 상의 사용자 지갑으로 일정양의 토큰을 릴리싱하기 위해 복호화된 명령을 사용할 수 있다.
도 7a는 엔클레이브를 시작하기 위한 프로세스(700)의 스윔레인 다이어그램이다. 프로세스(700)는 엔클레이브(110)와 같은 엔클레이브가 인스턴스화될 때마다 수행될 수 있다. 프로세스(700) 내의 하나 이상의 블록은 엔클레이브(110) 및 감시자(112A-N)에 의해 수행될 수 있다. 또한, 프로세스(700) 내의 하나 이상의 블록은 다른 행위자, 서버 및/또는 컴퓨팅 환경에 의해 수행될 수도 있다.
프로세스(700)를 참조하면, 엔클레이브(110)는 (702)에서 구성 파일(config file)을 사용하여 부팅될 수 있다. 구성 파일은 엔클레이브(110)를 구축하기 위해 운영자에 의해 사용되는 보안 코드베이스일 수 있다. 구성 파일은 엔클레이브(110), 브릿지 및 브릿지되는 네트워크 또는 블록체인을 통할(preside)할 감시자(112A-N)를 식별하는 주소 및/또는 도메인과 같은 정보를 포함할 수 있다. 또한, 구성 파일은 엔클레이브(110)에 대한 마스터 비밀 키를 생성하기 위한 명령도 포함할 수 있다. 또한, 구성 파일은 그 사이에 브릿지가 존재할 네트워크 또는 블록체인을 나타낼 수 있다.
이 구성 파일을 이용하여, 엔클레이브(110)는 (704)에서 마스터 비밀 키를 생성할 수 있다. 마스터 비밀 키는 암호로 보호되는 랜덤 키일 수 있다. 모든 다른 개인 키 및 다른 비밀 값은 이 마스터 비밀 키로부터 결정론적으로 도출될 수 있다. 본 명세서 전반에 걸쳐 설명된 바와 같이, 마스터 비밀 키는 명령을 암호화 및 복호화하기 위해 엔클레이브(110)에 의해 사용될 수 있는 개인 키를 도출하는 데 사용될 수 있다. 또한, 마스터 비밀 키는 엔클레이브(110)가 다운되어 재시작이 필요한 경우 엔클레이브(110)를 부팅하는데 사용될 수 있다. 또한, 마스터 비밀 키는 이전 엔클레이브의 트랜잭션을 계속 수행할 수 있는 새로운 엔클레이브를 구축하는데 사용될 수 있다.
또한, 엔클레이브(110)는 마스터 비밀 키가 생성될 때 마스터 비밀 키에 체크섬(checksum)을 추가할 수도 있다. 체크섬을 추가하는 것은 엔클레이브(110)가 자신의 비밀 쉐어를 얻기 위해 감시자에게 요청을 하고 감시자가 해당 요청이 유효한 엔클레이브로부터 유래했는지 검증할 수 없는 잠재적인 상황을 해결하는데 유리할 수 있다. 이러한 상황에서, 엔클레이브의 운영자는 악의적으로 각 감시자로부터 비밀 쉐어를 수집할 수 있다. 이와 유사하게, 운영자는 그들이 엔클레이브(110) 외부에서 생성된 비밀 쉐어를 악의적으로 설정할 수 있는데, 이는 감시자가 설정 요청이 엔클레이브(110)로부터 제대로 온 것인지 알 수 없기 때문이다. 더욱이, 단일 악의적 감시자는 잘못된 비밀 쉐어를 제공하여 브릿지로 하여금 잘못된 마스터 비밀 키를 재생성하게 만들 수 있다. 마스터 비밀 키에 체크섬을 추가하면 이러한 상황을 해결할 수 있다. 예를 들어, 마스터 비밀 키를 생성한 후, 키의 값은 무작위일 것이며, 그 뒤에 키의 SHA256 해시의 마지막 4바이트가 뒤따른다. 이러한 방식으로, 엔클레이브(110)는 감시자(112A-N)로부터의 비밀 쉐어를 사용하여 그것이 재생성한 마스터 비밀 키가 올바른지 여부를 즉시 체크할 수 있다. 체크섬이 일치하지 않으면, 엔클레이브(110)는 그것이 감시자(112A-N)로부터 획득한 비밀 쉐어의 서로 다른 그룹을 사용하여 마스터 비밀 키를 재생성하려고 시도할 수 있다. 일부 구현예에서, 총 비밀 쉐어 개수 중 임의의 비밀 쉐어 임계값 그룹이 마스터 비밀 키를 재생성하기 위해 사용될 수 있다.
또한, 엔클레이브(110)는 (706)에서 어떤 엔티티가 감시자(112A-N)로서 역할을 할 것인지 식별할 수 있다. 위에서 언급한 바와 같이, 구성 파일은 감시자(112A-N)로서 선택된 엔티티를 식별하는데 사용될 수 있는 주소, 도메인 또는 다른 식별자를 포함할 수 있다.
그 다음, 엔클레이브(110)는 (708)에서 감시자(112A-N)를 검증할 수 있다. 감시자(112A-N)를 검증하는 것은 감시자(112A-N)의 주소를 사용하여 감시자(112A-N) 각각과의 연결을 형성하는 것을 포함할 수 있다. 또한, 감시자(112A-N)가 실제로 이러한 보안 엔클레이브 환경을 통할하기 위한 올바른 감시자(112A-N)인지 검증하기 위해 SSL 인증서 검증 기술 및/또는 TLS가 사용될 수 있다. 더욱이, 검증 동안, 감시자(112A-N)는 원격 증명을 수행할 수 있다. 감시자(112A-N)는 브릿지가 엔클레이브(110) 내에서 작동하는지 여부를 확신할 수 없기 때문에, 감시자(112A-N)는 엔클레이브(110)에 의해 구축된 브릿지를 아직 신뢰하지 않을 수 있다. 따라서, 원격 증명을 통해, 엔클레이브(110)는 감시자(112A-N)에게 시작하라는 요청을 보낼 수 있다. 감시자(112A-N)는 브릿지가 엔클레이브(110)에서 실행되고 올바른 구성 파일을 사용하고 있음을 보장하기 위해 원격 증명을 시작할 수 있다. 원격 증명은 엔클레이브(110)가 처음에 또는 후속 시간에 시작할 때마다 발생할 수 있다. 원격 증명은 엔클레이브(110)가 마스터 비밀 키의 일부를 감시자(112A-N)와 공유할 수 있도록 감시자(112A-N)가 엔클레이브(110)를 신뢰할 수 있게 해준다.
감시자(112A-N)가 검증되면(그리고 원격 증명이 완료되면), 엔클레이브(110)는 (710)에서 마스터 비밀 키를 비밀 쉐어로 분할할 수 있다. 마스터 비밀 키는 감시자(112A-N)의 개수와 동일한 개수의 비밀 쉐어로 분할될 수 있다. 따라서, 10개의 검증된 감시자(112A-N)가 존재하는 경우, 마스터 비밀 키는 10개의 비밀 쉐어로 분할될 수 있다. 마스터 비밀 키는 구성 파일에 지시된 개수 만큼의 비밀 쉐어로 분할될 수 있다. 예를 들어, 일부 구현예에서, 마스터 비밀 키는 감시자(112A-N)의 개수보다 적은 개수의 비밀 쉐어로 분할될 수 있다. 일부 구현예에서, 마스터 비밀 키는 감시자(112A-N)의 개수보다 많은 수의 비밀 쉐어로 분할될 수도 있다.
비밀 쉐어는 감시자(112A-N)들 간에 분배될 수 있다. 따라서, 각각의 감시자(112A-N)(또는 감시자(112A-N)의 서브세트)는 (712)에서 비밀 쉐어를 수신할 수 있다. 감시자(112A-N)는 엔클레이브(110)가 보안 환경에서 올바른 구성 파일로 작동하고 있음을 검증하기 위해, 예를 들어 원격 증명을 사용하여, 비밀 쉐어를 검증할 수 있다. 마스터 비밀 키의 비밀 쉐어를 분배하는 것은 엔클레이브(110)를 보호하고 엔클레이브(110)에 대한 공격 또는 다른 보안 손상을 방지하는데 유리할 수 있다. 더욱이, 어떤 감시자도 비밀 쉐어 중 하나를 가지고서는 엔클레이브(110) 내에서 단독으로 또는 악의적으로 행동할 수 없다. 엔클레이브(110) 및 엔클레이브(110)에서 발생하는 트랜잭션에 대한 변경은 비밀 쉐어를 풀링하고 K개의 비밀 쉐어를 이용하여 마스터 비밀 키를 재조립함으로써만 이루어질 수 있다.
따라서, 각각의 감시자(112A-N)는 (714)에서 마스터 비밀 키의 그들의 비밀 쉐어를 저장할 수 있다. 비밀 쉐어는 도 2에 도시되고 설명된 개인 데이터 저장소(202)와 같은 개인 데이터 저장소 또는 데이터베이스에 저장될 수 있다. 예를 들어, 엔클레이브(110)가 시작되거나 재시작될 때마다, 엔클레이브(110)는 마스터 비밀 키를 재생성하기 위해 감시자(112A-N)로부터 비밀 쉐어를 검색할 수 있다.
엔클레이브(110)가 비밀 쉐어를 감시자(112A-N)에게 전송하면, 엔클레이브는 (716)에서 실행될 수 있다. 즉, 엔클레이브(110)는 브릿지된 블록체인들의 상태에 영향을 미치는 트랜잭션을 수행하도록 작동할 수 있다. 예를 들어, 엔클레이브(110)는 도 1 내지 도 6을 참조하여 설명된 바와 같이 발행 및 소각 트랜잭션을 완료 또는 승인(authorize)할 수 있다. 엔클레이브(110)를 실행하는 것은 브릿지를 시작하는 것을 포함한다. 제1 블록체인과 제2 블록체인 사이에서 각각 지원되는 자산에 대해 엔클레이브(110)에 의해 스마트 계약이 생성될 수 있다. 예를 들어, 일부 구현예에서는, 지원되는 자산(들)에 대한 임의의 필요한 스마트 계약을 생성하기 위해 엔클레이브에 의해 크리에이터 스마트 계약(creator smart contract)이 호출될 수 있다.
도 7b 내지 도 7g는 마스터 비밀 마이그레이션이 엔클레이브(112)와의 브리징 오퍼레이션에 참여하는 감시자(112)의 풀을 변경하거나 유지하는 프로세스를 보여준다. 이 프로세스에서, 오리지널 감시자(112A-112D)는 오래된 감시자 풀(720)에 참여한다. 그 다음, 엔클레이브(110)는 새로운 감시자 풀(718)로의 마이그레이션을 시작한다(예를 들어, 아래 설명된 도 7h 참조). 마이그레이션이 완료된 후, 다양한 감시자(112)가 새로운 감시자 풀(722)에 참여한다.
프로세스(716)에서, 모든 감시자(112A-112D)는 감시자(112E-112H)로 교체된다. 이 예에서, 제1 감시자 서버 풀은 제2 감시자 서버 풀과 동일한 개수의 감시자 서버를 포함하지만, 다른 프로세스가 이러한 감시자 풀 속성을 생성할 수 있다. 이 예에서, 제1 감시자 서버 풀은 제2 감시자 서버 풀과 상호 배타적이지만, 다른 프로세스가 이러한 감시자 풀 속성을 생성할 수 있다.
프로세스(724)에서, 감시자 풀로부터 감시자(112B 및 112D)가 제거되고, 감시자(112A 및 112C)는 감시자 풀에 유지되고, 감시자(112E 및 112F)가 감시자 풀에 추가된다. 이 예에서, 제1 감시자 서버 풀은 제2 감시자 서버 풀의 전부는 아닌 일부를 포함하지만, 다른 프로세스가 이러한 감시자 풀 속성을 생성할 수 있다.
프로세스(726)에서, 감시자(112A-112D)는 감시자 풀에 유지되고, 감시자(112E-112G)가 감시자 풀에 추가된다. 이 예에서, 제1 감시자 서버 풀은 제2 감시자 서버 풀보다 적은 개수의 감시자 서버를 포함하지만, 다른 프로세스는 감시자 풀의 이러한 속성을 생성할 수 있다. 이 예에서, 제1 감시자 서버 풀은 제2 감시자 서버 풀의 전부는 아닌 일부를 포함하지만, 다른 프로세스가 이러한 감시자 풀 속성을 생성할 수 있다.
프로세스(728)에서, 감시자는(112B-112F)는 감시자 풀에 유지되고, 감시자(112A 및 112G)는 감시자 풀로부터 제거된다. 이 예에서, 제1 감시자 서버 풀은 제2 감시자 서버 풀보다 많은 개수의 감시자 서버를 포함하지만, 다른 프로세스가 이러한 감시자 풀 속성을 생성할 수 있다.
프로세스(730)에서, 감시자(112A-112D)는 감시자 풀에 유지된다. 이 예에서, 제1 감시자 서버 풀은 제2 감시자 서버 풀과 동일한 감시자 서버를 포함하지만, 다른 프로세스가 이러한 감시자 풀 속성을 생성할 수 있다.
예를 들어, 이 프로세스에서 감시자 풀 내의 감시자의 수 또는 신원은 변경되지 않았지만, 마스터 비밀 및 비밀 쉐어는 변경되었음을 이해해야 한다. 이는 오래된 마스터 비밀 및/또는 비밀 쉐어의 기밀성 손상에 응답할 때 특히 유리할 수 있으며, 이 마이그레이션은 손상되지 않은 새로운 비밀 데이터로 이동한다.
도 7h는 엔클레이브(110)에 의해 수행될 수 있는 새로운 감시자 풀로 마이그레이션하기 위한 프로세스(718)의 일 예를 도시한다. 그러나, 다른 오퍼레이션은 상이한 계산 요소에 의해 수행될 수 있다.
계산 요소(예를 들어, 엔클레이브(110))는 제1 마스터 비밀에서 제2 마스터 비밀(724)로의 마이그레이션의 개시를 결정한다. 이것은, 예를 들어, 마이그레이션 모드로 시작하는 단계를 포함할 수 있다. 이것은, 예를 들어, 제1 마스터 비밀에서 제2 마스터 비밀로 마이그레이션하기 위해 제1 풀의 감시자 서버의 적어도 다수로부터 요청을 수신하는 단계를 포함할 수 있다.
제1 감시자 서버 풀은 임의의 이전의 마이그레이션-준비된 데이터 오브젝트에 대해 질의를 받는다. 이전의 마이그레이션-준비된 데이터 오브젝트가 반환되면, 프로세스(718)는 에러 상태로 종료될 수 있다. 적어도 하나의 이전의 마이그레이션-준비된 오브젝트를 수신한 것에 응답하여, 엔클레이브(110)는 이러한 에러를 표시하고 및/또는 마이그레이션 프로세스(718)를 재시작하고 및/또는 정상의 마이그레이션이 아닌 오퍼레이션으로 재시작하기 위해, 마이그레이션 재설정 메시지를 제1 마이그레이션 풀로 보낼 수 있다. 이러한 재설정은 일반적으로 암호화되고 준비된 마이그레이션 오브젝트의 콘텐츠를 기초로 하여 마이그레이션을 계속하는 단계를 포함할 수 있다.
제1 마스터 비밀의 부분들은 제1 풀(728) 내의 각각의 대응하는 감시자로부터 수신된다. 예를 들어, 감시자(112A)는 제1 마스터 비밀의 자신의 부분을 보낼 수 있고, 감시자(112B)는 제1 마스터 비밀의 자신의 부분을 보낼 수 있는 것과 같은 방식이다.
제1 자산의 목록 및 제2 자산의 목록이 수신된다(728 및 730). 예를 들어, 오래된 풀의 감시자는 블록체인(104A 및 104B)에서 환경(100)의 자산을 보유하는 지갑 주소의 목록을, 잔액 또는 다른 메타데이터와 함께 엔클레이브(110)로 보낼 수 있다.
일부 경우에, 제2 자산의 목록, 제1 자산의 목록 및 제1 마스터 비밀의 대응하는 부분은 감시자의 적어도 다수로부터의 단일 메시지로 수신된다. 그러나, 감시자(112)당 하나보다 많은 메시지를 사용하는 것 및/또는 다수보다 많은 개수(예를 들어, 모든, 과반 초과)의 감시자의 응답을 요구하는 것을 포함하는 다른 구성도 가능하다.
제2 마스터 비밀이 생성된다(732). 예를 들어, 엔클레이브(110)는 최소 임계값의 정보 엔트로피를 무작위 숫자 스트링을 생성하기 위해 참 또는 의사 난수 생성기에 액세스할 수 있다. 일부 경우에, 이 숫자 스트링은 제2 마스터 비밀로서 직접 사용될 수도 있다. 일부 경우에, 파생 데이터(예컨대, 체크섬) 및 메타데이터(예컨대, 버전 번호)가 제2 마스터 비밀에 포함될 수 있다.
제2 마스터 비밀의 부분들이 생성된다(734). 예를 들어, 제2 마스터 비밀로부터 그리고 제2 감시자 서버 풀의 각각의 감시자 서버에 대해, 제2 마스터 비밀의 대응하는 제2 부분이 생성된다. 이것은 파생 데이터(예컨대, 암호화 서명) 또는 메타데이터(예컨대, 수신하는 감시자(112)의 식별자)를 추가하는 것을 포함할 수 있다.
주소 정보는 제1 블록체인 네트워크 및 제2 블록체인 네트워크에 대한 제2 마스터 비밀로부터 도출된다(736). 예를 들어, 도 4e에 도시된 바와 같이, 새로운 주소를 찾기 위한 주소 지정 함수 내의 한 파라미터로서 새로운 마스터 비밀이 사용될 수 있다.
제1 트랜잭션-데이터가 생성되고(738), 제2 트랜잭션-데이터가 생성된다(740). 예를 들어, 제1 트랜잭션-데이터는 제1 자산을 제1 블록체인 네트워크의 제1 지갑으로 전송하도록 제1 블록체인 네트워크에 지시하는데 사용될 수 있으며, 제1 지갑은 제2 마스터 비밀로부터 도출된 주소 정보로 참조된다. 예를 들어, 제2 트랜잭션-데이터는 제2 자산의 허용된-발행자 레코드를 제2 블록체인 네트워크의 제2 지갑으로 업데이트하도록 제2 블록체인 네트워크에 지시하는데 사용될 수 있다. 제2 자산은 하나 이상의 스마트 계약을 거칠 수 있으며, 이러한 계약은 계약 및/또는 어시스트에 대한 다양한 권한을 정의하는 파라미터를 포함할 수 있다. 스마트 계약의 한 예시적인 파라미터는 제2 블록체인 네트워크에서 제2 자산을 발행할 수 있는 당사자의 신원을 기록하는 허용된-발행자 레코드일 수 있다. 일부 경우에, 이 허용된-발행자 레코드는 개념적으로 제2 자산 및/또는 그들의 관련 스마트 계약(들)의 소유자 또는 컨트롤러로서 간주될 수 있다. 예를 들어, 제2 트랜잭션-데이터는 제2 자산을 제2 블록체인 네트워크의 제2 지갑으로 전송하도록 제2 블록체인 네트워크에 지시하는데 사용될 수 있으며, 제2 지갑은 제2 마스터 비밀로부터 도출된 주소 정보로 참조된다. 이러한 예 중 하나가 도 4e에 도시되어 있다.
마이그레이션-준비된 데이터 오브젝트가 생성된다(742). 이 마이그레이션-준비된 데이터 오브젝트는 제2 마스터 비밀의 제2 부분, 제1 트랜잭션-데이터 및 제2 트랜잭션-데이터 각각을 암호화하여 생성될 수 있다. 따라서, 마이그레이션-준비된 데이터-오브젝트를 복호화하는 키 없이도, 요소들은 마이그레이션-준비된 데이터-오브젝트를 BLOb(Binary Large Object) 또는 암호 텍스트로서 처리할 수 있다. 일부 경우에, 제2 마스터 비밀의 제2 부분, 제1 트랜잭션-데이터 및 제2 트랜잭션-데이터 각각을 암호화하는 것은 엔클레이브(110)의 내구성 키(durable key)와 같은, 수정을 방지하도록 구성된 보안 실행 환경의 키를 사용한다.
제2 풀의 각 감시자 서버에 대하여, 제2 풀의 감시자 서버에 대응하는 마이그레이션-준비된 명령이 준비된다(744). 예를 들어, 이 준비는 제2 마스터 비밀의 대응하는 제2 부분, i) 마이그레이션-준비된 데이터 오브젝트, ii) 제1 마스터 비밀 및 iii) 제2 마스터 비밀을 이용하여 암호화하는 단계를 포함할 수 있다.
대응하는 마이그레이션-준비된 명령은 제2 풀의 각 감시자에게 전송된다(746). 이 오퍼레이션은 각 감시자(112)가 그것의 명령에 대한 접근 권한을 가짐을 보장한다. 그러나, 이러한 명령이 감시자가 소유하지 않은 키로 암호화되었으므로, 제2 마스터 비밀의 대응하는 제2 부분이 각 감시자(748)에게 전송된다. 따라서, 프로세스(718)는 (예를 들어, 엔클레이브(110)의 하드웨어 고장 또는 요소에 의해 사용되는 인터넷의 예기치 않은 네트워크 다운타임으로 인해) 예기치 않게 중단되어야 한다.
제2 풀의 각각의 감시자 서버로부터, 대응하는 마이그레이션-준비된 명령의 수신에 대한 확인 응답을 수신한 것에 응답하여, 각각의 감시자(752)에게 완료 마이그레이션 요청이 전송된다. 완료 마이그레이션 요청은 명령들을 포함하며, 제2 풀의 각 감시자 서버로 하여금 제1 마스터 비밀에서 제2 마스터 비밀로 마이그레이션하게 하도록 구성된다. 수신된 후, 제2 감시자 서버 풀은 마이그레이션 준비된 명령을 복호화하도록 동작 가능하여, 하드웨어 고장으로 인해 완료 마이그레이션 요청의 전송을 하지 못하게 된 경우에도 마이그레이션의 완료를 가능하게 해준다. 일부 경우에, 마이그레이션-준비된 명령이 각 감시자에게 설정되기 전에, 엔클레이브(110)는 사용자(예를 들어, 브릿지 운영자)에게 데이터를 검사하고, 예컨대, 브릿지가 새로운 지갑에 대한 개인 키를 갖는지 검증할 마지막 기회를 제공할 수 있다.
도 8은 엔클레이브 시작 동안 엔클레이브(110)의 원격 증명을 위한 프로세스(800)의 스윔레인 다이어그램이다. 프로세스(800)는 엔클레이브(110) 또는 다른 엔클레이브가 부팅 및/또는 재시작될 때마다 수행될 수 있다. 프로세스(800)를 수행하는 것은 엔클레이브(110)가 신뢰될 수 있도록 엔클레이브(110)가 유효한 보안 코드로 실행되고 있음을 보장하는데 유리할 수 있다. 프로세스(800) 내의 하나 이상의 블록은 엔클레이브(110) 및 감시자(112A-N)에 의해 수행될 수 있다. 또한, 프로세스(800) 내의 하나 이상의 블록은 다른 행위자, 서버 및/또는 컴퓨팅 환경에 의해 수행될 수도 있다.
프로세스(800)를 참조하면, 엔클레이브(110)는 (802)에서 구성 파일을 사용하여 부팅될 수 있다. 구성 파일에 대한 설명은 도 7의 블록(702)을 참조할 수 있다. 블록(802)은 엔클레이브(110)가 처음으로 부팅될 때 발생될 수 있다. 또한, 블록(802)은 엔클레이브(110)가 다운되어 재시작될 때도 발생할 수 있다.
그 다음, 엔클레이브(110)는 (804)에서 임시 세션 키로 시작하라는 요청을 보낼 수 있다. 전송 요청에 대한 명령은 구성 파일로부터 도출될 수 있다. 감시자(112A-N)는 (806)에서 이 요청을 수신할 수 있다. 그 다음, 감시자(112A-N)는 (810)에서 엔클레이브(110)를 검증하기 위해 (808)에서 원격 증명을 수행할 수 있다. 엔클레이브(110)는 임의의 감시자(112A-N)로부터 마스터 비밀 키의 비밀 쉐어를 수신할 수 있기 전에 임시 세션 키를 전송해야 한다.
감시자(112A-N)가 이 요청을 수신할 때, 그들은 이 요청이 유효한 엔클레이브로부터 온 것인지 여부를 알 수 없다. 따라서, 감시자(112A-N)가 요청을 수신한 때, 감시자(112A-N)는 엔클레이브(110)를 검증하기 위해 브릿지의 원격 증명을 수행할 수 있다. 일부 구현예에서, 원격 증명은 엔클레이브(110)의 검증된 버전으로부터 이전에 생성된 엔클레이브(110)에 대한 검증된 해시 값을 검색하는 것을 포함할 수 있다. 엔클레이브(110)에 대해 생성된 현재 해시 값은 엔클레이브(110)가 실제로 안전하고 유효한지 여부를 판정하기 위해 검증된 해시 값과 비교될 수 있다. 일부 구현예에서, 클라이언트 컴퓨팅 장치에 있는 사용자 또는 다른 엔티티가 원격 증명을 시작할 수도 있다. 클라이언트 컴퓨팅 장치는 엔클레이브(110) 및/또는 임의의 감시자(112A-N)에 요청을 전송할 수 있다. 이 요청은, 예를 들어, 엔클레이브(110)에 대한 검증된 해시 값을 검색하는 것, 현재 해시 값을 수신하는 것, 검증된 해시 값과 현재 해시 값의 비교를 수행하여 엔클레이브(110)를 원격으로 검증하는 것을 포함할 수 있다. 현재 해시 값은 엔클레이브(110)에 대한 검증된 해시 값을 공개적으로 액세스 가능하게 해주는 다른 컴퓨터 시스템으로부터 검색될 수 있다.
원격 증명이 실패하면, 요청은 감시자(112A-N)에 의해 거부될 수 있다. 즉, 감시자(112A-N)는 악의적인 운영자가 엔클레이브(110) 및 그 내부의 브릿지를 실행하려고 시도 중일 수 있다고 판정할 수 있다. 원격 증명이 실패하면 감시자(112A-N)는 마스터 비밀 키의 그들의 비밀 쉐어를 엔클레이브(110)로 전송하지 않을 수 있다.
원격 증명이 통과되면, 감시자(112A-N)는 그들의 비밀 쉐어를 엔클레이브(110)와 공유할 수 있다(예를 들어, 원격 증명 프로세스에서 디피-헬만(Diffie-Hellman) 키 교환을 사용하여 도출됨). 본 명세서 전반에 걸쳐 설명된 바와 같이, 유효하고 안전한 엔클레이브가 감시자(112A-N)와 통신하고 있고 엔클레이브(110)가 올바른 구성 파일로 실행되고 있음을 감시자(112A-N)가 집합적으로 검증한 때 원격 증명이 통과될 수 있다. 위에서 설명된 바와 같이, 엔클레이브(110)가 유효하고 안전한 코드를 실행하고 있는지 여부를 감시자(112A-N)가 판정하기 위해 체크섬이 실행될 수 있다.
따라서, 엔클레이브(110)가 (810)에서 검증되면, 감시자(112A-N)는 마스터 비밀 키의 그들의 비밀 쉐어를 엔클레이브(110)로 전송할 수 있다. 감시자들(112A-N)과 엔클레이브(110) 사이에 신뢰가 확립되었다. 엔클레이브(110)는 (814)에서 마스터 비밀 키의 비밀 쉐어를 수신할 수 있다.
그 다음, 엔클레이브(110)는 (808)에서 비밀 쉐어를 사용하여 엔클레이브(110)가 응답에서 반환할 수 있는 비밀 쉐어를 암호화할 수 있고 또한 원격 증명 프로세스의 일부로 사용된 원격 증명 컨텍스트를 제공할 수 있다. 엔클레이브(110)는 동일한 비밀 쉐어를 사용하여 감시자(112A-N)의 비밀 쉐어를 복호화할 수 있다. 엔클레이브(110)가 비밀 쉐어를 설정하기 전에 감시자(112A-N)로부터 비밀 쉐어를 요청할 수 있으므로, 엔클레이브(110)는 또한 원격 증명을 위해 이러한 비밀 쉐어를 사용하여 그것이 각각의 감시자(112A-N)로 전송하는 비밀 쉐어를 암호화할 수도 있다. 이러한 방식으로, 감시자(112A-N)는 비밀 쉐어가 실제로 엔클레이브(110) 자체에 의해 생성되었음을 검증할 수 있고, 감시자(112A-N)가 엔클레이브(110) 이외의 어떤 엔티티에도 비밀 쉐어를 제공하지 않는다는 것을 알 수 있다.
엔클레이브(110)는 (816)에서 K개의 수신된 비밀 쉐어를 이용하여 마스터 비밀 키를 재구성할 수 있다. 일부 구현예에서, 모든 비밀 쉐어보다 적은 수의 비밀 쉐어를 이용하여 마스터 비밀 키를 적절하게 재구성할 수 있다. 일부 구현예에서, 마스터 비밀 키는 모든 비밀 쉐어로 재구성될 수 있다. 구성 파일은 K 또는 마스터 비밀 키를 재구성하는데 필요한 비밀 쉐어의 개수를 식별할 수 있다.
마스터 비밀 키가 재구성되면, 엔클레이브(110)는 (818)에서 그 키를 이용하여 브릿지를 작동할 수 있다. 예를 들어, 토큰 발행 및 릴리싱과 같은 트랜잭션은 브릿지를 통해 연결된 체인에 걸쳐 수행될 수 있다.
도 9는 엔클레이브(110)를 재시작하기 위한 프로세스(900)의 스윔레인 다이어그램이다. 프로세스(900)는 엔클레이브(110)가 처음으로 부팅될 때마다 및/또는 몇몇 이유로 다운될 때마다 수행될 수 있다. 전반적으로 설명된 바와 같이, 엔클레이브(110)는 무상태이다. 엔클레이브(110)가 다시 부팅할 때, 엔클레이브(110)는 엔클레이브(110)가 다운된 시간에 어떤 발행 및/또는 소각 트랜잭션이 현재 수행되고, 대기하고, 완료되고, 및/또는 중지되는지를 판정하기 위해 감시자(112A-N)를 폴링할 수 있다. 따라서, 엔클레이브(110)는 마치 엔클레이브(110)가 애초에 전혀 다운되지 않은 것처럼 트랜잭션을 발행 및/또는 소각하는 것을 완료하는 것을 선택할 수 있다. 프로세스(900)는 프로세스(700 및/또는 800) 이후에 발생할 수 있다. 프로세스(900)는 토큰 발행 또는 릴리싱을 위한 명령을 암호화한 후 엔클레이브(110)가 다운될 때(예를 들어, 도 3b 및 4b의 단계(F) 참조) 및/또는 암호화된 명령이 검증을 위해 감시자(112A-N)에게 전송될 때(예컨대, 도 3b 및 도 4b의 단계(G) 참조) 수행될 수 있다.
프로세스(900) 내의 하나 이상의 블록은 엔클레이브(110) 및 감시자(112A-N)에 의해 수행될 수 있다. 또한, 프로세스(900) 내의 하나 이상의 블록은 다른 액터, 서버 및/또는 컴퓨팅 환경에 의해 수행될 수도 있다.
프로세스(900)를 참조하면, 엔클레이브(110)가 부팅된 후(예를 들어, 원격 증명이 수행되고 감시자(112A-N)가 엔클레이브(110)가 보안 환경에서 유효한 코드로 작동하고 있음을 검증한 후), 엔클레이브(110)는 엔클레이브(110)가 재시작되기 전에 감시자(112A-N)가 임의의 암호화된 명령을 수신했는지 여부를 판정하기 위해 감시자(112A-N)를 폴링할 수 있다(902). 도 3 내지 도 6을 참조하여 설명된 바와 같이, 암호화된 명령은 각 블록체인에서 토큰을 발행 및/또는 소각하기 위한 명령을 포함할 수 있다.
그 다음, 감시자(112A-N)는 엔클레이브(110)가 다운된 후 재시작되기 전에 그들이 암호화된 명령을 수신했는지 여부를 검증할 수 있다(904). 도 2를 참조하여 설명된 바와 같이, 감시자(112A-N)는 개인 데이터 저장소(202) 내 제1 및 제2 블록체인(104A 및 104B)에서 발생한 트랜잭션 및 활동을 색인화할 수 있다. 따라서, 감시자(112A-N)는 암호화된 명령에 대한 색인을 검색할 수 있다.
엔클레이브(110)는 (906)에서 K개의 감시자(112A-N)가 수신을 검증했는지 여부를 판정할 수 있다. 본 명세서 전반에 걸쳐 설명된 바와 같이, K는 감시자(112A-N)의 다수와 동일하거나 그보다 큰 임의의 값일 수 있다. K개의 감시자(112A-N)가 재시작 전에 암호화된 명령의 수신을 검증하지 않으면, 수신을 검증했던 임의의 감시자(112A-N)는 악의적으로 행동할 수 있다. 따라서, 엔클레이브(110)는 명령을 복호화하고 그들을 각각의 블록체인으로 브로드캐스팅하는 것을 계속하지 않을 수 있다. 엔클레이브(110)가 K개의 감시자(112A-N)가 암호화된 명령을 수신했음을 검증할 수 없는 경우, 프로세스(900)는 재시작할 수 있고, 엔클레이브(110)는 충분한 수의 감시자(112A-N)(예를 들어, N개 중 K개의 감시자)가 다시 온라인 상태가 되거나, 및/또는 암호화된 명령의 수신을 검증할 때까지 감시자(112A-N)를 계속 폴링할 수 있다.
때때로, 엔클레이브(110)는 K개의 감시자(112A-N)로부터 수신 검증을 수신할 필요가 없을 수도 있다. 그 대신, 엔클레이브(110)는 감시자(112A-N) 중 하나로부터 암호화되고 서명된 명령의 단일 복사본을 수신할 수 있다. 이러한 암호화된 명령을 수신하면, 엔클레이브(110)는 이전에 암호화된 명령을 수신하지 않은 임의의 감시자(112A-N)에게 그 명령을 전송할 수 있다. 엔클레이브가 K개의 감시자(112A-N)가 암호화된 명령을 갖고 있음을 확인하여 그것을 오류에 강하게 만들면, 엔클레이브(110)는 명령의 복호화된 버전을 감시자(112A-N)에게 전송할 수 있다.
(906)에서 K개의 감시자(112A-N)가 재시작 전에 암호화된 명령의 수신을 검증하면(또는 엔클레이브(110)가 감시자(112A-N) 중 하나로부터 암호화되고 서명된 명령을 수신하면), 엔클레이브(110)는 토큰 발행 또는 릴리싱을 위한 명령이 생성되었지만 엔클레이브(110)가 다운되기 전에 완료되지 않았다고 판정할 수 있다. 따라서, 엔클레이브(110)는 본 명세서 전반에 걸쳐 설명된 바와 같이 (908)에서 명령을 복호화할 수 있다. 예를 들어, 감시자(112A-N)는 암호화된 명령을 다시 엔클레이브(110)로 전송할 수 있다. 엔클레이브(110)는 엔클레이브(110)에 의해 보유되고 마스터 비밀 키로부터 도출되는 개인 복호화 키를 사용하여 명령을 복호화할 수 있다.
그 다음, 엔클레이브(110)는 (910)에서 복호화된 명령을 재생할 수 있다. 명령을 재생하는 것은 복호화된 명령을 감시자(112A-N)에게 전송하는 것을 포함할 수 있다. 그 다음 감시자(112A-N)는 엔클레이브(110)가 전혀 다운되지 않은 것처럼 명령이 실행되고 완료될 수 있도록 각각의 블록체인의 노드에 명령을 브로드캐스팅할 수 있다. 이러한 시나리오에서, 감시자(112A-N)가 이미 브로드캐스팅되어 수신된 명령을 다시 브로드캐스팅하더라도, 이 명령들은 무시될 수 있다(토큰이 이미 잠금 해제되었거나 전송된 경우 각 블록체인의 노드들은 토큰을 잠금 해제하거나 한 사용자 지갑에서 다른 사용자 지갑으로 전송할 수 없다).
도 10은 엔클레이브(110)를 재시작하기 위한 다른 프로세스(1000)의 스윔레인 다이어그램이다. 예를 들어, 암호화된 트랜잭션(들)이 검증을 위해 감시자(112A-N)에게 전송된 후 엔클레이브(110)가 다운될 때(예를 들어, 도 3b 및 4b의 단계(G)를 참조) 그리고 선택사항으로서 감시자(112A-N)가 암호화된 명령의 수신을 검증한 후(예를 들어, 도 3c 및 4c의 단계(H)를 참조) 프로세스(1000)가 발생할 수 있다. 또한, 프로세스(1000)는 엔클레이브(110)가 명령을 복호화한 후 엔클레이브(110)가 다운될 때(예를 들어, 도 3c 및 도 4c의 단계(J) 참조) 및/또는 엔클레이브(110)가 복호화된 명령을 감시자(112A-N)에게 전송할 때(예컨대, 도 3c 및 4c의 단계(K) 참조) 수행될 수 있다.
프로세스(1000) 내의 하나 이상의 블록은 엔클레이브(110) 및 감시자(112A-N)에 의해 수행될 수 있다. 또한, 프로세스(1000) 내의 하나 이상의 블록은 다른 행위자, 서버 및/또는 컴퓨팅 환경에 의해 수행될 수도 있다.
프로세스(1000)를 참조하면, 엔클레이브(110)는 엔클레이브(110)가 재시작되기 전에 감시자(112A-N)가 복호화된 명령을 수신했는지 여부를 판정하기 위해 감시자(112A-N)를 폴링할 수 있다(1002). 감시자(112A-N)는 (1004)에서 복호화된 명령을 수신했는지 여부를 검증할 수 있다. 명령의 수신을 검증하는 것에 대한 논의는 도 9의 블록(904)을 참조할 수 있다.
그 다음, 엔클레이브(110)는 (1006)에서 적어도 하나의 감시자(112A-N)가 복호화된 명령의 수신을 검증했는지 여부를 판정할 수 있다. 하나의 감시자가 복호화된 명령의 수신을 검증하는데 충분할 수 있는데, 그 이유는 하나의 감시자가 복호화된 명령을 수신했다면 적어도 다수의 감시자(112A-N)가 엔클레이브(110)가 다운되기 전에 암호화된 명령의 수신을 이미 검증했었을 것이기 때문이다. 따라서, 감시자(112A-N)들은 이미 검증되었으며 명령을 실행하기 위해 엔클레이브(110)에 의해 신뢰될 수 있다. 더욱이, 적어도 하나의 감시자가 복호화된 명령의 수신을 검증하면, 이는 임의의 다른 감시자(112A-N)가 복호화된 명령을 수신할 수 있기 전에 엔클레이브(110)가 다운되었음을 나타낼 수 있다. 또한, 복호화된 명령의 수신은 엔클레이브(110)가 다운되기 전에 발행 및/또는 소각 트랜잭션이 진행되었음을 나타낼 수도 있다.
엔클레이브(110)가 다운되기 전에 감시자(112A-N) 중 단 하나라도 복호화된 명령의 수신을 검증하지 못하는 경우, 프로세스(1000)는 중지될 수 있다. 때때로, 재시작 시, 엔클레이브(110)는 암호화된 명령에 대해 감시자(112A-N)를 폴링할 수 있다. 대응하는 복호화된 명령을 수신한 임의의 감시자(112A-N)는 아무 것도 응답할 수 없다. 엔클레이브(110)가 적어도 하나의 감시자(112A-N)로부터 암호화된 명령을 수신하는 경우, 엔클레이브는 암호화된 명령을 나머지 감시자(112A-N)로 전송할 수 있다. 그 다음, 엔클레이브는 명령의 복호화된 버전을 모든 감시자(112A-N)에게 보낼 수 있다. 어떤 감시자(112A-N)도 복호화된 명령을 이전에 수신하지 못한 경우, 이 명령은 브로드캐스팅되고 블록체인에 추가될 수 있다. 그렇지 않고 명령이 이미 브로드캐스팅된 경우, 이 명령과 연관된 트랜잭션은 블록체인에 영향을 미치지 않는다.
위에서 언급한 바와 같이, (1006)에서 적어도 하나의 감시자(112A-N)가 복호화된 명령의 수신을 검증하면, 엔클레이브(110)는 해당 명령이 적어도 하나의 감시자에 의해 각각의 블록체인에 브로드캐스팅되었을 수 있다고 판정할 수 있다. 명령이 대응하는 트랜잭션(예를 들어, 토큰 발행 또는 소각)을 완료하기 위해 각각의 블록체인의 노드들에 대해 실제로 브로드캐스팅됨을 보장하기 위해, 엔클레이브(110)는 (1008)에서 복호화된 명령을 어떤 감시자(112A-N)가 수신하지 않았는지 식별할 수 있다. 그렇게 하기 위해, 엔클레이브(110)는 단지 어떤 감시자(112A-N)가 복호화된 명령의 수신을 검증했는지만 식별한 후, 폴링되었지만 수신을 검증하지 않은 모든 감시자(112A-N)를 선택할 수 있다.
엔클레이브(110)는 (1010)에서 식별된 감시자에게 복호화된 명령을 전송할 수 있다. 감시자(112A-N)는 (1012)에서 복호화된 명령을 수신할 수 있다. 그 다음, 감시자(112A-N)는 이 명령을 토큰의 발행 및/또는 잠금 해제 및 전송이 완료될 수 있도록 (1014)에서 각각의 블록체인에 브로드캐스팅할 수 있다.
도 11은 본 명세서에 설명된 기술을 구현하는데 사용될 수 있는 컴퓨팅 장치(1100)의 일례 및 모바일 컴퓨팅 장치의 일례를 도시한다. 컴퓨팅 장치(1100)는 랩톱, 데스크탑, 워크스테이션, PDA(personal digital assistant), 서버, 블레이드 서버, 메인프레임 및 기타 적절한 컴퓨터와 같은 다양한 형태의 디지털 컴퓨터를 나타내도록 의도되었다. 모바일 컴퓨팅 장치는 PDA, 휴대폰, 스마트폰 및 다른 유사한 컴퓨팅 장치와 같은 다양한 형태의 모바일 장치를 나타내도록 의도되었다. 여기에 도시된 컴포넌트, 그들의 연결 및 관계, 그들의 기능은 단지 예시일 뿐, 본 명세서에 설명되고 및/또는 청구된 발명의 구현을 제한하려는 의미는 아니다.
컴퓨팅 장치(1100)는 프로세서(1102), 메모리(1104), 저장 장치(1106), 메모리(1104)에 연결되는 고속 인터페이스(1108) 및 복수의 고속 확장 포트(1110) 및 저속 확장 포트(1114)와 저장 장치(1106)를 연결하는 저속 인터페이스(1112)를 포함한다. 프로세서(1102), 메모리(1104), 저장 장치(1106), 고속 인터페이스(1108), 고속 확장 포트(1110) 및 저속 인터페이스(1112) 각각은 다양한 버스를 사용하여 상호 연결되며, 일반적인 마더보드 위에 또는 적절한 다른 방식으로 장착될 수 있다. 프로세서(1102)는 컴퓨팅 장치(1100)에서 실행하기 위한 명령을 처리할 수 있으며, 이 명령은 고속 인터페이스(1108)에 결합된 디스플레이(1116)와 같은, 외부 입/출력 장치에 GUI에 대한 그래픽 정보를 표시하기 위해 메모리(1104) 또는 저장 장치(1106)에 저장된 명령을 포함한다. 다른 구현예에서, 복수의 메모리 및 일정 유형의 메모리와 함께 복수의 프로세서 및/또는 복수의 버스가 적절하게 사용될 수 있다. 또한, 복수의 컴퓨팅 장치가 연결될 수 있으며, 각 장치는 필요한 오퍼레이션의 일부를 제공한다(예컨대, 서버 뱅크, 블레이드 서버 그룹 또는 다중-프로세서 시스템).
메모리(1104)는 컴퓨팅 장치(1100) 내에 정보를 저장한다. 일부 구현예에서, 메모리(1104)는 휘발성 메모리 장치 또는 장치들이다. 일부 구현예에서, 메모리(1104)는 비휘발성 메모리 장치 또는 장치들이다. 메모리(1104)는 또한 자기 또는 광 디스크와 같은 컴퓨터 판독 가능 매체의 다른 형태일 수 있다.
저장 장치(1106)는 컴퓨팅 장치(1100)에 대용량 저장을 제공할 수 있다. 일부 구현예에서, 저장 장치(1106)는 플로피 디스크 장치, 하드 디스크 장치, 광학 디스크 장치, 또는 테이프 장치, 플래시 메모리 또는 다른 유사한 솔리드 스테이트 메모리 장치, 또는 저장 영역 네트워크 또는 다른 구성의 장치를 포함한 하나의 어레이의 장치들과 같은, 컴퓨터 판독 가능 매체이거나 이를 포함할 수 있다. 컴퓨터 프로그램 제품은 정보 캐리어에 실재적으로(tangibly) 구현될 수 있다. 컴퓨터 프로그램 제품은 실행 시 위에 설명된 것과 같은 하나 이상의 방법을 수행하는 명령을 포함할 수도 있다. 컴퓨터 프로그램 제품은 또한 메모리(1104), 저장 장치(1106), 또는 프로세서(1102) 상의 메모리와 같은 컴퓨터 또는 기계 판독 가능 매체에 실재적으로 구현될 수 있다.
고속 인터페이스(1108)는 컴퓨팅 장치(1100)에 대한 대역폭 집약적 오퍼레이션을 관리하는 반면, 저속 인터페이스(1112)는 낮은 대역폭 집약적 오퍼레이션을 관리한다. 이러한 기능 할당은 단지 예시일 뿐이다. 일부 구현예에서, 고속 인터페이스(1108)는 메모리(1104)에, (예를 들어, 그래픽 프로세서 또는 가속기를 통해) 디스플레이(1116)에, 그리고 다양한 확장 카드(도시되지 않음)를 수용할 수 있는 고속 확장 포트(1110)에 결합된다. 이러한 구현예에서, 저속 인터페이스(1112)는 저장 장치(1106) 및 저속 확장 포트(1114)에 결합된다. 다양한 통신 포트(예를 들어, USB, 블루투스, 이더넷, 무선 이더넷)를 포함할 수 있는 저속 확장 포트(1114)는 키보드, 포인팅 장치, 스캐너 또는 네트워크 어댑터 등을 통한 스위치 또는 라우터와 같은 네트워킹 장치 등과 같은, 하나 이상의 입/출력 장치와 결합될 수 있다.
컴퓨팅 장치(1100)는 도면에 도시된 바와 같이 다양한 형태로 구현될 수 있다. 예를 들어, 이것은 표준 서버(1120)로 구현되거나 또는 그러한 서버 그룹에서 여러 번 구현될 수 있다. 또한, 이것은 노트북 컴퓨터(1122)와 같은 개인용 컴퓨터에서도 구현될 수 있다. 또한, 이것은 랙 서버 시스템(1124)의 일부로 구현될 수도 있다. 대안으로서, 컴퓨팅 장치(1100)의 컴포넌트들은 모바일 컴퓨팅 장치(1150)와 같은 모바일 장치(도시되지 않음) 내의 다른 컴포넌트들과 결합될 수 있다. 이러한 장치 각각은 하나 이상의 컴퓨팅 장치(1100) 및 모바일 컴퓨팅 장치(1150)를 포함할 수 있으며, 전체 시스템은 서로 통신하는 복수의 컴퓨팅 장치로 구성될 수 있다.
모바일 컴퓨팅 장치(1150)는 다른 컴포넌트 중에서도 특히 프로세서(1152), 메모리(1164), 디스플레이(1154)와 같은 입/출력 장치, 통신 인터페이스(1166), 및 송수신기(1168)를 포함한다. 또한, 모바일 컴퓨팅 장치(1150)에는 추가 저장을 제공하기 위해 마이크로 드라이브와 같은 저장 장치 또는 다른 장치가 제공될 수도 있다. 프로세서(1152), 메모리(1164), 디스플레이(1154), 통신 인터페이스(1166) 및 송수신기(1168) 각각은 다양한 버스를 사용하여 상호 연결되며, 이러한 컴포넌트들 중 여러 개는 공통 마더보드 상에 또는 다른 적절한 방식으로 장착될 수 있다.
프로세서(1152)는 메모리(1164)에 저장된 명령을 포함하여, 모바일 컴퓨팅 장치(1150) 내의 명령을 실행할 수 있다. 프로세서(1152)는 별도의 그리고 복수의 아날로그 및 디지털 프로세서를 포함하는 칩들의 칩셋으로 구현될 수 있다. 프로세서(1152)는 예를 들어 사용자 인터페이스의 제어, 모바일 컴퓨팅 장치(1150)에 의한 애플리케이션 실행, 및 모바일 컴퓨팅 장치(1150)에 의한 무선 통신과 같은, 모바일 컴퓨팅 장치(1150)의 다른 컴포넌트들의 조정을 제공할 수 있다.
프로세서(1152)는 제어 인터페이스(1158) 및 디스플레이(1154)에 연결된 디스플레이 인터페이스(1156)를 통해 사용자와 통신할 수 있다. 디스플레이(1154)는 예를 들어 TFT(박막 트랜지스터 액정 디스플레이) 디스플레이 또는 OLED(유기 발광 다이오드) 디스플레이, 또는 다른 적절한 디스플레이 기술일 수 있다. 디스플레이 인터페이스(1156)는 그래픽 및 다른 정보를 사용자에게 제공하도록 디스플레이(1154)를 구동하기 위한 적절한 회로를 포함할 수 있다. 제어 인터페이스(1158)는 사용자로부터 명령을 수신하고 그 명령을 프로세서(1152)에 제출하기 위해 변환할 수 있다. 또한, 외부 인터페이스(1162)는 모바일 컴퓨팅 장치(1150)와 다른 장치들의 근거리 통신을 가능하게 하기 위해 프로세서(1152)와의 통신을 제공할 수 있다. 외부 인터페이스(1162)는 일부 구현예에서 예를 들어 유선 통신을 제공하고 다른 구현예에서는 무선 통신을 제공할 수 있으며, 복수의 인터페이스가 사용될 수도 있다.
메모리(1164)는 모바일 컴퓨팅 장치(1150) 내에 정보를 저장한다. 메모리(1164)는 컴퓨터 판독 가능 매체(들), 휘발성 메모리 장치(들), 또는 비휘발성 메모리 장치(들) 중 하나 이상으로 구현될 수 있다. 확장 메모리(1174)는 또한 예를 들어 SIMM(Single In Line Memory Module) 카드 인터페이스를 포함할 수 있는 확장 인터페이스(1172)를 통해 모바일 컴퓨팅 장치(1150)에 제공되고 연결될 수 있다. 확장 메모리(1174)는 모바일 컴퓨팅 장치(1150)를 위한 추가 저장 공간을 제공할 수 있고, 또는 모바일 컴퓨팅 장치(1150)를 위한 애플리케이션 또는 다른 정보를 저장할 수도 있다. 구체적으로, 확장 메모리(1174)는 전술한 프로세스를 수행 또는 보완하기 위한 명령을 포함할 수 있으며, 보안 정보도 포함할 수 있다. 따라서, 예를 들어, 확장 메모리(1174)는 모바일 컴퓨팅 장치(1150)를 위한 보안 모듈로서 제공될 수 있고, 모바일 컴퓨팅 장치(1150)의 안전한 사용을 가능하게 하는 명령으로 프로그래밍될 수 있다. 또한, 해킹할 수 없는 방식으로 SIMM 카드 상에 식별 정보를 배치하는 것과 같이, 보안 애플리케이션은 SIMM 카드를 통해 추가 정보와 함께 제공될 수 있다.
메모리는 예를 들어 후술하는 바와 같이 플래시 메모리 및/또는 NVRAM 메모리(비휘발성 랜덤 액세스 메모리)를 포함할 수 있다. 일부 구현예에서, 컴퓨터 프로그램 제품은 정보 캐리어 내에 실재적으로 구현된다. 컴퓨터 프로그램 제품은 실행될 때 위에 설명된 것과 같은 하나 이상의 방법을 수행하는 명령을 포함한다. 컴퓨터 프로그램 제품은 메모리(1164), 확장 메모리(1174), 또는 프로세서(1152) 싱의 메모리와 같은, 컴퓨터 또는 기계 판독 가능 매체일 수 있다. 일부 구현예에서, 컴퓨터 프로그램 제품은 예를 들어 송수신기(1168) 또는 외부 인터페이스(1162)를 통해 전파되는 신호로 수신될 수 있다.
모바일 컴퓨팅 장치(1150)는 필요한 경우 디지털 신호 처리 회로를 포함할 수 있는 통신 인터페이스(1166)를 통해 무선으로 통신할 수 있다. 통신 인터페이스(1166)는 여러 가지 중에서도 GSM 음성 통화(Global System for Mobile communications), SMS(Short Message Service), EMS(Enhanced Messaging Service) 또는 MMS 메시징(Multimedia Messaging Service), CDMA(code division multiple access), TDMA(time division multiple access), PDC(Personal Digital Cellular), WCDMA(Wideband Code Division Multiple Access), CDMA2000, 또는 GPRS(General Packet Radio Service)와 같은, 다양한 모드 또는 프로토콜에 따른 통신을 제공할 수 있다. 이러한 통신은 예를 들어 무선 주파수를 사용하는 송수신기(1168)를 통해 발생할 수 있다. 또한, 예컨대, 블루투스, 와이파이(WiFi) 또는 다른 이러한 송수신기(도시되지 않음)를 사용하는 단거리 통신이 발생할 수 있다. 또한, GPS(Global Positioning System) 수신기 모듈(1170)은 모바일 컴퓨팅 장치(1150)에 추가적인 내비게이션 및 위치 관련 무선 데이터를 제공할 수 있으며, 이러한 데이터는 모바일 컴퓨팅 장치(1150)에서 실행되는 애플리케이션에 의해 적절하게 사용될 수 있다.
또한, 모바일 컴퓨팅 장치(1150)는 사용자로부터 음성 정보를 수신하고 그것을 사용 가능한 디지털 정보로 변환할 수 있는 오디오 코덱(1160)을 사용하여 청각적으로 통신할 수 있다. 오디오 코덱(1160)은 마찬가지로 예를 들어 모바일 컴퓨팅 장치(1150)의 핸드셋의 스피커를 통해 사용자를 위한 가청 사운드를 생성할 수 있다. 이러한 사운드는 음성 전화 통화로부터의 소리를 포함할 수 있고, 녹음된 소리(예컨대, 음성 메시지, 음악 파일 등)를 포함할 수 있으며, 모바일 컴퓨팅 장치(1150) 상에서 작동하는 애플리케이션에 의해 생성된 소리도 포함할 수 있다.
모바일 컴퓨팅 장치(1150)는 도면에 도시된 바와 같이 다양한 형태로 구현될 수 있다. 예를 들어, 이것은 휴대폰(1180)으로 구현될 수 있다. 또한, 이것은 스마트폰(1182), PDA 또는 다른 유사한 모바일 장치의 일부로서 구현될 수도 있다.
본 명세서에 설명된 시스템 및 기술의 다양한 구현은 디지털 전자 회로, 집적 회로, 특별히 설계된 ASIC(application specific integrated circuit), 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합으로 실현될 수 있다. 이러한 다양한 구현은 저장 시스템, 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치로부터 데이터 및 명령을 수신하고 이들로 데이터 및 명령을 전송하도록 결합된, 특수 목적 또는 일반 목적일 수 있는, 적어도 하나의 프로그래밍 가능 프로세서를 포함하는 프로그래밍 가능 시스템에서 실행 가능 및/또는 해석 가능한 하나 이상의 컴퓨터 프로그램으로의 구현을 포함할 수 있다.
이러한 컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션 또는 코드라고도 알려짐)은 프로그래밍 가능한 프로세서에 대한 기계 명령을 포함하고, 하이-레벨의 절차적 및/또는 객체 지향 프로그래밍 언어 및/또는 어셈블리/기계 언어로 구현될 수 있다. 본 명세서에 사용된 기계 판독 가능 매체 및 컴퓨터 판독 가능 매체라는 용어는 기계 판독 가능 신호인 기계 명령을 수신하는 기계 판독 가능 매체를 포함하는, 프로그래밍 가능한 프로세서에 기계 명령 및/또는 데이터를 제공하는데 사용되는, 임의의 컴퓨터 프로그램 제품, 장치 및/또는 디바이스(예컨대, 자기 디스크, 광 디스크, 메모리, 프로그램 가능 논리 장치(PLD))를 지칭한다. 기계 판독 가능 신호라는 용어는 기계 명령 및/또는 데이터를 프로그래밍 가능한 프로세서에 제공하는데 사용되는 임의의 신호를 지칭하다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에 설명된 시스템 및 기술은 사용자에게 정보를 표시하기 위한 디스플레이 장치(예를 들어, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터) 및 사용자가 컴퓨터에 입력을 제공할 수 있게 해주는 키보드 및 포인팅 장치(예컨대, 마우스 또는 트랙볼)를 갖는 컴퓨터 상에 구현될 수 있다. 사용자와의 상호작용을 제공하기 위해 다른 종류의 장치도 사용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백(예컨대, 시각적 피드백, 청각 피드백 또는 촉각 피드백)일 수 있고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함한 임의의 형태로 수신될 수 있다.
본 명세서 설명된 시스템 및 기술은 백엔드 컴포넌트를 포함하는 컴퓨팅 시스템(예컨대, 데이터 서버), 또는 미들웨어 컴포넌트를 포함하는 컴퓨팅 시스템(예컨대, 애플리케이션 서버), 또는 프런트 엔드 컴포넌트를 포함하는 컴퓨팅 시스템(예컨대, 사용자가 본 명세서에 설명된 시스템 및 기술의 구현과 상호 작용할 수 있게 해주는 그래픽 사용자 인터페이스 또는 웹 브라우저를 가진 클라이언트 컴퓨터), 또는 이러한 백엔드, 미들웨어 또는 프런트엔드 컴포넌트의 임의의 조합을 포함하는 컴퓨팅 시스템으로 구현될 수 있다. 이 시스템의 컴포넌트들은 디지털 데이터 통신의 임의의 형태 또는 매체(예컨대,통신 네트워크)를 통해 상호 연결될 수 있다. 통신 네트워크의 예는 LAN(Local Area Network), WAN(Wide Area Network) 및 인터넷을 포함한다.
컴퓨팅 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램으로 인해 발생한다.
본 명세서는 많은 특정 구현 세부사항을 포함하고 있지만, 이는 개시된 기술의 범위 또는 청구될 수 있는 범위에 대한 제한으로 해석되어서는 안 되며, 오히려 개시된 특정 기술의 특정 실시예로 특정될 수 있는 특징에 대한 설명으로 해석되어야 한다. 별도의 실시예의 맥략에서 본 명세서에 설명된 특정 특징들은 부분적으로 또는 전체적으로 단일 실시예로 조합하여 구현될 수도 있다. 반대로, 단일 실시예의 맥락에서 설명된 다양한 특징들은 복수의 실시예로 개별적으로 또는 임의의 적절한 하위 조합으로 구현될 수도 있다. 더욱이, 특징들이 특정 조합으로 작용하는 것으로 본 명세서에서 설명될 수 있고 및/또는 처음에는 그 자체로 청구되지만, 청구된 조합의 하나 이상의 특징들은 몇몇 경우에는 해당 조합으로부터 삭제될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형으로 지향될 수 있다. 이와 유사하게, 오퍼레이션들이 특정 순서로 설명될 수 있지만, 이는 바람직한 결과를 달성하기 위해, 그러한 오퍼레이션들이 특정 순서 또는 순차적 순서로 수행되어야 하거나 모든 오퍼레이션 수행되어야 한다는 것으로 이해되어서는 안 된다. 본 발명의 특정 실시예가 설명되었다. 다른 실시예는 아래의 청구범위의 범위 내에 있다.

Claims (21)

  1. 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템으로서,
    제1 블록체인 네트워크와 제2 블록체인 네트워크 간의 자산의 안전한 전송을 가능하게 하기 위해 제1 감시자 서버 풀과 상호작용하기 위해 보안 실행 환경에서 브릿지 프로그램을 실행하도록 구성된 보안 실행 서버를 포함하고, 상기 브릿지 프로그램은, 상기 보안 실행 환경에 의해 실행될 때, 상기 보안 실행 서버로 하여금 오퍼레이션을 수행하게 만드는 명령을 포함하고, 상기 오퍼레이션은:
    제1 마스터 비밀로부터 제2 마스터 비밀로의 마이그레이션(migration)의 개시를 결정하는 단계;
    상기 제1 감시자 서버 풀의 각각의 감시자 서버로부터 상기 제1 마스터 비밀의 대응하는 부분을 수신하는 단계;
    상기 제1 감시자 서버 풀로부터, i) 제2 자산의 목록, 및 제1 자산의 목록을 포함하는 그룹 중 적어도 하나를 수신하는 단계;
    제2 마스터 비밀을 생성하는 단계;
    상기 제2 마스터 비밀로부터 그리고 제2 감시자 서버 풀의 각각의 감시자 서버에 대해, 상기 제2 마스터 비밀의 대응하는 제2 부분을 생성하는 단계;
    상기 제1 블록체인 네트워크 및 상기 제2 블록체인 네트워크에 대한 상기 제2 마스터 비밀로부터 주소 정보를 도출하는 단계;
    각각의 제2 자산에 대해, 상기 제2 블록체인 네트워크의 제2 지갑에 상기 제2 자산의 허용된-발행자 레코드를 업데이트하도록 상기 제2 블록체인 네트워크에 지시하기 위한 제2 트랜잭션-데이터를 생성하는 단계로서, 상기 제2 지갑은 상기 제2 마스터 비밀로부터 도출된 상기 주소 정보로 참조되는 것인, 상기 제2 트랜잭션-데이터를 생성하는 단계;
    각각의 제1 자산에 대해, 상기 제1 자산을 상기 제1 블록체인 네트워크의 상기 제1 지갑으로 전송하도록 상기 제1 블록체인 네트워크에 지시하기 위한 제1 트랜잭션-데이터를 생성하는 단계로서, 상기 제1 지갑은 상기 제2 마스터 비밀로부터 도출된 상기 주소 정보로 참조되는 것인, 상기 제1 트랜잭션-데이터를 생성하는 단계;
    상기 제2 마스터 비밀의 상기 제2 부분, 상기 제1 트랜잭션-데이터 및 상기 제2 트랜잭션-데이터를 각각 암호화하는 단계를 포함하는 마이그레이션-준비된 데이터-오브젝트를 생성하는 단계;
    상기 제2 감시자 서버 풀의 각각의 감시자 서버에 대하여, 상기 제2 마스터 비밀의 상기 대응하는 제2 부분를 이용하여, i) 상기 마이그레이션-준비된 데이터 오브젝트, ii) 상기 제1 마스터 비밀 및 iii) 상기 제2 마스터 비밀을 암호화함으로써, 상기 제2 감시자 서버 풀에 대응하는 마이그레이션-준비된 명령을 생성하는 단계;
    상기 제2 감시자 서버 풀의 각각의 감시자 서버에, 상기 대응하는 마이그레이션-준비된 명령을 보내는 단계;
    상기 제2 감시자 서버 풀의 각각의 감시자 서버에, 상기 제2 마스터 비밀의 상기 대응하는 제2 부분을 보내는 단계; 및
    상기 제2 감시자 서버 풀의 각각의 감시자 서버로부터, 상기 대응하는 마이그레이션-준비된 명령의 수신에 대한 확인 응답을 수신한 것에 응답하여, 상기 제2 감시자 서버 풀의 각각의 감시자 서버로 하여금 상기 제1 마스터 비밀로부터 상기 제2 마스터 비밀로 마이그레이션하게 하도록 구성된 완료 마이그레이션 요청을 보내는 단계를 포함하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  2. 제 1 항에 있어서, 상기 마이그레이션의 개시를 결정하는 단계는 마이그레이션 모드로 시작하는 단계를 포함하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  3. 제 1 항에 있어서, 상기 오퍼레이션은:
    상기 제1 감시자 서버 풀에 임의의 이전의 마이그레이션-준비된 데이터 오브젝트에 대해 질의하는 단계; 및
    적어도 하나의 이전의 마이그레이션-준비된 오브젝트를 수신한 것에 응답하여, 마이그레이션 재설정 메시지를 제1 마이그레이션 서버 풀로 보내는 단계를 더 포함하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  4. 제 1 항에 있어서, 상기 오퍼레이션은 더 이상 사용되지 않는 마스터 비밀의 부분을 수신한 것에 응답하여, 제1 감시자 서버 풀의 검증을 실패로 하는 단계를 더 포함하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  5. 제 1 항에 있어서, 상기 제2 자산의 목록, 상기 제1 자산의 목록 및 상기 제1 마스터 비밀의 대응하는 부분은 상기 감시자 서버의 적어도 다수로부터의 단일 메시지로 수신되는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  6. 제 1 항에 있어서, 상기 제1 트랜잭션-데이터 및 상기 제2 트랜잭션-데이터는 스마트-계약 명령과 무관하여, 상기 제1 블록체인 네트워크의 상기 제1 지갑으로의 상기 제1 자산의 지시된 전송, 및 상기 제2 블록체인 네트워크의 상기 제2 지갑으로의 상기 허용된-발행 레코드의 지시된 업데이트가 상기 제1 블록체인 네트워크로의 임의의 새로운 스마트 계약의 도입과 무관하게 그리고 상기 제2 블록체인 네트워크로의 임의의 새로운 스마트 계약의 도입과 무관하게 수행되는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  7. 제 1 항에 있어서, 상기 제2 마스터 비밀의 상기 제2 부분, 상기 제1 트랜잭션-데이터 및 상기 제2 트랜잭션-데이터를 각각 암호화하는 단계는 수정을 방지하도록 구성된 상기 보안 실행 환경의 키를 사용하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  8. 제 1 항에 있어서, 상기 제2 감시자 서버 풀은 상기 마이그레이션 준비된 명령을 복호화하도록 작동 가능하여, 하드웨어 고장으로 인해 상기 완료 마이그레이션 요청을 보낼 수 없게 된 경우에도 상기 마이그레이션의 완료를 가능하게 하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  9. 제 1 항에 있어서, 상기 오퍼레이션은:
    상기 제1 감시자 서버 풀을 생성하기 전에, 상기 제1 감시자 서버 풀의 감시자 서버들을 식별하는 단계;
    상기 제1 감시자 서버 풀의 감시자 서버를 검증하는 단계;
    상기 제1 감시자 서버 풀의 각각의 감시자 서버에 대해 상기 제1 마스터 비밀의 상기 대응하는 부분을 생성하는 단계; 및
    상기 제1 마스터 비밀의 상기 대응하는 부분을 상기 제1 감시자 서버 풀의 각각의 감시자 서버에 분배하는 단계를 포함하는 상기 제1 감시자 서버 풀로부터 상기 제1 풀을 생성하는 단계를 더 포함하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  10. 제 1 항에 있어서, 상기 제1 감시자 서버 풀은 상기 제2 감시자 서버 풀과 동일한 개수의 감시자 서버를 포함하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  11. 제 1 항에 있어서, 상기 제1 감시자 서버 풀은 상기 제2 감시자 서버 풀보다 많은 개수의 감시자 서버를 포함하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  12. 제 1 항에 있어서, 상기 제1 감시자 서버 풀은 상기 제2 감시자 서버 풀보다 적은 개수의 감시자 서버를 포함하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  13. 제 1 항에 있어서, 상기 제1 감시자 서버 풀은 상기 제2 감시자 서버 풀과 동일한 감시자 서버를 포함하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  14. 제 1 항에 있어서, 상기 제1 감시자 서버 풀은 상기 제2 감시자 서버 풀과 상호 배타적인 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  15. 제 1 항에 있어서, 상기 제1 감시자 서버 풀은 상기 제2 감시자 서버의 전부는 아니지만 일부를 포함하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  16. 제 1 항에 있어서, 상기 시스템은 상기 제1 감시자 서버 풀 중 적어도 하나의 감시자 서버를 더 포함하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  17. 제 1 항에 있어서, 상기 오퍼레이션은 상기 완료 마이그레이션 요청을 전송하기 전에 사용자 승인을 수신하는 단계를 더 포함하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  18. 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템으로서,
    브릿지 프로그램으로부터, i) 대응하는 마이그레이션-준비된 명령; ii) 제2 비밀의 대응하는 제2 부분; iii) 완료 마이그레이션 요청을 수신하도록 구성된 제2 감시자 서버 풀 중 특정 감시자 서버를 포함하고, 상기 브릿지 프로그램은 보안 실행 환경에 의해 실행될 때 상기 보안 실행 서버로 하여금 오퍼레이션을 수행하게 만드는 명령을 포함하며, 상기 오퍼레이션은:
    제1 마스터 비밀로부터 제2 마스터 비밀로의 마이그레이션의 개시를 결정하는 단계;
    상기 제1 감시자 서버 풀의 각각의 감시자 서버로부터 상기 제1 마스터 비밀의 대응하는 부분을 수신하는 단계;
    상기 제1 감시자 서버 풀로부터, 제2 자산의 목록을 수신하는 단계;
    상기 제1 감시자 서버 풀로부터, 제1 자산의 목록을 수신하는 단계;
    제2 마스터 비밀을 생성하는 단계;
    상기 제2 마스터 비밀로부터 그리고 제2 감시자 서버 풀의 각각의 감시자 서버에 대해, 상기 제2 마스터 비밀의 대응하는 제2 부분을 생성하는 단계;
    상기 제1 블록체인 네트워크 및 상기 제2 블록체인 네트워크에 대한 상기 제2 마스터 비밀로부터 주소 정보를 도출하는 단계;
    각각의 제2 자산에 대해, 상기 제2 자산을 상기 제2 블록체인 네트워크의 제2 지갑으로 전송하도록 상기 제2 블록체인 네트워크에 지시하는 제2 트랜잭션-데이터를 생성하는 단계로서, 상기 제2 지갑은 상기 제2 마스터 비밀로부터 도출된 상기 주소 정보로 참조되는 것인, 상기 제2 트랜잭션-데이터를 생성하는 단계;
    각각의 제1 자산에 대해, 상기 제1 자산을 상기 제1 블록체인 네트워크의 상기 제1 지갑으로 전송하도록 상기 제1 블록체인 네트워크에 지시하는 제1 트랜잭션-데이터를 생성하는 단계로서, 상기 제1 지갑은 상기 제2 마스터 비밀로부터 도출된 상기 주소 정보로 참조되는 것인, 상기 제1 트랜잭션-데이터를 생성하는 단계;
    상기 제2 마스터 비밀의 상기 제2 부분, 상기 제1 트랜잭션-데이터 및 상기 제2 트랜잭션-데이터를 각각 암호화하는 단계를 포함하는 마이그레이션-준비된 데이터-오브젝트를 생성하는 단계;
    상기 제2 감시자 서버 풀의 각각의 감시자 서버에 대하여, 상기 제2 마스터 비밀의 상기 대응하는 제2 부분을 이용하여, i) 상기 마이그레이션-준비된 데이터 오브젝트, ii) 상기 제1 마스터 비밀 및 iii) 상기 제2 마스터 비밀을 암호화함으로써, 상기 제2 감시자 서버 풀에 대응하는 마이그레이션-준비된 명령을 생성하는 단계;
    상기 제2 감시자 서버 풀의 각각의 감시자 서버에, 상기 대응하는 마이그레이션-준비된 명령을 보내는 단계;
    상기 제2 감시자 서버 풀의 각각의 감시자 서버에, 상기 제2 마스터 비밀의 상기 대응하는 제2 부분을 보내는 단계; 및
    상기 제2 감시자 서버 풀의 각각의 감시자 서버로부터, 상기 대응하는 마이그레이션-준비된 명령의 수신에 대한 확인 응답을 수신한 것에 응답하여, 상기 제2 감시자 서버 풀의 각각의 감시자 서버로 하여금 상기 제1 마스터 비밀로부터 상기 제2 마스터 비밀로 마이그레이션하게 하도록 구성된 완료 마이그레이션 요청을 보내는 단계를 포함하는 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  19. 제 18 항에 있어서, 상기 제2 감시자 서버 풀의 상기 특정 감시자 서버는 또한 상기 제1 감시자 서버 풀의 감시자 서버인 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  20. 제 18 항에 있어서, 상기 제2 감시자 서버 풀의 상기 특정 감시자 서버는 상기 제1 감시자 서버 풀의 감시자 서버가 아닌 것을 특징으로 하는 블록체인 네트워크들 간 자산의 안전한 전송을 위한 시스템.
  21. 제1 블록체인 네트워크와 제2 블록체인 네트워크 간의 자산의 안전한 전송을 가능하게 하기 위해 제1 감시자 서버 풀과 상호작용하기 위해 보안 실행 환경에서 실행하도록 구성된 브릿지 프로그램을 저장하는 비일시적 컴퓨터 판독 가능 매체로서,
    상기 브릿지 프로그램은, 상기 보안 실행 환경에 의해 실행될 때, 상기 보안 실행 서버로 하여금 오퍼레이션을 수행하게 만드는 명령을 포함하며, 상기 오퍼레이션은:
    제1 마스터 비밀로부터 제2 마스터 비밀로의 마이그레이션의 개시를 결정하는 단계;
    상기 제1 감시자 서버 풀의 각각의 감시자 서버로부터 상기 제1 마스터 비밀의 대응하는 부분을 수신하는 단계;
    상기 제1 감시자 서버 풀로부터, 제2 자산의 목록을 수신하는 단계;
    상기 제1 감시자 서버 풀로부터, 제1 자산의 목록을 수신하는 단계;
    제2 마스터 비밀을 생성하는 단계;
    상기 제2 마스터 비밀로부터 그리고 제2 감시자 서버 풀의 각각의 감시자 서버에 대해, 상기 제2 마스터 비밀의 대응하는 제2 부분을 생성하는 단계;
    상기 제1 블록체인 네트워크 및 상기 제2 블록체인 네트워크에 대한 상기 제2 마스터 비밀로부터 주소 정보를 도출하는 단계;
    각각의 제2 자산에 대해, 상기 제2 자산을 상기 제2 블록체인 네트워크의 제2 지갑으로 전송하도록 상기 제2 블록체인 네트워크에 지시하기 위한 제2 트랜잭션-데이터를 생성하는 단계로서, 상기 제2 지갑은 상기 제2 마스터 비밀로부터 도출된 상기 주소 정보로 참조되는 것인, 상기 제2 트랜잭션-데이터를 생성하는 단계;
    각각의 제1 자산에 대해, 상기 제1 자산을 상기 제1 블록체인 네트워크의 상기 제1 지갑으로 전송하도록 상기 제1 블록체인 네트워크에 지시하기 위한 제1 트랜잭션-데이터를 생성하는 단계로서, 상기 제1 지갑은 상기 제2 마스터 비밀로부터 도출된 상기 주소 정보로 참조되는 것인, 상기 제1 트랜잭션-데이터를 생성하는 단계;
    상기 제2 마스터 비밀의 상기 제2 부분, 상기 제1 트랜잭션-데이터 및 상기 제2 트랜잭션-데이터를 각각 암호화하는 단계를 포함하는 마이그레이션-준비된 데이터-오브젝트를 생성하는 단계;
    상기 제2 감시자 서버 풀의 각각의 감시자 서버에 대하여, 상기 제2 마스터 비밀의 상기 대응하는 제2 부분을 이용하여, i) 상기 마이그레이션-준비된 데이터 오브젝트, ii) 상기 제1 마스터 비밀 및 iii) 상기 제2 마스터 비밀을 암호화함으로써, 상기 제2 감시자 풀에 대응하는 마이그레이션-준비된 명령을 생성하는 단계;
    상기 제2 감시자 서버 풀의 각각의 감시자 서버에, 상기 대응하는 마이그레이션-준비된 명령을 보내는 단계;
    상기 제2 감시자 서버 풀의 각각의 감시자 서버에, 상기 제2 마스터 비밀의 상기 대응하는 제2 부분을 보내는 단계; 및
    상기 제2 감시자 서버 풀의 각각의 감시자 서버로부터, 상기 대응하는 마이그레이션-준비된 명령의 수신에 대한 확인 응답을 수신한 것에 응답하여, 상기 제2 감시자 서버 풀의 각각의 감시자 서버로 하여금 상기 제1 마스터 비밀로부터 상기 제2 마스터 비밀로 마이그레이션하게 하도록 구성된 완료 마이그레이션 요청을 보내는 단계를 포함하는 것을 특징으로 하는 비일시적 컴퓨터 판독 가능 매체.
KR1020247001297A 2021-07-07 2022-07-07 감시자 풀이 업데이트되는 서로 다른 네트워크들 간의 자산 전송을 위한 안전하고 신뢰할 수 있는 브릿지 KR20240011878A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163219329P 2021-07-07 2021-07-07
US63/219,329 2021-07-07
US17/727,533 2022-04-22
US17/727,533 US11538027B1 (en) 2021-07-07 2022-04-22 Secure and trustworthy bridge for transferring assets across different networks with an updating pool of wardens
PCT/US2022/036313 WO2023283305A1 (en) 2021-07-07 2022-07-07 Secure and trustworthy bridge for transferring assets across different networks with an updating pool of wardens

Publications (1)

Publication Number Publication Date
KR20240011878A true KR20240011878A (ko) 2024-01-26

Family

ID=83902635

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247001297A KR20240011878A (ko) 2021-07-07 2022-07-07 감시자 풀이 업데이트되는 서로 다른 네트워크들 간의 자산 전송을 위한 안전하고 신뢰할 수 있는 브릿지

Country Status (4)

Country Link
US (4) US11496327B1 (ko)
EP (2) EP4367619A1 (ko)
KR (1) KR20240011878A (ko)
WO (2) WO2023283301A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11736456B2 (en) * 2020-09-29 2023-08-22 International Business Machines Corporation Consensus service for blockchain networks
US11477005B1 (en) * 2022-02-03 2022-10-18 Tassat Group Inc. Systems for multi-blockchain, multi-token interoperability via common blockchain integration and methods of use thereof
US11895252B2 (en) * 2022-02-03 2024-02-06 Tassat Group Inc. Method, controller, and computer-readable medium for network addressing on a distributed crypto ledger network
US11971903B2 (en) * 2022-05-13 2024-04-30 Circle Internet Financial Limited Atomically bridging transactions across different blockchains

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110574059A (zh) * 2017-04-11 2019-12-13 区块链控股有限公司 关于区块链的快速分布式共识
GB201709188D0 (en) * 2017-06-09 2017-07-26 Nchain Holdings Ltd Computer-Implemented system and method
GB201709760D0 (en) 2017-06-19 2017-08-02 Nchain Holdings Ltd Computer-Implemented system and method
US10944546B2 (en) * 2017-07-07 2021-03-09 Microsoft Technology Licensing, Llc Blockchain object interface
US11171791B2 (en) * 2019-01-15 2021-11-09 0Chain, LLC Systems and methods of aggregate signing of digital signatures on multiple messages simultaneously using key splitting
US20190172026A1 (en) * 2017-12-02 2019-06-06 Alchemy Limited LLC Cross blockchain secure transactions
CN111480315A (zh) * 2017-12-15 2020-07-31 区块链控股有限公司 使用低熵密码授权区块链交易的计算机实现的系统和方法
US11386420B2 (en) * 2017-12-29 2022-07-12 Intel Corporation Contextual authentication of an electronic wallet
WO2019142049A1 (en) * 2018-01-17 2019-07-25 Geeq Corporation Blockchain methods, nodes, systems and products
US20190306235A1 (en) * 2018-03-27 2019-10-03 Makecents Llc Private Blockchain With Decentralized External Gateway
US20190333057A1 (en) * 2018-04-27 2019-10-31 Jeremie Miller Systems and methods implementing an independent device-based sub-network of a distributed ledger network
CN112765595B (zh) 2018-11-16 2024-05-10 创新先进技术有限公司 跨区块链的数据处理方法、装置、客户端、区块链系统
US11003760B2 (en) 2019-01-30 2021-05-11 Rsa Security Llc User account recovery techniques using secret sharing scheme with trusted referee
US11244313B2 (en) * 2019-01-31 2022-02-08 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing declarative smart actions for coins and assets transacted onto a blockchain using distributed ledger technology (DLT)
CN110098954B (zh) 2019-03-29 2022-06-28 北京百度网讯科技有限公司 Hyperledger Fabric网络的创建方法、控制器及存储介质
US11251966B2 (en) * 2019-06-28 2022-02-15 Advanced New Technologies Co., Ltd. Sending cross-chain authenticatable messages
US20210036855A1 (en) 2019-07-31 2021-02-04 International Business Machines Corporation Transfering tokens between blockchain networks
CA3149850A1 (en) * 2019-09-06 2021-03-11 Rosario M. Ingargiola System and method of providing a blockchain-based recordation process
KR20210046357A (ko) 2019-10-18 2021-04-28 삼성전자주식회사 블록체인 기반 시스템을 위한 키의 저장 및 복구 방법과 그 장치
US11323269B2 (en) * 2020-01-20 2022-05-03 International Business Machines Corporation Preserving privacy of linked cross-network transactions
CN112837048B (zh) * 2020-02-03 2022-08-19 腾讯科技(深圳)有限公司 跨区块链的数据处理方法、装置、设备及计算机存储介质
GB2592626A (en) * 2020-03-04 2021-09-08 Nchain Holdings Ltd Method of generating a public key
SG10202006451QA (en) * 2020-07-03 2021-02-25 Alipay Labs Singapore Pte Ltd Managing transactions in multiple blockchain networks

Also Published As

Publication number Publication date
KR20240012606A (ko) 2024-01-29
US20230026873A1 (en) 2023-01-26
EP4367827A1 (en) 2024-05-15
WO2023283305A1 (en) 2023-01-12
US11496327B1 (en) 2022-11-08
US20230134458A1 (en) 2023-05-04
US11985262B2 (en) 2024-05-14
EP4367619A1 (en) 2024-05-15
WO2023283301A1 (en) 2023-01-12
US11538027B1 (en) 2022-12-27
US20230020520A1 (en) 2023-01-19

Similar Documents

Publication Publication Date Title
CN111541785B (zh) 基于云计算的区块链数据处理方法及装置
CN110875821B (zh) 密码学区块链互操作
WO2021184975A1 (zh) 链上数据的链下隐私计算方法及装置
WO2021184973A1 (zh) 访问外部数据的方法及装置
JP6547079B1 (ja) 登録・認可方法、装置及びシステム
US8196186B2 (en) Security architecture for peer-to-peer storage system
KR20240011878A (ko) 감시자 풀이 업데이트되는 서로 다른 네트워크들 간의 자산 전송을 위한 안전하고 신뢰할 수 있는 브릿지
CN111095256A (zh) 在可信执行环境中安全地执行智能合约操作
CN111066286A (zh) 使用高可用性的可信执行环境检索区块链网络的公共数据
CN111475829A (zh) 基于区块链账户的隐私数据查询方法及装置
TW202015378A (zh) 密碼運算、創建工作密鑰的方法、密碼服務平台及設備
US11836714B2 (en) Secure and trustworthy bridge for transferring assets across networks with different data architecture
CN116490868A (zh) 用于可信执行环境中的安全快速机器学习推理的系统和方法
TW202011712A (zh) 密碼運算、創建工作密鑰的方法、密碼服務平台及設備
KR102674418B1 (ko) 서로 다른 네트워크들 간의 자산 전송을 위한 안전하고 신뢰할 수 있는 브릿지
CN115168872B (zh) 基于去中心化信任的公有云下tee状态连续性保护方法
CN116561820B (zh) 可信数据处理方法及相关装置
CN117675216A (zh) 一种数据处理方法及相关设备
CN118172058A (zh) 区块链数据处理方法、装置、计算机设备、介质及产品
CN116137627A (zh) 一种基于区块链网络的数据处理方法、装置及相关设备

Legal Events

Date Code Title Description
A302 Request for accelerated examination